From 2028ef40cb61d0e6e1fa99d50f6e803b1ed40720 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Fri, 22 Feb 2019 05:29:17 +0100 Subject: [PATCH 001/737] Add screwdriver --- mods/ITEMS/screwdriver/README.txt | 13 ++ mods/ITEMS/screwdriver/init.lua | 170 ++++++++++++++++++ mods/ITEMS/screwdriver/license.txt | 50 ++++++ .../screwdriver/textures/screwdriver.png | Bin 0 -> 182 bytes 4 files changed, 233 insertions(+) create mode 100644 mods/ITEMS/screwdriver/README.txt create mode 100644 mods/ITEMS/screwdriver/init.lua create mode 100644 mods/ITEMS/screwdriver/license.txt create mode 100644 mods/ITEMS/screwdriver/textures/screwdriver.png diff --git a/mods/ITEMS/screwdriver/README.txt b/mods/ITEMS/screwdriver/README.txt new file mode 100644 index 00000000..9d39c58c --- /dev/null +++ b/mods/ITEMS/screwdriver/README.txt @@ -0,0 +1,13 @@ +Minetest Game mod: screwdriver +============================== +See license.txt for license information. + +License of source code +---------------------- +Originally by RealBadAngel, Maciej Kasatkin (LGPL 2.1) +Various Minetest developers and contributors (LGPL 2.1) + +License of media (textures) +--------------------------- +Created by Gambit (CC BY-SA 3.0): + screwdriver.png diff --git a/mods/ITEMS/screwdriver/init.lua b/mods/ITEMS/screwdriver/init.lua new file mode 100644 index 00000000..4d38bbc2 --- /dev/null +++ b/mods/ITEMS/screwdriver/init.lua @@ -0,0 +1,170 @@ +screwdriver = {} + +screwdriver.ROTATE_FACE = 1 +screwdriver.ROTATE_AXIS = 2 +screwdriver.disallow = function(pos, node, user, mode, new_param2) + return false +end +screwdriver.rotate_simple = function(pos, node, user, mode, new_param2) + if mode ~= screwdriver.ROTATE_FACE then + return false + end +end + +-- For attached wallmounted nodes: returns true if rotation is valid +-- simplified version of minetest:builtin/game/falling.lua#L148. +local function check_attached_node(pos, rotation) + local d = minetest.wallmounted_to_dir(rotation) + local p2 = vector.add(pos, d) + local n = minetest.get_node(p2).name + local def2 = minetest.registered_nodes[n] + if def2 and not def2.walkable then + return false + end + return true +end + +screwdriver.rotate = {} + +local facedir_tbl = { + [screwdriver.ROTATE_FACE] = { + [0] = 1, [1] = 2, [2] = 3, [3] = 0, + [4] = 5, [5] = 6, [6] = 7, [7] = 4, + [8] = 9, [9] = 10, [10] = 11, [11] = 8, + [12] = 13, [13] = 14, [14] = 15, [15] = 12, + [16] = 17, [17] = 18, [18] = 19, [19] = 16, + [20] = 21, [21] = 22, [22] = 23, [23] = 20, + }, + [screwdriver.ROTATE_AXIS] = { + [0] = 4, [1] = 4, [2] = 4, [3] = 4, + [4] = 8, [5] = 8, [6] = 8, [7] = 8, + [8] = 12, [9] = 12, [10] = 12, [11] = 12, + [12] = 16, [13] = 16, [14] = 16, [15] = 16, + [16] = 20, [17] = 20, [18] = 20, [19] = 20, + [20] = 0, [21] = 0, [22] = 0, [23] = 0, + }, +} + +screwdriver.rotate.facedir = function(pos, node, mode) + local rotation = node.param2 % 32 -- get first 5 bits + local other = node.param2 - rotation + rotation = facedir_tbl[mode][rotation] or 0 + return rotation + other +end + +screwdriver.rotate.colorfacedir = screwdriver.rotate.facedir + +local wallmounted_tbl = { + [screwdriver.ROTATE_FACE] = {[2] = 5, [3] = 4, [4] = 2, [5] = 3, [1] = 0, [0] = 1}, + [screwdriver.ROTATE_AXIS] = {[2] = 5, [3] = 4, [4] = 2, [5] = 1, [1] = 0, [0] = 3} +} + +screwdriver.rotate.wallmounted = function(pos, node, mode) + local rotation = node.param2 % 8 -- get first 3 bits + local other = node.param2 - rotation + rotation = wallmounted_tbl[mode][rotation] or 0 + if minetest.get_item_group(node.name, "attached_node") ~= 0 then + -- find an acceptable orientation + for i = 1, 5 do + if not check_attached_node(pos, rotation) then + rotation = wallmounted_tbl[mode][rotation] or 0 + else + break + end + end + end + return rotation + other +end + +screwdriver.rotate.colorwallmounted = screwdriver.rotate.wallmounted + +-- Handles rotation +screwdriver.handler = function(itemstack, user, pointed_thing, mode, uses) + if pointed_thing.type ~= "node" then + return + end + + local pos = pointed_thing.under + local player_name = user and user:get_player_name() or "" + + if minetest.is_protected(pos, player_name) then + minetest.record_protection_violation(pos, player_name) + return + end + + local node = minetest.get_node(pos) + local ndef = minetest.registered_nodes[node.name] + if not ndef then + return itemstack + end + -- can we rotate this paramtype2? + local fn = screwdriver.rotate[ndef.paramtype2] + if not fn and not ndef.on_rotate then + return itemstack + end + + local should_rotate = true + local new_param2 + if fn then + new_param2 = fn(pos, node, mode) + else + new_param2 = node.param2 + end + + -- Node provides a handler, so let the handler decide instead if the node can be rotated + if ndef.on_rotate then + -- Copy pos and node because callback can modify it + local result = ndef.on_rotate(vector.new(pos), + {name = node.name, param1 = node.param1, param2 = node.param2}, + user, mode, new_param2) + if result == false then -- Disallow rotation + return itemstack + elseif result == true then + should_rotate = false + end + elseif ndef.on_rotate == false then + return itemstack + elseif ndef.can_dig and not ndef.can_dig(pos, user) then + return itemstack + end + + if should_rotate and new_param2 ~= node.param2 then + node.param2 = new_param2 + minetest.swap_node(pos, node) + minetest.check_for_falling(pos) + end + + if not (minetest.settings:get_bool("creative_mode")) then + itemstack:add_wear(65535 / ((uses or 200) - 1)) + end + + return itemstack +end + +-- Screwdriver +minetest.register_tool("screwdriver:screwdriver", { + description = "Screwdriver", + inventory_image = "screwdriver.png", + on_use = function(itemstack, user, pointed_thing) + screwdriver.handler(itemstack, user, pointed_thing, screwdriver.ROTATE_FACE, 200) + return itemstack + end, + on_place = function(itemstack, user, pointed_thing) + screwdriver.handler(itemstack, user, pointed_thing, screwdriver.ROTATE_AXIS, 200) + return itemstack + end, +}) + + +minetest.register_craft({ + output = "screwdriver:screwdriver", + recipe = { + {"mcl_core:iron_ingot"}, + {"mcl_core:stick"} + } +}) + +minetest.register_alias("screwdriver:screwdriver1", "screwdriver:screwdriver") +minetest.register_alias("screwdriver:screwdriver2", "screwdriver:screwdriver") +minetest.register_alias("screwdriver:screwdriver3", "screwdriver:screwdriver") +minetest.register_alias("screwdriver:screwdriver4", "screwdriver:screwdriver") diff --git a/mods/ITEMS/screwdriver/license.txt b/mods/ITEMS/screwdriver/license.txt new file mode 100644 index 00000000..d9b721bb --- /dev/null +++ b/mods/ITEMS/screwdriver/license.txt @@ -0,0 +1,50 @@ +License of source code +---------------------- + +GNU Lesser General Public License, version 2.1 +Copyright (C) 2013-2016 RealBadAngel, Maciej Kasatkin +Copyright (C) 2013-2016 Various Minetest developers and contributors + +This program is free software; you can redistribute it and/or modify it under the terms +of the GNU Lesser General Public License as published by the Free Software Foundation; +either version 2.1 of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; +without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +See the GNU Lesser General Public License for more details: +https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html + + +Licenses of media (textures) +---------------------------- + +Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) +Copyright (C) 2013-2016 Gambit + +You are free to: +Share — copy and redistribute the material in any medium or format. +Adapt — remix, transform, and build upon the material for any purpose, even commercially. +The licensor cannot revoke these freedoms as long as you follow the license terms. + +Under the following terms: + +Attribution — You must give appropriate credit, provide a link to the license, and +indicate if changes were made. You may do so in any reasonable manner, but not in any way +that suggests the licensor endorses you or your use. + +ShareAlike — If you remix, transform, or build upon the material, you must distribute +your contributions under the same license as the original. + +No additional restrictions — You may not apply legal terms or technological measures that +legally restrict others from doing anything the license permits. + +Notices: + +You do not have to comply with the license for elements of the material in the public +domain or where your use is permitted by an applicable exception or limitation. +No warranties are given. The license may not give you all of the permissions necessary +for your intended use. For example, other rights such as publicity, privacy, or moral +rights may limit how you use the material. + +For more details: +http://creativecommons.org/licenses/by-sa/3.0/ diff --git a/mods/ITEMS/screwdriver/textures/screwdriver.png b/mods/ITEMS/screwdriver/textures/screwdriver.png new file mode 100644 index 0000000000000000000000000000000000000000..b2a56d558b34392a3275da443c0ba32a3b4db340 GIT binary patch literal 182 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd7G?$phPQVgfdq5|d_r7(G7EiF`7$#yc628s z7z)39`EqWWSx=l*xtH3CQum7&FUG~i<>uyAR#xuYw{K^Hk@fK_H)R%)Y32O5POM=Q-*yMdNzVclr=>h< gNl@c3I>5*vUczopr0RG23A^-pY literal 0 HcmV?d00001 From b31a71741023a8c14fe7d80164f0c493a6a6cf97 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Wed, 6 Mar 2019 04:10:40 +0100 Subject: [PATCH 002/737] Fix player model for MT 5.0.0 --- .../3d_armor/models/3d_armor_character.b3d | Bin 141046 -> 151606 bytes .../3d_armor/models/3d_armor_character.blend | Bin 711484 -> 775480 bytes mods/PLAYER/mcl_player/models/character.b3d | Bin 84526 -> 73433 bytes mods/PLAYER/mcl_player/models/character.blend | Bin 634876 -> 698016 bytes 4 files changed, 0 insertions(+), 0 deletions(-) diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor/models/3d_armor_character.b3d b/mods/ITEMS/minetest-3d_armor/3d_armor/models/3d_armor_character.b3d index 7c27caeb5e1fc862897adcfadb5f07f5dcc4471c..c4d45b50e371fd8030dec685c001809526ea1b87 100644 GIT binary patch literal 151606 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¨eVGqxcVGzvd*d0}N5s4jz4A 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

hCnoEk_beD zCWAmUXp#s-gC>YTG-$F2M1v-UKs0Ew2t

ia<1I(g;L@CWk;YXwnEogC>kXG-&b& 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

  • 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⪼HIN;R7N?2zz-HrXR@ZKYAd{0%6`ZLB#`4 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

    $Qph~TVuoY7hrQi@e5K5s^=w;`g)Lc{t$C7 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 JxYVNOO#pn^sm1^R diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor/models/3d_armor_character.blend b/mods/ITEMS/minetest-3d_armor/3d_armor/models/3d_armor_character.blend index f61e222cc6d9825bebcb0d55fc5d42f5fb1ee255..44f7e27de38148ebed07926c3a58270ffc2c7bd3 100644 GIT binary patch literal 775480 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ʯDsd*`>q-^a58%42xvTOxg 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

    W1lzNDbqzU7G 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�pRW1nLduCRRXNSw*SonfZCSnR#GKpghnT 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 literal 711484 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�J?73MWw60LnKo`(b$z*?v&?gUSF<`^3u1 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 diff --git a/mods/PLAYER/mcl_player/models/character.b3d b/mods/PLAYER/mcl_player/models/character.b3d index 9ab454366bee8fb6c9e45e64ac0d77808d5ea66f..b3b772a4108a04c96491d1e86599bd3e977abbdc 100644 GIT binary patch literal 73433 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

    a30g=D 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

    )h|J6&(TeT{%^PWkLT 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

    oa=FOnvTr$S+>c^z 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 CQ*xyM diff --git a/mods/PLAYER/mcl_player/models/character.blend b/mods/PLAYER/mcl_player/models/character.blend index fca9f6597fe998d1aebcac4abe126b13099a5788..652579c152ab3ce8c535ca3cfc507cf6537550ed 100644 GIT binary patch delta 139878 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 Date: Wed, 6 Mar 2019 04:38:57 +0100 Subject: [PATCH 003/737] Replace deprecated functions --- mods/ENTITIES/drippingwater/init.lua | 12 ++-- mods/ENTITIES/mcl_boats/init.lua | 50 ++++++++-------- mods/ENTITIES/mcl_falling_nodes/init.lua | 6 +- mods/ENTITIES/mcl_item_entity/init.lua | 26 ++++---- mods/ENTITIES/mcl_minecarts/init.lua | 24 ++++---- mods/ENTITIES/mcl_mobs/api.lua | 60 +++++++++---------- mods/ENTITIES/mcl_mobs/mount.lua | 26 ++++---- mods/ENTITIES/mobs_mc/2_throwing.lua | 14 ++--- mods/ENTITIES/mobs_mc/3_shared.lua | 2 +- mods/ENTITIES/mobs_mc/blaze.lua | 2 +- mods/ENTITIES/mobs_mc/cow+mooshroom.lua | 4 +- mods/ENTITIES/mobs_mc/enderman.lua | 2 +- mods/ENTITIES/mobs_mc/villager.lua | 2 +- mods/ENVIRONMENT/lightning/init.lua | 2 +- mods/HUD/mcl_inventory/init.lua | 2 +- mods/ITEMS/REDSTONE/mesecons_mvps/init.lua | 2 +- mods/ITEMS/mcl_bows/bow.lua | 2 +- mods/ITEMS/mcl_end/eye_of_ender.lua | 16 ++--- mods/ITEMS/mcl_fire/fire_charge.lua | 2 +- mods/ITEMS/mcl_itemframes/init.lua | 2 +- mods/ITEMS/mcl_mobspawners/init.lua | 4 +- mods/ITEMS/mcl_portals/portal_nether.lua | 2 +- mods/ITEMS/mcl_signs/init.lua | 4 +- mods/ITEMS/mcl_throwing/init.lua | 8 +-- mods/ITEMS/mcl_tnt/init.lua | 18 +++--- .../minetest-3d_armor/3d_armor/armor.lua | 2 +- .../minetest-3d_armor/3d_armor_stand/init.lua | 2 +- mods/MAPGEN/mcl_mapgen_core/init.lua | 14 ++--- mods/MAPGEN/tsm_railcorridors/init.lua | 6 +- 29 files changed, 159 insertions(+), 159 deletions(-) diff --git a/mods/ENTITIES/drippingwater/init.lua b/mods/ENTITIES/drippingwater/init.lua index 5cd74cd5..9aad3eb8 100644 --- a/mods/ENTITIES/drippingwater/init.lua +++ b/mods/ENTITIES/drippingwater/init.lua @@ -20,7 +20,7 @@ minetest.register_entity("drippingwater:drop_water", { initial_sprite_basepos = {x=0, y=0}, on_activate = function(self, staticdata) - self.object:setsprite({x=0,y=0}, 1, 1, true) + self.object:set_sprite({x=0,y=0}, 1, 1, true) end, on_step = function(self, dtime) @@ -28,11 +28,11 @@ minetest.register_entity("drippingwater:drop_water", { local ownpos = self.object:get_pos() if k==1 then - self.object:setacceleration({x=0, y=-5, z=0}) + self.object:set_acceleration({x=0, y=-5, z=0}) end if minetest.get_node({x=ownpos.x, y=ownpos.y +0.5, z=ownpos.z}).name == "air" then - self.object:setacceleration({x=0, y=-5, z=0}) + self.object:set_acceleration({x=0, y=-5, z=0}) end if minetest.get_node({x=ownpos.x, y=ownpos.y -0.5, z=ownpos.z}).name ~= "air" then @@ -58,7 +58,7 @@ minetest.register_entity("drippingwater:drop_lava", { initial_sprite_basepos = {x=0, y=0}, on_activate = function(self, staticdata) - self.object:setsprite({x=0,y=0}, 1, 0, true) + self.object:set_sprite({x=0,y=0}, 1, 0, true) end, on_step = function(self, dtime) @@ -66,11 +66,11 @@ minetest.register_entity("drippingwater:drop_lava", { local ownpos = self.object:get_pos() if k==1 then - self.object:setacceleration({x=0, y=-5, z=0}) + self.object:set_acceleration({x=0, y=-5, z=0}) end if minetest.get_node({x=ownpos.x, y=ownpos.y +0.5, z=ownpos.z}).name == "air" then - self.object:setacceleration({x=0, y=-5, z=0}) + self.object:set_acceleration({x=0, y=-5, z=0}) end diff --git a/mods/ENTITIES/mcl_boats/init.lua b/mods/ENTITIES/mcl_boats/init.lua index a583a078..45b6edba 100644 --- a/mods/ENTITIES/mcl_boats/init.lua +++ b/mods/ENTITIES/mcl_boats/init.lua @@ -69,7 +69,7 @@ function boat.on_rightclick(self, clicker) mcl_player.player_set_animation(clicker, "stand" , 30) local pos = clicker:get_pos() pos = {x = pos.x, y = pos.y + 0.2, z = pos.z} - clicker:setpos(pos) + clicker:set_pos(pos) elseif not self._driver then local attach = clicker:get_attach() if attach and attach:get_luaentity() then @@ -91,7 +91,7 @@ function boat.on_rightclick(self, clicker) mcl_player.player_set_animation(player, "sit" , 30) end end, name) - clicker:set_look_horizontal(self.object:getyaw()) + clicker:set_look_horizontal(self.object:get_yaw()) end end @@ -143,10 +143,10 @@ function boat.on_punch(self, puncher) end function boat.on_step(self, dtime) - self._v = get_v(self.object:getvelocity()) * get_sign(self._v) + self._v = get_v(self.object:get_velocity()) * get_sign(self._v) if self._driver then local ctrl = self._driver:get_player_control() - local yaw = self.object:getyaw() + local yaw = self.object:get_yaw() if ctrl.up then -- Forwards self._v = self._v + 0.1 @@ -174,15 +174,15 @@ function boat.on_step(self, dtime) end if ctrl.left then if self._v < 0 then - self.object:setyaw(yaw - (1 + dtime) * 0.03) + self.object:set_yaw(yaw - (1 + dtime) * 0.03) else - self.object:setyaw(yaw + (1 + dtime) * 0.03) + self.object:set_yaw(yaw + (1 + dtime) * 0.03) end elseif ctrl.right then if self._v < 0 then - self.object:setyaw(yaw + (1 + dtime) * 0.03) + self.object:set_yaw(yaw + (1 + dtime) * 0.03) else - self.object:setyaw(yaw - (1 + dtime) * 0.03) + self.object:set_yaw(yaw - (1 + dtime) * 0.03) end end else @@ -192,15 +192,15 @@ function boat.on_step(self, dtime) self._animation = 0 end end - local velo = self.object:getvelocity() + local velo = self.object:get_velocity() if self._v == 0 and velo.x == 0 and velo.y == 0 and velo.z == 0 then - self.object:setpos(self.object:get_pos()) + self.object:set_pos(self.object:get_pos()) return end local s = get_sign(self._v) self._v = self._v - 0.02 * s if s ~= get_sign(self._v) then - self.object:setvelocity({x = 0, y = 0, z = 0}) + self.object:set_velocity({x = 0, y = 0, z = 0}) self._v = 0 return end @@ -220,13 +220,13 @@ function boat.on_step(self, dtime) else new_acce = {x = 0, y = -9.8, z = 0} end - new_velo = get_velocity(self._v, self.object:getyaw(), - self.object:getvelocity().y) - self.object:setpos(self.object:get_pos()) + new_velo = get_velocity(self._v, self.object:get_yaw(), + self.object:get_velocity().y) + self.object:set_pos(self.object:get_pos()) else p.y = p.y + 1 if is_water(p) then - local y = self.object:getvelocity().y + local y = self.object:get_velocity().y if y >= 5 then y = 5 elseif y < 0 then @@ -234,24 +234,24 @@ function boat.on_step(self, dtime) else new_acce = {x = 0, y = 5, z = 0} end - new_velo = get_velocity(self._v, self.object:getyaw(), y) - self.object:setpos(self.object:get_pos()) + new_velo = get_velocity(self._v, self.object:get_yaw(), y) + self.object:set_pos(self.object:get_pos()) else new_acce = {x = 0, y = 0, z = 0} - if math.abs(self.object:getvelocity().y) < 1 then + if math.abs(self.object:get_velocity().y) < 1 then local pos = self.object:get_pos() pos.y = math.floor(pos.y) + boat_y_offset - self.object:setpos(pos) - new_velo = get_velocity(self._v, self.object:getyaw(), 0) + self.object:set_pos(pos) + new_velo = get_velocity(self._v, self.object:get_yaw(), 0) else - new_velo = get_velocity(self._v, self.object:getyaw(), - self.object:getvelocity().y) - self.object:setpos(self.object:get_pos()) + new_velo = get_velocity(self._v, self.object:get_yaw(), + self.object:get_velocity().y) + self.object:set_pos(self.object:get_pos()) end end end - self.object:setvelocity(new_velo) - self.object:setacceleration(new_acce) + self.object:set_velocity(new_velo) + self.object:set_acceleration(new_acce) end -- Register one entity for all boat types diff --git a/mods/ENTITIES/mcl_falling_nodes/init.lua b/mods/ENTITIES/mcl_falling_nodes/init.lua index 5f54f58d..dfbf198e 100644 --- a/mods/ENTITIES/mcl_falling_nodes/init.lua +++ b/mods/ENTITIES/mcl_falling_nodes/init.lua @@ -141,9 +141,9 @@ minetest.register_entity(":__builtin:falling_node", { on_step = function(self, dtime) -- Set gravity - local acceleration = self.object:getacceleration() + local acceleration = self.object:get_acceleration() if not vector.equals(acceleration, {x = 0, y = -10, z = 0}) then - self.object:setacceleration({x = 0, y = -10, z = 0}) + self.object:set_acceleration({x = 0, y = -10, z = 0}) end -- Turn to actual node when colliding with ground, or continue to move local pos = self.object:get_pos() @@ -222,7 +222,7 @@ minetest.register_entity(":__builtin:falling_node", { minetest.check_for_falling(np) return end - local vel = self.object:getvelocity() + local vel = self.object:get_velocity() -- Fix position if entity does not move if vector.equals(vel, {x = 0, y = 0, z = 0}) then local npos = vector.round(self.object:get_pos()) diff --git a/mods/ENTITIES/mcl_item_entity/init.lua b/mods/ENTITIES/mcl_item_entity/init.lua index 4b10cdac..f0184ea0 100644 --- a/mods/ENTITIES/mcl_item_entity/init.lua +++ b/mods/ENTITIES/mcl_item_entity/init.lua @@ -98,14 +98,14 @@ minetest.register_globalstep(function(dtime) local opos = object:get_pos() local vec = vector.subtract(checkpos, opos) vec = vector.add(opos, vector.divide(vec, 2)) - object:moveto(vec) + object:move_to(vec) --fix eternally falling items minetest.after(0, function(object) local lua = object:get_luaentity() if lua then - object:setacceleration({x=0, y=0, z=0}) + object:set_acceleration({x=0, y=0, z=0}) end end, object) @@ -264,7 +264,7 @@ function minetest.handle_node_drops(pos, drops, digger) if math.random(1,2) == 1 then z = -z end - obj:setvelocity({x=1/x, y=obj:getvelocity().y, z=1/z}) + obj:set_velocity({x=1/x, y=obj:get_velocity().y, z=1/z}) end end end @@ -285,7 +285,7 @@ function minetest.item_drop(itemstack, dropper, pos) v.x = v.x*4 v.y = v.y*4 + 2 v.z = v.z*4 - obj:setvelocity(v) + obj:set_velocity(v) -- Force collection delay obj:get_luaentity()._insta_collect = false return itemstack @@ -373,7 +373,7 @@ core.register_entity(":__builtin:item", { if not self or not self.object or not self.object:get_luaentity() then return end - local vel = self.object:getvelocity() + local vel = self.object:get_velocity() if vel and vel.x == 0 and vel.z == 0 then local x = math.random(1, 5) if math.random(1,2) == 1 then @@ -384,7 +384,7 @@ core.register_entity(":__builtin:item", { z = -z end local y = math.random(2,4) - self.object:setvelocity({x=1/x, y=y, z=1/z}) + self.object:set_velocity({x=1/x, y=y, z=1/z}) end end, self) end @@ -444,8 +444,8 @@ core.register_entity(":__builtin:item", { self._forcetimer = 0 self.object:set_armor_groups({immortal = 1}) - self.object:setvelocity({x = 0, y = 2, z = 0}) - self.object:setacceleration({x = 0, y = -get_gravity(), z = 0}) + self.object:set_velocity({x = 0, y = 2, z = 0}) + self.object:set_acceleration({x = 0, y = -get_gravity(), z = 0}) self:set_item(self.itemstring) end, @@ -589,8 +589,8 @@ core.register_entity(":__builtin:item", { -- Set new item moving speed accordingly local newv = vector.multiply(shootdir, 3) - self.object:setacceleration({x = 0, y = 0, z = 0}) - self.object:setvelocity(newv) + self.object:set_acceleration({x = 0, y = 0, z = 0}) + self.object:set_velocity(newv) disable_physics(self.object, self, false, false) @@ -643,8 +643,8 @@ core.register_entity(":__builtin:item", { local f = 1.39 -- Set new item moving speed into the direciton of the liquid local newv = vector.multiply(vec, f) - self.object:setacceleration({x = 0, y = 0, z = 0}) - self.object:setvelocity({x = newv.x, y = -0.22, z = newv.z}) + self.object:set_acceleration({x = 0, y = 0, z = 0}) + self.object:set_velocity({x = newv.x, y = -0.22, z = newv.z}) self.physical_state = true self._flowing = true @@ -662,7 +662,7 @@ core.register_entity(":__builtin:item", { -- If node is not registered or node is walkably solid and resting on nodebox local nn = minetest.get_node({x=p.x, y=p.y-0.5, z=p.z}).name - local v = self.object:getvelocity() + local v = self.object:get_velocity() if not core.registered_nodes[nn] or core.registered_nodes[nn].walkable and v.y == 0 then if self.physical_state then diff --git a/mods/ENTITIES/mcl_minecarts/init.lua b/mods/ENTITIES/mcl_minecarts/init.lua index 6454c3ed..dccbb1cf 100644 --- a/mods/ENTITIES/mcl_minecarts/init.lua +++ b/mods/ENTITIES/mcl_minecarts/init.lua @@ -61,7 +61,7 @@ local function register_entity(entity_id, mesh, textures, drop, on_rightclick) if puncher:get_player_control().sneak then if self._driver then if self._old_pos then - self.object:setpos(self._old_pos) + self.object:set_pos(self._old_pos) end mcl_player.player_attached[self._driver] = nil local player = minetest.get_player_by_name(self._driver) @@ -98,7 +98,7 @@ local function register_entity(entity_id, mesh, textures, drop, on_rightclick) return end - local vel = self.object:getvelocity() + local vel = self.object:get_velocity() if puncher:get_player_name() == self._driver then if math.abs(vel.x + vel.z) > 7 then return @@ -121,7 +121,7 @@ local function register_entity(entity_id, mesh, textures, drop, on_rightclick) end function cart:on_step(dtime) - local vel = self.object:getvelocity() + local vel = self.object:get_velocity() local update = {} if self._last_float_check == nil then self._last_float_check = 0 @@ -139,7 +139,7 @@ local function register_entity(entity_id, mesh, textures, drop, on_rightclick) -- Detach driver if self._driver then if self._old_pos then - self.object:setpos(self._old_pos) + self.object:set_pos(self._old_pos) end mcl_player.player_attached[self._driver] = nil local player = minetest.get_player_by_name(self._driver) @@ -164,7 +164,7 @@ local function register_entity(entity_id, mesh, textures, drop, on_rightclick) if self._punched then vel = vector.add(vel, self._velocity) - self.object:setvelocity(vel) + self.object:set_velocity(vel) self._old_dir.y = 0 elseif vector.equals(vel, {x=0, y=0, z=0}) then return @@ -217,8 +217,8 @@ local function register_entity(entity_id, mesh, textures, drop, on_rightclick) (self._old_vel.x * vel.x < 0 or self._old_vel.z * vel.z < 0) then self._old_vel = {x = 0, y = 0, z = 0} self._old_pos = pos - self.object:setvelocity(vector.new()) - self.object:setacceleration(vector.new()) + self.object:set_velocity(vector.new()) + self.object:set_acceleration(vector.new()) return end self._old_vel = vector.new(vel) @@ -292,7 +292,7 @@ local function register_entity(entity_id, mesh, textures, drop, on_rightclick) new_acc = vector.multiply(dir, acc) end - self.object:setacceleration(new_acc) + self.object:set_acceleration(new_acc) self._old_pos = vector.new(pos) self._old_dir = vector.new(dir) self._old_switch = last_switch @@ -321,7 +321,7 @@ local function register_entity(entity_id, mesh, textures, drop, on_rightclick) elseif dir.z < 0 then yaw = 1 end - self.object:setyaw(yaw * math.pi) + self.object:set_yaw(yaw * math.pi) end if self._punched then @@ -341,9 +341,9 @@ local function register_entity(entity_id, mesh, textures, drop, on_rightclick) end self.object:set_animation(anim, 1, 0) - self.object:setvelocity(vel) + self.object:set_velocity(vel) if update.pos then - self.object:setpos(pos) + self.object:set_pos(pos) end update = nil end @@ -387,7 +387,7 @@ mcl_minecarts.place_minecart = function(itemstack, pointed_thing) le._railtype = railtype end local cart_dir = mcl_minecarts:get_rail_direction(railpos, {x=1, y=0, z=0}, nil, nil, railtype) - cart:setyaw(minetest.dir_to_yaw(cart_dir)) + cart:set_yaw(minetest.dir_to_yaw(cart_dir)) if not minetest.settings:get_bool("creative_mode") then itemstack:take_item() diff --git a/mods/ENTITIES/mcl_mobs/api.lua b/mods/ENTITIES/mcl_mobs/api.lua index 337deeb0..64e3211e 100644 --- a/mods/ENTITIES/mcl_mobs/api.lua +++ b/mods/ENTITIES/mcl_mobs/api.lua @@ -137,15 +137,15 @@ local set_velocity = function(self, v) -- do not move if mob has been ordered to stay if self.order == "stand" then - self.object:setvelocity({x = 0, y = 0, z = 0}) + self.object:set_velocity({x = 0, y = 0, z = 0}) return end local yaw = (self.object:get_yaw() or 0) + self.rotate - self.object:setvelocity({ + self.object:set_velocity({ x = sin(yaw) * -v, - y = self.object:getvelocity().y, + y = self.object:get_velocity().y, z = cos(yaw) * v }) end @@ -154,7 +154,7 @@ end -- calculate mob velocity local get_velocity = function(self) - local v = self.object:getvelocity() + local v = self.object:get_velocity() return (v.x * v.x + v.z * v.z) ^ 0.5 end @@ -403,7 +403,7 @@ local item_drop = function(self, cooked) if obj and obj:get_luaentity() then - obj:setvelocity({ + obj:set_velocity({ x = random(-10, 10) / 9, y = 6, z = random(-10, 10) / 9, @@ -642,7 +642,7 @@ local do_env_damage = function(self) -- don't fall when on ignore, just stand still if self.standing_in == "ignore" then - self.object:setvelocity({x = 0, y = 0, z = 0}) + self.object:set_velocity({x = 0, y = 0, z = 0}) end local nodef = minetest.registered_nodes[self.standing_in] @@ -738,7 +738,7 @@ local do_jump = function(self) -- something stopping us while moving? if self.state ~= "stand" and get_velocity(self) > 0.5 - and self.object:getvelocity().y ~= 0 then + and self.object:get_velocity().y ~= 0 then return false end @@ -776,13 +776,13 @@ local do_jump = function(self) if not nod.name:find("fence") and not nod.name:find("gate") then - local v = self.object:getvelocity() + local v = self.object:get_velocity() v.y = self.jump_height set_animation(self, "jump") -- only when defined - self.object:setvelocity(v) + self.object:set_velocity(v) -- when in air move forward minetest.after(0.3, function(self, v) @@ -912,7 +912,7 @@ local breed = function(self) self.on_grown(self) else -- jump when fully grown so as not to fall into ground - self.object:setvelocity({ + self.object:set_velocity({ x = 0, y = self.jump_height, z = 0 @@ -1041,7 +1041,7 @@ local replace = function(self, pos) or not self.replace_rate or not self.replace_what or self.child == true - or self.object:getvelocity().y ~= 0 + or self.object:get_velocity().y ~= 0 or random(1, self.replace_rate) > 1 then return end @@ -1267,7 +1267,7 @@ local smart_mobs = function(self, s, p, dist, dtime) end s.y = s.y - sheight - self.object:setpos({x = s.x, y = s.y + 2, z = s.z}) + self.object:set_pos({x = s.x, y = s.y + 2, z = s.z}) else -- dig 2 blocks to make door toward player direction @@ -1670,7 +1670,7 @@ local follow_flop = function(self) if not flight_check(self, s) then self.state = "flop" - self.object:setvelocity({x = 0, y = -5, z = 0}) + self.object:set_velocity({x = 0, y = -5, z = 0}) set_animation(self, "stand") @@ -1944,7 +1944,7 @@ local do_states = function(self, dtime) self.timer = 0 self.blinktimer = 0 self.blinkstatus = false - self.object:settexturemod("") + self.object:set_texture_mod("") end -- walk right up to player unless the timer is active @@ -1970,9 +1970,9 @@ local do_states = function(self, dtime) self.blinktimer = 0 if self.blinkstatus then - self.object:settexturemod("") + self.object:set_texture_mod("") else - self.object:settexturemod("^[brighten") + self.object:set_texture_mod("^[brighten") end self.blinkstatus = not self.blinkstatus @@ -2026,13 +2026,13 @@ local do_states = function(self, dtime) local me_y = floor(p1.y) local p2 = p local p_y = floor(p2.y + 1) - local v = self.object:getvelocity() + local v = self.object:get_velocity() if flight_check(self, s) then if me_y < p_y then - self.object:setvelocity({ + self.object:set_velocity({ x = v.x, y = 1 * self.walk_velocity, z = v.z @@ -2040,7 +2040,7 @@ local do_states = function(self, dtime) elseif me_y > p_y then - self.object:setvelocity({ + self.object:set_velocity({ x = v.x, y = -1 * self.walk_velocity, z = v.z @@ -2049,7 +2049,7 @@ local do_states = function(self, dtime) else if me_y < p_y then - self.object:setvelocity({ + self.object:set_velocity({ x = v.x, y = 0.01, z = v.z @@ -2057,7 +2057,7 @@ local do_states = function(self, dtime) elseif me_y > p_y then - self.object:setvelocity({ + self.object:set_velocity({ x = v.x, y = -0.01, z = v.z @@ -2241,7 +2241,7 @@ local do_states = function(self, dtime) vec.y = vec.y * (v / amount) vec.z = vec.z * (v / amount) - obj:setvelocity(vec) + obj:set_velocity(vec) end end end @@ -2257,12 +2257,12 @@ local falling = function(self, pos) end -- floating in water (or falling) - local v = self.object:getvelocity() + local v = self.object:get_velocity() if v.y > 0 then -- apply gravity when moving up - self.object:setacceleration({ + self.object:set_acceleration({ x = 0, y = -10, z = 0 @@ -2271,14 +2271,14 @@ local falling = function(self, pos) elseif v.y <= 0 and v.y > self.fall_speed then -- fall downwards at set speed - self.object:setacceleration({ + self.object:set_acceleration({ x = 0, y = self.fall_speed, z = 0 }) else -- stop accelerating once max fall speed hit - self.object:setacceleration({x = 0, y = 0, z = 0}) + self.object:set_acceleration({x = 0, y = 0, z = 0}) end -- in water then float up @@ -2286,7 +2286,7 @@ local falling = function(self, pos) if self.floats == 1 then - self.object:setacceleration({ + self.object:set_acceleration({ x = 0, y = -self.fall_speed / (max(1, v.y) ^ 2), z = 0 @@ -2296,7 +2296,7 @@ local falling = function(self, pos) -- fall damage onto solid ground if self.fall_damage == 1 - and self.object:getvelocity().y == 0 then + and self.object:get_velocity().y == 0 then local d = (self.old_y or 0) - self.object:get_pos().y @@ -2475,7 +2475,7 @@ local mob_punch = function(self, hitter, tflp, tool_capabilities, dir) if self.knock_back and tflp >= punch_interval then - local v = self.object:getvelocity() + local v = self.object:get_velocity() local r = 1.4 - min(punch_interval, 1.4) local kb = r * 2.0 local up = 2 @@ -2496,7 +2496,7 @@ local mob_punch = function(self, hitter, tflp, tool_capabilities, dir) kb = kb * 1.5 end - self.object:setvelocity({ + self.object:set_velocity({ x = dir.x * kb, y = up, z = dir.z * kb diff --git a/mods/ENTITIES/mcl_mobs/mount.lua b/mods/ENTITIES/mcl_mobs/mount.lua index 04050eb0..d24fc26f 100644 --- a/mods/ENTITIES/mcl_mobs/mount.lua +++ b/mods/ENTITIES/mcl_mobs/mount.lua @@ -190,7 +190,7 @@ function mobs.drive(entity, moving_anim, stand_anim, can_fly, dtime) end local acce_y = 0 - local velo = entity.object:getvelocity() + local velo = entity.object:get_velocity() entity.v = get_v(velo) * get_sign(entity.v) @@ -215,7 +215,7 @@ function mobs.drive(entity, moving_anim, stand_anim, can_fly, dtime) end -- fix mob rotation - entity.object:setyaw(entity.driver:get_look_horizontal() - entity.rotate) + entity.object:set_yaw(entity.driver:get_look_horizontal() - entity.rotate) if can_fly then @@ -275,7 +275,7 @@ function mobs.drive(entity, moving_anim, stand_anim, can_fly, dtime) if s ~= get_sign(entity.v) then - entity.object:setvelocity({x = 0, y = 0, z = 0}) + entity.object:set_velocity({x = 0, y = 0, z = 0}) entity.v = 0 return end @@ -348,7 +348,7 @@ function mobs.drive(entity, moving_anim, stand_anim, can_fly, dtime) if math.abs(velo.y) < 1 then local pos = entity.object:get_pos() pos.y = math.floor(pos.y) + 0.5 - entity.object:setpos(pos) + entity.object:set_pos(pos) velo.y = 0 end end @@ -360,8 +360,8 @@ function mobs.drive(entity, moving_anim, stand_anim, can_fly, dtime) new_velo = get_velocity(v, entity.object:get_yaw() - rot_view, velo.y) new_acce.y = new_acce.y + acce_y - entity.object:setvelocity(new_velo) - entity.object:setacceleration(new_acce) + entity.object:set_velocity(new_velo) + entity.object:set_acceleration(new_acce) -- CRASH! if enable_crash then @@ -387,7 +387,7 @@ end function mobs.fly(entity, dtime, speed, shoots, arrow, moving_anim, stand_anim) local ctrl = entity.driver:get_player_control() - local velo = entity.object:getvelocity() + local velo = entity.object:get_velocity() local dir = entity.driver:get_look_dir() local yaw = entity.driver:get_look_horizontal() + 1.57 -- offset fix between old and new commands local rot_steer, rot_view = math.pi / 2, 0 @@ -397,24 +397,24 @@ function mobs.fly(entity, dtime, speed, shoots, arrow, moving_anim, stand_anim) end if ctrl.up then - entity.object:setvelocity({ + entity.object:set_velocity({ x = dir.x * speed, y = dir.y * speed + 2, z = dir.z * speed }) elseif ctrl.down then - entity.object:setvelocity({ + entity.object:set_velocity({ x = -dir.x * speed, y = dir.y * speed + 2, z = -dir.z * speed }) elseif not ctrl.down or ctrl.up or ctrl.jump then - entity.object:setvelocity({x = 0, y = -2, z = 0}) + entity.object:set_velocity({x = 0, y = -2, z = 0}) end - entity.object:setyaw(yaw + math.pi + math.pi / 2 - entity.rotate) + entity.object:set_yaw(yaw + math.pi + math.pi / 2 - entity.rotate) -- firing arrows if ctrl.LMB and ctrl.sneak and shoots then @@ -431,8 +431,8 @@ function mobs.fly(entity, dtime, speed, shoots, arrow, moving_anim, stand_anim) ent.owner_id = tostring(entity.object) -- so arrows dont hurt entity you are riding local vec = {x = dir.x * 6, y = dir.y * 6, z = dir.z * 6} local yaw = entity.driver:get_look_horizontal() - obj:setyaw(yaw + math.pi / 2) - obj:setvelocity(vec) + obj:set_yaw(yaw + math.pi / 2) + obj:set_velocity(vec) else obj:remove() end diff --git a/mods/ENTITIES/mobs_mc/2_throwing.lua b/mods/ENTITIES/mobs_mc/2_throwing.lua index 810c63f2..f2f15a1a 100644 --- a/mods/ENTITIES/mobs_mc/2_throwing.lua +++ b/mods/ENTITIES/mobs_mc/2_throwing.lua @@ -116,9 +116,9 @@ local throwing_shoot_arrow = function(itemstack, player) local playerpos = player:get_pos() local obj = minetest.add_entity({x=playerpos.x,y=playerpos.y+1.5,z=playerpos.z}, arrow[2]) --mc local dir = player:get_look_dir() - obj:setvelocity({x=dir.x*22, y=dir.y*22, z=dir.z*22}) - obj:setacceleration({x=dir.x*-3, y=-10, z=dir.z*-3}) - obj:setyaw(player:get_look_yaw()+math.pi) + obj:set_velocity({x=dir.x*22, y=dir.y*22, z=dir.z*22}) + obj:set_acceleration({x=dir.x*-3, y=-10, z=dir.z*-3}) + obj:set_yaw(player:get_look_yaw()+math.pi) minetest.sound_play("throwing_sound", {pos=playerpos}) if obj:get_luaentity().player == "" then obj:get_luaentity().player = player @@ -267,13 +267,13 @@ if c("egg") then ent.velocity = egg_VELOCITY -- needed for api internal timing ent.switch = 1 -- needed so that egg doesn't despawn straight away - obj:setvelocity({ + obj:set_velocity({ x = dir.x * egg_VELOCITY, y = dir.y * egg_VELOCITY, z = dir.z * egg_VELOCITY }) - obj:setacceleration({ + obj:set_acceleration({ x = dir.x * -3, y = -egg_GRAVITY, z = dir.z * -3 @@ -351,13 +351,13 @@ if c("snowball") then ent.velocity = snowball_VELOCITY -- needed for api internal timing ent.switch = 1 -- needed so that egg doesn't despawn straight away - obj:setvelocity({ + obj:set_velocity({ x = dir.x * snowball_VELOCITY, y = dir.y * snowball_VELOCITY, z = dir.z * snowball_VELOCITY }) - obj:setacceleration({ + obj:set_acceleration({ x = dir.x * -3, y = -snowball_GRAVITY, z = dir.z * -3 diff --git a/mods/ENTITIES/mobs_mc/3_shared.lua b/mods/ENTITIES/mobs_mc/3_shared.lua index 41103359..fce0850b 100644 --- a/mods/ENTITIES/mobs_mc/3_shared.lua +++ b/mods/ENTITIES/mobs_mc/3_shared.lua @@ -53,7 +53,7 @@ mobs_mc.make_owner_teleport_function = function(dist, teleport_check_interval) if minetest.registered_nodes[minetest.get_node(telepos).name].walkable == false and minetest.registered_nodes[minetest.get_node(telepos_below).name].walkable == true then -- Correct position found! Let's teleport. - self.object:setpos(telepos) + self.object:set_pos(telepos) return end end diff --git a/mods/ENTITIES/mobs_mc/blaze.lua b/mods/ENTITIES/mobs_mc/blaze.lua index 0f847635..2f06c4a3 100644 --- a/mods/ENTITIES/mobs_mc/blaze.lua +++ b/mods/ENTITIES/mobs_mc/blaze.lua @@ -101,7 +101,7 @@ mobs:register_arrow("mobs_mc:blaze_fireball", { if node.name == "air" then minetest.set_node(pos_above, {name=mobs_mc.items.fire}) else - local v = self.object:getvelocity() + local v = self.object:get_velocity() v = vector.normalize(v) local crashpos = vector.subtract(pos, v) local crashnode = minetest.get_node(crashpos) diff --git a/mods/ENTITIES/mobs_mc/cow+mooshroom.lua b/mods/ENTITIES/mobs_mc/cow+mooshroom.lua index 48a6aac7..4b08db12 100644 --- a/mods/ENTITIES/mobs_mc/cow+mooshroom.lua +++ b/mods/ENTITIES/mobs_mc/cow+mooshroom.lua @@ -100,10 +100,10 @@ mooshroom_def.on_rightclick = function(self, clicker) minetest.add_item({x=pos.x, y=pos.y+1.4, z=pos.z}, mobs_mc.items.mushroom_red .. " 5") end - local oldyaw = self.object:getyaw() + local oldyaw = self.object:get_yaw() self.object:remove() local cow = minetest.add_entity(pos, "mobs_mc:cow") - cow:setyaw(oldyaw) + cow:set_yaw(oldyaw) if not minetest.settings:get_bool("creative_mode") then item:add_wear(mobs_mc.misc.shears_wear) diff --git a/mods/ENTITIES/mobs_mc/enderman.lua b/mods/ENTITIES/mobs_mc/enderman.lua index 06998175..da3054a5 100644 --- a/mods/ENTITIES/mobs_mc/enderman.lua +++ b/mods/ENTITIES/mobs_mc/enderman.lua @@ -314,7 +314,7 @@ mobs:register_mob("mobs_mc:enderman", { end end if telepos then - self.object:setpos(telepos) + self.object:set_pos(telepos) end end end, diff --git a/mods/ENTITIES/mobs_mc/villager.lua b/mods/ENTITIES/mobs_mc/villager.lua index 330250f3..e2d91310 100644 --- a/mods/ENTITIES/mobs_mc/villager.lua +++ b/mods/ENTITIES/mobs_mc/villager.lua @@ -595,7 +595,7 @@ local function return_item(itemstack, dropper, pos, inv_p) v.x = v.x*4 v.y = v.y*4 + 2 v.z = v.z*4 - obj:setvelocity(v) + obj:set_velocity(v) obj:get_luaentity()._insta_collect = false end end diff --git a/mods/ENVIRONMENT/lightning/init.lua b/mods/ENVIRONMENT/lightning/init.lua index e3792f7e..3d417cce 100644 --- a/mods/ENVIRONMENT/lightning/init.lua +++ b/mods/ENVIRONMENT/lightning/init.lua @@ -163,7 +163,7 @@ lightning.strike = function(pos) posadd = {x=math.cos(angle),y=0,z=math.sin(angle)} posadd = vector.normalize(posadd) local mob = minetest.add_entity(vector.add(pos2, posadd), "mobs_mc:skeleton") - mob:setyaw(angle-math.pi/2) + mob:set_yaw(angle-math.pi/2) angle = angle + (math.pi*2) / 3 end diff --git a/mods/HUD/mcl_inventory/init.lua b/mods/HUD/mcl_inventory/init.lua index 05f61aac..bed3c485 100644 --- a/mods/HUD/mcl_inventory/init.lua +++ b/mods/HUD/mcl_inventory/init.lua @@ -20,7 +20,7 @@ local function return_item(itemstack, dropper, pos, inv) v.x = v.x*4 v.y = v.y*4 + 2 v.z = v.z*4 - obj:setvelocity(v) + obj:set_velocity(v) obj:get_luaentity()._insta_collect = false end end diff --git a/mods/ITEMS/REDSTONE/mesecons_mvps/init.lua b/mods/ITEMS/REDSTONE/mesecons_mvps/init.lua index 5e7da9d2..a5820821 100644 --- a/mods/ITEMS/REDSTONE/mesecons_mvps/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons_mvps/init.lua @@ -310,7 +310,7 @@ function mesecon.mvps_move_objects(pos, dir, nodestack) local nn = minetest.get_node(np) if not ((not minetest.registered_nodes[nn.name]) or minetest.registered_nodes[nn.name].walkable) then - obj:setpos(np) + obj:set_pos(np) end end end diff --git a/mods/ITEMS/mcl_bows/bow.lua b/mods/ITEMS/mcl_bows/bow.lua index 55a4e0b1..14cea6a7 100644 --- a/mods/ITEMS/mcl_bows/bow.lua +++ b/mods/ITEMS/mcl_bows/bow.lua @@ -41,7 +41,7 @@ mcl_bows.shoot_arrow = function(arrow_item, pos, dir, yaw, shooter, power, damag end obj:set_velocity({x=dir.x*power, y=dir.y*power, z=dir.z*power}) obj:set_acceleration({x=0, y=-GRAVITY, z=0}) - obj:setyaw(yaw-math.pi/2) + obj:set_yaw(yaw-math.pi/2) local le = obj:get_luaentity() le._shooter = shooter le._damage = damage diff --git a/mods/ITEMS/mcl_end/eye_of_ender.lua b/mods/ITEMS/mcl_end/eye_of_ender.lua index 131db7bb..e15beb50 100644 --- a/mods/ITEMS/mcl_end/eye_of_ender.lua +++ b/mods/ITEMS/mcl_end/eye_of_ender.lua @@ -35,10 +35,10 @@ minetest.register_entity("mcl_end:ender_eye", { else -- 80% to drop as an item local pos = self.object:get_pos() - local v = self.object:getvelocity() + local v = self.object:get_velocity() self.object:remove() local item = minetest.add_item(pos, "mcl_end:ender_eye") - item:setvelocity(v) + item:set_velocity(v) return end elseif self._age >= 2 then @@ -46,8 +46,8 @@ minetest.register_entity("mcl_end:ender_eye", { self._phase = 1 -- Stop the eye and wait for another second. -- The vertical speed changes are just eye candy. - self.object:setacceleration({x=0, y=-3, z=0}) - self.object:setvelocity({x=0, y=self.object:getvelocity().y*0.2, z=0}) + self.object:set_acceleration({x=0, y=-3, z=0}) + self.object:set_velocity({x=0, y=self.object:get_velocity().y*0.2, z=0}) end else -- Fly normally and generate particles @@ -126,7 +126,7 @@ minetest.register_craftitem("mcl_end:ender_eye", { local velocity = 4 -- Stronghold is close: Fly directly to stronghold and take Y into account. dir = vector.normalize(vector.direction(origin, closest_stronghold.pos)) - obj:setvelocity({x=dir.x*velocity, y=dir.y*velocity, z=dir.z*velocity}) + obj:set_velocity({x=dir.x*velocity, y=dir.y*velocity, z=dir.z*velocity}) else local velocity = 12 -- Don't care about Y if stronghold is still far away. @@ -134,8 +134,8 @@ minetest.register_craftitem("mcl_end:ender_eye", { local o = {x=origin.x, y=0, z=origin.z} local s = {x=closest_stronghold.pos.x, y=0, z=closest_stronghold.pos.z} dir = vector.normalize(vector.direction(o, s)) - obj:setacceleration({x=dir.x*-3, y=4, z=dir.z*-3}) - obj:setvelocity({x=dir.x*velocity, y=3, z=dir.z*velocity}) + obj:set_acceleration({x=dir.x*-3, y=4, z=dir.z*-3}) + obj:set_velocity({x=dir.x*velocity, y=3, z=dir.z*velocity}) end @@ -150,4 +150,4 @@ minetest.register_craft({ type = "shapeless", output = "mcl_end:ender_eye", recipe = {"mcl_mobitems:blaze_powder", "mcl_throwing:ender_pearl"}, -}) \ No newline at end of file +}) diff --git a/mods/ITEMS/mcl_fire/fire_charge.lua b/mods/ITEMS/mcl_fire/fire_charge.lua index d35ffae9..78dbade7 100644 --- a/mods/ITEMS/mcl_fire/fire_charge.lua +++ b/mods/ITEMS/mcl_fire/fire_charge.lua @@ -46,7 +46,7 @@ minetest.register_craftitem("mcl_fire:fire_charge", { local ent = fireball:get_luaentity() ent._shot_from_dispenser = true local v = ent.velocity or 1 - fireball:setvelocity(vector.multiply(dropdir, v)) + fireball:set_velocity(vector.multiply(dropdir, v)) ent.switch = 1 stack:take_item() end, diff --git a/mods/ITEMS/mcl_itemframes/init.lua b/mods/ITEMS/mcl_itemframes/init.lua index 2d2fffb3..52ceb6fc 100644 --- a/mods/ITEMS/mcl_itemframes/init.lua +++ b/mods/ITEMS/mcl_itemframes/init.lua @@ -77,7 +77,7 @@ local update_item_entity = function(pos, node) lua:_update_texture() if node.name == "mcl_itemframes:item_frame" then local yaw = math.pi*2 - node.param2 * math.pi/2 - e:setyaw(yaw) + e:set_yaw(yaw) end end end diff --git a/mods/ITEMS/mcl_mobspawners/init.lua b/mods/ITEMS/mcl_mobspawners/init.lua index 58ec364c..dc74b23f 100644 --- a/mods/ITEMS/mcl_mobspawners/init.lua +++ b/mods/ITEMS/mcl_mobspawners/init.lua @@ -338,8 +338,8 @@ doll_def.on_activate = function(self, staticdata, dtime_s) mob = default_mob end set_doll_properties(self.object, mob) - self.object:setvelocity({x=0, y=0, z=0}) - self.object:setacceleration({x=0, y=0, z=0}) + self.object:set_velocity({x=0, y=0, z=0}) + self.object:set_acceleration({x=0, y=0, z=0}) self.object:set_armor_groups({immortal=1}) end diff --git a/mods/ITEMS/mcl_portals/portal_nether.lua b/mods/ITEMS/mcl_portals/portal_nether.lua index 64de52ba..c2b358ea 100644 --- a/mods/ITEMS/mcl_portals/portal_nether.lua +++ b/mods/ITEMS/mcl_portals/portal_nether.lua @@ -197,7 +197,7 @@ local function find_nether_target_y(target_x, target_z) local air = 4 for y = start_y, math.max(mcl_vars.mg_lava_nether_max + 1), -1 do - local nval_cave = nobj_cave:get3d({x = target_x, y = y, z = target_z}) + local nval_cave = nobj_cave:get_3d({x = target_x, y = y, z = target_z}) if nval_cave > TCAVE then -- Cavern air = air + 1 diff --git a/mods/ITEMS/mcl_signs/init.lua b/mods/ITEMS/mcl_signs/init.lua index c9763379..280d02b5 100644 --- a/mods/ITEMS/mcl_signs/init.lua +++ b/mods/ITEMS/mcl_signs/init.lua @@ -223,7 +223,7 @@ local update_sign = function(pos, fields, sender) text_entity:get_luaentity()._signnodename = nn text_entity:set_properties({textures={generate_texture(create_lines(text), nn)}}) - text_entity:setyaw(sign_info.yaw) + text_entity:set_yaw(sign_info.yaw) end local show_formspec = function(player, pos) @@ -359,7 +359,7 @@ minetest.register_node("mcl_signs:wall_sign", { x = place_pos.x + sign_info.delta.x, y = place_pos.y + sign_info.delta.y, z = place_pos.z + sign_info.delta.z}, "mcl_signs:text") - text_entity:setyaw(sign_info.yaw) + text_entity:set_yaw(sign_info.yaw) text_entity:get_luaentity()._signnodename = nodeitem:get_name() minetest.sound_play({name="default_place_node_hard", gain=1.0}, {pos = place_pos}) diff --git a/mods/ITEMS/mcl_throwing/init.lua b/mods/ITEMS/mcl_throwing/init.lua index ee0b4fcb..c2402d32 100644 --- a/mods/ITEMS/mcl_throwing/init.lua +++ b/mods/ITEMS/mcl_throwing/init.lua @@ -28,8 +28,8 @@ mcl_throwing.throw = function(throw_item, pos, dir, velocity) local itemstring = ItemStack(throw_item):get_name() local obj = minetest.add_entity(pos, entity_mapping[itemstring]) - obj:setvelocity({x=dir.x*velocity, y=dir.y*velocity, z=dir.z*velocity}) - obj:setacceleration({x=dir.x*-3, y=-GRAVITY, z=dir.z*-3}) + obj:set_velocity({x=dir.x*velocity, y=dir.y*velocity, z=dir.z*velocity}) + obj:set_acceleration({x=dir.x*-3, y=-GRAVITY, z=dir.z*-3}) return obj end @@ -208,7 +208,7 @@ local pearl_on_step = function(self, dtime) -- First determine good teleport position local dir = {x=0, y=0, z=0} - local v = self.object:getvelocity() + local v = self.object:get_velocity() if walkable then local vc = table.copy(v) -- vector for calculating -- Node is walkable, we have to find a place somewhere outside of that node @@ -261,7 +261,7 @@ local pearl_on_step = function(self, dtime) local oldpos = player:get_pos() -- Teleport and hurt player - player:setpos(telepos) + player:set_pos(telepos) player:set_hp(player:get_hp() - 5) -- 5% chance to spawn endermite at the player's origin diff --git a/mods/ITEMS/mcl_tnt/init.lua b/mods/ITEMS/mcl_tnt/init.lua index fbe82c1c..54d252f2 100644 --- a/mods/ITEMS/mcl_tnt/init.lua +++ b/mods/ITEMS/mcl_tnt/init.lua @@ -10,7 +10,7 @@ end local function activate_if_tnt(nname, np, tnt_np, tntr) if nname == "mcl_tnt:tnt" then local e = spawn_tnt(np, nname) - e:setvelocity({x=(np.x - tnt_np.x)*5+(tntr / 4), y=(np.y - tnt_np.y)*5+(tntr / 3), z=(np.z - tnt_np.z)*5+(tntr / 4)}) + e:set_velocity({x=(np.x - tnt_np.x)*5+(tntr / 4), y=(np.y - tnt_np.y)*5+(tntr / 3), z=(np.z - tnt_np.z)*5+(tntr / 4)}) end end @@ -18,13 +18,13 @@ local function do_tnt_physics(tnt_np,tntr) local objs = minetest.get_objects_inside_radius(tnt_np, tntr) for k, obj in pairs(objs) do local ent = obj:get_luaentity() - local v = obj:getvelocity() + local v = obj:get_velocity() local p = obj:get_pos() if ent and ent.name == "mcl_tnt:tnt" then - obj:setvelocity({x=(p.x - tnt_np.x) + (tntr / 2) + v.x, y=(p.y - tnt_np.y) + tntr + v.y, z=(p.z - tnt_np.z) + (tntr / 2) + v.z}) + obj:set_velocity({x=(p.x - tnt_np.x) + (tntr / 2) + v.x, y=(p.y - tnt_np.y) + tntr + v.y, z=(p.z - tnt_np.z) + (tntr / 2) + v.z}) else if v ~= nil then - obj:setvelocity({x=(p.x - tnt_np.x) + (tntr / 4) + v.x, y=(p.y - tnt_np.y) + (tntr / 2) + v.y, z=(p.z - tnt_np.z) + (tntr / 4) + v.z}) + obj:set_velocity({x=(p.x - tnt_np.x) + (tntr / 4) + v.x, y=(p.y - tnt_np.y) + (tntr / 2) + v.y, z=(p.z - tnt_np.z) + (tntr / 4) + v.z}) else local dist = math.max(1, vector.distance(tnt_np, p)) local damage = (4 / dist) * tntr @@ -100,9 +100,9 @@ function TNT:on_activate(staticdata) local phi = math.random(0, 65535) / 65535 * 2*math.pi local hdir_x = math.cos(phi) * 0.02 local hdir_z = math.sin(phi) * 0.02 - self.object:setvelocity({x=hdir_x, y=2, z=hdir_z}) - self.object:setacceleration({x=0, y=-10, z=0}) - self.object:settexturemod("^mcl_tnt_blink.png") + self.object:set_velocity({x=hdir_x, y=2, z=hdir_z}) + self.object:set_acceleration({x=0, y=-10, z=0}) + self.object:set_texture_mod("^mcl_tnt_blink.png") end local function add_effects(pos, radius, drops) @@ -170,9 +170,9 @@ function TNT:on_step(dtime) if self.blinktimer > 0.25 then self.blinktimer = self.blinktimer - 0.25 if self.blinkstatus then - self.object:settexturemod("") + self.object:set_texture_mod("") else - self.object:settexturemod("^mcl_tnt_blink.png") + self.object:set_texture_mod("^mcl_tnt_blink.png") end self.blinkstatus = not self.blinkstatus end diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor/armor.lua b/mods/ITEMS/minetest-3d_armor/3d_armor/armor.lua index ae9799f9..c4de2c52 100644 --- a/mods/ITEMS/minetest-3d_armor/3d_armor/armor.lua +++ b/mods/ITEMS/minetest-3d_armor/3d_armor/armor.lua @@ -433,7 +433,7 @@ 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)}) + obj:set_velocity({x=math.random(-1, 1), y=5, z=math.random(-1, 1)}) end end minetest.register_on_dieplayer(function(player) diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor_stand/init.lua b/mods/ITEMS/minetest-3d_armor/3d_armor_stand/init.lua index 02eb0bcb..c3571a6b 100644 --- a/mods/ITEMS/minetest-3d_armor/3d_armor_stand/init.lua +++ b/mods/ITEMS/minetest-3d_armor/3d_armor_stand/init.lua @@ -63,7 +63,7 @@ local function update_entity(pos) yaw = math.pi / 2 end end - object:setyaw(yaw) + object:set_yaw(yaw) object:set_properties({textures={texture}}) end end diff --git a/mods/MAPGEN/mcl_mapgen_core/init.lua b/mods/MAPGEN/mcl_mapgen_core/init.lua index 9a979d43..65dd895c 100644 --- a/mods/MAPGEN/mcl_mapgen_core/init.lua +++ b/mods/MAPGEN/mcl_mapgen_core/init.lua @@ -1022,7 +1022,7 @@ local function generate_clay(minp, maxp, seed, voxelmanip_data, voxelmanip_area, local surfacenode = voxelmanip_data[surface_pos] local genrnd = math.random(1, 20) - if genrnd == 1 and perlin_clay:get3d({x=cx,y=y,z=cz}) > 0 and waternode == c_water and + if genrnd == 1 and perlin_clay:get_3d({x=cx,y=y,z=cz}) > 0 and waternode == c_water and (surfacenode == c_dirt or minetest.get_item_group(minetest.get_name_from_content_id(surfacenode), "sand") == 1) then local diamondsize = math.random(1, 3) for x1 = -diamondsize, diamondsize do @@ -1062,7 +1062,7 @@ local function generate_structures(minp, maxp, seed, biomemap) local x1 = minp.x + math.floor((divx+1)*divlen) local z1 = minp.z + math.floor((divz+1)*divlen) -- Determine amount from perlin noise - local amount = math.floor(perlin_structures:get2d({x=x0, y=z0}) * 9) + local amount = math.floor(perlin_structures:get_2d({x=x0, y=z0}) * 9) -- Find random positions based on this random local pr = PseudoRandom(seed+1) for i=0, amount do @@ -1445,12 +1445,12 @@ local function generate_tree_decorations(minp, maxp, seed, data, param2_data, ar local pos = vector.add(pos, dirs[d]) local p_pos = area:index(pos.x, pos.y, pos.z) - local vine_threshold = math.max(0.33333, perlin_vines_density:get2d(pos)) + local vine_threshold = math.max(0.33333, perlin_vines_density:get_2d(pos)) if dense_vegetation then vine_threshold = vine_threshold * (2/3) end - if perlin_vines:get2d(pos) > -1.0 and perlin_vines_fine:get3d(pos) > vine_threshold and data[p_pos] == c_air then + if perlin_vines:get_2d(pos) > -1.0 and perlin_vines_fine:get_3d(pos) > vine_threshold and data[p_pos] == c_air then local rdir = {} rdir.x = -dirs[d].x @@ -1462,13 +1462,13 @@ local function generate_tree_decorations(minp, maxp, seed, data, param2_data, ar local grow_upwards = false -- Only possible on the wood, not on the leaves if i == 1 then - grow_upwards = perlin_vines_upwards:get3d(pos) > 0.8 + grow_upwards = perlin_vines_upwards:get_3d(pos) > 0.8 end if grow_upwards then -- Grow vines up 1-4 nodes, even through jungleleaves. -- This may give climbing access all the way to the top of the tree :-) -- But this will be fairly rare. - local length = math.ceil(math.abs(perlin_vines_length:get3d(pos)) * 4) + local length = math.ceil(math.abs(perlin_vines_length:get_3d(pos)) * 4) for l=0, length-1 do local t_pos = area:index(treepos.x, treepos.y, treepos.z) @@ -1486,7 +1486,7 @@ local function generate_tree_decorations(minp, maxp, seed, data, param2_data, ar end else -- Grow vines down, length between 1 and maxvinelength - local length = math.ceil(math.abs(perlin_vines_length:get3d(pos)) * maxvinelength) + local length = math.ceil(math.abs(perlin_vines_length:get_3d(pos)) * maxvinelength) for l=0, length-1 do if data[p_pos] == c_air then data[p_pos] = c_vine diff --git a/mods/MAPGEN/tsm_railcorridors/init.lua b/mods/MAPGEN/tsm_railcorridors/init.lua index 6812125e..bfaa6916 100644 --- a/mods/MAPGEN/tsm_railcorridors/init.lua +++ b/mods/MAPGEN/tsm_railcorridors/init.lua @@ -736,13 +736,13 @@ local function create_corridor_section(waypoint, axis, sign, up_or_down, up_or_d -- Mob spawner (at center) if place_mob_spawners and tsm_railcorridors.nodes.spawner and not no_spawner and - webperlin_major:get3d(p) > 0.3 and webperlin_minor:get3d(p) > 0.5 then + webperlin_major:get_3d(p) > 0.3 and webperlin_minor:get_3d(p) > 0.5 then -- Place spawner (if activated in gameconfig), -- enclose in cobwebs and setup the spawner node. local spawner_placed = SetNodeIfCanBuild(p, {name=tsm_railcorridors.nodes.spawner}) if spawner_placed then local size = 1 - if webperlin_major:get3d(p) > 0.5 then + if webperlin_major:get_3d(p) > 0.5 then size = 2 end if place_cobwebs then @@ -765,7 +765,7 @@ local function create_corridor_section(waypoint, axis, sign, up_or_down, up_or_d if pr:next(1,5) == 1 then local h = pr:next(0, 2) -- 3 possible cobweb heights local cpos = {x=basepos.x+vek.x, y=basepos.y+h, z=basepos.z+vek.z} - if webperlin_major:get3d(cpos) > 0.05 and webperlin_minor:get3d(cpos) > 0.1 then + if webperlin_major:get_3d(cpos) > 0.05 and webperlin_minor:get_3d(cpos) > 0.1 then if h == 0 then -- No check neccessary at height offset 0 since the cobweb is on the floor return TryPlaceCobweb(cpos) From 4f8377b16141183193aea0cea92dacc60ff9550e Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Wed, 6 Mar 2019 05:07:42 +0100 Subject: [PATCH 004/737] Fix warning in tsm_railcorridors --- mods/MAPGEN/tsm_railcorridors/init.lua | 1 - 1 file changed, 1 deletion(-) diff --git a/mods/MAPGEN/tsm_railcorridors/init.lua b/mods/MAPGEN/tsm_railcorridors/init.lua index bfaa6916..3cc0d75d 100644 --- a/mods/MAPGEN/tsm_railcorridors/init.lua +++ b/mods/MAPGEN/tsm_railcorridors/init.lua @@ -124,7 +124,6 @@ local function InitRandomizer(seed) -- Used for cobweb generation, both noises have to reach a high value for cobwebs to appear webperlin_major = PerlinNoise(934, 3, 0.6, 500) webperlin_minor = PerlinNoise(834, 3, 0.6, 50) - pr_inited = true end local carts_table = {} From a9776814a695f6ac3223f82f184647aa34290be4 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Wed, 6 Mar 2019 05:11:49 +0100 Subject: [PATCH 005/737] Fix player attachment offsets --- mods/ENTITIES/mcl_boats/init.lua | 2 +- mods/ENTITIES/mcl_minecarts/init.lua | 2 +- mods/ENTITIES/mobs_mc/horse.lua | 2 +- mods/ENTITIES/mobs_mc/llama.lua | 2 +- mods/ENTITIES/mobs_mc/pig.lua | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/mods/ENTITIES/mcl_boats/init.lua b/mods/ENTITIES/mcl_boats/init.lua index 45b6edba..3ebcb6f9 100644 --- a/mods/ENTITIES/mcl_boats/init.lua +++ b/mods/ENTITIES/mcl_boats/init.lua @@ -82,7 +82,7 @@ function boat.on_rightclick(self, clicker) end self._driver = clicker clicker:set_attach(self.object, "", - {x = 0, y = 3.75, z = -1}, {x = 0, y = 0, z = 0}) + {x = 0, y = 0.42, z = -1}, {x = 0, y = 0, z = 0}) clicker:set_properties({ visual_size = driver_visual_size }) mcl_player.player_attached[name] = true minetest.after(0.2, function(name) diff --git a/mods/ENTITIES/mcl_minecarts/init.lua b/mods/ENTITIES/mcl_minecarts/init.lua index dccbb1cf..b053b1f6 100644 --- a/mods/ENTITIES/mcl_minecarts/init.lua +++ b/mods/ENTITIES/mcl_minecarts/init.lua @@ -494,7 +494,7 @@ register_minecart( self._driver = player_name self._start_pos = self.object:get_pos() mcl_player.player_attached[player_name] = true - clicker:set_attach(self.object, "", {x=0, y=8.25, z=-2}, {x=0, y=0, z=0}) + clicker:set_attach(self.object, "", {x=0, y=-1.75, z=-2}, {x=0, y=0, z=0}) mcl_player.player_attached[name] = true minetest.after(0.2, function(name) local player = minetest.get_player_by_name(name) diff --git a/mods/ENTITIES/mobs_mc/horse.lua b/mods/ENTITIES/mobs_mc/horse.lua index 45ff5ee8..533948a0 100644 --- a/mods/ENTITIES/mobs_mc/horse.lua +++ b/mods/ENTITIES/mobs_mc/horse.lua @@ -142,7 +142,7 @@ local horse = { self.max_speed_reverse = 2 self.accel = 6 self.terrain_type = 3 - self.driver_attach_at = {x = 0, y = 7.5, z = -1.75} + self.driver_attach_at = {x = 0, y = 4.17, z = -1.75} self.driver_eye_offset = {x = 0, y = 3, z = 0} self.driver_scale = {x = 1/self.visual_size.x, y = 1/self.visual_size.y} end diff --git a/mods/ENTITIES/mobs_mc/llama.lua b/mods/ENTITIES/mobs_mc/llama.lua index 711fb134..e70b9a18 100644 --- a/mods/ENTITIES/mobs_mc/llama.lua +++ b/mods/ENTITIES/mobs_mc/llama.lua @@ -69,7 +69,7 @@ mobs:register_mob("mobs_mc:llama", { self.max_speed_reverse = 2 self.accel = 4 self.terrain_type = 3 - self.driver_attach_at = {x = 0, y = 7.5, z = -1.5} + self.driver_attach_at = {x = 0, y = 4.17, z = -1.5} self.driver_eye_offset = {x = 0, y = 3, z = 0} self.driver_scale = {x = 1/self.visual_size.x, y = 1/self.visual_size.y} end diff --git a/mods/ENTITIES/mobs_mc/pig.lua b/mods/ENTITIES/mobs_mc/pig.lua index cb6bf6a1..1f685c2f 100644 --- a/mods/ENTITIES/mobs_mc/pig.lua +++ b/mods/ENTITIES/mobs_mc/pig.lua @@ -59,7 +59,7 @@ mobs:register_mob("mobs_mc:pig", { self.max_speed_reverse = 2 self.accel = 4 self.terrain_type = 3 - self.driver_attach_at = {x = 0.0, y = 6.75, z = -1.5} + self.driver_attach_at = {x = 0.0, y = 2.75, z = -1.5} self.driver_eye_offset = {x = 0, y = 3, z = 0} self.driver_scale = {x = 1/self.visual_size.x, y = 1/self.visual_size.y} end From 149d1450ef211e499d424c8b52b6c8a12426228c Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Wed, 6 Mar 2019 05:14:31 +0100 Subject: [PATCH 006/737] Remove console spam from mcl_loot --- mods/CORE/mcl_loot/init.lua | 3 --- 1 file changed, 3 deletions(-) diff --git a/mods/CORE/mcl_loot/init.lua b/mods/CORE/mcl_loot/init.lua index 3b52e365..35c72539 100644 --- a/mods/CORE/mcl_loot/init.lua +++ b/mods/CORE/mcl_loot/init.lua @@ -114,9 +114,6 @@ local function get_random_slots(max_slot) table.insert(slots_out, slots[r]) table.remove(slots, r) end - for s=1, #slots_out do - print(slots_out[s]) - end return slots_out end From 4c8433b41ccd2b3cfa8761fcdbd537e93bcf0750 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Wed, 6 Mar 2019 05:21:05 +0100 Subject: [PATCH 007/737] Fix clouds speed parameter (MT 5.0.0) --- mods/ENVIRONMENT/mcl_weather/skycolor.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ENVIRONMENT/mcl_weather/skycolor.lua b/mods/ENVIRONMENT/mcl_weather/skycolor.lua index 180a3f87..196bd79f 100644 --- a/mods/ENVIRONMENT/mcl_weather/skycolor.lua +++ b/mods/ENVIRONMENT/mcl_weather/skycolor.lua @@ -235,7 +235,7 @@ local initsky = function(player) end -- MC-style clouds: Layer 127, thickness 4, fly to the “West” - player:set_clouds({height=mcl_worlds.layer_to_y(127), speed={x=-2, y=0}, thickness=4, color="#FFF0FEF"}) + player:set_clouds({height=mcl_worlds.layer_to_y(127), speed={x=-2, z=0}, thickness=4, color="#FFF0FEF"}) end minetest.register_on_joinplayer(initsky) From 2b3922c9729ea857c062e2791ad6328ee9965a86 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Wed, 6 Mar 2019 05:45:16 +0100 Subject: [PATCH 008/737] Replace deprecated player attribute calls --- mods/ITEMS/mcl_beds/functions.lua | 11 ++++++----- mods/PLAYER/mcl_hunger/api.lua | 12 ++++++------ mods/PLAYER/mcl_player/init.lua | 4 ++-- mods/PLAYER/mcl_skins/init.lua | 6 +++--- mods/PLAYER/mcl_spawn/init.lua | 15 ++++++++------- mods/PLAYER/mcl_sprint/init.lua | 2 +- mods/PLAYER/playerphysics/init.lua | 12 +++++++----- 7 files changed, 33 insertions(+), 29 deletions(-) diff --git a/mods/ITEMS/mcl_beds/functions.lua b/mods/ITEMS/mcl_beds/functions.lua index 02f72ff5..0f571609 100644 --- a/mods/ITEMS/mcl_beds/functions.lua +++ b/mods/ITEMS/mcl_beds/functions.lua @@ -127,7 +127,7 @@ local function lay_down(player, pos, bed_pos, state, skip) mcl_player.player_attached[name] = false playerphysics.remove_physics_factor(player, "speed", "mcl_beds:sleeping") playerphysics.remove_physics_factor(player, "jump", "mcl_beds:sleeping") - player:set_attribute("mcl_beds:sleeping", "false") + player:get_meta():set_string("mcl_beds:sleeping", "false") hud_flags.wielditem = true mcl_player.player_set_animation(player, "stand" , 30) mcl_beds.pos[name] = nil @@ -181,7 +181,7 @@ local function lay_down(player, pos, bed_pos, state, skip) player:set_look_horizontal(yaw) player:set_look_vertical(0) - player:set_attribute("mcl_beds:sleeping", "true") + player:get_meta():set_string("mcl_beds:sleeping", "true") playerphysics.add_physics_factor(player, "speed", "mcl_beds:sleeping", 0) playerphysics.add_physics_factor(player, "jump", "mcl_beds:sleeping", 0) player:set_pos(p) @@ -296,7 +296,7 @@ end function mcl_beds.on_rightclick(pos, player, is_top) -- Anti-Inception: Don't allow to sleep while you're sleeping - if player:get_attribute("mcl_beds:sleeping") == "true" then + if player:get_meta():get_string("mcl_beds:sleeping") == "true" then return end if minetest.get_modpath("mcl_worlds") then @@ -343,9 +343,10 @@ end -- Callbacks minetest.register_on_joinplayer(function(player) - if player:get_attribute("mcl_beds:sleeping") == "true" then + local meta = player:get_meta() + if meta:get_string("mcl_beds:sleeping") == "true" then -- Make player awake on joining server - player:set_attribute("mcl_beds:sleeping", "false") + meta:set_string("mcl_beds:sleeping", "false") end playerphysics.remove_physics_factor(player, "speed", "mcl_beds:sleeping") playerphysics.remove_physics_factor(player, "jump", "mcl_beds:sleeping") diff --git a/mods/PLAYER/mcl_hunger/api.lua b/mods/PLAYER/mcl_hunger/api.lua index 04c384f9..ad609e05 100644 --- a/mods/PLAYER/mcl_hunger/api.lua +++ b/mods/PLAYER/mcl_hunger/api.lua @@ -2,23 +2,23 @@ mcl_hunger.registered_foods = {} if mcl_hunger.active then function mcl_hunger.get_hunger(player) - local hunger = player:get_attribute("mcl_hunger:hunger") or 20 + local hunger = player:get_meta():get_string("mcl_hunger:hunger") or 20 return tonumber(hunger) end function mcl_hunger.get_saturation(player) - local saturation = player:get_attribute("mcl_hunger:saturation") or mcl_hunger.SATURATION_INIT + local saturation = player:get_meta():get_string("mcl_hunger:saturation") or mcl_hunger.SATURATION_INIT return tonumber(saturation) end function mcl_hunger.get_exhaustion(player) - local exhaustion = player:get_attribute("mcl_hunger:exhaustion") or 0 + local exhaustion = player:get_meta():get_string("mcl_hunger:exhaustion") or 0 return tonumber(exhaustion) end function mcl_hunger.set_hunger(player, hunger, update_hudbars) hunger = math.min(20, math.max(0, hunger)) - player:set_attribute("mcl_hunger:hunger", tostring(hunger)) + player:get_meta():set_string("mcl_hunger:hunger", tostring(hunger)) if update_hudbars ~= false then hb.change_hudbar(player, "hunger", hunger) mcl_hunger.update_saturation_hud(player, nil, hunger) @@ -28,7 +28,7 @@ if mcl_hunger.active then function mcl_hunger.set_saturation(player, saturation, update_hudbar) saturation = math.min(mcl_hunger.get_hunger(player), math.max(0, saturation)) - player:set_attribute("mcl_hunger:saturation", tostring(saturation)) + player:get_meta():set_string("mcl_hunger:saturation", tostring(saturation)) if update_hudbar ~= false then mcl_hunger.update_saturation_hud(player, saturation) end @@ -37,7 +37,7 @@ if mcl_hunger.active then function mcl_hunger.set_exhaustion(player, exhaustion, update_hudbar) exhaustion = math.min(mcl_hunger.EXHAUST_LVL, math.max(0.0, exhaustion)) - player:set_attribute("mcl_hunger:exhaustion", tostring(exhaustion)) + player:get_meta():set_string("mcl_hunger:exhaustion", tostring(exhaustion)) if update_hudbar ~= false then mcl_hunger.update_exhaustion_hud(player, exhaustion) end diff --git a/mods/PLAYER/mcl_player/init.lua b/mods/PLAYER/mcl_player/init.lua index b01c0b4d..bd56ad80 100644 --- a/mods/PLAYER/mcl_player/init.lua +++ b/mods/PLAYER/mcl_player/init.lua @@ -75,12 +75,12 @@ function mcl_player.player_set_textures(player, textures, preview) player_textures[name] = textures player:set_properties({textures = textures,}) if preview then - player:set_attribute("mcl_player:preview", preview) + player:get_meta():set_string("mcl_player:preview", preview) end end function mcl_player.player_get_preview(player) - local preview = player:get_attribute("mcl_player:preview") + local preview = player:get_meta():get_string("mcl_player:preview") if not preview then return "player.png" else diff --git a/mods/PLAYER/mcl_skins/init.lua b/mods/PLAYER/mcl_skins/init.lua index cfb0ff83..e4b35435 100644 --- a/mods/PLAYER/mcl_skins/init.lua +++ b/mods/PLAYER/mcl_skins/init.lua @@ -72,7 +72,7 @@ while true do end mcl_skins.cycle_skin = function(player) - local skin_id = tonumber(player:get_attribute("mcl_skins:skin_id")) + local skin_id = tonumber(player:get_meta():get_string("mcl_skins:skin_id")) if not skin_id then skin_id = 0 end @@ -106,7 +106,7 @@ mcl_skins.set_player_skin = function(player, skin_id) skin_file = skin .. ".png" mcl_skins.skins[playername] = skin mcl_skins.previews[playername] = preview - player:set_attribute("mcl_skins:skin_id", tostring(skin_id)) + player:get_meta():set_string("mcl_skins:skin_id", tostring(skin_id)) mcl_skins.update_player_skin(player) if minetest.get_modpath("3d_armor") then armor.textures[playername].skin = skin_file @@ -134,7 +134,7 @@ end minetest.register_on_joinplayer(function(player) local name = player:get_player_name() - local skin_id = player:get_attribute("mcl_skins:skin_id") + local skin_id = player:get_meta():get_string("mcl_skins:skin_id") local set_skin -- do we already have a skin in player attributes? if skin_id then diff --git a/mods/PLAYER/mcl_spawn/init.lua b/mods/PLAYER/mcl_spawn/init.lua index bf8c1344..746beeb8 100644 --- a/mods/PLAYER/mcl_spawn/init.lua +++ b/mods/PLAYER/mcl_spawn/init.lua @@ -10,7 +10,7 @@ local mg_name = minetest.get_mapgen_setting("mg_name") mcl_spawn.get_spawn_pos = function(player) local spawn, custom_spawn = nil, false if player ~= nil and player:is_player() then - local attr = player:get_attribute("mcl_beds:spawn") + local attr = player:get_meta():get_string("mcl_beds:spawn") if attr ~= nil and attr ~= "" then spawn = minetest.string_to_pos(attr) custom_spawn = true @@ -21,7 +21,7 @@ mcl_spawn.get_spawn_pos = function(player) custom_spawn = false end if not spawn or spawn == "" then - local attr = player:get_attribute("mcl_spawn:first_spawn") + local attr = player:get_meta():get_string("mcl_spawn:first_spawn") if attr ~= nil and attr ~= "" then spawn = minetest.string_to_pos(attr) custom_spawn = false @@ -36,16 +36,17 @@ end -- changed. mcl_spawn.set_spawn_pos = function(player, pos, message) local spawn_changed = false + local meta = player:get_meta() if pos == nil then - if player:get_attribute("mcl_beds:spawn") ~= "" then + if meta:get_string("mcl_beds:spawn") ~= "" then spawn_changed = true if message then minetest.chat_send_player(player:get_player_name(), "Respawn position cleared!") end end - player:set_attribute("mcl_beds:spawn", "") + meta:set_string("mcl_beds:spawn", "") else - local oldpos = minetest.string_to_pos(player:get_attribute("mcl_beds:spawn")) + local oldpos = minetest.string_to_pos(meta:get_string("mcl_beds:spawn")) if oldpos then -- We don't bother sending a message if the new spawn pos is basically the same if vector.distance(pos, oldpos) > 0.1 then @@ -55,7 +56,7 @@ mcl_spawn.set_spawn_pos = function(player, pos, message) end end end - player:set_attribute("mcl_beds:spawn", minetest.pos_to_string(pos)) + meta:set_string("mcl_beds:spawn", minetest.pos_to_string(pos)) end return spawn_changed end @@ -99,6 +100,6 @@ end) minetest.register_on_newplayer(function(player) -- Remember where the player spawned first - player:set_attribute("mcl_spawn:first_spawn", minetest.pos_to_string(player:get_pos())) + player:get_meta():set_string("mcl_spawn:first_spawn", minetest.pos_to_string(player:get_pos())) end) diff --git a/mods/PLAYER/mcl_sprint/init.lua b/mods/PLAYER/mcl_sprint/init.lua index 123809a8..c1915290 100644 --- a/mods/PLAYER/mcl_sprint/init.lua +++ b/mods/PLAYER/mcl_sprint/init.lua @@ -107,7 +107,7 @@ minetest.register_globalstep(function(dtime) if players[playerName]["shouldSprint"] == true then --Stopped local sprinting -- Prevent sprinting if hungry or sleeping - if (mcl_hunger.active and mcl_hunger.get_hunger(player) <= 6) or (player:get_attribute("mcl_beds:sleeping") == "true")then + if (mcl_hunger.active and mcl_hunger.get_hunger(player) <= 6) or (player:get_meta():get_string("mcl_beds:sleeping") == "true")then sprinting = false else sprinting = true diff --git a/mods/PLAYER/playerphysics/init.lua b/mods/PLAYER/playerphysics/init.lua index 2b7d7df0..50d6454d 100644 --- a/mods/PLAYER/playerphysics/init.lua +++ b/mods/PLAYER/playerphysics/init.lua @@ -1,7 +1,7 @@ playerphysics = {} local function calculate_attribute_product(player, attribute) - local a = minetest.deserialize(player:get_attribute("playerphysics:physics")) + local a = minetest.deserialize(player:get_meta():get_string("playerphysics:physics")) local product = 1 if a == nil or a[attribute] == nil then return product @@ -16,7 +16,8 @@ local function calculate_attribute_product(player, attribute) end function playerphysics.add_physics_factor(player, attribute, id, value) - local a = minetest.deserialize(player:get_attribute("playerphysics:physics")) + local meta = player:get_meta() + local a = minetest.deserialize(meta:get_string("playerphysics:physics")) if a == nil then a = { [attribute] = { [id] = value } } elseif a[attribute] == nil then @@ -24,20 +25,21 @@ function playerphysics.add_physics_factor(player, attribute, id, value) else a[attribute][id] = value end - player:set_attribute("playerphysics:physics", minetest.serialize(a)) + meta:set_string("playerphysics:physics", minetest.serialize(a)) local raw_value = calculate_attribute_product(player, attribute) player:set_physics_override({[attribute] = raw_value}) end function playerphysics.remove_physics_factor(player, attribute, id) - local a = minetest.deserialize(player:get_attribute("playerphysics:physics")) + local meta = player:get_meta() + local a = minetest.deserialize(meta:get_string("playerphysics:physics")) if a == nil or a[attribute] == nil then -- Nothing to remove return else a[attribute][id] = nil end - player:set_attribute("playerphysics:physics", minetest.serialize(a)) + meta:set_string("playerphysics:physics", minetest.serialize(a)) local raw_value = calculate_attribute_product(player, attribute) player:set_physics_override({[attribute] = raw_value}) end From c4558a31ab63dd1b67de6df3e0940ce7289096f5 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Wed, 6 Mar 2019 05:52:31 +0100 Subject: [PATCH 009/737] Update modpack meta files (MT 5.0.0) --- mods/CORE/modpack.txt | 0 mods/ENTITIES/modpack.txt | 0 mods/ENVIRONMENT/modpack.conf | 2 ++ mods/ENVIRONMENT/modpack.txt | 0 mods/HELP/doc/modpack.conf | 1 + mods/HELP/doc/modpack.txt | 0 mods/HELP/modpack.txt | 0 mods/HUD/modpack.txt | 0 mods/ITEMS/REDSTONE/modpack.txt | 1 - mods/ITEMS/minetest-3d_armor/modpack.txt | 0 mods/ITEMS/modpack.txt | 0 mods/MAPGEN/modpack.txt | 0 mods/MISC/modpack.txt | 0 mods/PLAYER/modpack.txt | 0 14 files changed, 3 insertions(+), 1 deletion(-) delete mode 100644 mods/CORE/modpack.txt delete mode 100644 mods/ENTITIES/modpack.txt create mode 100644 mods/ENVIRONMENT/modpack.conf delete mode 100644 mods/ENVIRONMENT/modpack.txt create mode 100644 mods/HELP/doc/modpack.conf delete mode 100644 mods/HELP/doc/modpack.txt delete mode 100644 mods/HELP/modpack.txt delete mode 100644 mods/HUD/modpack.txt delete mode 100644 mods/ITEMS/REDSTONE/modpack.txt delete mode 100644 mods/ITEMS/minetest-3d_armor/modpack.txt delete mode 100644 mods/ITEMS/modpack.txt delete mode 100644 mods/MAPGEN/modpack.txt delete mode 100644 mods/MISC/modpack.txt delete mode 100644 mods/PLAYER/modpack.txt diff --git a/mods/CORE/modpack.txt b/mods/CORE/modpack.txt deleted file mode 100644 index e69de29b..00000000 diff --git a/mods/ENTITIES/modpack.txt b/mods/ENTITIES/modpack.txt deleted file mode 100644 index e69de29b..00000000 diff --git a/mods/ENVIRONMENT/modpack.conf b/mods/ENVIRONMENT/modpack.conf new file mode 100644 index 00000000..8c40cfab --- /dev/null +++ b/mods/ENVIRONMENT/modpack.conf @@ -0,0 +1,2 @@ +name = ENVIRONMENT +description = Meta-modpack containing environment and nature-related mods for MineClone 2 diff --git a/mods/ENVIRONMENT/modpack.txt b/mods/ENVIRONMENT/modpack.txt deleted file mode 100644 index e69de29b..00000000 diff --git a/mods/HELP/doc/modpack.conf b/mods/HELP/doc/modpack.conf new file mode 100644 index 00000000..5e2f4308 --- /dev/null +++ b/mods/HELP/doc/modpack.conf @@ -0,0 +1 @@ +name = doc diff --git a/mods/HELP/doc/modpack.txt b/mods/HELP/doc/modpack.txt deleted file mode 100644 index e69de29b..00000000 diff --git a/mods/HELP/modpack.txt b/mods/HELP/modpack.txt deleted file mode 100644 index e69de29b..00000000 diff --git a/mods/HUD/modpack.txt b/mods/HUD/modpack.txt deleted file mode 100644 index e69de29b..00000000 diff --git a/mods/ITEMS/REDSTONE/modpack.txt b/mods/ITEMS/REDSTONE/modpack.txt deleted file mode 100644 index 33d91f57..00000000 --- a/mods/ITEMS/REDSTONE/modpack.txt +++ /dev/null @@ -1 +0,0 @@ -The presence of this file indicates that the current folder is a modpack. \ No newline at end of file diff --git a/mods/ITEMS/minetest-3d_armor/modpack.txt b/mods/ITEMS/minetest-3d_armor/modpack.txt deleted file mode 100644 index e69de29b..00000000 diff --git a/mods/ITEMS/modpack.txt b/mods/ITEMS/modpack.txt deleted file mode 100644 index e69de29b..00000000 diff --git a/mods/MAPGEN/modpack.txt b/mods/MAPGEN/modpack.txt deleted file mode 100644 index e69de29b..00000000 diff --git a/mods/MISC/modpack.txt b/mods/MISC/modpack.txt deleted file mode 100644 index e69de29b..00000000 diff --git a/mods/PLAYER/modpack.txt b/mods/PLAYER/modpack.txt deleted file mode 100644 index e69de29b..00000000 From 98b3003e07f1ab85e83547dc922109f603dcfa51 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Wed, 6 Mar 2019 06:25:03 +0100 Subject: [PATCH 010/737] Fix mcl_meshhand race condition --- mods/PLAYER/mcl_meshhand/init.lua | 5 ----- 1 file changed, 5 deletions(-) diff --git a/mods/PLAYER/mcl_meshhand/init.lua b/mods/PLAYER/mcl_meshhand/init.lua index 1e318a5b..87b9e692 100644 --- a/mods/PLAYER/mcl_meshhand/init.lua +++ b/mods/PLAYER/mcl_meshhand/init.lua @@ -17,11 +17,6 @@ if has_mcl_skins == true then }) end --change the player's hand to their skin - minetest.register_on_joinplayer(function(player) - local skin = mcl_skins.skins[player:get_player_name()] - player:get_inventory():set_stack("hand", 1, "mcl_meshhand:"..skin) - end) - mcl_skins.register_on_set_skin(function(player, skin) local name = player:get_player_name() player:get_inventory():set_stack("hand", 1, "mcl_meshhand:"..skin) From ea0c2e9568dcb9d63f777ac62307af65c9a47603 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Wed, 6 Mar 2019 06:35:24 +0100 Subject: [PATCH 011/737] Utilize formspec prepend --- mods/CORE/mcl_formspec_prepend/init.lua | 6 ++++++ mods/CORE/mcl_formspec_prepend/mod.conf | 2 ++ mods/CORE/mcl_init/init.lua | 7 ------- mods/ENTITIES/mobs_mc/villager.lua | 1 - mods/HELP/mcl_craftguide/init.lua | 2 -- mods/HUD/mcl_inventory/creative.lua | 1 - mods/HUD/mcl_inventory/init.lua | 1 - mods/ITEMS/REDSTONE/mcl_dispensers/depends.txt | 1 - mods/ITEMS/REDSTONE/mcl_dispensers/init.lua | 1 - mods/ITEMS/REDSTONE/mcl_droppers/depends.txt | 1 - mods/ITEMS/REDSTONE/mcl_droppers/init.lua | 1 - mods/ITEMS/mcl_anvils/depends.txt | 1 - mods/ITEMS/mcl_anvils/init.lua | 1 - mods/ITEMS/mcl_beds/functions.lua | 2 +- mods/ITEMS/mcl_chests/depends.txt | 1 - mods/ITEMS/mcl_chests/init.lua | 5 ----- mods/ITEMS/mcl_crafting_table/depends.txt | 1 - mods/ITEMS/mcl_crafting_table/init.lua | 1 - mods/ITEMS/mcl_furnaces/depends.txt | 1 - mods/ITEMS/mcl_furnaces/init.lua | 2 -- mods/ITEMS/mcl_hoppers/init.lua | 1 - 21 files changed, 9 insertions(+), 31 deletions(-) create mode 100644 mods/CORE/mcl_formspec_prepend/init.lua create mode 100644 mods/CORE/mcl_formspec_prepend/mod.conf diff --git a/mods/CORE/mcl_formspec_prepend/init.lua b/mods/CORE/mcl_formspec_prepend/init.lua new file mode 100644 index 00000000..8babbd72 --- /dev/null +++ b/mods/CORE/mcl_formspec_prepend/init.lua @@ -0,0 +1,6 @@ +minetest.register_on_joinplayer(function(player) + local bg = ""--"bgcolor[#080808BB;true]" + local slots = "listcolors[#9990;#FFF7;#FFF0;#000;#FFF]" + local prepend = bg .. slots +-- player:set_formspec_prepend(prepend) +end) diff --git a/mods/CORE/mcl_formspec_prepend/mod.conf b/mods/CORE/mcl_formspec_prepend/mod.conf new file mode 100644 index 00000000..b724158a --- /dev/null +++ b/mods/CORE/mcl_formspec_prepend/mod.conf @@ -0,0 +1,2 @@ +name = mcl_formspec_prepend +description = Set formspec prepend string for all players diff --git a/mods/CORE/mcl_init/init.lua b/mods/CORE/mcl_init/init.lua index de50bf00..fda683e0 100644 --- a/mods/CORE/mcl_init/init.lua +++ b/mods/CORE/mcl_init/init.lua @@ -1,13 +1,6 @@ -- Some global variables (don't overwrite them!) mcl_vars = {} ---- GUI / inventory menu colors -mcl_vars.gui_slots = "listcolors[#9990;#FFF7;#FFF0;#000;#FFF]" -mcl_vars.gui_bg = "bgcolor[#080808BB;true]" -mcl_vars.gui_bg_img = "" - -mcl_vars.inventory_header = mcl_vars.gui_slots .. mcl_vars.gui_bg - -- Mapgen variables local mg_name = minetest.get_mapgen_setting("mg_name") local minecraft_height_limit = 256 diff --git a/mods/ENTITIES/mobs_mc/villager.lua b/mods/ENTITIES/mobs_mc/villager.lua index e2d91310..d96dfd16 100644 --- a/mods/ENTITIES/mobs_mc/villager.lua +++ b/mods/ENTITIES/mobs_mc/villager.lua @@ -491,7 +491,6 @@ local function show_trade_formspec(playername, trader, tradenum) "size[9,8.75]" .."background[-0.19,-0.25;9.41,9.49;mobs_mc_trading_formspec_bg.png]" ..disabled_img - ..mcl_vars.inventory_header .."label[4,0;"..minetest.formspec_escape(profession).."]" .."list[current_player;main;0,4.5;9,3;9]" .."list[current_player;main;0,7.74;9,1;]" diff --git a/mods/HELP/mcl_craftguide/init.lua b/mods/HELP/mcl_craftguide/init.lua index 6b3d4132..a8c75cbf 100644 --- a/mods/HELP/mcl_craftguide/init.lua +++ b/mods/HELP/mcl_craftguide/init.lua @@ -315,8 +315,6 @@ function craftguide:get_formspec(player_name, is_fuel) data.pagemax = max(1, ceil(#data.items / ipp)) local formspec = "size["..data.iX..","..(iY+3)..".6;]".. - mcl_vars.gui_slots .. - mcl_vars.gui_bg .. [=[background[1,1;1,1;craftguide_bg.png;true] button[2.4,0.21;0.8,0.5;search;?] button[3.05,0.21;0.8,0.5;clear;X] diff --git a/mods/HUD/mcl_inventory/creative.lua b/mods/HUD/mcl_inventory/creative.lua index fcc8efdd..9bcf52bd 100644 --- a/mods/HUD/mcl_inventory/creative.lua +++ b/mods/HUD/mcl_inventory/creative.lua @@ -378,7 +378,6 @@ mcl_inventory.set_creative_formspec = function(player, start_i, pagenum, inv_siz end formspec = "size[10,9.3]".. - mcl_vars.inventory_header.. "background[-0.19,-0.25;10.5,9.87;"..inv_bg.."]".. "label[-5,-5;"..name.."]".. tab(name, "blocks") .. diff --git a/mods/HUD/mcl_inventory/init.lua b/mods/HUD/mcl_inventory/init.lua index bed3c485..cea5ffd0 100644 --- a/mods/HUD/mcl_inventory/init.lua +++ b/mods/HUD/mcl_inventory/init.lua @@ -86,7 +86,6 @@ local function set_inventory(player, armor_change_only) local form = "size[9,8.75]".. "background[-0.19,-0.25;9.41,9.49;crafting_formspec_bg.png]".. - mcl_vars.inventory_header.. player_preview.. --armor "list[detached:"..player_name.."_armor;armor;0,0;1,1;1]".. diff --git a/mods/ITEMS/REDSTONE/mcl_dispensers/depends.txt b/mods/ITEMS/REDSTONE/mcl_dispensers/depends.txt index c17d2db0..a6648be2 100644 --- a/mods/ITEMS/REDSTONE/mcl_dispensers/depends.txt +++ b/mods/ITEMS/REDSTONE/mcl_dispensers/depends.txt @@ -1,4 +1,3 @@ -mcl_init mesecons mcl_sounds mcl_tnt diff --git a/mods/ITEMS/REDSTONE/mcl_dispensers/init.lua b/mods/ITEMS/REDSTONE/mcl_dispensers/init.lua index 2c3c6b78..98b297a4 100644 --- a/mods/ITEMS/REDSTONE/mcl_dispensers/init.lua +++ b/mods/ITEMS/REDSTONE/mcl_dispensers/init.lua @@ -13,7 +13,6 @@ local setup_dispenser = function(pos) -- Set formspec and inventory local form = "size[9,8.75]".. "background[-0.19,-0.25;9.41,9.49;crafting_inventory_9_slots.png]".. - mcl_vars.inventory_header.. "image[3,-0.2;5,0.75;mcl_dispensers_fnt_dispenser.png]".. "list[current_player;main;0,4.5;9,3;9]".. "list[current_player;main;0,7.74;9,1;]".. diff --git a/mods/ITEMS/REDSTONE/mcl_droppers/depends.txt b/mods/ITEMS/REDSTONE/mcl_droppers/depends.txt index d8d7ca50..3abc2f24 100644 --- a/mods/ITEMS/REDSTONE/mcl_droppers/depends.txt +++ b/mods/ITEMS/REDSTONE/mcl_droppers/depends.txt @@ -1,4 +1,3 @@ -mcl_init mesecons mcl_util doc? diff --git a/mods/ITEMS/REDSTONE/mcl_droppers/init.lua b/mods/ITEMS/REDSTONE/mcl_droppers/init.lua index be42e79a..baa453e7 100644 --- a/mods/ITEMS/REDSTONE/mcl_droppers/init.lua +++ b/mods/ITEMS/REDSTONE/mcl_droppers/init.lua @@ -13,7 +13,6 @@ local setup_dropper = function(pos) -- Set formspec and inventory local form = "size[9,8.75]".. "background[-0.19,-0.25;9.41,9.49;crafting_inventory_9_slots.png]".. - mcl_vars.inventory_header.. "image[3,-0.2;5,0.75;mcl_droppers_fnt_dropper.png]".. "list[current_player;main;0,4.5;9,3;9]".. "list[current_player;main;0,7.74;9,1;]".. diff --git a/mods/ITEMS/mcl_anvils/depends.txt b/mods/ITEMS/mcl_anvils/depends.txt index 021df7cb..a2749e99 100644 --- a/mods/ITEMS/mcl_anvils/depends.txt +++ b/mods/ITEMS/mcl_anvils/depends.txt @@ -1,4 +1,3 @@ -mcl_init mcl_sounds mcl_core? screwdriver? diff --git a/mods/ITEMS/mcl_anvils/init.lua b/mods/ITEMS/mcl_anvils/init.lua index 8b3717a3..790541cb 100644 --- a/mods/ITEMS/mcl_anvils/init.lua +++ b/mods/ITEMS/mcl_anvils/init.lua @@ -15,7 +15,6 @@ local function get_anvil_formspec(set_name) end return "size[9,8.75]".. "background[-0.19,-0.25;9.41,9.49;mcl_anvils_inventory.png]".. - mcl_vars.inventory_header.. "list[current_player;main;0,4.5;9,3;9]".. "list[current_player;main;0,7.74;9,1;]".. "list[context;input;1,2.5;1,1;]".. diff --git a/mods/ITEMS/mcl_beds/functions.lua b/mods/ITEMS/mcl_beds/functions.lua index 0f571609..e9109481 100644 --- a/mods/ITEMS/mcl_beds/functions.lua +++ b/mods/ITEMS/mcl_beds/functions.lua @@ -196,7 +196,7 @@ end local function update_formspecs(finished) local ges = #minetest.get_connected_players() - local form_n = "size[8,15;true]" + local form_n = "size[8,15;true]no_prepend[]" local all_in_bed = ges == player_in_bed local night_skip = is_night_skip_enabled() local button_leave = "button_exit[2,12;4,0.75;leave;Leave bed]" diff --git a/mods/ITEMS/mcl_chests/depends.txt b/mods/ITEMS/mcl_chests/depends.txt index cd00aa22..11402413 100644 --- a/mods/ITEMS/mcl_chests/depends.txt +++ b/mods/ITEMS/mcl_chests/depends.txt @@ -1,4 +1,3 @@ -mcl_init mcl_core mcl_sounds mcl_end diff --git a/mods/ITEMS/mcl_chests/init.lua b/mods/ITEMS/mcl_chests/init.lua index 57c991ce..770e05ba 100644 --- a/mods/ITEMS/mcl_chests/init.lua +++ b/mods/ITEMS/mcl_chests/init.lua @@ -170,7 +170,6 @@ minetest.register_node("mcl_chests:"..basename, { minetest.show_formspec(clicker:get_player_name(), "mcl_chests:"..formspec_basename.."_"..pos.x.."_"..pos.y.."_"..pos.z, "size[9,8.75]".. - mcl_vars.inventory_header.. "background[-0.19,-0.25;9.41,10.48;mcl_chests_inventory_chest.png]".. "image[0,-0.2;5,0.75;mcl_chests_fnt_chest.png]".. "list[nodemeta:"..pos.x..","..pos.y..","..pos.z..";main;0,0.5;9,3;]".. @@ -293,7 +292,6 @@ minetest.register_node("mcl_chests:"..basename.."_left", { "mcl_chests:"..formspec_basename.."_"..pos.x.."_"..pos.y.."_"..pos.z, "size[9,11.5]".. "background[-0.19,-0.25;9.41,12.5;mcl_chests_inventory_chest_large.png]".. - mcl_vars.inventory_header.. "list[nodemeta:"..pos.x..","..pos.y..","..pos.z..";main;0,0.5;9,3;]".. "list[nodemeta:"..pos_other.x..","..pos_other.y..","..pos_other.z..";main;0,3.5;9,3;]".. "list[current_player;main;0,7.5;9,3;9]".. @@ -415,7 +413,6 @@ minetest.register_node("mcl_chests:"..basename.."_right", { "size[9,11.5]".. "background[-0.19,-0.25;9.41,12.5;mcl_chests_inventory_chest_large.png]".. - mcl_vars.inventory_header.. "list[nodemeta:"..pos_other.x..","..pos_other.y..","..pos_other.z..";main;0,0.5;9,3;]".. "list[nodemeta:"..pos.x..","..pos.y..","..pos.z..";main;0,3.5;9,3;]".. "list[current_player;main;0,7.5;9,3;9]".. @@ -618,7 +615,6 @@ minetest.register_node("mcl_chests:ender_chest", { local meta = minetest.get_meta(pos) meta:set_string("formspec", "size[9,8.75]".. - mcl_vars.inventory_header.. "background[-0.19,-0.25;9.41,10.48;mcl_chests_inventory_chest.png]".. "image[0,-0.2;5,0.75;mcl_chests_fnt_ender_chest.png]".. "list[current_player;enderchest;0,0.5;9,3;]".. @@ -713,7 +709,6 @@ for color, desc in pairs(boxtypes) do local meta = minetest.get_meta(pos) meta:set_string("formspec", "size[9,8.75]".. - mcl_vars.inventory_header.. "background[-0.19,-0.25;9.41,10.48;mcl_chests_inventory_chest.png]".. "image[0,-0.2;5,0.75;mcl_chests_fnt_shulker_box.png]".. "list[current_name;main;0,0.5;9,3;]".. diff --git a/mods/ITEMS/mcl_crafting_table/depends.txt b/mods/ITEMS/mcl_crafting_table/depends.txt index e3b8528c..3d96266d 100644 --- a/mods/ITEMS/mcl_crafting_table/depends.txt +++ b/mods/ITEMS/mcl_crafting_table/depends.txt @@ -1,2 +1 @@ -mcl_init mcl_sounds diff --git a/mods/ITEMS/mcl_crafting_table/init.lua b/mods/ITEMS/mcl_crafting_table/init.lua index 37dc74a2..72ea0a8c 100644 --- a/mods/ITEMS/mcl_crafting_table/init.lua +++ b/mods/ITEMS/mcl_crafting_table/init.lua @@ -14,7 +14,6 @@ minetest.register_node("mcl_crafting_table:crafting_table", { local form = "size[9,8.75]".. "background[-0.19,-0.25;9.41,9.49;crafting_formspec_bg.png^crafting_inventory_workbench.png]".. - mcl_vars.inventory_header.. "list[current_player;main;0,4.5;9,3;9]".. "list[current_player;main;0,7.74;9,1;]".. "list[current_player;craft;1.75,0.5;3,3;]".. diff --git a/mods/ITEMS/mcl_furnaces/depends.txt b/mods/ITEMS/mcl_furnaces/depends.txt index 441fdfde..017e4fb6 100644 --- a/mods/ITEMS/mcl_furnaces/depends.txt +++ b/mods/ITEMS/mcl_furnaces/depends.txt @@ -1,4 +1,3 @@ -mcl_init mcl_core mcl_sounds mcl_craftguide diff --git a/mods/ITEMS/mcl_furnaces/init.lua b/mods/ITEMS/mcl_furnaces/init.lua index 9a8804fd..a81a86b3 100644 --- a/mods/ITEMS/mcl_furnaces/init.lua +++ b/mods/ITEMS/mcl_furnaces/init.lua @@ -6,7 +6,6 @@ local function active_formspec(fuel_percent, item_percent) return "size[9,8.75]".. "background[-0.19,-0.25;9.41,9.49;crafting_inventory_furnace.png]".. - mcl_vars.inventory_header.. "list[current_player;main;0,4.5;9,3;9]".. "list[current_player;main;0,7.74;9,1;]".. "list[current_name;src;2.75,0.5;1,1;]".. @@ -29,7 +28,6 @@ end local inactive_formspec = "size[9,8.75]".. "background[-0.19,-0.25;9.41,9.49;crafting_inventory_furnace.png]".. - mcl_vars.inventory_header.. "list[current_player;main;0,4.5;9,3;9]".. "list[current_player;main;0,7.74;9,1;]".. "list[current_name;src;2.75,0.5;1,1;]".. diff --git a/mods/ITEMS/mcl_hoppers/init.lua b/mods/ITEMS/mcl_hoppers/init.lua index c7f7b0b9..cced02c6 100644 --- a/mods/ITEMS/mcl_hoppers/init.lua +++ b/mods/ITEMS/mcl_hoppers/init.lua @@ -6,7 +6,6 @@ local chest = minetest.get_content_id("mcl_chests:chest") local mcl_hoppers_formspec = "size[9,7]".. "background[-0.19,-0.25;9.41,10.48;mcl_hoppers_inventory.png]".. - mcl_vars.inventory_header.. "list[current_name;main;2,0.5;5,1;]".. "list[current_player;main;0,2.5;9,3;9]".. "list[current_player;main;0,5.74;9,1;]".. From 3ca01c31498eef534c21c1b5b941c10b0256c732 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Wed, 6 Mar 2019 06:38:25 +0100 Subject: [PATCH 012/737] Use formspec prepend for real --- mods/CORE/mcl_formspec_prepend/init.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/CORE/mcl_formspec_prepend/init.lua b/mods/CORE/mcl_formspec_prepend/init.lua index 8babbd72..ac5e48de 100644 --- a/mods/CORE/mcl_formspec_prepend/init.lua +++ b/mods/CORE/mcl_formspec_prepend/init.lua @@ -1,6 +1,6 @@ minetest.register_on_joinplayer(function(player) - local bg = ""--"bgcolor[#080808BB;true]" + local bg = "bgcolor[#080808BB;true]" local slots = "listcolors[#9990;#FFF7;#FFF0;#000;#FFF]" local prepend = bg .. slots --- player:set_formspec_prepend(prepend) + player:set_formspec_prepend(prepend) end) From 0b9c0d177c5d78a66f2d33b2c84a7babdc9f6cc2 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Wed, 6 Mar 2019 07:15:53 +0100 Subject: [PATCH 013/737] Fix bug in mcl_player.player.get_preview --- mods/PLAYER/mcl_player/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/PLAYER/mcl_player/init.lua b/mods/PLAYER/mcl_player/init.lua index bd56ad80..a766eed2 100644 --- a/mods/PLAYER/mcl_player/init.lua +++ b/mods/PLAYER/mcl_player/init.lua @@ -81,7 +81,7 @@ end function mcl_player.player_get_preview(player) local preview = player:get_meta():get_string("mcl_player:preview") - if not preview then + if preview == nil or preview == "" then return "player.png" else return preview From 581f0fa2dda04692dab9f7c32ba6f1006e7495eb Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Wed, 6 Mar 2019 07:32:13 +0100 Subject: [PATCH 014/737] Move mcl_formspec_prepend --- mods/{CORE => HUD}/mcl_formspec_prepend/init.lua | 0 mods/{CORE => HUD}/mcl_formspec_prepend/mod.conf | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename mods/{CORE => HUD}/mcl_formspec_prepend/init.lua (100%) rename mods/{CORE => HUD}/mcl_formspec_prepend/mod.conf (100%) diff --git a/mods/CORE/mcl_formspec_prepend/init.lua b/mods/HUD/mcl_formspec_prepend/init.lua similarity index 100% rename from mods/CORE/mcl_formspec_prepend/init.lua rename to mods/HUD/mcl_formspec_prepend/init.lua diff --git a/mods/CORE/mcl_formspec_prepend/mod.conf b/mods/HUD/mcl_formspec_prepend/mod.conf similarity index 100% rename from mods/CORE/mcl_formspec_prepend/mod.conf rename to mods/HUD/mcl_formspec_prepend/mod.conf From cfac33a94f558b9b2a9367108f2f877bb7d0b21d Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Wed, 6 Mar 2019 07:32:22 +0100 Subject: [PATCH 015/737] Fix settable hand --- mods/PLAYER/mcl_player_init/init.lua | 4 ++++ mods/PLAYER/mcl_player_init/mod.conf | 2 ++ 2 files changed, 6 insertions(+) create mode 100644 mods/PLAYER/mcl_player_init/init.lua create mode 100644 mods/PLAYER/mcl_player_init/mod.conf diff --git a/mods/PLAYER/mcl_player_init/init.lua b/mods/PLAYER/mcl_player_init/init.lua new file mode 100644 index 00000000..52967a44 --- /dev/null +++ b/mods/PLAYER/mcl_player_init/init.lua @@ -0,0 +1,4 @@ +minetest.register_on_joinplayer(function(player) + -- Settable hand + player:get_inventory():set_size("hand", 1) +end) diff --git a/mods/PLAYER/mcl_player_init/mod.conf b/mods/PLAYER/mcl_player_init/mod.conf new file mode 100644 index 00000000..8d559910 --- /dev/null +++ b/mods/PLAYER/mcl_player_init/mod.conf @@ -0,0 +1,2 @@ +name = mcl_player_init +description = Initialize player gameplay stuff that are neither model nor HUD-related From 05e3a616b4d77cb183b5eae959edfdcf07030223 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Wed, 6 Mar 2019 07:49:14 +0100 Subject: [PATCH 016/737] Fix broken skin init --- mods/PLAYER/mcl_skins/init.lua | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/mods/PLAYER/mcl_skins/init.lua b/mods/PLAYER/mcl_skins/init.lua index e4b35435..25dd17ac 100644 --- a/mods/PLAYER/mcl_skins/init.lua +++ b/mods/PLAYER/mcl_skins/init.lua @@ -137,19 +137,18 @@ minetest.register_on_joinplayer(function(player) local skin_id = player:get_meta():get_string("mcl_skins:skin_id") local set_skin -- do we already have a skin in player attributes? - if skin_id then + if skin_id ~= nil and skin_id ~= "" then set_skin = tonumber(skin_id) -- otherwise use random skin if not set - else + end + if not set_skin then set_skin = math.random(0, mcl_skins.skin_count) end - if set_skin then - local ok = mcl_skins.set_player_skin(player, set_skin) - if not ok then - set_skin = math.random(0, mcl_skins.skin_count) - minetest.log("warning", "[mcl_skins] Player skin for "..name.." not found, falling back to skin #"..set_skin) - mcl_skins.set_player_skin(player, set_skin) - end + local ok = mcl_skins.set_player_skin(player, set_skin) + if not ok then + set_skin = math.random(0, mcl_skins.skin_count) + minetest.log("warning", "[mcl_skins] Player skin for "..name.." not found, falling back to skin #"..set_skin) + mcl_skins.set_player_skin(player, set_skin) end end) From 5e5dcfaaa32267ec4ea6747882064723e3d28d06 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Wed, 6 Mar 2019 08:40:04 +0100 Subject: [PATCH 017/737] Tweak scrollbar in creative inventory --- mods/HUD/mcl_inventory/creative.lua | 8 ++++---- .../textures/crafting_creative_down.png | Bin 621 -> 3464 bytes .../textures/crafting_creative_up.png | Bin 607 -> 3469 bytes .../crafting_inventory_creative_scroll.png | Bin 2336 -> 0 bytes .../mcl_inventory/textures/crafting_slider.png | Bin 70 -> 0 bytes .../textures/mcl_inventory_slider.png | Bin 0 -> 881 bytes .../textures/mcl_inventory_slider_bg.png | Bin 0 -> 1097 bytes 7 files changed, 4 insertions(+), 4 deletions(-) delete mode 100644 mods/HUD/mcl_inventory/textures/crafting_inventory_creative_scroll.png delete mode 100644 mods/HUD/mcl_inventory/textures/crafting_slider.png create mode 100644 mods/HUD/mcl_inventory/textures/mcl_inventory_slider.png create mode 100644 mods/HUD/mcl_inventory/textures/mcl_inventory_slider_bg.png diff --git a/mods/HUD/mcl_inventory/creative.lua b/mods/HUD/mcl_inventory/creative.lua index 9bcf52bd..e7d09ce0 100644 --- a/mods/HUD/mcl_inventory/creative.lua +++ b/mods/HUD/mcl_inventory/creative.lua @@ -336,13 +336,13 @@ mcl_inventory.set_creative_formspec = function(player, start_i, pagenum, inv_siz "listring[detached:"..playername.."_armor;armor]".. "listring[current_player;main]" else - inv_bg = inv_bg .. "^crafting_inventory_creative_scroll.png" -- Creative inventory slots main_list = "list[detached:creative_"..playername..";main;0,1.75;9,5;"..tostring(start_i).."]" .. -- ... and scroll bar - "image_button[9.02,1.76;"..tostring(arrow_height)..",0.6;crafting_creative_up.png;creative_prev;]".. - "image[9.033," .. tostring(slider_pos) .. ";0.78,"..tostring(slider_height) .. ";crafting_slider.png]".. - "image_button[9.02,6.15;"..tostring(arrow_height)..",0.6;crafting_creative_down.png;creative_next;]" + "image[9.033,2.230;0.78,4.525;mcl_inventory_slider_bg.png]".. + "image[9.033," .. tostring(slider_pos) .. ";0.78,"..tostring(slider_height) .. ";mcl_inventory_slider.png]".. + "image_button[9.015,1.77;0.85,0.6;crafting_creative_up.png;creative_prev;]".. + "image_button[9.015,6.15;0.85,0.6;crafting_creative_down.png;creative_next;]" end local tab_icon = { diff --git a/mods/HUD/mcl_inventory/textures/crafting_creative_down.png b/mods/HUD/mcl_inventory/textures/crafting_creative_down.png index 5a45c17322d465b26eebf1d6678ec06a1e3ffade..4f100aae05a5491129efe1600d9c8e5c9303e29d 100644 GIT binary patch delta 3285 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 delta 411 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 I#FWqk0J*Zb00000 diff --git a/mods/HUD/mcl_inventory/textures/crafting_inventory_creative_scroll.png b/mods/HUD/mcl_inventory/textures/crafting_inventory_creative_scroll.png deleted file mode 100644 index fd7dcad35717b9602913512a81eedbb4a52d5789..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2336 zcmeAS@N?(olHy`uVBq!ia0y~yVBW~Uz-+|9%)r3Vb90+40|Ud=0G|+71_lO2MMWhg zC1qu06%`d#RaG@LHFb4$4Gj%VO-(H=Ep2UW9UUEAU0pprJ$-$B0|Ns?Lqj7YBV%J@ z6B83tQ&TfDGjnru3kwTNOG_&&D{E_O8yg#2TU$FjJ9~S32L}g7M@J_oCue787Z;b8 zFJHcT_3HKO*KgjudHeS5yLa#2zkmPX!-tO_KYsf3>GS8$U%q_#`t|F#Z{NOu|Ni60 zkDot({`&Rn_wV0-{`~p-_wT=d|Nj5~f8oM~BS(&8WMmW<7rVQ=FJ8PDLe2$)|Ns9l zxxBKCfq}ubB*-tAfnxCgKf}K@&WsEU>{~ru978G?-`-_x&kdD0{_y|qbl-r)7$*&r z`-}STt8+9+IutHsxV_adRyCk|+0E=X-z(%6KD$;u?MLPLGm+_j6gvgC0ShMn`n>*% z{k~t@XZ<<&L_Yqne$@_B{_uy-Y*ZzGehBz!{{QFd^*_(+{|Z={$8Y-o(^sPe$)$Dh65y*li?j{nEI*T3%@X*qD~pYLD!wmn~}=00>&3Z5QDq-{awbROz&(M zA(kRJmzV3n-Xxgg;mXVB9q3~f0b5w{o-g6}A+ET)m_d-lSU!)zT5L}_`-bGki7QXd zWA!oHd41vAh=hZEwn32xQYK5w-U68e_ASiP2W&@ASZW;y`R%*?7Flkeo-40(cQ5xb ztF+tsf8kqD2);Ov7K9+*fIaMgis=nFtPk*VZAga4Bq*%!XtTYED0t2Z5=M$-5pJmM zAMVM5J=Mj!XBRU@7#?Mc4uz%xP-uX#!^Q{OkHI7N!1H$vvfL$xMxi%1x1Cfox7s4h z&3$8|yH@s$oTBN@yFas3gzE17|opzWZyQ(f>S9-kA~O>&&Y)1Okh8Q z(ibe$!AZv2KjApjz1^t3H`jpLcqfSE&lAoMYa~DsZ*l)bNa}ehwb^%GTqx7gNjNUI za!ulQZi_595rJF+ z!YHnR9RWHT-~KW}ayFW{7|0M1PDoj` zDV=e$Z(hNRt#2YWB=?70Gr0Lg4>dACZpaJhnX|a)jQZ@HqW{k4Z*ELDu6J)!b(Y=D zl*zy4!D$+#ihP&CT|}(caAQqA0A z%X}LGL4wx-QWCH2qqboW2WwC`+}n>_CQ>gZad;P=VL+h|!pJdT0Lq#TAYXrpD$@aF z&HU6&CwU<$7FUWu_I{(_g2uCbt#xj8cK=sIXC&D?-5AHTrC|D>y8oZQ@3eWa{C9|5 s^&hk8?0QlNj998TDii$p3!%f$c}5=0}j3p00i_>zopr0PjRhKmY&$ diff --git a/mods/HUD/mcl_inventory/textures/crafting_slider.png b/mods/HUD/mcl_inventory/textures/crafting_slider.png deleted file mode 100644 index 2e41f099b4ebf6b395a072c9c219182c1e7de3f0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 70 zcmeAS@N?(olHy`uVBq!ia0y~yU|mdKI;Vst0HgyB)c^nh diff --git a/mods/HUD/mcl_inventory/textures/mcl_inventory_slider.png b/mods/HUD/mcl_inventory/textures/mcl_inventory_slider.png new file mode 100644 index 0000000000000000000000000000000000000000..9808b3731c8f1dea70e73e54ee37f0b4c8f9a949 GIT binary patch literal 881 zcmeAS@N?(olHy`uVBq!ia0y~yVDMsKU=ZM7V_;y|c=Y811_q|HRUr{2L5bxG1x5L3 znK`KnC6xuK3aJ&DX$%Y%x86<-?7O4D({|s|wZ9>^=WHPd%S!VXAAdV%EHmC6yYjAA zt)_;9Omefm^P!(_UvtCq>D52C^Pe{SmXK6( z)W4o>x4o`4MqXGa_vc3){%hN0@3*}$+tcN9zIe~q8fl?@Pqy55zWF)pSElvvhuhBP zJzoF*q(INQ4eByKL?(4yTP}W(Yl(-e{_3* zJfLO9cBi_|i_<3WJMnbcvGrFns_T9w)c98l?>5}kUl_N0wWe~A91o=&KRRfn z`kr3V=5DwxlzUZjH}4Uv47nA$0g7&0*i~PJWM0_$%Z=CDr^aa7u`|7?Cu4fJx3j9A z^=js=sA3SD#+Jooct3mL)9pI-y)yHx9Vc@h<1oH=<-@!W{;zT~dS>o&F`nVzFP<>Z zvNzSIXmhJr!-X4$S4HoK9`5}bs20KK7@Js@v*Fldqe2baB5$$u#(Bp?9+jG$_+{20 zaBzE)p^Aclac7X)6J}|_M=u@(Z!DU2gq>r8Ryh}Q4vYH18C)xxiw*8Tc1tN4~@n5u9#g-&-&u@E;(zYzoz2&Oy8m*K zx66L8e_?%2hJv@(555a*ViymV{)%K^VBjq9h%9Dc&{GCs#)_r(Wef}q>?NMQuI!JQ z+1RCY&lQEOW?*12_jGX#i8%cBf}tRT0uRdu{cYNEV#nm#8(f@L?Jj<6uu>&b?q7$H ms@D{az(oQO%H?AjL;Ve=iO)U=PGVqSVDNPHb6Mw<&;$T|{gMX& literal 0 HcmV?d00001 diff --git a/mods/HUD/mcl_inventory/textures/mcl_inventory_slider_bg.png b/mods/HUD/mcl_inventory/textures/mcl_inventory_slider_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..32e6c8eac46e103083f20726c0b9700e7d4e60c6 GIT binary patch literal 1097 zcmeAS@N?(olHy`uVBq!ia0y~yVDMsKU=UzoW?*1&e*NV#0|WDls*s41pu}>8f};Gi z%$!t(lFEWqh1817GzNx>TWhD~7Cq76Y5QN?W!t2x$Z}jTKD4^o_TRpQWt;E5oEegK ze2K0OcjFh1IR^iJR=4dhn3%yAsJnd9rB>}}5jQTLyk2{E(z+e*e|Od0ySUj-rZSdi zs>7+jGmdR6fAKZB;ppP^=YJ)<{c-ZRpsmb%?`vmP*T4Bxs8aL#rA>R$vC2RG7SE5r z-C=t!e*R)b$=HYf79RvAaev>FCb-6-%VNo!>ZXgTlC{%Xs;B(1D}Q*g)^pyC-*;l` zbe>p>KJ+@Su=mM}7oPE7J}o%5{>qCpf4(p&{yA}L`JJ;jKhJsGcP`m!S&)U}Uyq0H z4sKAIx~W~&}oLI5P zhjN`eS6@tFo+szfvb1rQ!`c3=7v^n$^HVDI%pJ~YJ_T+PA6K@PpSqvP?_Rv_l4{gR zma1KhpI2q-Bu|Vkk6>gxJ3097&%3%d8|q@X*EGz0XOhnHB7ARb$kP5>lg>saEDz^l zH;T09o1k=NZ3GV|M+|2>i|VePn;jF5^Vs!G-R!bX!C}=MO`i>dZ&)6m$y)mjS=YL|;;G?8Eac-=4f!eIW0Z#%rN}tQL}OI_FG2vNA9* z@CW#WxVpQ$FJ8QOE*Sj(|6ej@$4&+Y2F?PH$YKTtJ!KGPtXOJa#=yY9UgGKN%Kn&{ zja|xMZHZM80|SGkr;B5V#`)xg041In2{wnRhKUBNvM#J Date: Wed, 6 Mar 2019 23:17:06 +0100 Subject: [PATCH 018/737] Restrict v6 generation of ice spikes to snow block --- mods/MAPGEN/mcl_mapgen_core/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/MAPGEN/mcl_mapgen_core/init.lua b/mods/MAPGEN/mcl_mapgen_core/init.lua index 65dd895c..5bb28479 100644 --- a/mods/MAPGEN/mcl_mapgen_core/init.lua +++ b/mods/MAPGEN/mcl_mapgen_core/init.lua @@ -1251,7 +1251,7 @@ local function generate_structures(minp, maxp, seed, biomemap) if spike < 3 then -- Check surface local floor = {x=p.x+4, y=p.y-1, z=p.z+4} - local surface = minetest.find_nodes_in_area({x=p.x+1,y=p.y-1,z=p.z+1}, floor, {"mcl_core:snowblock", "mcl_core:dirt_with_grass_snow"}) + local surface = minetest.find_nodes_in_area({x=p.x+1,y=p.y-1,z=p.z+1}, floor, {"mcl_core:snowblock"}) -- Check for collision with spruce local spruce_collisions = minetest.find_nodes_in_area({x=p.x+1,y=p.y+2,z=p.z+1}, {x=p.x+4, y=p.y+6, z=p.z+4}, {"mcl_core:sprucetree", "mcl_core:spruceleaves"}) From 29449eb8d4d878dad3d5d5bedef228f918b3dd89 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Wed, 6 Mar 2019 05:14:31 +0100 Subject: [PATCH 019/737] Remove console spam from mcl_loot --- mods/CORE/mcl_loot/init.lua | 3 --- 1 file changed, 3 deletions(-) diff --git a/mods/CORE/mcl_loot/init.lua b/mods/CORE/mcl_loot/init.lua index 3b52e365..35c72539 100644 --- a/mods/CORE/mcl_loot/init.lua +++ b/mods/CORE/mcl_loot/init.lua @@ -114,9 +114,6 @@ local function get_random_slots(max_slot) table.insert(slots_out, slots[r]) table.remove(slots, r) end - for s=1, #slots_out do - print(slots_out[s]) - end return slots_out end From 520df43679d338d9846a65b4558dd1f27131a037 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Wed, 6 Mar 2019 06:25:03 +0100 Subject: [PATCH 020/737] Fix mcl_meshhand race condition --- mods/PLAYER/mcl_meshhand/init.lua | 5 ----- 1 file changed, 5 deletions(-) diff --git a/mods/PLAYER/mcl_meshhand/init.lua b/mods/PLAYER/mcl_meshhand/init.lua index 1e318a5b..87b9e692 100644 --- a/mods/PLAYER/mcl_meshhand/init.lua +++ b/mods/PLAYER/mcl_meshhand/init.lua @@ -17,11 +17,6 @@ if has_mcl_skins == true then }) end --change the player's hand to their skin - minetest.register_on_joinplayer(function(player) - local skin = mcl_skins.skins[player:get_player_name()] - player:get_inventory():set_stack("hand", 1, "mcl_meshhand:"..skin) - end) - mcl_skins.register_on_set_skin(function(player, skin) local name = player:get_player_name() player:get_inventory():set_stack("hand", 1, "mcl_meshhand:"..skin) From 235c55779889c2aa9f6388df7d749561fdd4c761 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Thu, 7 Mar 2019 02:47:56 +0100 Subject: [PATCH 021/737] Version 0.48.1 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 2a70ceef..d08d9016 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ An unofficial Minecraft-like game for Minetest. Forked from MineClone by daredevils. Developed by Wuzzy and contributors. Not developed or endorsed by Mojang AB. -Version: 0.48.0 +Version: 0.48.1 ### Gameplay You start in a randomly-generated world made entirely of cubes. You can explore From 66c6b373a5144cf8e5dec5cb55ce77e9eb37e9d2 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Thu, 7 Mar 2019 03:53:06 +0100 Subject: [PATCH 022/737] Make many entities non-pointable --- mods/ENTITIES/drippingwater/init.lua | 1 + mods/ENTITIES/mcl_item_entity/init.lua | 1 + mods/ITEMS/mcl_banners/init.lua | 2 +- mods/ITEMS/mcl_end/eye_of_ender.lua | 1 + mods/ITEMS/mcl_itemframes/init.lua | 2 +- mods/ITEMS/mcl_mobspawners/init.lua | 4 ++-- mods/ITEMS/mcl_signs/init.lua | 2 +- mods/ITEMS/mcl_throwing/init.lua | 3 +++ mods/ITEMS/minetest-3d_armor/3d_armor_stand/init.lua | 1 + 9 files changed, 12 insertions(+), 5 deletions(-) diff --git a/mods/ENTITIES/drippingwater/init.lua b/mods/ENTITIES/drippingwater/init.lua index 9aad3eb8..efa37fd2 100644 --- a/mods/ENTITIES/drippingwater/init.lua +++ b/mods/ENTITIES/drippingwater/init.lua @@ -13,6 +13,7 @@ minetest.register_entity("drippingwater:drop_water", { physical = true, collide_with_objects = false, collisionbox = {0,0,0,0,0,0}, + pointable = false, visual = "cube", visual_size = {x=0.05, y=0.1}, textures = {water_tex, water_tex, water_tex, water_tex, water_tex, water_tex}, diff --git a/mods/ENTITIES/mcl_item_entity/init.lua b/mods/ENTITIES/mcl_item_entity/init.lua index f0184ea0..54a568f9 100644 --- a/mods/ENTITIES/mcl_item_entity/init.lua +++ b/mods/ENTITIES/mcl_item_entity/init.lua @@ -306,6 +306,7 @@ core.register_entity(":__builtin:item", { physical = true, collide_with_objects = false, collisionbox = {-0.3, -0.3, -0.3, 0.3, 0.3, 0.3}, + pointable = false, visual = "wielditem", visual_size = {x = 0.4, y = 0.4}, textures = {""}, diff --git a/mods/ITEMS/mcl_banners/init.lua b/mods/ITEMS/mcl_banners/init.lua index a04d88ed..d1df29d0 100644 --- a/mods/ITEMS/mcl_banners/init.lua +++ b/mods/ITEMS/mcl_banners/init.lua @@ -468,7 +468,7 @@ local entity_standing = { mesh = "amc_banner.b3d", visual_size = { x=2.499, y=2.499 }, textures = make_banner_texture(), - collisionbox = { 0, 0, 0, 0, 0, 0 }, + pointable = false, _base_color = nil, -- base color of banner _layers = nil, -- table of layers painted over the base color. diff --git a/mods/ITEMS/mcl_end/eye_of_ender.lua b/mods/ITEMS/mcl_end/eye_of_ender.lua index e15beb50..69edbde3 100644 --- a/mods/ITEMS/mcl_end/eye_of_ender.lua +++ b/mods/ITEMS/mcl_end/eye_of_ender.lua @@ -5,6 +5,7 @@ minetest.register_entity("mcl_end:ender_eye", { textures = {"mcl_end_ender_eye.png"}, visual_size = {x=1.5, y=1.5}, collisionbox = {0,0,0,0,0,0}, + pointable = false, -- Save and restore age get_staticdata = function(self) diff --git a/mods/ITEMS/mcl_itemframes/init.lua b/mods/ITEMS/mcl_itemframes/init.lua index 52ceb6fc..104379be 100644 --- a/mods/ITEMS/mcl_itemframes/init.lua +++ b/mods/ITEMS/mcl_itemframes/init.lua @@ -2,8 +2,8 @@ minetest.register_entity("mcl_itemframes:item",{ hp_max = 1, visual = "wielditem", visual_size = {x=0.3,y=0.3}, - collisionbox = {0,0,0,0,0,0}, physical = false, + pointable = false, textures = { "empty.png" }, _texture = "empty.png", diff --git a/mods/ITEMS/mcl_mobspawners/init.lua b/mods/ITEMS/mcl_mobspawners/init.lua index dc74b23f..61b72af3 100644 --- a/mods/ITEMS/mcl_mobspawners/init.lua +++ b/mods/ITEMS/mcl_mobspawners/init.lua @@ -318,8 +318,8 @@ minetest.register_node("mcl_mobspawners:spawner", { local doll_def = { hp_max = 1, - physical = true, - collisionbox = {0,0,0,0,0,0}, + physical = false, + pointable = false, visual = "mesh", makes_footstep_sound = false, timer = 0, diff --git a/mods/ITEMS/mcl_signs/init.lua b/mods/ITEMS/mcl_signs/init.lua index 280d02b5..67fdf43e 100644 --- a/mods/ITEMS/mcl_signs/init.lua +++ b/mods/ITEMS/mcl_signs/init.lua @@ -429,7 +429,7 @@ minetest.register_node("mcl_signs:standing_sign67_5", ssign67) -- FIXME: Prevent entity destruction by /clearobjects minetest.register_entity("mcl_signs:text", { - collisionbox = { 0, 0, 0, 0, 0, 0 }, + pointable = false, visual = "upright_sprite", textures = {}, physical = false, diff --git a/mods/ITEMS/mcl_throwing/init.lua b/mods/ITEMS/mcl_throwing/init.lua index c2402d32..f8c90dcf 100644 --- a/mods/ITEMS/mcl_throwing/init.lua +++ b/mods/ITEMS/mcl_throwing/init.lua @@ -78,6 +78,7 @@ local snowball_ENTITY={ textures = {"mcl_throwing_snowball.png"}, visual_size = {x=0.5, y=0.5}, collisionbox = {0,0,0,0,0,0}, + pointable = false, get_staticdata = get_staticdata, on_activate = on_activate, @@ -90,6 +91,7 @@ local egg_ENTITY={ textures = {"mcl_throwing_egg.png"}, visual_size = {x=0.45, y=0.45}, collisionbox = {0,0,0,0,0,0}, + pointable = false, get_staticdata = get_staticdata, on_activate = on_activate, @@ -103,6 +105,7 @@ local pearl_ENTITY={ textures = {"mcl_throwing_ender_pearl.png"}, visual_size = {x=0.9, y=0.9}, collisionbox = {0,0,0,0,0,0}, + pointable = false, get_staticdata = get_staticdata, on_activate = on_activate, diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor_stand/init.lua b/mods/ITEMS/minetest-3d_armor/3d_armor_stand/init.lua index c3571a6b..b23d069c 100644 --- a/mods/ITEMS/minetest-3d_armor/3d_armor_stand/init.lua +++ b/mods/ITEMS/minetest-3d_armor/3d_armor_stand/init.lua @@ -238,6 +238,7 @@ minetest.register_entity("3d_armor_stand:armor_entity", { mesh = "3d_armor_entity.obj", visual_size = {x=1, y=1}, collisionbox = {-0.1,-0.4,-0.1, 0.1,1.3,0.1}, + pointable = false, textures = {"3d_armor_trans.png"}, pos = nil, timer = 0, From dcba7e2325986b785feef0ce5b0a5d21baef03f6 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Thu, 7 Mar 2019 04:04:21 +0100 Subject: [PATCH 023/737] Del. unneeded doc_identifier support 4 armorstand --- mods/ITEMS/minetest-3d_armor/3d_armor_stand/depends.txt | 1 - mods/ITEMS/minetest-3d_armor/3d_armor_stand/init.lua | 4 ---- 2 files changed, 5 deletions(-) diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor_stand/depends.txt b/mods/ITEMS/minetest-3d_armor/3d_armor_stand/depends.txt index 3998650d..f3ae0216 100644 --- a/mods/ITEMS/minetest-3d_armor/3d_armor_stand/depends.txt +++ b/mods/ITEMS/minetest-3d_armor/3d_armor_stand/depends.txt @@ -2,5 +2,4 @@ mcl_core mcl_sounds mcl_stairs -doc_identifier? screwdriver? diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor_stand/init.lua b/mods/ITEMS/minetest-3d_armor/3d_armor_stand/init.lua index b23d069c..cd378d6d 100644 --- a/mods/ITEMS/minetest-3d_armor/3d_armor_stand/init.lua +++ b/mods/ITEMS/minetest-3d_armor/3d_armor_stand/init.lua @@ -280,10 +280,6 @@ minetest.register_lbm({ end, }) -if minetest.get_modpath("doc_identifier") ~= nil then - doc.sub.identifier.register_object("3d_armor_stand:armor_entity", "nodes", "3d_armor_stand:armor_stand") -end - minetest.register_craft({ output = "3d_armor_stand:armor_stand", recipe = { From 720bc6a56f2165522bed9f0f9f67b8471b634e44 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Thu, 7 Mar 2019 12:41:59 +0100 Subject: [PATCH 024/737] Revert "Move mcl_formspec_prepend" This reverts commit 581f0fa2dda04692dab9f7c32ba6f1006e7495eb. --- mods/{HUD => CORE}/mcl_formspec_prepend/init.lua | 0 mods/{HUD => CORE}/mcl_formspec_prepend/mod.conf | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename mods/{HUD => CORE}/mcl_formspec_prepend/init.lua (100%) rename mods/{HUD => CORE}/mcl_formspec_prepend/mod.conf (100%) diff --git a/mods/HUD/mcl_formspec_prepend/init.lua b/mods/CORE/mcl_formspec_prepend/init.lua similarity index 100% rename from mods/HUD/mcl_formspec_prepend/init.lua rename to mods/CORE/mcl_formspec_prepend/init.lua diff --git a/mods/HUD/mcl_formspec_prepend/mod.conf b/mods/CORE/mcl_formspec_prepend/mod.conf similarity index 100% rename from mods/HUD/mcl_formspec_prepend/mod.conf rename to mods/CORE/mcl_formspec_prepend/mod.conf From 26c915059174913834c4a866ede68674d9785b58 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Thu, 7 Mar 2019 12:42:06 +0100 Subject: [PATCH 025/737] Revert "Use formspec prepend for real" This reverts commit 3ca01c31498eef534c21c1b5b941c10b0256c732. --- mods/CORE/mcl_formspec_prepend/init.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/CORE/mcl_formspec_prepend/init.lua b/mods/CORE/mcl_formspec_prepend/init.lua index ac5e48de..8babbd72 100644 --- a/mods/CORE/mcl_formspec_prepend/init.lua +++ b/mods/CORE/mcl_formspec_prepend/init.lua @@ -1,6 +1,6 @@ minetest.register_on_joinplayer(function(player) - local bg = "bgcolor[#080808BB;true]" + local bg = ""--"bgcolor[#080808BB;true]" local slots = "listcolors[#9990;#FFF7;#FFF0;#000;#FFF]" local prepend = bg .. slots - player:set_formspec_prepend(prepend) +-- player:set_formspec_prepend(prepend) end) From a84f7935fa01eea7531e3d233bd5acae7e683930 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Thu, 7 Mar 2019 12:42:08 +0100 Subject: [PATCH 026/737] Revert "Utilize formspec prepend" This reverts commit ea0c2e9568dcb9d63f777ac62307af65c9a47603. --- mods/CORE/mcl_formspec_prepend/init.lua | 6 ------ mods/CORE/mcl_formspec_prepend/mod.conf | 2 -- mods/CORE/mcl_init/init.lua | 7 +++++++ mods/ENTITIES/mobs_mc/villager.lua | 1 + mods/HELP/mcl_craftguide/init.lua | 2 ++ mods/HUD/mcl_inventory/creative.lua | 1 + mods/HUD/mcl_inventory/init.lua | 1 + mods/ITEMS/REDSTONE/mcl_dispensers/depends.txt | 1 + mods/ITEMS/REDSTONE/mcl_dispensers/init.lua | 1 + mods/ITEMS/REDSTONE/mcl_droppers/depends.txt | 1 + mods/ITEMS/REDSTONE/mcl_droppers/init.lua | 1 + mods/ITEMS/mcl_anvils/depends.txt | 1 + mods/ITEMS/mcl_anvils/init.lua | 1 + mods/ITEMS/mcl_beds/functions.lua | 2 +- mods/ITEMS/mcl_chests/depends.txt | 1 + mods/ITEMS/mcl_chests/init.lua | 5 +++++ mods/ITEMS/mcl_crafting_table/depends.txt | 1 + mods/ITEMS/mcl_crafting_table/init.lua | 1 + mods/ITEMS/mcl_furnaces/depends.txt | 1 + mods/ITEMS/mcl_furnaces/init.lua | 2 ++ mods/ITEMS/mcl_hoppers/init.lua | 1 + 21 files changed, 31 insertions(+), 9 deletions(-) delete mode 100644 mods/CORE/mcl_formspec_prepend/init.lua delete mode 100644 mods/CORE/mcl_formspec_prepend/mod.conf diff --git a/mods/CORE/mcl_formspec_prepend/init.lua b/mods/CORE/mcl_formspec_prepend/init.lua deleted file mode 100644 index 8babbd72..00000000 --- a/mods/CORE/mcl_formspec_prepend/init.lua +++ /dev/null @@ -1,6 +0,0 @@ -minetest.register_on_joinplayer(function(player) - local bg = ""--"bgcolor[#080808BB;true]" - local slots = "listcolors[#9990;#FFF7;#FFF0;#000;#FFF]" - local prepend = bg .. slots --- player:set_formspec_prepend(prepend) -end) diff --git a/mods/CORE/mcl_formspec_prepend/mod.conf b/mods/CORE/mcl_formspec_prepend/mod.conf deleted file mode 100644 index b724158a..00000000 --- a/mods/CORE/mcl_formspec_prepend/mod.conf +++ /dev/null @@ -1,2 +0,0 @@ -name = mcl_formspec_prepend -description = Set formspec prepend string for all players diff --git a/mods/CORE/mcl_init/init.lua b/mods/CORE/mcl_init/init.lua index fda683e0..de50bf00 100644 --- a/mods/CORE/mcl_init/init.lua +++ b/mods/CORE/mcl_init/init.lua @@ -1,6 +1,13 @@ -- Some global variables (don't overwrite them!) mcl_vars = {} +--- GUI / inventory menu colors +mcl_vars.gui_slots = "listcolors[#9990;#FFF7;#FFF0;#000;#FFF]" +mcl_vars.gui_bg = "bgcolor[#080808BB;true]" +mcl_vars.gui_bg_img = "" + +mcl_vars.inventory_header = mcl_vars.gui_slots .. mcl_vars.gui_bg + -- Mapgen variables local mg_name = minetest.get_mapgen_setting("mg_name") local minecraft_height_limit = 256 diff --git a/mods/ENTITIES/mobs_mc/villager.lua b/mods/ENTITIES/mobs_mc/villager.lua index d96dfd16..e2d91310 100644 --- a/mods/ENTITIES/mobs_mc/villager.lua +++ b/mods/ENTITIES/mobs_mc/villager.lua @@ -491,6 +491,7 @@ local function show_trade_formspec(playername, trader, tradenum) "size[9,8.75]" .."background[-0.19,-0.25;9.41,9.49;mobs_mc_trading_formspec_bg.png]" ..disabled_img + ..mcl_vars.inventory_header .."label[4,0;"..minetest.formspec_escape(profession).."]" .."list[current_player;main;0,4.5;9,3;9]" .."list[current_player;main;0,7.74;9,1;]" diff --git a/mods/HELP/mcl_craftguide/init.lua b/mods/HELP/mcl_craftguide/init.lua index a8c75cbf..6b3d4132 100644 --- a/mods/HELP/mcl_craftguide/init.lua +++ b/mods/HELP/mcl_craftguide/init.lua @@ -315,6 +315,8 @@ function craftguide:get_formspec(player_name, is_fuel) data.pagemax = max(1, ceil(#data.items / ipp)) local formspec = "size["..data.iX..","..(iY+3)..".6;]".. + mcl_vars.gui_slots .. + mcl_vars.gui_bg .. [=[background[1,1;1,1;craftguide_bg.png;true] button[2.4,0.21;0.8,0.5;search;?] button[3.05,0.21;0.8,0.5;clear;X] diff --git a/mods/HUD/mcl_inventory/creative.lua b/mods/HUD/mcl_inventory/creative.lua index e7d09ce0..536cc56a 100644 --- a/mods/HUD/mcl_inventory/creative.lua +++ b/mods/HUD/mcl_inventory/creative.lua @@ -378,6 +378,7 @@ mcl_inventory.set_creative_formspec = function(player, start_i, pagenum, inv_siz end formspec = "size[10,9.3]".. + mcl_vars.inventory_header.. "background[-0.19,-0.25;10.5,9.87;"..inv_bg.."]".. "label[-5,-5;"..name.."]".. tab(name, "blocks") .. diff --git a/mods/HUD/mcl_inventory/init.lua b/mods/HUD/mcl_inventory/init.lua index cea5ffd0..bed3c485 100644 --- a/mods/HUD/mcl_inventory/init.lua +++ b/mods/HUD/mcl_inventory/init.lua @@ -86,6 +86,7 @@ local function set_inventory(player, armor_change_only) local form = "size[9,8.75]".. "background[-0.19,-0.25;9.41,9.49;crafting_formspec_bg.png]".. + mcl_vars.inventory_header.. player_preview.. --armor "list[detached:"..player_name.."_armor;armor;0,0;1,1;1]".. diff --git a/mods/ITEMS/REDSTONE/mcl_dispensers/depends.txt b/mods/ITEMS/REDSTONE/mcl_dispensers/depends.txt index a6648be2..c17d2db0 100644 --- a/mods/ITEMS/REDSTONE/mcl_dispensers/depends.txt +++ b/mods/ITEMS/REDSTONE/mcl_dispensers/depends.txt @@ -1,3 +1,4 @@ +mcl_init mesecons mcl_sounds mcl_tnt diff --git a/mods/ITEMS/REDSTONE/mcl_dispensers/init.lua b/mods/ITEMS/REDSTONE/mcl_dispensers/init.lua index 98b297a4..2c3c6b78 100644 --- a/mods/ITEMS/REDSTONE/mcl_dispensers/init.lua +++ b/mods/ITEMS/REDSTONE/mcl_dispensers/init.lua @@ -13,6 +13,7 @@ local setup_dispenser = function(pos) -- Set formspec and inventory local form = "size[9,8.75]".. "background[-0.19,-0.25;9.41,9.49;crafting_inventory_9_slots.png]".. + mcl_vars.inventory_header.. "image[3,-0.2;5,0.75;mcl_dispensers_fnt_dispenser.png]".. "list[current_player;main;0,4.5;9,3;9]".. "list[current_player;main;0,7.74;9,1;]".. diff --git a/mods/ITEMS/REDSTONE/mcl_droppers/depends.txt b/mods/ITEMS/REDSTONE/mcl_droppers/depends.txt index 3abc2f24..d8d7ca50 100644 --- a/mods/ITEMS/REDSTONE/mcl_droppers/depends.txt +++ b/mods/ITEMS/REDSTONE/mcl_droppers/depends.txt @@ -1,3 +1,4 @@ +mcl_init mesecons mcl_util doc? diff --git a/mods/ITEMS/REDSTONE/mcl_droppers/init.lua b/mods/ITEMS/REDSTONE/mcl_droppers/init.lua index baa453e7..be42e79a 100644 --- a/mods/ITEMS/REDSTONE/mcl_droppers/init.lua +++ b/mods/ITEMS/REDSTONE/mcl_droppers/init.lua @@ -13,6 +13,7 @@ local setup_dropper = function(pos) -- Set formspec and inventory local form = "size[9,8.75]".. "background[-0.19,-0.25;9.41,9.49;crafting_inventory_9_slots.png]".. + mcl_vars.inventory_header.. "image[3,-0.2;5,0.75;mcl_droppers_fnt_dropper.png]".. "list[current_player;main;0,4.5;9,3;9]".. "list[current_player;main;0,7.74;9,1;]".. diff --git a/mods/ITEMS/mcl_anvils/depends.txt b/mods/ITEMS/mcl_anvils/depends.txt index a2749e99..021df7cb 100644 --- a/mods/ITEMS/mcl_anvils/depends.txt +++ b/mods/ITEMS/mcl_anvils/depends.txt @@ -1,3 +1,4 @@ +mcl_init mcl_sounds mcl_core? screwdriver? diff --git a/mods/ITEMS/mcl_anvils/init.lua b/mods/ITEMS/mcl_anvils/init.lua index 790541cb..8b3717a3 100644 --- a/mods/ITEMS/mcl_anvils/init.lua +++ b/mods/ITEMS/mcl_anvils/init.lua @@ -15,6 +15,7 @@ local function get_anvil_formspec(set_name) end return "size[9,8.75]".. "background[-0.19,-0.25;9.41,9.49;mcl_anvils_inventory.png]".. + mcl_vars.inventory_header.. "list[current_player;main;0,4.5;9,3;9]".. "list[current_player;main;0,7.74;9,1;]".. "list[context;input;1,2.5;1,1;]".. diff --git a/mods/ITEMS/mcl_beds/functions.lua b/mods/ITEMS/mcl_beds/functions.lua index e9109481..0f571609 100644 --- a/mods/ITEMS/mcl_beds/functions.lua +++ b/mods/ITEMS/mcl_beds/functions.lua @@ -196,7 +196,7 @@ end local function update_formspecs(finished) local ges = #minetest.get_connected_players() - local form_n = "size[8,15;true]no_prepend[]" + local form_n = "size[8,15;true]" local all_in_bed = ges == player_in_bed local night_skip = is_night_skip_enabled() local button_leave = "button_exit[2,12;4,0.75;leave;Leave bed]" diff --git a/mods/ITEMS/mcl_chests/depends.txt b/mods/ITEMS/mcl_chests/depends.txt index 11402413..cd00aa22 100644 --- a/mods/ITEMS/mcl_chests/depends.txt +++ b/mods/ITEMS/mcl_chests/depends.txt @@ -1,3 +1,4 @@ +mcl_init mcl_core mcl_sounds mcl_end diff --git a/mods/ITEMS/mcl_chests/init.lua b/mods/ITEMS/mcl_chests/init.lua index 770e05ba..57c991ce 100644 --- a/mods/ITEMS/mcl_chests/init.lua +++ b/mods/ITEMS/mcl_chests/init.lua @@ -170,6 +170,7 @@ minetest.register_node("mcl_chests:"..basename, { minetest.show_formspec(clicker:get_player_name(), "mcl_chests:"..formspec_basename.."_"..pos.x.."_"..pos.y.."_"..pos.z, "size[9,8.75]".. + mcl_vars.inventory_header.. "background[-0.19,-0.25;9.41,10.48;mcl_chests_inventory_chest.png]".. "image[0,-0.2;5,0.75;mcl_chests_fnt_chest.png]".. "list[nodemeta:"..pos.x..","..pos.y..","..pos.z..";main;0,0.5;9,3;]".. @@ -292,6 +293,7 @@ minetest.register_node("mcl_chests:"..basename.."_left", { "mcl_chests:"..formspec_basename.."_"..pos.x.."_"..pos.y.."_"..pos.z, "size[9,11.5]".. "background[-0.19,-0.25;9.41,12.5;mcl_chests_inventory_chest_large.png]".. + mcl_vars.inventory_header.. "list[nodemeta:"..pos.x..","..pos.y..","..pos.z..";main;0,0.5;9,3;]".. "list[nodemeta:"..pos_other.x..","..pos_other.y..","..pos_other.z..";main;0,3.5;9,3;]".. "list[current_player;main;0,7.5;9,3;9]".. @@ -413,6 +415,7 @@ minetest.register_node("mcl_chests:"..basename.."_right", { "size[9,11.5]".. "background[-0.19,-0.25;9.41,12.5;mcl_chests_inventory_chest_large.png]".. + mcl_vars.inventory_header.. "list[nodemeta:"..pos_other.x..","..pos_other.y..","..pos_other.z..";main;0,0.5;9,3;]".. "list[nodemeta:"..pos.x..","..pos.y..","..pos.z..";main;0,3.5;9,3;]".. "list[current_player;main;0,7.5;9,3;9]".. @@ -615,6 +618,7 @@ minetest.register_node("mcl_chests:ender_chest", { local meta = minetest.get_meta(pos) meta:set_string("formspec", "size[9,8.75]".. + mcl_vars.inventory_header.. "background[-0.19,-0.25;9.41,10.48;mcl_chests_inventory_chest.png]".. "image[0,-0.2;5,0.75;mcl_chests_fnt_ender_chest.png]".. "list[current_player;enderchest;0,0.5;9,3;]".. @@ -709,6 +713,7 @@ for color, desc in pairs(boxtypes) do local meta = minetest.get_meta(pos) meta:set_string("formspec", "size[9,8.75]".. + mcl_vars.inventory_header.. "background[-0.19,-0.25;9.41,10.48;mcl_chests_inventory_chest.png]".. "image[0,-0.2;5,0.75;mcl_chests_fnt_shulker_box.png]".. "list[current_name;main;0,0.5;9,3;]".. diff --git a/mods/ITEMS/mcl_crafting_table/depends.txt b/mods/ITEMS/mcl_crafting_table/depends.txt index 3d96266d..e3b8528c 100644 --- a/mods/ITEMS/mcl_crafting_table/depends.txt +++ b/mods/ITEMS/mcl_crafting_table/depends.txt @@ -1 +1,2 @@ +mcl_init mcl_sounds diff --git a/mods/ITEMS/mcl_crafting_table/init.lua b/mods/ITEMS/mcl_crafting_table/init.lua index 72ea0a8c..37dc74a2 100644 --- a/mods/ITEMS/mcl_crafting_table/init.lua +++ b/mods/ITEMS/mcl_crafting_table/init.lua @@ -14,6 +14,7 @@ minetest.register_node("mcl_crafting_table:crafting_table", { local form = "size[9,8.75]".. "background[-0.19,-0.25;9.41,9.49;crafting_formspec_bg.png^crafting_inventory_workbench.png]".. + mcl_vars.inventory_header.. "list[current_player;main;0,4.5;9,3;9]".. "list[current_player;main;0,7.74;9,1;]".. "list[current_player;craft;1.75,0.5;3,3;]".. diff --git a/mods/ITEMS/mcl_furnaces/depends.txt b/mods/ITEMS/mcl_furnaces/depends.txt index 017e4fb6..441fdfde 100644 --- a/mods/ITEMS/mcl_furnaces/depends.txt +++ b/mods/ITEMS/mcl_furnaces/depends.txt @@ -1,3 +1,4 @@ +mcl_init mcl_core mcl_sounds mcl_craftguide diff --git a/mods/ITEMS/mcl_furnaces/init.lua b/mods/ITEMS/mcl_furnaces/init.lua index a81a86b3..9a8804fd 100644 --- a/mods/ITEMS/mcl_furnaces/init.lua +++ b/mods/ITEMS/mcl_furnaces/init.lua @@ -6,6 +6,7 @@ local function active_formspec(fuel_percent, item_percent) return "size[9,8.75]".. "background[-0.19,-0.25;9.41,9.49;crafting_inventory_furnace.png]".. + mcl_vars.inventory_header.. "list[current_player;main;0,4.5;9,3;9]".. "list[current_player;main;0,7.74;9,1;]".. "list[current_name;src;2.75,0.5;1,1;]".. @@ -28,6 +29,7 @@ end local inactive_formspec = "size[9,8.75]".. "background[-0.19,-0.25;9.41,9.49;crafting_inventory_furnace.png]".. + mcl_vars.inventory_header.. "list[current_player;main;0,4.5;9,3;9]".. "list[current_player;main;0,7.74;9,1;]".. "list[current_name;src;2.75,0.5;1,1;]".. diff --git a/mods/ITEMS/mcl_hoppers/init.lua b/mods/ITEMS/mcl_hoppers/init.lua index cced02c6..c7f7b0b9 100644 --- a/mods/ITEMS/mcl_hoppers/init.lua +++ b/mods/ITEMS/mcl_hoppers/init.lua @@ -6,6 +6,7 @@ local chest = minetest.get_content_id("mcl_chests:chest") local mcl_hoppers_formspec = "size[9,7]".. "background[-0.19,-0.25;9.41,10.48;mcl_hoppers_inventory.png]".. + mcl_vars.inventory_header.. "list[current_name;main;2,0.5;5,1;]".. "list[current_player;main;0,2.5;9,3;9]".. "list[current_player;main;0,5.74;9,1;]".. From 3edf8803015774e3712b63532d4fb3916d4d166f Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Thu, 7 Mar 2019 13:05:26 +0100 Subject: [PATCH 027/737] Add minimal formspec prepend --- mods/CORE/mcl_init/init.lua | 8 ++++++-- mods/HELP/mcl_craftguide/init.lua | 3 +-- mods/HUD/mcl_formspec_prepend/depends.txt | 1 + mods/HUD/mcl_formspec_prepend/init.lua | 3 +++ mods/HUD/mcl_formspec_prepend/mod.conf | 1 + 5 files changed, 12 insertions(+), 4 deletions(-) create mode 100644 mods/HUD/mcl_formspec_prepend/depends.txt create mode 100644 mods/HUD/mcl_formspec_prepend/init.lua create mode 100644 mods/HUD/mcl_formspec_prepend/mod.conf diff --git a/mods/CORE/mcl_init/init.lua b/mods/CORE/mcl_init/init.lua index de50bf00..7f310b9a 100644 --- a/mods/CORE/mcl_init/init.lua +++ b/mods/CORE/mcl_init/init.lua @@ -1,12 +1,16 @@ -- Some global variables (don't overwrite them!) mcl_vars = {} ---- GUI / inventory menu colors +--- GUI / inventory menu settings mcl_vars.gui_slots = "listcolors[#9990;#FFF7;#FFF0;#000;#FFF]" +-- nonbg is added as formspec prepend in mcl_formspec_prepend +mcl_vars.gui_nonbg = mcl_vars.gui_slots + +-- Background stuff must be manually added by mods (no formspec prepend) mcl_vars.gui_bg = "bgcolor[#080808BB;true]" mcl_vars.gui_bg_img = "" -mcl_vars.inventory_header = mcl_vars.gui_slots .. mcl_vars.gui_bg +mcl_vars.inventory_header = mcl_vars.gui_bg -- Mapgen variables local mg_name = minetest.get_mapgen_setting("mg_name") diff --git a/mods/HELP/mcl_craftguide/init.lua b/mods/HELP/mcl_craftguide/init.lua index 6b3d4132..3c821706 100644 --- a/mods/HELP/mcl_craftguide/init.lua +++ b/mods/HELP/mcl_craftguide/init.lua @@ -315,8 +315,7 @@ function craftguide:get_formspec(player_name, is_fuel) data.pagemax = max(1, ceil(#data.items / ipp)) local formspec = "size["..data.iX..","..(iY+3)..".6;]".. - mcl_vars.gui_slots .. - mcl_vars.gui_bg .. + mcl_vars.inventory_header.. [=[background[1,1;1,1;craftguide_bg.png;true] button[2.4,0.21;0.8,0.5;search;?] button[3.05,0.21;0.8,0.5;clear;X] diff --git a/mods/HUD/mcl_formspec_prepend/depends.txt b/mods/HUD/mcl_formspec_prepend/depends.txt new file mode 100644 index 00000000..3b355984 --- /dev/null +++ b/mods/HUD/mcl_formspec_prepend/depends.txt @@ -0,0 +1 @@ +mcl_init diff --git a/mods/HUD/mcl_formspec_prepend/init.lua b/mods/HUD/mcl_formspec_prepend/init.lua new file mode 100644 index 00000000..0eb97de6 --- /dev/null +++ b/mods/HUD/mcl_formspec_prepend/init.lua @@ -0,0 +1,3 @@ +minetest.register_on_joinplayer(function(player) + player:set_formspec_prepend(mcl_vars.gui_nonbg) +end) diff --git a/mods/HUD/mcl_formspec_prepend/mod.conf b/mods/HUD/mcl_formspec_prepend/mod.conf new file mode 100644 index 00000000..c576d449 --- /dev/null +++ b/mods/HUD/mcl_formspec_prepend/mod.conf @@ -0,0 +1 @@ +name = mcl_formspec_prepend From e0418553a6f0ade5f27754ae9d4fb5baa900e77f Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Thu, 7 Mar 2019 13:51:21 +0100 Subject: [PATCH 028/737] Version 0.49.0 --- README.md | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 2a70ceef..e81c549d 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ An unofficial Minecraft-like game for Minetest. Forked from MineClone by daredevils. Developed by Wuzzy and contributors. Not developed or endorsed by Mojang AB. -Version: 0.48.0 +Version: 0.49.0 ### Gameplay You start in a randomly-generated world made entirely of cubes. You can explore @@ -75,13 +75,14 @@ These items do not work yet, but you can get them with `/giveme` for testing: * Minecart with Command Block: `mcl_minecarts:command_block_minecart` ## Installation -This game requires [Minetest](http://minetest.net) to run -(version 0.4.16 or 0.4.17). -So you need to install Minetest first. Only stable versions of Minetest are -officially supported. Minetest 5.0.0 (when released) will NOT be supported (yet). -There is no support whatsoever for running MineClone 2 in development versions of Minetest. -To install MineClone 2, move this directory into the “games” directory of -your Minetest data directory. Consult the help of Minetest to learn more. +This game requires [Minetest](http://minetest.net) to run (version 5.0.0 or +later). So you need to install Minetest first. Only stable versions of Minetest +are officially supported. +There is no support for running MineClone 2 in development versions of Minetest. + +To install MineClone 2 (if you haven't already), move this directory into the +“games” directory of your Minetest data directory. Consult the help of +Minetest to learn more. ## Project description The main goal of **MineClone 2** is to be a clone of Minecraft and to be released as free software. From 1217d9fa884b18ea9c5f2870b4a952a5cce881c6 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Thu, 7 Mar 2019 20:43:39 +0100 Subject: [PATCH 029/737] New translation system, part 1: entities --- mods/ENTITIES/mcl_boats/init.lua | 9 ++-- mods/ENTITIES/mcl_minecarts/init.lua | 22 ++++----- mods/ENTITIES/mcl_minecarts/rails.lua | 26 ++++++----- mods/ENTITIES/mcl_mobs/api.lua | 10 ++--- mods/ENTITIES/mobs_mc/1_items_default.lua | 6 +-- mods/ENTITIES/mobs_mc/2_throwing.lua | 4 +- mods/ENTITIES/mobs_mc/4_heads.lua | 4 +- mods/ENTITIES/mobs_mc/agent.lua | 4 +- mods/ENTITIES/mobs_mc/bat.lua | 4 +- mods/ENTITIES/mobs_mc/blaze.lua | 5 +-- mods/ENTITIES/mobs_mc/chicken.lua | 7 +-- mods/ENTITIES/mobs_mc/cow+mooshroom.lua | 4 +- mods/ENTITIES/mobs_mc/creeper.lua | 7 +-- mods/ENTITIES/mobs_mc/depends.txt | 1 - mods/ENTITIES/mobs_mc/ender_dragon.lua | 4 +- mods/ENTITIES/mobs_mc/enderman.lua | 7 +-- mods/ENTITIES/mobs_mc/endermite.lua | 4 +- mods/ENTITIES/mobs_mc/ghast.lua | 6 +-- mods/ENTITIES/mobs_mc/guardian.lua | 4 +- mods/ENTITIES/mobs_mc/guardian_elder.lua | 4 +- mods/ENTITIES/mobs_mc/horse.lua | 4 +- mods/ENTITIES/mobs_mc/intllib.lua | 45 ------------------- mods/ENTITIES/mobs_mc/iron_golem.lua | 5 +-- mods/ENTITIES/mobs_mc/llama.lua | 4 +- mods/ENTITIES/mobs_mc/ocelot.lua | 4 +- mods/ENTITIES/mobs_mc/parrot.lua | 7 +-- mods/ENTITIES/mobs_mc/pig.lua | 4 +- mods/ENTITIES/mobs_mc/polar_bear.lua | 6 +-- mods/ENTITIES/mobs_mc/rabbit.lua | 4 +- mods/ENTITIES/mobs_mc/sheep.lua | 4 +- mods/ENTITIES/mobs_mc/shulker.lua | 6 +-- mods/ENTITIES/mobs_mc/silverfish.lua | 4 +- mods/ENTITIES/mobs_mc/skeleton+stray.lua | 7 +-- mods/ENTITIES/mobs_mc/skeleton_wither.lua | 4 +- mods/ENTITIES/mobs_mc/slime+magma_cube.lua | 4 +- mods/ENTITIES/mobs_mc/snowman.lua | 5 +-- mods/ENTITIES/mobs_mc/spider.lua | 6 +-- mods/ENTITIES/mobs_mc/squid.lua | 4 +- mods/ENTITIES/mobs_mc/vex.lua | 4 +- mods/ENTITIES/mobs_mc/villager.lua | 4 +- mods/ENTITIES/mobs_mc/villager_evoker.lua | 5 +-- mods/ENTITIES/mobs_mc/villager_illusioner.lua | 4 +- mods/ENTITIES/mobs_mc/villager_vindicator.lua | 5 +-- mods/ENTITIES/mobs_mc/villager_zombie.lua | 4 +- mods/ENTITIES/mobs_mc/witch.lua | 6 +-- mods/ENTITIES/mobs_mc/wither.lua | 8 +--- mods/ENTITIES/mobs_mc/wolf.lua | 4 +- mods/ENTITIES/mobs_mc/zombie.lua | 7 +-- mods/ENTITIES/mobs_mc/zombiepig.lua | 5 +-- 49 files changed, 80 insertions(+), 245 deletions(-) delete mode 100644 mods/ENTITIES/mobs_mc/intllib.lua diff --git a/mods/ENTITIES/mcl_boats/init.lua b/mods/ENTITIES/mcl_boats/init.lua index 3ebcb6f9..32815855 100644 --- a/mods/ENTITIES/mcl_boats/init.lua +++ b/mods/ENTITIES/mcl_boats/init.lua @@ -1,3 +1,4 @@ +local S = minetest.get_translator("mcl_boats") -- -- Helper functions -- @@ -258,7 +259,7 @@ end minetest.register_entity("mcl_boats:boat", boat) local boat_ids = { "boat", "boat_spruce", "boat_birch", "boat_jungle", "boat_acacia", "boat_dark_oak" } -local names = { "Oak Boat", "Spruce Boat", "Birch Boat", "Jungle Boat", "Acacia Boat", "Dark Oak Boat" } +local names = { S("Oak Boat"), S("Spruce Boat"), S("Birch Boat"), S("Jungle Boat"), S("Acacia Boat"), S("Dark Oak Boat") } local craftstuffs = {} if minetest.get_modpath("mcl_core") then craftstuffs = { "mcl_core:wood", "mcl_core:sprucewood", "mcl_core:birchwood", "mcl_core:junglewood", "mcl_core:acaciawood", "mcl_core:darkwood" } @@ -273,9 +274,9 @@ for b=1, #boat_ids do -- Only create one help entry for all boats if b == 1 then help = true - longdesc = "Boats are used to travel on the surface of water." - usagehelp = "Rightclick on a water source to place the boat. Rightclick the boat to enter it. Use [Left] and [Right] to steer, [Forwards] to speed up and [Backwards] to slow down or move backwards. Rightclick the boat again to leave it, punch the boat to make it drop as an item." - helpname = "Boat" + longdesc = S("Boats are used to travel on the surface of water.") + usagehelp = S("Rightclick on a water source to place the boat. Rightclick the boat to enter it. Use [Left] and [Right] to steer, [Forwards] to speed up and [Backwards] to slow down or move backwards. Rightclick the boat again to leave it, punch the boat to make it drop as an item.") + helpname = S("Boat") end minetest.register_craftitem(itemstring, { diff --git a/mods/ENTITIES/mcl_minecarts/init.lua b/mods/ENTITIES/mcl_minecarts/init.lua index b053b1f6..0305dba2 100644 --- a/mods/ENTITIES/mcl_minecarts/init.lua +++ b/mods/ENTITIES/mcl_minecarts/init.lua @@ -1,3 +1,5 @@ +local S = minetest.get_translator("mcl_minecarts") + mcl_minecarts = {} mcl_minecarts.modpath = minetest.get_modpath("mcl_minecarts") mcl_minecarts.speed_max = 10 @@ -470,11 +472,11 @@ end register_minecart( "mcl_minecarts:minecart", "mcl_minecarts:minecart", - "Minecart", - "Minecarts can be used for a quick transportion on rails." .. "\n" .. - "Minecarts only ride on rails and always follow the tracks. At a T-junction with no straight way ahead, they turn left. The speed is affected by the rail type.", - "You can place the minecart on rails. Right-click it to enter it. Punch it to get it moving." .. "\n" .. - "To obtain the minecart, punch it while holding down the sneak key.", + S("Minecart"), + S("Minecarts can be used for a quick transportion on rails.") .. "\n" .. + S("Minecarts only ride on rails and always follow the tracks. At a T-junction with no straight way ahead, they turn left. The speed is affected by the rail type."), + S("You can place the minecart on rails. Right-click it to enter it. Punch it to get it moving.") .. "\n" .. + S("To obtain the minecart, punch it while holding down the sneak key."), "mcl_minecarts_minecart.b3d", {"mcl_minecarts_minecart.png"}, "mcl_minecarts_minecart_normal.png", @@ -511,7 +513,7 @@ register_minecart( register_minecart( "mcl_minecarts:chest_minecart", "mcl_minecarts:chest_minecart", - "Minecart with Chest", + S("Minecart with Chest"), nil, nil, "mcl_minecarts_minecart_chest.b3d", { "mcl_chests_normal.png", "mcl_minecarts_minecart.png" }, @@ -523,7 +525,7 @@ register_minecart( register_minecart( "mcl_minecarts:furnace_minecart", "mcl_minecarts:furnace_minecart", - "Minecart with Furnace", + S("Minecart with Furnace"), nil, nil, "mcl_minecarts_minecart_block.b3d", { @@ -566,7 +568,7 @@ register_minecart( register_minecart( "mcl_minecarts:command_block_minecart", "mcl_minecarts:command_block_minecart", - "Minecart with Command Block", + S("Minecart with Command Block"), nil, nil, "mcl_minecarts_minecart_block.b3d", { @@ -587,7 +589,7 @@ register_minecart( register_minecart( "mcl_minecarts:hopper_minecart", "mcl_minecarts:hopper_minecart", - "Minecart with Hopper", + S("Minecart with Hopper"), nil, nil, "mcl_minecarts_minecart_hopper.b3d", { @@ -605,7 +607,7 @@ register_minecart( register_minecart( "mcl_minecarts:tnt_minecart", "mcl_minecarts:tnt_minecart", - "Minecart with TNT", + S("Minecart with TNT"), nil, nil, "mcl_minecarts_minecart_block.b3d", { diff --git a/mods/ENTITIES/mcl_minecarts/rails.lua b/mods/ENTITIES/mcl_minecarts/rails.lua index 04f420f8..f288ce04 100644 --- a/mods/ENTITIES/mcl_minecarts/rails.lua +++ b/mods/ENTITIES/mcl_minecarts/rails.lua @@ -1,3 +1,5 @@ +local S = minetest.get_translator("mcl_minecarts") + -- Template rail function local register_rail = function(itemstring, tiles, def_extras, creative) local groups = {handy=1,pickaxey=1, attached_node=1,rail=1,connect_to_raillike=1,dig_by_water=1,destroy_by_lava_flow=1, transport=1} @@ -64,14 +66,14 @@ local rail_rules_long = local rail_rules_short = mesecon.rules.pplate -local railuse = "Place them on the ground to build your railway, the rails will automatically connect to each other and will turn into curves, T-junctions, crossings and slopes as needed." +local railuse = S("Place them on the ground to build your railway, the rails will automatically connect to each other and will turn into curves, T-junctions, crossings and slopes as needed.") -- Normal rail register_rail("mcl_minecarts:rail", {"default_rail.png", "default_rail_curved.png", "default_rail_t_junction.png", "default_rail_crossing.png"}, { - description = "Rail", - _doc_items_longdesc = "Rails can be used to build transport tracks for minecarts. Normal rails slightly slow down minecarts due to friction.", + description = S("Rail"), + _doc_items_longdesc = S("Rails can be used to build transport tracks for minecarts. Normal rails slightly slow down minecarts due to friction."), _doc_items_usagehelp = railuse, } ) @@ -80,9 +82,9 @@ register_rail("mcl_minecarts:rail", register_rail("mcl_minecarts:golden_rail", {"mcl_minecarts_rail_golden.png", "mcl_minecarts_rail_golden_curved.png", "mcl_minecarts_rail_golden_t_junction.png", "mcl_minecarts_rail_golden_crossing.png"}, { - description = "Powered Rail", - _doc_items_longdesc = "Rails can be used to build transport tracks for minecarts. Powered rails are able to accelerate and brake minecarts.", - _doc_items_usagehelp = railuse .. "\n" .. "Without redstone power, the rail will brake minecarts. To make this rail accelerate minecarts, power it with redstone power.", + description = S("Powered Rail"), + _doc_items_longdesc = S("Rails can be used to build transport tracks for minecarts. Powered rails are able to accelerate and brake minecarts."), + _doc_items_usagehelp = railuse .. "\n" .. S("Without redstone power, the rail will brake minecarts. To make this rail accelerate minecarts, power it with redstone power."), _rail_acceleration = -3, mesecons = { conductor = { @@ -118,9 +120,9 @@ register_rail("mcl_minecarts:golden_rail_on", register_rail("mcl_minecarts:activator_rail", {"mcl_minecarts_rail_activator.png", "mcl_minecarts_rail_activator_curved.png", "mcl_minecarts_rail_activator_t_junction.png", "mcl_minecarts_rail_activator_crossing.png"}, { - description = "Activator Rail", - _doc_items_longdesc = "Rails can be used to build transport tracks for minecarts. Activator rails are used to activate special minecarts.", - _doc_items_usagehelp = railuse .. "\n" .. "To make this rail activate minecarts, power it with redstone power and send a minecart over this piece of rail.", + description = S("Activator Rail"), + _doc_items_longdesc = S("Rails can be used to build transport tracks for minecarts. Activator rails are used to activate special minecarts."), + _doc_items_usagehelp = railuse .. "\n" .. S("To make this rail activate minecarts, power it with redstone power and send a minecart over this piece of rail."), mesecons = { conductor = { state = mesecon.state.off, @@ -157,9 +159,9 @@ register_rail("mcl_minecarts:activator_rail_on", register_rail("mcl_minecarts:detector_rail", {"mcl_minecarts_rail_detector.png", "mcl_minecarts_rail_detector_curved.png", "mcl_minecarts_rail_detector_t_junction.png", "mcl_minecarts_rail_detector_crossing.png"}, { - description = "Detector Rail", - _doc_items_longdesc = "Rails can be used to build transport tracks for minecarts. A detector rail is able to detect a minecart above it and powers redstone mechanisms.", - _doc_items_usagehelp = railuse .. "\n" .. "To detect a minecart and provide redstone power, connect it to redstone trails or redstone mechanisms and send any minecart over the rail.", + description = S("Detector Rail"), + _doc_items_longdesc = S("Rails can be used to build transport tracks for minecarts. A detector rail is able to detect a minecart above it and powers redstone mechanisms."), + _doc_items_usagehelp = railuse .. "\n" .. S("To detect a minecart and provide redstone power, connect it to redstone trails or redstone mechanisms and send any minecart over the rail."), mesecons = { receptor = { state = mesecon.state.off, diff --git a/mods/ENTITIES/mcl_mobs/api.lua b/mods/ENTITIES/mcl_mobs/api.lua index 64e3211e..3c2d61bd 100644 --- a/mods/ENTITIES/mcl_mobs/api.lua +++ b/mods/ENTITIES/mcl_mobs/api.lua @@ -9,7 +9,7 @@ local MAX_MOB_NAME_LENGTH = 30 -- Intllib local MP = minetest.get_modpath(minetest.get_current_modname()) -local S, NS = dofile(MP .. "/intllib.lua") +local S = minetest.get_translator("mcl_mobs") mobs.intllib = S @@ -71,7 +71,7 @@ local mobs_spawn_chance = tonumber(minetest.settings:get("mobs_spawn_chance") or if peaceful_only then minetest.register_on_joinplayer(function(player) minetest.chat_send_player(player:get_player_name(), - S("** Peaceful Mode Active - No Monsters Will Spawn")) + S("Peaceful mode active! No monsters will spawn.")) end) end @@ -3562,8 +3562,8 @@ function mobs:register_egg(mob, desc, background, addegg, no_creative) inventory_image = invimg, groups = grp, - _doc_items_longdesc = "This allows you to place a single mob.", - _doc_items_usagehelp = "Just place it where you want the mob to appear. Animals will spawn tamed, unless you hold down the sneak key while placing. If you place this on a mob spawner, you change the mob it spawns.", + _doc_items_longdesc = S("This allows you to place a single mob."), + _doc_items_usagehelp = S("Just place it where you want the mob to appear. Animals will spawn tamed, unless you hold down the sneak key while placing. If you place this on a mob spawner, you change the mob it spawns."), on_place = function(itemstack, placer, pointed_thing) @@ -3588,7 +3588,7 @@ function mobs:register_egg(mob, desc, background, addegg, no_creative) return itemstack end if not privs.maphack then - minetest.chat_send_player(name, "You need the “maphack” privilege to change the mob spawner.") + minetest.chat_send_player(name, S("You need the “maphack” privilege to change the mob spawner.")) return itemstack end mcl_mobspawners.setup_spawner(pointed_thing.under, itemstack:get_name()) diff --git a/mods/ENTITIES/mobs_mc/1_items_default.lua b/mods/ENTITIES/mobs_mc/1_items_default.lua index f705b782..37d54a07 100644 --- a/mods/ENTITIES/mobs_mc/1_items_default.lua +++ b/mods/ENTITIES/mobs_mc/1_items_default.lua @@ -3,13 +3,9 @@ --made for MC like Survival game --License for code WTFPL and otherwise stated in readmes - ---dofile(minetest.get_modpath("mobs").."/api.lua") --THIS IS THE MASTER ITEM LIST TO USE WITH DEFAULT --- intllib -local MP = minetest.get_modpath(minetest.get_current_modname()) -local S, NS = dofile(MP.."/intllib.lua") +local S = minetest.get_translator("mobs_mc") local c = mobs_mc.is_item_variable_overridden diff --git a/mods/ENTITIES/mobs_mc/2_throwing.lua b/mods/ENTITIES/mobs_mc/2_throwing.lua index f2f15a1a..1e4c0a55 100644 --- a/mods/ENTITIES/mobs_mc/2_throwing.lua +++ b/mods/ENTITIES/mobs_mc/2_throwing.lua @@ -3,9 +3,7 @@ --made for MC like Survival game --License for code WTFPL and otherwise stated in readmes --- intllib -local MP = minetest.get_modpath(minetest.get_current_modname()) -local S, NS = dofile(MP.."/intllib.lua") +local S = minetest.get_translator("mobs_mc") --maikerumines throwing code --arrow (weapon) diff --git a/mods/ENTITIES/mobs_mc/4_heads.lua b/mods/ENTITIES/mobs_mc/4_heads.lua index 80c97198..b60cd168 100644 --- a/mods/ENTITIES/mobs_mc/4_heads.lua +++ b/mods/ENTITIES/mobs_mc/4_heads.lua @@ -1,9 +1,7 @@ --MC Heads for minetest --maikerumine --- intllib -local MP = minetest.get_modpath(minetest.get_current_modname()) -local S, NS = dofile(MP.."/intllib.lua") +local S = minetest.get_translator("mobs_mc") -- Heads system diff --git a/mods/ENTITIES/mobs_mc/agent.lua b/mods/ENTITIES/mobs_mc/agent.lua index 9de2292e..cc4bc0da 100644 --- a/mods/ENTITIES/mobs_mc/agent.lua +++ b/mods/ENTITIES/mobs_mc/agent.lua @@ -2,9 +2,7 @@ --################### AGENT --################### --- intllib -local MP = minetest.get_modpath(minetest.get_current_modname()) -local S, NS = dofile(MP.."/intllib.lua") +local S = minetest.get_translator("mobs_mc") mobs:register_mob("mobs_mc:agent", { type = "npc", diff --git a/mods/ENTITIES/mobs_mc/bat.lua b/mods/ENTITIES/mobs_mc/bat.lua index 6021b424..10e7a3ad 100644 --- a/mods/ENTITIES/mobs_mc/bat.lua +++ b/mods/ENTITIES/mobs_mc/bat.lua @@ -1,8 +1,6 @@ --License for code WTFPL and otherwise stated in readmes --- intllib -local MP = minetest.get_modpath(minetest.get_current_modname()) -local S, NS = dofile(MP.."/intllib.lua") +local S = minetest.get_translator("mobs_mc") mobs:register_mob("mobs_mc:bat", { type = "animal", diff --git a/mods/ENTITIES/mobs_mc/blaze.lua b/mods/ENTITIES/mobs_mc/blaze.lua index 2f06c4a3..34ee630f 100644 --- a/mods/ENTITIES/mobs_mc/blaze.lua +++ b/mods/ENTITIES/mobs_mc/blaze.lua @@ -3,11 +3,8 @@ -- Model and mobs_blaze.png see https://github.com/22i/minecraft-voxel-blender-models -- blaze.lua partial copy of mobs_mc/ghast.lua --- intllib -local MP = minetest.get_modpath(minetest.get_current_modname()) -local S, NS = dofile(MP.."/intllib.lua") +local S = minetest.get_translator("mobs_mc") ---dofile(minetest.get_modpath("mobs").."/api.lua") --################### --################### BLAZE --################### diff --git a/mods/ENTITIES/mobs_mc/chicken.lua b/mods/ENTITIES/mobs_mc/chicken.lua index 0c3d0510..fec0bb53 100644 --- a/mods/ENTITIES/mobs_mc/chicken.lua +++ b/mods/ENTITIES/mobs_mc/chicken.lua @@ -1,11 +1,6 @@ --License for code WTFPL and otherwise stated in readmes --- intllib -local MP = minetest.get_modpath(minetest.get_current_modname()) -local S, NS = dofile(MP.."/intllib.lua") - - ---dofile(minetest.get_modpath("mobs").."/api.lua") +local S = minetest.get_translator("mobs_mc") --################### --################### CHICKEN diff --git a/mods/ENTITIES/mobs_mc/cow+mooshroom.lua b/mods/ENTITIES/mobs_mc/cow+mooshroom.lua index 4b08db12..83d89ff1 100644 --- a/mods/ENTITIES/mobs_mc/cow+mooshroom.lua +++ b/mods/ENTITIES/mobs_mc/cow+mooshroom.lua @@ -1,8 +1,6 @@ --License for code WTFPL and otherwise stated in readmes --- intllib -local MP = minetest.get_modpath(minetest.get_current_modname()) -local S, NS = dofile(MP.."/intllib.lua") +local S = minetest.get_translator("mobs_mc") local cow_def = { type = "animal", diff --git a/mods/ENTITIES/mobs_mc/creeper.lua b/mods/ENTITIES/mobs_mc/creeper.lua index 77fd06ac..77737997 100644 --- a/mods/ENTITIES/mobs_mc/creeper.lua +++ b/mods/ENTITIES/mobs_mc/creeper.lua @@ -1,11 +1,6 @@ --License for code WTFPL and otherwise stated in readmes --- intllib -local MP = minetest.get_modpath(minetest.get_current_modname()) -local S, NS = dofile(MP.."/intllib.lua") - ---dofile(minetest.get_modpath("mobs").."/api.lua") - +local S = minetest.get_translator("mobs_mc") --################### --################### CREEPER diff --git a/mods/ENTITIES/mobs_mc/depends.txt b/mods/ENTITIES/mobs_mc/depends.txt index 2b399cc6..b37d4adb 100644 --- a/mods/ENTITIES/mobs_mc/depends.txt +++ b/mods/ENTITIES/mobs_mc/depends.txt @@ -8,5 +8,4 @@ mcl_fishing? bones? mesecons_materials? mobs_mc_gameconfig? -intllib? doc_items? diff --git a/mods/ENTITIES/mobs_mc/ender_dragon.lua b/mods/ENTITIES/mobs_mc/ender_dragon.lua index 1492fde5..8bcd2541 100644 --- a/mods/ENTITIES/mobs_mc/ender_dragon.lua +++ b/mods/ENTITIES/mobs_mc/ender_dragon.lua @@ -2,9 +2,7 @@ --################### ENDERDRAGON --################### --- intllib -local MP = minetest.get_modpath(minetest.get_current_modname()) -local S, NS = dofile(MP.."/intllib.lua") +local S = minetest.get_translator("mobs_mc") --[[ mobs:register_mob("mobs_mc:12enderdragon", { diff --git a/mods/ENTITIES/mobs_mc/enderman.lua b/mods/ENTITIES/mobs_mc/enderman.lua index da3054a5..6af9ebe4 100644 --- a/mods/ENTITIES/mobs_mc/enderman.lua +++ b/mods/ENTITIES/mobs_mc/enderman.lua @@ -10,12 +10,7 @@ -- and they are provoked by looking directly at them. -- TODO: Implement MC behaviour. --- intllib -local MP = minetest.get_modpath(minetest.get_current_modname()) -local S, NS = dofile(MP.."/intllib.lua") - ---dofile(minetest.get_modpath("mobs").."/api.lua") - +local S = minetest.get_translator("mobs_mc") --################### --################### ENDERMAN diff --git a/mods/ENTITIES/mobs_mc/endermite.lua b/mods/ENTITIES/mobs_mc/endermite.lua index 6cdcaf76..0776ca47 100644 --- a/mods/ENTITIES/mobs_mc/endermite.lua +++ b/mods/ENTITIES/mobs_mc/endermite.lua @@ -2,9 +2,7 @@ --################### ENDERMITE --################### --- intllib -local MP = minetest.get_modpath(minetest.get_current_modname()) -local S, NS = dofile(MP.."/intllib.lua") +local S = minetest.get_translator("mobs_mc") mobs:register_mob("mobs_mc:endermite", { type = "monster", diff --git a/mods/ENTITIES/mobs_mc/ghast.lua b/mods/ENTITIES/mobs_mc/ghast.lua index 26912f43..2ed0fb95 100644 --- a/mods/ENTITIES/mobs_mc/ghast.lua +++ b/mods/ENTITIES/mobs_mc/ghast.lua @@ -3,11 +3,7 @@ --made for MC like Survival game --License for code WTFPL and otherwise stated in readmes --- intllib -local MP = minetest.get_modpath(minetest.get_current_modname()) -local S, NS = dofile(MP.."/intllib.lua") - ---dofile(minetest.get_modpath("mobs").."/api.lua") +local S = minetest.get_translator("mobs_mc") --################### --################### GHAST diff --git a/mods/ENTITIES/mobs_mc/guardian.lua b/mods/ENTITIES/mobs_mc/guardian.lua index 56bda522..89ad0964 100644 --- a/mods/ENTITIES/mobs_mc/guardian.lua +++ b/mods/ENTITIES/mobs_mc/guardian.lua @@ -4,9 +4,7 @@ --################### GUARDIAN --################### --- intllib -local MP = minetest.get_modpath(minetest.get_current_modname()) -local S, NS = dofile(MP.."/intllib.lua") +local S = minetest.get_translator("mobs_mc") mobs:register_mob("mobs_mc:guardian", { type = "monster", diff --git a/mods/ENTITIES/mobs_mc/guardian_elder.lua b/mods/ENTITIES/mobs_mc/guardian_elder.lua index 11dba11a..85ad5053 100644 --- a/mods/ENTITIES/mobs_mc/guardian_elder.lua +++ b/mods/ENTITIES/mobs_mc/guardian_elder.lua @@ -4,9 +4,7 @@ --################### GUARDIAN --################### --- intllib -local MP = minetest.get_modpath(minetest.get_current_modname()) -local S, NS = dofile(MP.."/intllib.lua") +local S = minetest.get_translator("mobs_mc") mobs:register_mob("mobs_mc:guardian_elder", { type = "monster", diff --git a/mods/ENTITIES/mobs_mc/horse.lua b/mods/ENTITIES/mobs_mc/horse.lua index 533948a0..c2054300 100644 --- a/mods/ENTITIES/mobs_mc/horse.lua +++ b/mods/ENTITIES/mobs_mc/horse.lua @@ -3,9 +3,7 @@ --made for MC like Survival game --License for code WTFPL and otherwise stated in readmes --- intllib -local MP = minetest.get_modpath(minetest.get_current_modname()) -local S, NS = dofile(MP.."/intllib.lua") +local S = minetest.get_translator("mobs_mc") --################### --################### HORSE diff --git a/mods/ENTITIES/mobs_mc/intllib.lua b/mods/ENTITIES/mobs_mc/intllib.lua deleted file mode 100644 index 6669d720..00000000 --- a/mods/ENTITIES/mobs_mc/intllib.lua +++ /dev/null @@ -1,45 +0,0 @@ - --- Fallback functions for when `intllib` is not installed. --- Code released under Unlicense . - --- Get the latest version of this file at: --- https://raw.githubusercontent.com/minetest-mods/intllib/master/lib/intllib.lua - -local function format(str, ...) - local args = { ... } - local function repl(escape, open, num, close) - if escape == "" then - local replacement = tostring(args[tonumber(num)]) - if open == "" then - replacement = replacement..close - end - return replacement - else - return "@"..open..num..close - end - end - return (str:gsub("(@?)@(%(?)(%d+)(%)?)", repl)) -end - -local gettext, ngettext -if minetest.get_modpath("intllib") then - if intllib.make_gettext_pair then - -- New method using gettext. - gettext, ngettext = intllib.make_gettext_pair() - else - -- Old method using text files. - gettext = intllib.Getter() - end -end - --- Fill in missing functions. - -gettext = gettext or function(msgid, ...) - return format(msgid, ...) -end - -ngettext = ngettext or function(msgid, msgid_plural, n, ...) - return format(n==1 and msgid or msgid_plural, ...) -end - -return gettext, ngettext diff --git a/mods/ENTITIES/mobs_mc/iron_golem.lua b/mods/ENTITIES/mobs_mc/iron_golem.lua index ebd93dc6..9ca88ba5 100644 --- a/mods/ENTITIES/mobs_mc/iron_golem.lua +++ b/mods/ENTITIES/mobs_mc/iron_golem.lua @@ -3,11 +3,8 @@ --made for MC like Survival game --License for code WTFPL and otherwise stated in readmes --- intllib -local MP = minetest.get_modpath(minetest.get_current_modname()) -local S, NS = dofile(MP.."/intllib.lua") +local S = minetest.get_translator("mobs_mc") ---dofile(minetest.get_modpath("mobs").."/api.lua") --################### --################### IRON GOLEM --################### diff --git a/mods/ENTITIES/mobs_mc/llama.lua b/mods/ENTITIES/mobs_mc/llama.lua index e70b9a18..a69db0ba 100644 --- a/mods/ENTITIES/mobs_mc/llama.lua +++ b/mods/ENTITIES/mobs_mc/llama.lua @@ -1,6 +1,4 @@ --- intllib -local MP = minetest.get_modpath(minetest.get_current_modname()) -local S, NS = dofile(MP.."/intllib.lua") +local S = minetest.get_translator("mobs_mc") --################### --################### LLAMA diff --git a/mods/ENTITIES/mobs_mc/ocelot.lua b/mods/ENTITIES/mobs_mc/ocelot.lua index 58a7d94f..634d77a3 100644 --- a/mods/ENTITIES/mobs_mc/ocelot.lua +++ b/mods/ENTITIES/mobs_mc/ocelot.lua @@ -3,9 +3,7 @@ --made for MC like Survival game --License for code WTFPL and otherwise stated in readmes --- intllib -local MP = minetest.get_modpath(minetest.get_current_modname()) -local S, NS = dofile(MP.."/intllib.lua") +local S = minetest.get_translator("mobs_mc") --################### --################### OCELOT AND CAT diff --git a/mods/ENTITIES/mobs_mc/parrot.lua b/mods/ENTITIES/mobs_mc/parrot.lua index 89e4c77f..7e465e8f 100644 --- a/mods/ENTITIES/mobs_mc/parrot.lua +++ b/mods/ENTITIES/mobs_mc/parrot.lua @@ -3,12 +3,7 @@ --made for MC like Survival game --License for code WTFPL and otherwise stated in readmes --- intllib -local MP = minetest.get_modpath(minetest.get_current_modname()) -local S, NS = dofile(MP.."/intllib.lua") - ---dofile(minetest.get_modpath("mobs").."/api.lua") - +local S = minetest.get_translator("mobs_mc") --################### --################### PARROT diff --git a/mods/ENTITIES/mobs_mc/pig.lua b/mods/ENTITIES/mobs_mc/pig.lua index 1f685c2f..2b10c99b 100644 --- a/mods/ENTITIES/mobs_mc/pig.lua +++ b/mods/ENTITIES/mobs_mc/pig.lua @@ -1,8 +1,6 @@ --License for code WTFPL and otherwise stated in readmes --- intllib -local MP = minetest.get_modpath(minetest.get_current_modname()) -local S, NS = dofile(MP.."/intllib.lua") +local S = minetest.get_translator("mobs_mc") mobs:register_mob("mobs_mc:pig", { type = "animal", diff --git a/mods/ENTITIES/mobs_mc/polar_bear.lua b/mods/ENTITIES/mobs_mc/polar_bear.lua index 84da77e7..1db07e0f 100644 --- a/mods/ENTITIES/mobs_mc/polar_bear.lua +++ b/mods/ENTITIES/mobs_mc/polar_bear.lua @@ -1,10 +1,6 @@ --License for code WTFPL and otherwise stated in readmes --- intllib -local MP = minetest.get_modpath(minetest.get_current_modname()) -local S, NS = dofile(MP.."/intllib.lua") - ---dofile(minetest.get_modpath("mobs").."/api.lua") +local S = minetest.get_translator("mobs_mc") --################### --################### POLARBEAR diff --git a/mods/ENTITIES/mobs_mc/rabbit.lua b/mods/ENTITIES/mobs_mc/rabbit.lua index a92c93f9..ea71d788 100644 --- a/mods/ENTITIES/mobs_mc/rabbit.lua +++ b/mods/ENTITIES/mobs_mc/rabbit.lua @@ -1,8 +1,6 @@ --License for code WTFPL and otherwise stated in readmes --- intllib -local MP = minetest.get_modpath(minetest.get_current_modname()) -local S, NS = dofile(MP.."/intllib.lua") +local S = minetest.get_translator("mobs_mc") local rabbit = { type = "animal", diff --git a/mods/ENTITIES/mobs_mc/sheep.lua b/mods/ENTITIES/mobs_mc/sheep.lua index 9ddf9e03..c734cfe2 100644 --- a/mods/ENTITIES/mobs_mc/sheep.lua +++ b/mods/ENTITIES/mobs_mc/sheep.lua @@ -1,8 +1,6 @@ --License for code WTFPL and otherwise stated in readmes --- intllib -local MP = minetest.get_modpath(minetest.get_current_modname()) -local S, NS = dofile(MP.."/intllib.lua") +local S = minetest.get_translator("mobs_mc") --################### --################### SHEEP diff --git a/mods/ENTITIES/mobs_mc/shulker.lua b/mods/ENTITIES/mobs_mc/shulker.lua index ddb17e7c..0d23a14f 100644 --- a/mods/ENTITIES/mobs_mc/shulker.lua +++ b/mods/ENTITIES/mobs_mc/shulker.lua @@ -3,11 +3,7 @@ --made for MC like Survival game --License for code WTFPL and otherwise stated in readmes --- intllib -local MP = minetest.get_modpath(minetest.get_current_modname()) -local S, NS = dofile(MP.."/intllib.lua") - ---dofile(minetest.get_modpath("mobs").."/api.lua") +local S = minetest.get_translator("mobs_mc") --################### --################### SHULKER diff --git a/mods/ENTITIES/mobs_mc/silverfish.lua b/mods/ENTITIES/mobs_mc/silverfish.lua index dc2a9c92..77415b40 100644 --- a/mods/ENTITIES/mobs_mc/silverfish.lua +++ b/mods/ENTITIES/mobs_mc/silverfish.lua @@ -2,9 +2,7 @@ --################### SILVERFISH --################### --- intllib -local MP = minetest.get_modpath(minetest.get_current_modname()) -local S, NS = dofile(MP.."/intllib.lua") +local S = minetest.get_translator("mobs_mc") mobs:register_mob("mobs_mc:silverfish", { type = "monster", diff --git a/mods/ENTITIES/mobs_mc/skeleton+stray.lua b/mods/ENTITIES/mobs_mc/skeleton+stray.lua index a10fef5e..35cc9ed8 100644 --- a/mods/ENTITIES/mobs_mc/skeleton+stray.lua +++ b/mods/ENTITIES/mobs_mc/skeleton+stray.lua @@ -3,12 +3,7 @@ --made for MC like Survival game --License for code WTFPL and otherwise stated in readmes --- intllib -local MP = minetest.get_modpath(minetest.get_current_modname()) -local S, NS = dofile(MP.."/intllib.lua") - ---dofile(minetest.get_modpath("mobs").."/api.lua") - +local S = minetest.get_translator("mobs_mc") --################### --################### SKELETON diff --git a/mods/ENTITIES/mobs_mc/skeleton_wither.lua b/mods/ENTITIES/mobs_mc/skeleton_wither.lua index cd932129..16f353ce 100644 --- a/mods/ENTITIES/mobs_mc/skeleton_wither.lua +++ b/mods/ENTITIES/mobs_mc/skeleton_wither.lua @@ -3,9 +3,7 @@ --made for MC like Survival game --License for code WTFPL and otherwise stated in readmes --- intllib -local MP = minetest.get_modpath(minetest.get_current_modname()) -local S, NS = dofile(MP.."/intllib.lua") +local S = minetest.get_translator("mobs_mc") --################### --################### WITHER SKELETON diff --git a/mods/ENTITIES/mobs_mc/slime+magma_cube.lua b/mods/ENTITIES/mobs_mc/slime+magma_cube.lua index 2c21dcfa..da52d3bc 100644 --- a/mods/ENTITIES/mobs_mc/slime+magma_cube.lua +++ b/mods/ENTITIES/mobs_mc/slime+magma_cube.lua @@ -1,8 +1,6 @@ --License for code WTFPL and otherwise stated in readmes --- intllib -local MP = minetest.get_modpath(minetest.get_current_modname()) -local S, NS = dofile(MP.."/intllib.lua") +local S = minetest.get_translator("mobs_mc") -- Returns a function that spawns children in a circle around pos. -- To be used as on_die callback. diff --git a/mods/ENTITIES/mobs_mc/snowman.lua b/mods/ENTITIES/mobs_mc/snowman.lua index 1c1ad686..f0f8fc4f 100644 --- a/mods/ENTITIES/mobs_mc/snowman.lua +++ b/mods/ENTITIES/mobs_mc/snowman.lua @@ -3,9 +3,8 @@ --made for MC like Survival game --License for code WTFPL and otherwise stated in readmes --- intllib -local MP = minetest.get_modpath(minetest.get_current_modname()) -local S, NS = dofile(MP.."/intllib.lua") +local S = minetest.get_translator("mobs_mc") + local snow_trail_frequency = 0.5 -- Time in seconds for checking to add a new snow trail local mobs_griefing = minetest.settings:get_bool("mobs_griefing") ~= false diff --git a/mods/ENTITIES/mobs_mc/spider.lua b/mods/ENTITIES/mobs_mc/spider.lua index 2fe6ae53..9ec7f44b 100644 --- a/mods/ENTITIES/mobs_mc/spider.lua +++ b/mods/ENTITIES/mobs_mc/spider.lua @@ -3,11 +3,7 @@ --made for MC like Survival game --License for code WTFPL and otherwise stated in readmes --- intllib -local MP = minetest.get_modpath(minetest.get_current_modname()) -local S, NS = dofile(MP.."/intllib.lua") - ---dofile(minetest.get_modpath("mobs").."/api.lua") +local S = minetest.get_translator("mobs_mc") --################### --################### SPIDER diff --git a/mods/ENTITIES/mobs_mc/squid.lua b/mods/ENTITIES/mobs_mc/squid.lua index 721f861b..b22ca08f 100644 --- a/mods/ENTITIES/mobs_mc/squid.lua +++ b/mods/ENTITIES/mobs_mc/squid.lua @@ -4,9 +4,7 @@ --################### SQUID --################### --- intllib -local MP = minetest.get_modpath(minetest.get_current_modname()) -local S, NS = dofile(MP.."/intllib.lua") +local S = minetest.get_translator("mobs_mc") mobs:register_mob("mobs_mc:squid", { type = "animal", diff --git a/mods/ENTITIES/mobs_mc/vex.lua b/mods/ENTITIES/mobs_mc/vex.lua index 01f7af70..692783e0 100644 --- a/mods/ENTITIES/mobs_mc/vex.lua +++ b/mods/ENTITIES/mobs_mc/vex.lua @@ -3,9 +3,7 @@ --made for MC like Survival game --License for code WTFPL and otherwise stated in readmes --- intllib -local MP = minetest.get_modpath(minetest.get_current_modname()) -local S, NS = dofile(MP.."/intllib.lua") +local S = minetest.get_translator("mobs_mc") --################### --################### VEX diff --git a/mods/ENTITIES/mobs_mc/villager.lua b/mods/ENTITIES/mobs_mc/villager.lua index e2d91310..4357cebc 100644 --- a/mods/ENTITIES/mobs_mc/villager.lua +++ b/mods/ENTITIES/mobs_mc/villager.lua @@ -19,9 +19,7 @@ -- TODO: Internal inventory, pick up items, trade with other villagers -- TODO: Farm stuff --- intllib -local MP = minetest.get_modpath(minetest.get_current_modname()) -local S, NS = dofile(MP.."/intllib.lua") +local S = minetest.get_translator("mobs_mc") -- playername-indexed table containing the previously used tradenum local player_tradenum = {} diff --git a/mods/ENTITIES/mobs_mc/villager_evoker.lua b/mods/ENTITIES/mobs_mc/villager_evoker.lua index 6d9fc87a..22af9d4b 100644 --- a/mods/ENTITIES/mobs_mc/villager_evoker.lua +++ b/mods/ENTITIES/mobs_mc/villager_evoker.lua @@ -3,11 +3,8 @@ --made for MC like Survival game --License for code WTFPL and otherwise stated in readmes --- intllib -local MP = minetest.get_modpath(minetest.get_current_modname()) -local S, NS = dofile(MP.."/intllib.lua") +local S = minetest.get_translator("mobs_mc") ---dofile(minetest.get_modpath("mobs").."/api.lua") --################### --################### EVOKER --################### diff --git a/mods/ENTITIES/mobs_mc/villager_illusioner.lua b/mods/ENTITIES/mobs_mc/villager_illusioner.lua index e6d1b2c9..de4ee89d 100644 --- a/mods/ENTITIES/mobs_mc/villager_illusioner.lua +++ b/mods/ENTITIES/mobs_mc/villager_illusioner.lua @@ -3,9 +3,7 @@ --made for MC like Survival game --License for code WTFPL and otherwise stated in readmes --- intllib -local MP = minetest.get_modpath(minetest.get_current_modname()) -local S, NS = dofile(MP.."/intllib.lua") +local S = minetest.get_translator("mobs_mc") mobs:register_mob("mobs_mc:illusioner", { type = "monster", diff --git a/mods/ENTITIES/mobs_mc/villager_vindicator.lua b/mods/ENTITIES/mobs_mc/villager_vindicator.lua index 82eff89b..9558074a 100644 --- a/mods/ENTITIES/mobs_mc/villager_vindicator.lua +++ b/mods/ENTITIES/mobs_mc/villager_vindicator.lua @@ -3,11 +3,8 @@ --made for MC like Survival game --License for code WTFPL and otherwise stated in readmes --- intllib -local MP = minetest.get_modpath(minetest.get_current_modname()) -local S, NS = dofile(MP.."/intllib.lua") +local S = minetest.get_translator("mobs_mc") ---dofile(minetest.get_modpath("mobs").."/api.lua") --################### --################### VINDICATOR --################### diff --git a/mods/ENTITIES/mobs_mc/villager_zombie.lua b/mods/ENTITIES/mobs_mc/villager_zombie.lua index f340c043..7e8037df 100644 --- a/mods/ENTITIES/mobs_mc/villager_zombie.lua +++ b/mods/ENTITIES/mobs_mc/villager_zombie.lua @@ -3,9 +3,7 @@ --made for MC like Survival game --License for code WTFPL and otherwise stated in readmes --- intllib -local MP = minetest.get_modpath(minetest.get_current_modname()) -local S, NS = dofile(MP.."/intllib.lua") +local S = minetest.get_translator("mobs_mc") -- TODO: Turn villagers to zombie villager diff --git a/mods/ENTITIES/mobs_mc/witch.lua b/mods/ENTITIES/mobs_mc/witch.lua index 7edce46e..83e7b7b3 100644 --- a/mods/ENTITIES/mobs_mc/witch.lua +++ b/mods/ENTITIES/mobs_mc/witch.lua @@ -3,11 +3,7 @@ --made for MC like Survival game --License for code WTFPL and otherwise stated in readmes --- intllib -local MP = minetest.get_modpath(minetest.get_current_modname()) -local S, NS = dofile(MP.."/intllib.lua") - ---dofile(minetest.get_modpath("mobs").."/api.lua") +local S = minetest.get_translator("mobs_mc") --################### --################### WITCH diff --git a/mods/ENTITIES/mobs_mc/wither.lua b/mods/ENTITIES/mobs_mc/wither.lua index 9602d5a5..d61237a9 100644 --- a/mods/ENTITIES/mobs_mc/wither.lua +++ b/mods/ENTITIES/mobs_mc/wither.lua @@ -3,18 +3,12 @@ --made for MC like Survival game --License for code WTFPL and otherwise stated in readmes --- intllib -local MP = minetest.get_modpath(minetest.get_current_modname()) -local S, NS = dofile(MP.."/intllib.lua") +local S = minetest.get_translator("mobs_mc") ---dofile(minetest.get_modpath("mobs").."/api.lua") - - --################### --################### WITHER --################### - mobs:register_mob("mobs_mc:wither", { type = "monster", hp_max = 300, diff --git a/mods/ENTITIES/mobs_mc/wolf.lua b/mods/ENTITIES/mobs_mc/wolf.lua index fc73e834..b7e69864 100644 --- a/mods/ENTITIES/mobs_mc/wolf.lua +++ b/mods/ENTITIES/mobs_mc/wolf.lua @@ -1,8 +1,6 @@ --License for code WTFPL and otherwise stated in readmes --- intllib -local MP = minetest.get_modpath(minetest.get_current_modname()) -local S, NS = dofile(MP.."/intllib.lua") +local S = minetest.get_translator("mobs_mc") local default_walk_chance = 50 diff --git a/mods/ENTITIES/mobs_mc/zombie.lua b/mods/ENTITIES/mobs_mc/zombie.lua index 72c76b32..0b329c55 100644 --- a/mods/ENTITIES/mobs_mc/zombie.lua +++ b/mods/ENTITIES/mobs_mc/zombie.lua @@ -3,12 +3,7 @@ --made for MC like Survival game --License for code WTFPL and otherwise stated in readmes --- intllib -local MP = minetest.get_modpath(minetest.get_current_modname()) -local S, NS = dofile(MP.."/intllib.lua") - ---dofile(minetest.get_modpath("mobs").."/api.lua") - +local S = minetest.get_translator("mobs_mc") --################### --################### ZOMBIE diff --git a/mods/ENTITIES/mobs_mc/zombiepig.lua b/mods/ENTITIES/mobs_mc/zombiepig.lua index d85c2ceb..a4b1db60 100644 --- a/mods/ENTITIES/mobs_mc/zombiepig.lua +++ b/mods/ENTITIES/mobs_mc/zombiepig.lua @@ -3,11 +3,8 @@ --made for MC like Survival game --License for code WTFPL and otherwise stated in readmes --- intllib -local MP = minetest.get_modpath(minetest.get_current_modname()) -local S, NS = dofile(MP.."/intllib.lua") +local S = minetest.get_translator("mobs_mc") ---dofile(minetest.get_modpath("mobs").."/api.lua") --################### --################### ZOMBIE PIGMAN --################### From d691490016213c12c4dae9e87b6a6d6a5d0bbc95 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Thu, 7 Mar 2019 20:55:56 +0100 Subject: [PATCH 030/737] New translation system, part 2: Environment, help --- mods/ENVIRONMENT/lightning/init.lua | 9 +- mods/ENVIRONMENT/mcl_void_damage/init.lua | 6 +- mods/ENVIRONMENT/mcl_weather/weather_core.lua | 18 ++-- mods/HELP/mcl_doc/init.lua | 82 ++++++++++--------- mods/HELP/mcl_doc_basics/depends.txt | 1 - mods/HELP/mcl_doc_basics/init.lua | 8 +- 6 files changed, 62 insertions(+), 62 deletions(-) diff --git a/mods/ENVIRONMENT/lightning/init.lua b/mods/ENVIRONMENT/lightning/init.lua index 3d417cce..527bfa86 100644 --- a/mods/ENVIRONMENT/lightning/init.lua +++ b/mods/ENVIRONMENT/lightning/init.lua @@ -1,4 +1,3 @@ - --[[ Copyright (C) 2016 - Auke Kok @@ -10,6 +9,8 @@ of the license, or (at your option) any later version. --]] +local S = minetest.get_translator("lightning") + lightning = {} lightning.interval_low = 17 @@ -178,7 +179,7 @@ lightning.strike = function(pos) if obj:is_player() then -- Player damage if minetest.get_modpath("mcl_death_messages") then - mcl_death_messages.player_damage(obj, string.format("%s was struck by lightning.", obj:get_player_name())) + mcl_death_messages.player_damage(obj, S("@1 was struck by lightning.", obj:get_player_name())) end obj:set_hp(obj:get_hp()-5) -- Mobs @@ -233,7 +234,7 @@ end) minetest.register_chatcommand("lightning", { params = "[ ]", - description = "Let lightning strike at the specified position or yourself", + description = S("Let lightning strike at the specified position or yourself"), privs = { maphack = true }, func = function(name, param) local pos = {} @@ -254,7 +255,7 @@ minetest.register_chatcommand("lightning", { if player then lightning.strike(player:get_pos()) else - return false, "No position specified and unknown player" + return false, S("No position specified and unknown player") end end return true diff --git a/mods/ENVIRONMENT/mcl_void_damage/init.lua b/mods/ENVIRONMENT/mcl_void_damage/init.lua index f8f4578f..5490f500 100644 --- a/mods/ENVIRONMENT/mcl_void_damage/init.lua +++ b/mods/ENVIRONMENT/mcl_void_damage/init.lua @@ -1,3 +1,5 @@ +local S = minetest.get_translator("mcl_void_damage") + local voidtimer = 0 minetest.register_globalstep(function(dtime) @@ -24,7 +26,7 @@ minetest.register_globalstep(function(dtime) local spawn = mcl_spawn.get_spawn_pos(obj) obj:set_pos(spawn) mcl_worlds.dimension_change(obj, mcl_worlds.pos_to_dimension(spawn)) - minetest.chat_send_player(obj:get_player_name(), "The void is off-limits to you!") + minetest.chat_send_player(obj:get_player_name(), S("The void is off-limits to you!")) else obj:remove() end @@ -32,7 +34,7 @@ minetest.register_globalstep(function(dtime) -- Damage enabled, not immortal: Deal void damage (4 HP / 0.5 seconds) if obj:get_hp() > 0 then if is_player then - mcl_death_messages.player_damage(obj, string.format("%s fell into the endless void.", obj:get_player_name())) + mcl_death_messages.player_damage(obj, S("@1 fell into the endless void.", obj:get_player_name())) end obj:set_hp(obj:get_hp() - 4) end diff --git a/mods/ENVIRONMENT/mcl_weather/weather_core.lua b/mods/ENVIRONMENT/mcl_weather/weather_core.lua index bec9606d..507040f1 100644 --- a/mods/ENVIRONMENT/mcl_weather/weather_core.lua +++ b/mods/ENVIRONMENT/mcl_weather/weather_core.lua @@ -1,3 +1,5 @@ +local S = minetest.get_translator("mcl_weather") + -- weather states, 'none' is default, other states depends from active mods mcl_weather.state = "none" @@ -182,18 +184,18 @@ mcl_weather.get_weather = function() end minetest.register_privilege("weather_manager", { - description = "Gives ability to control weather", + description = S("Gives ability to control weather"), give_to_singleplayer = false }) -- Weather command definition. Set minetest.register_chatcommand("weather", { - params = "(clear | rain | snow | thunder) []", - description = "Changes the weather to the specified parameter.", + params = S("(clear | rain | snow | thunder) []"), + description = S("Changes the weather to the specified parameter."), privs = {weather_manager = true}, func = function(name, param) if (param == "") then - return false, "Error: No weather specified." + return false, S("Error: No weather specified.") end local new_weather, end_time local parse1, parse2 = string.match(param, "(%w+) ?(%d*)") @@ -204,13 +206,13 @@ minetest.register_chatcommand("weather", { new_weather = parse1 end else - return false, "Error: Invalid parameters." + return false, S("Error: Invalid parameters.") end if parse2 then if type(tonumber(parse2)) == "number" then local duration = tonumber(parse2) if duration < 1 then - return false, "Error: Duration can't be less than 1 second." + return false, S("Error: Duration can't be less than 1 second.") end end_time = minetest.get_gametime() + duration end @@ -220,14 +222,14 @@ minetest.register_chatcommand("weather", { if success then return true else - return false, "Error: Invalid weather specified. Use “clear”, “rain”, “snow” or “thunder”." + return false, S("Error: Invalid weather specified. Use “clear”, “rain”, “snow” or “thunder”.") end end }) minetest.register_chatcommand("toggledownfall", { params = "", - description = "Toggles between clear weather and weather with downfall (randomly rain, thunderstorm or snow)", + description = S("Toggles between clear weather and weather with downfall (randomly rain, thunderstorm or snow)"), privs = {weather_manager = true}, func = function(name, param) -- Currently rain/thunder/snow: Set weather to clear diff --git a/mods/HELP/mcl_doc/init.lua b/mods/HELP/mcl_doc/init.lua index b4f292b4..fc35f8e3 100644 --- a/mods/HELP/mcl_doc/init.lua +++ b/mods/HELP/mcl_doc/init.lua @@ -1,3 +1,5 @@ +local S = minetest.get_translator("mcl_doc") + -- Disable built-in factoids; it is planned to add custom ones as replacements doc.sub.items.disable_core_factoid("node_mining") doc.sub.items.disable_core_factoid("tool_capabilities") @@ -14,7 +16,7 @@ end) -- dig_by_water doc.sub.items.register_factoid("nodes", "drop_destroy", function(itemstring, def) if def.groups.dig_by_water then - return "Water can flow into this block and cause it to drop as an item." + return S("Water can flow into this block and cause it to drop as an item.") end return "" end) @@ -22,9 +24,9 @@ end) -- usable by hoes doc.sub.items.register_factoid("nodes", "groups", function(itemstring, def) if def.groups.cultivatable == 2 then - return "This block can be turned into dirt with a hoe." + return S("This block can be turned into dirt with a hoe.") elseif def.groups.cultivatable == 2 then - return "This block can be turned into farmland with a hoe." + return S("This block can be turned into farmland with a hoe.") end return "" end) @@ -33,15 +35,15 @@ end) doc.sub.items.register_factoid("nodes", "groups", function(itemstring, def) local datastring = "" if def.groups.soil_sapling == 2 then - datastring = datastring .. "This block acts as a soil for all saplings." .. "\n" + datastring = datastring .. S("This block acts as a soil for all saplings.") .. "\n" elseif def.groups.soil_sapling == 1 then - datastring = datastring .. "This block acts as a soil for some saplings." .. "\n" + datastring = datastring .. S("This block acts as a soil for some saplings.") .. "\n" end if def.groups.soil_sugarcane then - datastring = datastring .. "Sugar canes will grow on this block." .. "\n" + datastring = datastring .. S("Sugar canes will grow on this block.") .. "\n" end if def.groups.soil_nether_wart then - datastring = datastring .. "Nether wart will grow on this block." .. "\n" + datastring = datastring .. S("Nether wart will grow on this block.") .. "\n" end return datastring end) @@ -50,9 +52,9 @@ doc.sub.items.register_factoid("nodes", "groups", function(itemstring, def) local formstring = "" if def.groups.leafdecay ~= nil then if def.drop ~= "" and def.drop ~= nil and def.drop ~= itemstring then - formstring = string.format("This block quickly decays when there is no wood block of any species within a distance of %d. When decaying, it disappears and may drop one of its regular drops. The block does not decay when the block has been placed by a player.", def.groups.leafdecay) + formstring = S("This block quickly decays when there is no wood block of any species within a distance of @1. When decaying, it disappears and may drop one of its regular drops. The block does not decay when the block has been placed by a player.", def.groups.leafdecay) else - formstring = string.format("This block quickly decays and disappears when there is no wood block of any species within a distance of %d. The block does not decay when the block has been placed by a player.", def.groups.leafdecay) + formstring = S("This block quickly decays and disappears when there is no wood block of any species within a distance of @1. The block does not decay when the block has been placed by a player.", def.groups.leafdecay) end end return formstring @@ -62,9 +64,9 @@ end) doc.sub.items.register_factoid("nodes", "groups", function(itemstring, def) local datastring = "" if def.groups.place_flowerlike == 1 then - return "This plant can only grow on grass blocks and dirt. To survive, it needs to have an unobstructed view to the sky above or be exposed to a light level of 8 or higher." + return S("This plant can only grow on grass blocks and dirt. To survive, it needs to have an unobstructed view to the sky above or be exposed to a light level of 8 or higher.") elseif def.groups.place_flowerlike == 2 then - return "This plant can grow on grass blocks, podzol, dirt and coarse dirt. To survive, it needs to have an unobstructed view to the sky above or be exposed to a light level of 8 or higher." + return S("This plant can grow on grass blocks, podzol, dirt and coarse dirt. To survive, it needs to have an unobstructed view to the sky above or be exposed to a light level of 8 or higher.") end return "" end) @@ -72,7 +74,7 @@ end) -- flammable doc.sub.items.register_factoid("nodes", "groups", function(itemstring, def) if def.groups.flammable then - return "This block is flammable." + return S("This block is flammable.") end return "" end) @@ -80,7 +82,7 @@ end) -- destroys_items doc.sub.items.register_factoid("nodes", "groups", function(itemstring, def) if def.groups.destroys_items then - return "This block destroys any item it touches." + return S("This block destroys any item it touches.") end return "" end) @@ -91,25 +93,25 @@ doc.sub.items.register_factoid(nil, "use", function(itemstring, def) local s = "" if def.groups.eatable and not def._doc_items_usagehelp then if def.groups.food == 2 then - s = s .. "To eat it, wield it, then rightclick." + s = s .. S("To eat it, wield it, then rightclick.") if def.groups.can_eat_when_full == 1 then - s = s .. "\n" .. "You can eat this even when your hunger bar is full." + s = s .. "\n" .. S("You can eat this even when your hunger bar is full.") else - s = s .. "\n" .. "You cannot eat this when your hunger bar is full." + s = s .. "\n" .. S("You cannot eat this when your hunger bar is full.") end elseif def.groups.food == 3 then - s = s .. "To drink it, wield it, then rightclick." + s = s .. S("To drink it, wield it, then rightclick.") if def.groups.can_eat_when_full ~= 1 then - s = s .. "\n" .. "You cannot drink this when your hunger bar is full." + s = s .. "\n" .. S("You cannot drink this when your hunger bar is full.") end else - s = s .. "To consume it, wield it, then rightclick." + s = s .. S("To consume it, wield it, then rightclick.") if def.groups.can_eat_when_full ~= 1 then - s = s .. "\n" .. "You cannot consume this when your hunger bar is full." + s = s .. "\n" .. S("You cannot consume this when your hunger bar is full.") end end if def.groups.no_eat_delay ~= 1 then - s = s .. "\n" .. "You have to wait for about 2 seconds before you can eat or drink again." + s = s .. "\n" .. S("You have to wait for about 2 seconds before you can eat or drink again.") end end return s @@ -118,10 +120,10 @@ end) doc.sub.items.register_factoid(nil, "groups", function(itemstring, def) local s = "" if def.groups.eatable and def.groups.eatable > 0 then - s = s .. string.format("Hunger points restored: %d", def.groups.eatable) + s = s .. S("Hunger points restored: @1", def.groups.eatable) end if def._mcl_saturation and def._mcl_saturation > 0 then - s = s .. "\n" .. string.format("Saturation points restored: %.1f", def._mcl_saturation) + s = s .. "\n" .. S("Saturation points restored: @1%.1f", string.format("%.1f", def._mcl_saturation)) end return s end) @@ -132,12 +134,12 @@ doc.sub.items.register_factoid(nil, "groups", function(itemstring, def) local mdef = minetest.registered_items[def._repair_material] local desc if mdef and mdef.description and mdef.description ~= "" then - return string.format("This item can be repaired at an anvil with: %s.", mdef.description) + return S("This item can be repaired at an anvil with: @1.", mdef.description) elseif def._repair_material == "group:wood" then - return "This item can be repaired at an anvil with any wooden planks." + return S("This item can be repaired at an anvil with any wooden planks.") elseif string.sub(def._repair_material, 1, 6) == "group:" then local group = string.sub(def._repair_material, 7) - return string.format("This item can be repaired at an anvil with any item in the “%s” group.", group) + return S("This item can be repaired at an anvil with any item in the “@1” group.", group) end end return "" @@ -145,7 +147,7 @@ end) doc.sub.items.register_factoid(nil, "groups", function(itemstring, def) if minetest.get_item_group(itemstring, "no_rename") == 1 then - return "This item cannot be renamed at an anvil." + return S("This item cannot be renamed at an anvil.") else return "" end @@ -154,7 +156,7 @@ end) doc.sub.items.register_factoid("nodes", "gravity", function(itemstring, def) local s = "" if minetest.get_item_group(itemstring, "crush_after_fall") == 1 then - s = s .. "This block crushes any block it falls into." + s = s .. S("This block crushes any block it falls into.") end return s end) @@ -162,22 +164,22 @@ end) doc.sub.items.register_factoid("nodes", "gravity", function(itemstring, def) local s = "" if minetest.get_item_group(itemstring, "crush_after_fall") == 1 then - s = s .. "When this block falls deeper than 1 block, it causes damage to any player it hits. The damage dealt is B×2−2 hit points with B = number of blocks fallen. The damage can never be more than 40 HP." + s = s .. S("When this block falls deeper than 1 block, it causes damage to any player it hits. The damage dealt is B×2−2 hit points with B = number of blocks fallen. The damage can never be more than 40 HP.") end return s end) -- Mining, hardness and all that doc.sub.items.register_factoid("nodes", "mining", function(itemstring, def) - local pickaxey = { "Diamond Pickaxe", "Iron Pickaxe", "Stone Pickaxe", "Golden Pickaxe", "Wooden Pickaxe" } - local axey = { "Diamond Axe", "Iron Axe", "Stone Axe", "Golden Axe", "Wooden Axe" } - local shovely = { "Diamond Shovel", "Iron Shovel", "Stone Shovel", "Golden Shovel", "Wooden Shovel" } + local pickaxey = { S("Diamond Pickaxe"), S("Iron Pickaxe"), S("Stone Pickaxe"), S("Golden Pickaxe"), S("Wooden Pickaxe") } + local axey = { S("Diamond Axe"), S("Iron Axe"), S("Stone Axe"), S("Golden Axe"), S("Wooden Axe") } + local shovely = { S("Diamond Shovel"), S("Iron Shovel"), S("Stone Shovel"), S("Golden Shovel"), S("Wooden Shovel") } local datastring = "" local groups = def.groups if groups then if groups.dig_immediate == 3 then - datastring = datastring .. "This block can be mined by any tool instantly." .. "\n" + datastring = datastring .. S("This block can be mined by any tool instantly.") .. "\n" else local tool_minable = false @@ -213,7 +215,7 @@ doc.sub.items.register_factoid("nodes", "mining", function(itemstring, def) end if tool_minable then - datastring = "This block can be mined by:\n" .. datastring .. "\n" + datastring = S("This block can be mined by:") .. "\n" .. datastring .. "\n" end end end @@ -222,9 +224,9 @@ doc.sub.items.register_factoid("nodes", "mining", function(itemstring, def) hardness = 0 end if hardness == -1 then - datastring = datastring .. "Hardness: ∞" + datastring = datastring .. S("Hardness: ∞") else - datastring = datastring .. string.format("Hardness: %.2f", hardness) + datastring = datastring .. S("Hardness: @1", string.format("%.2f", hardness)) end local blast = def._mcl_blast_resistance if not blast then @@ -232,7 +234,7 @@ doc.sub.items.register_factoid("nodes", "mining", function(itemstring, def) end -- TODO: Blast resistance as number if blast >= 1000 then - datastring = datastring .. "\n" .. "This block will not be destroyed by TNT explosions." + datastring = datastring .. "\n" .. S("This block will not be destroyed by TNT explosions.") end return datastring end) @@ -240,7 +242,7 @@ end) -- Special drops when mined by shears doc.sub.items.register_factoid("nodes", "drops", function(itemstring, def) if def._mcl_shears_drop == true then - return "This block drops itself when mined by shears." + return S("This block drops itself when mined by shears.") elseif type(def._mcl_shears_drop) == "table" then local drops = {} for d=1, #def._mcl_shears_drop do @@ -255,11 +257,11 @@ doc.sub.items.register_factoid("nodes", "drops", function(itemstring, def) text = itemname end if itemcount > 1 then - text = string.format("%d×%s", itemcount, text) + text = S("@1×@2", itemcount, text) end table.insert(drops, text) end - local ret = string.format("This blocks drops the following when mined by shears: %s", table.concat(drops, ", ")) + local ret = S("This blocks drops the following when mined by shears: @1", table.concat(drops, S(", "))) return ret end return "" diff --git a/mods/HELP/mcl_doc_basics/depends.txt b/mods/HELP/mcl_doc_basics/depends.txt index 31aa3903..8e695ec8 100644 --- a/mods/HELP/mcl_doc_basics/depends.txt +++ b/mods/HELP/mcl_doc_basics/depends.txt @@ -1,2 +1 @@ doc -intllib? diff --git a/mods/HELP/mcl_doc_basics/init.lua b/mods/HELP/mcl_doc_basics/init.lua index f4980bfe..be4f4ae2 100644 --- a/mods/HELP/mcl_doc_basics/init.lua +++ b/mods/HELP/mcl_doc_basics/init.lua @@ -1,10 +1,4 @@ --- Boilerplate to support localized strings if intllib mod is installed. -local S -if minetest.get_modpath("intllib") then - S = intllib.Getter() -else - S = function(s) return s end -end +local S = minetest.get_translator("mcl_doc_basics") doc.add_category("basics", { From 0d6610dcee4fd12231cd244b78ed7340719043b6 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Thu, 7 Mar 2019 21:10:39 +0100 Subject: [PATCH 031/737] New translation system, part 3: HUD --- mods/HUD/awards/api.lua | 5 +- mods/HUD/awards/chat_commands.lua | 7 +- mods/HUD/awards/depends.txt | 1 - mods/HUD/awards/init.lua | 9 -- mods/HUD/awards/sfinv.lua | 7 +- mods/HUD/awards/triggers.lua | 7 +- mods/HUD/awards/unified_inventory.lua | 7 +- mods/HUD/mcl_achievements/depends.txt | 1 - mods/HUD/mcl_achievements/init.lua | 7 +- mods/HUD/mcl_death_messages/init.lua | 132 +++++++++++++------------- mods/HUD/mcl_inventory/creative.lua | 37 ++++---- mods/HUD/mcl_inventory/init.lua | 11 ++- 12 files changed, 100 insertions(+), 131 deletions(-) diff --git a/mods/HUD/awards/api.lua b/mods/HUD/awards/api.lua index 09f92917..d377f37c 100644 --- a/mods/HUD/awards/api.lua +++ b/mods/HUD/awards/api.lua @@ -29,10 +29,7 @@ function awards.save() end end -local S = function(s) return s end -function awards.set_intllib(locale) - S = locale -end +local S = minetest.get_translator("awards") function awards.init() awards.players = awards.load() diff --git a/mods/HUD/awards/chat_commands.lua b/mods/HUD/awards/chat_commands.lua index c386c19c..6571267d 100644 --- a/mods/HUD/awards/chat_commands.lua +++ b/mods/HUD/awards/chat_commands.lua @@ -14,12 +14,7 @@ -- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -- -local S -if minetest.get_modpath("intllib") then - S = intllib.Getter() -else - S = function ( s ) return s end -end +local S = minetest.get_translator("awards") minetest.register_chatcommand("awards", { params = S("[c|clear|disable|enable]"), diff --git a/mods/HUD/awards/depends.txt b/mods/HUD/awards/depends.txt index cffd9473..80a448a4 100644 --- a/mods/HUD/awards/depends.txt +++ b/mods/HUD/awards/depends.txt @@ -1,3 +1,2 @@ -intllib? sfinv? unified_inventory? diff --git a/mods/HUD/awards/init.lua b/mods/HUD/awards/init.lua index acf8bfdc..63c9303c 100644 --- a/mods/HUD/awards/init.lua +++ b/mods/HUD/awards/init.lua @@ -14,18 +14,9 @@ -- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -- - -local S -if minetest.get_modpath("intllib") then - S = intllib.Getter() -else - S = function ( s ) return s end -end - dofile(minetest.get_modpath("awards").."/api.lua") dofile(minetest.get_modpath("awards").."/chat_commands.lua") dofile(minetest.get_modpath("awards").."/sfinv.lua") dofile(minetest.get_modpath("awards").."/unified_inventory.lua") dofile(minetest.get_modpath("awards").."/triggers.lua") -awards.set_intllib(S) diff --git a/mods/HUD/awards/sfinv.lua b/mods/HUD/awards/sfinv.lua index de85998c..5d02cbb5 100644 --- a/mods/HUD/awards/sfinv.lua +++ b/mods/HUD/awards/sfinv.lua @@ -1,10 +1,5 @@ if minetest.get_modpath("sfinv") then - local S - if minetest.get_modpath("intllib") then - S = intllib.Getter() - else - S = function ( s ) return s end - end + local S = minetest.get_translator("awards") sfinv.register_page("awards:awards", { title = S("Awards"), diff --git a/mods/HUD/awards/triggers.lua b/mods/HUD/awards/triggers.lua index 88a952fd..42e126bd 100644 --- a/mods/HUD/awards/triggers.lua +++ b/mods/HUD/awards/triggers.lua @@ -14,12 +14,7 @@ -- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -- -local S -if minetest.get_modpath("intllib") then - S = intllib.Getter() -else - S = function ( s ) return s end -end +local S = minetest.get_translator("awards") awards.register_trigger("dig", function(def) local tmp = { diff --git a/mods/HUD/awards/unified_inventory.lua b/mods/HUD/awards/unified_inventory.lua index a4bb02dc..be5ca5f9 100644 --- a/mods/HUD/awards/unified_inventory.lua +++ b/mods/HUD/awards/unified_inventory.lua @@ -1,10 +1,5 @@ if minetest.get_modpath("unified_inventory") ~= nil then - local S - if minetest.get_modpath("intllib") then - S = intllib.Getter() - else - S = function ( s ) return s end - end + local S = minetest.get_translator("awards") unified_inventory.register_button("awards", { type = "image", diff --git a/mods/HUD/mcl_achievements/depends.txt b/mods/HUD/mcl_achievements/depends.txt index 1679faeb..203a4c0a 100644 --- a/mods/HUD/mcl_achievements/depends.txt +++ b/mods/HUD/mcl_achievements/depends.txt @@ -1,2 +1 @@ awards -intllib? diff --git a/mods/HUD/mcl_achievements/init.lua b/mods/HUD/mcl_achievements/init.lua index fed23ee3..cfeea18b 100644 --- a/mods/HUD/mcl_achievements/init.lua +++ b/mods/HUD/mcl_achievements/init.lua @@ -3,12 +3,7 @@ -- If true, activates achievements from other Minecraft editions (XBox, PS, etc.) local non_pc_achievements = false -local S -if minetest.get_modpath("intllib") then - S = intllib.Getter() -else - S = function ( s ) return s end -end +local S = minetest.get_translator("mcl_achievements") -- Achievements from PC Edition diff --git a/mods/HUD/mcl_death_messages/init.lua b/mods/HUD/mcl_death_messages/init.lua index 00f39ac4..302b1a67 100644 --- a/mods/HUD/mcl_death_messages/init.lua +++ b/mods/HUD/mcl_death_messages/init.lua @@ -1,101 +1,103 @@ +local S = minetest.get_translator("mcl_death_messages") + mcl_death_messages = {} -- Death messages local msgs = { ["arrow"] = { - "%s was fatally hit by an arrow.", - "%s has been killed with an arrow.", + S("%s was fatally hit by an arrow."), + S("%s has been killed with an arrow."), }, ["arrow_name"] = { - "%s was shot by an arrow from %s.", + S("%s was shot by an arrow from %s."), }, ["fire"] = { - "%s has been cooked crisp.", - "%s felt the burn.", - "%s died in the flames.", - "%s died in a fire.", + S("%s has been cooked crisp."), + S("%s felt the burn."), + S("%s died in the flames."), + S("%s died in a fire."), }, ["lava"] = { - "%s melted in lava.", - "%s took a bath in a hot lava tub.", - "%s died in lava.", - "%s could not survive in lava.", + S("%s melted in lava."), + S("%s took a bath in a hot lava tub."), + S("%s died in lava."), + S("%s could not survive in lava."), }, ["drown"] = { - "%s forgot to breathe.", - "%s drowned.", - "%s ran out of oxygen.", + S("%s forgot to breathe."), + S("%s drowned."), + S("%s ran out of oxygen."), }, ["starve"] = { - "%s starved.", + S("%s starved."), }, ["murder"] = { - "%s was killed by %s.", + S("%s was killed by %s."), }, ["mob_kill"] = { - "%s was killed by a mob.", + S("%s was killed by a mob."), }, ["blaze_fireball"] = { - "%s was burned to death by a blaze's fireball.", - "%s was killed by a fireball from a blaze.", + S("%s was burned to death by a blaze's fireball."), + S("%s was killed by a fireball from a blaze."), }, ["fire_charge"] = { - "%s was hit by a fire charge.", + S("%s was hit by a fire charge."), }, ["ghast_fireball"] = { - "A ghast scared %s to death.", - "%s has been fireballed by a ghast.", + S("A ghast scared %s to death."), + S("%s has been fireballed by a ghast."), }, ["fall_damage"] = { - "%s fell from a high cliff.", - "%s took fatal fall damage.", - "%s fell victim to gravity.", + S("%s fell from a high cliff."), + S("%s took fatal fall damage."), + S("%s fell victim to gravity."), }, ["other"] = { - "%s died.", + S("%s died."), } } local mobkills = { - ["mobs_mc:zombie"] = "%s was killed by a zombie.", - ["mobs_mc:baby_zombie"] = "%s was killed by a baby zombie.", - ["mobs_mc:blaze"] = "%s was killed by a blaze.", - ["mobs_mc:slime"] = "%s was killed by a slime.", - ["mobs_mc:witch"] = "%s was killed by a witch.", - ["mobs_mc:magma_cube_tiny"] = "%s was killed by a magma cube.", - ["mobs_mc:magma_cube_small"] = "%s was killed by a magma cube.", - ["mobs_mc:magma_cube_big"] = "%s was killed by a magma cube.", - ["mobs_mc:wolf"] = "%s was killed by a wolf.", - ["mobs_mc:cat"] = "%s was killed by a cat.", - ["mobs_mc:ocelot"] = "%s was killed by an ocelot.", - ["mobs_mc:ender_dragon"] = "%s was killed by an ender dragon.", - ["mobs_mc:wither"] = "%s was killed by a wither.", - ["mobs_mc:enderman"] = "%s was killed by an enderman.", - ["mobs_mc:endermite"] = "%s was killed by an endermite.", - ["mobs_mc:ghast"] = "%s was killed by a ghast.", - ["mobs_mc:guardian_elder"] = "%s was killed by an elder guardian.", - ["mobs_mc:guardian"] = "%s was killed by a guardian.", - ["mobs_mc:iron_golem"] = "%s was killed by an iron golem.", - ["mobs_mc:polar_bear"] = "%s was killed by a polar_bear.", - ["mobs_mc:killer_bunny"] = "%s was killed by a killer bunny.", - ["mobs_mc:shulker"] = "%s was killed by a shulker.", - ["mobs_mc:silverfish"] = "%s was killed by a silverfish.", - ["mobs_mc:skeleton"] = "%s was killed by a skeleton.", - ["mobs_mc:stray"] = "%s was killed by a stray.", - ["mobs_mc:slime_tiny"] = "%s was killed by a slime.", - ["mobs_mc:slime_small"] = "%s was killed by a slime.", - ["mobs_mc:slime_big"] = "%s was killed by a slime.", - ["mobs_mc:spider"] = "%s was killed by a spider.", - ["mobs_mc:cave_spider"] = "%s was killed by a cave spider.", - ["mobs_mc:vex"] = "%s was killed by a vex.", - ["mobs_mc:evoker"] = "%s was killed by an evoker.", - ["mobs_mc:illusioner"] = "%s was killed by an illusioner.", - ["mobs_mc:vindicator"] = "%s was killed by a vindicator.", - ["mobs_mc:villager_zombie"] = "%s was killed by a zombie villager.", - ["mobs_mc:husk"] = "%s was killed by a husk.", - ["mobs_mc:baby_husk"] = "%s was killed by a baby husk.", - ["mobs_mc:pigman"] = "%s was killed by a zombie pigman.", - ["mobs_mc:baby_pigman"] = "%s was killed by a baby zombie pigman.", + ["mobs_mc:zombie"] = S("%s was killed by a zombie."), + ["mobs_mc:baby_zombie"] = S("%s was killed by a baby zombie."), + ["mobs_mc:blaze"] = S("%s was killed by a blaze."), + ["mobs_mc:slime"] = S("%s was killed by a slime."), + ["mobs_mc:witch"] = S("%s was killed by a witch."), + ["mobs_mc:magma_cube_tiny"] = S("%s was killed by a magma cube."), + ["mobs_mc:magma_cube_small"] = S("%s was killed by a magma cube."), + ["mobs_mc:magma_cube_big"] = S("%s was killed by a magma cube."), + ["mobs_mc:wolf"] = S("%s was killed by a wolf."), + ["mobs_mc:cat"] = S("%s was killed by a cat."), + ["mobs_mc:ocelot"] = S("%s was killed by an ocelot."), + ["mobs_mc:ender_dragon"] = S("%s was killed by an ender dragon."), + ["mobs_mc:wither"] = S("%s was killed by a wither."), + ["mobs_mc:enderman"] = S("%s was killed by an enderman."), + ["mobs_mc:endermite"] = S("%s was killed by an endermite."), + ["mobs_mc:ghast"] = S("%s was killed by a ghast."), + ["mobs_mc:guardian_elder"] = S("%s was killed by an elder guardian."), + ["mobs_mc:guardian"] = S("%s was killed by a guardian."), + ["mobs_mc:iron_golem"] = S("%s was killed by an iron golem."), + ["mobs_mc:polar_bear"] = S("%s was killed by a polar_bear."), + ["mobs_mc:killer_bunny"] = S("%s was killed by a killer bunny."), + ["mobs_mc:shulker"] = S("%s was killed by a shulker."), + ["mobs_mc:silverfish"] = S("%s was killed by a silverfish."), + ["mobs_mc:skeleton"] = S("%s was killed by a skeleton."), + ["mobs_mc:stray"] = S("%s was killed by a stray."), + ["mobs_mc:slime_tiny"] = S("%s was killed by a slime."), + ["mobs_mc:slime_small"] = S("%s was killed by a slime."), + ["mobs_mc:slime_big"] = S("%s was killed by a slime."), + ["mobs_mc:spider"] = S("%s was killed by a spider."), + ["mobs_mc:cave_spider"] = S("%s was killed by a cave spider."), + ["mobs_mc:vex"] = S("%s was killed by a vex."), + ["mobs_mc:evoker"] = S("%s was killed by an evoker."), + ["mobs_mc:illusioner"] = S("%s was killed by an illusioner."), + ["mobs_mc:vindicator"] = S("%s was killed by a vindicator."), + ["mobs_mc:villager_zombie"] = S("%s was killed by a zombie villager."), + ["mobs_mc:husk"] = S("%s was killed by a husk."), + ["mobs_mc:baby_husk"] = S("%s was killed by a baby husk."), + ["mobs_mc:pigman"] = S("%s was killed by a zombie pigman."), + ["mobs_mc:baby_pigman"] = S("%s was killed by a baby zombie pigman."), } -- Select death message diff --git a/mods/HUD/mcl_inventory/creative.lua b/mods/HUD/mcl_inventory/creative.lua index 536cc56a..2637ac28 100644 --- a/mods/HUD/mcl_inventory/creative.lua +++ b/mods/HUD/mcl_inventory/creative.lua @@ -1,3 +1,6 @@ +local S = minetest.get_translator("mcl_inventory") +local F = function(s) return minetest.formspec_escape(S(s)) end + -- Prepare player info table local players = {} @@ -320,16 +323,16 @@ mcl_inventory.set_creative_formspec = function(player, start_i, pagenum, inv_siz player_preview.. -- crafting guide button "image_button[9,1;1,1;craftguide_book.png;__mcl_craftguide;]".. - "tooltip[__mcl_craftguide;Recipe book]".. + "tooltip[__mcl_craftguide;"..F("Recipe book")"..]".. -- help button "image_button[9,2;1,1;doc_button_icon_lores.png;__mcl_doc;]".. - "tooltip[__mcl_doc;Help]".. + "tooltip[__mcl_doc;"..F("Help").."]".. -- skins button "image_button[9,3;1,1;mcl_skins_button.png;__mcl_skins;]".. - "tooltip[__mcl_skins;Select player skin]".. + "tooltip[__mcl_skins;"..F("Select player skin").."]".. -- achievements button "image_button[9,4;1,1;mcl_achievements_button.png;__mcl_achievements;]".. - "tooltip[__mcl_achievements;Achievements]" + "tooltip[__mcl_achievements;"..F("Achievements").."]" -- For shortcuts listrings = listrings .. @@ -382,35 +385,35 @@ mcl_inventory.set_creative_formspec = function(player, start_i, pagenum, inv_siz "background[-0.19,-0.25;10.5,9.87;"..inv_bg.."]".. "label[-5,-5;"..name.."]".. tab(name, "blocks") .. - "tooltip[blocks;Building Blocks]".. + "tooltip[blocks;"..F("Building Blocks").."]".. tab(name, "deco") .. - "tooltip[deco;Decoration Blocks]".. + "tooltip[deco;"..F("Decoration Blocks").."]".. tab(name, "redstone") .. - "tooltip[redstone;Redstone]".. + "tooltip[redstone;"..F("Redstone").."]".. tab(name, "rail") .. - "tooltip[rail;Transportation]".. + "tooltip[rail;"..F("Transportation").."]".. tab(name, "misc") .. - "tooltip[misc;Miscellaneous]".. + "tooltip[misc;"..F("Miscellaneous").."]".. tab(name, "nix") .. - "tooltip[nix;Search Items]".. + "tooltip[nix;"..F("Search Items").."]".. fnt.. "list[current_player;main;0,7;9,1;]".. main_list.. tab(name, "food") .. - "tooltip[food;Foodstuffs]".. + "tooltip[food;"..F("Foodstuffs").."]".. tab(name, "tools") .. - "tooltip[tools;Tools]".. + "tooltip[tools;"..F("Tools").."]".. tab(name, "combat") .. - "tooltip[combat;Combat]".. + "tooltip[combat;"..F("Combat").."]".. tab(name, "mobs") .. - "tooltip[mobs;Mobs]".. + "tooltip[mobs;"..F("Mobs").."]".. -- TODO: Add brew --tab(name, "brew") .. - --"tooltip[brew;Brewing]".. + --"tooltip[brew;"..F("Brewing").."]".. tab(name, "matr") .. - "tooltip[matr;Materials]".. + "tooltip[matr;"..F("Materials").."]".. tab(name, "inv") .. - "tooltip[inv;Survival Inventory]".. + "tooltip[inv;"..F("Survival Inventory").."]".. "list[detached:trash;main;9,7;1,1;]".. "image[9,7;1,1;crafting_creative_trash.png]".. listrings diff --git a/mods/HUD/mcl_inventory/init.lua b/mods/HUD/mcl_inventory/init.lua index bed3c485..899abeba 100644 --- a/mods/HUD/mcl_inventory/init.lua +++ b/mods/HUD/mcl_inventory/init.lua @@ -1,3 +1,6 @@ +local S = minetest.get_translator("mcl_inventory") +local F = function(s) return minetest.formspec_escape(S(s)) end + mcl_inventory = {} local show_armor = minetest.get_modpath("3d_armor") ~= nil @@ -101,16 +104,16 @@ local function set_inventory(player, armor_change_only) "list[current_player;craftpreview;7,1.5;1,1;]".. -- crafting guide button "image_button[4.5,3;1,1;craftguide_book.png;__mcl_craftguide;]".. - "tooltip[__mcl_craftguide;Recipe book]".. + "tooltip[__mcl_craftguide;"..F("Recipe book").."]".. -- help button "image_button[8,3;1,1;doc_button_icon_lores.png;__mcl_doc;]".. - "tooltip[__mcl_doc;Help]".. + "tooltip[__mcl_doc;"..F("Help").."]".. -- skins button "image_button[3,3;1,1;mcl_skins_button.png;__mcl_skins;]".. - "tooltip[__mcl_skins;Select player skin]".. + "tooltip[__mcl_skins;"..F("Select player skin").."]".. -- achievements button "image_button[7,3;1,1;mcl_achievements_button.png;__mcl_achievements;]".. - "tooltip[__mcl_achievements;Achievements]".. + "tooltip[__mcl_achievements;"..F("Achievements").."]".. -- for shortcuts "listring[current_player;main]".. "listring[current_player;craft]".. From 0cc038c5452d972e76c1f9179edc37f25b972dc9 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Thu, 7 Mar 2019 21:14:30 +0100 Subject: [PATCH 032/737] New translation system, part 4: Misc/Player --- mods/MISC/mcl_commands/init.lua | 7 +------ mods/MISC/mcl_privs/init.lua | 4 +++- mods/MISC/mcl_wip/init.lua | 6 ++++-- mods/PLAYER/mcl_skins/init.lua | 5 +---- 4 files changed, 9 insertions(+), 13 deletions(-) diff --git a/mods/MISC/mcl_commands/init.lua b/mods/MISC/mcl_commands/init.lua index b7ce1e1c..50dd0526 100644 --- a/mods/MISC/mcl_commands/init.lua +++ b/mods/MISC/mcl_commands/init.lua @@ -1,11 +1,6 @@ local minecraftaliases = true -local S -if minetest.get_modpath("intllib") then - S = intllib.Getter() -else - S = function(s,a,...)a={a,...}return s:gsub("@(%d+)",function(n)return a[tonumber(n)]end)end -end +local S = minetest.get_translator("mcl_commands") local function handle_kill_command(suspect, victim) if minetest.settings:get_bool("enable_damage") == false then diff --git a/mods/MISC/mcl_privs/init.lua b/mods/MISC/mcl_privs/init.lua index c242ed3d..00670db1 100644 --- a/mods/MISC/mcl_privs/init.lua +++ b/mods/MISC/mcl_privs/init.lua @@ -1,3 +1,5 @@ +local S = minetest.get_translator("mcl_privs") + minetest.register_privilege("maphack", { - description = "Can place and use advanced blocks like mob spawners, command blocks and barriers.", + description = S("Can place and use advanced blocks like mob spawners, command blocks and barriers."), }) diff --git a/mods/MISC/mcl_wip/init.lua b/mods/MISC/mcl_wip/init.lua index 8f9d206b..640cc376 100644 --- a/mods/MISC/mcl_wip/init.lua +++ b/mods/MISC/mcl_wip/init.lua @@ -1,3 +1,5 @@ +local S = minetest.get_translator("mcl_wip") + local wip_items = { "mcl_fishing:fishing_rod", "mcl_maps:empty_map", @@ -27,7 +29,7 @@ for i=1,#wip_items do if new_description == "" then new_description = wip_items[i] end - new_description = new_description .. "\n"..core.colorize("#FF0000", "(WIP)") + new_description = new_description .. "\n"..core.colorize("#FF0000", S("(WIP)")) new_groups.not_in_craft_guide = 1 minetest.override_item(wip_items[i], { description = new_description, groups = new_groups }) end @@ -39,7 +41,7 @@ for i=1,#experimental_items do break end local new_description = def.description - new_description = new_description .. "\n"..core.colorize("#FFFF00", "(Temporary)") + new_description = new_description .. "\n"..core.colorize("#FFFF00", S("(Temporary)")) minetest.override_item(experimental_items[i], { description = new_description }) end diff --git a/mods/PLAYER/mcl_skins/init.lua b/mods/PLAYER/mcl_skins/init.lua index 25dd17ac..fac543e3 100644 --- a/mods/PLAYER/mcl_skins/init.lua +++ b/mods/PLAYER/mcl_skins/init.lua @@ -6,10 +6,7 @@ mcl_skins = { skin_count = 0, -- counter of _custom_ skins (all skins except character.png) } - --- Load support for intllib. -local S, NS = dofile(mcl_skins.modpath .. "/intllib.lua") - +local S = minetest.get_translator("mcl_skins") -- load skin list and metadata local id, f, data, skin = 0 From 342202c979103870156680497b4aab00a5dbf6d7 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Thu, 7 Mar 2019 21:35:02 +0100 Subject: [PATCH 033/737] New translation system, part 5: Items, part 1 --- mods/ITEMS/mcl_anvils/init.lua | 26 ++++---- mods/ITEMS/mcl_banners/init.lua | 40 ++++++------ mods/ITEMS/mcl_banners/patterncraft.lua | 82 +++++++++++++------------ mods/ITEMS/mcl_beds/api.lua | 13 ++-- mods/ITEMS/mcl_beds/beds.lua | 34 +++++----- mods/ITEMS/mcl_beds/functions.lua | 20 +++--- mods/ITEMS/mcl_books/init.lua | 52 ++++++++-------- mods/ITEMS/mcl_bows/arrow.lua | 12 ++-- mods/ITEMS/mcl_bows/bow.lua | 12 ++-- 9 files changed, 153 insertions(+), 138 deletions(-) diff --git a/mods/ITEMS/mcl_anvils/init.lua b/mods/ITEMS/mcl_anvils/init.lua index 8b3717a3..0eae2ce5 100644 --- a/mods/ITEMS/mcl_anvils/init.lua +++ b/mods/ITEMS/mcl_anvils/init.lua @@ -1,3 +1,5 @@ +local S = minetest.get_translator("mcl_anvils") + local MAX_NAME_LENGTH = 30 local MAX_WEAR = 65535 local SAME_TOOL_REPAIR_BOOST = math.ceil(MAX_WEAR * 0.12) -- 12% @@ -23,7 +25,7 @@ local function get_anvil_formspec(set_name) "list[context;output;8,2.5;1,1;]".. "field[3.25,1;4,1;name;;"..minetest.formspec_escape(set_name).."]".. "field_close_on_enter[name;false]".. - "button[7,0.7;2,1;name_button;Set Name]".. + "button[7,0.7;2,1;name_button;"..minetest.formspec_escape(S("Set Name")).."]".. "listring[context;output]".. "listring[current_player;main]".. "listring[context;input]".. @@ -433,20 +435,20 @@ if minetest.get_modpath("screwdriver") then end local anvildef0 = table.copy(anvildef) -anvildef0.description = "Anvil" +anvildef0.description = S("Anvil") anvildef0._doc_items_longdesc = -[[The anvil allows you to repair tools and armor, and to give names to items. It has a limited durability, however. Don't let it fall on your head, it could be quite painful!]] +S("The anvil allows you to repair tools and armor, and to give names to items. It has a limited durability, however. Don't let it fall on your head, it could be quite painful!") anvildef0._doc_items_usagehelp = -"To use an anvil, rightclick it. An anvil has 2 input slots (on the left) and one output slot.".."\n".. -"To rename items, put an item stack in one of the item slots while keeping the other input slot empty. Type in a name, hit enter or “Set Name”, then take the renamed item from the output slot.".."\n".. -"There are two possibilities to repair tools (and armor):".."\n".. -"• Tool + Tool: Place two tools of the same type in the input slots. The “health” of the repaired tool is the sum of the “health” of both input tools, plus a 12% bonus.".."\n".. -"• Tool + Material: Some tools can also be repaired by combining them with an item that it's made of. For example, iron pickaxes can be repaired with iron ingots. This repairs the tool by 25%.".."\n".. -"Armor counts as a tool. It is possible to repair and rename a tool in a single step.".."\n\n".. -"The anvil has limited durability and 3 damage levels: undamaged, slightly damaged and very damaged. Each time you repair or rename something, there is a 12% chance the anvil gets damaged. Anvils also have a chance of being damaged when they fall by more than 1 block. If a very damaged anvil is damaged again, it is destroyed." +S("To use an anvil, rightclick it. An anvil has 2 input slots (on the left) and one output slot.").."\n".. +S("To rename items, put an item stack in one of the item slots while keeping the other input slot empty. Type in a name, hit enter or “Set Name”, then take the renamed item from the output slot.").."\n".. +S("There are two possibilities to repair tools (and armor):").."\n".. +S("• Tool + Tool: Place two tools of the same type in the input slots. The “health” of the repaired tool is the sum of the “health” of both input tools, plus a 12% bonus.").."\n".. +S("• Tool + Material: Some tools can also be repaired by combining them with an item that it's made of. For example, iron pickaxes can be repaired with iron ingots. This repairs the tool by 25%.").."\n".. +S("Armor counts as a tool. It is possible to repair and rename a tool in a single step.").."\n\n".. +S("The anvil has limited durability and 3 damage levels: undamaged, slightly damaged and very damaged. Each time you repair or rename something, there is a 12% chance the anvil gets damaged. Anvils also have a chance of being damaged when they fall by more than 1 block. If a very damaged anvil is damaged again, it is destroyed.") local anvildef1 = table.copy(anvildef) -anvildef1.description = "Slightly Damaged Anvil" +anvildef1.description = S("Slightly Damaged Anvil") anvildef1._doc_items_create_entry = false anvildef1.groups.not_in_creative_inventory = 1 anvildef1.groups.anvil = 2 @@ -454,7 +456,7 @@ anvildef1._doc_items_create_entry = false anvildef1.tiles = {"mcl_anvils_anvil_top_damaged_1.png^[transformR90", "mcl_anvils_anvil_base.png", "mcl_anvils_anvil_side.png"} local anvildef2 = table.copy(anvildef) -anvildef2.description = "Very Damaged Anvil" +anvildef2.description = S("Very Damaged Anvil") anvildef2._doc_items_create_entry = false anvildef2.groups.not_in_creative_inventory = 1 anvildef2.groups.anvil = 3 diff --git a/mods/ITEMS/mcl_banners/init.lua b/mods/ITEMS/mcl_banners/init.lua index d1df29d0..2c7304b9 100644 --- a/mods/ITEMS/mcl_banners/init.lua +++ b/mods/ITEMS/mcl_banners/init.lua @@ -1,3 +1,5 @@ +local S = minetest.get_translator("mcl_banners") + local node_sounds if minetest.get_modpath("mcl_sounds") then node_sounds = mcl_sounds.node_sound_wood_defaults() @@ -14,22 +16,22 @@ mcl_banners = {} mcl_banners.colors = { -- Format: -- [ID] = { banner description, wool, unified dyes color group, overlay color, dye, color name for emblazonings } - ["unicolor_white"] = {"white", "White Banner", "mcl_wool:white", "#FFFFFF", "mcl_dye:white", "White" }, - ["unicolor_darkgrey"] = {"grey", "Grey Banner", "mcl_wool:grey", "#303030", "mcl_dye:dark_grey", "Grey" }, - ["unicolor_grey"] = {"silver", "Light Grey Banner", "mcl_wool:silver", "#5B5B5B", "mcl_dye:grey", "Light Grey" }, - ["unicolor_black"] = {"black", "Black Banner", "mcl_wool:black", "#000000", "mcl_dye:black", "Black" }, - ["unicolor_red"] = {"red", "Red Banner", "mcl_wool:red", "#BC0000", "mcl_dye:red", "Red" }, - ["unicolor_yellow"] = {"yellow", "Yellow Banner", "mcl_wool:yellow", "#E6CD00", "mcl_dye:yellow", "Yellow" }, - ["unicolor_dark_green"] = {"green", "Green Banner", "mcl_wool:green", "#006000", "mcl_dye:dark_green", "Green" }, - ["unicolor_cyan"] = {"cyan", "Cyan Banner", "mcl_wool:cyan", "#00ACAC", "mcl_dye:cyan", "Cyan" }, - ["unicolor_blue"] = {"blue", "Blue Banner", "mcl_wool:blue", "#0000AC", "mcl_dye:blue", "Blue" }, - ["unicolor_red_violet"] = {"magenta", "Magenta Banner", "mcl_wool:magenta", "#AC007C", "mcl_dye:magenta", "Magenta"}, - ["unicolor_orange"] = {"orange", "Orange Banner", "mcl_wool:orange", "#E67300", "mcl_dye:orange", "Orange" }, - ["unicolor_violet"] = {"purple", "Purple Banner", "mcl_wool:purple", "#6400AC", "mcl_dye:violet", "Violet" }, - ["unicolor_brown"] = {"brown", "Brown Banner", "mcl_wool:brown", "#603000", "mcl_dye:brown", "Brown" }, - ["unicolor_pink"] = {"pink", "Pink Banner", "mcl_wool:pink", "#DE557C", "mcl_dye:pink", "Pink" }, - ["unicolor_lime"] = {"lime", "Lime Banner", "mcl_wool:lime", "#30AC00", "mcl_dye:green", "Lime" }, - ["unicolor_light_blue"] = {"light_blue", "Light Blue Banner", "mcl_wool:light_blue", "#4040CF", "mcl_dye:lightblue", "Light Blue" }, + ["unicolor_white"] = {"white", S("White Banner"), "mcl_wool:white", "#FFFFFF", "mcl_dye:white", "White" }, + ["unicolor_darkgrey"] = {"grey", S("Grey Banner"), "mcl_wool:grey", "#303030", "mcl_dye:dark_grey", "Grey" }, + ["unicolor_grey"] = {"silver", S("Light Grey Banner"), "mcl_wool:silver", "#5B5B5B", "mcl_dye:grey", "Light Grey" }, + ["unicolor_black"] = {"black", S("Black Banner"), "mcl_wool:black", "#000000", "mcl_dye:black", "Black" }, + ["unicolor_red"] = {"red", S("Red Banner"), "mcl_wool:red", "#BC0000", "mcl_dye:red", "Red" }, + ["unicolor_yellow"] = {"yellow", S("Yellow Banner"), "mcl_wool:yellow", "#E6CD00", "mcl_dye:yellow", "Yellow" }, + ["unicolor_dark_green"] = {"green", S("Green Banner"), "mcl_wool:green", "#006000", "mcl_dye:dark_green", "Green" }, + ["unicolor_cyan"] = {"cyan", S("Cyan Banner"), "mcl_wool:cyan", "#00ACAC", "mcl_dye:cyan", "Cyan" }, + ["unicolor_blue"] = {"blue", S("Blue Banner"), "mcl_wool:blue", "#0000AC", "mcl_dye:blue", "Blue" }, + ["unicolor_red_violet"] = {"magenta", S("Magenta Banner"), "mcl_wool:magenta", "#AC007C", "mcl_dye:magenta", "Magenta"}, + ["unicolor_orange"] = {"orange", S("Orange Banner"), "mcl_wool:orange", "#E67300", "mcl_dye:orange", "Orange" }, + ["unicolor_violet"] = {"purple", S("Purple Banner"), "mcl_wool:purple", "#6400AC", "mcl_dye:violet", "Violet" }, + ["unicolor_brown"] = {"brown", S("Brown Banner"), "mcl_wool:brown", "#603000", "mcl_dye:brown", "Brown" }, + ["unicolor_pink"] = {"pink", S("Pink Banner"), "mcl_wool:pink", "#DE557C", "mcl_dye:pink", "Pink" }, + ["unicolor_lime"] = {"lime", S("Lime Banner"), "mcl_wool:lime", "#30AC00", "mcl_dye:green", "Lime" }, + ["unicolor_light_blue"] = {"light_blue", S("Light Blue Banner"), "mcl_wool:light_blue", "#4040CF", "mcl_dye:lightblue", "Light Blue" }, } local colors_reverse = {} @@ -192,9 +194,9 @@ end minetest.register_node("mcl_banners:standing_banner", { _doc_items_entry_name = "Banner", _doc_items_image = "mcl_banners_item_base.png^mcl_banners_item_overlay.png", - _doc_items_longdesc = "Banners are tall colorful decorative blocks. They can be placed on the floor and at walls. Banners can be emblazoned with a variety of patterns using a lot of dye in crafting.", - _doc_items_usagehelp = [[Use crafting to draw a pattern on top of the banner. Emblazoned banners can be emblazoned again to combine various patterns. You can draw up to 12 layers on a banner that way. If the banner includes a gradient, only 3 layers are possible. -You can copy the pattern of a banner by placing two banners of the same color in the crafting grid—one needs to be emblazoned, the other one must be clean. Finally, you can use a banner on a cauldron with water to wash off its top-most layer.]], + _doc_items_longdesc = S("Banners are tall colorful decorative blocks. They can be placed on the floor and at walls. Banners can be emblazoned with a variety of patterns using a lot of dye in crafting."), + _doc_items_usagehelp = S("Use crafting to draw a pattern on top of the banner. Emblazoned banners can be emblazoned again to combine various patterns. You can draw up to 12 layers on a banner that way. If the banner includes a gradient, only 3 layers are possible.").."\n".. +S("You can copy the pattern of a banner by placing two banners of the same color in the crafting grid—one needs to be emblazoned, the other one must be clean. Finally, you can use a banner on a cauldron with water to wash off its top-most layer."), walkable = false, is_ground_content = false, paramtype = "light", diff --git a/mods/ITEMS/mcl_banners/patterncraft.lua b/mods/ITEMS/mcl_banners/patterncraft.lua index f60d5678..5518f883 100644 --- a/mods/ITEMS/mcl_banners/patterncraft.lua +++ b/mods/ITEMS/mcl_banners/patterncraft.lua @@ -1,3 +1,5 @@ +local S = minetest.get_translator("mcl_banners") + -- Pattern crafting. This file contains the code for crafting all the -- emblazonings you can put on the banners. It's quite complicated; -- run-of-the-mill crafting won't work here. @@ -17,99 +19,99 @@ local d = "group:dye" -- dye local e = "" -- empty slot (one of them must contain the banner) local patterns = { ["border"] = { - name = "%s Bordure", + name = S("%s Bordure"), { d, d, d }, { d, e, d }, { d, d, d }, }, ["bricks"] = { - name = "%s Bricks", + name = S("%s Bricks"), type = "shapeless", { e, "mcl_core:brick_block", d }, }, ["circle"] = { - name = "%s Roundel", + name = S("%s Roundel"), { e, e, e }, { e, d, e }, { e, e, e }, }, ["creeper"] = { - name = "%s Creeper Charge", + name = S("%s Creeper Charge"), type = "shapeless", { e, "mcl_heads:creeper", d }, }, ["cross"] = { - name = "%s Saltire", + name = S("%s Saltire"), { d, e, d }, { e, d, e }, { d, e, d }, }, ["curly_border"] = { - name = "%s Bordure Indented", + name = S("%s Bordure Indented"), type = "shapeless", { e, "mcl_core:vine", d }, }, ["diagonal_up_left"] = { - name = "%s Per Bend Inverted", + name = S("%s Per Bend Inverted"), { e, e, e }, { d, e, e }, { d, d, e }, }, ["diagonal_up_right"] = { - name = "%s Per Bend Sinister Inverted", + name = S("%s Per Bend Sinister Inverted"), { e, e, e }, { e, e, d }, { e, d, d }, }, ["diagonal_right"] = { - name = "%s Per Bend", + name = S("%s Per Bend"), { e, d, d }, { e, e, d }, { e, e, e }, }, ["diagonal_left"] = { - name = "%s Per Bend Sinister", + name = S("%s Per Bend Sinister"), { d, d, e }, { d, e, e }, { e, e, e }, }, ["flower"] = { - name = "%s Flower Charge", + name = S("%s Flower Charge"), type = "shapeless", { e, "mcl_flowers:oxeye_daisy", d }, }, ["gradient"] = { - name = "%s Gradient", + name = S("%s Gradient"), { d, e, d }, { e, d, e }, { e, d, e }, }, ["gradient_up"] = { - name = "%s Base Gradient", + name = S("%s Base Gradient"), { e, d, e }, { e, d, e }, { d, e, d }, }, ["half_horizontal_bottom"] = { - name = "%s Per Fess Inverted", + name = S("%s Per Fess Inverted"), { e, e, e }, { d, d, d }, { d, d, d }, }, ["half_horizontal"] = { - name = "%s Per Fess", + name = S("%s Per Fess"), { d, d, d }, { d, d, d }, { e, e, e }, }, ["half_vertical"] = { - name = "%s Per Pale", + name = S("%s Per Pale"), { d, d, e }, { d, d, e }, { d, d, e }, }, ["half_vertical_right"] = { - name = "%s Per Pale Inverted", + name = S("%s Per Pale Inverted"), { e, d, d }, { e, d, d }, { e, d, d }, @@ -117,126 +119,126 @@ local patterns = { ["thing"] = { -- Symbol used for the “Thing”: U+1F65D 🙝 - name = "%s Thing Charge", + name = S("%s Thing Charge"), type = "shapeless", -- TODO: Replace with enchanted golden apple { e, "mcl_core:apple_gold", d }, }, ["rhombus"] = { - name = "%s Lozenge", + name = S("%s Lozenge"), { e, d, e }, { d, e, d }, { e, d, e }, }, ["skull"] = { - name = "%s Skull Charge", + name = S("%s Skull Charge"), type = "shapeless", { e, "mcl_heads:wither_skeleton", d }, }, ["small_stripes"] = { - name = "%s Paly", + name = S("%s Paly"), { d, e, d }, { d, e, d }, { e, e, e }, }, ["square_bottom_left"] = { - name = "%s Base Dexter Canton", + name = S("%s Base Dexter Canton"), { e, e, e }, { e, e, e }, { d, e, e }, }, ["square_bottom_right"] = { - name = "%s Base Sinister Canton", + name = S("%s Base Sinister Canton"), { e, e, e }, { e, e, e }, { e, e, d }, }, ["square_top_left"] = { - name = "%s Chief Dexter Canton", + name = S("%s Chief Dexter Canton"), { d, e, e }, { e, e, e }, { e, e, e }, }, ["square_top_right"] = { - name = "%s Chief Sinister Canton", + name = S("%s Chief Sinister Canton"), { e, e, d }, { e, e, e }, { e, e, e }, }, ["straight_cross"] = { - name = "%s Cross", + name = S("%s Cross"), { e, d, e }, { d, d, d }, { e, d, e }, }, ["stripe_bottom"] = { - name = "%s Base", + name = S("%s Base"), { e, e, e }, { e, e, e }, { d, d, d }, }, ["stripe_center"] = { - name = "%s Pale", + name = S("%s Pale"), { e, d, e }, { e, d, e }, { e, d, e }, }, ["stripe_downleft"] = { - name = "%s Bend Sinister", + name = S("%s Bend Sinister"), { e, e, d }, { e, d, e }, { d, e, e }, }, ["stripe_downright"] = { - name = "%s Bend", + name = S("%s Bend"), { d, e, e }, { e, d, e }, { e, e, d }, }, ["stripe_left"] = { - name = "%s Pale Dexter", + name = S("%s Pale Dexter"), { d, e, e }, { d, e, e }, { d, e, e }, }, ["stripe_middle"] = { - name = "%s Fess", + name = S("%s Fess"), { e, e, e }, { d, d, d }, { e, e, e }, }, ["stripe_right"] = { - name = "%s Pale Sinister", + name = S("%s Pale Sinister"), { e, e, d }, { e, e, d }, { e, e, d }, }, ["stripe_top"] = { - name = "%s Chief", + name = S("%s Chief"), { d, d, d }, { e, e, e }, { e, e, e }, }, ["triangle_bottom"] = { - name = "%s Chevron", + name = S("%s Chevron"), { e, e, e }, { e, d, e }, { d, e, d }, }, ["triangle_top"] = { - name = "%s Chevron Inverted", + name = S("%s Chevron Inverted"), { d, e, d }, { e, d, e }, { e, e, e }, }, ["triangles_bottom"] = { - name = "%s Base Indented", + name = S("%s Base Indented"), { e, e, e }, { d, e, d }, { e, d, e }, }, ["triangles_top"] = { - name = "%s Chief Indented", + name = S("%s Chief Indented"), { e, d, e }, { d, e, d }, { e, e, e }, @@ -270,9 +272,9 @@ mcl_banners.make_advanced_banner_description = function(description, layers) end -- Warn about missing information if #layers == max_layer_lines + 1 then - table.insert(layerstrings, "And one addional layer") + table.insert(layerstrings, S("And one addional layer")) elseif #layers > max_layer_lines + 1 then - table.insert(layerstrings, string.format("And %d addional layers", #layers - max_layer_lines)) + table.insert(layerstrings, string.format(S("And %d addional layers"), #layers - max_layer_lines)) end -- Final string concatenations: Just a list of strings diff --git a/mods/ITEMS/mcl_beds/api.lua b/mods/ITEMS/mcl_beds/api.lua index 4fbbe55e..6c94121b 100644 --- a/mods/ITEMS/mcl_beds/api.lua +++ b/mods/ITEMS/mcl_beds/api.lua @@ -1,3 +1,4 @@ +local S = minetest.get_translator("mcl_beds") local reverse = true @@ -32,17 +33,17 @@ local function kick_player_after_destruct(destruct_pos) end end -local beddesc = "Beds allow you to sleep at night and make the time pass faster." -local beduse = "To use a bed, stand close to it and right-click the bed to sleep in it. Sleeping only works when the sun sets, at night or during a thunderstorm. The bed must also be clear of any danger." +local beddesc = S("Beds allow you to sleep at night and make the time pass faster.") +local beduse = S("To use a bed, stand close to it and right-click the bed to sleep in it. Sleeping only works when the sun sets, at night or during a thunderstorm. The bed must also be clear of any danger.") if minetest.settings:get_bool("enable_bed_respawn") == false then - beddesc = beddesc .. "\n" .. "In local folklore, legends are told of other worlds where setting the start point for your next life would be possible. But this world is not one of them." + beddesc = beddesc .. "\n" .. S("In local folklore, legends are told of other worlds where setting the start point for your next life would be possible. But this world is not one of them.") else - beddesc = beddesc .. "\n" .. "By using a bed, you set the starting point for your next life. If you die, you will start your next life at this bed, unless it is obstructed or destroyed." + beddesc = beddesc .. "\n" .. S("By using a bed, you set the starting point for your next life. If you die, you will start your next life at this bed, unless it is obstructed or destroyed.") end if minetest.settings:get_bool("enable_bed_night_skip") == false then - beddesc = beddesc .. "\n" .. "In this strange world, going to bed won't skip the night, but you can skip thunderstorms." + beddesc = beddesc .. "\n" .. S("In this strange world, going to bed won't skip the night, but you can skip thunderstorms.") else - beddesc = beddesc .. "\n" .. "Sleeping allows you to skip the night. The night is skipped when all players in this world went to sleep. The night is skipped after sleeping for a few seconds. Thunderstorms can be skipped in the same manner." + beddesc = beddesc .. "\n" .. S("Sleeping allows you to skip the night. The night is skipped when all players in this world went to sleep. The night is skipped after sleeping for a few seconds. Thunderstorms can be skipped in the same manner.") end local default_sounds diff --git a/mods/ITEMS/mcl_beds/beds.lua b/mods/ITEMS/mcl_beds/beds.lua index 40deac70..6ac2071e 100644 --- a/mods/ITEMS/mcl_beds/beds.lua +++ b/mods/ITEMS/mcl_beds/beds.lua @@ -1,4 +1,4 @@ --- 3D bed +local S = minetest.get_translator("mcl_beds") local nodebox = { bottom = { @@ -15,22 +15,22 @@ local nodebox = { local colors = { -- { ID, decription, wool, dye } - { "red", "Red Bed", "mcl_wool:red", "mcl_dye:red" }, - { "blue", "Blue Bed", "mcl_wool:blue", "mcl_dye:blue" }, - { "cyan", "Cyan Bed", "mcl_wool:cyan", "mcl_dye:cyan" }, - { "grey", "Grey Bed", "mcl_wool:grey", "mcl_dye:dark_grey" }, - { "silver", "Light Grey Bed", "mcl_wool:silver", "mcl_dye:grey" }, - { "black", "Black Bed", "mcl_wool:black", "mcl_dye:black" }, - { "yellow", "Yellow Bed", "mcl_wool:yellow", "mcl_dye:yellow" }, - { "green", "Green Bed", "mcl_wool:green", "mcl_dye:dark_green" }, - { "magenta", "Magenta Bed", "mcl_wool:magenta", "mcl_dye:magenta" }, - { "orange", "Orange Bed", "mcl_wool:orange", "mcl_dye:orange" }, - { "purple", "Purple Bed", "mcl_wool:purple", "mcl_dye:violet" }, - { "brown", "Brown Bed", "mcl_wool:brown", "mcl_dye:brown" }, - { "pink", "Pink Bed", "mcl_wool:pink", "mcl_dye:pink" }, - { "lime", "Lime Bed", "mcl_wool:lime", "mcl_dye:green" }, - { "light_blue", "Light Blue Bed", "mcl_wool:light_blue", "mcl_dye:lightblue" }, - { "white", "White Bed", "mcl_wool:white", "mcl_dye:white" }, + { "red", S("Red Bed"), "mcl_wool:red", "mcl_dye:red" }, + { "blue", S("Blue Bed"), "mcl_wool:blue", "mcl_dye:blue" }, + { "cyan", S("Cyan Bed"), "mcl_wool:cyan", "mcl_dye:cyan" }, + { "grey", S("Grey Bed"), "mcl_wool:grey", "mcl_dye:dark_grey" }, + { "silver", S("Light Grey Bed"), "mcl_wool:silver", "mcl_dye:grey" }, + { "black", S("Black Bed"), "mcl_wool:black", "mcl_dye:black" }, + { "yellow", S("Yellow Bed"), "mcl_wool:yellow", "mcl_dye:yellow" }, + { "green", S("Green Bed"), "mcl_wool:green", "mcl_dye:dark_green" }, + { "magenta", S("Magenta Bed"), "mcl_wool:magenta", "mcl_dye:magenta" }, + { "orange", S("Orange Bed"), "mcl_wool:orange", "mcl_dye:orange" }, + { "purple", S("Purple Bed"), "mcl_wool:purple", "mcl_dye:violet" }, + { "brown", S("Brown Bed"), "mcl_wool:brown", "mcl_dye:brown" }, + { "pink", S("Pink Bed"), "mcl_wool:pink", "mcl_dye:pink" }, + { "lime", S("Lime Bed"), "mcl_wool:lime", "mcl_dye:green" }, + { "light_blue", S("Light Blue Bed"), "mcl_wool:light_blue", "mcl_dye:lightblue" }, + { "white", S("White Bed"), "mcl_wool:white", "mcl_dye:white" }, } for c=1, #colors do diff --git a/mods/ITEMS/mcl_beds/functions.lua b/mods/ITEMS/mcl_beds/functions.lua index 0f571609..3a4877a6 100644 --- a/mods/ITEMS/mcl_beds/functions.lua +++ b/mods/ITEMS/mcl_beds/functions.lua @@ -1,3 +1,5 @@ +local S = minetest.get_translator("mcl_beds") + local pi = math.pi local player_in_bed = 0 local is_sp = minetest.is_singleplayer() @@ -67,20 +69,20 @@ local function lay_down(player, pos, bed_pos, state, skip) if bed_pos then -- No sleeping if too far away if vector.distance(bed_pos, pos) > 2 then - minetest.chat_send_player(name, "You can't sleep, the bed's too far away!") + minetest.chat_send_player(name, S("You can't sleep, the bed's too far away!")) return false end for _, other_pos in pairs(mcl_beds.bed_pos) do if vector.distance(bed_pos, other_pos) < 0.1 then - minetest.chat_send_player(name, "This bed is already occupied!") + minetest.chat_send_player(name, S("This bed is already occupied!")) return false end end -- No sleeping while moving. Slightly different behaviour than in MC. if vector.length(player:get_player_velocity()) > 0.001 then - minetest.chat_send_player(name, "You have to stop moving before going to bed!") + minetest.chat_send_player(name, S("You have to stop moving before going to bed!")) return false end @@ -96,7 +98,7 @@ local function lay_down(player, pos, bed_pos, state, skip) -- Approximation of monster detection range if def._cmi_is_mob and ((mobname ~= "mobs_mc:pigman" and def.type == "monster" and not monster_exceptions[mobname]) or (mobname == "mobs_mc:pigman" and ent.state == "attack")) then if math.abs(bed_pos.y - obj:get_pos().y) <= 5 then - minetest.chat_send_player(name, "You can't sleep now, monsters are nearby!") + minetest.chat_send_player(name, S("You can't sleep now, monsters are nearby!")) end return false end @@ -143,10 +145,10 @@ local function lay_down(player, pos, bed_pos, state, skip) local def1 = minetest.registered_nodes[n1.name] local def2 = minetest.registered_nodes[n2.name] if def1.walkable or def2.walkable then - minetest.chat_send_player(name, "You can't sleep, the bed is obstructed!") + minetest.chat_send_player(name, S("You can't sleep, the bed is obstructed!")) return false elseif (def1.damage_per_second ~= nil and def1.damage_per_second > 0) or (def2.damage_per_second ~= nil and def2.damage_per_second > 0) then - minetest.chat_send_player(name, "It's too dangerous to sleep here!") + minetest.chat_send_player(name, S("It's too dangerous to sleep here!")) return false end @@ -162,14 +164,14 @@ local function lay_down(player, pos, bed_pos, state, skip) -- Values taken from Minecraft Wiki with offset of +6000 if tod < 18541 and tod > 5458 and (not weather_mod or (mcl_weather.get_weather() ~= "thunder")) then if spawn_changed then - minetest.chat_send_player(name, "New respawn position set! But you can only sleep at night or during a thunderstorm.") + minetest.chat_send_player(name, S("New respawn position set! But you can only sleep at night or during a thunderstorm.")) else - minetest.chat_send_player(name, "You can only sleep at night or during a thunderstorm.") + minetest.chat_send_player(name, S("You can only sleep at night or during a thunderstorm.")) end return false end if spawn_changed then - minetest.chat_send_player(name, "New respawn position set!") + minetest.chat_send_player(name, S("New respawn position set!")) end mcl_beds.player[name] = 1 diff --git a/mods/ITEMS/mcl_books/init.lua b/mods/ITEMS/mcl_books/init.lua index a2627c77..2c8d4afc 100644 --- a/mods/ITEMS/mcl_books/init.lua +++ b/mods/ITEMS/mcl_books/init.lua @@ -1,10 +1,12 @@ +local S =minetest.get_translator("mcl_books") + local max_text_length = 4500 -- TODO: Increase to 12800 when scroll bar was added to written book local max_title_length = 64 -- Book minetest.register_craftitem("mcl_books:book", { - description = "Book", - _doc_items_longdesc = "Books are used to make bookshelves and book and quills.", + description = S("Book"), + _doc_items_longdesc = S("Books are used to make bookshelves and book and quills."), inventory_image = "default_book.png", stack_max = 64, groups = { book=1, craftitem = 1 }, @@ -50,15 +52,15 @@ end local make_description = function(title, author, generation) local desc if generation == 0 then - desc = string.format("“%s”", title) + desc = S("“@1”", title) elseif generation == 1 then - desc = string.format("Copy of “%s”", title) + desc = S("Copy of “@1”", title) elseif generation == 2 then - desc = string.format("Copy of Copy of “%s”", title) + desc = S("Copy of Copy of “@1”", title) else - desc = "Tattered Book" + desc = S("Tattered Book") end - desc = desc .. "\n" .. core.colorize("#AAAAAA", string.format("by %s", author)) + desc = desc .. "\n" .. core.colorize("#AAAAAA", S("by @1", author)) return desc end @@ -81,8 +83,8 @@ local write = function(itemstack, user, pointed_thing) local formspec = "size[8,9]".. "background[-0.5,-0.5;9,10;mcl_books_book_bg.png]".. "textarea[0.75,0.1;7.25,9;text;;"..minetest.formspec_escape(text).."]".. - "button[0.75,7.95;3,1;sign;Sign]".. - "button_exit[4.25,7.95;3,1;ok;Done]" + "button[0.75,7.95;3,1;sign;"..minetest.formspec_escape(S("Sign")).."]".. + "button_exit[4.25,7.95;3,1;ok;"..minetest.formspec_escape(S("Done")).."]" minetest.show_formspec(user:get_player_name(), "mcl_books:writable_book", formspec) end @@ -101,16 +103,16 @@ local read = function(itemstack, user, pointed_thing) local formspec = "size[8,9]".. "background[-0.5,-0.5;9,10;mcl_books_book_bg.png]".. "textarea[0.75,0.1;7.25,9;;"..core.colorize("#000000", minetest.formspec_escape(text))..";]".. - "button_exit[2.25,7.95;3,1;ok;Done]" + "button_exit[2.25,7.95;3,1;ok;"..minetest.formspec_escape(S("Done")).."]" minetest.show_formspec(user:get_player_name(), "mcl_books:written_book", formspec) end -- Book and Quill minetest.register_craftitem("mcl_books:writable_book", { description = "Book and Quill", - _doc_items_longdesc = "This item can be used to write down some notes.", - _doc_items_usagehelp = "Hold it in the hand, then rightclick to read the current notes and edit then. You can edit the text as often as you like. You can also sign the book which turns it into a written book which you can stack, but it can't be edited anymore.".."\n".. - "A book can hold up to 4500 characters. The title length is limited to 64 characters.", + _doc_items_longdesc = S("This item can be used to write down some notes."), + _doc_items_usagehelp = S("Hold it in the hand, then rightclick to read the current notes and edit then. You can edit the text as often as you like. You can also sign the book which turns it into a written book which you can stack, but it can't be edited anymore.").."\n".. + S("A book can hold up to 4500 characters. The title length is limited to 64 characters."), inventory_image = "mcl_books_book_writable.png", groups = { book=1 }, stack_max = 1, @@ -134,11 +136,11 @@ minetest.register_on_player_receive_fields(function ( player, formname, fields ) local name = player:get_player_name() local formspec = "size[8,9]".. "background[-0.5,-0.5;9,10;mcl_books_book_bg.png]".. - "field[0.75,1;7.25,1;title;"..core.colorize("#000000", "Enter book title:")..";]".. - "label[0.75,1.5;"..core.colorize("#404040", minetest.formspec_escape("by " .. name)).."]".. - "label[0.75,6.95;"..core.colorize("#000000", "Note: The book will no longer") .. "\n" .. core.colorize("#000000", "be editable after signing.").."]".. - "button_exit[0.75,7.95;3,1;sign;Sign and Close]".. - "button[4.25,7.95;3,1;cancel;Cancel]" + "field[0.75,1;7.25,1;title;"..core.colorize("#000000", S("Enter book title:"))..";]".. + "label[0.75,1.5;"..core.colorize("#404040", minetest.formspec_escape(S("by @1", name))).."]".. + "label[0.75,6.95;"..core.colorize("#000000", minetest.formspec_escape(S("Note: The book will no longer\nbe editable after signing."))).."]".. + "button_exit[0.75,7.95;3,1;sign;"..minetest.formspec_escape(S("Sign and Close")).."]".. + "button[4.25,7.95;3,1;cancel;"..minetest.formspec_escape(S("Cancel")).."]" minetest.show_formspec(player:get_player_name(), "mcl_books:signing", formspec) end end @@ -149,7 +151,7 @@ minetest.register_on_player_receive_fields(function ( player, formname, fields ) if book:get_name() == "mcl_books:writable_book" then local title = fields.title if string.len(title) == 0 then - title = "Nameless Book" + title = S("Nameless Book") end title = cap_text_length(title, max_title_length) local meta = newbook:get_meta() @@ -184,11 +186,11 @@ end -- Written Book minetest.register_craftitem("mcl_books:written_book", { - description = "Written Book", - _doc_items_longdesc = "Written books contain some text written by someone. They can be read and copied, but not edited.", - _doc_items_usagehelp = [[Hold it in your hand, then rightclick to read the book. + description = S("Written Book"), + _doc_items_longdesc = S("Written books contain some text written by someone. They can be read and copied, but not edited."), + _doc_items_usagehelp = S("Hold it in your hand, then rightclick to read the book.").."\n\n".. -To copy the text of the written book, place it into the crafting grid together with a book and quill (or multiple of those) and craft. The written book will not be consumed. Copies of copies can not be copied.]], +S("To copy the text of the written book, place it into the crafting grid together with a book and quill (or multiple of those) and craft. The written book will not be consumed. Copies of copies can not be copied."), inventory_image = "mcl_books_book_written.png", groups = { not_in_creative_inventory=1, book=1, no_rename=1 }, stack_max = 16, @@ -322,8 +324,8 @@ end -- Bookshelf minetest.register_node("mcl_books:bookshelf", { - description = "Bookshelf", - _doc_items_longdesc = "Bookshelves are used for decoration.", + description = S("Bookshelf"), + _doc_items_longdesc = S("Bookshelves are used for decoration."), tiles = {"mcl_books_bookshelf_top.png", "mcl_books_bookshelf_top.png", "default_bookshelf.png"}, stack_max = 64, is_ground_content = false, diff --git a/mods/ITEMS/mcl_bows/arrow.lua b/mods/ITEMS/mcl_bows/arrow.lua index a3c8fb4a..9561fea0 100644 --- a/mods/ITEMS/mcl_bows/arrow.lua +++ b/mods/ITEMS/mcl_bows/arrow.lua @@ -1,3 +1,5 @@ +local S = minetest.get_translator("mcl_bows") + -- Time in seconds after which a stuck arrow is deleted local ARROW_TIMEOUT = 60 -- Time after which stuck arrow is rechecked for being stuck @@ -11,11 +13,11 @@ local mod_awards = minetest.get_modpath("awards") and minetest.get_modpath("mcl_ local mod_button = minetest.get_modpath("mesecons_button") minetest.register_craftitem("mcl_bows:arrow", { - description = "Arrow", - _doc_items_longdesc = [[Arrows are ammunition for bows and dispensers. -An arrow fired from a bow has a regular damage of 1-9. At full charge, there's a 20% chance of a critical hit dealing 10 damage instead. An arrow fired from a dispenser always deals 3 damage. -Arrows might get stuck on solid blocks and can be retrieved again. They are also capable of pushing wooden buttons.]], - _doc_items_usagehelp = "To use arrows as ammunition for a bow, just put them anywhere in your inventory, they will be used up automatically. To use arrows as ammunition for a dispenser, place them in the dispenser's inventory. To retrieve an arrow that sticks in a block, simply walk close to it.", + description = S("Arrow"), + _doc_items_longdesc = S("Arrows are ammunition for bows and dispensers.").."\n".. +S("An arrow fired from a bow has a regular damage of 1-9. At full charge, there's a 20% chance of a critical hit dealing 10 damage instead. An arrow fired from a dispenser always deals 3 damage.").."\n".. +S("Arrows might get stuck on solid blocks and can be retrieved again. They are also capable of pushing wooden buttons."), + _doc_items_usagehelp = S("To use arrows as ammunition for a bow, just put them anywhere in your inventory, they will be used up automatically. To use arrows as ammunition for a dispenser, place them in the dispenser's inventory. To retrieve an arrow that sticks in a block, simply walk close to it."), inventory_image = "mcl_bows_arrow_inv.png", groups = { ammo=1, ammo_bow=1 }, _on_dispense = function(itemstack, dispenserpos, droppos, dropnode, dropdir) diff --git a/mods/ITEMS/mcl_bows/bow.lua b/mods/ITEMS/mcl_bows/bow.lua index 14cea6a7..543c573d 100644 --- a/mods/ITEMS/mcl_bows/bow.lua +++ b/mods/ITEMS/mcl_bows/bow.lua @@ -1,3 +1,5 @@ +local S = minetest.get_translator("mcl_bows") + mcl_bows = {} local arrows = { @@ -95,10 +97,10 @@ end -- Bow item, uncharged state minetest.register_tool("mcl_bows:bow", { - description = "Bow", - _doc_items_longdesc = [[Bows are ranged weapons to shoot arrows at your foes. -The speed and damage of the arrow increases the longer you charge. The regular damage of the arrow is between 1 and 9. At full charge, there's also a 20% of a critical hit, dealing 10 damage instead.]], - _doc_items_usagehelp = [[To use the bow, you first need to have at least one arrow anywhere in your inventory (unless in Creative Mode). Hold down the right mouse button to charge, release to shoot.]], + description = S("Bow"), + _doc_items_longdesc = S("Bows are ranged weapons to shoot arrows at your foes.").."\n".. +S("The speed and damage of the arrow increases the longer you charge. The regular damage of the arrow is between 1 and 9. At full charge, there's also a 20% of a critical hit, dealing 10 damage instead."), + _doc_items_usagehelp = S("To use the bow, you first need to have at least one arrow anywhere in your inventory (unless in Creative Mode). Hold down the right mouse button to charge, release to shoot."), _doc_items_durability = BOW_DURABILITY, inventory_image = "mcl_bows_bow.png", stack_max = 1, @@ -138,7 +140,7 @@ end -- Bow in charging state for level=0, 2 do minetest.register_tool("mcl_bows:bow_"..level, { - description = "Bow", + description = S("Bow"), _doc_items_create_entry = false, inventory_image = "mcl_bows_bow_"..level..".png", stack_max = 1, From 1cb142ec5f8827096960495781a5029835167370 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Thu, 7 Mar 2019 22:01:45 +0100 Subject: [PATCH 034/737] Fix crasher in mcl_inventory --- mods/HUD/mcl_inventory/creative.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/HUD/mcl_inventory/creative.lua b/mods/HUD/mcl_inventory/creative.lua index 2637ac28..8b3eef70 100644 --- a/mods/HUD/mcl_inventory/creative.lua +++ b/mods/HUD/mcl_inventory/creative.lua @@ -323,7 +323,7 @@ mcl_inventory.set_creative_formspec = function(player, start_i, pagenum, inv_siz player_preview.. -- crafting guide button "image_button[9,1;1,1;craftguide_book.png;__mcl_craftguide;]".. - "tooltip[__mcl_craftguide;"..F("Recipe book")"..]".. + "tooltip[__mcl_craftguide;"..F("Recipe book").."]".. -- help button "image_button[9,2;1,1;doc_button_icon_lores.png;__mcl_doc;]".. "tooltip[__mcl_doc;"..F("Help").."]".. From 1df3d0e42bfce42bc0165b5f2ecdec9fbe17e296 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Thu, 7 Mar 2019 22:03:34 +0100 Subject: [PATCH 035/737] Fix some PseudRandom weirdness in mcl_structures --- mods/MAPGEN/mcl_structures/init.lua | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/mods/MAPGEN/mcl_structures/init.lua b/mods/MAPGEN/mcl_structures/init.lua index fa233682..737722f2 100644 --- a/mods/MAPGEN/mcl_structures/init.lua +++ b/mods/MAPGEN/mcl_structures/init.lua @@ -15,6 +15,10 @@ mcl_structures.get_struct = function(file) return allnode end +local mapseed = tonumber(minetest.get_mapgen_setting("seed")) +-- Random number generator for all generated structures +local pr = PseudoRandom(mapseed) + -- Call on_construct on pos. -- Useful to init chests from formspec. local init_node_construct = function(pos) @@ -171,8 +175,6 @@ mcl_structures.generate_igloo_basement = function(pos, orientation) else return success end - -- FIXME: Use better seeding - local pr = PseudoRandom(math.random(0, 4294967295)) local size = {x=9,y=5,z=7} local lootitems = mcl_loot.get_multi_loot({ { @@ -277,8 +279,6 @@ mcl_structures.generate_end_portal_shrine = function(pos) -- Shuffle stone brick types local bricks = minetest.find_nodes_in_area(area_start, area_end, "mcl_core:stonebrick") - -- FIXME: Use better seeding - local pr = PseudoRandom(math.random(0, 4294967295)) for b=1, #bricks do local r_bricktype = pr:next(1, 100) local r_infested = pr:next(1, 100) @@ -368,10 +368,7 @@ mcl_structures.generate_desert_temple = function(pos) local chests = minetest.find_nodes_in_area({x=newpos.x-size.x, y=newpos.y, z=newpos.z-size.z}, vector.add(newpos, size), "mcl_chests:chest") -- Add desert temple loot into chests - -- FIXME: Use better seeding - local pr = PseudoRandom(math.random(0, 4294967295)) for c=1, #chests do - -- FIXME: Use better seeding local lootitems = mcl_loot.get_multi_loot({ { stacks_min = 2, From e4fbbeddb2b2dd429625311293c0e4e3880013db Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Thu, 7 Mar 2019 23:40:43 +0100 Subject: [PATCH 036/737] New translation system, part 6: Items, part 2 --- mods/ITEMS/mcl_buckets/init.lua | 26 +-- mods/ITEMS/mcl_cake/init.lua | 20 ++- mods/ITEMS/mcl_cauldrons/init.lua | 20 ++- mods/ITEMS/mcl_chests/init.lua | 56 ++++--- mods/ITEMS/mcl_clock/init.lua | 8 +- mods/ITEMS/mcl_cocoas/init.lua | 12 +- mods/ITEMS/mcl_compass/init.lua | 6 +- mods/ITEMS/mcl_core/craftitems.lua | 70 ++++---- mods/ITEMS/mcl_core/nodes_base.lua | 202 ++++++++++++----------- mods/ITEMS/mcl_core/nodes_cactuscane.lua | 14 +- mods/ITEMS/mcl_core/nodes_climb.lua | 9 +- mods/ITEMS/mcl_core/nodes_glass.lua | 39 ++--- mods/ITEMS/mcl_core/nodes_liquid.lua | 26 +-- mods/ITEMS/mcl_core/nodes_misc.lua | 27 +-- mods/ITEMS/mcl_core/nodes_trees.lua | 51 +++--- 15 files changed, 306 insertions(+), 280 deletions(-) diff --git a/mods/ITEMS/mcl_buckets/init.lua b/mods/ITEMS/mcl_buckets/init.lua index c5b45c4d..3144bd81 100644 --- a/mods/ITEMS/mcl_buckets/init.lua +++ b/mods/ITEMS/mcl_buckets/init.lua @@ -1,3 +1,5 @@ +local S = minetest.get_translator("mcl_buckets") + -- Minetest 0.4 mod: bucket -- See README.txt for licensing and other information. @@ -182,9 +184,9 @@ function mcl_buckets.register_liquid(source_place, source_take, itemname, invent end minetest.register_craftitem("mcl_buckets:bucket_empty", { - description = "Empty Bucket", - _doc_items_longdesc = "A bucket can be used to collect and release liquids.", - _doc_items_usagehelp = "Punch a liquid source to collect the liquid. With the filled bucket, you can right-click somewhere to empty the bucket which will create a liquid source at the position you've clicked at.", + description = S("Empty Bucket"), + _doc_items_longdesc = S("A bucket can be used to collect and release liquids."), + _doc_items_usagehelp = S("Punch a liquid source to collect the liquid. With the filled bucket, you can right-click somewhere to empty the bucket which will create a liquid source at the position you've clicked at."), inventory_image = "bucket.png", stack_max = 16, @@ -302,9 +304,9 @@ if mod_mcl_core then {"mcl_core:lava_source", "mcl_nether:nether_lava_source"}, "mcl_buckets:bucket_lava", "bucket_lava.png", - "Lava Bucket", - "A bucket can be used to collect and release liquids. This one is filled with hot lava, safely contained inside. Use with caution.", - "Choose a place where you want to empty the bucket, then get in a safe spot somewhere above it. Be prepared to run away when something goes wrong as the lava will soon start to flow after placing. To empty the bucket (which places a lava source), right-click on your chosen place." + S("Lava Bucket"), + S("A bucket can be used to collect and release liquids. This one is filled with hot lava, safely contained inside. Use with caution."), + S("Choose a place where you want to empty the bucket, then get in a safe spot somewhere above it. Be prepared to run away when something goes wrong as the lava will soon start to flow after placing. To empty the bucket (which places a lava source), right-click on your chosen place.") ) -- Water bucket @@ -313,9 +315,9 @@ if mod_mcl_core then {"mcl_core:water_source"}, "mcl_buckets:bucket_water", "bucket_water.png", - "Water Bucket", - "A bucket can be used to collect and release liquids. This one is filled with water.", - "Right-click on any block to empty the bucket and put a water source on this spot.", + S("Water Bucket"), + S("A bucket can be used to collect and release liquids. This one is filled with water."), + S("Right-click on any block to empty the bucket and put a water source on this spot."), function(pos, placer) -- Check protection local placer_name = "" @@ -355,9 +357,9 @@ if mod_mclx_core then {"mclx_core:river_water_source"}, "mcl_buckets:bucket_river_water", "bucket_river_water.png", - "River Water Bucket", - "A bucket can be used to collect and release liquids. This one is filled with river water.", - "Right-click on any block to empty the bucket and put a river water source on this spot.", + S("River Water Bucket"), + S("A bucket can be used to collect and release liquids. This one is filled with river water."), + S("Right-click on any block to empty the bucket and put a river water source on this spot."), function(pos, placer) -- Check protection local placer_name = "" diff --git a/mods/ITEMS/mcl_cake/init.lua b/mods/ITEMS/mcl_cake/init.lua index ca6f7a55..f3cc0232 100644 --- a/mods/ITEMS/mcl_cake/init.lua +++ b/mods/ITEMS/mcl_cake/init.lua @@ -3,6 +3,8 @@ #!#!#!#Released under CC Attribution-ShareAlike 3.0 Unported #!#!# ]]-- +local S = minetest.get_translator("mcl_cake") + local cake_texture = {"cake_top.png","cake_bottom.png","cake_inner.png","cake_side.png","cake_side.png","cake_side.png"} local slice_1 = { -7/16, -8/16, -7/16, -5/16, 0/16, 7/16} local slice_2 = { -7/16, -8/16, -7/16, -3/16, 0/16, 7/16} @@ -28,9 +30,9 @@ minetest.register_craft({ }) minetest.register_node("mcl_cake:cake", { - description = "Cake", - _doc_items_longdesc = "Cakes can be placed and eaten to restore hunger points. A cake has 7 slices. Each slice restores 2 hunger points and 0.4 saturation points. Cakes will be destroyed when dug or when the block below them is broken.", - _doc_items_usagehelp = "Place the cake anywhere, then rightclick it to eat a single slice. You can't eat from the cake when your hunger bar is full.", + description = S("Cake"), + _doc_items_longdesc = S("Cakes can be placed and eaten to restore hunger points. A cake has 7 slices. Each slice restores 2 hunger points and 0.4 saturation points. Cakes will be destroyed when dug or when the block below them is broken."), + _doc_items_usagehelp = S("Place the cake anywhere, then rightclick it to eat a single slice. You can't eat from the cake when your hunger bar is full."), tiles = {"cake_top.png","cake_bottom.png","cake_side.png","cake_side.png","cake_side.png","cake_side.png"}, inventory_image = "cake.png", wield_image = "cake.png", @@ -134,9 +136,9 @@ local register_slice = function(level, nodebox, desc) end end -register_slice(6, slice_6, "Cake (6 Slices Left)") -register_slice(5, slice_5, "Cake (5 Slices Left)") -register_slice(4, slice_4, "Cake (4 Slices Left)") -register_slice(3, slice_3, "Cake (3 Slices Left)") -register_slice(2, slice_2, "Cake (2 Slices Left)") -register_slice(1, slice_1, "Cake (1 Slice Left)") +register_slice(6, slice_6, S("Cake (6 Slices Left)")) +register_slice(5, slice_5, S("Cake (5 Slices Left)")) +register_slice(4, slice_4, S("Cake (4 Slices Left)")) +register_slice(3, slice_3, S("Cake (3 Slices Left)")) +register_slice(2, slice_2, S("Cake (2 Slices Left)")) +register_slice(1, slice_1, S("Cake (1 Slice Left)")) diff --git a/mods/ITEMS/mcl_cauldrons/init.lua b/mods/ITEMS/mcl_cauldrons/init.lua index 0b447155..aee2a314 100644 --- a/mods/ITEMS/mcl_cauldrons/init.lua +++ b/mods/ITEMS/mcl_cauldrons/init.lua @@ -1,3 +1,5 @@ +local S = minetest.get_translator("mcl_cauldron") + -- Cauldron mod, adds cauldrons. -- TODO: Extinguish fire of burning entities @@ -42,9 +44,9 @@ end -- Empty cauldron minetest.register_node("mcl_cauldrons:cauldron", { - description = "Cauldron", - _doc_items_longdesc = "Cauldrons are used to store water and slowly fill up under rain. They can also be used to wash off banners.", - _doc_items_usagehelp = "Place a water pucket into the cauldron to fill it with water. Place an empty bucket on a full cauldron to retrieve the water. Place a water bottle into the cauldron to fill the cauldron to one third with water. Place a glass bottle in a cauldron with water to retrieve one third of the water. Use an emblazoned banner on a cauldron with water to wash off its top layer.", + description = S("Cauldron"), + _doc_items_longdesc = S("Cauldrons are used to store water and slowly fill up under rain. They can also be used to wash off banners."), + _doc_items_usagehelp = S("Place a water pucket into the cauldron to fill it with water. Place an empty bucket on a full cauldron to retrieve the water. Place a water bottle into the cauldron to fill the cauldron to one third with water. Place a glass bottle in a cauldron with water to retrieve one third of the water. Use an emblazoned banner on a cauldron with water to wash off its top layer."), wield_image = "mcl_cauldrons_cauldron.png", inventory_image = "mcl_cauldrons_cauldron.png", drawtype = "nodebox", @@ -101,14 +103,14 @@ local register_filled_cauldron = function(water_level, description, river_water) end -- Filled cauldrons (3 levels) -register_filled_cauldron(1, "Cauldron (1/3 Water)") -register_filled_cauldron(2, "Cauldron (2/3 Water)") -register_filled_cauldron(3, "Cauldron (3/3 Water)") +register_filled_cauldron(1, S("Cauldron (1/3 Water)")) +register_filled_cauldron(2, S("Cauldron (2/3 Water)")) +register_filled_cauldron(3, S("Cauldron (3/3 Water)")) if minetest.get_modpath("mclx_core") then - register_filled_cauldron(1, "Cauldron (1/3 River Water)", true) - register_filled_cauldron(2, "Cauldron (2/3 River Water)", true) - register_filled_cauldron(3, "Cauldron (3/3 River Water)", true) + register_filled_cauldron(1, S("Cauldron (1/3 River Water)"), true) + register_filled_cauldron(2, S("Cauldron (2/3 River Water)"), true) + register_filled_cauldron(3, S("Cauldron (3/3 River Water)"), true) end minetest.register_craft({ diff --git a/mods/ITEMS/mcl_chests/init.lua b/mods/ITEMS/mcl_chests/init.lua index 57c991ce..9f0ebd45 100644 --- a/mods/ITEMS/mcl_chests/init.lua +++ b/mods/ITEMS/mcl_chests/init.lua @@ -1,3 +1,5 @@ +local S = minetest.get_translator("mcl_chests") + local no_rotate, simple_rotate if minetest.get_modpath("screwdriver") then no_rotate = screwdriver.disallow @@ -446,9 +448,9 @@ end end register_chest("chest", - "Chest", - "Chests are containers which provide 27 inventory slots. Chests can be turned into large chests with double the capacity by placing two chests next to each other.", - "To access the chest's inventory, rightclick the chest. When broken, the items of the chest will drop out.", + S("Chest"), + S("Chests are containers which provide 27 inventory slots. Chests can be turned into large chests with double the capacity by placing two chests next to each other."), + S("To access the chest's inventory, rightclick the chest. When broken, the items of the chest will drop out."), { small = {"default_chest_top.png", "mcl_chests_chest_bottom.png", "mcl_chests_chest_right.png", "mcl_chests_chest_left.png", @@ -476,9 +478,9 @@ local traptiles = { } register_chest("trapped_chest", - "Trapped Chest", - "A trapped chest is a container which provides 27 inventory slots. When it is opened, it sends a redstone signal to its adjacent blocks as long it stays open. Trapped chests can be turned into large trapped chests with double the capacity by placing two trapped chests next to each other.", - "To access the inventory of a trapped chest, rightclick it. When broken, the items will drop out.", + S("Trapped Chest"), + S("A trapped chest is a container which provides 27 inventory slots. When it is opened, it sends a redstone signal to its adjacent blocks as long it stays open. Trapped chests can be turned into large trapped chests with double the capacity by placing two trapped chests next to each other."), + S("To access the inventory of a trapped chest, rightclick it. When broken, the items will drop out."), traptiles, nil, {receptor = { @@ -599,9 +601,9 @@ minetest.register_craft({ }) minetest.register_node("mcl_chests:ender_chest", { - description = "Ender Chest", - _doc_items_longdesc = "Ender chests grant you access to a single personal interdimensional inventory with 27 slots. This inventory is the same no matter from which ender chest you access it from. If you put one item into one ender chest, you will find it in all other ender chests. Each player will only see their own items, but not the items of other players.", - _doc_items_usagehelp = "Rightclick the ender chest to access your personal interdimensional inventory.", + description = S("Ender Chest"), + _doc_items_longdesc = S("Ender chests grant you access to a single personal interdimensional inventory with 27 slots. This inventory is the same no matter from which ender chest you access it from. If you put one item into one ender chest, you will find it in all other ender chests. Each player will only see their own items, but not the items of other players."), + _doc_items_usagehelp = S("Rightclick the ender chest to access your personal interdimensional inventory."), tiles = {"mcl_chests_ender_chest_top.png", "mcl_chests_ender_chest_bottom.png", "mcl_chests_ender_chest_right.png", "mcl_chests_ender_chest_left.png", "mcl_chests_ender_chest_back.png", "mcl_chests_ender_chest_front.png"}, @@ -648,22 +650,22 @@ minetest.register_craft({ -- Shulker boxes local boxtypes = { - white = "White Shulker Box", - grey = "Light Grey Shulker Box", - orange = "Orange Shulker Box", - cyan = "Cyan Shulker Box", - magenta = "Magenta Shulker Box", - violet = "Purple Shulker Box", - lightblue = "Light Blue Shulker Box", - blue = "Blue Shulker Box", - yellow = "Yellow Shulker Box", - brown = "Brown Shulker Box", - green = "Lime Shulker Box", - dark_green = "Green Shulker Box", - pink = "Pink Shulker Box", - red = "Red Shulker Box", - dark_grey = "Grey Shulker Box", - black = "Black Shulker Box", + white = S("White Shulker Box"), + grey = S("Light Grey Shulker Box"), + orange = S("Orange Shulker Box"), + cyan = S("Cyan Shulker Box"), + magenta = S("Magenta Shulker Box"), + violet = S("Purple Shulker Box"), + lightblue = S("Light Blue Shulker Box"), + blue = S("Blue Shulker Box"), + yellow = S("Yellow Shulker Box"), + brown = S("Brown Shulker Box"), + green = S("Lime Shulker Box"), + dark_green = S("Green Shulker Box"), + pink = S("Pink Shulker Box"), + red = S("Red Shulker Box"), + dark_grey = S("Grey Shulker Box"), + black = S("Black Shulker Box"), } local shulker_mob_textures = { @@ -689,8 +691,8 @@ for color, desc in pairs(boxtypes) do local mob_texture = shulker_mob_textures[color] minetest.register_node("mcl_chests:"..color.."_shulker_box", { description = desc, - _doc_items_longdesc = "A shulker box is a portable container which provides 27 inventory slots for any item except shulker boxes. Shulker boxes keep their inventory when broken, so shulker boxes as well as their contents can be taken as a single item. Shulker boxes come in many different colors.", - _doc_items_usagehelp = "To access the inventory of a shulker box, place and right-click it. To take a shulker box and its contents with you, just break and collect it, the items will not fall out. Place the shulker box again to be able to retrieve its contents.", + _doc_items_longdesc = S("A shulker box is a portable container which provides 27 inventory slots for any item except shulker boxes. Shulker boxes keep their inventory when broken, so shulker boxes as well as their contents can be taken as a single item. Shulker boxes come in many different colors."), + _doc_items_usagehelp = S("To access the inventory of a shulker box, place and right-click it. To take a shulker box and its contents with you, just break and collect it, the items will not fall out. Place the shulker box again to be able to retrieve its contents."), tiles = { "mcl_chests_"..color.."_shulker_box_top.png", -- top "[combine:16x16:-32,-28="..mob_texture, -- bottom diff --git a/mods/ITEMS/mcl_clock/init.lua b/mods/ITEMS/mcl_clock/init.lua index 0f0b8461..2e2d1b00 100644 --- a/mods/ITEMS/mcl_clock/init.lua +++ b/mods/ITEMS/mcl_clock/init.lua @@ -1,3 +1,5 @@ +local S = minetest.get_translator("mcl_clock") + --[[ mcl_clock, renew of the renew of the watch mod @@ -54,11 +56,11 @@ function watch.register_item(name, image, creative, frame) end local longdesc, usagehelp if use_doc then - longdesc = "Clocks are tools which shows the current time of day in the Overworld." - usagehelp = "The clock contains a rotating disc with a sun symbol (yellow disc) and moon symbol and a little “pointer” which shows the current time of day by estimating the real position of the sun and the moon in the sky. Noon is represented by the sun symbol and midnight is represented by the moon symbol." + longdesc = S("Clocks are tools which shows the current time of day in the Overworld.") + usagehelp = S("The clock contains a rotating disc with a sun symbol (yellow disc) and moon symbol and a little “pointer” which shows the current time of day by estimating the real position of the sun and the moon in the sky. Noon is represented by the sun symbol and midnight is represented by the moon symbol.") end minetest.register_craftitem(name, { - description = "Clock", + description = S("Clock"), _doc_items_create_entry = use_doc, _doc_items_longdesc = longdesc, _doc_items_usagehelp = usagehelp, diff --git a/mods/ITEMS/mcl_cocoas/init.lua b/mods/ITEMS/mcl_cocoas/init.lua index fdd9f8c6..cd780b91 100644 --- a/mods/ITEMS/mcl_cocoas/init.lua +++ b/mods/ITEMS/mcl_cocoas/init.lua @@ -1,3 +1,5 @@ +local S = minetest.get_translator("mcl_cocoas") + mcl_cocoas = {} -- Place cocoa @@ -70,9 +72,9 @@ end --[[ TODO: Use a mesh for cocoas for perfect texture compability. ]] local crop_def = { - description = "Premature Cocoa", + description = S("Premature Cocoa"), _doc_items_create_entry = true, - _doc_items_longdesc = "Cocoas are plants which grow on the side of jungle trees in 3 stages.", + _doc_items_longdesc = S("Cocoas are plants which grow on the side of jungle trees in 3 stages."), drawtype = "nodebox", tiles = { "[combine:16x16:6,1=mcl_cocoas_cocoa_stage_0.png", "[combine:16x16:6,11=mcl_cocoas_cocoa_stage_0.png", @@ -115,7 +117,7 @@ local crop_def = { -- 2nd stage minetest.register_node("mcl_cocoas:cocoa_1", table.copy(crop_def)) -crop_def.description = "Medium Cocoa" +crop_def.description = S("Medium Cocoa") crop_def._doc_items_create_entry = false crop_def.groups.cocoa = 2 crop_def.tiles = { @@ -146,8 +148,8 @@ crop_def.selection_box = { minetest.register_node("mcl_cocoas:cocoa_2", table.copy(crop_def)) -- Final stage -crop_def.description = "Mature Cocoa" -crop_def._doc_items_longdesc = "A mature cocoa is a plant which grew on a jungle tree to its full size and it is ready to be harvested for cocoa beans. It won't grow any further." +crop_def.description = S("Mature Cocoa") +crop_def._doc_items_longdesc = S("A mature cocoa is a plant which grew on a jungle tree to its full size and it is ready to be harvested for cocoa beans. It won't grow any further.") crop_def._doc_items_create_entry = true crop_def.groups.cocoa = 3 crop_def.tiles = { diff --git a/mods/ITEMS/mcl_compass/init.lua b/mods/ITEMS/mcl_compass/init.lua index a8d557e8..ee7df7de 100644 --- a/mods/ITEMS/mcl_compass/init.lua +++ b/mods/ITEMS/mcl_compass/init.lua @@ -1,3 +1,5 @@ +local S = minetest.get_translator("mcl_compass") + mcl_compass = {} local compass_frames = 32 @@ -79,11 +81,11 @@ for i,img in ipairs(images) do local use_doc, longdesc, usagehelp use_doc = i == stereotype_frame if use_doc then - longdesc = "Compasses are tools which point to the world origin (X=0, Z=0) or the spawn point in the Overworld." + longdesc = S("Compasses are tools which point to the world origin (X=0, Z=0) or the spawn point in the Overworld.") end local itemstring = "mcl_compass:"..(i-1) minetest.register_craftitem(itemstring, { - description = "Compass", + description = S("Compass"), _doc_items_create_entry = use_doc, _doc_items_longdesc = longdesc, _doc_items_usagehelp = usagehelp, diff --git a/mods/ITEMS/mcl_core/craftitems.lua b/mods/ITEMS/mcl_core/craftitems.lua index bbdd66ea..42b6210e 100644 --- a/mods/ITEMS/mcl_core/craftitems.lua +++ b/mods/ITEMS/mcl_core/craftitems.lua @@ -1,12 +1,14 @@ -- mods/default/craftitems.lua +local S = minetest.get_translator("mcl_core") + -- -- Crafting items -- minetest.register_craftitem("mcl_core:stick", { - description = "Stick", - _doc_items_longdesc = "Sticks are a very versatile crafting material; used in countless crafting recipes.", + description = S("Stick"), + _doc_items_longdesc = S("Sticks are a very versatile crafting material; used in countless crafting recipes."), _doc_items_hidden = false, inventory_image = "default_stick.png", stack_max = 64, @@ -14,16 +16,16 @@ minetest.register_craftitem("mcl_core:stick", { }) minetest.register_craftitem("mcl_core:paper", { - description = "Paper", - _doc_items_longdesc = "Paper is used to craft books and maps.", + description = S("Paper"), + _doc_items_longdesc = S("Paper is used to craft books and maps."), inventory_image = "default_paper.png", stack_max = 64, groups = { craftitem=1 }, }) minetest.register_craftitem("mcl_core:coal_lump", { - description = "Coal", - _doc_items_longdesc = "“Coal” refers to coal lumps obtained by digging coal ore which can be found underground. Coal is your standard furnace fuel, but it can also be used to make torches, coal blocks and a few other things.", + description = S("Coal"), + _doc_items_longdesc = S("“Coal” refers to coal lumps obtained by digging coal ore which can be found underground. Coal is your standard furnace fuel, but it can also be used to make torches, coal blocks and a few other things."), _doc_items_hidden = false, groups = { coal=1 }, inventory_image = "default_coal_lump.png", @@ -32,8 +34,8 @@ minetest.register_craftitem("mcl_core:coal_lump", { }) minetest.register_craftitem("mcl_core:charcoal_lump", { - description = "Charcoal", - _doc_items_longdesc = "Charcoal is an alternative furnace fuel created by cooking wood in a furnace. It has the same burning time as coal and also shares many of its crafting recipes, but it can not be used to create coal blocks.", + description = S("Charcoal"), + _doc_items_longdesc = S("Charcoal is an alternative furnace fuel created by cooking wood in a furnace. It has the same burning time as coal and also shares many of its crafting recipes, but it can not be used to create coal blocks."), _doc_items_hidden = false, groups = { coal=1 }, inventory_image = "mcl_core_charcoal.png", @@ -42,32 +44,32 @@ minetest.register_craftitem("mcl_core:charcoal_lump", { }) minetest.register_craftitem("mcl_core:iron_nugget", { - description = "Iron Nugget", - _doc_items_longdesc = "Iron nuggets are very small pieces of molten iron; the main purpose is to create iron ingots.", + description = S("Iron Nugget"), + _doc_items_longdesc = S("Iron nuggets are very small pieces of molten iron; the main purpose is to create iron ingots."), inventory_image = "mcl_core_iron_nugget.png", stack_max = 64, groups = { craftitem=1 }, }) minetest.register_craftitem("mcl_core:gold_nugget", { - description = "Gold Nugget", - _doc_items_longdesc = "Gold nuggets are very small pieces of molten gold; the main purpose is to create gold ingots.", + description = S("Gold Nugget"), + _doc_items_longdesc = S("Gold nuggets are very small pieces of molten gold; the main purpose is to create gold ingots."), inventory_image = "mcl_core_gold_nugget.png", stack_max = 64, groups = { craftitem=1 }, }) minetest.register_craftitem("mcl_core:diamond", { - description = "Diamond", - _doc_items_longdesc = "Diamonds are precious minerals and useful to create the highest tier of armor and tools.", + description = S("Diamond"), + _doc_items_longdesc = S("Diamonds are precious minerals and useful to create the highest tier of armor and tools."), inventory_image = "default_diamond.png", stack_max = 64, groups = { craftitem=1 }, }) minetest.register_craftitem("mcl_core:clay_lump", { - description = "Clay Ball", - _doc_items_longdesc = "Clay balls are a raw material, mainly used to create bricks in the furnace.", + description = S("Clay Ball"), + _doc_items_longdesc = S("Clay balls are a raw material, mainly used to create bricks in the furnace."), _doc_items_hidden = false, inventory_image = "default_clay_lump.png", stack_max = 64, @@ -75,64 +77,64 @@ minetest.register_craftitem("mcl_core:clay_lump", { }) minetest.register_craftitem("mcl_core:iron_ingot", { - description = "Iron Ingot", - _doc_items_longdesc = "Molten iron. It is used to craft armor, tools, and whatnot.", + description = S("Iron Ingot"), + _doc_items_longdesc = S("Molten iron. It is used to craft armor, tools, and whatnot."), inventory_image = "default_steel_ingot.png", stack_max = 64, groups = { craftitem=1 }, }) minetest.register_craftitem("mcl_core:gold_ingot", { - description = "Gold Ingot", - _doc_items_longdesc = "Molten gold. It is used to craft armor, tools, and whatnot.", + description = S("Gold Ingot"), + _doc_items_longdesc = S("Molten gold. It is used to craft armor, tools, and whatnot."), inventory_image = "default_gold_ingot.png", stack_max = 64, groups = { craftitem=1 }, }) minetest.register_craftitem("mcl_core:emerald", { - description = "Emerald", - _doc_items_longdesc = "Emeralds are not very useful on their own, but they can exchanged for gold ingots by crafting.", + description = S("Emerald"), + _doc_items_longdesc = S("Emeralds are not very useful on their own, but they can exchanged for gold ingots by crafting."), inventory_image = "mcl_core_emerald.png", stack_max = 64, groups = { craftitem=1 }, }) minetest.register_craftitem("mcl_core:brick", { - description = "Brick", - _doc_items_longdesc = "Bricks are used to craft brick blocks.", + description = S("Brick"), + _doc_items_longdesc = S("Bricks are used to craft brick blocks."), inventory_image = "default_clay_brick.png", stack_max = 64, groups = { craftitem=1 }, }) minetest.register_craftitem("mcl_core:flint", { - description = "Flint", - _doc_items_longdesc = "Flint is a raw material.", + description = S("Flint"), + _doc_items_longdesc = S("Flint is a raw material."), inventory_image = "default_flint.png", stack_max = 64, groups = { craftitem=1 }, }) minetest.register_craftitem("mcl_core:sugar", { - description = "Sugar", - _doc_items_longdesc = "Sugar comes from sugar canes and is used to make sweet foods.", + description = S("Sugar"), + _doc_items_longdesc = S("Sugar comes from sugar canes and is used to make sweet foods."), inventory_image = "mcl_core_sugar.png", stack_max = 64, groups = { craftitem = 1 }, }) minetest.register_craftitem("mcl_core:bowl",{ - description = "Bowl", - _doc_items_longdesc = "Bowls are mainly used to hold tasty soups.", + description = S("Bowl"), + _doc_items_longdesc = S("Bowls are mainly used to hold tasty soups."), inventory_image = "mcl_core_bowl.png", stack_max = 64, groups = { craftitem = 1 }, }) minetest.register_craftitem("mcl_core:apple", { - description = "Apple", - _doc_items_longdesc = "Apples are food items which can be eaten.", + description = S("Apple"), + _doc_items_longdesc = S("Apples are food items which can be eaten."), wield_image = "default_apple.png", inventory_image = "default_apple.png", stack_max = 64, @@ -144,8 +146,8 @@ minetest.register_craftitem("mcl_core:apple", { -- TODO: Status effects minetest.register_craftitem("mcl_core:apple_gold", { - description = core.colorize("#55FFFF", "Golden Apple"), - _doc_items_longdesc = "Golden apples are precious food items which can be eaten.", + description = core.colorize("#55FFFF", S("Golden Apple")), + _doc_items_longdesc = S("Golden apples are precious food items which can be eaten."), wield_image = "mcl_core_apple_golden.png", inventory_image = "mcl_core_apple_golden.png", stack_max = 64, diff --git a/mods/ITEMS/mcl_core/nodes_base.lua b/mods/ITEMS/mcl_core/nodes_base.lua index 81395010..decdda0d 100644 --- a/mods/ITEMS/mcl_core/nodes_base.lua +++ b/mods/ITEMS/mcl_core/nodes_base.lua @@ -1,8 +1,10 @@ +local S = minetest.get_translator("mcl_core") + -- Simple solid cubic nodes, most of them are the ground materials and simple building blocks minetest.register_node("mcl_core:stone", { - description = "Stone", - _doc_items_longdesc = "One of the most common blocks in the world, almost the entire underground consists of stone. It sometimes contains ores. Stone may be created when water meets lava.", + description = S("Stone"), + _doc_items_longdesc = S("One of the most common blocks in the world, almost the entire underground consists of stone. It sometimes contains ores. Stone may be created when water meets lava."), _doc_items_hidden = false, tiles = {"default_stone.png"}, is_ground_content = true, @@ -15,8 +17,8 @@ minetest.register_node("mcl_core:stone", { }) minetest.register_node("mcl_core:stone_with_coal", { - description = "Coal Ore", - _doc_items_longdesc = "Some coal contained in stone, it is very common and can be found inside stone in medium to large clusters at nearly every height.", + description = S("Coal Ore"), + _doc_items_longdesc = S("Some coal contained in stone, it is very common and can be found inside stone in medium to large clusters at nearly every height."), _doc_items_hidden = false, tiles = {"mcl_core_coal_ore.png"}, is_ground_content = true, @@ -29,8 +31,8 @@ minetest.register_node("mcl_core:stone_with_coal", { }) minetest.register_node("mcl_core:stone_with_iron", { - description = "Iron Ore", - _doc_items_longdesc = "Some iron contained in stone, it is prety common and can be found below sea level.", + description = S("Iron Ore"), + _doc_items_longdesc = S("Some iron contained in stone, it is prety common and can be found below sea level."), tiles = {"mcl_core_iron_ore.png"}, is_ground_content = true, stack_max = 64, @@ -43,8 +45,8 @@ minetest.register_node("mcl_core:stone_with_iron", { minetest.register_node("mcl_core:stone_with_gold", { - description = "Gold Ore", - _doc_items_longdesc = "This stone contains pure gold, a rare metal.", + description = S("Gold Ore"), + _doc_items_longdesc = S("This stone contains pure gold, a rare metal."), tiles = {"mcl_core_gold_ore.png"}, is_ground_content = true, stack_max = 64, @@ -62,8 +64,8 @@ local redstone_ore_activate = function(pos) t:start(redstone_timer) end minetest.register_node("mcl_core:stone_with_redstone", { - description = "Redstone Ore", - _doc_items_longdesc = "Redstone ore is commonly found near the bottom of the world. It glows when it is punched or walked upon.", + description = S("Redstone Ore"), + _doc_items_longdesc = S("Redstone ore is commonly found near the bottom of the world. It glows when it is punched or walked upon."), tiles = {"mcl_core_redstone_ore.png"}, is_ground_content = true, stack_max = 64, @@ -93,7 +95,7 @@ local redstone_ore_reactivate = function(pos) end -- Light the redstone ore up when it has been touched minetest.register_node("mcl_core:stone_with_redstone_lit", { - description = "Lit Redstone Ore", + description = S("Lit Redstone Ore"), _doc_items_create_entry = false, tiles = {"mcl_core_redstone_ore.png"}, paramtype = "light", @@ -126,8 +128,8 @@ minetest.register_node("mcl_core:stone_with_redstone_lit", { }) minetest.register_node("mcl_core:stone_with_lapis", { - description = "Lapis Lazuli Ore", - _doc_items_longdesc = "Lapis lazuli ore is the ore of lapis lazuli. It can be rarely found in clusters near the bottom of the world.", + description = S("Lapis Lazuli Ore"), + _doc_items_longdesc = S("Lapis lazuli ore is the ore of lapis lazuli. It can be rarely found in clusters near the bottom of the world."), tiles = {"mcl_core_lapis_ore.png"}, is_ground_content = true, stack_max = 64, @@ -148,8 +150,8 @@ minetest.register_node("mcl_core:stone_with_lapis", { }) minetest.register_node("mcl_core:stone_with_emerald", { - description = "Emerald Ore", - _doc_items_longdesc = "Emerald ore is the ore of emeralds. It is very rare and can be found alone, not in clusters.", + description = S("Emerald Ore"), + _doc_items_longdesc = S("Emerald ore is the ore of emeralds. It is very rare and can be found alone, not in clusters."), tiles = {"mcl_core_emerald_ore.png"}, is_ground_content = true, stack_max = 64, @@ -161,8 +163,8 @@ minetest.register_node("mcl_core:stone_with_emerald", { }) minetest.register_node("mcl_core:stone_with_diamond", { - description = "Diamond Ore", - _doc_items_longdesc = "Diamond ore is rare and can be found in clusters near the bottom of the world.", + description = S("Diamond Ore"), + _doc_items_longdesc = S("Diamond ore is rare and can be found in clusters near the bottom of the world."), tiles = {"mcl_core_diamond_ore.png"}, is_ground_content = true, stack_max = 64, @@ -174,7 +176,7 @@ minetest.register_node("mcl_core:stone_with_diamond", { }) minetest.register_node("mcl_core:stonebrick", { - description = "Stone Bricks", + description = S("Stone Bricks"), _doc_items_longdesc = doc.sub.items.temp.build, tiles = {"default_stone_brick.png"}, stack_max = 64, @@ -186,7 +188,7 @@ minetest.register_node("mcl_core:stonebrick", { }) minetest.register_node("mcl_core:stonebrickcarved", { - description = "Chiseled Stone Bricks", + description = S("Chiseled Stone Bricks"), _doc_items_longdesc = doc.sub.items.temp.build, tiles = {"mcl_core_stonebrick_carved.png"}, stack_max = 64, @@ -198,7 +200,7 @@ minetest.register_node("mcl_core:stonebrickcarved", { }) minetest.register_node("mcl_core:stonebrickcracked", { - description = "Cracked Stone Bricks", + description = S("Cracked Stone Bricks"), _doc_items_longdesc = doc.sub.items.temp.build, tiles = {"mcl_core_stonebrick_cracked.png"}, stack_max = 64, @@ -210,7 +212,7 @@ minetest.register_node("mcl_core:stonebrickcracked", { }) minetest.register_node("mcl_core:stonebrickmossy", { - description = "Mossy Stone Bricks", + description = S("Mossy Stone Bricks"), _doc_items_longdesc = doc.sub.items.temp.build, tiles = {"mcl_core_stonebrick_mossy.png"}, stack_max = 64, @@ -222,7 +224,7 @@ minetest.register_node("mcl_core:stonebrickmossy", { }) minetest.register_node("mcl_core:stone_smooth", { - description = "Polished Stone", + description = S("Polished Stone"), _doc_items_longdesc = doc.sub.items.temp.build, tiles = {"mcl_stairs_stone_slab_top.png"}, stack_max = 64, @@ -234,7 +236,7 @@ minetest.register_node("mcl_core:stone_smooth", { }) minetest.register_node("mcl_core:granite", { - description = "Granite", + description = S("Granite"), _doc_items_longdesc = "Granite is an igneous rock.", tiles = {"mcl_core_granite.png"}, is_ground_content = true, @@ -246,8 +248,8 @@ minetest.register_node("mcl_core:granite", { }) minetest.register_node("mcl_core:granite_smooth", { - description = "Polished Granite", - _doc_items_longdesc = "Polished granite is a decorational building block made from granite.", + description = S("Polished Granite"), + _doc_items_longdesc = S("Polished granite is a decorational building block made from granite."), tiles = {"mcl_core_granite_smooth.png"}, stack_max = 64, is_ground_content = false, @@ -258,8 +260,8 @@ minetest.register_node("mcl_core:granite_smooth", { }) minetest.register_node("mcl_core:andesite", { - description = "Andesite", - _doc_items_longdesc = "Andesite is an igneous rock.", + description = S("Andesite"), + _doc_items_longdesc = S("Andesite is an igneous rock."), tiles = {"mcl_core_andesite.png"}, is_ground_content = true, stack_max = 64, @@ -270,8 +272,8 @@ minetest.register_node("mcl_core:andesite", { }) minetest.register_node("mcl_core:andesite_smooth", { - description = "Polished Andesite", - _doc_items_longdesc = "Polished andesite is a decorational building block made from andesite.", + description = S("Polished Andesite"), + _doc_items_longdesc = S("Polished andesite is a decorational building block made from andesite."), tiles = {"mcl_core_andesite_smooth.png"}, is_ground_content = false, stack_max = 64, @@ -282,8 +284,8 @@ minetest.register_node("mcl_core:andesite_smooth", { }) minetest.register_node("mcl_core:diorite", { - description = "Diorite", - _doc_items_longdesc = "Diorite is an igneous rock.", + description = S("Diorite"), + _doc_items_longdesc = S("Diorite is an igneous rock."), tiles = {"mcl_core_diorite.png"}, is_ground_content = true, stack_max = 64, @@ -294,8 +296,8 @@ minetest.register_node("mcl_core:diorite", { }) minetest.register_node("mcl_core:diorite_smooth", { - description = "Polished Diorite", - _doc_items_longdesc = "Polished diorite is a decorational building block made from diorite.", + description = S("Polished Diorite"), + _doc_items_longdesc = S("Polished diorite is a decorational building block made from diorite."), tiles = {"mcl_core_diorite_smooth.png"}, is_ground_content = false, stack_max = 64, @@ -307,8 +309,8 @@ minetest.register_node("mcl_core:diorite_smooth", { -- Grass Block minetest.register_node("mcl_core:dirt_with_grass", { - description = "Grass Block", - _doc_items_longdesc = "A grass block is dirt with a grass cover. Grass blocks are resourceful blocks which allow the growth of all sorts of plants. They can be turned into farmland with a hoe and turned into grass paths with a shovel. In light, the grass slowly spreads onto dirt nearby. Under an opaque block or a liquid, a grass block may turn back to dirt.", + description = S("Grass Block"), + _doc_items_longdesc = S("A grass block is dirt with a grass cover. Grass blocks are resourceful blocks which allow the growth of all sorts of plants. They can be turned into farmland with a hoe and turned into grass paths with a shovel. In light, the grass slowly spreads onto dirt nearby. Under an opaque block or a liquid, a grass block may turn back to dirt."), _doc_items_hidden = false, tiles = {"default_grass.png", "default_dirt.png", {name="default_dirt.png^default_grass_side.png", tileable_vertical=false}}, is_ground_content = true, @@ -367,8 +369,8 @@ end minetest.register_node("mcl_core:grass_path", { tiles = {"mcl_core_grass_path_top.png", "default_dirt.png", "mcl_core_grass_path_side.png"}, - description = "Grass Path", - _doc_items_longdesc = "Grass paths are a decorational variant of grass blocks. Their top has a different color and they are a bit lower than grass blocks, making them useful to build footpaths. Grass paths can be created with a shovel. A grass path turns into dirt when it is below a solid block.", + description = S("Grass Path"), + _doc_items_longdesc = S("Grass paths are a decorational variant of grass blocks. Their top has a different color and they are a bit lower than grass blocks, making them useful to build footpaths. Grass paths can be created with a shovel. A grass path turns into dirt when it is below a solid block."), drop = "mcl_core:dirt", is_ground_content = true, drawtype = "nodebox", @@ -390,8 +392,8 @@ minetest.register_node("mcl_core:grass_path", { -- TODO: Add particles minetest.register_node("mcl_core:mycelium", { - description = "Mycelium", - _doc_items_longdesc = "Mycelium is a type of dirt and the ideal soil for mushrooms. Unlike other dirt-type blocks, it can not be turned into farmland with a hoe. In light, mycelium slowly spreads over nearby dirt. Under an opaque block or a liquid, it eventually turns back into dirt.", + description = S("Mycelium"), + _doc_items_longdesc = S("Mycelium is a type of dirt and the ideal soil for mushrooms. Unlike other dirt-type blocks, it can not be turned into farmland with a hoe. In light, mycelium slowly spreads over nearby dirt. Under an opaque block or a liquid, it eventually turns back into dirt."), tiles = {"mcl_core_mycelium_top.png", "default_dirt.png", {name="mcl_core_mycelium_side.png", tileable_vertical=false}}, is_ground_content = true, stack_max = 64, @@ -409,8 +411,8 @@ minetest.register_node("mcl_core:mycelium", { mcl_core.register_snowed_node("mcl_core:mycelium_snow", "mcl_core:mycelium") minetest.register_node("mcl_core:podzol", { - description = "Podzol", - _doc_items_longdesc = "Podzol is a type of dirt found in taiga forests. Only a few plants are able to survive on it.", + description = S("Podzol"), + _doc_items_longdesc = S("Podzol is a type of dirt found in taiga forests. Only a few plants are able to survive on it."), tiles = {"mcl_core_dirt_podzol_top.png", "default_dirt.png", {name="mcl_core_dirt_podzol_side.png", tileable_vertical=false}}, is_ground_content = true, stack_max = 64, @@ -425,8 +427,8 @@ minetest.register_node("mcl_core:podzol", { mcl_core.register_snowed_node("mcl_core:podzol_snow", "mcl_core:podzol") minetest.register_node("mcl_core:dirt", { - description = "Dirt", - _doc_items_longdesc = "Dirt acts as a soil for a few plants. When in light, this block may grow a grass or mycelium cover if such blocks are nearby.", + description = S("Dirt"), + _doc_items_longdesc = S("Dirt acts as a soil for a few plants. When in light, this block may grow a grass or mycelium cover if such blocks are nearby."), _doc_items_hidden = false, tiles = {"default_dirt.png"}, is_ground_content = true, @@ -438,8 +440,8 @@ minetest.register_node("mcl_core:dirt", { }) minetest.register_node("mcl_core:coarse_dirt", { - description = "Coarse Dirt", - _doc_items_longdesc = "Coarse dirt acts as a soil for some plants and is similar to dirt, but it will never grow a cover.", + description = S("Coarse Dirt"), + _doc_items_longdesc = S("Coarse dirt acts as a soil for some plants and is similar to dirt, but it will never grow a cover."), tiles = {"mcl_core_coarse_dirt.png"}, is_ground_content = true, stack_max = 64, @@ -450,8 +452,8 @@ minetest.register_node("mcl_core:coarse_dirt", { }) minetest.register_node("mcl_core:gravel", { - description = "Gravel", - _doc_items_longdesc = "This block consists of a couple of loose stones and can't support itself.", + description = S("Gravel"), + _doc_items_longdesc = S("This block consists of a couple of loose stones and can't support itself."), tiles = {"default_gravel.png"}, is_ground_content = true, stack_max = 64, @@ -472,8 +474,8 @@ minetest.register_node("mcl_core:gravel", { -- sandstone -- minetest.register_node("mcl_core:sand", { - description = "Sand", - _doc_items_longdesc = "Sand is found in large quantities at beaches and deserts.", + description = S("Sand"), + _doc_items_longdesc = S("Sand is found in large quantities at beaches and deserts."), _doc_items_hidden = false, tiles = {"default_sand.png"}, is_ground_content = true, @@ -485,9 +487,9 @@ minetest.register_node("mcl_core:sand", { }) minetest.register_node("mcl_core:sandstone", { - description = "Sandstone", + description = S("Sandstone"), _doc_items_hidden = false, - _doc_items_longdesc = "Sandstone is compressed sand and is a rather soft kind of stone.", + _doc_items_longdesc = S("Sandstone is compressed sand and is a rather soft kind of stone."), tiles = {"mcl_core_sandstone_top.png", "mcl_core_sandstone_bottom.png", "mcl_core_sandstone_normal.png"}, is_ground_content = true, stack_max = 64, @@ -498,8 +500,8 @@ minetest.register_node("mcl_core:sandstone", { }) minetest.register_node("mcl_core:sandstonesmooth", { - description = "Cut Sandstone", - _doc_items_longdesc = "Cut sandstone is a decorational building block.", + description = S("Cut Sandstone"), + _doc_items_longdesc = S("Cut sandstone is a decorational building block."), tiles = {"mcl_core_sandstone_top.png", "mcl_core_sandstone_bottom.png", "mcl_core_sandstone_smooth.png"}, is_ground_content = false, stack_max = 64, @@ -510,8 +512,8 @@ minetest.register_node("mcl_core:sandstonesmooth", { }) minetest.register_node("mcl_core:sandstonecarved", { - description = "Chiseled Sandstone", - _doc_items_longdesc = "Chiseled sandstone is a decorational building block.", + description = S("Chiseled Sandstone"), + _doc_items_longdesc = S("Chiseled sandstone is a decorational building block."), tiles = {"mcl_core_sandstone_top.png", "mcl_core_sandstone_bottom.png", "mcl_core_sandstone_carved.png"}, is_ground_content = false, stack_max = 64, @@ -522,9 +524,9 @@ minetest.register_node("mcl_core:sandstonecarved", { }) minetest.register_node("mcl_core:sandstonesmooth2", { - description = "Smooth Sandstone", + description = S("Smooth Sandstone"), _doc_items_hidden = false, - _doc_items_longdesc = "Smooth sandstone is compressed sand and is a rather soft kind of stone.", + _doc_items_longdesc = S("Smooth sandstone is compressed sand and is a rather soft kind of stone."), tiles = {"mcl_core_sandstone_top.png"}, is_ground_content = false, stack_max = 64, @@ -537,8 +539,8 @@ minetest.register_node("mcl_core:sandstonesmooth2", { -- red sandstone -- minetest.register_node("mcl_core:redsand", { - description = "Red Sand", - _doc_items_longdesc = "Red sand is found in large quantities in mesa biomes.", + description = S("Red Sand"), + _doc_items_longdesc = S("Red sand is found in large quantities in mesa biomes."), tiles = {"mcl_core_red_sand.png"}, is_ground_content = true, stack_max = 64, @@ -549,8 +551,8 @@ minetest.register_node("mcl_core:redsand", { }) minetest.register_node("mcl_core:redsandstone", { - description = "Red Sandstone", - _doc_items_longdesc = "Red sandstone is compressed red sand and is a rather soft kind of stone.", + description = S("Red Sandstone"), + _doc_items_longdesc = S("Red sandstone is compressed red sand and is a rather soft kind of stone."), tiles = {"mcl_core_red_sandstone_top.png", "mcl_core_red_sandstone_bottom.png", "mcl_core_red_sandstone_normal.png"}, is_ground_content = true, stack_max = 64, @@ -561,8 +563,8 @@ minetest.register_node("mcl_core:redsandstone", { }) minetest.register_node("mcl_core:redsandstonesmooth", { - description = "Cut Red Sandstone", - _doc_items_longdesc = "Cut red sandstone is a decorational building block.", + description = S("Cut Red Sandstone"), + _doc_items_longdesc = S("Cut red sandstone is a decorational building block."), tiles = {"mcl_core_red_sandstone_top.png", "mcl_core_red_sandstone_bottom.png", "mcl_core_red_sandstone_smooth.png"}, is_ground_content = false, stack_max = 64, @@ -573,8 +575,8 @@ minetest.register_node("mcl_core:redsandstonesmooth", { }) minetest.register_node("mcl_core:redsandstonecarved", { - description = "Chiseled Red Sandstone", - _doc_items_longdesc = "Chiseled red sandstone is a decorational building block.", + description = S("Chiseled Red Sandstone"), + _doc_items_longdesc = S("Chiseled red sandstone is a decorational building block."), tiles = {"mcl_core_red_sandstone_top.png", "mcl_core_red_sandstone_bottom.png", "mcl_core_red_sandstone_carved.png"}, is_ground_content = false, stack_max = 64, @@ -585,8 +587,8 @@ minetest.register_node("mcl_core:redsandstonecarved", { }) minetest.register_node("mcl_core:redsandstonesmooth2", { - description = "Smooth Red Sandstone", - _doc_items_longdesc = "Smooth red sandstone is a decorational building block.", + description = S("Smooth Red Sandstone"), + _doc_items_longdesc = S("Smooth red sandstone is a decorational building block."), tiles = {"mcl_core_red_sandstone_top.png"}, is_ground_content = false, stack_max = 64, @@ -599,8 +601,8 @@ minetest.register_node("mcl_core:redsandstonesmooth2", { --- minetest.register_node("mcl_core:clay", { - description = "Clay", - _doc_items_longdesc = "Clay is a versatile kind of earth commonly found at beaches underwater.", + description = S("Clay"), + _doc_items_longdesc = S("Clay is a versatile kind of earth commonly found at beaches underwater."), _doc_items_hidden = false, tiles = {"default_clay.png"}, is_ground_content = true, @@ -614,8 +616,8 @@ minetest.register_node("mcl_core:clay", { minetest.register_node("mcl_core:brick_block", { -- Original name: “Bricks” - description = "Brick Block", - _doc_items_longdesc = "Brick blocks are a good building material for building solid houses and can take quite a punch.", + description = S("Brick Block"), + _doc_items_longdesc = S("Brick blocks are a good building material for building solid houses and can take quite a punch."), tiles = {"default_brick.png"}, is_ground_content = false, stack_max = 64, @@ -627,9 +629,9 @@ minetest.register_node("mcl_core:brick_block", { minetest.register_node("mcl_core:bedrock", { - description = "Bedrock", - _doc_items_longdesc = "Bedrock is a very hard type of rock. It can not be broken, destroyed, collected or moved by normal means, unless in Creative Mode.".."\n".. - "In the End dimension, starting a fire on this block will create an eternal fire.", + description = S("Bedrock"), + _doc_items_longdesc = S("Bedrock is a very hard type of rock. It can not be broken, destroyed, collected or moved by normal means, unless in Creative Mode.").."\n".. + S("In the End dimension, starting a fire on this block will create an eternal fire."), tiles = {"mcl_core_bedrock.png"}, stack_max = 64, groups = {creative_breakable=1, building_block=1, material_stone=1}, @@ -666,7 +668,7 @@ minetest.register_node("mcl_core:bedrock", { }) minetest.register_node("mcl_core:cobble", { - description = "Cobblestone", + description = S("Cobblestone"), _doc_items_longdesc = doc.sub.items.temp.build, _doc_items_hidden = false, tiles = {"default_cobble.png"}, @@ -679,7 +681,7 @@ minetest.register_node("mcl_core:cobble", { }) minetest.register_node("mcl_core:mossycobble", { - description = "Moss Stone", + description = S("Moss Stone"), _doc_items_longdesc = doc.sub.items.temp.build, tiles = {"default_mossycobble.png"}, is_ground_content = false, @@ -691,8 +693,8 @@ minetest.register_node("mcl_core:mossycobble", { }) minetest.register_node("mcl_core:coalblock", { - description = "Block of Coal", - _doc_items_longdesc = "Blocks of coal are useful as a compact storage of coal and very useful as a furnace fuel. A block of coal is as efficient as 10 coal.", + description = S("Block of Coal"), + _doc_items_longdesc = S("Blocks of coal are useful as a compact storage of coal and very useful as a furnace fuel. A block of coal is as efficient as 10 coal."), tiles = {"default_coal_block.png"}, is_ground_content = false, stack_max = 64, @@ -703,8 +705,8 @@ minetest.register_node("mcl_core:coalblock", { }) minetest.register_node("mcl_core:ironblock", { - description = "Block of Iron", - _doc_items_longdesc = "A block of iron is mostly a decorational block but also useful as a compact storage of iron ingots.", + description = S("Block of Iron"), + _doc_items_longdesc = S("A block of iron is mostly a decorational block but also useful as a compact storage of iron ingots."), tiles = {"default_steel_block.png"}, is_ground_content = false, stack_max = 64, @@ -715,8 +717,8 @@ minetest.register_node("mcl_core:ironblock", { }) minetest.register_node("mcl_core:goldblock", { - description = "Block of Gold", - _doc_items_longdesc = "A block of gold is mostly a shiny decorational block but also useful as a compact storage of gold ingots.", + description = S("Block of Gold"), + _doc_items_longdesc = S("A block of gold is mostly a shiny decorational block but also useful as a compact storage of gold ingots."), tiles = {"default_gold_block.png"}, is_ground_content = false, stack_max = 64, @@ -727,8 +729,8 @@ minetest.register_node("mcl_core:goldblock", { }) minetest.register_node("mcl_core:diamondblock", { - description = "Block of Diamond", - _doc_items_longdesc = "A block of diamond mostly a shiny decorational block but also useful as a compact storage of diamonds.", + description = S("Block of Diamond"), + _doc_items_longdesc = S("A block of diamond mostly a shiny decorational block but also useful as a compact storage of diamonds."), tiles = {"default_diamond_block.png"}, is_ground_content = false, stack_max = 64, @@ -739,8 +741,8 @@ minetest.register_node("mcl_core:diamondblock", { }) minetest.register_node("mcl_core:lapisblock", { - description = "Lapis Lazuli Block", - _doc_items_longdesc = "A lapis lazuli block is mostly a decorational block but also useful as a compact storage of lapis lazuli.", + description = S("Lapis Lazuli Block"), + _doc_items_longdesc = S("A lapis lazuli block is mostly a decorational block but also useful as a compact storage of lapis lazuli."), tiles = {"mcl_core_lapis_block.png"}, is_ground_content = false, stack_max = 64, @@ -751,8 +753,8 @@ minetest.register_node("mcl_core:lapisblock", { }) minetest.register_node("mcl_core:emeraldblock", { - description = "Block of Emerald", - _doc_items_longdesc = "A block of emerald is mostly a shiny decorational block but also useful as a compact storage of emeralds.", + description = S("Block of Emerald"), + _doc_items_longdesc = S("A block of emerald is mostly a shiny decorational block but also useful as a compact storage of emeralds."), tiles = {"mcl_core_emerald_block.png"}, is_ground_content = false, stack_max = 64, @@ -763,8 +765,8 @@ minetest.register_node("mcl_core:emeraldblock", { }) minetest.register_node("mcl_core:obsidian", { - description = "Obsidian", - _doc_items_longdesc = "Obsidian is an extremely hard mineral with an enourmous blast-resistance. Obsidian is formed when water meets lava.", + description = S("Obsidian"), + _doc_items_longdesc = S("Obsidian is an extremely hard mineral with an enourmous blast-resistance. Obsidian is formed when water meets lava."), tiles = {"default_obsidian.png"}, is_ground_content = true, sounds = mcl_sounds.node_sound_stone_defaults(), @@ -775,8 +777,8 @@ minetest.register_node("mcl_core:obsidian", { }) minetest.register_node("mcl_core:ice", { - description = "Ice", - _doc_items_longdesc = "Ice is a translucent solid block usually found in cold areas. It melts near block light sources at a light level of 12 or higher. When it melts or is broken while resting on top of another block, it will turn into a water source.", + description = S("Ice"), + _doc_items_longdesc = S("Ice is a translucent solid block usually found in cold areas. It melts near block light sources at a light level of 12 or higher. When it melts or is broken while resting on top of another block, it will turn into a water source."), drawtype = "glasslike", tiles = {"default_ice.png"}, is_ground_content = true, @@ -800,8 +802,8 @@ minetest.register_node("mcl_core:ice", { }) minetest.register_node("mcl_core:packed_ice", { - description = "Packed Ice", - _doc_items_longdesc = "Packed ice is a compressed form of ice. It is opaque and solid.", + description = S("Packed Ice"), + _doc_items_longdesc = S("Packed ice is a compressed form of ice. It is opaque and solid."), tiles = {"mcl_core_ice_packed.png"}, is_ground_content = true, stack_max = 64, @@ -840,10 +842,10 @@ for i=0,3 do local use_doc = i == 0 local longdesc if use_doc then - longdesc = "Frosted ice is a short-lived solid translucent block. It melts into a water source within a few seconds." + longdesc = S("Frosted ice is a short-lived solid translucent block. It melts into a water source within a few seconds.") end minetest.register_node("mcl_core:frosted_ice_"..i, { - description = "Frosted Ice", + description = S("Frosted Ice"), _doc_items_create_entry = use_doc, _doc_items_longdesc = longdesc, drawtype = "glasslike", @@ -886,8 +888,8 @@ for i=1,8 do local id, desc, longdesc, usagehelp, help, walkable, drawtype, node_box if i == 1 then id = "mcl_core:snow" - desc = "Top Snow" - longdesc = "Top snow is a layer of snow. It melts near light sources other than the sun with a light level of 12 or higher.".."\n".."Top snow can be stacked and has one of 8 different height levels. At levels 2-8, top snow is collidable. Top snow drops 2-9 snowballs, depending on its height." + desc = S("Top Snow") + longdesc = S("Top snow is a layer of snow. It melts near light sources other than the sun with a light level of 12 or higher.".."\n".."Top snow can be stacked and has one of 8 different height levels. At levels 2-8, top snow is collidable. Top snow drops 2-9 snowballs, depending on its height.") usagehelp = "This block can only be placed on full solid blocks and on another top snow (which increases its height)." walkable = false else @@ -995,8 +997,8 @@ for i=1,8 do end minetest.register_node("mcl_core:snowblock", { - description = "Snow", - _doc_items_longdesc = "This is a full block of snow. Snow of this thickness is usually found in areas of extreme cold.", + description = S("Snow"), + _doc_items_longdesc = S("This is a full block of snow. Snow of this thickness is usually found in areas of extreme cold."), _doc_items_hidden = false, tiles = {"default_snow.png"}, is_ground_content = true, diff --git a/mods/ITEMS/mcl_core/nodes_cactuscane.lua b/mods/ITEMS/mcl_core/nodes_cactuscane.lua index d0c00654..59efa759 100644 --- a/mods/ITEMS/mcl_core/nodes_cactuscane.lua +++ b/mods/ITEMS/mcl_core/nodes_cactuscane.lua @@ -1,9 +1,11 @@ -- Cactus and Sugar Cane +local S = minetest.get_translator("mcl_core") + minetest.register_node("mcl_core:cactus", { - description = "Cactus", - _doc_items_longdesc = "This is a piece of cactus commonly found in dry areas, especially deserts. Over time, cacti will grow up to 3 blocks high on sand or red sand. A cactus hurts living beings touching it with a damage of 1 HP every half second. When a cactus block is broken, all cactus blocks connected above it will break as well.", - _doc_items_usagehelp = "A cactus can only be placed on top of another cactus or any sand.", + description = S("Cactus"), + _doc_items_longdesc = S("This is a piece of cactus commonly found in dry areas, especially deserts. Over time, cacti will grow up to 3 blocks high on sand or red sand. A cactus hurts living beings touching it with a damage of 1 HP every half second. When a cactus block is broken, all cactus blocks connected above it will break as well."), + _doc_items_usagehelp = S("A cactus can only be placed on top of another cactus or any sand."), drawtype = "nodebox", tiles = {"mcl_core_cactus_top.png", "mcl_core_cactus_bottom.png", "mcl_core_cactus_side.png"}, is_ground_content = true, @@ -44,9 +46,9 @@ minetest.register_node("mcl_core:cactus", { }) minetest.register_node("mcl_core:reeds", { - description = "Sugar Canes", - _doc_items_longdesc = "Sugar canes are a plant which has some uses in crafting. Sugar canes will slowly grow up to 3 blocks when they are next to water and are placed on a grass block, dirt, sand, red sand, podzol or coarse dirt. When a sugar cane is broken, all sugar canes connected above will break as well.", - _doc_items_usagehelp = "Sugar canes can only be placed top of other sugar canes and on top of blocks on which they would grow.", + description = S("Sugar Canes"), + _doc_items_longdesc = S("Sugar canes are a plant which has some uses in crafting. Sugar canes will slowly grow up to 3 blocks when they are next to water and are placed on a grass block, dirt, sand, red sand, podzol or coarse dirt. When a sugar cane is broken, all sugar canes connected above will break as well."), + _doc_items_usagehelp = S("Sugar canes can only be placed top of other sugar canes and on top of blocks on which they would grow."), drawtype = "plantlike", tiles = {"default_papyrus.png"}, inventory_image = "mcl_core_reeds.png", diff --git a/mods/ITEMS/mcl_core/nodes_climb.lua b/mods/ITEMS/mcl_core/nodes_climb.lua index 25f8cdb5..eda1fc66 100644 --- a/mods/ITEMS/mcl_core/nodes_climb.lua +++ b/mods/ITEMS/mcl_core/nodes_climb.lua @@ -1,8 +1,9 @@ -- Climbable nodes +local S = minetest.get_translator("mcl_core") minetest.register_node("mcl_core:ladder", { - description = "Ladder", - _doc_items_longdesc = "A piece of ladder which allows you to climb vertically. Ladders can only be placed on the side of solid blocks and not on glass, leaves, ice, slabs, glowstone, nor sea lanterns.", + description = S("Ladder"), + _doc_items_longdesc = S("A piece of ladder which allows you to climb vertically. Ladders can only be placed on the side of solid blocks and not on glass, leaves, ice, slabs, glowstone, nor sea lanterns."), drawtype = "signlike", is_ground_content = false, tiles = {"default_ladder.png"}, @@ -77,8 +78,8 @@ minetest.register_node("mcl_core:ladder", { minetest.register_node("mcl_core:vine", { - description = "Vines", - _doc_items_longdesc = "Vines are climbable blocks which can be placed on the sides solid full-cube blocks. Vines slowly grow and spread.", + description = S("Vines"), + _doc_items_longdesc = S("Vines are climbable blocks which can be placed on the sides solid full-cube blocks. Vines slowly grow and spread."), drawtype = "signlike", tiles = {"mcl_core_vine.png"}, inventory_image = "mcl_core_vine.png", diff --git a/mods/ITEMS/mcl_core/nodes_glass.lua b/mods/ITEMS/mcl_core/nodes_glass.lua index 6bd8a924..b9344962 100644 --- a/mods/ITEMS/mcl_core/nodes_glass.lua +++ b/mods/ITEMS/mcl_core/nodes_glass.lua @@ -1,8 +1,9 @@ -- Glass nodes +local S = minetest.get_translator("mcl_core") minetest.register_node("mcl_core:glass", { - description = "Glass", - _doc_items_longdesc = "A decorational and mostly transparent block.", + description = S("Glass"), + _doc_items_longdesc = S("A decorational and mostly transparent block."), drawtype = "glasslike", is_ground_content = false, tiles = {"default_glass.png"}, @@ -23,7 +24,7 @@ function mcl_core.add_glass(desc, recipeitem, colorgroup, color) minetest.register_node("mcl_core:glass_"..color, { description = desc, - _doc_items_longdesc = "Stained glass is a decorational and mostly transparent block which comes in various different colors.", + _doc_items_longdesc = S("Stained glass is a decorational and mostly transparent block which comes in various different colors."), drawtype = "glasslike", is_ground_content = false, tiles = {"mcl_core_glass_"..color..".png"}, @@ -50,20 +51,20 @@ function mcl_core.add_glass(desc, recipeitem, colorgroup, color) end ---- colored glass -mcl_core.add_glass( "Red Stained Glass", "mcl_dye:red", "basecolor_red", "red") -mcl_core.add_glass( "Green Stained Glass", "mcl_dye:dark_green", "unicolor_dark_green", "green") -mcl_core.add_glass( "Blue Stained Glass", "mcl_dye:blue", "basecolor_blue", "blue") -mcl_core.add_glass( "Light Blue Stained Glass", "mcl_dye:lightblue", "unicolor_light_blue", "light_blue") -mcl_core.add_glass( "Black Stained Glass", "mcl_dye:black", "basecolor_black", "black") -mcl_core.add_glass( "White Stained Glass", "mcl_dye:white", "basecolor_white", "white") -mcl_core.add_glass( "Yellow Stained Glass", "mcl_dye:yellow", "basecolor_yellow", "yellow") -mcl_core.add_glass( "Brown Stained Glass", "mcl_dye:brown", "unicolor_dark_orange", "brown") -mcl_core.add_glass( "Orange Stained Glass", "mcl_dye:orange", "excolor_orange", "orange") -mcl_core.add_glass( "Pink Stained Glass", "mcl_dye:pink", "unicolor_light_red", "pink") -mcl_core.add_glass( "Grey Stained Glass", "mcl_dye:dark_grey", "unicolor_darkgrey", "gray") -mcl_core.add_glass( "Lime Stained Glass", "mcl_dye:green", "basecolor_green", "lime") -mcl_core.add_glass( "Light Grey Stained Glass", "mcl_dye:grey", "basecolor_grey", "silver") -mcl_core.add_glass( "Magenta Stained Glass", "mcl_dye:magenta", "basecolor_magenta", "magenta") -mcl_core.add_glass( "Purple Stained Glass", "mcl_dye:violet", "excolor_violet", "purple") -mcl_core.add_glass( "Cyan Stained Glass", "mcl_dye:cyan", "basecolor_cyan", "cyan") +mcl_core.add_glass( S("Red Stained Glass"), "mcl_dye:red", "basecolor_red", "red") +mcl_core.add_glass( S("Green Stained Glass"), "mcl_dye:dark_green", "unicolor_dark_green", "green") +mcl_core.add_glass( S("Blue Stained Glass"), "mcl_dye:blue", "basecolor_blue", "blue") +mcl_core.add_glass( S("Light Blue Stained Glass"), "mcl_dye:lightblue", "unicolor_light_blue", "light_blue") +mcl_core.add_glass( S("Black Stained Glass"), "mcl_dye:black", "basecolor_black", "black") +mcl_core.add_glass( S("White Stained Glass"), "mcl_dye:white", "basecolor_white", "white") +mcl_core.add_glass( S("Yellow Stained Glass"), "mcl_dye:yellow", "basecolor_yellow", "yellow") +mcl_core.add_glass( S("Brown Stained Glass"), "mcl_dye:brown", "unicolor_dark_orange", "brown") +mcl_core.add_glass( S("Orange Stained Glass"), "mcl_dye:orange", "excolor_orange", "orange") +mcl_core.add_glass( S("Pink Stained Glass"), "mcl_dye:pink", "unicolor_light_red", "pink") +mcl_core.add_glass( S("Grey Stained Glass"), "mcl_dye:dark_grey", "unicolor_darkgrey", "gray") +mcl_core.add_glass( S("Lime Stained Glass"), "mcl_dye:green", "basecolor_green", "lime") +mcl_core.add_glass( S("Light Grey Stained Glass"), "mcl_dye:grey", "basecolor_grey", "silver") +mcl_core.add_glass( S("Magenta Stained Glass"), "mcl_dye:magenta", "basecolor_magenta", "magenta") +mcl_core.add_glass( S("Purple Stained Glass"), "mcl_dye:violet", "excolor_violet", "purple") +mcl_core.add_glass( S("Cyan Stained Glass"), "mcl_dye:cyan", "basecolor_cyan", "cyan") diff --git a/mods/ITEMS/mcl_core/nodes_liquid.lua b/mods/ITEMS/mcl_core/nodes_liquid.lua index 7d738690..8fe03205 100644 --- a/mods/ITEMS/mcl_core/nodes_liquid.lua +++ b/mods/ITEMS/mcl_core/nodes_liquid.lua @@ -1,11 +1,13 @@ -- Liquids: Water and lava +local S = minetest.get_translator("mcl_core") + local WATER_ALPHA = 179 local WATER_VISC = 1 local LAVA_VISC = 7 minetest.register_node("mcl_core:water_flowing", { - description = "Flowing Water", + description = S("Flowing Water"), _doc_items_create_entry = false, wield_image = "default_water_flowing_animated.png^[verticalframe:64:0", drawtype = "flowingliquid", @@ -45,14 +47,14 @@ minetest.register_node("mcl_core:water_flowing", { }) minetest.register_node("mcl_core:water_source", { - description = "Water Source", - _doc_items_entry_name = "Water", + description = S("Water Source"), + _doc_items_entry_name = S("Water"), _doc_items_longdesc = -[[Water is abundant in oceans and also appears in a few springs in the ground. You can swim easily in water, but you need to catch your breath from time to time. -Water interacts with lava in various ways: +S("Water is abundant in oceans and also appears in a few springs in the ground. You can swim easily in water, but you need to catch your breath from time to time.").."\n".. +S([[Water interacts with lava in various ways: • When water is directly above or horizontally next to a lava source, the lava turns into obsidian. • When flowing water touches flowing lava either from above or horizontally, the lava turns into cobblestone. -• When water is directly below lava, the water turns into stone.]], +• When water is directly below lava, the water turns into stone.]]), _doc_items_hidden = false, drawtype = "liquid", tiles = { @@ -89,7 +91,7 @@ Water interacts with lava in various ways: }) minetest.register_node("mcl_core:lava_flowing", { - description = "Flowing Lava", + description = S("Flowing Lava"), _doc_items_create_entry = false, wield_image = "default_lava_flowing_animated.png^[verticalframe:64:0", drawtype = "flowingliquid", @@ -135,15 +137,15 @@ minetest.register_node("mcl_core:lava_flowing", { }) minetest.register_node("mcl_core:lava_source", { - description = "Lava Source", + description = S("Lava Source"), _doc_items_entry_name = "Lava", _doc_items_longdesc = -[[Lava is hot and rather dangerous. Don't touch it, it will hurt you a lot and it is hard to get out. -A lava source sets fire to a couple of air blocks above when they're next to a flammable block. -Lava interacts with water various ways: +S("Lava is hot and rather dangerous. Don't touch it, it will hurt you a lot and it is hard to get out.").."\n".. +S("A lava source sets fire to a couple of air blocks above when they're next to a flammable block.").."\n".. +S([[Lava interacts with water various ways: • When a lava source is directly below or horizontally next to water, the lava turns into obsidian. • When flowing water touches flowing lava either from above or horizontally, the lava turns into cobblestone. -• When lava is directly above water, the water turns into stone.]], +• When lava is directly above water, the water turns into stone.]]), drawtype = "liquid", tiles = { {name="default_lava_source_animated.png", animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=3.0}} diff --git a/mods/ITEMS/mcl_core/nodes_misc.lua b/mods/ITEMS/mcl_core/nodes_misc.lua index 26b25618..7c6f7dc7 100644 --- a/mods/ITEMS/mcl_core/nodes_misc.lua +++ b/mods/ITEMS/mcl_core/nodes_misc.lua @@ -1,8 +1,9 @@ -- Other nodes +local S = minetest.get_translator("mcl_core") minetest.register_node("mcl_core:bone_block", { - description = "Bone Block", - _doc_items_longdesc = "Bone blocks are decorational blocks and a compact storage of bone meal.", + description = S("Bone Block"), + _doc_items_longdesc = S("Bone blocks are decorational blocks and a compact storage of bone meal."), tiles = {"mcl_core_bone_block_top.png", "mcl_core_bone_block_top.png", "mcl_core_bone_block_side.png"}, is_ground_content = false, paramtype2 = "facedir", @@ -14,8 +15,8 @@ minetest.register_node("mcl_core:bone_block", { }) minetest.register_node("mcl_core:slimeblock", { - description = "Slime Block", - _doc_items_longdesc = "Slime blocks are very bouncy and prevent fall damage.", + description = S("Slime Block"), + _doc_items_longdesc = S("Slime blocks are very bouncy and prevent fall damage."), drawtype = "nodebox", paramtype = "light", is_ground_content = false, @@ -47,8 +48,8 @@ minetest.register_node("mcl_core:slimeblock", { }) minetest.register_node("mcl_core:cobweb", { - description = "Cobweb", - _doc_items_longdesc = "Cobwebs can be walked through, but significantly slow you down.", + description = S("Cobweb"), + _doc_items_longdesc = S("Cobwebs can be walked through, but significantly slow you down."), drawtype = "plantlike", paramtype2 = "degrotate", visual_scale = 1.1, @@ -73,8 +74,8 @@ minetest.register_node("mcl_core:cobweb", { minetest.register_node("mcl_core:deadbush", { - description = "Dead Bush", - _doc_items_longdesc = "Dead bushes are unremarkable plants often found in dry areas. They can be harvested for sticks.", + description = S("Dead Bush"), + _doc_items_longdesc = S("Dead bushes are unremarkable plants often found in dry areas. They can be harvested for sticks."), _doc_items_hidden = false, drawtype = "plantlike", waving = 1, @@ -112,9 +113,9 @@ minetest.register_node("mcl_core:deadbush", { }) minetest.register_node("mcl_core:barrier", { - description = "Barrier", - _doc_items_longdesc = "Barriers are invisble walkable blocks. They are used to create boundaries of adventure maps and the like. Monsters and animals won't appear on barriers, and fences do not connect to barriers. Other blocks can be built on barriers like on any other block.", - _doc_items_usagehelp = "When you hold a barrier in hand, you reveal all placed barriers in a short distance around you.", + description = S("Barrier"), + _doc_items_longdesc = S("Barriers are invisble walkable blocks. They are used to create boundaries of adventure maps and the like. Monsters and animals won't appear on barriers, and fences do not connect to barriers. Other blocks can be built on barriers like on any other block."), + _doc_items_usagehelp = S("When you hold a barrier in hand, you reveal all placed barriers in a short distance around you."), drawtype = "airlike", paramtype = "light", inventory_image = "mcl_core_barrier.png", @@ -169,7 +170,7 @@ minetest.register_node("mcl_core:barrier", { -- This node only exists because Minetest does not have support for “dimensions” yet and needs to -- be removed when support for this is implemented. minetest.register_node("mcl_core:realm_barrier", { - description = "Realm Barrier", + description = S("Realm Barrier"), _doc_items_create_entry = false, drawtype = "airlike", paramtype = "light", @@ -202,7 +203,7 @@ minetest.register_node("mcl_core:realm_barrier", { -- The void does not exist as a block in Minecraft but we register it as a -- block here to make things easier for us. minetest.register_node("mcl_core:void", { - description = "Void", + description = S("Void"), _doc_items_create_entry = false, drawtype = "airlike", paramtype = "light", diff --git a/mods/ITEMS/mcl_core/nodes_trees.lua b/mods/ITEMS/mcl_core/nodes_trees.lua index afe03e3f..433ae03a 100644 --- a/mods/ITEMS/mcl_core/nodes_trees.lua +++ b/mods/ITEMS/mcl_core/nodes_trees.lua @@ -1,4 +1,5 @@ -- Tree nodes: Wood, Wooden Planks, Sapling, Leaves +local S = minetest.get_translator("mcl_core") -- Register tree trunk (wood) and bark local register_tree_trunk = function(subname, description_trunk, description_bark, longdesc, tile_inner, tile_bark) @@ -18,7 +19,7 @@ local register_tree_trunk = function(subname, description_trunk, description_bar minetest.register_node("mcl_core:"..subname.."_bark", { description = description_bark, - _doc_items_longdesc = "This is a decorative block surrounded by the bark of a tree trunk.", + _doc_items_longdesc = S("This is a decorative block surrounded by the bark of a tree trunk."), tiles = {tile_bark}, paramtype2 = "facedir", on_place = mcl_util.rotate_axis, @@ -145,35 +146,35 @@ end --------------------- -register_tree_trunk("tree", "Oak Wood", "Oak Bark", "The trunk of an oak tree.", "default_tree_top.png", "default_tree.png") -register_tree_trunk("darktree", "Dark Oak Wood", "Dark Oak Bark", "The trunk of a dark oak tree.", "mcl_core_log_big_oak_top.png", "mcl_core_log_big_oak.png") -register_tree_trunk("acaciatree", "Acacia Wood", "Acacia Bark", "The trunk of an acacia.", "default_acacia_tree_top.png", "default_acacia_tree.png") -register_tree_trunk("sprucetree", "Spruce Wood", "Spruce Bark", "The trunk of a spruce tree.", "mcl_core_log_spruce_top.png", "mcl_core_log_spruce.png") -register_tree_trunk("birchtree", "Birch Wood", "Birch Bark", "The trunk of a birch tree.", "mcl_core_log_birch_top.png", "mcl_core_log_birch.png") -register_tree_trunk("jungletree", "Jungle Wood", "Jungle Bark", "The trunk of a jungle tree.", "default_jungletree_top.png", "default_jungletree.png") +register_tree_trunk("tree", S("Oak Wood"), S("Oak Bark"), S("The trunk of an oak tree."), "default_tree_top.png", "default_tree.png") +register_tree_trunk("darktree", S("Dark Oak Wood"), S("Dark Oak Bark"), S("The trunk of a dark oak tree."), "mcl_core_log_big_oak_top.png", "mcl_core_log_big_oak.png") +register_tree_trunk("acaciatree", S("Acacia Wood"), S("Acacia Bark"), S("The trunk of an acacia."), "default_acacia_tree_top.png", "default_acacia_tree.png") +register_tree_trunk("sprucetree", S("Spruce Wood"), S("Spruce Bark"), S("The trunk of a spruce tree."), "mcl_core_log_spruce_top.png", "mcl_core_log_spruce.png") +register_tree_trunk("birchtree", S("Birch Wood"), S("Birch Bark"), S("The trunk of a birch tree."), "mcl_core_log_birch_top.png", "mcl_core_log_birch.png") +register_tree_trunk("jungletree", S("Jungle Wood"), S("Jungle Bark"), S("The trunk of a jungle tree."), "default_jungletree_top.png", "default_jungletree.png") -register_wooden_planks("wood", "Oak Wood Planks", {"default_wood.png"}) -register_wooden_planks("darkwood", "Dark Oak Wood Planks", {"mcl_core_planks_big_oak.png"}) -register_wooden_planks("junglewood", "Jungle Wood Planks", {"default_junglewood.png"}) -register_wooden_planks("sprucewood", "Spruce Wood Planks", {"mcl_core_planks_spruce.png"}) -register_wooden_planks("acaciawood", "Acacia Wood Planks", {"default_acacia_wood.png"}) -register_wooden_planks("birchwood", "Birch Wood Planks", {"mcl_core_planks_birch.png"}) +register_wooden_planks("wood", S("Oak Wood Planks"), {"default_wood.png"}) +register_wooden_planks("darkwood", S("Dark Oak Wood Planks"), {"mcl_core_planks_big_oak.png"}) +register_wooden_planks("junglewood", S("Jungle Wood Planks"), {"default_junglewood.png"}) +register_wooden_planks("sprucewood", S("Spruce Wood Planks"), {"mcl_core_planks_spruce.png"}) +register_wooden_planks("acaciawood", S("Acacia Wood Planks"), {"default_acacia_wood.png"}) +register_wooden_planks("birchwood", S("Birch Wood Planks"), {"mcl_core_planks_birch.png"}) -register_sapling("sapling", "Oak Sapling", "When placed on soil (such as dirt) and exposed to light, an oak sapling will grow into an oak after some time.", "default_sapling.png", {-5/16, -0.5, -5/16, 5/16, 0.5, 5/16}) -register_sapling("darksapling", "Dark Oak Sapling", "Dark oak saplings can grow into dark oaks, but only in groups. A lonely dark oak sapling won't grow. A group of four dark oak saplings grows into a dark oak after some time when they are placed on soil (such as dirt) in a 2×2 square and exposed to light.", "mcl_core_sapling_big_oak.png", {-5/16, -0.5, -5/16, 5/16, 7/16, 5/16}) -register_sapling("junglesapling", "Jungle Sapling", "When placed on soil (such as dirt) and exposed to light, a jungle sapling will grow into a jungle tree after some time. When there are 4 jungle saplings in a 2×2 square, they will grow to a huge jungle tree.", "default_junglesapling.png", {-5/16, -0.5, -5/16, 5/16, 0.5, 5/16}) -register_sapling("acaciasapling", "Acacia Sapling", "When placed on soil (such as dirt) and exposed to light, an acacia sapling will grow into an acacia after some time.", "default_acacia_sapling.png", {-5/16, -0.5, -5/16, 5/16, 4/16, 5/16}) -register_sapling("sprucesapling", "Spruce Sapling", "When placed on soil (such as dirt) and exposed to light, a spruce sapling will grow into a spruce after some time. When there are 4 spruce saplings in a 2×2 square, they will grow to a huge spruce.", "mcl_core_sapling_spruce.png", {-4/16, -0.5, -4/16, 4/16, 0.5, 4/16}) -register_sapling("birchsapling", "Birch Sapling", "When placed on soil (such as dirt) and exposed to light, a birch sapling will grow into a birch after some time.", "mcl_core_sapling_birch.png", {-4/16, -0.5, -4/16, 4/16, 0.5, 4/16}) +register_sapling("sapling", S("Oak Sapling"), S("When placed on soil (such as dirt) and exposed to light, an oak sapling will grow into an oak after some time."), "default_sapling.png", {-5/16, -0.5, -5/16, 5/16, 0.5, 5/16}) +register_sapling("darksapling", S("Dark Oak Sapling"), S("Dark oak saplings can grow into dark oaks, but only in groups. A lonely dark oak sapling won't grow. A group of four dark oak saplings grows into a dark oak after some time when they are placed on soil (such as dirt) in a 2×2 square and exposed to light."), "mcl_core_sapling_big_oak.png", {-5/16, -0.5, -5/16, 5/16, 7/16, 5/16}) +register_sapling("junglesapling", S("Jungle Sapling"), S("When placed on soil (such as dirt) and exposed to light, a jungle sapling will grow into a jungle tree after some time. When there are 4 jungle saplings in a 2×2 square, they will grow to a huge jungle tree."), "default_junglesapling.png", {-5/16, -0.5, -5/16, 5/16, 0.5, 5/16}) +register_sapling("acaciasapling", S("Acacia Sapling"), S("When placed on soil (such as dirt) and exposed to light, an acacia sapling will grow into an acacia after some time."), "default_acacia_sapling.png", {-5/16, -0.5, -5/16, 5/16, 4/16, 5/16}) +register_sapling("sprucesapling", S("Spruce Sapling"), S("When placed on soil (such as dirt) and exposed to light, a spruce sapling will grow into a spruce after some time. When there are 4 spruce saplings in a 2×2 square, they will grow to a huge spruce."), "mcl_core_sapling_spruce.png", {-4/16, -0.5, -4/16, 4/16, 0.5, 4/16}) +register_sapling("birchsapling", S("Birch Sapling"), S("When placed on soil (such as dirt) and exposed to light, a birch sapling will grow into a birch after some time."), "mcl_core_sapling_birch.png", {-4/16, -0.5, -4/16, 4/16, 0.5, 4/16}) -register_leaves("leaves", "Oak Leaves", "Oak leaves are grown from oak trees.", {"default_leaves.png"}, "mcl_core:sapling", 20, "mcl_core:apple", 200) -register_leaves("darkleaves", "Dark Oak Leaves", "Dark oak leaves are grown from dark oak trees.", {"mcl_core_leaves_big_oak.png"}, "mcl_core:darksapling", 20, "mcl_core:apple", 200) -register_leaves("jungleleaves", "Jungle Leaves", "Jungle leaves are grown from jungle trees.", {"default_jungleleaves.png"}, "mcl_core:junglesapling", 40) -register_leaves("acacialeaves", "Acacia Leaves", "Acacia leaves are grown from acacia trees.", {"default_acacia_leaves.png"}, "mcl_core:acaciasapling", 20) -register_leaves("spruceleaves", "Spruce Leaves", "Spruce leaves are grown from spruce trees.", {"mcl_core_leaves_spruce.png"}, "mcl_core:sprucesapling", 20) -register_leaves("birchleaves", "Birch Leaves", "Birch leaves are grown from birch trees.", {"mcl_core_leaves_birch.png"}, "mcl_core:birchsapling", 20) +register_leaves("leaves", S("Oak Leaves"), S("Oak leaves are grown from oak trees."), {"default_leaves.png"}, "mcl_core:sapling", 20, "mcl_core:apple", 200) +register_leaves("darkleaves", S("Dark Oak Leaves"), S("Dark oak leaves are grown from dark oak trees."), {"mcl_core_leaves_big_oak.png"}, "mcl_core:darksapling", 20, "mcl_core:apple", 200) +register_leaves("jungleleaves", S("Jungle Leaves"), S("Jungle leaves are grown from jungle trees."), {"default_jungleleaves.png"}, "mcl_core:junglesapling", 40) +register_leaves("acacialeaves", S("Acacia Leaves"), S("Acacia leaves are grown from acacia trees."), {"default_acacia_leaves.png"}, "mcl_core:acaciasapling", 20) +register_leaves("spruceleaves", S("Spruce Leaves"), S("Spruce leaves are grown from spruce trees."), {"mcl_core_leaves_spruce.png"}, "mcl_core:sprucesapling", 20) +register_leaves("birchleaves", S("Birch Leaves"), S("Birch leaves are grown from birch trees."), {"mcl_core_leaves_birch.png"}, "mcl_core:birchsapling", 20) -- Node aliases From a29626881f985d4164f9485fdbfb9445762cf104 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Fri, 8 Mar 2019 00:00:09 +0100 Subject: [PATCH 037/737] New translation system, part 7: Items, part 3 --- mods/ITEMS/mcl_crafting_table/init.lua | 8 ++-- mods/ITEMS/mcl_doors/register.lua | 44 +++++++++++---------- mods/ITEMS/mcl_dye/init.lua | 52 ++++++++++++------------- mods/ITEMS/mcl_end/building.lua | 17 ++++---- mods/ITEMS/mcl_end/chorus_plant.lua | 21 +++++----- mods/ITEMS/mcl_end/eye_of_ender.lua | 7 ++-- mods/ITEMS/mcl_farming/beetroot.lua | 32 ++++++++------- mods/ITEMS/mcl_farming/carrots.lua | 22 ++++++----- mods/ITEMS/mcl_farming/hoes.lua | 16 ++++---- mods/ITEMS/mcl_farming/melon.lua | 26 +++++++------ mods/ITEMS/mcl_farming/potatoes.lua | 26 +++++++------ mods/ITEMS/mcl_farming/pumpkin.lua | 34 ++++++++-------- mods/ITEMS/mcl_farming/soil.lua | 10 +++-- mods/ITEMS/mcl_farming/wheat.lua | 34 ++++++++-------- mods/ITEMS/mcl_fences/init.lua | 20 +++++----- mods/ITEMS/mcl_fire/fire_charge.lua | 8 ++-- mods/ITEMS/mcl_fire/flint_and_steel.lua | 8 ++-- mods/ITEMS/mcl_fire/init.lua | 9 +++-- mods/ITEMS/mcl_fishing/init.lua | 32 ++++++++------- mods/ITEMS/mcl_flowerpots/init.lua | 47 +++++++++++----------- 20 files changed, 253 insertions(+), 220 deletions(-) diff --git a/mods/ITEMS/mcl_crafting_table/init.lua b/mods/ITEMS/mcl_crafting_table/init.lua index 37dc74a2..cfe867c2 100644 --- a/mods/ITEMS/mcl_crafting_table/init.lua +++ b/mods/ITEMS/mcl_crafting_table/init.lua @@ -1,7 +1,9 @@ +local S = minetest.get_translator("mcl_crafting_table") + minetest.register_node("mcl_crafting_table:crafting_table", { - description = "Crafting Table", - _doc_items_longdesc = "A crafting table is a block which grants you access to a 3×3 crafting grid which allows you to perform advanced crafts.", - _doc_items_usagehelp = "Rightclick the crafting table to access the 3×3 crafting grid.", + description = S("Crafting Table"), + _doc_items_longdesc = S("A crafting table is a block which grants you access to a 3×3 crafting grid which allows you to perform advanced crafts."), + _doc_items_usagehelp = S("Rightclick the crafting table to access the 3×3 crafting grid."), _doc_items_hidden = false, is_ground_content = false, tiles = {"crafting_workbench_top.png", "default_wood.png", "crafting_workbench_side.png", diff --git a/mods/ITEMS/mcl_doors/register.lua b/mods/ITEMS/mcl_doors/register.lua index 919de743..e8f990f9 100644 --- a/mods/ITEMS/mcl_doors/register.lua +++ b/mods/ITEMS/mcl_doors/register.lua @@ -1,11 +1,13 @@ +local S = minetest.get_translator("mcl_doors") + --[[ Doors ]] -local wood_longdesc = "Wooden doors are 2-block high barriers which can be opened or closed by hand and by a redstone signal." -local wood_usagehelp = "To open or close a wooden door, rightclick it or supply its lower half with a redstone signal." +local wood_longdesc = S("Wooden doors are 2-block high barriers which can be opened or closed by hand and by a redstone signal.") +local wood_usagehelp = S("To open or close a wooden door, rightclick it or supply its lower half with a redstone signal.") --- Oak Door --- mcl_doors:register_door("mcl_doors:wooden_door", { - description = "Oak Door", + description = S("Oak Door"), _doc_items_longdesc = wood_longdesc, _doc_items_usagehelp = wood_usagehelp, inventory_image = "doors_item_wood.png", @@ -28,7 +30,7 @@ minetest.register_craft({ --- Acacia Door -- mcl_doors:register_door("mcl_doors:acacia_door", { - description = "Acacia Door", + description = S("Acacia Door"), _doc_items_longdesc = wood_longdesc, _doc_items_usagehelp = wood_usagehelp, inventory_image = "mcl_doors_door_acacia.png", @@ -51,7 +53,7 @@ minetest.register_craft({ --- Birch Door -- mcl_doors:register_door("mcl_doors:birch_door", { - description = "Birch Door", + description = S("Birch Door"), _doc_items_longdesc = wood_longdesc, _doc_items_usagehelp = wood_usagehelp, inventory_image = "mcl_doors_door_birch.png", @@ -74,7 +76,7 @@ minetest.register_craft({ --- Dark Oak Door -- mcl_doors:register_door("mcl_doors:dark_oak_door", { - description = "Dark Oak Door", + description = S("Dark Oak Door"), _doc_items_longdesc = wood_longdesc, _doc_items_usagehelp = wood_usagehelp, inventory_image = "mcl_doors_door_dark_oak.png", @@ -97,7 +99,7 @@ minetest.register_craft({ --- Jungle Door -- mcl_doors:register_door("mcl_doors:jungle_door", { - description = "Jungle Door", + description = S("Jungle Door"), _doc_items_longdesc = wood_longdesc, _doc_items_usagehelp = wood_usagehelp, inventory_image = "mcl_doors_door_jungle.png", @@ -120,7 +122,7 @@ minetest.register_craft({ --- Spruce Door -- mcl_doors:register_door("mcl_doors:spruce_door", { - description = "Spruce Door", + description = S("Spruce Door"), _doc_items_longdesc = wood_longdesc, _doc_items_usagehelp = wood_usagehelp, inventory_image = "mcl_doors_door_spruce.png", @@ -174,9 +176,9 @@ minetest.register_craft({ --- Iron Door --- mcl_doors:register_door("mcl_doors:iron_door", { - description = "Iron Door", - _doc_items_longdesc = "Iron doors are 2-block high barriers which can only be opened or closed by a redstone signal, but not by hand.", - _doc_items_usagehelp = "To open or close an iron door, supply its lower half with a redstone signal.", + description = S("Iron Door"), + _doc_items_longdesc = S("Iron doors are 2-block high barriers which can only be opened or closed by a redstone signal, but not by hand."), + _doc_items_usagehelp = S("To open or close an iron door, supply its lower half with a redstone signal."), inventory_image = "doors_item_steel.png", groups = {pickaxey=1, mesecon_effector_on=1}, _mcl_hardness = 5, @@ -204,19 +206,19 @@ minetest.register_craft({ --[[ Trapdoors ]] local woods = { -- id, desc, texture, craftitem - { "trapdoor", "Oak Trapdoor", "doors_trapdoor.png", "doors_trapdoor_side.png", "mcl_core:wood" }, - { "acacia_trapdoor", "Acacia Trapdoor", "mcl_doors_trapdoor_acacia.png", "mcl_doors_trapdoor_acacia_side.png", "mcl_core:acaciawood" }, - { "birch_trapdoor", "Birch Trapdoor", "mcl_doors_trapdoor_birch.png", "mcl_doors_trapdoor_birch_side.png", "mcl_core:birchwood" }, - { "spruce_trapdoor", "Spruce Trapdoor", "mcl_doors_trapdoor_spruce.png", "mcl_doors_trapdoor_spruce_side.png", "mcl_core:sprucewood" }, - { "dark_oak_trapdoor", "Dark Oak Trapdoor", "mcl_doors_trapdoor_dark_oak.png", "mcl_doors_trapdoor_dark_oak_side.png", "mcl_core:darkwood" }, - { "jungle_trapdoor", "Jungle Trapdoor", "mcl_doors_trapdoor_jungle.png", "mcl_doors_trapdoor_jungle_side.png", "mcl_core:junglewood" }, + { "trapdoor", S("Oak Trapdoor"), "doors_trapdoor.png", "doors_trapdoor_side.png", "mcl_core:wood" }, + { "acacia_trapdoor", S("Acacia Trapdoor"), "mcl_doors_trapdoor_acacia.png", "mcl_doors_trapdoor_acacia_side.png", "mcl_core:acaciawood" }, + { "birch_trapdoor", S("Birch Trapdoor"), "mcl_doors_trapdoor_birch.png", "mcl_doors_trapdoor_birch_side.png", "mcl_core:birchwood" }, + { "spruce_trapdoor", S("Spruce Trapdoor"), "mcl_doors_trapdoor_spruce.png", "mcl_doors_trapdoor_spruce_side.png", "mcl_core:sprucewood" }, + { "dark_oak_trapdoor", S("Dark Oak Trapdoor"), "mcl_doors_trapdoor_dark_oak.png", "mcl_doors_trapdoor_dark_oak_side.png", "mcl_core:darkwood" }, + { "jungle_trapdoor", S("Jungle Trapdoor"), "mcl_doors_trapdoor_jungle.png", "mcl_doors_trapdoor_jungle_side.png", "mcl_core:junglewood" }, } for w=1, #woods do mcl_doors:register_trapdoor("mcl_doors:"..woods[w][1], { description = woods[w][2], - _doc_items_longdesc = "Wooden trapdoors are horizontal barriers which can be opened and closed by hand or a redstone signal. They occupy the upper or lower part of a block, depending on how they have been placed. When open, they can be climbed like a ladder.", - _doc_items_usagehelp = "To open or close the trapdoor, rightclick it or send a redstone signal to it.", + _doc_items_longdesc = S("Wooden trapdoors are horizontal barriers which can be opened and closed by hand or a redstone signal. They occupy the upper or lower part of a block, depending on how they have been placed. When open, they can be climbed like a ladder."), + _doc_items_usagehelp = S("To open or close the trapdoor, rightclick it or send a redstone signal to it."), tile_front = woods[w][3], tile_side = woods[w][4], wield_image = woods[w][3], @@ -242,8 +244,8 @@ for w=1, #woods do end mcl_doors:register_trapdoor("mcl_doors:iron_trapdoor", { - description = "Iron Trapdoor", - _doc_items_longdesc = "Iron trapdoors are horizontal barriers which can only be opened and closed by redstone signals, but not by hand. They occupy the upper or lower part of a block, depending on how they have been placed. When open, they can be climbed like a ladder.", + description = S("Iron Trapdoor"), + _doc_items_longdesc = S("Iron trapdoors are horizontal barriers which can only be opened and closed by redstone signals, but not by hand. They occupy the upper or lower part of a block, depending on how they have been placed. When open, they can be climbed like a ladder."), tile_front = "doors_trapdoor_steel.png", tile_side = "doors_trapdoor_steel_side.png", wield_image = "doors_trapdoor_steel.png", diff --git a/mods/ITEMS/mcl_dye/init.lua b/mods/ITEMS/mcl_dye/init.lua index c347a900..90e98ac4 100644 --- a/mods/ITEMS/mcl_dye/init.lua +++ b/mods/ITEMS/mcl_dye/init.lua @@ -1,5 +1,3 @@ --- minetest/dye/init.lua - -- To make recipes that will work with any dye ever made by anybody, define -- them based on groups. -- You can select any group of groups, based on your need for amount of colors. @@ -15,6 +13,8 @@ mcl_dye = {} +local S = minetest.get_translator("mcl_dye") + -- Other mods can use these for looping through available colors mcl_dye.basecolors = {"white", "grey", "black", "red", "yellow", "green", "cyan", "blue", "magenta"} mcl_dye.excolors = {"white", "lightgrey", "grey", "darkgrey", "black", "red", "orange", "yellow", "lime", "green", "aqua", "cyan", "sky_blue", "blue", "violet", "magenta", "red_violet"} @@ -64,22 +64,22 @@ local dyelocal = {} -- This collection of colors is partly a historic thing, partly something else. dyelocal.dyes = { - {"white", "mcl_dye_white", "Bone Meal", {dye=1, craftitem=1, basecolor_white=1, excolor_white=1, unicolor_white=1}}, - {"grey", "dye_grey", "Light Grey Dye", {dye=1, craftitem=1, basecolor_grey=1, excolor_grey=1, unicolor_grey=1}}, - {"dark_grey", "dye_dark_grey", "Grey Dye", {dye=1, craftitem=1, basecolor_grey=1, excolor_darkgrey=1, unicolor_darkgrey=1}}, - {"black", "mcl_dye_black", "Ink Sac", {dye=1, craftitem=1, basecolor_black=1, excolor_black=1, unicolor_black=1}}, - {"violet", "dye_violet", "Purple Dye", {dye=1, craftitem=1, basecolor_magenta=1, excolor_violet=1, unicolor_violet=1}}, - {"blue", "mcl_dye_blue", "Lapis Lazuli", {dye=1, craftitem=1, basecolor_blue=1, excolor_blue=1, unicolor_blue=1}}, - {"lightblue", "mcl_dye_light_blue", "Light Blue Dye", {dye=1, craftitem=1, basecolor_blue=1, excolor_blue=1, unicolor_light_blue=1}}, - {"cyan", "dye_cyan", "Cyan Dye", {dye=1, craftitem=1, basecolor_cyan=1, excolor_cyan=1, unicolor_cyan=1}}, - {"dark_green", "dye_dark_green", "Cactus Green",{dye=1, craftitem=1, basecolor_green=1, excolor_green=1, unicolor_dark_green=1}}, - {"green", "mcl_dye_lime", "Lime Dye", {dye=1, craftitem=1, basecolor_green=1, excolor_green=1, unicolor_green=1}}, - {"yellow", "dye_yellow", "Dandelion Yellow", {dye=1, craftitem=1, basecolor_yellow=1, excolor_yellow=1, unicolor_yellow=1}}, - {"brown", "mcl_dye_brown", "Cocoa Beans", {dye=1, craftitem=1, basecolor_brown=1, excolor_orange=1, unicolor_dark_orange=1}}, - {"orange", "dye_orange", "Orange Dye", {dye=1, craftitem=1, basecolor_orange=1, excolor_orange=1, unicolor_orange=1}}, - {"red", "dye_red", "Rose Red", {dye=1, craftitem=1, basecolor_red=1, excolor_red=1, unicolor_red=1}}, - {"magenta", "dye_magenta", "Magenta Dye", {dye=1, craftitem=1, basecolor_magenta=1, excolor_red_violet=1,unicolor_red_violet=1}}, - {"pink", "dye_pink", "Pink Dye", {dye=1, craftitem=1, basecolor_red=1, excolor_red=1, unicolor_light_red=1}}, + {"white", "mcl_dye_white", S("Bone Meal"), {dye=1, craftitem=1, basecolor_white=1, excolor_white=1, unicolor_white=1}}, + {"grey", "dye_grey", S("Light Grey Dye"), {dye=1, craftitem=1, basecolor_grey=1, excolor_grey=1, unicolor_grey=1}}, + {"dark_grey", "dye_dark_grey", S("Grey Dye"), {dye=1, craftitem=1, basecolor_grey=1, excolor_darkgrey=1, unicolor_darkgrey=1}}, + {"black", "mcl_dye_black", S("Ink Sac"), {dye=1, craftitem=1, basecolor_black=1, excolor_black=1, unicolor_black=1}}, + {"violet", "dye_violet", S("Purple Dye"), {dye=1, craftitem=1, basecolor_magenta=1, excolor_violet=1, unicolor_violet=1}}, + {"blue", "mcl_dye_blue", S("Lapis Lazuli"), {dye=1, craftitem=1, basecolor_blue=1, excolor_blue=1, unicolor_blue=1}}, + {"lightblue", "mcl_dye_light_blue", S("Light Blue Dye"), {dye=1, craftitem=1, basecolor_blue=1, excolor_blue=1, unicolor_light_blue=1}}, + {"cyan", "dye_cyan", S("Cyan Dye"), {dye=1, craftitem=1, basecolor_cyan=1, excolor_cyan=1, unicolor_cyan=1}}, + {"dark_green", "dye_dark_green", S("Cactus Green"),{dye=1, craftitem=1, basecolor_green=1, excolor_green=1, unicolor_dark_green=1}}, + {"green", "mcl_dye_lime", S("Lime Dye"), {dye=1, craftitem=1, basecolor_green=1, excolor_green=1, unicolor_green=1}}, + {"yellow", "dye_yellow", S("Dandelion Yellow"), {dye=1, craftitem=1, basecolor_yellow=1, excolor_yellow=1, unicolor_yellow=1}}, + {"brown", "mcl_dye_brown", S("Cocoa Beans"), {dye=1, craftitem=1, basecolor_brown=1, excolor_orange=1, unicolor_dark_orange=1}}, + {"orange", "dye_orange", S("Orange Dye"), {dye=1, craftitem=1, basecolor_orange=1, excolor_orange=1, unicolor_orange=1}}, + {"red", "dye_red", S("Rose Red"), {dye=1, craftitem=1, basecolor_red=1, excolor_red=1, unicolor_red=1}}, + {"magenta", "dye_magenta", S("Magenta Dye"), {dye=1, craftitem=1, basecolor_magenta=1, excolor_red_violet=1,unicolor_red_violet=1}}, + {"pink", "dye_pink", S("Pink Dye"), {dye=1, craftitem=1, basecolor_red=1, excolor_red=1, unicolor_light_red=1}}, } dyelocal.unicolor_to_dye_id = {} @@ -109,8 +109,8 @@ for _, row in ipairs(dyelocal.dyes) do minetest.register_craftitem(item_name, { inventory_image = item_image, description = description, - _doc_items_longdesc = "This item is a dye which is used for dyeing and crafting.", - _doc_items_usagehelp = "Rightclick on a sheep to dye its wool. Other things are dyed by crafting.", + _doc_items_longdesc = S("This item is a dye which is used for dyeing and crafting."), + _doc_items_usagehelp = S("Rightclick on a sheep to dye its wool. Other things are dyed by crafting."), groups = groups, stack_max = 64, }) @@ -295,9 +295,9 @@ end minetest.register_craftitem("mcl_dye:white", { inventory_image = "mcl_dye_white.png", - description = "Bone Meal", - _doc_items_longdesc = "Bone meal is a white dye and also useful as a fertilizer to speed up the growth of many plants.", - _doc_items_usagehelp = "Rightclick a sheep to turn its wool white. Rightclick a plant to speed up its growth. Note that not all plants can be fertilized like this. When you rightclick a grass block, tall grass and flowers will grow all over the place.", + description = S("Bone Meal"), + _doc_items_longdesc = S("Bone meal is a white dye and also useful as a fertilizer to speed up the growth of many plants."), + _doc_items_usagehelp = S("Rightclick a sheep to turn its wool white. Rightclick a plant to speed up its growth. Note that not all plants can be fertilized like this. When you rightclick a grass block, tall grass and flowers will grow all over the place."), stack_max = 64, groups = dyelocal.dyes[1][4], on_place = function(itemstack, user, pointed_thing) @@ -333,9 +333,9 @@ minetest.register_craftitem("mcl_dye:white", { minetest.register_craftitem("mcl_dye:brown", { inventory_image = "mcl_dye_brown.png", - _doc_items_longdesc = "Cocoa beans are a brown dye and can be used to plant cocoas.", - _doc_items_usagehelp = "Rightclick a sheep to turn its wool brown. Rightclick on the side of a jungle tree trunk (Jungle Wood) to plant a young cocoa.", - description = "Cocoa Beans", + _doc_items_longdesc = S("Cocoa beans are a brown dye and can be used to plant cocoas."), + _doc_items_usagehelp = S("Rightclick a sheep to turn its wool brown. Rightclick on the side of a jungle tree trunk (Jungle Wood) to plant a young cocoa."), + description = S("Cocoa Beans"), stack_max = 64, groups = dyelocal.dyes[12][4], on_place = function(itemstack, placer, pointed_thing) diff --git a/mods/ITEMS/mcl_end/building.lua b/mods/ITEMS/mcl_end/building.lua index f4eff3e1..aeee897f 100644 --- a/mods/ITEMS/mcl_end/building.lua +++ b/mods/ITEMS/mcl_end/building.lua @@ -1,7 +1,8 @@ -- Building blocks and decorative nodes +local S = minetest.get_translator("mcl_end") minetest.register_node("mcl_end:end_stone", { - description = "End Stone", + description = S("End Stone"), _doc_items_longdesc = doc.sub.items.temp.build, tiles = {"mcl_end_end_stone.png"}, stack_max = 64, @@ -12,7 +13,7 @@ minetest.register_node("mcl_end:end_stone", { }) minetest.register_node("mcl_end:end_bricks", { - description = "End Stone Bricks", + description = S("End Stone Bricks"), _doc_items_longdesc = doc.sub.items.temp.build, tiles = {"mcl_end_end_bricks.png"}, is_ground_content = false, @@ -24,7 +25,7 @@ minetest.register_node("mcl_end:end_bricks", { }) minetest.register_node("mcl_end:purpur_block", { - description = "Purpur Block", + description = S("Purpur Block"), _doc_items_longdesc = doc.sub.items.temp.build, tiles = {"mcl_end_purpur_block.png"}, is_ground_content = false, @@ -36,7 +37,7 @@ minetest.register_node("mcl_end:purpur_block", { }) minetest.register_node("mcl_end:purpur_pillar", { - description = "Purpur Pillar", + description = S("Purpur Pillar"), _doc_items_longdesc = doc.sub.items.temp.build, stack_max = 64, paramtype2 = "facedir", @@ -50,8 +51,8 @@ minetest.register_node("mcl_end:purpur_pillar", { }) minetest.register_node("mcl_end:end_rod", { - description = "End Rod", - _doc_items_longdesc = "End rods are decorational light sources.", + description = S("End Rod"), + _doc_items_longdesc = S("End rods are decorational light sources."), tiles = { "mcl_end_end_rod_top.png", "mcl_end_end_rod_bottom.png", @@ -125,8 +126,8 @@ minetest.register_node("mcl_end:end_rod", { }) minetest.register_node("mcl_end:dragon_egg", { - description = "Dragon Egg", - _doc_items_longdesc = "A dragon egg is a decorational item which can be placed.", + description = S("Dragon Egg"), + _doc_items_longdesc = S("A dragon egg is a decorational item which can be placed."), tiles = { "mcl_end_dragon_egg.png", "mcl_end_dragon_egg.png", diff --git a/mods/ITEMS/mcl_end/chorus_plant.lua b/mods/ITEMS/mcl_end/chorus_plant.lua index 5c48654d..1374e774 100644 --- a/mods/ITEMS/mcl_end/chorus_plant.lua +++ b/mods/ITEMS/mcl_end/chorus_plant.lua @@ -1,6 +1,7 @@ -- Chorus plants -- This includes chorus flowers, chorus plant stem nodes and chorus fruit +local S = minetest.get_translator("mcl_end") --- Plant parts --- @@ -24,9 +25,9 @@ local function round(num, idp) end minetest.register_node("mcl_end:chorus_flower", { - description = "Chorus Flower", - _doc_items_longdesc = "A chorus flower is the living part of a chorus plant. It can grow into a tall chorus plant, step by step. When it grows, it may die on old age eventually. It also dies when it is unable to grow.", - _doc_items_usagehelp = "Place it and wait for it to grow. It can only be placed on top of end stone, on top of a chorus plant stem, or at the side of exactly a chorus plant stem.", + description = S("Chorus Flower"), + _doc_items_longdesc = S("A chorus flower is the living part of a chorus plant. It can grow into a tall chorus plant, step by step. When it grows, it may die on old age eventually. It also dies when it is unable to grow."), + _doc_items_usagehelp = S("Place it and wait for it to grow. It can only be placed on top of end stone, on top of a chorus plant stem, or at the side of exactly a chorus plant stem."), tiles = { "mcl_end_chorus_flower.png", "mcl_end_chorus_flower.png", @@ -108,8 +109,8 @@ minetest.register_node("mcl_end:chorus_flower", { }) minetest.register_node("mcl_end:chorus_flower_dead", { - description = "Dead Chorus Flower", - _doc_items_longdesc = "This is a part of a chorus plant. It doesn't grow. Chorus flowers die of old age or when they are unable to grow. A dead chorus flower can be harvested to obtain a fresh chorus flower which is able to grow again.", + description = S("Dead Chorus Flower"), + _doc_items_longdesc = S("This is a part of a chorus plant. It doesn't grow. Chorus flowers die of old age or when they are unable to grow. A dead chorus flower can be harvested to obtain a fresh chorus flower which is able to grow again."), tiles = { "mcl_end_chorus_flower_dead.png", "mcl_end_chorus_flower_dead.png", @@ -131,8 +132,8 @@ minetest.register_node("mcl_end:chorus_flower_dead", { }) minetest.register_node("mcl_end:chorus_plant", { - description = "Chorus Plant Stem", - _doc_items_longdesc = "A chorus plant stem is the part of a chorus plant which holds the whole plant together. It needs end stone as its soil. Stems are grown from chorus flowers.", + description = S("Chorus Plant Stem"), + _doc_items_longdesc = S("A chorus plant stem is the part of a chorus plant which holds the whole plant together. It needs end stone as its soil. Stems are grown from chorus flowers."), tiles = { "mcl_end_chorus_plant.png", "mcl_end_chorus_plant.png", @@ -356,8 +357,8 @@ local eat_chorus_fruit = function(itemstack, player, pointed_thing) end minetest.register_craftitem("mcl_end:chorus_fruit", { - description = "Chorus Fruit", - _doc_items_longdesc = "A chorus fruit is an edible fruit from the chorus plant which is home to the End. Eating it teleports you to the top of a random solid block nearby, provided you won't end up inside a liquid, solid or harmful blocks. Teleportation might fail if there are very few or no places to teleport to.", + description = S("Chorus Fruit"), + _doc_items_longdesc = S("A chorus fruit is an edible fruit from the chorus plant which is home to the End. Eating it teleports you to the top of a random solid block nearby, provided you won't end up inside a liquid, solid or harmful blocks. Teleportation might fail if there are very few or no places to teleport to."), wield_image = "mcl_end_chorus_fruit.png", inventory_image = "mcl_end_chorus_fruit.png", on_place = eat_chorus_fruit, @@ -368,7 +369,7 @@ minetest.register_craftitem("mcl_end:chorus_fruit", { }) minetest.register_craftitem("mcl_end:chorus_fruit_popped", { - description = "Popped Chorus Fruit", + description = S("Popped Chorus Fruit"), _doc_items_longdesc = doc.sub.items.temp.craftitem, wield_image = "mcl_end_chorus_fruit_popped.png", inventory_image = "mcl_end_chorus_fruit_popped.png", diff --git a/mods/ITEMS/mcl_end/eye_of_ender.lua b/mods/ITEMS/mcl_end/eye_of_ender.lua index 69edbde3..a76eee0d 100644 --- a/mods/ITEMS/mcl_end/eye_of_ender.lua +++ b/mods/ITEMS/mcl_end/eye_of_ender.lua @@ -1,4 +1,5 @@ -- Eye of Ender +local S = minetest.get_translator("mcl_end") minetest.register_entity("mcl_end:ender_eye", { physical = false, @@ -72,9 +73,9 @@ minetest.register_entity("mcl_end:ender_eye", { }) minetest.register_craftitem("mcl_end:ender_eye", { - description = "Eye of Ender", - _doc_items_longdesc = "This item is used to locate End portal shrines in the Overworld and to activate End portals." .. "\n" .. "NOTE: The End dimension is currently incomplete and boring.", - _doc_items_usagehelp = "Use the attack key to release the eye of ender. It will rise and fly in the horizontal direction of the closest end portal shrine. If you're very close, the eye of ender will take the direct path to the End portal shrine instead. After a few seconds, it stops. It may drop as an item, but there's a 20% chance it shatters." .. "\n" .. "To activate an End portal, eyes of ender need to be placed into each block of an intact End portal frame.", + description = S("Eye of Ender"), + _doc_items_longdesc = S("This item is used to locate End portal shrines in the Overworld and to activate End portals." .. "\n" .. "NOTE: The End dimension is currently incomplete and boring."), + _doc_items_usagehelp = S("Use the attack key to release the eye of ender. It will rise and fly in the horizontal direction of the closest end portal shrine. If you're very close, the eye of ender will take the direct path to the End portal shrine instead. After a few seconds, it stops. It may drop as an item, but there's a 20% chance it shatters.") .. "\n" .. S("To activate an End portal, eyes of ender need to be placed into each block of an intact End portal frame."), wield_image = "mcl_end_ender_eye.png", inventory_image = "mcl_end_ender_eye.png", stack_max = 64, diff --git a/mods/ITEMS/mcl_farming/beetroot.lua b/mods/ITEMS/mcl_farming/beetroot.lua index 8fe69358..a6f8fc9a 100644 --- a/mods/ITEMS/mcl_farming/beetroot.lua +++ b/mods/ITEMS/mcl_farming/beetroot.lua @@ -1,7 +1,9 @@ +local S = minetest.get_translator("mcl_farming") + minetest.register_craftitem("mcl_farming:beetroot_seeds", { - description = "Beetroot Seeds", - _doc_items_longdesc = "Grows into a beetroot plant. Chickens like beetroot seeds.", - _doc_items_usagehelp = "Place the beetroot seeds on farmland (which can be created with a hoe) to plant a beetroot plant. They grow in sunlight and grow faster on hydrated farmland. Rightclick an animal to feed it beetroot seeds.", + description = S("Beetroot Seeds"), + _doc_items_longdesc = S("Grows into a beetroot plant. Chickens like beetroot seeds."), + _doc_items_usagehelp = S("Place the beetroot seeds on farmland (which can be created with a hoe) to plant a beetroot plant. They grow in sunlight and grow faster on hydrated farmland. Rightclick an animal to feed it beetroot seeds."), groups = { craftitem=1 }, inventory_image = "mcl_farming_beetroot_seeds.png", wield_image = "mcl_farming_beetroot_seeds.png", @@ -11,9 +13,9 @@ minetest.register_craftitem("mcl_farming:beetroot_seeds", { }) minetest.register_node("mcl_farming:beetroot_0", { - description = "Premature Beetroot Plant (Stage 1)", - _doc_items_longdesc = "Beetroot plants are plants which grow on farmland under sunlight in 4 stages. On hydrated farmland, they grow a bit faster. They can be harvested at any time but will only yield a profit when mature.", - _doc_items_entry_name = "Premature Beetroot Plant", + description = S("Premature Beetroot Plant (Stage 1)"), + _doc_items_longdesc = S("Beetroot plants are plants which grow on farmland under sunlight in 4 stages. On hydrated farmland, they grow a bit faster. They can be harvested at any time but will only yield a profit when mature."), + _doc_items_entry_name = S("Premature Beetroot Plant"), paramtype = "light", paramtype2 = "meshoptions", sunlight_propagates = true, @@ -36,7 +38,7 @@ minetest.register_node("mcl_farming:beetroot_0", { }) minetest.register_node("mcl_farming:beetroot_1", { - description = "Premature Beetroot Plant (Stage 2)", + description = S("Premature Beetroot Plant (Stage 2)"), _doc_items_create_entry = false, paramtype = "light", paramtype2 = "meshoptions", @@ -60,7 +62,7 @@ minetest.register_node("mcl_farming:beetroot_1", { }) minetest.register_node("mcl_farming:beetroot_2", { - description = "Premature Beetroot Plant (Stage 3)", + description = S("Premature Beetroot Plant (Stage 3)"), _doc_items_create_entry = false, paramtype = "light", paramtype2 = "meshoptions", @@ -84,8 +86,8 @@ minetest.register_node("mcl_farming:beetroot_2", { }) minetest.register_node("mcl_farming:beetroot", { - description = "Mature Beetroot Plant", - _doc_items_longdesc = "A mature beetroot plant is a farming plant which is ready to be harvested for a beetroot and some beetroot seeds. It won't grow any further.", + description = S("Mature Beetroot Plant"), + _doc_items_longdesc = S("A mature beetroot plant is a farming plant which is ready to be harvested for a beetroot and some beetroot seeds. It won't grow any further."), _doc_items_create_entry = true, paramtype = "light", paramtype2 = "meshoptions", @@ -123,9 +125,9 @@ minetest.register_node("mcl_farming:beetroot", { }) minetest.register_craftitem("mcl_farming:beetroot_item", { - description = "Beetroot", - _doc_items_longdesc = "Beetroots are both used as food item and a dye ingredient. Pigs like beetroots, too.", - _doc_items_usagehelp = "Hold it in your hand and right-click to eat it. Rightclick an animal to feed it.", + description = S("Beetroot"), + _doc_items_longdesc = S("Beetroots are both used as food item and a dye ingredient. Pigs like beetroots, too."), + _doc_items_usagehelp = S("Hold it in your hand and right-click to eat it. Rightclick an animal to feed it."), inventory_image = "mcl_farming_beetroot.png", wield_image = "mcl_farming_beetroot.png", on_place = minetest.item_eat(1), @@ -135,8 +137,8 @@ minetest.register_craftitem("mcl_farming:beetroot_item", { }) minetest.register_craftitem("mcl_farming:beetroot_soup", { - description = "Beetroot Soup", - _doc_items_longdesc = "Beetroot soup is a food item.", + description = S("Beetroot Soup"), + _doc_items_longdesc = S("Beetroot soup is a food item."), stack_max = 1, inventory_image = "mcl_farming_beetroot_soup.png", wield_image = "mcl_farming_beetroot_soup.png", diff --git a/mods/ITEMS/mcl_farming/carrots.lua b/mods/ITEMS/mcl_farming/carrots.lua index 29490677..d8c759ff 100644 --- a/mods/ITEMS/mcl_farming/carrots.lua +++ b/mods/ITEMS/mcl_farming/carrots.lua @@ -1,3 +1,5 @@ +local S = minetest.get_translator("mcl_farming") + for i=1, 7 do local texture, sel_height if i < 3 then @@ -14,13 +16,13 @@ for i=1, 7 do local create, name, longdesc if i == 1 then create = true - name = "Premature Carrot Plant" - longdesc = "Carrot plants are plants which grow on farmland under sunlight in 8 stages, of which only 4 are actually visible. On hydrated farmland, they grow a bit faster. They can be harvested at any time but will only yield a profit when mature." + name = S("Premature Carrot Plant") + longdesc = S("Carrot plants are plants which grow on farmland under sunlight in 8 stages, of which only 4 are actually visible. On hydrated farmland, they grow a bit faster. They can be harvested at any time but will only yield a profit when mature.") else create = false end minetest.register_node("mcl_farming:carrot_"..i, { - description = string.format("Premature Carrot Plant (Stage %d)", i), + description = S("Premature Carrot Plant (Stage @1)", i), _doc_items_create_entry = create, _doc_items_entry_name = name, _doc_items_longdesc = longdesc, @@ -47,8 +49,8 @@ for i=1, 7 do end minetest.register_node("mcl_farming:carrot", { - description = "Mature Carrot Plant", - _doc_items_longdesc = "Mature carrot plants are ready to be harvested for carrots. They won't grow any further.", + description = S("Mature Carrot Plant"), + _doc_items_longdesc = S("Mature carrot plants are ready to be harvested for carrots. They won't grow any further."), paramtype = "light", sunlight_propagates = true, paramtype2 = "meshoptions", @@ -79,9 +81,9 @@ minetest.register_node("mcl_farming:carrot", { }) minetest.register_craftitem("mcl_farming:carrot_item", { - description = "Carrot", - _doc_items_longdesc = "Carrots can be eaten and planted. Pigs and rabbits like carrots.", - _doc_items_usagehelp = "Hold it in your hand and rightclick to eat it. Place it on top of farmland to plant the carrot. It grows in sunlight and grows faster on hydrated farmland. Rightclick an animal to feed it.", + description = S("Carrot"), + _doc_items_longdesc = S("Carrots can be eaten and planted. Pigs and rabbits like carrots."), + _doc_items_usagehelp = S("Hold it in your hand and rightclick to eat it. Place it on top of farmland to plant the carrot. It grows in sunlight and grows faster on hydrated farmland. Rightclick an animal to feed it."), inventory_image = "farming_carrot.png", groups = { food = 2, eatable = 3 }, _mcl_saturation = 3.6, @@ -97,8 +99,8 @@ minetest.register_craftitem("mcl_farming:carrot_item", { }) minetest.register_craftitem("mcl_farming:carrot_item_gold", { - description = "Golden Carrot", - _doc_items_longdesc = "A golden carrot is a precious food item which can be eaten. It is really, really filling!", + description = S("Golden Carrot"), + _doc_items_longdesc = S("A golden carrot is a precious food item which can be eaten. It is really, really filling!"), inventory_image = "farming_carrot_gold.png", on_place = minetest.item_eat(6), on_secondary_use = minetest.item_eat(6), diff --git a/mods/ITEMS/mcl_farming/hoes.lua b/mods/ITEMS/mcl_farming/hoes.lua index 1d8e9411..453ede39 100644 --- a/mods/ITEMS/mcl_farming/hoes.lua +++ b/mods/ITEMS/mcl_farming/hoes.lua @@ -1,3 +1,5 @@ +local S = minetest.get_translator("mcl_farming") + local function create_soil(pos, inv) if pos == nil then return false @@ -23,11 +25,11 @@ local function create_soil(pos, inv) return false end -local hoe_longdesc = "Hoes are essential tools for growing crops. They are used to create farmland in order to plant seeds on it. Hoes can also be used as very weak weapons in a pinch." -local hoe_usagehelp = "Use the hoe on a cultivatable block (by rightclicking it) to turn it into farmland. Dirt, grass blocks and grass paths are cultivatable blocks. Using a hoe on coarse dirt turns it into dirt." +local hoe_longdesc = S("Hoes are essential tools for growing crops. They are used to create farmland in order to plant seeds on it. Hoes can also be used as very weak weapons in a pinch.") +local hoe_usagehelp = S("Use the hoe on a cultivatable block (by rightclicking it) to turn it into farmland. Dirt, grass blocks and grass paths are cultivatable blocks. Using a hoe on coarse dirt turns it into dirt.") minetest.register_tool("mcl_farming:hoe_wood", { - description = "Wood Hoe", + description = S("Wood Hoe"), _doc_items_longdesc = hoe_longdesc, _doc_items_usagehelp = hoe_usagehelp, _doc_items_hidden = false, @@ -79,7 +81,7 @@ minetest.register_craft({ }) minetest.register_tool("mcl_farming:hoe_stone", { - description = "Stone Hoe", + description = S("Stone Hoe"), _doc_items_longdesc = hoe_longdesc, _doc_items_usagehelp = hoe_usagehelp, inventory_image = "farming_tool_stonehoe.png", @@ -125,7 +127,7 @@ minetest.register_craft({ }) minetest.register_tool("mcl_farming:hoe_iron", { - description = "Iron Hoe", + description = S("Iron Hoe"), _doc_items_longdesc = hoe_longdesc, _doc_items_usagehelp = hoe_usagehelp, inventory_image = "farming_tool_steelhoe.png", @@ -179,7 +181,7 @@ minetest.register_craft({ }) minetest.register_tool("mcl_farming:hoe_gold", { - description = "Golden Hoe", + description = S("Golden Hoe"), _doc_items_longdesc = hoe_longdesc, _doc_items_usagehelp = hoe_usagehelp, inventory_image = "farming_tool_goldhoe.png", @@ -234,7 +236,7 @@ minetest.register_craft({ }) minetest.register_tool("mcl_farming:hoe_diamond", { - description = "Diamond Hoe", + description = S("Diamond Hoe"), _doc_items_longdesc = hoe_longdesc, _doc_items_usagehelp = hoe_usagehelp, inventory_image = "farming_tool_diamondhoe.png", diff --git a/mods/ITEMS/mcl_farming/melon.lua b/mods/ITEMS/mcl_farming/melon.lua index 7e3cfa1d..fab74474 100644 --- a/mods/ITEMS/mcl_farming/melon.lua +++ b/mods/ITEMS/mcl_farming/melon.lua @@ -1,8 +1,10 @@ +local S = minetest.get_translator("mcl_farming") + -- Seeds minetest.register_craftitem("mcl_farming:melon_seeds", { - description = "Melon Seeds", - _doc_items_longdesc = "Grows into a melon. Chickens like melon seeds.", - _doc_items_usagehelp = "Place the melon seeds on farmland (which can be created with a hoe) to plant a melon stem. Melons grow in sunlight and grow faster on hydrated farmland. Rightclick an animal to feed it melon seeds.", + description = S("Melon Seeds"), + _doc_items_longdesc = S("Grows into a melon. Chickens like melon seeds."), + _doc_items_usagehelp = S("Place the melon seeds on farmland (which can be created with a hoe) to plant a melon stem. Melons grow in sunlight and grow faster on hydrated farmland. Rightclick an animal to feed it melon seeds."), stack_max = 64, groups = { craftitem=1 }, inventory_image = "mcl_farming_melon_seeds.png", @@ -14,8 +16,8 @@ minetest.register_craftitem("mcl_farming:melon_seeds", { -- Melon template (will be fed into mcl_farming.register_gourd local melon_base_def = { - description = "Melon", - _doc_items_longdesc = "A melon is a block which can be grown from melon stems, which in turn are grown from melon seeds. It can be harvested for melon slices.", + description = S("Melon"), + _doc_items_longdesc = S("A melon is a block which can be grown from melon stems, which in turn are grown from melon seeds. It can be harvested for melon slices."), stack_max = 64, tiles = {"farming_melon_top.png", "farming_melon_top.png", "farming_melon_side.png", "farming_melon_side.png", "farming_melon_side.png", "farming_melon_side.png"}, groups = {handy=1,axey=1, plant=1,building_block=1,enderman_takable=1,dig_by_piston=1}, @@ -68,13 +70,13 @@ for s=1,7 do local doc = s == 1 local longdesc, entry_name if doc then - entry_name = "Premature Melon Stem" - longdesc = "Melon stems grow on farmland in 8 stages. On hydrated farmland, the growth is a bit quicker. Mature melon stems are able to grow melons." + entry_name = S("Premature Melon Stem") + longdesc = S("Melon stems grow on farmland in 8 stages. On hydrated farmland, the growth is a bit quicker. Mature melon stems are able to grow melons.") end local colorstring = mcl_farming:stem_color(startcolor, endcolor, s, 8) local texture = "([combine:16x16:0,"..((8-s)*2).."=mcl_farming_melon_stem_disconnected.png)^[colorize:"..colorstring..":127" minetest.register_node("mcl_farming:melontige_"..s, { - description = string.format("Premature Melon Stem (Stage %d)", s), + description = S("Premature Melon Stem (Stage @1)", s), _doc_items_create_entry = doc, _doc_items_entry_name = entry_name, _doc_items_longdesc = longdesc, @@ -100,9 +102,9 @@ end -- Full melon stem, able to spawn melons local stem_def = { - description = "Mature Melon Stem", + description = S("Mature Melon Stem"), _doc_items_create_entry = true, - _doc_items_longdesc = "A mature melon stem attempts to grow a melon at one of its four adjacent blocks. A melon can only grow on top of farmland, dirt, or a grass block. When a melon is next to a melon stem, the melon stem immediately bends and connects to the melon. While connected, a melon stem can't grow another melon. As soon all melons around the stem have been removed, it loses the connection and is ready to grow another melon.", + _doc_items_longdesc = S("A mature melon stem attempts to grow a melon at one of its four adjacent blocks. A melon can only grow on top of farmland, dirt, or a grass block. When a melon is next to a melon stem, the melon stem immediately bends and connects to the melon. While connected, a melon stem can't grow another melon. As soon all melons around the stem have been removed, it loses the connection and is ready to grow another melon."), tiles = {"mcl_farming_melon_stem_disconnected.png^[colorize:#FFA800:127"}, wield_image = "mcl_farming_melon_stem_disconnected.png^[colorize:#FFA800:127", inventory_image = "mcl_farming_melon_stem_disconnected.png^[colorize:#FFA800:127", @@ -117,8 +119,8 @@ mcl_farming:add_gourd("mcl_farming:melontige_unconnect", "mcl_farming:melontige_ -- Items and crafting minetest.register_craftitem("mcl_farming:melon_item", { -- Original name: “Melon” - description = "Melon Slice", - _doc_items_longdesc = "This is a food item which can be eaten.", + description = S("Melon Slice"), + _doc_items_longdesc = S("This is a food item which can be eaten."), stack_max = 64, inventory_image = "farming_melon.png", on_place = minetest.item_eat(2), diff --git a/mods/ITEMS/mcl_farming/potatoes.lua b/mods/ITEMS/mcl_farming/potatoes.lua index 7294275a..7c795b47 100644 --- a/mods/ITEMS/mcl_farming/potatoes.lua +++ b/mods/ITEMS/mcl_farming/potatoes.lua @@ -1,3 +1,5 @@ +local S = minetest.get_translator("mcl_farming") + -- Premature potato plants for i=1, 7 do @@ -16,8 +18,8 @@ for i=1, 7 do local create, name, longdesc if i==1 then create = true - name = "Premature Potato Plant" - longdesc = "Potato plants are plants which grow on farmland under sunlight in 8 stages, of which only 4 are actually visible. On hydrated farmland, they grow a bit faster. They can be harvested at any time but will only yield a profit when mature." + name = S("Premature Potato Plant") + longdesc = S("Potato plants are plants which grow on farmland under sunlight in 8 stages, of which only 4 are actually visible. On hydrated farmland, they grow a bit faster. They can be harvested at any time but will only yield a profit when mature.") else create = false if minetest.get_modpath("doc") then @@ -26,7 +28,7 @@ for i=1, 7 do end minetest.register_node("mcl_farming:potato_"..i, { - description = string.format("Premature Potato Plant (Stage %d)", i), + description = S("Premature Potato Plant (Stage @1)", i), _doc_items_create_entry = create, _doc_items_entry_name = name, _doc_items_longdesc = longdesc, @@ -52,8 +54,8 @@ end -- Mature plant minetest.register_node("mcl_farming:potato", { - description = "Mature Potato Plant", - _doc_items_longdesc = "Mature potato plants are ready to be harvested for potatoes. They won't grow any further.", + description = S("Mature Potato Plant"), + _doc_items_longdesc = S("Mature potato plants are ready to be harvested for potatoes. They won't grow any further."), paramtype = "light", paramtype2 = "meshoptions", sunlight_propagates = true, @@ -84,9 +86,9 @@ minetest.register_node("mcl_farming:potato", { }) minetest.register_craftitem("mcl_farming:potato_item", { - description = "Potato", - _doc_items_longdesc = "Potatoes are food items which can be eaten, cooked in the furnace and planted. Pigs like potatoes.", - _doc_items_usagehelp = "Hold it in your hand and rightclick to eat it. Place it on top of farmland to plant it. It grows in sunlight and grows faster on hydrated farmland. Rightclick an animal to feed it.", + description = S("Potato"), + _doc_items_longdesc = S("Potatoes are food items which can be eaten, cooked in the furnace and planted. Pigs like potatoes."), + _doc_items_usagehelp = S("Hold it in your hand and rightclick to eat it. Place it on top of farmland to plant it. It grows in sunlight and grows faster on hydrated farmland. Rightclick an animal to feed it."), inventory_image = "farming_potato.png", groups = { food = 2, eatable = 1 }, _mcl_saturation = 0.6, @@ -103,8 +105,8 @@ minetest.register_craftitem("mcl_farming:potato_item", { }) minetest.register_craftitem("mcl_farming:potato_item_baked", { - description = "Baked Potato", - _doc_items_longdesc = "Baked potatoes are food items which are more filling than the unbaked ones.", + description = S("Baked Potato"), + _doc_items_longdesc = S("Baked potatoes are food items which are more filling than the unbaked ones."), stack_max = 64, inventory_image = "farming_potato_baked.png", on_place = minetest.item_eat(5), @@ -114,8 +116,8 @@ minetest.register_craftitem("mcl_farming:potato_item_baked", { }) minetest.register_craftitem("mcl_farming:potato_item_poison", { - description = "Poisonous Potato", - _doc_items_longdesc = "This potato doesn't look too healthy. You can eat it to restore hunger points, but there's a 60% chance it will poison you briefly.", + description = S("Poisonous Potato"), + _doc_items_longdesc = S("This potato doesn't look too healthy. You can eat it to restore hunger points, but there's a 60% chance it will poison you briefly."), stack_max = 64, inventory_image = "farming_potato_poison.png", -- TODO: Cause status effects diff --git a/mods/ITEMS/mcl_farming/pumpkin.lua b/mods/ITEMS/mcl_farming/pumpkin.lua index 6b0d3181..128f3614 100644 --- a/mods/ITEMS/mcl_farming/pumpkin.lua +++ b/mods/ITEMS/mcl_farming/pumpkin.lua @@ -1,8 +1,10 @@ +local S = minetest.get_translator("mcl_farming") + -- Seeds minetest.register_craftitem("mcl_farming:pumpkin_seeds", { - description = "Pumpkin Seeds", - _doc_items_longdesc = "Grows into a pumpkin. Chickens like pumpkin seeds.", - _doc_items_usagehelp = "Place the pumpkin seeds on farmland (which can be created with a hoe) to plant a pumpkin stem. Pumpkins grow in sunlight and grow faster on hydrated farmland. Rightclick an animal to feed it pumpkin seeds.", + description = S("Pumpkin Seeds"), + _doc_items_longdesc = S("Grows into a pumpkin. Chickens like pumpkin seeds."), + _doc_items_usagehelp = S("Place the pumpkin seeds on farmland (which can be created with a hoe) to plant a pumpkin stem. Pumpkins grow in sunlight and grow faster on hydrated farmland. Rightclick an animal to feed it pumpkin seeds."), stack_max = 64, inventory_image = "mcl_farming_pumpkin_seeds.png", groups = { craftitem=1 }, @@ -42,13 +44,13 @@ for s=1,7 do local doc = s == 1 local longdesc, entry_name if doc then - entry_name = "Premature Pumpkin Stem" - longdesc = "Pumpkin stems grow on farmland in 8 stages. On hydrated farmland, the growth is a bit quicker. Mature pumpkin stems are able to grow pumpkins." + entry_name = S("Premature Pumpkin Stem") + longdesc = S("Pumpkin stems grow on farmland in 8 stages. On hydrated farmland, the growth is a bit quicker. Mature pumpkin stems are able to grow pumpkins.") end local colorstring = mcl_farming:stem_color(startcolor, endcolor, s, 8) local texture = "([combine:16x16:0,"..((8-s)*2).."=mcl_farming_pumpkin_stem_disconnected.png)^[colorize:"..colorstring..":127" minetest.register_node("mcl_farming:pumpkin_"..s, { - description = string.format("Premature Pumpkin Stem (Stage %d)", s), + description = S("Premature Pumpkin Stem (Stage @1)", s), _doc_items_entry_name = entry_name, _doc_items_create_entry = doc, _doc_items_longdesc = longdesc, @@ -74,8 +76,8 @@ end -- Full stem (not connected) local stem_def = { - description = "Mature Pumpkin Stem", - _doc_items_longdesc = "A mature pumpkin stem attempts to grow a pumpkin at one of its four adjacent blocks. A pumpkin can only grow on top of farmland, dirt or a grass block. When a pumpkin is next to a pumpkin stem, the pumpkin stem immediately bends and connects to the pumpkin. A connected pumpkin stem can't grow another pumpkin. As soon all pumpkins around the stem have been removed, it loses the connection and is ready to grow another pumpkin.", + description = S("Mature Pumpkin Stem"), + _doc_items_longdesc = S("A mature pumpkin stem attempts to grow a pumpkin at one of its four adjacent blocks. A pumpkin can only grow on top of farmland, dirt or a grass block. When a pumpkin is next to a pumpkin stem, the pumpkin stem immediately bends and connects to the pumpkin. A connected pumpkin stem can't grow another pumpkin. As soon all pumpkins around the stem have been removed, it loses the connection and is ready to grow another pumpkin."), tiles = {"mcl_farming_pumpkin_stem_disconnected.png^[colorize:#FFA800:127"}, wield_image = "mcl_farming_pumpkin_stem_disconnected.png^[colorize:#FFA800:127", inventory_image = "mcl_farming_pumpkin_stem_disconnected.png^[colorize:#FFA800:127", @@ -83,8 +85,8 @@ local stem_def = { -- Template for pumpkin local pumpkin_base_def = { - description = "Faceless Pumpkin", - _doc_items_longdesc = "A faceless pumpkin is a decorative block. It can be carved with shears to obtain pumpkin seeds.", + description = S("Faceless Pumpkin"), + _doc_items_longdesc = S("A faceless pumpkin is a decorative block. It can be carved with shears to obtain pumpkin seeds."), _doc_items_usagehelp = "To carve a face into the pumpkin, use the shears on the side you want to carve.", stack_max = 64, paramtype2 = "facedir", @@ -97,8 +99,8 @@ local pumpkin_base_def = { minetest.register_node("mcl_farming:pumpkin", pumpkin_base_def) local pumpkin_face_base_def = table.copy(pumpkin_base_def) -pumpkin_face_base_def.description = "Pumpkin" -pumpkin_face_base_def._doc_items_longdesc = "A pumpkin can be worn as a helmet for fun, but it doesn't offer any protection. Pumpkins grow from pumpkin stems, which in turn grow from pumpkin seeds." +pumpkin_face_base_def.description = S("Pumpkin") +pumpkin_face_base_def._doc_items_longdesc = S("A pumpkin can be worn as a helmet for fun, but it doesn't offer any protection. Pumpkins grow from pumpkin stems, which in turn grow from pumpkin seeds.") pumpkin_face_base_def.tiles = {"farming_pumpkin_top.png", "farming_pumpkin_top.png", "farming_pumpkin_side.png", "farming_pumpkin_side.png", "farming_pumpkin_side.png", "farming_pumpkin_face.png"} pumpkin_face_base_def.groups.armor_head=1 pumpkin_face_base_def.groups.non_combat_armor=1 @@ -116,8 +118,8 @@ end) -- Jack o'Lantern minetest.register_node("mcl_farming:pumpkin_face_light", { - description = "Jack o'Lantern", - _doc_items_longdesc = "A jack o'lantern is a traditional Halloween decoration made from a pumpkin. It glows brightly.", + description = S("Jack o'Lantern"), + _doc_items_longdesc = S("A jack o'lantern is a traditional Halloween decoration made from a pumpkin. It glows brightly."), is_ground_content = false, stack_max = 64, paramtype = "light", @@ -155,8 +157,8 @@ minetest.register_craft({ }) minetest.register_craftitem("mcl_farming:pumpkin_pie", { - description = "Pumpkin Pie", - _doc_items_longdesc = "A pumpkin pie is a tasty food item which can be eaten.", + description = S("Pumpkin Pie"), + _doc_items_longdesc = S("A pumpkin pie is a tasty food item which can be eaten."), stack_max = 64, inventory_image = "mcl_farming_pumpkin_pie.png", wield_image = "mcl_farming_pumpkin_pie.png", diff --git a/mods/ITEMS/mcl_farming/soil.lua b/mods/ITEMS/mcl_farming/soil.lua index 0b38a5ed..d8e591ec 100644 --- a/mods/ITEMS/mcl_farming/soil.lua +++ b/mods/ITEMS/mcl_farming/soil.lua @@ -1,7 +1,9 @@ +local S = minetest.get_translator("mcl_farming") + minetest.register_node("mcl_farming:soil", { tiles = {"mcl_farming_farmland_dry.png", "default_dirt.png"}, - description = "Farmland", - _doc_items_longdesc = "Farmland is used for farming, a necessary surface to plant crops. It is created when a hoe is used on dirt or a similar block. Plants are able to grow on farmland, but slowly. Farmland will become hydrated farmland (on which plants grow faster) when it rains or a water source is nearby. This block will turn back to dirt when a solid block appears above it or a piston arm extends above it.", + description = S("Farmland"), + _doc_items_longdesc = S("Farmland is used for farming, a necessary surface to plant crops. It is created when a hoe is used on dirt or a similar block. Plants are able to grow on farmland, but slowly. Farmland will become hydrated farmland (on which plants grow faster) when it rains or a water source is nearby. This block will turn back to dirt when a solid block appears above it or a piston arm extends above it."), drop = "mcl_core:dirt", drawtype = "nodebox", paramtype = "light", @@ -24,8 +26,8 @@ minetest.register_node("mcl_farming:soil", { minetest.register_node("mcl_farming:soil_wet", { tiles = {"mcl_farming_farmland_wet.png", "default_dirt.png"}, - description = "Hydrated Farmland", - _doc_items_longdesc = "Hydrated farmland is used in farming, this is where you can plant and grow some plants. It is created when farmlands is under rain or near water. Without water, this block will dry out eventually. This block will turn back to dirt when a solid block appears above it or a piston arm extends above it.", + description = S("Hydrated Farmland"), + _doc_items_longdesc = S("Hydrated farmland is used in farming, this is where you can plant and grow some plants. It is created when farmlands is under rain or near water. Without water, this block will dry out eventually. This block will turn back to dirt when a solid block appears above it or a piston arm extends above it."), drop = "mcl_core:dirt", drawtype = "nodebox", paramtype = "light", diff --git a/mods/ITEMS/mcl_farming/wheat.lua b/mods/ITEMS/mcl_farming/wheat.lua index f7521d26..41c31c34 100644 --- a/mods/ITEMS/mcl_farming/wheat.lua +++ b/mods/ITEMS/mcl_farming/wheat.lua @@ -1,8 +1,10 @@ +local S = minetest.get_translator("mcl_farming") + minetest.register_craftitem("mcl_farming:wheat_seeds", { -- Original Minecraft name: “Seeds” - description = "Wheat Seeds", - _doc_items_longdesc = "Grows into a wheat plant. Chickens like wheat seeds.", - _doc_items_usagehelp = "Place the wheat seeds on farmland (which can be created with a hoe) to plant a wheat plant. They grow in sunlight and grow faster on hydrated farmland. Rightclick an animal to feed it wheat seeds.", + description = S("Wheat Seeds"), + _doc_items_longdesc = S("Grows into a wheat plant. Chickens like wheat seeds."), + _doc_items_usagehelp = S("Place the wheat seeds on farmland (which can be created with a hoe) to plant a wheat plant. They grow in sunlight and grow faster on hydrated farmland. Rightclick an animal to feed it wheat seeds."), groups = { craftitem=1 }, inventory_image = "mcl_farming_wheat_seeds.png", on_place = function(itemstack, placer, pointed_thing) @@ -24,14 +26,14 @@ for i=1,7 do local create, name, longdesc if i == 1 then create = true - name = "Premature Wheat Plant" - longdesc = "Premature wheat plants grow on farmland under sunlight in 8 stages. On hydrated farmland, they grow faster. They can be harvested at any time but will only yield a profit when mature." + name = S("Premature Wheat Plant") + longdesc = S("Premature wheat plants grow on farmland under sunlight in 8 stages. On hydrated farmland, they grow faster. They can be harvested at any time but will only yield a profit when mature.") else create = false end minetest.register_node("mcl_farming:wheat_"..i, { - description = string.format("Premature Wheat Plant (Stage %d)", i), + description = S("Premature Wheat Plant (Stage @1)", i), _doc_items_create_entry = create, _doc_items_entry_name = name, _doc_items_longdesc = longdesc, @@ -58,8 +60,8 @@ for i=1,7 do end minetest.register_node("mcl_farming:wheat", { - description = "Mature Wheat Plant", - _doc_items_longdesc = "Mature wheat plants are ready to be harvested for wheat and wheat seeds. They won't grow any further.", + description = S("Mature Wheat Plant"), + _doc_items_longdesc = S("Mature wheat plants are ready to be harvested for wheat and wheat seeds. They won't grow any further."), sunlight_propagates = true, paramtype = "light", paramtype2 = "meshoptions", @@ -86,8 +88,8 @@ minetest.register_node("mcl_farming:wheat", { mcl_farming:add_plant("plant_wheat", "mcl_farming:wheat", {"mcl_farming:wheat_1", "mcl_farming:wheat_2", "mcl_farming:wheat_3", "mcl_farming:wheat_4", "mcl_farming:wheat_5", "mcl_farming:wheat_6", "mcl_farming:wheat_7"}, 25, 20) minetest.register_craftitem("mcl_farming:wheat_item", { - description = "Wheat", - _doc_items_longdesc = "Wheat is used in crafting. Some animals like wheat.", + description = S("Wheat"), + _doc_items_longdesc = S("Wheat is used in crafting. Some animals like wheat."), _doc_items_usagehelp = "Rightclick an animal to try to feed it wheat.", inventory_image = "farming_wheat_harvested.png", groups = { craftitem = 1 }, @@ -108,8 +110,8 @@ minetest.register_craft({ }) minetest.register_craftitem("mcl_farming:cookie", { - description = "Cookie", - _doc_items_longdesc = "This is a food item which can be eaten.", + description = S("Cookie"), + _doc_items_longdesc = S("This is a food item which can be eaten."), inventory_image = "farming_cookie.png", groups = {food=2, eatable=2}, _mcl_saturation = 0.4, @@ -119,8 +121,8 @@ minetest.register_craftitem("mcl_farming:cookie", { minetest.register_craftitem("mcl_farming:bread", { - description = "Bread", - _doc_items_longdesc = "This is a food item which can be eaten.", + description = S("Bread"), + _doc_items_longdesc = S("This is a food item which can be eaten."), inventory_image = "farming_bread.png", groups = {food=2, eatable=5}, _mcl_saturation = 6.0, @@ -129,8 +131,8 @@ minetest.register_craftitem("mcl_farming:bread", { }) minetest.register_node("mcl_farming:hay_block", { - description = "Hay Bale", - _doc_items_longdesc = "Hay bales are decorative blocks made from wheat.", + description = S("Hay Bale"), + _doc_items_longdesc = S("Hay bales are decorative blocks made from wheat."), tiles = {"mcl_farming_hayblock_top.png", "mcl_farming_hayblock_top.png", "mcl_farming_hayblock_side.png"}, is_ground_content = false, stack_max = 64, diff --git a/mods/ITEMS/mcl_fences/init.lua b/mods/ITEMS/mcl_fences/init.lua index 2f4c9952..1e2539fa 100644 --- a/mods/ITEMS/mcl_fences/init.lua +++ b/mods/ITEMS/mcl_fences/init.lua @@ -1,5 +1,7 @@ local init = os.clock() +local S = minetest.get_translator("mcl_fences") + -- Node box local p = {-2/16, -0.5, -2/16, 2/16, 0.5, 2/16} local x1 = {-0.5, 4/16, -1/16, -2/16, 7/16, 1/16} --oben(quer) -x @@ -36,7 +38,7 @@ mcl_fences.register_fence = function(id, fence_name, texture, groups, hardness, table.insert(connects_to, fence_id) minetest.register_node(fence_id, { description = fence_name, - _doc_items_longdesc = "Fences are structures which block the way. Fences will connect to each other and solid blocks. They cannot be jumped over with a simple jump.", + _doc_items_longdesc = S("Fences are structures which block the way. Fences will connect to each other and solid blocks. They cannot be jumped over with a simple jump."), tiles = {texture}, inventory_image = "mcl_fences_fence_mask.png^" .. texture .. "^mcl_fences_fence_mask.png^[makealpha:255,126,126", wield_image = "mcl_fences_fence_mask.png^" .. texture .. "^mcl_fences_fence_mask.png^[makealpha:255,126,126", @@ -172,8 +174,8 @@ mcl_fences.register_fence_gate = function(id, fence_gate_name, texture, groups, cgroups_closed.mesecon_effector_off = nil minetest.register_node(gate_id, { description = fence_gate_name, - _doc_items_longdesc = "Fence gates can be opened or closed and can't be jumped over. Fences will connect nicely to fence gates.", - _doc_items_usagehelp = "Right-click the fence gate to open or close it.", + _doc_items_longdesc = S("Fence gates can be opened or closed and can't be jumped over. Fences will connect nicely to fence gates."), + _doc_items_usagehelp = S("Right-click the fence gate to open or close it."), tiles = {texture}, inventory_image = "mcl_fences_fence_gate_mask.png^" .. texture .. "^mcl_fences_fence_gate_mask.png^[makealpha:255,126,126", wield_image = "mcl_fences_fence_gate_mask.png^" .. texture .. "^mcl_fences_fence_gate_mask.png^[makealpha:255,126,126", @@ -250,12 +252,12 @@ local wood_connect = {"group:fence_wood"} local wood_sounds = mcl_sounds.node_sound_wood_defaults() local woods = { - {"", "Oak Fence", "Oak Fence Gate", "mcl_fences_fence_oak.png", "mcl_fences_fence_gate_oak.png", "mcl_core:wood"}, - {"spruce", "Spruce Fence", "Spruce Fence Gate", "mcl_fences_fence_spruce.png", "mcl_fences_fence_gate_spruce.png", "mcl_core:sprucewood"}, - {"birch", "Birch Fence", "Birch Fence Gate", "mcl_fences_fence_birch.png", "mcl_fences_fence_gate_birch.png", "mcl_core:birchwood"}, - {"jungle", "Jungle Fence", "Jungle Fence Gate", "mcl_fences_fence_jungle.png", "mcl_fences_fence_gate_jungle.png", "mcl_core:junglewood"}, - {"dark_oak", "Dark Oak Fence", "Dark Oak Fence Gate", "mcl_fences_fence_big_oak.png", "mcl_fences_fence_gate_big_oak.png", "mcl_core:darkwood"}, - {"acacia", "Acacia Fence", "Acacia Fence Gate", "mcl_fences_fence_acacia.png", "mcl_fences_fence_gate_acacia.png", "mcl_core:acaciawood"}, + {"", S("Oak Fence"), S("Oak Fence Gate"), "mcl_fences_fence_oak.png", "mcl_fences_fence_gate_oak.png", "mcl_core:wood"}, + {"spruce", S("Spruce Fence"), S("Spruce Fence Gate"), "mcl_fences_fence_spruce.png", "mcl_fences_fence_gate_spruce.png", "mcl_core:sprucewood"}, + {"birch", S("Birch Fence"), S("Birch Fence Gate"), "mcl_fences_fence_birch.png", "mcl_fences_fence_gate_birch.png", "mcl_core:birchwood"}, + {"jungle", S("Jungle Fence"), S("Jungle Fence Gate"), "mcl_fences_fence_jungle.png", "mcl_fences_fence_gate_jungle.png", "mcl_core:junglewood"}, + {"dark_oak", S("Dark Oak Fence"), S("Dark Oak Fence Gate"), "mcl_fences_fence_big_oak.png", "mcl_fences_fence_gate_big_oak.png", "mcl_core:darkwood"}, + {"acacia", S("Acacia Fence"), S("Acacia Fence Gate"), "mcl_fences_fence_acacia.png", "mcl_fences_fence_gate_acacia.png", "mcl_core:acaciawood"}, } for w=1, #woods do diff --git a/mods/ITEMS/mcl_fire/fire_charge.lua b/mods/ITEMS/mcl_fire/fire_charge.lua index 78dbade7..58e86778 100644 --- a/mods/ITEMS/mcl_fire/fire_charge.lua +++ b/mods/ITEMS/mcl_fire/fire_charge.lua @@ -1,8 +1,10 @@ +local S = minetest.get_translator("mcl_fire") + -- Fire Charge minetest.register_craftitem("mcl_fire:fire_charge", { - description = "Fire Charge", - _doc_items_longdesc = "Fire charges are primarily projectiles which can be launched from dispensers, they will fly in a straight line and burst into a fire on impact. Alternatively, they can be used to ignite fires directly.", - _doc_items_usagehelp = "Put the fire charge into a dispenser and supply it with redstone power to launch it. To ignite a fire directly, simply place the fire charge on the ground, which uses it up.", + description = S("Fire Charge"), + _doc_items_longdesc = S("Fire charges are primarily projectiles which can be launched from dispensers, they will fly in a straight line and burst into a fire on impact. Alternatively, they can be used to ignite fires directly."), + _doc_items_usagehelp = S("Put the fire charge into a dispenser and supply it with redstone power to launch it. To ignite a fire directly, simply place the fire charge on the ground, which uses it up."), inventory_image = "mcl_fire_fire_charge.png", liquids_pointable = false, stack_max = 64, diff --git a/mods/ITEMS/mcl_fire/flint_and_steel.lua b/mods/ITEMS/mcl_fire/flint_and_steel.lua index 7cb114ad..6ca2132d 100644 --- a/mods/ITEMS/mcl_fire/flint_and_steel.lua +++ b/mods/ITEMS/mcl_fire/flint_and_steel.lua @@ -1,8 +1,10 @@ +local S = minetest.get_translator("mcl_fire") + -- Flint and Steel minetest.register_tool("mcl_fire:flint_and_steel", { - description = "Flint and Steel", - _doc_items_longdesc = "Flint and steel is a tool to start fires and ignite blocks.", - _doc_items_usagehelp = "Rightclick the surface of a block to attempt to light a fire in front of it or ignite the block. A few blocks have an unique reaction when ignited.", + description = S("Flint and Steel"), + _doc_items_longdesc = S("Flint and steel is a tool to start fires and ignite blocks."), + _doc_items_usagehelp = S("Rightclick the surface of a block to attempt to light a fire in front of it or ignite the block. A few blocks have an unique reaction when ignited."), inventory_image = "mcl_fire_flint_and_steel.png", liquids_pointable = false, stack_max = 1, diff --git a/mods/ITEMS/mcl_fire/init.lua b/mods/ITEMS/mcl_fire/init.lua index 7743d30d..d85fbf1c 100644 --- a/mods/ITEMS/mcl_fire/init.lua +++ b/mods/ITEMS/mcl_fire/init.lua @@ -2,6 +2,7 @@ mcl_fire = {} +local S = minetest.get_translator("mcl_fire") -- -- Items @@ -9,11 +10,11 @@ mcl_fire = {} -- Flame nodes -local fire_help = "Fire is a damaging and destructive but short-lived kind of block. It will destroy and spread towards near flammable blocks, but fire will disappear when there is nothing to burn left. It will be extinguished by nearby water and rain. Fire can be destroyed safely by punching it, but it is hurtful if you stand directly in it. If a fire is started above netherrack or a magma block, it will immediately turn into an eternal fire." -local eternal_fire_help = "Eternal fire is a damaging and destructive block. It will create fire around it when flammable blocks are nearby. Eternal fire can be extinguished by punches and nearby water blocks. Other than (normal) fire, eternal fire does not get extinguished on its own and also continues to burn under rain. Punching eternal fire is safe, but it hurts if you stand inside." +local fire_help = S("Fire is a damaging and destructive but short-lived kind of block. It will destroy and spread towards near flammable blocks, but fire will disappear when there is nothing to burn left. It will be extinguished by nearby water and rain. Fire can be destroyed safely by punching it, but it is hurtful if you stand directly in it. If a fire is started above netherrack or a magma block, it will immediately turn into an eternal fire.") +local eternal_fire_help = S("Eternal fire is a damaging and destructive block. It will create fire around it when flammable blocks are nearby. Eternal fire can be extinguished by punches and nearby water blocks. Other than (normal) fire, eternal fire does not get extinguished on its own and also continues to burn under rain. Punching eternal fire is safe, but it hurts if you stand inside.") minetest.register_node("mcl_fire:fire", { - description = "Fire", + description = S("Fire"), _doc_items_longdesc = fire_help, drawtype = "firelike", tiles = { @@ -92,7 +93,7 @@ minetest.register_node("mcl_fire:fire", { }) minetest.register_node("mcl_fire:eternal_fire", { - description = "Eternal Fire", + description = S("Eternal Fire"), _doc_items_longdesc = eternal_fire_help, drawtype = "firelike", tiles = { diff --git a/mods/ITEMS/mcl_fishing/init.lua b/mods/ITEMS/mcl_fishing/init.lua index ab2519b9..0c23daae 100644 --- a/mods/ITEMS/mcl_fishing/init.lua +++ b/mods/ITEMS/mcl_fishing/init.lua @@ -1,3 +1,5 @@ +local S = minetest.get_translator("mcl_fishing") + local go_fishing = function(itemstack, user, pointed_thing) if pointed_thing and pointed_thing.under then -- Use pointed node's on_rightclick function first, if present @@ -83,9 +85,9 @@ end -- Fishing Rod minetest.register_tool("mcl_fishing:fishing_rod", { - description = "Fishing Rod", - _doc_items_longdesc = "Fishing rods can be used to catch fish.", - _doc_items_usagehelp = "Rightclick a water source to try to go fishing. Who knows what you're going to catch?", + description = S("Fishing Rod"), + _doc_items_longdesc = S("Fishing rods can be used to catch fish."), + _doc_items_usagehelp = S("Rightclick a water source to try to go fishing. Who knows what you're going to catch?"), -- This item is incomplete, hide it from creative inventory groups = { tool=1, not_in_creative_inventory=1 }, inventory_image = "mcl_fishing_fishing_rod.png", @@ -128,8 +130,8 @@ minetest.register_craft({ -- Fish minetest.register_craftitem("mcl_fishing:fish_raw", { - description = "Raw Fish", - _doc_items_longdesc = "Raw fish is obtained by fishing and is a food item which can be eaten safely. Cooking it improves its nutritional value.", + description = S("Raw Fish"), + _doc_items_longdesc = S("Raw fish is obtained by fishing and is a food item which can be eaten safely. Cooking it improves its nutritional value."), inventory_image = "mcl_fishing_fish_raw.png", on_place = minetest.item_eat(2), on_secondary_use = minetest.item_eat(2), @@ -139,8 +141,8 @@ minetest.register_craftitem("mcl_fishing:fish_raw", { }) minetest.register_craftitem("mcl_fishing:fish_cooked", { - description = "Cooked Fish", - _doc_items_longdesc = "Mmh, fish! This is a healthy food item.", + description = S("Cooked Fish"), + _doc_items_longdesc = S("Mmh, fish! This is a healthy food item."), inventory_image = "mcl_fishing_fish_cooked.png", on_place = minetest.item_eat(5), on_secondary_use = minetest.item_eat(5), @@ -158,8 +160,8 @@ minetest.register_craft({ -- Salmon minetest.register_craftitem("mcl_fishing:salmon_raw", { - description = "Raw Salmon", - _doc_items_longdesc = "Raw salmon is obtained by fishing and is a food item which can be eaten safely. Cooking it improves its nutritional value.", + description = S("Raw Salmon"), + _doc_items_longdesc = S("Raw salmon is obtained by fishing and is a food item which can be eaten safely. Cooking it improves its nutritional value."), inventory_image = "mcl_fishing_salmon_raw.png", on_place = minetest.item_eat(2), on_secondary_use = minetest.item_eat(2), @@ -169,8 +171,8 @@ minetest.register_craftitem("mcl_fishing:salmon_raw", { }) minetest.register_craftitem("mcl_fishing:salmon_cooked", { - description = "Cooked Salmon", - _doc_items_longdesc = "This is a healthy food item which can be eaten.", + description = S("Cooked Salmon"), + _doc_items_longdesc = S("This is a healthy food item which can be eaten."), inventory_image = "mcl_fishing_salmon_cooked.png", on_place = minetest.item_eat(6), on_secondary_use = minetest.item_eat(6), @@ -188,8 +190,8 @@ minetest.register_craft({ -- Clownfish minetest.register_craftitem("mcl_fishing:clownfish_raw", { - description = "Clownfish", - _doc_items_longdesc = "Clownfish may be obtained by fishing (and luck) and is a food item which can be eaten safely.", + description = S("Clownfish"), + _doc_items_longdesc = S("Clownfish may be obtained by fishing (and luck) and is a food item which can be eaten safely."), inventory_image = "mcl_fishing_clownfish_raw.png", on_place = minetest.item_eat(1), on_secondary_use = minetest.item_eat(1), @@ -201,8 +203,8 @@ minetest.register_craftitem("mcl_fishing:clownfish_raw", { -- Pufferfish -- TODO: Add real status effect minetest.register_craftitem("mcl_fishing:pufferfish_raw", { - description = "Pufferfish", - _doc_items_longdesc = "Pufferfish are a common species of fish and can be obtained by fishing. They can technically be eaten, but they are very bad for humans. Eating a pufferfish only restores 1 hunger point and will poison you very badly (which drains your health non-fatally) and causes serious food poisoning (which increases your hunger).", + description = S("Pufferfish"), + _doc_items_longdesc = S("Pufferfish are a common species of fish and can be obtained by fishing. They can technically be eaten, but they are very bad for humans. Eating a pufferfish only restores 1 hunger point and will poison you very badly (which drains your health non-fatally) and causes serious food poisoning (which increases your hunger)."), inventory_image = "mcl_fishing_pufferfish_raw.png", on_place = minetest.item_eat(1), on_secondary_use = minetest.item_eat(1), diff --git a/mods/ITEMS/mcl_flowerpots/init.lua b/mods/ITEMS/mcl_flowerpots/init.lua index e4df4459..c58fab7c 100644 --- a/mods/ITEMS/mcl_flowerpots/init.lua +++ b/mods/ITEMS/mcl_flowerpots/init.lua @@ -1,25 +1,26 @@ +local S = minetest.get_translator("mcl_flowerpots") local flowers = { - {"dandelion", "mcl_flowers:dandelion", "Dandelion Flower Pot"}, - {"poppy", "mcl_flowers:poppy", "Poppy Floer Pot"}, - {"blue_orchid", "mcl_flowers:blue_orchid", "Blue Orchid Flower Pot"}, - {"allium", "mcl_flowers:allium", "Allium Flower Pot"}, - {"azure_bluet", "mcl_flowers:azure_bluet", "Azure Bluet Flower Pot"}, - {"tulip_red", "mcl_flowers:tulip_red", "Red Tulip Flower Pot"}, - {"tulip_pink", "mcl_flowers:tulip_pink", "Pink Tulip Flower Pot"}, - {"tulip_white", "mcl_flowers:tulip_white", "White Tulip Flower Pot"}, - {"tulip_orange", "mcl_flowers:tulip_orange", "Orange Tulip Flower Pot"}, - {"oxeye_daisy", "mcl_flowers:oxeye_daisy", "Oxeye Daisy Flower Pot"}, - {"mushroom_brown", "mcl_mushrooms:mushroom_brown", "Brown Mushroom Flower Pot"}, - {"mushroom_red", "mcl_mushrooms:mushroom_red", "Red Mushroom Flower Pot"}, - {"sapling", "mcl_core:sapling", "Oak Sapling Flower Pot"}, - {"acaciasapling", "mcl_core:acaciasapling", "Acacia Sapling Flower Pot"}, - {"junglesapling", "mcl_core:junglesapling", "Jungle Sapling Flower Pot"}, - {"darksapling", "mcl_core:darksapling", "Dark Oak Sapling Flower Pot"}, - {"sprucesapling", "mcl_core:sprucesapling", "Spruce Sapling Flower Pot"}, - {"birchsapling", "mcl_core:birchsapling", "Birch Sapling Flower Pot"}, - {"deadbush", "mcl_core:deadbush", "Dead Bush Flower Pot"}, - {"fern", "mcl_flowers:fern", "Fern Flower Pot", {"mcl_flowers_fern_inv.png"}}, + {"dandelion", "mcl_flowers:dandelion", S("Dandelion Flower Pot")}, + {"poppy", "mcl_flowers:poppy", S("Poppy Floer Pot")}, + {"blue_orchid", "mcl_flowers:blue_orchid", S("Blue Orchid Flower Pot")}, + {"allium", "mcl_flowers:allium", S("Allium Flower Pot")}, + {"azure_bluet", "mcl_flowers:azure_bluet", S("Azure Bluet Flower Pot")}, + {"tulip_red", "mcl_flowers:tulip_red", S("Red Tulip Flower Pot")}, + {"tulip_pink", "mcl_flowers:tulip_pink", S("Pink Tulip Flower Pot")}, + {"tulip_white", "mcl_flowers:tulip_white", S("White Tulip Flower Pot")}, + {"tulip_orange", "mcl_flowers:tulip_orange", S("Orange Tulip Flower Pot")}, + {"oxeye_daisy", "mcl_flowers:oxeye_daisy", S("Oxeye Daisy Flower Pot")}, + {"mushroom_brown", "mcl_mushrooms:mushroom_brown", S("Brown Mushroom Flower Pot")}, + {"mushroom_red", "mcl_mushrooms:mushroom_red", S("Red Mushroom Flower Pot")}, + {"sapling", "mcl_core:sapling", S("Oak Sapling Flower Pot")}, + {"acaciasapling", "mcl_core:acaciasapling", S("Acacia Sapling Flower Pot")}, + {"junglesapling", "mcl_core:junglesapling", S("Jungle Sapling Flower Pot")}, + {"darksapling", "mcl_core:darksapling", S("Dark Oak Sapling Flower Pot")}, + {"sprucesapling", "mcl_core:sprucesapling", S("Spruce Sapling Flower Pot")}, + {"birchsapling", "mcl_core:birchsapling", S("Birch Sapling Flower Pot")}, + {"deadbush", "mcl_core:deadbush", S("Dead Bush Flower Pot")}, + {"fern", "mcl_flowers:fern", S("Fern Flower Pot"), {"mcl_flowers_fern_inv.png"}}, } local cubes = { @@ -27,9 +28,9 @@ local cubes = { } minetest.register_node("mcl_flowerpots:flower_pot", { - description = "Flower Pot", - _doc_items_longdesc = "Flower pots are decorational blocks in which flowers and other small plants can be placed.", - _doc_items_usagehelp = "Rightclick an empty flower pot while you wield a plant to place the plant. Flower pots can hold small flowers (not higher than 1 block), saplings, ferns, dead bushes, mushrooms and cacti. Rightclick a potted plant to retrieve the plant.", + description = S("Flower Pot"), + _doc_items_longdesc = S("Flower pots are decorational blocks in which flowers and other small plants can be placed."), + _doc_items_usagehelp = S("Rightclick an empty flower pot while you wield a plant to place the plant. Flower pots can hold small flowers (not higher than 1 block), saplings, ferns, dead bushes, mushrooms and cacti. Rightclick a potted plant to retrieve the plant."), drawtype = "mesh", mesh = "flowerpot.obj", tiles = { From 47c817d75aea45889f46ba0b2f25ac846e6efff0 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Fri, 8 Mar 2019 00:22:28 +0100 Subject: [PATCH 038/737] New translation system, part 8: Items, part 4 --- mods/ITEMS/mcl_flowers/init.lua | 56 ++++++----- mods/ITEMS/mcl_furnaces/init.lua | 10 +- mods/ITEMS/mcl_heads/init.lua | 12 ++- mods/ITEMS/mcl_hoppers/init.lua | 21 ++-- mods/ITEMS/mcl_itemframes/init.lua | 8 +- mods/ITEMS/mcl_jukebox/init.lua | 18 ++-- mods/ITEMS/mcl_maps/init.lua | 14 +-- mods/ITEMS/mcl_mobitems/init.lua | 120 ++++++++++++----------- mods/ITEMS/mcl_mobspawners/init.lua | 2 +- mods/ITEMS/mcl_monster_eggs/depends.txt | 1 - mods/ITEMS/mcl_monster_eggs/init.lua | 4 +- mods/ITEMS/mcl_monster_eggs/intllib.lua | 45 --------- mods/ITEMS/mcl_mushrooms/huge.lua | 16 +-- mods/ITEMS/mcl_mushrooms/small.lua | 20 ++-- mods/ITEMS/mcl_nether/init.lua | 50 +++++----- mods/ITEMS/mcl_nether/lava.lua | 5 +- mods/ITEMS/mcl_ocean/init.lua | 18 ++-- mods/ITEMS/mcl_portals/portal_end.lua | 16 +-- mods/ITEMS/mcl_portals/portal_nether.lua | 12 ++- mods/ITEMS/mcl_potions/init.lua | 40 ++++---- mods/ITEMS/mcl_signs/init.lua | 8 +- mods/ITEMS/mcl_sponges/init.lua | 14 +-- 22 files changed, 248 insertions(+), 262 deletions(-) delete mode 100644 mods/ITEMS/mcl_monster_eggs/intllib.lua diff --git a/mods/ITEMS/mcl_flowers/init.lua b/mods/ITEMS/mcl_flowers/init.lua index ac575e12..8fb8dc80 100644 --- a/mods/ITEMS/mcl_flowers/init.lua +++ b/mods/ITEMS/mcl_flowers/init.lua @@ -1,10 +1,12 @@ +local S = minetest.get_translator("mcl_flowers") + -- Minetest 0.4 mod: default -- See README.txt for licensing and other information. local init = os.clock() -- Simple flower template -local smallflowerlongdesc = "This is a small flower. Small flowers are mainly used for dye production and can also be potted." -local plant_usage_help = "It can only be placed on a block on which it would also survive." +local smallflowerlongdesc = S("This is a small flower. Small flowers are mainly used for dye production and can also be potted.") +local plant_usage_help = S("It can only be placed on a block on which it would also survive.") -- on_place function for flowers local on_place_flower = mcl_util.generate_on_place_plant_function(function(pos, node, itemstack) @@ -62,16 +64,16 @@ local function add_simple_flower(name, desc, image, simple_selection_box) }) end -add_simple_flower("poppy", "Poppy", "mcl_flowers_poppy", { -5/16, -0.5, -5/16, 5/16, 5/16, 5/16 }) -add_simple_flower("dandelion", "Dandelion", "flowers_dandelion_yellow", { -4/16, -0.5, -4/16, 4/16, 3/16, 4/16 }) -add_simple_flower("oxeye_daisy", "Oxeye Daisy", "mcl_flowers_oxeye_daisy", { -4/16, -0.5, -4/16, 4/16, 4/16, 4/16 }) -add_simple_flower("tulip_orange", "Orange Tulip", "flowers_tulip", { -3/16, -0.5, -3/16, 3/16, 5/16, 3/16 }) -add_simple_flower("tulip_pink", "Pink Tulip", "mcl_flowers_tulip_pink", { -3/16, -0.5, -3/16, 3/16, 5/16, 3/16 }) -add_simple_flower("tulip_red", "Red Tulip", "mcl_flowers_tulip_red", { -3/16, -0.5, -3/16, 3/16, 6/16, 3/16 }) -add_simple_flower("tulip_white", "White Tulip", "mcl_flowers_tulip_white", { -3/16, -0.5, -3/16, 3/16, 4/16, 3/16 }) -add_simple_flower("allium", "Allium", "mcl_flowers_allium", { -3/16, -0.5, -3/16, 3/16, 6/16, 3/16 }) -add_simple_flower("azure_bluet", "Azure Bluet", "mcl_flowers_azure_bluet", { -5/16, -0.5, -5/16, 5/16, 3/16, 5/16 }) -add_simple_flower("blue_orchid", "Blue Orchid", "mcl_flowers_blue_orchid", { -5/16, -0.5, -5/16, 5/16, 7/16, 5/16 }) +add_simple_flower("poppy", S("Poppy"), "mcl_flowers_poppy", { -5/16, -0.5, -5/16, 5/16, 5/16, 5/16 }) +add_simple_flower("dandelion", S("Dandelion"), "flowers_dandelion_yellow", { -4/16, -0.5, -4/16, 4/16, 3/16, 4/16 }) +add_simple_flower("oxeye_daisy", S("Oxeye Daisy"), "mcl_flowers_oxeye_daisy", { -4/16, -0.5, -4/16, 4/16, 4/16, 4/16 }) +add_simple_flower("tulip_orange", S("Orange Tulip"), "flowers_tulip", { -3/16, -0.5, -3/16, 3/16, 5/16, 3/16 }) +add_simple_flower("tulip_pink", S("Pink Tulip"), "mcl_flowers_tulip_pink", { -3/16, -0.5, -3/16, 3/16, 5/16, 3/16 }) +add_simple_flower("tulip_red", S("Red Tulip"), "mcl_flowers_tulip_red", { -3/16, -0.5, -3/16, 3/16, 6/16, 3/16 }) +add_simple_flower("tulip_white", S("White Tulip"), "mcl_flowers_tulip_white", { -3/16, -0.5, -3/16, 3/16, 4/16, 3/16 }) +add_simple_flower("allium", S("Allium"), "mcl_flowers_allium", { -3/16, -0.5, -3/16, 3/16, 6/16, 3/16 }) +add_simple_flower("azure_bluet", S("Azure Bluet"), "mcl_flowers_azure_bluet", { -5/16, -0.5, -5/16, 5/16, 3/16, 5/16 }) +add_simple_flower("blue_orchid", S("Blue Orchid"), "mcl_flowers_blue_orchid", { -5/16, -0.5, -5/16, 5/16, 7/16, 5/16 }) local wheat_seed_drop = { @@ -88,9 +90,9 @@ local wheat_seed_drop = { --- Tall Grass --- local def_tallgrass = { - description = "Tall Grass", + description = S("Tall Grass"), drawtype = "plantlike", - _doc_items_longdesc = "Tall grass is a small plant which often occours on the surface of grasslands. It can be harvested for wheat seeds. By using bone meal, tall grass can be turned into double tallgrass which is two blocks high.", + _doc_items_longdesc = S("Tall grass is a small plant which often occours on the surface of grasslands. It can be harvested for wheat seeds. By using bone meal, tall grass can be turned into double tallgrass which is two blocks high."), _doc_items_usagehelp = plant_usage_help, _doc_items_hidden = false, waving = 1, @@ -122,8 +124,8 @@ minetest.register_node("mcl_flowers:tallgrass", def_tallgrass) --- Fern --- -- The fern is very similar to tall grass, so we can copy a lot from it. local def_fern = table.copy(def_tallgrass) -def_fern.description = "Fern" -def_fern._doc_items_longdesc = "Ferns are small plants which occour naturally in grasslands. They can be harvested for wheat seeds. By using bone meal, a fern can be turned into a large fern which is two blocks high." +def_fern.description = S("Fern") +def_fern._doc_items_longdesc = S("Ferns are small plants which occour naturally in grasslands. They can be harvested for wheat seeds. By using bone meal, a fern can be turned into a large fern which is two blocks high.") def_fern.tiles = { "mcl_flowers_fern.png" } def_fern.inventory_image = "mcl_flowers_fern_inv.png" def_fern.wield_image = "mcl_flowers_fern_inv.png" @@ -275,7 +277,7 @@ local function add_large_plant(name, desc, longdesc, bottom_img, top_img, inv_im -- Top minetest.register_node("mcl_flowers:"..name.."_top", { - description = desc.." (Top Part)", + description = desc.." " .. S("(Top Part)"), _doc_items_create_entry = false, drawtype = "plantlike", tiles = { top_img }, @@ -310,18 +312,18 @@ local function add_large_plant(name, desc, longdesc, bottom_img, top_img, inv_im end -add_large_plant("peony", "Peony", "A peony is a large plant which occupies two blocks. It is mainly used in dye protection.", "mcl_flowers_double_plant_paeonia_bottom.png", "mcl_flowers_double_plant_paeonia_top.png", nil, 5/16, 6/16) -add_large_plant("rose_bush", "Rose Bush", "A rose bush is a large plant which occupies two blocks. It is safe to touch it. Rose bushes are mainly used in dye protection.", "mcl_flowers_double_plant_rose_bottom.png", "mcl_flowers_double_plant_rose_top.png", nil, 5/16, 1/16) -add_large_plant("lilac", "Lilac", "A lilac is a large plant which occupies two blocks. It is mainly used in dye production.", "mcl_flowers_double_plant_syringa_bottom.png", "mcl_flowers_double_plant_syringa_top.png", nil, 5/16, 6/16) +add_large_plant("peony", S("Peony"), S("A peony is a large plant which occupies two blocks. It is mainly used in dye protection."), "mcl_flowers_double_plant_paeonia_bottom.png", "mcl_flowers_double_plant_paeonia_top.png", nil, 5/16, 6/16) +add_large_plant("rose_bush", S("Rose Bush"), S("A rose bush is a large plant which occupies two blocks. It is safe to touch it. Rose bushes are mainly used in dye protection."), "mcl_flowers_double_plant_rose_bottom.png", "mcl_flowers_double_plant_rose_top.png", nil, 5/16, 1/16) +add_large_plant("lilac", S("Lilac"), S("A lilac is a large plant which occupies two blocks. It is mainly used in dye production."), "mcl_flowers_double_plant_syringa_bottom.png", "mcl_flowers_double_plant_syringa_top.png", nil, 5/16, 6/16) -- TODO: Make the sunflower face East. Requires a mesh for the top node. -add_large_plant("sunflower", "Sunflower", "A sunflower is a large plant which occupies two blocks. It is mainly used in dye production.", "mcl_flowers_double_plant_sunflower_bottom.png", "mcl_flowers_double_plant_sunflower_top.png^mcl_flowers_double_plant_sunflower_front.png", "mcl_flowers_double_plant_sunflower_front.png", 6/16, 6/16) +add_large_plant("sunflower", S("Sunflower"), S("A sunflower is a large plant which occupies two blocks. It is mainly used in dye production."), "mcl_flowers_double_plant_sunflower_bottom.png", "mcl_flowers_double_plant_sunflower_top.png^mcl_flowers_double_plant_sunflower_front.png", "mcl_flowers_double_plant_sunflower_front.png", 6/16, 6/16) -local longdesc_grass = "Double tallgrass a variant of tall grass and occupies two blocks. It can be harvested for wheat seeds." -local longdesc_fern = "Large fern is a variant of fern and occupies two blocks. It can be harvested for wheat seeds." +local longdesc_grass = S("Double tallgrass a variant of tall grass and occupies two blocks. It can be harvested for wheat seeds.") +local longdesc_fern = S("Large fern is a variant of fern and occupies two blocks. It can be harvested for wheat seeds.") -add_large_plant("double_grass", "Double Tallgrass", longdesc_grass, "mcl_flowers_double_plant_grass_bottom.png", "mcl_flowers_double_plant_grass_top.png", "mcl_flowers_double_plant_grass_inv.png", 6/16, 4/16, wheat_seed_drop, {"mcl_flowers:tallgrass 2"}, false, true) -add_large_plant("double_fern", "Large Fern", longdesc_fern, "mcl_flowers_double_plant_fern_bottom.png", "mcl_flowers_double_plant_fern_top.png", "mcl_flowers_double_plant_fern_inv.png", 5/16, 5/16, wheat_seed_drop, {"mcl_flowers:fern 2"}, false, true) +add_large_plant("double_grass", S("Double Tallgrass"), longdesc_grass, "mcl_flowers_double_plant_grass_bottom.png", "mcl_flowers_double_plant_grass_top.png", "mcl_flowers_double_plant_grass_inv.png", 6/16, 4/16, wheat_seed_drop, {"mcl_flowers:tallgrass 2"}, false, true) +add_large_plant("double_fern", S("Large Fern"), longdesc_fern, "mcl_flowers_double_plant_fern_bottom.png", "mcl_flowers_double_plant_fern_top.png", "mcl_flowers_double_plant_fern_inv.png", 5/16, 5/16, wheat_seed_drop, {"mcl_flowers:fern 2"}, false, true) minetest.register_abm({ label = "Pop out flowers", @@ -348,8 +350,8 @@ minetest.register_abm({ -- Lily Pad minetest.register_node("mcl_flowers:waterlily", { - description = "Lily Pad", - _doc_items_longdesc = "A lily pad is a flat plant block which can be walked on. They can be placed on water sources, ice and frosted ice.", + description = S("Lily Pad"), + _doc_items_longdesc = S("A lily pad is a flat plant block which can be walked on. They can be placed on water sources, ice and frosted ice."), drawtype = "nodebox", paramtype = "light", paramtype2 = "facedir", diff --git a/mods/ITEMS/mcl_furnaces/init.lua b/mods/ITEMS/mcl_furnaces/init.lua index 9a8804fd..781fe4a9 100644 --- a/mods/ITEMS/mcl_furnaces/init.lua +++ b/mods/ITEMS/mcl_furnaces/init.lua @@ -1,4 +1,6 @@ +local S = minetest.get_translator("mcl_furnaces") + -- -- Formspecs -- @@ -292,9 +294,9 @@ if minetest.get_modpath("screwdriver") then end minetest.register_node("mcl_furnaces:furnace", { - description = "Furnace", - _doc_items_longdesc = "Furnaces cook or smelt several items, using a furnace fuel, into something else.", - _doc_items_usagehelp = "Right-click the furnace to view it. Place a furnace fuel in the lower slot and the source material in the upper slot. The furnace will slowly use its fuel to smelt the item. The result will be placed into the output slot at the right side.", + description = S("Furnace"), + _doc_items_longdesc = S("Furnaces cook or smelt several items, using a furnace fuel, into something else."), + _doc_items_usagehelp = S("Right-click the furnace to view it. Place a furnace fuel in the lower slot and the source material in the upper slot. The furnace will slowly use its fuel to smelt the item. The result will be placed into the output slot at the right side."), _doc_items_hidden = false, tiles = { "default_furnace_top.png", "default_furnace_bottom.png", @@ -350,7 +352,7 @@ minetest.register_node("mcl_furnaces:furnace", { }) minetest.register_node("mcl_furnaces:furnace_active", { - description = "Burning Furnace", + description = S("Burning Furnace"), _doc_items_create_entry = false, tiles = { "default_furnace_top.png", "default_furnace_bottom.png", diff --git a/mods/ITEMS/mcl_heads/init.lua b/mods/ITEMS/mcl_heads/init.lua index 180affe2..90114a0f 100644 --- a/mods/ITEMS/mcl_heads/init.lua +++ b/mods/ITEMS/mcl_heads/init.lua @@ -1,3 +1,5 @@ +local S = minetest.get_translator("mcl_heads") + -- Heads system local function addhead(name, texture, desc, longdesc) @@ -48,9 +50,9 @@ local function addhead(name, texture, desc, longdesc) end -- Add heads -addhead("zombie", "mcl_heads_zombie_node.png", "Zombie Head", "A zombie head is a small decorative block which resembles the head of a zombie. It can also be worn as a helmet for fun, but does not offer any protection.") -addhead("creeper", "mcl_heads_creeper_node.png", "Creeper Head", "A creeper head is a small decorative block which resembles the head of a creeper. It can also be worn as a helmet for fun, but does not offer any protection.") +addhead("zombie", "mcl_heads_zombie_node.png", S("Zombie Head"), S("A zombie head is a small decorative block which resembles the head of a zombie. It can also be worn as a helmet for fun, but does not offer any protection.")) +addhead("creeper", "mcl_heads_creeper_node.png", S("Creeper Head"), S("A creeper head is a small decorative block which resembles the head of a creeper. It can also be worn as a helmet for fun, but does not offer any protection.")) -- Original Minecraft name: “Head” -addhead("steve", "mcl_heads_steve_node.png", "Human Head", "A human head is a small decorative block which resembles the head of a human (i.e. a player character). It can also be worn as a helmet for fun, but does not offer any protection.") -addhead("skeleton", "mcl_heads_skeleton_node.png", "Skeleton Skull", "A skeleton skull is a small decorative block which resembles the head of a skeleton. It can also be worn as a helmet for fun, but does not offer any protection.") -addhead("wither_skeleton", "mcl_heads_wither_skeleton_node.png", "Wither Skeleton Skull", "A wither skeleton skull is a small decorative block which resembles the head of a wither skeleton. It can also be worn as a helmet for fun, but does not offer any protection.") +addhead("steve", "mcl_heads_steve_node.png", S("Human Head"), S("A human head is a small decorative block which resembles the head of a human (i.e. a player character). It can also be worn as a helmet for fun, but does not offer any protection.")) +addhead("skeleton", "mcl_heads_skeleton_node.png", S("Skeleton Skull"), S("A skeleton skull is a small decorative block which resembles the head of a skeleton. It can also be worn as a helmet for fun, but does not offer any protection.")) +addhead("wither_skeleton", "mcl_heads_wither_skeleton_node.png", S("Wither Skeleton Skull"), S("A wither skeleton skull is a small decorative block which resembles the head of a wither skeleton. It can also be worn as a helmet for fun, but does not offer any protection.")) diff --git a/mods/ITEMS/mcl_hoppers/init.lua b/mods/ITEMS/mcl_hoppers/init.lua index c7f7b0b9..64588ead 100644 --- a/mods/ITEMS/mcl_hoppers/init.lua +++ b/mods/ITEMS/mcl_hoppers/init.lua @@ -1,5 +1,6 @@ -local chest = minetest.get_content_id("mcl_chests:chest") +local S = minetest.get_translator("mcl_hoppers") +local chest = minetest.get_content_id("mcl_chests:chest") --[[ BEGIN OF NODE DEFINITIONS ]] @@ -121,16 +122,16 @@ local def_hopper = { -- Enabled downwards hopper local def_hopper_enabled = table.copy(def_hopper) -def_hopper_enabled.description = "Hopper" -def_hopper_enabled._doc_items_longdesc = [[Hoppers are containers with 5 inventory slots. They collect dropped items from above, take items from a container above and attempts to put its items it into an adjacent container. Hoppers can go either downwards or sideways. Hoppers interact with chests, droppers, dispensers, shulker boxes, furnaces and hoppers. +def_hopper_enabled.description = S("Hopper") +def_hopper_enabled._doc_items_longdesc = S("Hoppers are containers with 5 inventory slots. They collect dropped items from above, take items from a container above and attempts to put its items it into an adjacent container. Hoppers can go either downwards or sideways. Hoppers interact with chests, droppers, dispensers, shulker boxes, furnaces and hoppers.").."\n\n".. -Hoppers interact with containers the following way: +S([[Hoppers interact with containers the following way: • Furnaces: Hoppers from above will put items into the source slot. Hoppers from below take items from the output slot. They also take items from the fuel slot when they can't be used as a fuel. Sideway hoppers put items into the fuel slot • Ender chests: Hoppers don't interact with ender chests -• Other containers: Hoppers interact with them normally +• Other containers: Hoppers interact with them normally]]).."\n\n".. -Hoppers can be disabled by supplying them with redstone power. Disabled hoppers don't move items.]] -def_hopper_enabled._doc_items_usagehelp = "To place a hopper vertically, place it on the floor or a ceiling. To place it sideways, place it at the side of a block. Remember you can place at usable blocks (such as chests) with sneak + right-click. The hopper will keep its orientation when the blocks around it are changed. To access the hopper's inventory, rightclick it." +S("Hoppers can be disabled by supplying them with redstone power. Disabled hoppers don't move items.") +def_hopper_enabled._doc_items_usagehelp = S("To place a hopper vertically, place it on the floor or a ceiling. To place it sideways, place it at the side of a block. Remember you can place at usable blocks (such as chests) with sneak + right-click. The hopper will keep its orientation when the blocks around it are changed. To access the hopper's inventory, rightclick it.") def_hopper_enabled.on_place = function(itemstack, placer, pointed_thing) local upos = pointed_thing.under local apos = pointed_thing.above @@ -179,7 +180,7 @@ minetest.register_node("mcl_hoppers:hopper", def_hopper_enabled) -- Disabled downwards hopper local def_hopper_disabled = table.copy(def_hopper) -def_hopper_disabled.description = "Disabled Hopper" +def_hopper_disabled.description = S("Disabled Hopper") def_hopper_disabled._doc_items_create_entry = false def_hopper_disabled.groups.not_in_creative_inventory = 1 def_hopper_disabled.drop = "mcl_hoppers:hopper" @@ -304,7 +305,7 @@ local def_hopper_side = { } local def_hopper_side_enabled = table.copy(def_hopper_side) -def_hopper_side_enabled.description = "Side Hopper" +def_hopper_side_enabled.description = S("Side Hopper") def_hopper_side_enabled.mesecons = { effector = { action_on = function(pos, node) @@ -315,7 +316,7 @@ def_hopper_side_enabled.mesecons = { minetest.register_node("mcl_hoppers:hopper_side", def_hopper_side_enabled) local def_hopper_side_disabled = table.copy(def_hopper_side) -def_hopper_side_disabled.description = "Disabled Side Hopper" +def_hopper_side_disabled.description = S("Disabled Side Hopper") def_hopper_side_disabled.mesecons = { effector = { action_off = function(pos, node) diff --git a/mods/ITEMS/mcl_itemframes/init.lua b/mods/ITEMS/mcl_itemframes/init.lua index 104379be..e4e3f5cb 100644 --- a/mods/ITEMS/mcl_itemframes/init.lua +++ b/mods/ITEMS/mcl_itemframes/init.lua @@ -1,3 +1,5 @@ +local S = minetest.get_translator("mcl_itemframes") + minetest.register_entity("mcl_itemframes:item",{ hp_max = 1, visual = "wielditem", @@ -100,9 +102,9 @@ if minetest.get_modpath("screwdriver") then end minetest.register_node("mcl_itemframes:item_frame",{ - description = "Item Frame", - _doc_items_longdesc = "Item frames are decorative blocks in which items can be placed.", - _doc_items_usagehelp = "Hold any item in your hand and right-click the item frame to place the item into the frame. Rightclick the item frame again to retrieve the item.", + description = S("Item Frame"), + _doc_items_longdesc = S("Item frames are decorative blocks in which items can be placed."), + _doc_items_usagehelp = S("Hold any item in your hand and right-click the item frame to place the item into the frame. Rightclick the item frame again to retrieve the item."), drawtype = "mesh", is_ground_content = false, mesh = "mcl_itemframes_itemframe1facedir.obj", diff --git a/mods/ITEMS/mcl_jukebox/init.lua b/mods/ITEMS/mcl_jukebox/init.lua index efa29399..3b3b918b 100644 --- a/mods/ITEMS/mcl_jukebox/init.lua +++ b/mods/ITEMS/mcl_jukebox/init.lua @@ -1,3 +1,5 @@ +local S = minetest.get_translator("mcl_jukebox") + -- Player name-indexed table containing the currently heard track local active_tracks = {} @@ -27,14 +29,14 @@ for r=1, records do local entryname, longdesc, usagehelp if r == 1 then doc = true - entryname = "Music Disc" - longdesc = "A music disc holds a single music track which can be used in a jukebox to play music." - usagehelp = "Rightclick an empty jukebox with the music disc in your hand to play the music. Rightclick the jukebox again to retrieve the music disc. The music can only be heard by you, not by other players." + entryname = S("Music Disc") + longdesc = S("A music disc holds a single music track which can be used in a jukebox to play music.") + usagehelp = S("Rightclick an empty jukebox with the music disc in your hand to play the music. Rightclick the jukebox again to retrieve the music disc. The music can only be heard by you, not by other players.") end minetest.register_craftitem("mcl_jukebox:record_"..r, { description = - core.colorize("#55FFFF", "Music Disc") .. "\n" .. - core.colorize("#989898", recorddata[r][2] .. "—" .. recorddata[r][1]), + core.colorize("#55FFFF", S("Music Disc")) .. "\n" .. + core.colorize("#989898", S("@1—@2", recorddata[r][2], recorddata[r][1])), _doc_items_create_entry = doc, _doc_items_entry_name = entryname, _doc_items_longdesc = longdesc, @@ -123,9 +125,9 @@ end -- Jukebox minetest.register_node("mcl_jukebox:jukebox", { - description = "Jukebox", - _doc_items_longdesc = "Jukeboxes play music when they're supplied with a music disc.", - _doc_items_usagehelp = "Place a music disc into an empty jukebox to insert the music disc and play music. If the jukebox already has a music disc, you will retrieve this music disc first. The music can only be heard by you, not by other players.", + description = S("Jukebox"), + _doc_items_longdesc = S("Jukeboxes play music when they're supplied with a music disc."), + _doc_items_usagehelp = S("Place a music disc into an empty jukebox to insert the music disc and play music. If the jukebox already has a music disc, you will retrieve this music disc first. The music can only be heard by you, not by other players."), tiles = {"mcl_jukebox_top.png", "mcl_jukebox_side.png", "mcl_jukebox_side.png"}, sounds = mcl_sounds.node_sound_wood_defaults(), groups = {handy=1,axey=1, container=7, deco_block=1, material_wood=1}, diff --git a/mods/ITEMS/mcl_maps/init.lua b/mods/ITEMS/mcl_maps/init.lua index 2c7037bf..dbe27022 100644 --- a/mods/ITEMS/mcl_maps/init.lua +++ b/mods/ITEMS/mcl_maps/init.lua @@ -1,3 +1,5 @@ +local S = minetest.get_translator("mcl_maps") + -- Turn empty map into filled map by rightclick local make_filled_map = function(itemstack, placer, pointed_thing) local new_map = ItemStack("mcl_maps:filled_map") @@ -16,9 +18,9 @@ local make_filled_map = function(itemstack, placer, pointed_thing) end minetest.register_craftitem("mcl_maps:empty_map", { - description = "Empty Map", - _doc_items_longdesc = "Empty maps are not useful as maps, but they can be stacked and turned to maps which can be used.", - _doc_items_usagehelp = "Rightclick to start using the map (which can't be stacked anymore).", + description = S("Empty Map"), + _doc_items_longdesc = S("Empty maps are not useful as maps, but they can be stacked and turned to maps which can be used."), + _doc_items_usagehelp = S("Rightclick to start using the map (which can't be stacked anymore)."), inventory_image = "mcl_maps_map_empty.png", groups = { not_in_creative_inventory = 1 }, on_place = make_filled_map, @@ -31,9 +33,9 @@ minetest.register_craftitem("mcl_maps:empty_map", { -- Note: This is not at all like Minecraft right now. Minetest's minimap is pretty overpowered, it -- has a very greatly zoomed-out version and even a radar mode minetest.register_craftitem("mcl_maps:filled_map", { - description = "Map", - _doc_items_longdesc = "Maps show your surroundings as you explore the world. They can even show you the world like a radar. MAGIC!\nNote: Maps are subject to change in future versions of MineClone 2.", - _doc_items_usagehelp = "Hold the map in any of the hotbar slots. This allows you to access the minimap by pressing the minimap key ([F9] by default).\nIn Creative Mode, you don't need this item; the minimap is always available.", + description = S("Map"), + _doc_items_longdesc = S("Maps show your surroundings as you explore the world. They can even show you the world like a radar. MAGIC!\nNote: Maps are subject to change in future versions of MineClone 2."), + _doc_items_usagehelp = S("Hold the map in any of the hotbar slots. This allows you to access the minimap by pressing the minimap key ([F9] by default).\nIn Creative Mode, you don't need this item; the minimap is always available."), groups = { tool = 1 }, inventory_image = "mcl_maps_map_filled.png^(mcl_maps_map_filled_markings.png^[colorize:#000000)", stack_max = 1, diff --git a/mods/ITEMS/mcl_mobitems/init.lua b/mods/ITEMS/mcl_mobitems/init.lua index c070c8a8..27acbb61 100644 --- a/mods/ITEMS/mcl_mobitems/init.lua +++ b/mods/ITEMS/mcl_mobitems/init.lua @@ -1,8 +1,10 @@ -- TODO: Add special status effects for raw flesh +local S = minetest.get_translator("mcl_mobitems") + minetest.register_craftitem("mcl_mobitems:rotten_flesh", { - description = "Rotten Flesh", - _doc_items_longdesc = "Yuck! This piece of flesh clearly has seen better days. If you're really desperate, you can eat it to restore a few hunger points, but there's a 80% chance it causes food poisoning, which increases your hunger for a while.", + description = S("Rotten Flesh"), + _doc_items_longdesc = S("Yuck! This piece of flesh clearly has seen better days. If you're really desperate, you can eat it to restore a few hunger points, but there's a 80% chance it causes food poisoning, which increases your hunger for a while."), inventory_image = "mcl_mobitems_rotten_flesh.png", wield_image = "mcl_mobitems_rotten_flesh.png", on_place = minetest.item_eat(4), @@ -13,8 +15,8 @@ minetest.register_craftitem("mcl_mobitems:rotten_flesh", { }) minetest.register_craftitem("mcl_mobitems:mutton", { - description = "Raw Mutton", - _doc_items_longdesc = "Raw mutton is the flesh from a sheep and can be eaten safely. Cooking it will greatly increase its nutritional value.", + description = S("Raw Mutton"), + _doc_items_longdesc = S("Raw mutton is the flesh from a sheep and can be eaten safely. Cooking it will greatly increase its nutritional value."), inventory_image = "mcl_mobitems_mutton_raw.png", wield_image = "mcl_mobitems_mutton_raw.png", on_place = minetest.item_eat(2), @@ -25,8 +27,8 @@ minetest.register_craftitem("mcl_mobitems:mutton", { }) minetest.register_craftitem("mcl_mobitems:cooked_mutton", { - description = "Cooked Mutton", - _doc_items_longdesc = "Cooked mutton is the cooked flesh from a sheep and is used as food.", + description = S("Cooked Mutton"), + _doc_items_longdesc = S("Cooked mutton is the cooked flesh from a sheep and is used as food."), inventory_image = "mcl_mobitems_mutton_cooked.png", wield_image = "mcl_mobitems_mutton_cooked.png", on_place = minetest.item_eat(6), @@ -37,8 +39,8 @@ minetest.register_craftitem("mcl_mobitems:cooked_mutton", { }) minetest.register_craftitem("mcl_mobitems:beef", { - description = "Raw Beef", - _doc_items_longdesc = "Raw beef is the flesh from cows and can be eaten safely. Cooking it will greatly increase its nutritional value.", + description = S("Raw Beef"), + _doc_items_longdesc = S("Raw beef is the flesh from cows and can be eaten safely. Cooking it will greatly increase its nutritional value."), inventory_image = "mcl_mobitems_beef_raw.png", wield_image = "mcl_mobitems_beef_raw.png", on_place = minetest.item_eat(3), @@ -49,8 +51,8 @@ minetest.register_craftitem("mcl_mobitems:beef", { }) minetest.register_craftitem("mcl_mobitems:cooked_beef", { - description = "Steak", - _doc_items_longdesc = "Steak is cooked beef from cows and can be eaten.", + description = S("Steak"), + _doc_items_longdesc = S("Steak is cooked beef from cows and can be eaten."), inventory_image = "mcl_mobitems_beef_cooked.png", wield_image = "mcl_mobitems_beef_cooked.png", on_place = minetest.item_eat(8), @@ -61,8 +63,8 @@ minetest.register_craftitem("mcl_mobitems:cooked_beef", { }) minetest.register_craftitem("mcl_mobitems:chicken", { - description = "Raw Chicken", - _doc_items_longdesc = "Raw chicken is a food item which is not safe to consume. You can eat it to restore a few hunger points, but there's a 30% chance to suffer from food poisoning, which increases your hunger rate for a while. Cooking raw chicken will make it safe to eat and increases its nutritional value.", + description = S("Raw Chicken"), + _doc_items_longdesc = S("Raw chicken is a food item which is not safe to consume. You can eat it to restore a few hunger points, but there's a 30% chance to suffer from food poisoning, which increases your hunger rate for a while. Cooking raw chicken will make it safe to eat and increases its nutritional value."), inventory_image = "mcl_mobitems_chicken_raw.png", wield_image = "mcl_mobitems_chicken_raw.png", on_place = minetest.item_eat(2), @@ -73,8 +75,8 @@ minetest.register_craftitem("mcl_mobitems:chicken", { }) minetest.register_craftitem("mcl_mobitems:cooked_chicken", { - description = "Cooked Chicken", - _doc_items_longdesc = "A cooked chicken is a healthy food item which can be eaten.", + description = S("Cooked Chicken"), + _doc_items_longdesc = S("A cooked chicken is a healthy food item which can be eaten."), inventory_image = "mcl_mobitems_chicken_cooked.png", wield_image = "mcl_mobitems_chicken_cooked.png", on_place = minetest.item_eat(6), @@ -85,8 +87,8 @@ minetest.register_craftitem("mcl_mobitems:cooked_chicken", { }) minetest.register_craftitem("mcl_mobitems:porkchop", { - description = "Raw Porkchop", - _doc_items_longdesc = "A raw porkchop is the flesh from a pig and can be eaten safely. Cooking it will greatly increase its nutritional value.", + description = S("Raw Porkchop"), + _doc_items_longdesc = S("A raw porkchop is the flesh from a pig and can be eaten safely. Cooking it will greatly increase its nutritional value."), inventory_image = "mcl_mobitems_porkchop_raw.png", wield_image = "mcl_mobitems_porkchop_raw.png", on_place = minetest.item_eat(3), @@ -97,8 +99,8 @@ minetest.register_craftitem("mcl_mobitems:porkchop", { }) minetest.register_craftitem("mcl_mobitems:cooked_porkchop", { - description = "Cooked Porkchop", - _doc_items_longdesc = "Cooked porkchop is the cooked flesh of a pig and is used as food.", + description = S("Cooked Porkchop"), + _doc_items_longdesc = S("Cooked porkchop is the cooked flesh of a pig and is used as food."), inventory_image = "mcl_mobitems_porkchop_cooked.png", wield_image = "mcl_mobitems_porkchop_cooked.png", on_place = minetest.item_eat(8), @@ -109,8 +111,8 @@ minetest.register_craftitem("mcl_mobitems:cooked_porkchop", { }) minetest.register_craftitem("mcl_mobitems:rabbit", { - description = "Raw Rabbit", - _doc_items_longdesc = "Raw rabbit is a food item from a dead rabbit. It can be eaten safely. Cooking it will increase its nutritional value.", + description = S("Raw Rabbit"), + _doc_items_longdesc = S("Raw rabbit is a food item from a dead rabbit. It can be eaten safely. Cooking it will increase its nutritional value."), inventory_image = "mcl_mobitems_rabbit_raw.png", wield_image = "mcl_mobitems_rabbit_raw.png", on_place = minetest.item_eat(3), @@ -121,8 +123,8 @@ minetest.register_craftitem("mcl_mobitems:rabbit", { }) minetest.register_craftitem("mcl_mobitems:cooked_rabbit", { - description = "Cooked Rabbit", - _doc_items_longdesc = "This is a food item which can be eaten.", + description = S("Cooked Rabbit"), + _doc_items_longdesc = S("This is a food item which can be eaten."), inventory_image = "mcl_mobitems_rabbit_cooked.png", wield_image = "mcl_mobitems_rabbit_cooked.png", on_place = minetest.item_eat(5), @@ -143,8 +145,8 @@ end -- TODO: Clear *all* status effects minetest.register_craftitem("mcl_mobitems:milk_bucket", { - description = "Milk", - _doc_items_longdesc = "Milk is very refreshing and can be obtained by using a bucket on a cow. Drinking it will cure all forms of poisoning (in later versions: all status effects), but restores no hunger points.", + description = S("Milk"), + _doc_items_longdesc = S("Milk is very refreshing and can be obtained by using a bucket on a cow. Drinking it will cure all forms of poisoning (in later versions: all status effects), but restores no hunger points."), _doc_items_usagehelp = "Rightclick to drink the milk.", inventory_image = "mcl_mobitems_bucket_milk.png", wield_image = "mcl_mobitems_bucket_milk.png", @@ -156,8 +158,8 @@ minetest.register_craftitem("mcl_mobitems:milk_bucket", { }) minetest.register_craftitem("mcl_mobitems:spider_eye", { - description = "Spider Eye", - _doc_items_longdesc = "Spider eyes are used mainly in crafting. If you're really desperate, you can eat a spider eye, but it will poison you briefly.", + description = S("Spider Eye"), + _doc_items_longdesc = S("Spider eyes are used mainly in crafting. If you're really desperate, you can eat a spider eye, but it will poison you briefly."), inventory_image = "mcl_mobitems_spider_eye.png", wield_image = "mcl_mobitems_spider_eye.png", on_place = minetest.item_eat(2), @@ -168,8 +170,8 @@ minetest.register_craftitem("mcl_mobitems:spider_eye", { }) minetest.register_craftitem("mcl_mobitems:bone", { - description = "Bone", - _doc_items_longdesc = "Bones can be used to tame wolves so they will protect you. They are also useful as a crafting ingredient.", + description = S("Bone"), + _doc_items_longdesc = S("Bones can be used to tame wolves so they will protect you. They are also useful as a crafting ingredient."), _doc_items_usagehelp = "Hold the bone in your hand near wolves to attract them. Rightclick the wolf to give it a bone and tame it. You can then give commands to the tamed wolf by rightclicking it.", inventory_image = "mcl_mobitems_bone.png", stack_max = 64, @@ -177,16 +179,16 @@ minetest.register_craftitem("mcl_mobitems:bone", { }) minetest.register_craftitem("mcl_mobitems:string",{ - description = "String", - _doc_items_longdesc = "Strings are used in crafting.", + description = S("String"), + _doc_items_longdesc = S("Strings are used in crafting."), inventory_image = "mcl_mobitems_string.png", stack_max = 64, groups = { craftitem = 1 }, }) minetest.register_craftitem("mcl_mobitems:blaze_rod", { - description = "Blaze Rod", - _doc_items_longdesc = "This is a crafting component dropped from dead blazes.", + description = S("Blaze Rod"), + _doc_items_longdesc = S("This is a crafting component dropped from dead blazes."), wield_image = "mcl_mobitems_blaze_rod.png", inventory_image = "mcl_mobitems_blaze_rod.png", groups = { craftitem = 1 }, @@ -194,8 +196,8 @@ minetest.register_craftitem("mcl_mobitems:blaze_rod", { }) minetest.register_craftitem("mcl_mobitems:blaze_powder", { - description = "Blaze Powder", - _doc_items_longdesc = "This item is mainly used for crafting.", + description = S("Blaze Powder"), + _doc_items_longdesc = S("This item is mainly used for crafting."), wield_image = "mcl_mobitems_blaze_powder.png", inventory_image = "mcl_mobitems_blaze_powder.png", groups = { craftitem = 1, brewitem = 1 }, @@ -203,8 +205,8 @@ minetest.register_craftitem("mcl_mobitems:blaze_powder", { }) minetest.register_craftitem("mcl_mobitems:magma_cream", { - description = "Magma Cream", - _doc_items_longdesc = "Magma cream is a crafting component.", + description = S("Magma Cream"), + _doc_items_longdesc = S("Magma cream is a crafting component."), wield_image = "mcl_mobitems_magma_cream.png", inventory_image = "mcl_mobitems_magma_cream.png", groups = { craftitem = 1, brewitem = 1 }, @@ -212,8 +214,8 @@ minetest.register_craftitem("mcl_mobitems:magma_cream", { }) minetest.register_craftitem("mcl_mobitems:ghast_tear", { - description = "Ghast Tear", - _doc_items_longdesc = "Place this item in an item frame as decoration.", + description = S("Ghast Tear"), + _doc_items_longdesc = S("Place this item in an item frame as decoration."), wield_image = "mcl_mobitems_ghast_tear.png", inventory_image = "mcl_mobitems_ghast_tear.png", -- TODO: Reveal item when it's useful @@ -222,8 +224,8 @@ minetest.register_craftitem("mcl_mobitems:ghast_tear", { }) minetest.register_craftitem("mcl_mobitems:nether_star", { - description = "Nether Star", - _doc_items_longdesc = "A nether star is dropped when the Wither dies. Place it in an item frame to show the world how hardcore you are! Or just as decoration.", + description = S("Nether Star"), + _doc_items_longdesc = S("A nether star is dropped when the Wither dies. Place it in an item frame to show the world how hardcore you are! Or just as decoration."), wield_image = "mcl_mobitems_nether_star.png", inventory_image = "mcl_mobitems_nether_star.png", -- TODO: Reveal item when it's useful @@ -232,8 +234,8 @@ minetest.register_craftitem("mcl_mobitems:nether_star", { }) minetest.register_craftitem("mcl_mobitems:leather", { - description = "Leather", - _doc_items_longdesc = "Leather is a versatile crafting component.", + description = S("Leather"), + _doc_items_longdesc = S("Leather is a versatile crafting component."), wield_image = "mcl_mobitems_leather.png", inventory_image = "mcl_mobitems_leather.png", groups = { craftitem = 1 }, @@ -241,8 +243,8 @@ minetest.register_craftitem("mcl_mobitems:leather", { }) minetest.register_craftitem("mcl_mobitems:feather", { - description = "Feather", - _doc_items_longdesc = "Feathers are used in crafting and are dropped from chickens.", + description = S("Feather"), + _doc_items_longdesc = S("Feathers are used in crafting and are dropped from chickens."), wield_image = "mcl_mobitems_feather.png", inventory_image = "mcl_mobitems_feather.png", groups = { craftitem = 1 }, @@ -250,8 +252,8 @@ minetest.register_craftitem("mcl_mobitems:feather", { }) minetest.register_craftitem("mcl_mobitems:rabbit_hide", { - description = "Rabbit Hide", - _doc_items_longdesc = "Rabbit hide is used to create leather.", + description = S("Rabbit Hide"), + _doc_items_longdesc = S("Rabbit hide is used to create leather."), wield_image = "mcl_mobitems_rabbit_hide.png", inventory_image = "mcl_mobitems_rabbit_hide.png", groups = { craftitem = 1 }, @@ -259,8 +261,8 @@ minetest.register_craftitem("mcl_mobitems:rabbit_hide", { }) minetest.register_craftitem("mcl_mobitems:rabbit_foot", { - description = "Rabbit's Foot", - _doc_items_longdesc = "Must be your lucky day! Place this item in an item frame for decoration.", + description = S("Rabbit's Foot"), + _doc_items_longdesc = S("Must be your lucky day! Place this item in an item frame for decoration."), wield_image = "mcl_mobitems_rabbit_foot.png", inventory_image = "mcl_mobitems_rabbit_foot.png", -- TODO: Reveal item when it's useful @@ -269,8 +271,8 @@ minetest.register_craftitem("mcl_mobitems:rabbit_foot", { }) minetest.register_craftitem("mcl_mobitems:saddle", { - description = "Saddle", - _doc_items_longdesc = "Saddles can be put on some animals in order to mount them.", + description = S("Saddle"), + _doc_items_longdesc = S("Saddles can be put on some animals in order to mount them."), _doc_items_usagehelp = "Rightclick an animal (with the saddle in your hand) to try put on the saddle. Saddles fit on horses, mules, donkeys and pigs. Horses, mules and donkeys need to be tamed first, otherwise they'll reject the saddle. Saddled animals can be mounted by rightclicking them again.", wield_image = "mcl_mobitems_saddle.png", inventory_image = "mcl_mobitems_saddle.png", @@ -279,8 +281,8 @@ minetest.register_craftitem("mcl_mobitems:saddle", { }) minetest.register_craftitem("mcl_mobitems:rabbit_stew", { - description = "Rabbit Stew", - _doc_items_longdesc = "Rabbit stew is a very nutricious food item.", + description = S("Rabbit Stew"), + _doc_items_longdesc = S("Rabbit stew is a very nutricious food item."), wield_image = "mcl_mobitems_rabbit_stew.png", inventory_image = "mcl_mobitems_rabbit_stew.png", stack_max = 1, @@ -291,21 +293,21 @@ minetest.register_craftitem("mcl_mobitems:rabbit_stew", { }) minetest.register_craftitem("mcl_mobitems:shulker_shell", { - description = "Shulker Shell", - _doc_items_longdesc = "Shulker shells are used in crafting. They are dropped from dead shulkers.", + description = S("Shulker Shell"), + _doc_items_longdesc = S("Shulker shells are used in crafting. They are dropped from dead shulkers."), inventory_image = "mcl_mobitems_shulker_shell.png", groups = { craftitem = 1 }, }) minetest.register_craftitem("mcl_mobitems:slimeball", { - description = "Slimeball", - _doc_items_longdesc = "Slimeballs are used in crafting. They are dropped from slimes.", + description = S("Slimeball"), + _doc_items_longdesc = S("Slimeballs are used in crafting. They are dropped from slimes."), inventory_image = "mcl_mobitems_slimeball.png", groups = { craftitem = 1 }, }) minetest.register_craftitem("mcl_mobitems:gunpowder", { - description = "Gunpowder", + description = S("Gunpowder"), _doc_items_longdesc = doc.sub.items.temp.craftitem, inventory_image = "default_gunpowder.png", stack_max = 64, @@ -313,8 +315,8 @@ minetest.register_craftitem("mcl_mobitems:gunpowder", { }) minetest.register_tool("mcl_mobitems:carrot_on_a_stick", { - description = "Carrot on a Stick", - _doc_items_longdesc = "A carrot on a stick can be used on saddled pigs to ride them.", + description = S("Carrot on a Stick"), + _doc_items_longdesc = S("A carrot on a stick can be used on saddled pigs to ride them."), _doc_items_usagehelp = "Rightclick a saddled pig with the carrot on a stick to mount it. You can now ride it like a horse. Pigs will also walk towards you when you just wield the carrot on a stick.", wield_image = "mcl_mobitems_carrot_on_a_stick.png", inventory_image = "mcl_mobitems_carrot_on_a_stick.png", diff --git a/mods/ITEMS/mcl_mobspawners/init.lua b/mods/ITEMS/mcl_mobspawners/init.lua index 61b72af3..e9c2fc32 100644 --- a/mods/ITEMS/mcl_mobspawners/init.lua +++ b/mods/ITEMS/mcl_mobspawners/init.lua @@ -1,4 +1,4 @@ -local S = mobs.intllib +local S = minetest.get_translator("mcl_mobspawners") mcl_mobspawners = {} diff --git a/mods/ITEMS/mcl_monster_eggs/depends.txt b/mods/ITEMS/mcl_monster_eggs/depends.txt index fde951c9..d867036e 100644 --- a/mods/ITEMS/mcl_monster_eggs/depends.txt +++ b/mods/ITEMS/mcl_monster_eggs/depends.txt @@ -1,3 +1,2 @@ mcl_sounds mobs_mc -intllib? diff --git a/mods/ITEMS/mcl_monster_eggs/init.lua b/mods/ITEMS/mcl_monster_eggs/init.lua index cdacc7fd..e693db00 100644 --- a/mods/ITEMS/mcl_monster_eggs/init.lua +++ b/mods/ITEMS/mcl_monster_eggs/init.lua @@ -1,9 +1,7 @@ -- Monster eggs! -- Blocks which spawn silverfish when destroyed. --- Intllib -local MP = minetest.get_modpath(minetest.get_current_modname()) -local S, NS = dofile(MP .. "/intllib.lua") +local S = minetest.get_translator("mcl_mobspawners") local spawn_silverfish = function(pos, oldnode, oldmetadata, digger) if not minetest.settings:get_bool("creative_mode") then diff --git a/mods/ITEMS/mcl_monster_eggs/intllib.lua b/mods/ITEMS/mcl_monster_eggs/intllib.lua deleted file mode 100644 index 6669d720..00000000 --- a/mods/ITEMS/mcl_monster_eggs/intllib.lua +++ /dev/null @@ -1,45 +0,0 @@ - --- Fallback functions for when `intllib` is not installed. --- Code released under Unlicense . - --- Get the latest version of this file at: --- https://raw.githubusercontent.com/minetest-mods/intllib/master/lib/intllib.lua - -local function format(str, ...) - local args = { ... } - local function repl(escape, open, num, close) - if escape == "" then - local replacement = tostring(args[tonumber(num)]) - if open == "" then - replacement = replacement..close - end - return replacement - else - return "@"..open..num..close - end - end - return (str:gsub("(@?)@(%(?)(%d+)(%)?)", repl)) -end - -local gettext, ngettext -if minetest.get_modpath("intllib") then - if intllib.make_gettext_pair then - -- New method using gettext. - gettext, ngettext = intllib.make_gettext_pair() - else - -- Old method using text files. - gettext = intllib.Getter() - end -end - --- Fill in missing functions. - -gettext = gettext or function(msgid, ...) - return format(msgid, ...) -end - -ngettext = ngettext or function(msgid, msgid_plural, n, ...) - return format(n==1 and msgid or msgid_plural, ...) -end - -return gettext, ngettext diff --git a/mods/ITEMS/mcl_mushrooms/huge.lua b/mods/ITEMS/mcl_mushrooms/huge.lua index a334a638..8355ffcc 100644 --- a/mods/ITEMS/mcl_mushrooms/huge.lua +++ b/mods/ITEMS/mcl_mushrooms/huge.lua @@ -1,3 +1,5 @@ +local S = minetest.get_translator("mcl_mushrooms") + local template = { groups = {handy=1,axey=1, building_block = 1, material_wood = 1 }, sounds = mcl_sounds.node_sound_wood_defaults(), @@ -42,7 +44,7 @@ local register_mushroom = function(color, species_id, template, d_cap, d_stem, d -- Stem texture on all sides local stem_full = table.copy(template) stem_full.description = d_stem_all - stem_full._doc_items_longdesc = "This decorative block is like a huge mushroom stem, but with the stem texture on all sides." + stem_full._doc_items_longdesc = S("This decorative block is like a huge mushroom stem, but with the stem texture on all sides.") stem_full.tiles = { "mcl_mushrooms_mushroom_block_skin_stem.png" } stem_full.groups.huge_mushroom = species_id stem_full.groups.huge_mushroom_stem = 2 @@ -155,14 +157,14 @@ local register_mushroom = function(color, species_id, template, d_cap, d_stem, d end -local longdesc_red = "Huge red mushroom blocks are the cap parts of huge red mushrooms. It consists of a red skin and can have pores on each of its sides." -local longdesc_red_stem = "The stem part of a huge red mushroom." -register_mushroom("red", 1, red, "Huge Red Mushroom Block", "Huge Red Mushroom Stem", "Huge Red Mushroom All-Faces Stem", longdesc_red, longdesc_red_stem) +local longdesc_red = S("Huge red mushroom blocks are the cap parts of huge red mushrooms. It consists of a red skin and can have pores on each of its sides.") +local longdesc_red_stem = S("The stem part of a huge red mushroom.") +register_mushroom("red", 1, red, S("Huge Red Mushroom Block"), S("Huge Red Mushroom Stem"), S("Huge Red Mushroom All-Faces Stem"), longdesc_red, longdesc_red_stem) -local longdesc_brown = "Huge brown mushroom blocks are the cap parts of huge brown mushrooms. It consists of a brown skin and can have pores on each of its sides." -local longdesc_brown_stem = "The stem part of a huge brown mushroom." -register_mushroom("brown", 2, brown, "Huge Brown Mushroom Block", "Huge Brown Mushroom Stem", "Huge Brown Mushroom All-Faces Stem", longdesc_brown, longdesc_brown_stem) +local longdesc_brown = S("Huge brown mushroom blocks are the cap parts of huge brown mushrooms. It consists of a brown skin and can have pores on each of its sides.") +local longdesc_brown_stem = S("The stem part of a huge brown mushroom.") +register_mushroom("brown", 2, brown, S("Huge Brown Mushroom Block"), S("Huge Brown Mushroom Stem"), S("Huge Brown Mushroom All-Faces Stem"), longdesc_brown, longdesc_brown_stem) minetest.register_craft({ type = "fuel", diff --git a/mods/ITEMS/mcl_mushrooms/small.lua b/mods/ITEMS/mcl_mushrooms/small.lua index b12e925b..7b446604 100644 --- a/mods/ITEMS/mcl_mushrooms/small.lua +++ b/mods/ITEMS/mcl_mushrooms/small.lua @@ -1,3 +1,5 @@ +local S = minetest.get_translator("mcl_mushrooms") + local on_place = mcl_util.generate_on_place_plant_function(function(place_pos, place_node) local soil_node = minetest.get_node_or_nil({x=place_pos.x, y=place_pos.y-1, z=place_pos.z}) if not soil_node then return false end @@ -15,16 +17,16 @@ local on_place = mcl_util.generate_on_place_plant_function(function(place_pos, p return ((snn == "mcl_core:podzol" or snn == "mcl_core:podzol_snow" or snn == "mcl_core:mycelium" or snn == "mcl_core:mycelium_snow") or (light_ok and minetest.get_item_group(snn, "solid") == 1 and minetest.get_item_group(snn, "opaque") == 1)) end) -local longdesc_intro_brown = [[Brown mushrooms are fungi which grow and spread in darkness, but are sensitive to light. They are inedible as such, but they can be used to craft food items.]] -local longdesc_intro_red = [[Red mushrooms are fungi which grow and spread in darkness, but are sensitive to light. They are inedible as such, but they can be used to craft food items.]] +local longdesc_intro_brown = S("Brown mushrooms are fungi which grow and spread in darkness, but are sensitive to light. They are inedible as such, but they can be used to craft food items.") +local longdesc_intro_red = S("Red mushrooms are fungi which grow and spread in darkness, but are sensitive to light. They are inedible as such, but they can be used to craft food items.") -local longdesc_append = [[A single mushroom of this species will slowly spread over time towards a random solid opaque block with a light level of 12 or lower in a 3×3×3 cube around the mushroom. It stops spreading when there are 5 or more mushrooms of the same species within an area of 9×3×9 blocks around the mushroom. -Mushrooms will eventually uproot at a light level of 12 or higher. On mycelium or podzol, they survive and spread at any light level.]] +local longdesc_append = S("A single mushroom of this species will slowly spread over time towards a random solid opaque block with a light level of 12 or lower in a 3×3×3 cube around the mushroom. It stops spreading when there are 5 or more mushrooms of the same species within an area of 9×3×9 blocks around the mushroom.").."\n".. +S("Mushrooms will eventually uproot at a light level of 12 or higher. On mycelium or podzol, they survive and spread at any light level.") -local usagehelp = "This mushroom can be placed on mycelium and podzol at any light level. They can also be placed on blocks which are both solid and opaque, as long as the light level at daytime is not higher than 12." +local usagehelp = S("This mushroom can be placed on mycelium and podzol at any light level. They can also be placed on blocks which are both solid and opaque, as long as the light level at daytime is not higher than 12.") minetest.register_node("mcl_mushrooms:mushroom_brown", { - description = "Brown Mushroom", + description = S("Brown Mushroom"), _doc_items_longdesc = longdesc_intro_brown .. "\n\n" .. longdesc_append, _doc_items_usagehelp = usagehelp, drawtype = "plantlike", @@ -47,7 +49,7 @@ minetest.register_node("mcl_mushrooms:mushroom_brown", { }) minetest.register_node("mcl_mushrooms:mushroom_red", { - description = "Red Mushroom", + description = S("Red Mushroom"), _doc_items_longdesc = longdesc_intro_red .. "\n\n" .. longdesc_append, _doc_items_usagehelp = usagehelp, drawtype = "plantlike", @@ -69,8 +71,8 @@ minetest.register_node("mcl_mushrooms:mushroom_red", { }) minetest.register_craftitem("mcl_mushrooms:mushroom_stew", { - description = "Mushroom Stew", - _doc_items_longdesc = "Mushroom stew is a healthy soup which can be consumed to restore some hunger points.", + description = S("Mushroom Stew"), + _doc_items_longdesc = S("Mushroom stew is a healthy soup which can be consumed to restore some hunger points."), inventory_image = "farming_mushroom_stew.png", on_place = minetest.item_eat(6, "mcl_core:bowl"), on_secondary_use = minetest.item_eat(6, "mcl_core:bowl"), diff --git a/mods/ITEMS/mcl_nether/init.lua b/mods/ITEMS/mcl_nether/init.lua index 4fc36a8b..ee158945 100644 --- a/mods/ITEMS/mcl_nether/init.lua +++ b/mods/ITEMS/mcl_nether/init.lua @@ -1,6 +1,8 @@ +local S = minetest.get_translator("mcl_nether") + minetest.register_node("mcl_nether:glowstone", { - description = "Glowstone", - _doc_items_longdesc = "Glowstone is a naturally-glowing block which is home to the Nether.", + description = S("Glowstone"), + _doc_items_longdesc = S("Glowstone is a naturally-glowing block which is home to the Nether."), tiles = {"mcl_nether_glowstone.png"}, is_ground_content = true, stack_max = 64, @@ -22,8 +24,8 @@ minetest.register_node("mcl_nether:glowstone", { }) minetest.register_node("mcl_nether:quartz_ore", { - description = "Nether Quartz Ore", - _doc_items_longdesc = "Nether quartz ore is an ore containing nether quartz. It is commonly found around netherrack in the Nether.", + description = S("Nether Quartz Ore"), + _doc_items_longdesc = S("Nether quartz ore is an ore containing nether quartz. It is commonly found around netherrack in the Nether."), stack_max = 64, tiles = {"mcl_nether_quartz_ore.png"}, is_ground_content = true, @@ -60,8 +62,8 @@ local eternal_on_ignite = function(player, pointed_thing) end minetest.register_node("mcl_nether:netherrack", { - description = "Netherrack", - _doc_items_longdesc = "Netherrack is a stone-like block home to the Nether. Starting a fire on this block will create an eternal fire.", + description = S("Netherrack"), + _doc_items_longdesc = S("Netherrack is a stone-like block home to the Nether. Starting a fire on this block will create an eternal fire."), stack_max = 64, tiles = {"mcl_nether_netherrack.png"}, is_ground_content = true, @@ -76,8 +78,8 @@ minetest.register_node("mcl_nether:netherrack", { }) minetest.register_node("mcl_nether:magma", { - description = "Magma Block", - _doc_items_longdesc = "Magma blocks are hot solid blocks which hurt anyone standing on it, unless they have fire resistance. Starting a fire on this block will create an eternal fire.", + description = S("Magma Block"), + _doc_items_longdesc = S("Magma blocks are hot solid blocks which hurt anyone standing on it, unless they have fire resistance. Starting a fire on this block will create an eternal fire."), stack_max = 64, tiles = {{name="mcl_nether_magma.png", animation={type="vertical_frames", aspect_w=32, aspect_h=32, length=1.5}}}, is_ground_content = true, @@ -102,8 +104,8 @@ minetest.register_node("mcl_nether:magma", { }) minetest.register_node("mcl_nether:soul_sand", { - description = "Soul Sand", - _doc_items_longdesc = "Soul sand is a block from the Nether. One can only slowly walk on soul sand. The slowing effect is amplified when the soul sand is on top of ice, packed ice or a slime block.", + description = S("Soul Sand"), + _doc_items_longdesc = S("Soul sand is a block from the Nether. One can only slowly walk on soul sand. The slowing effect is amplified when the soul sand is on top of ice, packed ice or a slime block."), stack_max = 64, tiles = {"mcl_nether_soul_sand.png"}, is_ground_content = true, @@ -120,7 +122,7 @@ minetest.register_node("mcl_nether:soul_sand", { minetest.register_node("mcl_nether:nether_brick", { -- Original name: Nether Brick - description = "Nether Brick Block", + description = S("Nether Brick Block"), _doc_items_longdesc = doc.sub.items.temp.build, stack_max = 64, tiles = {"mcl_nether_nether_brick.png"}, @@ -133,7 +135,7 @@ minetest.register_node("mcl_nether:nether_brick", { minetest.register_node("mcl_nether:red_nether_brick", { -- Original name: Red Nether Brick - description = "Red Nether Brick Block", + description = S("Red Nether Brick Block"), _doc_items_longdesc = doc.sub.items.temp.build, stack_max = 64, tiles = {"mcl_nether_red_nether_brick.png"}, @@ -146,8 +148,8 @@ minetest.register_node("mcl_nether:red_nether_brick", { minetest.register_node("mcl_nether:nether_wart_block", { - description = "Nether Wart Block", - _doc_items_longdesc = "A nether wart block is a purely decorational block made from nether wart.", + description = S("Nether Wart Block"), + _doc_items_longdesc = S("A nether wart block is a purely decorational block made from nether wart."), stack_max = 64, tiles = {"mcl_nether_nether_wart_block.png"}, is_ground_content = false, @@ -163,7 +165,7 @@ minetest.register_node("mcl_nether:nether_wart_block", { }) minetest.register_node("mcl_nether:quartz_block", { - description = "Block of Quartz", + description = S("Block of Quartz"), _doc_items_longdesc = doc.sub.items.temp.build, stack_max = 64, is_ground_content = false, @@ -175,7 +177,7 @@ minetest.register_node("mcl_nether:quartz_block", { }) minetest.register_node("mcl_nether:quartz_chiseled", { - description = "Chiseled Quartz Block", + description = S("Chiseled Quartz Block"), _doc_items_longdesc = doc.sub.items.temp.build, stack_max = 64, is_ground_content = false, @@ -187,7 +189,7 @@ minetest.register_node("mcl_nether:quartz_chiseled", { }) minetest.register_node("mcl_nether:quartz_pillar", { - description = "Pillar Quartz Block", + description = S("Pillar Quartz Block"), _doc_items_longdesc = doc.sub.items.temp.build, stack_max = 64, paramtype2 = "facedir", @@ -200,7 +202,7 @@ minetest.register_node("mcl_nether:quartz_pillar", { _mcl_hardness = 0.8, }) minetest.register_node("mcl_nether:quartz_smooth", { - description = "Smooth Quartz", + description = S("Smooth Quartz"), _doc_items_longdesc = doc.sub.items.temp.build, stack_max = 64, is_ground_content = false, @@ -212,24 +214,24 @@ minetest.register_node("mcl_nether:quartz_smooth", { }) minetest.register_craftitem("mcl_nether:glowstone_dust", { - description = "Glowstone Dust", - _doc_items_longdesc = "Glowstone dust is the dust which comes out of broken glowstones. It is mainly used in crafting.", + description = S("Glowstone Dust"), + _doc_items_longdesc = S("Glowstone dust is the dust which comes out of broken glowstones. It is mainly used in crafting."), inventory_image = "mcl_nether_glowstone_dust.png", stack_max = 64, groups = { craftitem=1 }, }) minetest.register_craftitem("mcl_nether:quartz", { - description = "Nether Quartz", - _doc_items_longdesc = "Nether quartz is a versatile crafting ingredient.", + description = S("Nether Quartz"), + _doc_items_longdesc = S("Nether quartz is a versatile crafting ingredient."), inventory_image = "mcl_nether_quartz.png", stack_max = 64, groups = { craftitem = 1 }, }) minetest.register_craftitem("mcl_nether:netherbrick", { - description = "Nether Brick", - _doc_items_longdesc = "Nether bricks are the main crafting ingredient for crafting nether brick blocks and nether fences.", + description = S("Nether Brick"), + _doc_items_longdesc = S("Nether bricks are the main crafting ingredient for crafting nether brick blocks and nether fences."), inventory_image = "mcl_nether_netherbrick.png", stack_max = 64, groups = { craftitem = 1 }, diff --git a/mods/ITEMS/mcl_nether/lava.lua b/mods/ITEMS/mcl_nether/lava.lua index 35959d45..ba76b749 100644 --- a/mods/ITEMS/mcl_nether/lava.lua +++ b/mods/ITEMS/mcl_nether/lava.lua @@ -1,11 +1,12 @@ -- Lava in the Nether +local S = minetest.get_translator("mcl_nether") -- TODO: Increase flow speed. This could be done by reducing viscosity, -- but this would also allow players to swim faster in lava. local lava_src_def = table.copy(minetest.registered_nodes["mcl_core:lava_source"]) -lava_src_def.description = "Nether Lava Source" +lava_src_def.description = S("Nether Lava Source") lava_src_def._doc_items_create_entry = false lava_src_def._doc_items_entry_name = nil lava_src_def._doc_items_longdesc = nil @@ -16,7 +17,7 @@ lava_src_def.liquid_alternative_flowing = "mcl_nether:nether_lava_flowing" minetest.register_node("mcl_nether:nether_lava_source", lava_src_def) local lava_flow_def = table.copy(minetest.registered_nodes["mcl_core:lava_flowing"]) -lava_flow_def.description = "Flowing Nether Lava" +lava_flow_def.description = S("Flowing Nether Lava") lava_flow_def._doc_items_create_entry = false lava_flow_def.liquid_range = 7 lava_flow_def.liquid_alternative_flowing = "mcl_nether:nether_lava_flowing" diff --git a/mods/ITEMS/mcl_ocean/init.lua b/mods/ITEMS/mcl_ocean/init.lua index 82b8126a..b84bbeac 100644 --- a/mods/ITEMS/mcl_ocean/init.lua +++ b/mods/ITEMS/mcl_ocean/init.lua @@ -1,8 +1,10 @@ -- Nodes +local S = minetest.get_translator("mcl_ocean") + minetest.register_node("mcl_ocean:sea_lantern", { - description = "Sea Lantern", - _doc_items_longdesc = "Sea lanterns are decorative light sources which look great underwater but can be placed anywhere.", + description = S("Sea Lantern"), + _doc_items_longdesc = S("Sea lanterns are decorative light sources which look great underwater but can be placed anywhere."), paramtype2 = "facedir", is_ground_content = false, stack_max = 64, @@ -23,8 +25,8 @@ minetest.register_node("mcl_ocean:sea_lantern", { }) minetest.register_node("mcl_ocean:prismarine", { - description = "Prismarine", - _doc_items_longdesc = "Prismarine is used as a building block. It slowly changes its color.", + description = S("Prismarine"), + _doc_items_longdesc = S("Prismarine is used as a building block. It slowly changes its color."), stack_max = 64, is_ground_content = false, -- Texture should have 22 frames for smooth transitions. @@ -36,7 +38,7 @@ minetest.register_node("mcl_ocean:prismarine", { }) minetest.register_node("mcl_ocean:prismarine_brick", { - description = "Prismarine Bricks", + description = S("Prismarine Bricks"), _doc_items_longdesc = doc.sub.items.temp.build, stack_max = 64, is_ground_content = false, @@ -48,7 +50,7 @@ minetest.register_node("mcl_ocean:prismarine_brick", { }) minetest.register_node("mcl_ocean:prismarine_dark", { - description = "Dark Prismarine", + description = S("Dark Prismarine"), _doc_items_longdesc = doc.sub.items.temp.build, stack_max = 64, is_ground_content = false, @@ -62,7 +64,7 @@ minetest.register_node("mcl_ocean:prismarine_dark", { -- Craftitems minetest.register_craftitem("mcl_ocean:prismarine_crystals", { - description = "Prismarine Crystals", + description = S("Prismarine Crystals"), _doc_items_longdesc = doc.sub.items.temp.craftitem, inventory_image = "mcl_ocean_prismarine_crystals.png", stack_max = 64, @@ -70,7 +72,7 @@ minetest.register_craftitem("mcl_ocean:prismarine_crystals", { }) minetest.register_craftitem("mcl_ocean:prismarine_shard", { - description = "Prismarine Shard", + description = S("Prismarine Shard"), _doc_items_longdesc = doc.sub.items.temp.craftitem, inventory_image = "mcl_ocean_prismarine_shard.png", stack_max = 64, diff --git a/mods/ITEMS/mcl_portals/portal_end.lua b/mods/ITEMS/mcl_portals/portal_end.lua index bca803dc..8ba08b04 100644 --- a/mods/ITEMS/mcl_portals/portal_end.lua +++ b/mods/ITEMS/mcl_portals/portal_end.lua @@ -1,3 +1,5 @@ +local S = minetest.get_translator("mcl_portals") + -- Parameters local SPAWN_MIN = mcl_vars.mg_end_min+70 local SPAWN_MAX = mcl_vars.mg_end_min+98 @@ -6,9 +8,9 @@ local mg_name = minetest.get_mapgen_setting("mg_name") -- End portal minetest.register_node("mcl_portals:portal_end", { - description = "End Portal", - _doc_items_longdesc = "An End portal teleports creatures and objects to the mysterious End dimension (and back!).", - _doc_items_usagehelp = "Hop into the portal to teleport. Entering an End portal in the Overworld teleports you to a fixed position in the End dimension and creates a 5×5 obsidian platform at your destination. End portals in the End will lead back to your spawn point in the Overworld.", + description = S("End Portal"), + _doc_items_longdesc = S("An End portal teleports creatures and objects to the mysterious End dimension (and back!)."), + _doc_items_usagehelp = S("Hop into the portal to teleport. Entering an End portal in the Overworld teleports you to a fixed position in the End dimension and creates a 5×5 obsidian platform at your destination. End portals in the End will lead back to your spawn point in the Overworld."), tiles = { { name = "mcl_portals_end_portal.png", @@ -295,9 +297,9 @@ if minetest.get_modpath("screwdriver") then end minetest.register_node("mcl_portals:end_portal_frame", { - description = "End Portal Frame", - _doc_items_longdesc = "End portal frames are used in the construction of End portals. Each block has a socket for an eye of ender." .. "\n" .. "NOTE: The End dimension is currently incomplete and boring.", - _doc_items_usagehelp = "To create an End portal, you need 12 end portal frames and 12 eyes of ender. The end portal frames have to be arranged around a horizontal 3×3 area with each block facing inward. Any other arrangement will fail." .. "\n" .. "Place an eye of ender into each block. The end portal appears in the middle after placing the final eye." .. "\n" .. "Once placed, an eye of ender can not be taken back.", + description = S("End Portal Frame"), + _doc_items_longdesc = S("End portal frames are used in the construction of End portals. Each block has a socket for an eye of ender." .. "\n" .. "NOTE: The End dimension is currently incomplete and boring."), + _doc_items_usagehelp = S("To create an End portal, you need 12 end portal frames and 12 eyes of ender. The end portal frames have to be arranged around a horizontal 3×3 area with each block facing inward. Any other arrangement will fail.") .. "\n" .. S("Place an eye of ender into each block. The end portal appears in the middle after placing the final eye." .. "\n" .. "Once placed, an eye of ender can not be taken back."), groups = { creative_breakable = 1, deco_block = 1 }, tiles = { "mcl_portals_endframe_top.png", "mcl_portals_endframe_bottom.png", "mcl_portals_endframe_side.png" }, paramtype2 = "facedir", @@ -319,7 +321,7 @@ minetest.register_node("mcl_portals:end_portal_frame", { }) minetest.register_node("mcl_portals:end_portal_frame_eye", { - description = "End Portal Frame with Eye of Ender", + description = S("End Portal Frame with Eye of Ender"), _doc_items_create_entry = false, groups = { creative_breakable = 1, deco_block = 1, comparator_signal = 15 }, tiles = { "mcl_portals_endframe_top.png^[lowpart:75:mcl_portals_endframe_eye.png", "mcl_portals_endframe_bottom.png", "mcl_portals_endframe_eye.png^mcl_portals_endframe_side.png" }, diff --git a/mods/ITEMS/mcl_portals/portal_nether.lua b/mods/ITEMS/mcl_portals/portal_nether.lua index c2b358ea..7d39c395 100644 --- a/mods/ITEMS/mcl_portals/portal_nether.lua +++ b/mods/ITEMS/mcl_portals/portal_nether.lua @@ -1,3 +1,5 @@ +local S = minetest.get_translator("mcl_portals") + -- Parameters local TCAVE = 0.6 @@ -77,9 +79,9 @@ local destroy_portal = function(pos) end minetest.register_node("mcl_portals:portal", { - description = "Nether Portal", - _doc_items_longdesc = "A Nether portal teleports creatures and objects to the hot and dangerous Nether dimension (and back!). Enter at your own risk!", - _doc_items_usagehelp = "Stand in the portal for a moment to activate the teleportation. Entering a Nether portal for the first time will also create a new portal in the other dimension. If a Nether portal has been built in the Nether, it will lead to the Overworld. A Nether portal is destroyed if the any of the obsidian which surrounds it is destroyed, or if it was caught in an explosion.", + description = S("Nether Portal"), + _doc_items_longdesc = S("A Nether portal teleports creatures and objects to the hot and dangerous Nether dimension (and back!). Enter at your own risk!"), + _doc_items_usagehelp = S("Stand in the portal for a moment to activate the teleportation. Entering a Nether portal for the first time will also create a new portal in the other dimension. If a Nether portal has been built in the Nether, it will lead to the Overworld. A Nether portal is destroyed if the any of the obsidian which surrounds it is destroyed, or if it was caught in an explosion."), tiles = { "blank.png", @@ -481,8 +483,8 @@ minetest.register_abm({ --[[ ITEM OVERRIDES ]] local longdesc = minetest.registered_nodes["mcl_core:obsidian"]._doc_items_longdesc -longdesc = longdesc .. "\n" .. "Obsidian is also used as the frame of Nether portals." -local usagehelp = "To open a Nether portal, place an upright frame of obsidian with a width of 4 blocks and a height of 5 blocks, leaving only air in the center. After placing this frame, light a fire in the obsidian frame. Nether portals only work in the Overworld and the Nether." +longdesc = longdesc .. "\n" .. S("Obsidian is also used as the frame of Nether portals.") +local usagehelp = S("To open a Nether portal, place an upright frame of obsidian with a width of 4 blocks and a height of 5 blocks, leaving only air in the center. After placing this frame, light a fire in the obsidian frame. Nether portals only work in the Overworld and the Nether.") minetest.override_item("mcl_core:obsidian", { _doc_items_longdesc = longdesc, diff --git a/mods/ITEMS/mcl_potions/init.lua b/mods/ITEMS/mcl_potions/init.lua index ea859127..6c51840e 100644 --- a/mods/ITEMS/mcl_potions/init.lua +++ b/mods/ITEMS/mcl_potions/init.lua @@ -1,7 +1,9 @@ -local brewhelp = "Put this item in an item frame for decoration. It's useless otherwise." +local S = minetest.get_translator("mcl_potions") + +local brewhelp = S("Put this item in an item frame for decoration. It's useless otherwise.") minetest.register_craftitem("mcl_potions:fermented_spider_eye", { - description = "Fermented Spider Eye", + description = S("Fermented Spider Eye"), _doc_items_longdesc = brewhelp, wield_image = "mcl_potions_spider_eye_fermented.png", inventory_image = "mcl_potions_spider_eye_fermented.png", @@ -17,9 +19,9 @@ minetest.register_craft({ }) minetest.register_craftitem("mcl_potions:glass_bottle", { - description = "Glass Bottle", - _doc_items_longdesc = "A glass bottle is used as a container for liquids and can be used to collect water directly.", - _doc_items_usagehelp = "To collect water, it on a cauldron with water (which removes a level of water) or any water source (which removes no water).", + description = S("Glass Bottle"), + _doc_items_longdesc = S("A glass bottle is used as a container for liquids and can be used to collect water directly."), + _doc_items_usagehelp = S("To collect water, it on a cauldron with water (which removes a level of water) or any water source (which removes no water)."), inventory_image = "mcl_potions_potion_bottle_empty.png", wield_image = "mcl_potions_potion_bottle_empty.png", groups = {brewitem=1}, @@ -156,9 +158,9 @@ end -- Itemstring of potions is “mcl_potions:potion_” minetest.register_craftitem("mcl_potions:potion_water", { - description = "Water Bottle", - _doc_items_longdesc = "Water bottles can be used to fill cauldrons. Drinking water has no effect.", - _doc_items_usagehelp = "Rightclick to drink. Rightclick a cauldron to pour the water into the cauldron.", + description = S("Water Bottle"), + _doc_items_longdesc = S("Water bottles can be used to fill cauldrons. Drinking water has no effect."), + _doc_items_usagehelp = S("Rightclick to drink. Rightclick a cauldron to pour the water into the cauldron."), stack_max = 1, inventory_image = potion_image("#0000FF"), wield_image = potion_image("#0000FF"), @@ -200,8 +202,8 @@ minetest.register_craftitem("mcl_potions:potion_water", { }) minetest.register_craftitem("mcl_potions:potion_river_water", { - description = "River Water Bottle", - _doc_items_longdesc = "River water bottles can be used to fill cauldrons. Drinking it has no effect.", + description = S("River Water Bottle"), + _doc_items_longdesc = S("River water bottles can be used to fill cauldrons. Drinking it has no effect."), _doc_items_usagehelp = "Rightclick to drink. Rightclick a cauldron to pour the river water into the cauldron.", stack_max = 1, inventory_image = potion_image("#0044FF"), @@ -248,8 +250,8 @@ minetest.register_craftitem("mcl_potions:potion_river_water", { local how_to_drink = "To drink it, wield it, then rightclick." minetest.register_craftitem("mcl_potions:potion_awkward", { - description = "Awkward Potion", - _doc_items_longdesc = "This potion has an awkward taste and is used for brewing more potions. Drinking it has no effect.", + description = S("Awkward Potion"), + _doc_items_longdesc = S("This potion has an awkward taste and is used for brewing more potions. Drinking it has no effect."), _doc_items_usagehelp = how_to_drink, stack_max = 1, inventory_image = potion_image("#0000FF"), @@ -260,8 +262,8 @@ minetest.register_craftitem("mcl_potions:potion_awkward", { on_secondary_use = minetest.item_eat(0, "mcl_potions:glass_bottle"), }) minetest.register_craftitem("mcl_potions:potion_mundane", { - description = "Mundane Potion", - _doc_items_longdesc = "This potion has a clean taste and is used for brewing more potions. Drinking it has no effect.", + description = S("Mundane Potion"), + _doc_items_longdesc = S("This potion has a clean taste and is used for brewing more potions. Drinking it has no effect."), _doc_items_usagehelp = how_to_drink, stack_max = 1, inventory_image = potion_image("#0000FF"), @@ -272,8 +274,8 @@ minetest.register_craftitem("mcl_potions:potion_mundane", { on_secondary_use = minetest.item_eat(0, "mcl_potions:glass_bottle"), }) minetest.register_craftitem("mcl_potions:potion_thick", { - description = "Thick Potion", - _doc_items_longdesc = "This potion has a bitter taste and is used for brewing more potions. Drinking it has no effect.", + description = S("Thick Potion"), + _doc_items_longdesc = S("This potion has a bitter taste and is used for brewing more potions. Drinking it has no effect."), _doc_items_usagehelp = how_to_drink, stack_max = 1, inventory_image = potion_image("#0000FF"), @@ -285,8 +287,8 @@ minetest.register_craftitem("mcl_potions:potion_thick", { }) minetest.register_craftitem("mcl_potions:speckled_melon", { - description = "Glistering Melon", - _doc_items_longdesc = "This shiny melon is full of tiny gold nuggets and would be nice in an item frame. It isn't edible and not useful for anything else.", + description = S("Glistering Melon"), + _doc_items_longdesc = S("This shiny melon is full of tiny gold nuggets and would be nice in an item frame. It isn't edible and not useful for anything else."), stack_max = 64, -- TODO: Reveal item when it's actually useful groups = { brewitem = 1, not_in_creative_inventory = 1, not_in_craft_guide = 1 }, @@ -303,7 +305,7 @@ minetest.register_craft({ }) minetest.register_craftitem("mcl_potions:dragon_breath", { - description = "Dragon's Breath", + description = S("Dragon's Breath"), _doc_items_longdesc = brewhelp, wield_image = "mcl_potions_dragon_breath.png", inventory_image = "mcl_potions_dragon_breath.png", diff --git a/mods/ITEMS/mcl_signs/init.lua b/mods/ITEMS/mcl_signs/init.lua index 67fdf43e..866de83b 100644 --- a/mods/ITEMS/mcl_signs/init.lua +++ b/mods/ITEMS/mcl_signs/init.lua @@ -1,3 +1,5 @@ +local S = minetest.get_translator("mcl_signs") + -- Font: 04.jp.org -- load characters map @@ -249,9 +251,9 @@ if minetest.get_modpath("mcl_sounds") then end minetest.register_node("mcl_signs:wall_sign", { - description = "Sign", - _doc_items_longdesc = "Signs can be written and come in two variants: Wall sign and sign on a sign post. Signs can be placed on the top and the sides of other blocks, but not below them.", - _doc_items_usagehelp = "Place the sign at the side to build a wall sign, place it on top of another block to build a sign with a sign post.\nAfter placing the sign, you can write something on it. You have 4 lines of text with up to 15 characters for each line; anything beyond these limits is lost. The text can not be changed once it has been written; you have to break and place the sign again.", + description = S("Sign"), + _doc_items_longdesc = S("Signs can be written and come in two variants: Wall sign and sign on a sign post. Signs can be placed on the top and the sides of other blocks, but not below them."), + _doc_items_usagehelp = S("Place the sign at the side to build a wall sign, place it on top of another block to build a sign with a sign post.\nAfter placing the sign, you can write something on it. You have 4 lines of text with up to 15 characters for each line; anything beyond these limits is lost. The text can not be changed once it has been written; you have to break and place the sign again."), inventory_image = "default_sign.png", walkable = false, is_ground_content = false, diff --git a/mods/ITEMS/mcl_sponges/init.lua b/mods/ITEMS/mcl_sponges/init.lua index 531e74c9..23ab7116 100644 --- a/mods/ITEMS/mcl_sponges/init.lua +++ b/mods/ITEMS/mcl_sponges/init.lua @@ -1,3 +1,5 @@ +local S = minetest.get_translator("mcl_sponges") + local absorb = function(pos) local change = false -- Count number of absorbed river water vs other nodes @@ -34,8 +36,8 @@ local absorb = function(pos) end minetest.register_node("mcl_sponges:sponge", { - description = "Sponge", - _doc_items_longdesc = "Sponges are blocks which remove water around them when they are placed or come in contact with water, turning it into a wet sponge.", + description = S("Sponge"), + _doc_items_longdesc = S("Sponges are blocks which remove water around them when they are placed or come in contact with water, turning it into a wet sponge."), drawtype = "normal", is_ground_content = false, tiles = {"mcl_sponges_sponge.png"}, @@ -92,8 +94,8 @@ minetest.register_node("mcl_sponges:sponge", { }) minetest.register_node("mcl_sponges:sponge_wet", { - description = "Waterlogged Sponge", - _doc_items_longdesc = "A waterlogged sponge can be dried in the furnace to turn it into (dry) sponge. When there's an empty bucket in the fuel slot of a furnace, the water will pour into the bucket.", + description = S("Waterlogged Sponge"), + _doc_items_longdesc = S("A waterlogged sponge can be dried in the furnace to turn it into (dry) sponge. When there's an empty bucket in the fuel slot of a furnace, the water will pour into the bucket."), drawtype = "normal", is_ground_content = false, tiles = {"mcl_sponges_sponge_wet.png"}, @@ -110,8 +112,8 @@ minetest.register_node("mcl_sponges:sponge_wet", { if minetest.get_modpath("mclx_core") then minetest.register_node("mcl_sponges:sponge_wet_river_water", { - description = "Riverwaterlogged Sponge", - _doc_items_longdesc = "This is a sponge soaking wet with river water. It can be dried in the furnace to turn it into (dry) sponge. When there's an empty bucket in the fuel slot of the furnace, the river water will pour into the bucket." .. "\n" .. "A sponge becomes riverwaterlogged (instead of waterlogged) if it sucks up more river water than (normal) water.", + description = S("Riverwaterlogged Sponge"), + _doc_items_longdesc = S("This is a sponge soaking wet with river water. It can be dried in the furnace to turn it into (dry) sponge. When there's an empty bucket in the fuel slot of the furnace, the river water will pour into the bucket.") .. "\n" .. S("A sponge becomes riverwaterlogged (instead of waterlogged) if it sucks up more river water than (normal) water."), drawtype = "normal", is_ground_content = false, tiles = {"mcl_sponges_sponge_wet_river_water.png"}, From f9b557c2ba4104b04d5954bf04379674bd0114f8 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Fri, 8 Mar 2019 00:46:35 +0100 Subject: [PATCH 039/737] New translation system, part 9: Items, part 5 --- mods/ITEMS/mcl_stairs/api.lua | 12 ++-- mods/ITEMS/mcl_stairs/register.lua | 106 +++++++++++++++-------------- mods/ITEMS/mcl_throwing/init.lua | 16 +++-- mods/ITEMS/mcl_tnt/init.lua | 8 ++- mods/ITEMS/mcl_tools/init.lua | 58 ++++++++-------- mods/ITEMS/mcl_torches/init.lua | 9 +-- mods/ITEMS/mcl_walls/init.lua | 4 +- mods/ITEMS/mcl_walls/register.lua | 30 ++++---- mods/ITEMS/mcl_wool/init.lua | 40 +++++------ mods/ITEMS/mclx_core/init.lua | 10 +-- mods/ITEMS/mclx_fences/init.lua | 6 +- mods/ITEMS/mclx_stairs/init.lua | 33 +++++---- mods/ITEMS/xpanes/init.lua | 41 +++++------ 13 files changed, 199 insertions(+), 174 deletions(-) diff --git a/mods/ITEMS/mcl_stairs/api.lua b/mods/ITEMS/mcl_stairs/api.lua index d90bc845..05912126 100644 --- a/mods/ITEMS/mcl_stairs/api.lua +++ b/mods/ITEMS/mcl_stairs/api.lua @@ -1,3 +1,5 @@ +local S = minetest.get_translator("mcl_stairs") + -- Core mcl_stairs API -- Wrapper around mintest.pointed_thing_to_face_pos. @@ -100,7 +102,7 @@ function mcl_stairs.register_stair(subname, recipeitem, groups, images, descript minetest.register_node(":mcl_stairs:stair_" .. subname, { description = description, - _doc_items_longdesc = "Stairs are useful to reach higher places by walking over them; jumping is not required. Placing stairs in a corner pattern will create corner stairs. Stairs placed on the bottom or at the upper half of the side of a block will be placed upside down.", + _doc_items_longdesc = S("Stairs are useful to reach higher places by walking over them; jumping is not required. Placing stairs in a corner pattern will create corner stairs. Stairs placed on the bottom or at the upper half of the side of a block will be placed upside down."), drawtype = "mesh", mesh = "stairs_stair.obj", tiles = images, @@ -188,13 +190,13 @@ function mcl_stairs.register_slab(subname, recipeitem, groups, images, descripti -- Automatically generate double slab description if not double_description then - double_description = string.format("Double %s", description) + double_description = S("Double @1", description) minetest.log("warning", "[stairs] No explicit description for double slab '"..double_slab.."' added. Using auto-generated description.") end groups.slab = 1 groups.building_block = 1 - local longdesc = "Slabs are half as high as their full block counterparts and occupy either the lower or upper part of a block, depending on how it was placed. Slabs can be easily stepped on without needing to jump. When a slab is placed on another slab of the same type, a double slab is created." + local longdesc = S("Slabs are half as high as their full block counterparts and occupy either the lower or upper part of a block, depending on how it was placed. Slabs can be easily stepped on without needing to jump. When a slab is placed on another slab of the same type, a double slab is created.") local slabdef = { description = description, @@ -258,7 +260,7 @@ function mcl_stairs.register_slab(subname, recipeitem, groups, images, descripti topdef.groups.slab_top = 1 topdef.groups.not_in_creative_inventory = 1 topdef.groups.not_in_craft_guide = 1 - topdef.description = string.format("Upper %s", description) + topdef.description = S("Upper @1", description) topdef._doc_items_create_entry = false topdef._doc_items_longdesc = nil topdef._doc_items_usagehelp = nil @@ -283,7 +285,7 @@ function mcl_stairs.register_slab(subname, recipeitem, groups, images, descripti dgroups.double_slab = 1 minetest.register_node(":"..double_slab, { description = double_description, - _doc_items_longdesc = "Double slabs are full blocks which are created by placing two slabs of the same kind on each other.", + _doc_items_longdesc = S("Double slabs are full blocks which are created by placing two slabs of the same kind on each other."), tiles = images, is_ground_content = false, groups = dgroups, diff --git a/mods/ITEMS/mcl_stairs/register.lua b/mods/ITEMS/mcl_stairs/register.lua index 700852fd..6eadf629 100644 --- a/mods/ITEMS/mcl_stairs/register.lua +++ b/mods/ITEMS/mcl_stairs/register.lua @@ -3,13 +3,15 @@ -- slabs actually take slightly longer to be dug than their stair counterparts. -- Note sure if it is a good idea to preserve this oddity. +local S = minetest.get_translator("mcl_stairs") + local woods = { - { "wood", "default_wood.png", "Oak Wood Stairs", "Oak Wood Slab", "Double Oak Wood Slab" }, - { "junglewood", "default_junglewood.png", "Jungle Wood Stairs", "Jungle Wood Slab", "Double Jungle Wood Slab" }, - { "acaciawood", "default_acacia_wood.png", "Acacia Wood Stairs", "Acacia Wood Slab", "Double Acacia Wood Slab" }, - { "sprucewood", "mcl_core_planks_spruce.png", "Spruce Wood Stairs", "Spruce Wood Slab", "Double Spruce Wood Slab" }, - { "birchwood", "mcl_core_planks_birch.png", "Birch Wood Stairs", "Birch Wood Slab", "Double Birch Wood Slab" }, - { "darkwood", "mcl_core_planks_big_oak.png", "Dark Oak Wood Stairs", "Dark Oak Wood Slab", "Double Dark Oak Wood Slab" }, + { "wood", "default_wood.png", S("Oak Wood Stairs"), S("Oak Wood Slab"), S("Double Oak Wood Slab") }, + { "junglewood", "default_junglewood.png", S("Jungle Wood Stairs"), S("Jungle Wood Slab"), S("Double Jungle Wood Slab") }, + { "acaciawood", "default_acacia_wood.png", S("Acacia Wood Stairs"), S("Acacia Wood Slab"), S("Double Acacia Wood Slab") }, + { "sprucewood", "mcl_core_planks_spruce.png", S("Spruce Wood Stairs"), S("Spruce Wood Slab"), S("Double Spruce Wood Slab") }, + { "birchwood", "mcl_core_planks_birch.png", S("Birch Wood Stairs"), S("Birch Wood Slab"), S("Double Birch Wood Slab") }, + { "darkwood", "mcl_core_planks_big_oak.png", S("Dark Oak Wood Stairs"), S("Dark Oak Wood Slab"), S("Double Dark Oak Wood Slab") }, } for w=1, #woods do @@ -30,131 +32,131 @@ for w=1, #woods do wood[5]) end -mcl_stairs.register_stair_and_slab_simple("stone_rough", "mcl_core:stone", "Stone Stairs", "Stone Slab", "Double Stone Slab") +mcl_stairs.register_stair_and_slab_simple("stone_rough", "mcl_core:stone", S("Stone Stairs"), S("Stone Slab"), S("Double Stone Slab")) mcl_stairs.register_slab("stone", "mcl_core:stone_smooth", {pickaxey=1, material_stone=1}, {"mcl_stairs_stone_slab_top.png", "mcl_stairs_stone_slab_top.png", "mcl_stairs_stone_slab_side.png"}, - "Polished Stone Slab", - mcl_sounds.node_sound_stone_defaults(), 2, "Double Polished Stone Slab") + S("Polished Stone Slab"), + mcl_sounds.node_sound_stone_defaults(), 2, S("Double Polished Stone Slab")) -mcl_stairs.register_stair_and_slab_simple("andesite", "mcl_core:andesite", "Andesite Stairs", "Andesite Slab", "Double Andesite Slab") -mcl_stairs.register_stair_and_slab_simple("granite", "mcl_core:granite", "Granite Stairs", "Granite Slab", "Double Granite Slab") -mcl_stairs.register_stair_and_slab_simple("diorite", "mcl_core:diorite", "Diorite Stairs", "Diorite Slab", "Double Diorite Slab") +mcl_stairs.register_stair_and_slab_simple("andesite", "mcl_core:andesite", S("Andesite Stairs"), S("Andesite Slab"), S("Double Andesite Slab")) +mcl_stairs.register_stair_and_slab_simple("granite", "mcl_core:granite", S("Granite Stairs"), S("Granite Slab"), S("Double Granite Slab")) +mcl_stairs.register_stair_and_slab_simple("diorite", "mcl_core:diorite", S("Diorite Stairs"), S("Diorite Slab"), S("Double Diorite Slab")) -mcl_stairs.register_stair_and_slab_simple("cobble", "mcl_core:cobble", "Cobblestone Stairs", "Cobblestone Slab", "Double Cobblestone Slab") -mcl_stairs.register_stair_and_slab_simple("mossycobble", "mcl_core:mossycobble", "Moss Stone Stairs", "Moss Stone Slab", "Double Moss Stone Slab") +mcl_stairs.register_stair_and_slab_simple("cobble", "mcl_core:cobble", S("Cobblestone Stairs"), S("Cobblestone Slab"), S("Double Cobblestone Slab")) +mcl_stairs.register_stair_and_slab_simple("mossycobble", "mcl_core:mossycobble", S("Moss Stone Stairs"), S("Moss Stone Slab"), S("Double Moss Stone Slab")) -mcl_stairs.register_stair_and_slab_simple("brick_block", "mcl_core:brick_block", "Brick Stairs", "Brick Slab", "Double Brick Slab") +mcl_stairs.register_stair_and_slab_simple("brick_block", "mcl_core:brick_block", S("Brick Stairs"), S("Brick Slab"), S("Double Brick Slab")) mcl_stairs.register_stair("sandstone", "group:sandstone", {pickaxey=1, material_stone=1}, {"mcl_core_sandstone_top.png", "mcl_core_sandstone_bottom.png", "mcl_core_sandstone_normal.png"}, - "Sandstone Stairs", + S("Sandstone Stairs"), mcl_sounds.node_sound_stone_defaults(), 0.8, nil, "mcl_core:sandstone") mcl_stairs.register_slab("sandstone", "group:sandstone", {pickaxey=1, material_stone=1}, {"mcl_core_sandstone_top.png", "mcl_core_sandstone_bottom.png", "mcl_core_sandstone_normal.png"}, - "Sandstone Slab", - mcl_sounds.node_sound_stone_defaults(), 2, "Double Sandstone Slab", "mcl_core:sandstone") -mcl_stairs.register_stair_and_slab_simple("sandstonesmooth2", "mcl_core:sandstonesmooth2", "Smooth Sandstone Stairs", "Smooth Sandstone Slab", "Double Smooth Sandstone Slab") + S("Sandstone Slab"), + mcl_sounds.node_sound_stone_defaults(), 2, S("Double Sandstone Slab"), "mcl_core:sandstone") +mcl_stairs.register_stair_and_slab_simple("sandstonesmooth2", "mcl_core:sandstonesmooth2", S("Smooth Sandstone Stairs"), S("Smooth Sandstone Slab"), S("Double Smooth Sandstone Slab")) mcl_stairs.register_stair("redsandstone", "group:redsandstone", {pickaxey=1, material_stone=1}, {"mcl_core_red_sandstone_top.png", "mcl_core_red_sandstone_bottom.png", "mcl_core_red_sandstone_normal.png"}, - "Red Sandstone Stairs", + S("Red Sandstone Stairs"), mcl_sounds.node_sound_stone_defaults(), 0.8, nil, "mcl_core:redsandstone") mcl_stairs.register_slab("redsandstone", "group:redsandstone", {pickaxey=1, material_stone=1}, {"mcl_core_red_sandstone_top.png", "mcl_core_red_sandstone_bottom.png", "mcl_core_red_sandstone_normal.png"}, - "Red Sandstone Slab", - mcl_sounds.node_sound_stone_defaults(), 2, "Double Red Sandstone Slab", "mcl_core:redsandstone") -mcl_stairs.register_stair_and_slab_simple("redsandstonesmooth2", "mcl_core:redsandstonesmooth2", "Smooth Red Sandstone Stairs", "Smooth Red Sandstone Slab", "Double Smooth Red Sandstone Slab") + S("Red Sandstone Slab"), + mcl_sounds.node_sound_stone_defaults(), 2, S("Double Red Sandstone Slab"), "mcl_core:redsandstone") +mcl_stairs.register_stair_and_slab_simple("redsandstonesmooth2", "mcl_core:redsandstonesmooth2", S("Smooth Red Sandstone Stairs"), S("Smooth Red Sandstone Slab"), S("Double Smooth Red Sandstone Slab")) -- Intentionally not group:stonebrick because of mclx_stairs mcl_stairs.register_stair("stonebrick", "mcl_core:stonebrick", {pickaxey=1, material_stone=1}, {"default_stone_brick.png"}, - "Stone Bricks Stairs", + S("Stone Bricks Stairs"), mcl_sounds.node_sound_stone_defaults(), 1.5, nil, "mcl_core:stonebrick") mcl_stairs.register_slab("stonebrick", "mcl_core:stonebrick", {pickaxey=1, material_stone=1}, {"default_stone_brick.png"}, - "Stone Bricks Slab", - mcl_sounds.node_sound_stone_defaults(), 2, "Double Stone Bricks Slab", "mcl_core:stonebrick") + S("Stone Bricks Slab"), + mcl_sounds.node_sound_stone_defaults(), 2, S("Double Stone Bricks Slab"), "mcl_core:stonebrick") mcl_stairs.register_stair("quartzblock", "group:quartz_block", {pickaxey=1, material_stone=1}, {"mcl_nether_quartz_block_top.png", "mcl_nether_quartz_block_bottom.png", "mcl_nether_quartz_block_side.png"}, - "Quartz Stairs", + S("Quartz Stairs"), mcl_sounds.node_sound_stone_defaults(), 0.8, nil, "mcl_nether:quartz_block") mcl_stairs.register_slab("quartzblock", "group:quartz_block", {pickaxey=1, material_stone=1}, {"mcl_nether_quartz_block_top.png", "mcl_nether_quartz_block_bottom.png", "mcl_nether_quartz_block_side.png"}, - "Quartz Slab", - mcl_sounds.node_sound_stone_defaults(), 2, "Double Quartz Slab", "mcl_nether:quartz_block") + S("Quartz Slab"), + mcl_sounds.node_sound_stone_defaults(), 2, S("Double Quartz Slab"), "mcl_nether:quartz_block") -mcl_stairs.register_stair_and_slab_simple("quartz_smooth", "mcl_nether:quartz_smooth", "Smooth Quartz Stairs", "Smooth Quartz Slab", "Double Smooth Quartz Slab") +mcl_stairs.register_stair_and_slab_simple("quartz_smooth", "mcl_nether:quartz_smooth", S("Smooth Quartz Stairs"), S("Smooth Quartz Slab"), S("Double Smooth Quartz Slab")) mcl_stairs.register_stair_and_slab("nether_brick", "mcl_nether:nether_brick", {pickaxey=1, material_stone=1}, {"mcl_nether_nether_brick.png"}, - "Nether Brick Stairs", - "Nether Brick Slab", + S("Nether Brick Stairs"), + S("Nether Brick Slab"), mcl_sounds.node_sound_stone_defaults(), 2, - "Double Nether Brick Slab") + S("Double Nether Brick Slab")) mcl_stairs.register_stair_and_slab("red_nether_brick", "mcl_nether:red_nether_brick", {pickaxey=1, material_stone=1}, {"mcl_nether_red_nether_brick.png"}, - "Red Nether Brick Stairs", - "Red Nether Brick Slab", + S("Red Nether Brick Stairs"), + S("Red Nether Brick Slab"), mcl_sounds.node_sound_stone_defaults(), 2, - "Double Red Nether Brick Slab") + S("Double Red Nether Brick Slab")) -mcl_stairs.register_stair_and_slab_simple("end_bricks", "mcl_end:end_bricks", "End Stone Brick Stairs", "End Stone Brick Slab", "Double End Stone Brick Slab") +mcl_stairs.register_stair_and_slab_simple("end_bricks", "mcl_end:end_bricks", S("End Stone Brick Stairs"), S("End Stone Brick Slab"), S("Double End Stone Brick Slab")) mcl_stairs.register_stair("purpur_block", "group:purpur_block", {pickaxey=1, material_stone=1}, {"mcl_end_purpur_block.png"}, - "Purpur Stairs", + S("Purpur Stairs"), mcl_sounds.node_sound_stone_defaults(), 1.5) mcl_stairs.register_slab("purpur_block", "group:purpur_block", {pickaxey=1, material_stone=1}, {"mcl_end_purpur_block.png"}, - "Purpur Slab", + S("Purpur Slab"), mcl_sounds.node_sound_stone_defaults(), 2, - "Double Purpur Slab") + S("Double Purpur Slab")) -mcl_stairs.register_stair_and_slab_simple("prismarine", "mcl_ocean:prismarine", "Prismarine Stairs", "Prismarine Slab", "Double Prismarine Slab") +mcl_stairs.register_stair_and_slab_simple("prismarine", "mcl_ocean:prismarine", S("Prismarine Stairs"), S("Prismarine Slab"), S("Double Prismarine Slab")) -mcl_stairs.register_stair_and_slab_simple("prismarine_brick", "mcl_ocean:prismarine_brick", "Prismarine Brick Stairs", "Prismarine Brick Slab", "Double Prismarine Brick Slab") -mcl_stairs.register_stair_and_slab_simple("prismarine_dark", "mcl_ocean:prismarine_dark", "Dark Prismarine Stairs", "Dark Prismarine Slab", "Double Dark Prismarine Slab") +mcl_stairs.register_stair_and_slab_simple("prismarine_brick", "mcl_ocean:prismarine_brick", S("Prismarine Brick Stairs"), S("Prismarine Brick Slab"), S("Double Prismarine Brick Slab")) +mcl_stairs.register_stair_and_slab_simple("prismarine_dark", "mcl_ocean:prismarine_dark", S("Dark Prismarine Stairs"), S("Dark Prismarine Slab"), S("Double Dark Prismarine Slab")) -mcl_stairs.register_slab("andesite_smooth", "mcl_core:andesite_smooth", {pickaxey=1}, {"mcl_core_andesite_smooth.png", "mcl_core_andesite_smooth.png", "mcl_stairs_andesite_smooth_slab.png"}, "Polished Andesite Slab", nil, nil, "Double Polished Andesite Slab") -mcl_stairs.register_stair("andesite_smooth", "mcl_core:andesite_smooth", {pickaxey=1}, {"mcl_stairs_andesite_smooth_slab.png", "mcl_core_andesite_smooth.png", "mcl_core_andesite_smooth.png", "mcl_core_andesite_smooth.png", "mcl_core_andesite_smooth.png", "mcl_stairs_andesite_smooth_slab.png"}, "Polished Andesite Stairs", nil, nil, "woodlike") +mcl_stairs.register_slab("andesite_smooth", "mcl_core:andesite_smooth", {pickaxey=1}, {"mcl_core_andesite_smooth.png", "mcl_core_andesite_smooth.png", "mcl_stairs_andesite_smooth_slab.png"}, S("Polished Andesite Slab"), nil, nil, S("Double Polished Andesite Slab")) +mcl_stairs.register_stair("andesite_smooth", "mcl_core:andesite_smooth", {pickaxey=1}, {"mcl_stairs_andesite_smooth_slab.png", "mcl_core_andesite_smooth.png", "mcl_core_andesite_smooth.png", "mcl_core_andesite_smooth.png", "mcl_core_andesite_smooth.png", "mcl_stairs_andesite_smooth_slab.png"}, S("Polished Andesite Stairs"), nil, nil, "woodlike") -mcl_stairs.register_slab("granite_smooth", "mcl_core:granite_smooth", {pickaxey=1}, {"mcl_core_granite_smooth.png", "mcl_core_granite_smooth.png", "mcl_stairs_granite_smooth_slab.png"}, "Polished Granite Slab", nil, nil, "Double Polished Granite Slab") -mcl_stairs.register_stair("granite_smooth", "mcl_core:granite_smooth", {pickaxey=1}, {"mcl_stairs_granite_smooth_slab.png", "mcl_core_granite_smooth.png", "mcl_core_granite_smooth.png", "mcl_core_granite_smooth.png", "mcl_core_granite_smooth.png", "mcl_stairs_granite_smooth_slab.png"}, "Polished Granite Stairs", nil, nil, "woodlike") +mcl_stairs.register_slab("granite_smooth", "mcl_core:granite_smooth", {pickaxey=1}, {"mcl_core_granite_smooth.png", "mcl_core_granite_smooth.png", "mcl_stairs_granite_smooth_slab.png"}, S("Polished Granite Slab"), nil, nil, S("Double Polished Granite Slab")) +mcl_stairs.register_stair("granite_smooth", "mcl_core:granite_smooth", {pickaxey=1}, {"mcl_stairs_granite_smooth_slab.png", "mcl_core_granite_smooth.png", "mcl_core_granite_smooth.png", "mcl_core_granite_smooth.png", "mcl_core_granite_smooth.png", "mcl_stairs_granite_smooth_slab.png"}, S("Polished Granite Stairs"), nil, nil, "woodlike") -mcl_stairs.register_slab("diorite_smooth", "mcl_core:diorite_smooth", {pickaxey=1}, {"mcl_core_diorite_smooth.png", "mcl_core_diorite_smooth.png", "mcl_stairs_diorite_smooth_slab.png"}, "Polished Diorite Slab", nil, nil, "Double Polished Diorite Slab") -mcl_stairs.register_stair("diorite_smooth", "mcl_core:diorite_smooth", {pickaxey=1}, {"mcl_stairs_diorite_smooth_slab.png", "mcl_core_diorite_smooth.png", "mcl_core_diorite_smooth.png", "mcl_core_diorite_smooth.png", "mcl_core_diorite_smooth.png", "mcl_stairs_diorite_smooth_slab.png"}, "Polished Diorite Stairs", nil, nil, "woodlike") +mcl_stairs.register_slab("diorite_smooth", "mcl_core:diorite_smooth", {pickaxey=1}, {"mcl_core_diorite_smooth.png", "mcl_core_diorite_smooth.png", "mcl_stairs_diorite_smooth_slab.png"}, S("Polished Diorite Slab"), nil, nil, S("Double Polished Diorite Slab")) +mcl_stairs.register_stair("diorite_smooth", "mcl_core:diorite_smooth", {pickaxey=1}, {"mcl_stairs_diorite_smooth_slab.png", "mcl_core_diorite_smooth.png", "mcl_core_diorite_smooth.png", "mcl_core_diorite_smooth.png", "mcl_core_diorite_smooth.png", "mcl_stairs_diorite_smooth_slab.png"}, S("Polished Diorite Stairs"), nil, nil, "woodlike") mcl_stairs.register_stair("stonebrickmossy", "mcl_core:stonebrickmossy", {pickaxey=1}, {"mcl_core_stonebrick_mossy.png"}, - "Mossy Stone Brick Stairs", + S("Mossy Stone Brick Stairs"), mcl_sounds.node_sound_stone_defaults(), 1.5, nil, "mcl_core:stonebrickmossy") mcl_stairs.register_slab("stonebrickmossy", "mcl_core:stonebrickmossy", {pickaxey=1}, {"mcl_core_stonebrick_mossy.png"}, - "Mossy Stone Brick Slab", - mcl_sounds.node_sound_stone_defaults(), 2, "Double Mossy Stone Brick Slab", "mcl_core:stonebrickmossy") + S("Mossy Stone Brick Slab"), + mcl_sounds.node_sound_stone_defaults(), 2, S("Double Mossy Stone Brick Slab"), "mcl_core:stonebrickmossy") diff --git a/mods/ITEMS/mcl_throwing/init.lua b/mods/ITEMS/mcl_throwing/init.lua index f8c90dcf..93e06ff0 100644 --- a/mods/ITEMS/mcl_throwing/init.lua +++ b/mods/ITEMS/mcl_throwing/init.lua @@ -1,5 +1,7 @@ mcl_throwing = {} +local S = minetest.get_translator("mcl_throwing") + -- -- Snowballs and other throwable items -- @@ -289,12 +291,12 @@ minetest.register_entity("mcl_throwing:snowball_entity", snowball_ENTITY) minetest.register_entity("mcl_throwing:egg_entity", egg_ENTITY) minetest.register_entity("mcl_throwing:ender_pearl_entity", pearl_ENTITY) -local how_to_throw = "Hold it in your and and leftclick to throw." +local how_to_throw = S("Hold it in your and and leftclick to throw.") -- Snowball minetest.register_craftitem("mcl_throwing:snowball", { - description = "Snowball", - _doc_items_longdesc = "Snowballs can be thrown or launched from a dispenser for fun. Hitting something with a snowball does nothing.", + description = S("Snowball"), + _doc_items_longdesc = S("Snowballs can be thrown or launched from a dispenser for fun. Hitting something with a snowball does nothing."), _doc_items_usagehelp = how_to_throw, inventory_image = "mcl_throwing_snowball.png", stack_max = 16, @@ -305,8 +307,8 @@ minetest.register_craftitem("mcl_throwing:snowball", { -- Egg minetest.register_craftitem("mcl_throwing:egg", { - description = "Egg", - _doc_items_longdesc = "Eggs can be thrown or launched from a dispenser and breaks on impact. There is a small chance that 1 or even 4 chickens will pop out of the egg when it hits the ground.", + description = S("Egg"), + _doc_items_longdesc = S("Eggs can be thrown or launched from a dispenser and breaks on impact. There is a small chance that 1 or even 4 chickens will pop out of the egg when it hits the ground."), _doc_items_usagehelp = how_to_throw, inventory_image = "mcl_throwing_egg.png", stack_max = 16, @@ -317,8 +319,8 @@ minetest.register_craftitem("mcl_throwing:egg", { -- Ender Pearl minetest.register_craftitem("mcl_throwing:ender_pearl", { - description = "Ender Pearl", - _doc_items_longdesc = "An ender pearl is an item which can be used for teleportation at the cost of health. It can be thrown and teleport the thrower to its impact location when it hits a solid block, a plant or vines. Each teleportation hurts the user by 5 hit points.", + description = S("Ender Pearl"), + _doc_items_longdesc = S("An ender pearl is an item which can be used for teleportation at the cost of health. It can be thrown and teleport the thrower to its impact location when it hits a solid block, a plant or vines. Each teleportation hurts the user by 5 hit points."), _doc_items_usagehelp = how_to_throw, wield_image = "mcl_throwing_ender_pearl.png", inventory_image = "mcl_throwing_ender_pearl.png", diff --git a/mods/ITEMS/mcl_tnt/init.lua b/mods/ITEMS/mcl_tnt/init.lua index 54d252f2..c3bc2d93 100644 --- a/mods/ITEMS/mcl_tnt/init.lua +++ b/mods/ITEMS/mcl_tnt/init.lua @@ -1,3 +1,5 @@ +local S = minetest.get_translator("mcl_tnt") + local mod_death_messages = minetest.get_modpath("mcl_death_messages") local function spawn_tnt(pos, entname) @@ -58,11 +60,11 @@ minetest.register_node("mcl_tnt:tnt", { "default_tnt_side.png", "default_tnt_side.png"}, is_ground_content = false, stack_max = 64, - description = "TNT", + description = S("TNT"), paramtype = "light", sunlight_propagates = true, - _doc_items_longdesc = string.format("An explosive device. When it explodes, it will hurt living beings, destroy blocks around it, throw blocks affected by gravity all over the place and light fires. A single TNT has an explosion radius of %d. With a small chance, blocks may drop as an item (as if being mined) rather than being destroyed. TNT can be ignited by tools, explosions, fire, lava and redstone signals.", TNT_RANGE), - _doc_items_usagehelp = "Place the TNT on the ground and ignite it with one of the methods above. Quickly get in safe distance quickly. The TNT will start to be affected by gravity and explodes in 4 seconds.", + _doc_items_longdesc = S("An explosive device. When it explodes, it will hurt living beings, destroy blocks around it, throw blocks affected by gravity all over the place and light fires. A single TNT has an explosion radius of @1. With a small chance, blocks may drop as an item (as if being mined) rather than being destroyed. TNT can be ignited by tools, explosions, fire, lava and redstone signals.", TNT_RANGE), + _doc_items_usagehelp = S("Place the TNT on the ground and ignite it with one of the methods above. Quickly get in safe distance quickly. The TNT will start to be affected by gravity and explodes in 4 seconds."), groups = { dig_immediate = 3, tnt = 1, enderman_takable=1 }, mesecons = {effector = { action_on = tnt.ignite, diff --git a/mods/ITEMS/mcl_tools/init.lua b/mods/ITEMS/mcl_tools/init.lua index b5f8b303..1a39ff8c 100644 --- a/mods/ITEMS/mcl_tools/init.lua +++ b/mods/ITEMS/mcl_tools/init.lua @@ -1,3 +1,5 @@ +local S = minetest.get_translator("mcl_tools") + -- mods/default/tools.lua -- @@ -35,7 +37,7 @@ else end minetest.register_item(":", { type = "none", - _doc_items_longdesc = "You use your bare hand whenever you are not wielding any item. With your hand you can mine the weakest blocks and deal minor damage by punching. Using the hand is often a last resort, as proper mining tools and weapons are better than the hand. When you are wielding an item which is not a mining tool or a weapon, it will behave as if it were the hand when you start mining or punching. In Creative Mode, the hand is able to break all blocks instantly.", + _doc_items_longdesc = S("You use your bare hand whenever you are not wielding any item. With your hand you can mine the weakest blocks and deal minor damage by punching. Using the hand is often a last resort, as proper mining tools and weapons are better than the hand. When you are wielding an item which is not a mining tool or a weapon, it will behave as if it were the hand when you start mining or punching. In Creative Mode, the hand is able to break all blocks instantly."), wield_image = "wieldhand.png", wield_scale = {x=1.0,y=1.0,z=2.0}, -- According to Minecraft Wiki, the exact range is 3.975. @@ -50,17 +52,17 @@ minetest.register_item(":", { }) -- Help texts -local pickaxe_longdesc = "Pickaxes are mining tools to mine hard blocks, such as stone. A pickaxe can also be used as weapon, but it is rather inefficient." -local axe_longdesc = "An axe is your tool of choice to cut down trees, wood-based blocks and other blocks. Axes deal a lot of damage as well, but they are rather slow." -local sword_longdesc = "Swords are great in melee combat, as they are fast, deal high damage and can endure countless battles. Swords can also be used to cut down a few particular blocks, such as cobwebs." -local shovel_longdesc = "Shovels are tools for digging coarse blocks, such as dirt, sand and gravel. They can also be used to turn grass blocks to grass paths. Shovels can be used as weapons, but they are very weak." -local shovel_use = "To turn a grass block into a grass path, hold the shovel in your hand, then use (rightclick) the top or side of a grass block. This only works when there's air above the grass block." -local shears_longdesc = "Shears are tools to shear sheep, carve pumpkins and to mine a few block types. Shears are a special mining tool and can be used to obtain the original item from a grass, leaves and similar blocks." +local pickaxe_longdesc = S("Pickaxes are mining tools to mine hard blocks, such as stone. A pickaxe can also be used as weapon, but it is rather inefficient.") +local axe_longdesc = S("An axe is your tool of choice to cut down trees, wood-based blocks and other blocks. Axes deal a lot of damage as well, but they are rather slow.") +local sword_longdesc = S("Swords are great in melee combat, as they are fast, deal high damage and can endure countless battles. Swords can also be used to cut down a few particular blocks, such as cobwebs.") +local shovel_longdesc = S("Shovels are tools for digging coarse blocks, such as dirt, sand and gravel. They can also be used to turn grass blocks to grass paths. Shovels can be used as weapons, but they are very weak.") +local shovel_use = S("To turn a grass block into a grass path, hold the shovel in your hand, then use (rightclick) the top or side of a grass block. This only works when there's air above the grass block.") +local shears_longdesc = S("Shears are tools to shear sheep, carve pumpkins and to mine a few block types. Shears are a special mining tool and can be used to obtain the original item from a grass, leaves and similar blocks.") local shears_use = "To shear a sheep and obtain its wool, rightclick it. To carve a face into a pumpkin and obtain 4 pumpkin seeds, rightclick it on one of its sides. Mining works are usual, but the drops are different for a few blocks." -- Picks minetest.register_tool("mcl_tools:pick_wood", { - description = "Wooden Pickaxe", + description = S("Wooden Pickaxe"), _doc_items_longdesc = pickaxe_longdesc, _doc_items_hidden = false, inventory_image = "default_tool_woodpick.png", @@ -78,7 +80,7 @@ minetest.register_tool("mcl_tools:pick_wood", { _repair_material = "group:wood", }) minetest.register_tool("mcl_tools:pick_stone", { - description = "Stone Pickaxe", + description = S("Stone Pickaxe"), _doc_items_longdesc = pickaxe_longdesc, inventory_image = "default_tool_stonepick.png", groups = { tool=1, pickaxe=1 }, @@ -95,7 +97,7 @@ minetest.register_tool("mcl_tools:pick_stone", { _repair_material = "mcl_core:cobble", }) minetest.register_tool("mcl_tools:pick_iron", { - description = "Iron Pickaxe", + description = S("Iron Pickaxe"), _doc_items_longdesc = pickaxe_longdesc, inventory_image = "default_tool_steelpick.png", groups = { tool=1, pickaxe=1 }, @@ -112,7 +114,7 @@ minetest.register_tool("mcl_tools:pick_iron", { _repair_material = "mcl_core:iron_ingot", }) minetest.register_tool("mcl_tools:pick_gold", { - description = "Golden Pickaxe", + description = S("Golden Pickaxe"), _doc_items_longdesc = pickaxe_longdesc, inventory_image = "default_tool_goldpick.png", groups = { tool=1, pickaxe=1 }, @@ -129,7 +131,7 @@ minetest.register_tool("mcl_tools:pick_gold", { _repair_material = "mcl_core:gold_ingot", }) minetest.register_tool("mcl_tools:pick_diamond", { - description = "Diamond Pickaxe", + description = S("Diamond Pickaxe"), _doc_items_longdesc = pickaxe_longdesc, inventory_image = "default_tool_diamondpick.png", groups = { tool=1, pickaxe=1 }, @@ -238,7 +240,7 @@ end -- Shovels minetest.register_tool("mcl_tools:shovel_wood", { - description = "Wooden Shovel", + description = S("Wooden Shovel"), _doc_items_longdesc = shovel_longdesc, _doc_items_usagehelp = shovel_use, _doc_items_hidden = false, @@ -258,7 +260,7 @@ minetest.register_tool("mcl_tools:shovel_wood", { _repair_material = "group:wood", }) minetest.register_tool("mcl_tools:shovel_stone", { - description = "Stone Shovel", + description = S("Stone Shovel"), _doc_items_longdesc = shovel_longdesc, _doc_items_usagehelp = shovel_use, inventory_image = "default_tool_stoneshovel.png", @@ -277,7 +279,7 @@ minetest.register_tool("mcl_tools:shovel_stone", { _repair_material = "mcl_core:cobble", }) minetest.register_tool("mcl_tools:shovel_iron", { - description = "Iron Shovel", + description = S("Iron Shovel"), _doc_items_longdesc = shovel_longdesc, _doc_items_usagehelp = shovel_use, inventory_image = "default_tool_steelshovel.png", @@ -296,7 +298,7 @@ minetest.register_tool("mcl_tools:shovel_iron", { _repair_material = "mcl_core:iron_ingot", }) minetest.register_tool("mcl_tools:shovel_gold", { - description = "Golden Shovel", + description = S("Golden Shovel"), _doc_items_longdesc = shovel_longdesc, _doc_items_usagehelp = shovel_use, inventory_image = "default_tool_goldshovel.png", @@ -315,7 +317,7 @@ minetest.register_tool("mcl_tools:shovel_gold", { _repair_material = "mcl_core:gold_ingot", }) minetest.register_tool("mcl_tools:shovel_diamond", { - description = "Diamond Shovel", + description = S("Diamond Shovel"), _doc_items_longdesc = shovel_longdesc, _doc_items_usagehelp = shovel_use, inventory_image = "default_tool_diamondshovel.png", @@ -336,7 +338,7 @@ minetest.register_tool("mcl_tools:shovel_diamond", { -- Axes minetest.register_tool("mcl_tools:axe_wood", { - description = "Wooden Axe", + description = S("Wooden Axe"), _doc_items_longdesc = axe_longdesc, _doc_items_hidden = false, inventory_image = "default_tool_woodaxe.png", @@ -353,7 +355,7 @@ minetest.register_tool("mcl_tools:axe_wood", { _repair_material = "group:wood", }) minetest.register_tool("mcl_tools:axe_stone", { - description = "Stone Axe", + description = S("Stone Axe"), _doc_items_longdesc = axe_longdesc, inventory_image = "default_tool_stoneaxe.png", groups = { tool=1, axe=1 }, @@ -369,7 +371,7 @@ minetest.register_tool("mcl_tools:axe_stone", { _repair_material = "mcl_core:cobble", }) minetest.register_tool("mcl_tools:axe_iron", { - description = "Iron Axe", + description = S("Iron Axe"), _doc_items_longdesc = axe_longdesc, inventory_image = "default_tool_steelaxe.png", groups = { tool=1, axe=1 }, @@ -386,7 +388,7 @@ minetest.register_tool("mcl_tools:axe_iron", { _repair_material = "mcl_core:iron_ingot", }) minetest.register_tool("mcl_tools:axe_gold", { - description = "Golden Axe", + description = S("Golden Axe"), _doc_items_longdesc = axe_longdesc, inventory_image = "default_tool_goldaxe.png", groups = { tool=1, axe=1 }, @@ -402,7 +404,7 @@ minetest.register_tool("mcl_tools:axe_gold", { _repair_material = "mcl_core:gold_ingot", }) minetest.register_tool("mcl_tools:axe_diamond", { - description = "Diamond Axe", + description = S("Diamond Axe"), _doc_items_longdesc = axe_longdesc, inventory_image = "default_tool_diamondaxe.png", groups = { tool=1, axe=1 }, @@ -420,7 +422,7 @@ minetest.register_tool("mcl_tools:axe_diamond", { -- Swords minetest.register_tool("mcl_tools:sword_wood", { - description = "Wooden Sword", + description = S("Wooden Sword"), _doc_items_longdesc = sword_longdesc, _doc_items_hidden = false, inventory_image = "default_tool_woodsword.png", @@ -438,7 +440,7 @@ minetest.register_tool("mcl_tools:sword_wood", { _repair_material = "group:wood", }) minetest.register_tool("mcl_tools:sword_stone", { - description = "Stone Sword", + description = S("Stone Sword"), _doc_items_longdesc = sword_longdesc, inventory_image = "default_tool_stonesword.png", groups = { weapon=1 }, @@ -455,7 +457,7 @@ minetest.register_tool("mcl_tools:sword_stone", { _repair_material = "mcl_core:cobble", }) minetest.register_tool("mcl_tools:sword_iron", { - description = "Iron Sword", + description = S("Iron Sword"), _doc_items_longdesc = sword_longdesc, inventory_image = "default_tool_steelsword.png", groups = { weapon=1 }, @@ -472,7 +474,7 @@ minetest.register_tool("mcl_tools:sword_iron", { _repair_material = "mcl_core:iron_ingot", }) minetest.register_tool("mcl_tools:sword_gold", { - description = "Golden Sword", + description = S("Golden Sword"), _doc_items_longdesc = sword_longdesc, inventory_image = "default_tool_goldsword.png", groups = { weapon=1 }, @@ -489,7 +491,7 @@ minetest.register_tool("mcl_tools:sword_gold", { _repair_material = "mcl_core:gold_ingot", }) minetest.register_tool("mcl_tools:sword_diamond", { - description = "Diamond Sword", + description = S("Diamond Sword"), _doc_items_longdesc = sword_longdesc, inventory_image = "default_tool_diamondsword.png", groups = { weapon=1 }, @@ -508,7 +510,7 @@ minetest.register_tool("mcl_tools:sword_diamond", { --Shears minetest.register_tool("mcl_tools:shears", { - description = "Shears", + description = S("Shears"), _doc_items_longdesc = shears_longdesc, _doc_items_usagehelp = shears_use, inventory_image = "default_tool_shears.png", diff --git a/mods/ITEMS/mcl_torches/init.lua b/mods/ITEMS/mcl_torches/init.lua index 7a0be478..62a00940 100644 --- a/mods/ITEMS/mcl_torches/init.lua +++ b/mods/ITEMS/mcl_torches/init.lua @@ -1,3 +1,4 @@ +local S = minetest.get_translator("mcl_torches") -- -- 3d torch part @@ -169,13 +170,13 @@ mcl_torches.register_torch = function(substring, description, doc_items_longdesc end mcl_torches.register_torch("torch", - "Torch", - "Torches are light sources which can be placed at the side or on the top of most blocks.", - [[Torches can generally be placed on full solid opaque blocks. The following exceptions apply: + S("Torch"), + S("Torches are light sources which can be placed at the side or on the top of most blocks."), + S([[Torches can generally be placed on full solid opaque blocks. The following exceptions apply: • Glass, fence, wall, hopper: Can only be placed on top • Upside-down slab/stair: Can only be placed on top • Soul sand, mob spawner: Placement possible -• Glowstone and pistons: No placement possible]], +• Glowstone and pistons: No placement possible]]), "default_torch_on_floor.png", "mcl_torches_torch_floor.obj", "mcl_torches_torch_wall.obj", {{ diff --git a/mods/ITEMS/mcl_walls/init.lua b/mods/ITEMS/mcl_walls/init.lua index fb68f167..16222780 100644 --- a/mods/ITEMS/mcl_walls/init.lua +++ b/mods/ITEMS/mcl_walls/init.lua @@ -1,3 +1,5 @@ +local S = minetest.get_translator("mcl_walls") + mcl_walls = {} local function rshift(x, by) @@ -225,7 +227,7 @@ function mcl_walls.register_wall(nodename, description, source, tiles, inventory -- Inventory item minetest.register_node(nodename, { description = description, - _doc_items_longdesc = "A piece of wall. It cannot be jumped over with a simple jump. When multiple of these are placed to next to each other, they will automatically build a nice wall structure.", + _doc_items_longdesc = S("A piece of wall. It cannot be jumped over with a simple jump. When multiple of these are placed to next to each other, they will automatically build a nice wall structure."), paramtype = "light", sunlight_propagates = true, is_ground_content = false, diff --git a/mods/ITEMS/mcl_walls/register.lua b/mods/ITEMS/mcl_walls/register.lua index 5c6df791..363ef55c 100644 --- a/mods/ITEMS/mcl_walls/register.lua +++ b/mods/ITEMS/mcl_walls/register.lua @@ -1,14 +1,16 @@ -mcl_walls.register_wall("mcl_walls:cobble", "Cobblestone Wall", "mcl_core:cobble") -mcl_walls.register_wall("mcl_walls:mossycobble", "Mossy Cobblestone Wall", "mcl_core:mossycobble") -mcl_walls.register_wall("mcl_walls:andesite", "Andesite Wall", "mcl_core:andesite") -mcl_walls.register_wall("mcl_walls:granite", "Granite Wall", "mcl_core:granite") -mcl_walls.register_wall("mcl_walls:diorite", "Diorite Wall", "mcl_core:diorite") -mcl_walls.register_wall("mcl_walls:brick", "Brick Wall", "mcl_core:brick_block") -mcl_walls.register_wall("mcl_walls:sandstone", "Sandstone Wall", "mcl_core:sandstone") -mcl_walls.register_wall("mcl_walls:redsandstone", "Red Sandstone Wall", "mcl_core:redsandstone") -mcl_walls.register_wall("mcl_walls:stonebrick", "Stone Brick Wall", "mcl_core:stonebrick") -mcl_walls.register_wall("mcl_walls:stonebrickmossy", "Mossy Stone Brick Wall", "mcl_core:stonebrickmossy") -mcl_walls.register_wall("mcl_walls:prismarine", "Prismarine Wall", "mcl_ocean:prismarine") -mcl_walls.register_wall("mcl_walls:endbricks", "End Stone Brick Wall", "mcl_end:end_bricks") -mcl_walls.register_wall("mcl_walls:netherbrick", "Nether Brick Wall", "mcl_nether:nether_brick") -mcl_walls.register_wall("mcl_walls:rednetherbrick", "Red Nether Brick Wall", "mcl_nether:red_nether_brick") +local S = minetest.get_translator("mcl_walls") + +mcl_walls.register_wall("mcl_walls:cobble", S("Cobblestone Wall"), "mcl_core:cobble") +mcl_walls.register_wall("mcl_walls:mossycobble", S("Mossy Cobblestone Wall"), "mcl_core:mossycobble") +mcl_walls.register_wall("mcl_walls:andesite", S("Andesite Wall"), "mcl_core:andesite") +mcl_walls.register_wall("mcl_walls:granite", S("Granite Wall"), "mcl_core:granite") +mcl_walls.register_wall("mcl_walls:diorite", S("Diorite Wall"), "mcl_core:diorite") +mcl_walls.register_wall("mcl_walls:brick", S("Brick Wall"), "mcl_core:brick_block") +mcl_walls.register_wall("mcl_walls:sandstone", S("Sandstone Wall"), "mcl_core:sandstone") +mcl_walls.register_wall("mcl_walls:redsandstone", S("Red Sandstone Wall"), "mcl_core:redsandstone") +mcl_walls.register_wall("mcl_walls:stonebrick", S("Stone Brick Wall"), "mcl_core:stonebrick") +mcl_walls.register_wall("mcl_walls:stonebrickmossy", S("Mossy Stone Brick Wall"), "mcl_core:stonebrickmossy") +mcl_walls.register_wall("mcl_walls:prismarine", S("Prismarine Wall"), "mcl_ocean:prismarine") +mcl_walls.register_wall("mcl_walls:endbricks", S("End Stone Brick Wall"), "mcl_end:end_bricks") +mcl_walls.register_wall("mcl_walls:netherbrick", S("Nether Brick Wall"), "mcl_nether:nether_brick") +mcl_walls.register_wall("mcl_walls:rednetherbrick", S("Red Nether Brick Wall"), "mcl_nether:red_nether_brick") diff --git a/mods/ITEMS/mcl_wool/init.lua b/mods/ITEMS/mcl_wool/init.lua index 14e7d204..99e7344f 100644 --- a/mods/ITEMS/mcl_wool/init.lua +++ b/mods/ITEMS/mcl_wool/init.lua @@ -1,3 +1,5 @@ +local S = minetest.get_translator("mcl_wool") + -- minetest/wool/init.lua -- Backwards compatibility with jordach's 16-color wool mod @@ -9,23 +11,23 @@ local wool = {} -- colors, and then some recipes using more specific colors for a few non-base -- colors available. When crafting, the last recipes will be checked first. wool.dyes = { - -- name, texture, wool desc., carpet desc., dye, color_group - {"white", "wool_white", "White Wool", "White Carpet", nil, "basecolor_white"}, - {"grey", "wool_dark_grey", "Grey Wool", "Grey Carpet", "dark_grey", "unicolor_darkgrey"}, - {"silver", "wool_grey", "Light Grey Wool", "Light Grey Carpet", "grey", "basecolor_grey"}, - {"black", "wool_black", "Black Wool", "Black Carpet", "black", "basecolor_black"}, - {"red", "wool_red", "Red Wool", "Red Carpet", "red", "basecolor_red"}, - {"yellow", "wool_yellow", "Yellow Wool", "Yellow Carpet", "yellow", "basecolor_yellow"}, - {"green", "wool_dark_green", "Green Wool", "Green Carpet", "dark_green", "unicolor_dark_green"}, - {"cyan", "wool_cyan", "Cyan Wool", "Cyan Carpet", "cyan", "basecolor_cyan"}, - {"blue", "wool_blue", "Blue Wool", "Blue Carpet", "blue", "basecolor_blue"}, - {"magenta", "wool_magenta", "Magenta Wool", "Magenta Carpet", "magenta", "basecolor_magenta"}, - {"orange", "wool_orange", "Orange Wool", "Orange Carpet", "orange", "excolor_orange"}, - {"purple", "wool_violet", "Purple Wool", "Purple Carpet", "violet", "excolor_violet"}, - {"brown", "wool_brown", "Brown Wool", "Brown Carpet", "brown", "unicolor_dark_orange"}, - {"pink", "wool_pink", "Pink Wool", "Pink Carpet", "pink", "unicolor_light_red"}, - {"lime", "mcl_wool_lime", "Lime Wool", "Lime Carpet", "green", "basecolor_green"}, - {"light_blue", "mcl_wool_light_blue", "Light Blue Wool", "Light Blue Carpet", "lightblue", "unicolor_light_blue"}, + -- name, texture, wool desc., carpet desc., dye, color_group + {"white", "wool_white", S("White Wool"), S("White Carpet"), nil, "basecolor_white"}, + {"grey", "wool_dark_grey", S("Grey Wool"), S("Grey Carpet"), "dark_grey", "unicolor_darkgrey"}, + {"silver", "wool_grey", S("Light Grey Wool"), S("Light Grey Carpet"), "grey", "basecolor_grey"}, + {"black", "wool_black", S("Black Wool"), S("Black Carpet"), "black", "basecolor_black"}, + {"red", "wool_red", S("Red Wool"), S("Red Carpet"), "red", "basecolor_red"}, + {"yellow", "wool_yellow", S("Yellow Wool"), S("Yellow Carpet"), "yellow", "basecolor_yellow"}, + {"green", "wool_dark_green", S("Green Wool"), S("Green Carpet"), "dark_green", "unicolor_dark_green"}, + {"cyan", "wool_cyan", S("Cyan Wool"), S("Cyan Carpet"), "cyan", "basecolor_cyan"}, + {"blue", "wool_blue", S("Blue Wool"), S("Blue Carpet"), "blue", "basecolor_blue"}, + {"magenta", "wool_magenta", S("Magenta Wool"), S("Magenta Carpet"), "magenta", "basecolor_magenta"}, + {"orange", "wool_orange", S("Orange Wool"), S("Orange Carpet"), "orange", "excolor_orange"}, + {"purple", "wool_violet", S("Purple Wool"), S("Purple Carpet"), "violet", "excolor_violet"}, + {"brown", "wool_brown", S("Brown Wool"), S("Brown Carpet"), "brown", "unicolor_dark_orange"}, + {"pink", "wool_pink", S("Pink Wool"), S("Pink Carpet"), "pink", "unicolor_light_red"}, + {"lime", "mcl_wool_lime", S("Lime Wool"), S("Lime Carpet"), "green", "basecolor_green"}, + {"light_blue", "mcl_wool_light_blue", S("Light Blue Wool"), S("Light Blue Carpet"), "lightblue", "unicolor_light_blue"}, } for _, row in ipairs(wool.dyes) do @@ -38,7 +40,7 @@ for _, row in ipairs(wool.dyes) do -- Node Definition minetest.register_node("mcl_wool:"..name, { description = desc_wool, - _doc_items_longdesc = "Wool is a decorational block which comes in many different colors.", + _doc_items_longdesc = S("Wool is a decorational block which comes in many different colors."), stack_max = 64, is_ground_content = false, tiles = {texture..".png"}, @@ -49,7 +51,7 @@ for _, row in ipairs(wool.dyes) do }) minetest.register_node("mcl_wool:"..name.."_carpet", { description = desc_carpet, - _doc_items_longdesc = "Carpets are thin floor covers which come in many different colors.", + _doc_items_longdesc = S("Carpets are thin floor covers which come in many different colors."), walkable = false, -- See is_ground_content = false, tiles = {texture..".png"}, diff --git a/mods/ITEMS/mclx_core/init.lua b/mods/ITEMS/mclx_core/init.lua index a90159f7..004c351d 100644 --- a/mods/ITEMS/mclx_core/init.lua +++ b/mods/ITEMS/mclx_core/init.lua @@ -1,13 +1,15 @@ +local S = minetest.get_translator("mclx_core") + -- Liquids: River Water local source = table.copy(minetest.registered_nodes["mcl_core:water_source"]) -source.description = "River Water Source" +source.description = S("River Water Source") source.liquid_range = 2 source.liquid_alternative_flowing = "mclx_core:river_water_flowing" source.liquid_alternative_source = "mclx_core:river_water_source" source.liquid_renewable = false -source._doc_items_longdesc = "River water has the same properties as water, but has a reduced flowing distance and is not renewable." -source._doc_items_entry_name = "River Water" +source._doc_items_longdesc = S("River water has the same properties as water, but has a reduced flowing distance and is not renewable.") +source._doc_items_entry_name = S("River Water") -- Auto-expose entry only in valleys mapgen source._doc_items_hidden = minetest.get_mapgen_setting("mg_name") ~= "valleys" source.post_effect_color = {a=192, r=0x2c, g=0x88, b=0x8c} @@ -24,7 +26,7 @@ source.special_tiles = { } local flowing = table.copy(minetest.registered_nodes["mcl_core:water_flowing"]) -flowing.description = "Flowing River Water" +flowing.description = S("Flowing River Water") flowing.liquid_range = 2 flowing.liquid_alternative_flowing = "mclx_core:river_water_flowing" flowing.liquid_alternative_source = "mclx_core:river_water_source" diff --git a/mods/ITEMS/mclx_fences/init.lua b/mods/ITEMS/mclx_fences/init.lua index 60f0c299..08c3d91a 100644 --- a/mods/ITEMS/mclx_fences/init.lua +++ b/mods/ITEMS/mclx_fences/init.lua @@ -1,8 +1,10 @@ +local S = minetest.get_translator("mclx_fences") + -- Red Nether Brick Fence mcl_fences.register_fence_and_fence_gate( "red_nether_brick_fence", - "Red Nether Brick Fence", "Red Nether Brick Fence Gate", + S("Red Nether Brick Fence"), S("Red Nether Brick Fence Gate"), "mcl_fences_fence_red_nether_brick.png", {pickaxey=1, deco_block=1, fence_nether_brick=1}, minetest.registered_nodes["mcl_nether:red_nether_brick"]._mcl_hardness, @@ -13,7 +15,7 @@ mcl_fences.register_fence_and_fence_gate( mcl_fences.register_fence_gate( "nether_brick_fence", - "Nether Brick Fence Gate", + S("Nether Brick Fence Gate"), "mcl_fences_fence_gate_nether_brick.png", {pickaxey=1, deco_block=1, fence_nether_brick=1}, minetest.registered_nodes["mcl_nether:nether_brick"]._mcl_hardness, diff --git a/mods/ITEMS/mclx_stairs/init.lua b/mods/ITEMS/mclx_stairs/init.lua index 29f45f2b..9bd64d59 100644 --- a/mods/ITEMS/mclx_stairs/init.lua +++ b/mods/ITEMS/mclx_stairs/init.lua @@ -1,31 +1,34 @@ -mcl_stairs.register_stair_and_slab_simple("tree_bark", "mcl_core:tree_bark", "Oak Bark Stairs", "Oak Bark Slab", "Double Oak Bark Slab", "woodlike") -mcl_stairs.register_stair_and_slab_simple("acaciatree_bark", "mcl_core:acaciatree_bark", "Acacia Bark Stairs", "Acacia Bark Slab", "Double Acacia Bark Slab", "woodlike") -mcl_stairs.register_stair_and_slab_simple("sprucetree_bark", "mcl_core:sprucetree_bark", "Spruce Bark Stairs", "Spruce Bark Slab", "Double Spruce Bark Slab", "woodlike") -mcl_stairs.register_stair_and_slab_simple("birchtree_bark", "mcl_core:birchtree_bark", "Birch Bark Stairs", "Birch Bark Slab", "Double Birch Bark Slab", "woodlike") -mcl_stairs.register_stair_and_slab_simple("jungletree_bark", "mcl_core:jungletree_bark", "Jungle Bark Stairs", "Jungle Bark Slab", "Double Jungle Bark Slab", "woodlike") -mcl_stairs.register_stair_and_slab_simple("darktree_bark", "mcl_core:darktree_bark", "Dark Oak Bark Stairs", "Dark Oak Bark Slab", "Double Dark Oak Bark Slab", "woodlike") +local S = minetest.get_translator("mclx_stairs") -mcl_stairs.register_slab("lapisblock", "mcl_core:lapisblock", {pickaxey=3}, {"mcl_core_lapis_block.png", "mcl_core_lapis_block.png", "mcl_stairs_lapis_block_slab.png"}, "Lapis Lazuli Slab", nil, nil, "Double Lapis Lazuli Slab") -mcl_stairs.register_stair("lapisblock", "mcl_core:lapisblock", {pickaxey=3}, {"mcl_stairs_lapis_block_slab.png", "mcl_core_lapis_block.png", "mcl_core_lapis_block.png", "mcl_core_lapis_block.png", "mcl_core_lapis_block.png", "mcl_stairs_lapis_block_slab.png"}, "Lapis Lazuli Stairs", nil, nil, "woodlike") +mcl_stairs.register_stair_and_slab_simple("tree_bark", "mcl_core:tree_bark", S("Oak Bark Stairs"), S("Oak Bark Slab"), S("Double Oak Bark Slab"), "woodlike") +mcl_stairs.register_stair_and_slab_simple("acaciatree_bark", "mcl_core:acaciatree_bark", S("Acacia Bark Stairs"), S("Acacia Bark Slab"), S("Double Acacia Bark Slab"), "woodlike") +mcl_stairs.register_stair_and_slab_simple("sprucetree_bark", "mcl_core:sprucetree_bark", S("Spruce Bark Stairs"), S("Spruce Bark Slab"), S("Double Spruce Bark Slab"), "woodlike") +mcl_stairs.register_stair_and_slab_simple("birchtree_bark", "mcl_core:birchtree_bark", S("Birch Bark Stairs"), S("Birch Bark Slab"), S("Double Birch Bark Slab"), "woodlike") +mcl_stairs.register_stair_and_slab_simple("jungletree_bark", "mcl_core:jungletree_bark", S("Jungle Bark Stairs"), S("Jungle Bark Slab"), S("Double Jungle Bark Slab"), "woodlike") +mcl_stairs.register_stair_and_slab_simple("darktree_bark", "mcl_core:darktree_bark", S("Dark Oak Bark Stairs"), S("Dark Oak Bark Slab"), S("Double Dark Oak Bark Slab"), "woodlike") -mcl_stairs.register_slab("goldblock", "mcl_core:goldblock", {pickaxey=4}, {"default_gold_block.png", "default_gold_block.png", "mcl_stairs_gold_block_slab.png"}, "Slab of Gold", nil, nil, "Double Slab of Gold") -mcl_stairs.register_stair("goldblock", "mcl_core:goldblock", {pickaxey=4}, {"mcl_stairs_gold_block_slab.png", "default_gold_block.png", "default_gold_block.png", "default_gold_block.png", "default_gold_block.png", "mcl_stairs_gold_block_slab.png"}, "Stairs of Gold", nil, nil, "woodlike") +mcl_stairs.register_slab("lapisblock", "mcl_core:lapisblock", {pickaxey=3}, {"mcl_core_lapis_block.png", "mcl_core_lapis_block.png", "mcl_stairs_lapis_block_slab.png"}, S("Lapis Lazuli Slab"), nil, nil, S("Double Lapis Lazuli Slab")) +mcl_stairs.register_stair("lapisblock", "mcl_core:lapisblock", {pickaxey=3}, {"mcl_stairs_lapis_block_slab.png", "mcl_core_lapis_block.png", "mcl_core_lapis_block.png", "mcl_core_lapis_block.png", "mcl_core_lapis_block.png", "mcl_stairs_lapis_block_slab.png"}, S("Lapis Lazuli Stairs"), nil, nil, "woodlike") -mcl_stairs.register_slab("ironblock", "mcl_core:ironblock", {pickaxey=2}, {"default_steel_block.png", "default_steel_block.png", "mcl_stairs_iron_block_slab.png"}, "Slab of Iron", nil, nil, "Double Slab of Iron") -mcl_stairs.register_stair("ironblock", "mcl_core:ironblock", {pickaxey=2}, {"mcl_stairs_iron_block_slab.png", "default_steel_block.png", "default_steel_block.png", "default_steel_block.png", "default_steel_block.png", "mcl_stairs_iron_block_slab.png"}, "Stairs of Iron", nil, nil, "woodlike") +mcl_stairs.register_slab("goldblock", "mcl_core:goldblock", {pickaxey=4}, {"default_gold_block.png", "default_gold_block.png", "mcl_stairs_gold_block_slab.png"}, S("Slab of Gold"), nil, nil, S("Double Slab of Gold")) +mcl_stairs.register_stair("goldblock", "mcl_core:goldblock", {pickaxey=4}, {"mcl_stairs_gold_block_slab.png", "default_gold_block.png", "default_gold_block.png", "default_gold_block.png", "default_gold_block.png", "mcl_stairs_gold_block_slab.png"}, S("Stairs of Gold"), nil, nil, "woodlike") + +mcl_stairs.register_slab("ironblock", "mcl_core:ironblock", {pickaxey=2}, {"default_steel_block.png", "default_steel_block.png", "mcl_stairs_iron_block_slab.png"}, S("Slab of Iron"), nil, nil, S("Double Slab of Iron")) +mcl_stairs.register_stair("ironblock", "mcl_core:ironblock", {pickaxey=2}, {"mcl_stairs_iron_block_slab.png", "default_steel_block.png", "default_steel_block.png", "default_steel_block.png", "default_steel_block.png", "mcl_stairs_iron_block_slab.png"}, S("Stairs of Iron"), nil, nil, "woodlike") mcl_stairs.register_stair("stonebrickcracked", "mcl_core:stonebrickcracked", {pickaxey=1}, {"mcl_core_stonebrick_cracked.png"}, - "Cracked Stone Brick Stairs", + S("Cracked Stone Brick Stairs"), mcl_sounds.node_sound_stone_defaults(), 1.5, nil, "mcl_core:stonebrickcracked") mcl_stairs.register_slab("stonebrickcracked", "mcl_core:stonebrickcracked", {pickaxey=1}, {"mcl_core_stonebrick_cracked.png"}, - "Cracked Stone Brick Slab", - mcl_sounds.node_sound_stone_defaults(), 2, "Double Cracked Stone Brick Slab", "mcl_core:stonebrickcracked") + S("Cracked Stone Brick Slab"), + mcl_sounds.node_sound_stone_defaults(), 2, S("Double Cracked Stone Brick Slab"), "mcl_core:stonebrickcracked") +-- TODO: Localize local block = {} block.dyes = { {"white", "White", "white"}, diff --git a/mods/ITEMS/xpanes/init.lua b/mods/ITEMS/xpanes/init.lua index 1b540ee6..e5e72b3e 100644 --- a/mods/ITEMS/xpanes/init.lua +++ b/mods/ITEMS/xpanes/init.lua @@ -1,3 +1,4 @@ +local S = minetest.get_translator("xpanes") local function is_pane(pos) return minetest.get_item_group(minetest.get_node(pos).name, "pane") > 0 @@ -178,7 +179,7 @@ local pane = function(description, node, append) end xpanes.register_pane("pane"..append, { description = description, - _doc_items_longdesc = "Glass panes are thin layers of glass which neatly connect to their neighbors as you build them.", + _doc_items_longdesc = S("Glass panes are thin layers of glass which neatly connect to their neighbors as you build them."), textures = {texture1, texture1, "xpanes_top_glass"..append..".png"}, use_texture_alpha = true, inventory_image = texture1, @@ -197,8 +198,8 @@ end -- Iron Bars xpanes.register_pane("bar", { - description = "Iron Bars", - _doc_items_longdesc = "Iron bars neatly connect to their neighbors as you build them.", + description = S("Iron Bars"), + _doc_items_longdesc = S("Iron bars neatly connect to their neighbors as you build them."), textures = {"xpanes_pane_iron.png","xpanes_pane_iron.png","xpanes_top_iron.png"}, inventory_image = "xpanes_pane_iron.png", wield_image = "xpanes_pane_iron.png", @@ -213,22 +214,22 @@ xpanes.register_pane("bar", { }) -- Glass Pane -pane("Glass Pane", "mcl_core:glass", "_natural") -- triggers special case +pane(S("Glass Pane"), "mcl_core:glass", "_natural") -- triggers special case -- Stained Glass Pane -pane("Red Stained Glass Pane", "mcl_core:glass_red", "_red") -pane("Green Stained Glass Pane", "mcl_core:glass_green", "_green") -pane("Blue Stained Glass Pane", "mcl_core:glass_blue", "_blue") -pane("Light Blue Stained Glass Pane", "mcl_core:glass_light_blue", "_light_blue") -pane("Black Stained Glass Pane", "mcl_core:glass_black", "_black") -pane("White Stained Glass Pane", "mcl_core:glass_white", "_white") -pane("Yellow Stained Glass Pane", "mcl_core:glass_yellow", "_yellow") -pane("Brown Stained Glass Pane", "mcl_core:glass_brown", "_brown") -pane("Orange Stained Glass Pane", "mcl_core:glass_orange", "_orange") -pane("Pink Stained Glass Pane", "mcl_core:glass_pink", "_pink") -pane("Grey Stained Glass Pane", "mcl_core:glass_gray", "_gray") -pane("Lime Stained Glass Pane", "mcl_core:glass_lime", "_lime") -pane("Light Grey Stained Glass Pane", "mcl_core:glass_silver", "_silver") -pane("Magenta Stained Glass Pane", "mcl_core:glass_magenta", "_magenta") -pane("Purple Stained Glass Pane", "mcl_core:glass_purple", "_purple") -pane("Cyan Stained Glass Pane", "mcl_core:glass_cyan", "_cyan") +pane(S("Red Stained Glass Pane"), "mcl_core:glass_red", "_red") +pane(S("Green Stained Glass Pane"), "mcl_core:glass_green", "_green") +pane(S("Blue Stained Glass Pane"), "mcl_core:glass_blue", "_blue") +pane(S("Light Blue Stained Glass Pane"), "mcl_core:glass_light_blue", "_light_blue") +pane(S("Black Stained Glass Pane"), "mcl_core:glass_black", "_black") +pane(S("White Stained Glass Pane"), "mcl_core:glass_white", "_white") +pane(S("Yellow Stained Glass Pane"), "mcl_core:glass_yellow", "_yellow") +pane(S("Brown Stained Glass Pane"), "mcl_core:glass_brown", "_brown") +pane(S("Orange Stained Glass Pane"), "mcl_core:glass_orange", "_orange") +pane(S("Pink Stained Glass Pane"), "mcl_core:glass_pink", "_pink") +pane(S("Grey Stained Glass Pane"), "mcl_core:glass_gray", "_gray") +pane(S("Lime Stained Glass Pane"), "mcl_core:glass_lime", "_lime") +pane(S("Light Grey Stained Glass Pane"), "mcl_core:glass_silver", "_silver") +pane(S("Magenta Stained Glass Pane"), "mcl_core:glass_magenta", "_magenta") +pane(S("Purple Stained Glass Pane"), "mcl_core:glass_purple", "_purple") +pane(S("Cyan Stained Glass Pane"), "mcl_core:glass_cyan", "_cyan") From 44fcf6eb3460a3c99226f317c3e683ecf2b6f94f Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Fri, 8 Mar 2019 00:51:45 +0100 Subject: [PATCH 040/737] New translation system, part 10: Armor --- .../ITEMS/minetest-3d_armor/3d_armor/init.lua | 46 ++++++++++--------- .../minetest-3d_armor/3d_armor_stand/init.lua | 8 ++-- 2 files changed, 29 insertions(+), 25 deletions(-) diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor/init.lua b/mods/ITEMS/minetest-3d_armor/3d_armor/init.lua index acd63327..ee4af5b5 100644 --- a/mods/ITEMS/minetest-3d_armor/3d_armor/init.lua +++ b/mods/ITEMS/minetest-3d_armor/3d_armor/init.lua @@ -1,12 +1,14 @@ +local S = minetest.get_translator("3d_armor") + dofile(minetest.get_modpath(minetest.get_current_modname()).."/armor.lua") -- Regisiter Head Armor -local longdesc = "This is a piece of equippable armor which reduces the amount of damage you receive." -local usage = "To equip it, put it on the corresponding armor slot in your inventory menu." +local longdesc = S("This is a piece of equippable armor which reduces the amount of damage you receive.") +local usage = S("To equip it, put it on the corresponding armor slot in your inventory menu.") minetest.register_tool("3d_armor:helmet_leather", { - description = "Leather Cap", + description = S("Leather Cap"), _doc_items_longdesc = longdesc, _doc_items_usagehelp = usage, inventory_image = "3d_armor_inv_helmet_leather.png", @@ -16,7 +18,7 @@ minetest.register_tool("3d_armor:helmet_leather", { }) minetest.register_tool("3d_armor:helmet_iron", { - description = "Iron Helmet", + description = S("Iron Helmet"), _doc_items_longdesc = longdesc, _doc_items_usagehelp = usage, inventory_image = "3d_armor_inv_helmet_iron.png", @@ -26,7 +28,7 @@ minetest.register_tool("3d_armor:helmet_iron", { }) minetest.register_tool("3d_armor:helmet_gold", { - description = "Golden Helmet", + description = S("Golden Helmet"), _doc_items_longdesc = longdesc, _doc_items_usagehelp = usage, inventory_image = "3d_armor_inv_helmet_gold.png", @@ -36,7 +38,7 @@ minetest.register_tool("3d_armor:helmet_gold", { }) minetest.register_tool("3d_armor:helmet_diamond",{ - description = "Diamond Helmet", + description = S("Diamond Helmet"), _doc_items_longdesc = longdesc, _doc_items_usagehelp = usage, inventory_image = "3d_armor_inv_helmet_diamond.png", @@ -46,7 +48,7 @@ minetest.register_tool("3d_armor:helmet_diamond",{ }) minetest.register_tool("3d_armor:helmet_chain", { - description = "Chain Helmet", + description = S("Chain Helmet"), _doc_items_longdesc = longdesc, _doc_items_usagehelp = usage, inventory_image = "3d_armor_inv_helmet_chain.png", @@ -58,7 +60,7 @@ minetest.register_tool("3d_armor:helmet_chain", { -- Regisiter Torso Armor minetest.register_tool("3d_armor:chestplate_leather", { - description = "Leather Tunic", + description = S("Leather Tunic"), _doc_items_longdesc = longdesc, _doc_items_usagehelp = usage, inventory_image = "3d_armor_inv_chestplate_leather.png", @@ -68,7 +70,7 @@ minetest.register_tool("3d_armor:chestplate_leather", { }) minetest.register_tool("3d_armor:chestplate_iron", { - description = "Iron Chestplate", + description = S("Iron Chestplate"), _doc_items_longdesc = longdesc, _doc_items_usagehelp = usage, inventory_image = "3d_armor_inv_chestplate_iron.png", @@ -78,7 +80,7 @@ minetest.register_tool("3d_armor:chestplate_iron", { }) minetest.register_tool("3d_armor:chestplate_gold", { - description = "Golden Chestplate", + description = S("Golden Chestplate"), _doc_items_longdesc = longdesc, _doc_items_usagehelp = usage, inventory_image = "3d_armor_inv_chestplate_gold.png", @@ -88,7 +90,7 @@ minetest.register_tool("3d_armor:chestplate_gold", { }) minetest.register_tool("3d_armor:chestplate_diamond",{ - description = "Diamond Chestplate", + description = S("Diamond Chestplate"), _doc_items_longdesc = longdesc, _doc_items_usagehelp = usage, inventory_image = "3d_armor_inv_chestplate_diamond.png", @@ -98,7 +100,7 @@ minetest.register_tool("3d_armor:chestplate_diamond",{ }) minetest.register_tool("3d_armor:chestplate_chain", { - description = "Chain Chestplate", + description = S("Chain Chestplate"), _doc_items_longdesc = longdesc, _doc_items_usagehelp = usage, inventory_image = "3d_armor_inv_chestplate_chain.png", @@ -110,7 +112,7 @@ minetest.register_tool("3d_armor:chestplate_chain", { -- Regisiter Leg Armor minetest.register_tool("3d_armor:leggings_leather", { - description = "Leather Pants", + description = S("Leather Pants"), _doc_items_longdesc = longdesc, _doc_items_usagehelp = usage, inventory_image = "3d_armor_inv_leggings_leather.png", @@ -120,7 +122,7 @@ minetest.register_tool("3d_armor:leggings_leather", { }) minetest.register_tool("3d_armor:leggings_iron", { - description = "Iron Leggings", + description = S("Iron Leggings"), _doc_items_longdesc = longdesc, _doc_items_usagehelp = usage, inventory_image = "3d_armor_inv_leggings_iron.png", @@ -130,7 +132,7 @@ minetest.register_tool("3d_armor:leggings_iron", { }) minetest.register_tool("3d_armor:leggings_gold", { - description = "Golden Leggings", + description = S("Golden Leggings"), _doc_items_longdesc = longdesc, _doc_items_usagehelp = usage, inventory_image = "3d_armor_inv_leggings_gold.png", @@ -140,7 +142,7 @@ minetest.register_tool("3d_armor:leggings_gold", { }) minetest.register_tool("3d_armor:leggings_diamond",{ - description = "Diamond Leggings", + description = S("Diamond Leggings"), _doc_items_longdesc = longdesc, _doc_items_usagehelp = usage, inventory_image = "3d_armor_inv_leggings_diamond.png", @@ -150,7 +152,7 @@ minetest.register_tool("3d_armor:leggings_diamond",{ }) minetest.register_tool("3d_armor:leggings_chain", { - description = "Chain Leggings", + description = S("Chain Leggings"), _doc_items_longdesc = longdesc, _doc_items_usagehelp = usage, inventory_image = "3d_armor_inv_leggings_chain.png", @@ -161,7 +163,7 @@ minetest.register_tool("3d_armor:leggings_chain", { -- Regisiter Boots minetest.register_tool("3d_armor:boots_leather", { - description = "Leather Boots", + description = S("Leather Boots"), _doc_items_longdesc = longdesc, _doc_items_usagehelp = usage, inventory_image = "3d_armor_inv_boots_leather.png", @@ -171,7 +173,7 @@ minetest.register_tool("3d_armor:boots_leather", { }) minetest.register_tool("3d_armor:boots_iron", { - description = "Iron Boots", + description = S("Iron Boots"), _doc_items_longdesc = longdesc, _doc_items_usagehelp = usage, inventory_image = "3d_armor_inv_boots_iron.png", @@ -181,7 +183,7 @@ minetest.register_tool("3d_armor:boots_iron", { }) minetest.register_tool("3d_armor:boots_gold", { - description = "Golden Boots", + description = S("Golden Boots"), _doc_items_longdesc = longdesc, _doc_items_usagehelp = usage, inventory_image = "3d_armor_inv_boots_gold.png", @@ -191,7 +193,7 @@ minetest.register_tool("3d_armor:boots_gold", { }) minetest.register_tool("3d_armor:boots_diamond",{ - description = "Diamond Boots", + description = S("Diamond Boots"), _doc_items_longdesc = longdesc, _doc_items_usagehelp = usage, inventory_image = "3d_armor_inv_boots_diamond.png", @@ -201,7 +203,7 @@ minetest.register_tool("3d_armor:boots_diamond",{ }) minetest.register_tool("3d_armor:boots_chain", { - description = "Chain Boots", + description = S("Chain Boots"), _doc_items_longdesc = longdesc, _doc_items_usagehelp = usage, inventory_image = "3d_armor_inv_boots_chain.png", diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor_stand/init.lua b/mods/ITEMS/minetest-3d_armor/3d_armor_stand/init.lua index cd378d6d..775c1f53 100644 --- a/mods/ITEMS/minetest-3d_armor/3d_armor_stand/init.lua +++ b/mods/ITEMS/minetest-3d_armor/3d_armor_stand/init.lua @@ -1,3 +1,5 @@ +local S = minetest.get_translator("3d_armor_stand") + local elements = {"head", "torso", "legs", "feet"} local function get_stand_object(pos) @@ -88,9 +90,9 @@ end -- FIXME: The armor stand should be an entity minetest.register_node("3d_armor_stand:armor_stand", { - description = "Armor Stand", - _doc_items_longdesc = "An armor stand is a decorative object which can display different pieces of armor. Anything which players can wear as armor can also be put on an armor stand.", - _doc_items_usagehelp = "Hold an armor item in your hand and rightclick the armor stand to put it on the armor stand. To take a piece of armor from the armor stand, select your hand and rightclick the armor stand. You'll retrieve the first armor item from above.", + description = S("Armor Stand"), + _doc_items_longdesc = S("An armor stand is a decorative object which can display different pieces of armor. Anything which players can wear as armor can also be put on an armor stand."), + _doc_items_usagehelp = S("Hold an armor item in your hand and rightclick the armor stand to put it on the armor stand. To take a piece of armor from the armor stand, select your hand and rightclick the armor stand. You'll retrieve the first armor item from above."), drawtype = "mesh", mesh = "3d_armor_stand.obj", inventory_image = "3d_armor_stand_item.png", From 3cfdb85926992d457e07db23dcd3384968bb602b Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Fri, 8 Mar 2019 01:07:41 +0100 Subject: [PATCH 041/737] New translation system, part 11: Redstone --- mods/ITEMS/REDSTONE/mcl_comparators/init.lua | 23 ++++++------- mods/ITEMS/REDSTONE/mcl_dispensers/init.lua | 17 +++++----- mods/ITEMS/REDSTONE/mcl_droppers/init.lua | 12 ++++--- mods/ITEMS/REDSTONE/mcl_observers/init.lua | 8 +++-- .../REDSTONE/mesecons_commandblock/init.lua | 33 ++++++++----------- mods/ITEMS/REDSTONE/mesecons_delayer/init.lua | 16 +++++---- .../REDSTONE/mesecons_noteblock/init.lua | 20 ++++++----- mods/ITEMS/REDSTONE/mesecons_pistons/init.lua | 12 ++++--- .../REDSTONE/mesecons_pressureplates/init.lua | 22 +++++++------ .../REDSTONE/mesecons_solarpanel/init.lua | 14 ++++---- mods/ITEMS/REDSTONE/mesecons_torch/init.lua | 22 +++++++------ .../REDSTONE/mesecons_walllever/init.lua | 8 +++-- mods/ITEMS/REDSTONE/mesecons_wires/init.lua | 20 ++++++----- 13 files changed, 120 insertions(+), 107 deletions(-) diff --git a/mods/ITEMS/REDSTONE/mcl_comparators/init.lua b/mods/ITEMS/REDSTONE/mcl_comparators/init.lua index 1feb8889..bbd7410e 100644 --- a/mods/ITEMS/REDSTONE/mcl_comparators/init.lua +++ b/mods/ITEMS/REDSTONE/mcl_comparators/init.lua @@ -1,3 +1,5 @@ +local S = minetest.get_translator("mcl_comparators") + -- Functions that get the input/output rules of the comparator local comparator_get_output_rules = function(node) @@ -223,25 +225,20 @@ for _, state in pairs{mesecon.state.on, mesecon.state.off} do -- Help local longdesc, usagehelp, use_help if state_strs[state] == "off" and mode == "comp" then - longdesc = "Redstone comparators are multi-purpose redstone components. ".. - "They can transmit a redstone signal, detect whether a block contains any items and compare multiple signals." + longdesc = S("Redstone comparators are multi-purpose redstone components.").."\n".. + S("They can transmit a redstone signal, detect whether a block contains any items and compare multiple signals.") - usagehelp = "A redstone comparator has 1 main input, 2 side inputs and 1 output. The output is in ".. - "arrow direction, the main input is in the opposite direction. The other 2 sides are the side inputs.".."\n".. - "The main input can powered in 2 ways: First, it can be powered directly by redstone power like any other component. Second, it is powered if, and only if a container (like chest) is placed in front of it and the container contains at least one item.".. - "The side inputs are only powered by normal redstone power.".. - "The redstone can operate in two modes: Transmission mode and subtraction mode. It ".. - "starts in transmission mode and the mode can be changed by a rightclick.".."\n\n".. - "Transmission mode:".. - "The front torch is unlit and lowered. The output is powered if, and only if the main input is powered. The two side inputs are ignored.".."\n".. - "Subtraction mode:".. - "The front torch is lit. The output is powered if, and only if the main input is powered and none of the side inputs is powered." + usagehelp = S("A redstone comparator has 1 main input, 2 side inputs and 1 output. The output is in arrow direction, the main input is in the opposite direction. The other 2 sides are the side inputs.").."\n".. + S("The main input can powered in 2 ways: First, it can be powered directly by redstone power like any other component. Second, it is powered if, and only if a container (like a chest) is placed in front of it and the container contains at least one item.").."\n".. + S("The side inputs are only powered by normal redstone power. The redstone can operate in two modes: Transmission mode and subtraction mode. It starts in transmission mode and the mode can be changed by a rightclick.").."\n\n".. + S("Transmission mode:\nThe front torch is unlit and lowered. The output is powered if, and only if the main input is powered. The two side inputs are ignored.").."\n".. + S("Subtraction mode:\nThe front torch is lit. The output is powered if, and only if the main input is powered and none of the side inputs is powered.") else use_help = false end local nodedef = { - description = "Redstone Comparator", + description = S("Redstone Comparator"), inventory_image = icon, wield_image = icon, _doc_items_create_entry = use_help, diff --git a/mods/ITEMS/REDSTONE/mcl_dispensers/init.lua b/mods/ITEMS/REDSTONE/mcl_dispensers/init.lua index 2c3c6b78..d24fc858 100644 --- a/mods/ITEMS/REDSTONE/mcl_dispensers/init.lua +++ b/mods/ITEMS/REDSTONE/mcl_dispensers/init.lua @@ -7,6 +7,7 @@ All node definitions share a lot of code, so this is the reason why there are so many weird tables below. ]] +local S = minetest.get_translator("mcl_dispensers") -- For after_place_node local setup_dispenser = function(pos) @@ -281,13 +282,13 @@ local dispenserdef = { -- Horizontal dispenser local horizontal_def = table.copy(dispenserdef) -horizontal_def.description = "Dispenser" -horizontal_def._doc_items_longdesc = "A dispenser is a block which acts as a redstone component which, when powered with redstone power, dispenses an item. It has a container with 9 inventory slots." -horizontal_def._doc_items_usagehelp = [[Place the dispenser in one of 6 possible directions. The “hole” is where items will fly out of the dispenser. Rightclick the dispenser to access its inventory. Insert the items you wish to dispense. Supply the dispenser with redstone energy once to dispense a single random item. +horizontal_def.description = S("Dispenser") +horizontal_def._doc_items_longdesc = S("A dispenser is a block which acts as a redstone component which, when powered with redstone power, dispenses an item. It has a container with 9 inventory slots.") +horizontal_def._doc_items_usagehelp = S("Place the dispenser in one of 6 possible directions. The “hole” is where items will fly out of the dispenser. Rightclick the dispenser to access its inventory. Insert the items you wish to dispense. Supply the dispenser with redstone energy once to dispense a single random item.").."\n\n".. -The dispenser will do different things, depending on the dispensed item: +S("The dispenser will do different things, depending on the dispensed item:").."\n\n".. -• Arrows: Are launched +S([[• Arrows: Are launched • Eggs and snowballs: Are thrown • Fire charges: Are fired in a straight line • Armor: Will be equipped to players and armor stands @@ -301,7 +302,7 @@ The dispenser will do different things, depending on the dispensed item: • TNT: Is placed and ignited • Flint and steel: Is used to ignite a fire in air and to ignite TNT • Spawn eggs: Will summon the mob they contain -• Other items: Are simply dropped]] +• Other items: Are simply dropped]]) horizontal_def.after_place_node = function(pos, placer, itemstack, pointed_thing) setup_dispenser(pos) @@ -319,7 +320,7 @@ minetest.register_node("mcl_dispensers:dispenser", horizontal_def) -- Down dispenser local down_def = table.copy(dispenserdef) -down_def.description = "Downwards-Facing Dispenser" +down_def.description = S("Downwards-Facing Dispenser") down_def.after_place_node = setup_dispenser down_def.tiles = { "default_furnace_top.png", "mcl_dispensers_dispenser_front_vertical.png", @@ -334,7 +335,7 @@ minetest.register_node("mcl_dispensers:dispenser_down", down_def) -- Up dispenser -- The up dispenser is almost identical to the down dispenser , it only differs in textures local up_def = table.copy(down_def) -up_def.description = "Upwards-Facing Dispenser" +up_def.description = S("Upwards-Facing Dispenser") up_def.tiles = { "mcl_dispensers_dispenser_front_vertical.png", "default_furnace_bottom.png", "default_furnace_side.png", "default_furnace_side.png", diff --git a/mods/ITEMS/REDSTONE/mcl_droppers/init.lua b/mods/ITEMS/REDSTONE/mcl_droppers/init.lua index be42e79a..e53313aa 100644 --- a/mods/ITEMS/REDSTONE/mcl_droppers/init.lua +++ b/mods/ITEMS/REDSTONE/mcl_droppers/init.lua @@ -8,6 +8,8 @@ All node definitions share a lot of code, so this is the reason why there are so many weird tables below. ]] +local S = minetest.get_translator("mcl_droppers") + -- For after_place_node local setup_dropper = function(pos) -- Set formspec and inventory @@ -144,9 +146,9 @@ local dropperdef = { -- Horizontal dropper local horizontal_def = table.copy(dropperdef) -horizontal_def.description = "Dropper" -horizontal_def._doc_items_longdesc = "A dropper is a redstone component and a container with 9 inventory slots which, when supplied with redstone power, drops an item or puts it into a container in front of it." -horizontal_def._doc_items_usagehelp = "Droppers can be placed in 6 possible directions, items will be dropped out of the hole. Rightclick the dropper to access its inventory. Supply it with redstone energy once to make the dropper drop or transfer a random item." +horizontal_def.description = S("Dropper") +horizontal_def._doc_items_longdesc = S("A dropper is a redstone component and a container with 9 inventory slots which, when supplied with redstone power, drops an item or puts it into a container in front of it.") +horizontal_def._doc_items_usagehelp = S("Droppers can be placed in 6 possible directions, items will be dropped out of the hole. Rightclick the dropper to access its inventory. Supply it with redstone energy once to make the dropper drop or transfer a random item.") horizontal_def.after_place_node = function(pos, placer, itemstack, pointed_thing) setup_dropper(pos) orientate_dropper(pos, placer) @@ -163,7 +165,7 @@ minetest.register_node("mcl_droppers:dropper", horizontal_def) -- Down dropper local down_def = table.copy(dropperdef) -down_def.description = "Downwards-Facing Dropper" +down_def.description = S("Downwards-Facing Dropper") down_def.after_place_node = setup_dropper down_def.tiles = { "default_furnace_top.png", "mcl_droppers_dropper_front_vertical.png", @@ -178,7 +180,7 @@ minetest.register_node("mcl_droppers:dropper_down", down_def) -- Up dropper -- The up dropper is almost identical to the down dropper, it only differs in textures local up_def = table.copy(down_def) -up_def.description = "Upwards-Facing Dropper" +up_def.description = S("Upwards-Facing Dropper") up_def.tiles = { "mcl_droppers_dropper_front_vertical.png", "default_furnace_bottom.png", "default_furnace_side.png", "default_furnace_side.png", diff --git a/mods/ITEMS/REDSTONE/mcl_observers/init.lua b/mods/ITEMS/REDSTONE/mcl_observers/init.lua index 0017d461..af230d80 100644 --- a/mods/ITEMS/REDSTONE/mcl_observers/init.lua +++ b/mods/ITEMS/REDSTONE/mcl_observers/init.lua @@ -1,3 +1,5 @@ +local S = minetest.get_translator("mcl_observers") + local rules_flat = { { x = 0, y = 0, z = -1, spread = true }, } @@ -84,9 +86,9 @@ mesecon.register_node("mcl_observers:observer", _mcl_hardness = 3.5, }, { - description = "Observer", - _doc_items_longdesc = "An observer is a redstone component which observes the block in front of it and sends a very short redstone pulse whenever this block changes.", - _doc_items_usagehelp = "Place the observer directly in front of the block you want to observe with the “face” looking at the block. The arrow shows you the side of the output, which is at the opposite side of the “face”. The arrow points to it. You need to place your redstone wire or any other component you want to power here.", + description = S("Observer"), + _doc_items_longdesc = S("An observer is a redstone component which observes the block in front of it and sends a very short redstone pulse whenever this block changes."), + _doc_items_usagehelp = S("Place the observer directly in front of the block you want to observe with the “face” looking at the block. The arrow shows you the side of the output, which is at the opposite side of the “face”. The arrow points to it. You need to place your redstone wire or any other component you want to power here."), groups = {pickaxey=1, material_stone=1, not_opaque=1, }, tiles = { "mcl_observers_observer_top.png^[transformR180", "default_furnace_bottom.png", diff --git a/mods/ITEMS/REDSTONE/mesecons_commandblock/init.lua b/mods/ITEMS/REDSTONE/mesecons_commandblock/init.lua index acb1a9d0..0b2cbaac 100644 --- a/mods/ITEMS/REDSTONE/mesecons_commandblock/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons_commandblock/init.lua @@ -1,3 +1,4 @@ +local S = minetest.get_translator("mesecons_commandblock") local function construct(pos) local meta = minetest.get_meta(pos) @@ -183,33 +184,27 @@ local on_place = function(itemstack, placer, pointed_thing) end minetest.register_node("mesecons_commandblock:commandblock_off", { - description = "Command Block", + description = S("Command Block"), _doc_items_longdesc = -"Command blocks are mighty redstone components which are able to alter reality itself. In other words, they cause the server to execute server commands when they are supplied with redstone power.", +S("Command blocks are mighty redstone components which are able to alter reality itself. In other words, they cause the server to execute server commands when they are supplied with redstone power."), _doc_items_usagehelp = -[[To use an already existing command block, just supply it with redstone power and see what happens. This will execute the commands once. To execute the commands again, turn the redstone power off and on again. +S("To use an already existing command block, just supply it with redstone power and see what happens. This will execute the commands once. To execute the commands again, turn the redstone power off and on again.").."\n\n".. -To place a command block and change the commands, you need to be in Creative Mode and must have the “maphack” privilege. A new command block does not have any commands and does nothing. Rightclick the command block (in Creative Mode!) to edit its commands. Read the help entry “Advanced topics > Server Commands” to understand how they work. Each line contains a single command. You enter them like you would in the console, but without the leading slash. The commands will be executed from top to bottom. +S("To place a command block and change the commands, you need to be in Creative Mode and must have the “maphack” privilege. A new command block does not have any commands and does nothing. Rightclick the command block (in Creative Mode!) to edit its commands. Read the help entry “Advanced topics > Server Commands” to understand how they work. Each line contains a single command. You enter them like you would in the console, but without the leading slash. The commands will be executed from top to bottom.").."\n\n".. -All commands will be executed on behalf of the player who placed the command block, as if the player typed in the commands. This player is said to be the “commander” of the block. +S("All commands will be executed on behalf of the player who placed the command block, as if the player typed in the commands. This player is said to be the “commander” of the block.").."\n\n".. -Command blocks support placeholders, insert one of these placerholders and they will be replaced by a player name: -• “@c”: commander of this command block -• “@n” or “@p”: nearest player from the command block -• “@f” farthest player from the command block -• “@r”: random player currently in the world -• “@@”: literal “@” sign +S("Command blocks support placeholders, insert one of these placerholders and they will be replaced by a player name:").."\n".. +S("• “@c”: commander of this command block").."\n".. +S("• “@n” or “@p”: nearest player from the command block").."\n".. +S("• “@f” farthest player from the command block").."\n".. +S("• “@r”: random player currently in the world").."\n".. +S("• “@@”: literal “@” sign").."\n\n".. -Example 1: - time 12000 +S("Example 1:\n time 12000\nSets the game clock to 12:00").."\n\n".. -Sets the game clock to 12:00 - -Example 2: - give @n mcl_core:apple 5 - -→ Gives the nearest player 5 apples]], +S("Example 2:\n give @n mcl_core:apple 5\n→ Gives the nearest player 5 apples"), tiles = {{name="jeija_commandblock_off.png", animation={type="vertical_frames", aspect_w=32, aspect_h=32, length=2}}}, groups = {creative_breakable=1, mesecon_effector_off=1}, diff --git a/mods/ITEMS/REDSTONE/mesecons_delayer/init.lua b/mods/ITEMS/REDSTONE/mesecons_delayer/init.lua index a17dd7f5..504314c1 100644 --- a/mods/ITEMS/REDSTONE/mesecons_delayer/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons_delayer/init.lua @@ -1,3 +1,5 @@ +local S = minetest.get_translator("mesecons_delayer") + local DELAYS = { 0.1, 0.2, 0.3, 0.4 } local DEFAULT_DELAY = DELAYS[1] @@ -182,9 +184,9 @@ end local help, longdesc, usagehelp, icon, on_construct if i == 1 then help = true - longdesc = "Redstone repeaters are versatile redstone components with multiple purposes: 1. They only allow signals to travel in one direction. 2. They delay the signal. 3. Optionally, they can lock their output in one state." - usagehelp = "To power a redstone repeater, send a signal in “arrow” direction (the input). The signal goes out on the opposite side (the output) with a delay. To change the delay, rightclick the redstone repeater. The delay is between 0.1 and 0.4 seconds long and can be changed in steps of 0.1 seconds. It is indicated by the position of the moving redstone torch.".."\n".. - "To lock a repeater, send a signal from an adjacent repeater into one of its sides. While locked, the moving redstone torch disappears, the output doesn't change and the input signal is ignored." + longdesc = S("Redstone repeaters are versatile redstone components with multiple purposes: 1. They only allow signals to travel in one direction. 2. They delay the signal. 3. Optionally, they can lock their output in one state.") + usagehelp = S("To power a redstone repeater, send a signal in “arrow” direction (the input). The signal goes out on the opposite side (the output) with a delay. To change the delay, rightclick the redstone repeater. The delay is between 0.1 and 0.4 seconds long and can be changed in steps of 0.1 seconds. It is indicated by the position of the moving redstone torch.").."\n".. + S("To lock a repeater, send a signal from an adjacent repeater into one of its sides. While locked, the moving redstone torch disappears, the output doesn't change and the input signal is ignored.") icon = "mesecons_delayer_item.png" -- Check sides of constructed repeater and lock it, if required @@ -219,7 +221,7 @@ else end minetest.register_node("mesecons_delayer:delayer_off_"..tostring(i), { - description = "Redstone Repeater", + description = S("Redstone Repeater"), inventory_image = icon, wield_image = icon, _doc_items_create_entry = help, @@ -292,7 +294,7 @@ minetest.register_node("mesecons_delayer:delayer_off_"..tostring(i), { minetest.register_node("mesecons_delayer:delayer_on_"..tostring(i), { - description = "Redstone Repeater (Powered)", + description = S("Redstone Repeater (Powered)"), _doc_items_create_entry = false, drawtype = "nodebox", tiles = { @@ -366,7 +368,7 @@ end -- Locked repeater minetest.register_node("mesecons_delayer:delayer_off_locked", { - description = "Redstone Repeater (Locked)", + description = S("Redstone Repeater (Locked)"), _doc_items_create_entry = false, drawtype = "nodebox", -- FIXME: Textures of torch and the lock bar overlap. Nodeboxes are (sadly) not suitable for this. @@ -420,7 +422,7 @@ minetest.register_node("mesecons_delayer:delayer_off_locked", { }) minetest.register_node("mesecons_delayer:delayer_on_locked", { - description = "Redstone Repeater (Locked, Powered)", + description = S("Redstone Repeater (Locked, Powered)"), _doc_items_create_entry = false, drawtype = "nodebox", tiles = { diff --git a/mods/ITEMS/REDSTONE/mesecons_noteblock/init.lua b/mods/ITEMS/REDSTONE/mesecons_noteblock/init.lua index 9d1737ac..a6b59df9 100644 --- a/mods/ITEMS/REDSTONE/mesecons_noteblock/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons_noteblock/init.lua @@ -1,15 +1,17 @@ +local S = minetest.get_translator("mesecons_noteblock") + minetest.register_node("mesecons_noteblock:noteblock", { - description = "Note Block", - _doc_items_longdesc = "A note block is a musical block which plays one of many musical notes and different intruments when it is punched or supplied with redstone power.", - _doc_items_usagehelp = [[Rightclick the note block to choose the next musical note (there are 24 half notes, or 2 octaves). The intrument played depends on the material of the block below the note block: + description = S("Note Block"), + _doc_items_longdesc = S("A note block is a musical block which plays one of many musical notes and different intruments when it is punched or supplied with redstone power."), + _doc_items_usagehelp = S("Rightclick the note block to choose the next musical note (there are 24 half notes, or 2 octaves). The intrument played depends on the material of the block below the note block:").."\n\n".. -• Glass: Sticks -• Wood: Bass guitar -• Stone: Bass drum -• Sand or gravel: Snare drum -• Anything else: Piano +S("• Glass: Sticks").."\n".. +S("• Wood: Bass guitar").."\n".. +S("• Stone: Bass drum").."\n".. +S("• Sand or gravel: Snare drum").."\n".. +S("• Anything else: Piano").."\n\n".. -The note block will only play a note when it is below air, otherwise, it stays silent.]], +S("The note block will only play a note when it is below air, otherwise, it stays silent."), tiles = {"mesecons_noteblock.png"}, groups = {handy=1,axey=1, material_wood=1}, is_ground_content = false, diff --git a/mods/ITEMS/REDSTONE/mesecons_pistons/init.lua b/mods/ITEMS/REDSTONE/mesecons_pistons/init.lua index 8c290a50..9c818165 100644 --- a/mods/ITEMS/REDSTONE/mesecons_pistons/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons_pistons/init.lua @@ -1,3 +1,5 @@ +local S = minetest.get_translator("mesecons_pistons") + local PISTON_MAXIMUM_PUSH = 12 -- Get mesecon rules of pistons @@ -171,7 +173,7 @@ local pistonspec_normal = { piston_up = "mesecons_pistons:piston_up_normal_off", } -local usagehelp_piston = "This block can have one of 6 possible orientations. On placement, the pusher will face you." +local usagehelp_piston = S("This block can have one of 6 possible orientations. On placement, the pusher will face you.") local on_rotate if minetest.get_modpath("screwdriver") then @@ -180,8 +182,8 @@ end -- offstate minetest.register_node("mesecons_pistons:piston_normal_off", { - description = "Piston", - _doc_items_longdesc = "A piston is a redstone component with a pusher which pushes the block or blocks in front of it when it is supplied with redstone power. Not all blocks can be pushed, however.", + description = S("Piston"), + _doc_items_longdesc = S("A piston is a redstone component with a pusher which pushes the block or blocks in front of it when it is supplied with redstone power. Not all blocks can be pushed, however."), _doc_items_usagehelp = usagehelp_piston, tiles = { "mesecons_piston_bottom.png^[transformR180", @@ -275,8 +277,8 @@ local pistonspec_sticky = { -- offstate minetest.register_node("mesecons_pistons:piston_sticky_off", { - description = "Sticky Piston", - _doc_items_longdesc = "A sticky piston is a redstone component with a sticky pusher which can be extended and retracted. It extends when it is supplied with redstone power. When the pusher extends, it pushes the block or blocks in front of it. When it retracts, it pulls back the single block in front of it. Note that not all blocks can be pushed or pulled.", + description = S("Sticky Piston"), + _doc_items_longdesc = S("A sticky piston is a redstone component with a sticky pusher which can be extended and retracted. It extends when it is supplied with redstone power. When the pusher extends, it pushes the block or blocks in front of it. When it retracts, it pulls back the single block in front of it. Note that not all blocks can be pushed or pulled."), _doc_items_usagehelp = usagehelp_piston, tiles = { diff --git a/mods/ITEMS/REDSTONE/mesecons_pressureplates/init.lua b/mods/ITEMS/REDSTONE/mesecons_pressureplates/init.lua index 395c5130..6148c700 100644 --- a/mods/ITEMS/REDSTONE/mesecons_pressureplates/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons_pressureplates/init.lua @@ -1,3 +1,5 @@ +local S = minetest.get_translator("mesecons_pressureplates") + local PRESSURE_PLATE_INTERVAL = 0.04 local pp_box_off = { @@ -95,7 +97,7 @@ function mesecon.register_pressure_plate(basename, description, textures_off, te groups_on.not_in_creative_inventory = 1 groups_on.pressure_plate = 2 if not longdesc then - longdesc = "A pressure plate is a redstone component which supplies its surrounding blocks with redstone power while someone or something rests on top of it." + longdesc = S("A pressure plate is a redstone component which supplies its surrounding blocks with redstone power while someone or something rests on top of it.") end mesecon.register_node(basename, { @@ -144,12 +146,12 @@ function mesecon.register_pressure_plate(basename, description, textures_off, te end local woods = { - { "wood", "mcl_core:wood", "default_wood.png", "Oak Pressure Plate" }, - { "acaciawood", "mcl_core:acaciawood", "default_acacia_wood.png", "Acacia Pressure Plate" }, - { "birchwood", "mcl_core:birchwood", "mcl_core_planks_birch.png", "Birch Pressure Plate" }, - { "darkwood", "mcl_core:darkwood", "mcl_core_planks_big_oak.png", "Dark Oak Pressure Plate" }, - { "sprucewood", "mcl_core:sprucewood", "mcl_core_planks_spruce.png", "Spruce Pressure Plate" }, - { "junglewood", "mcl_core:junglewood", "default_junglewood.png", "Jungle Pressure Plate" }, + { "wood", "mcl_core:wood", "default_wood.png", S("Oak Pressure Plate") }, + { "acaciawood", "mcl_core:acaciawood", "default_acacia_wood.png", S("Acacia Pressure Plate") }, + { "birchwood", "mcl_core:birchwood", "mcl_core_planks_birch.png", S("Birch Pressure Plate") }, + { "darkwood", "mcl_core:darkwood", "mcl_core_planks_big_oak.png", S("Dark Oak Pressure Plate" )}, + { "sprucewood", "mcl_core:sprucewood", "mcl_core_planks_spruce.png", S("Spruce Pressure Plate") }, + { "junglewood", "mcl_core:junglewood", "default_junglewood.png", S("Jungle Pressure Plate") }, } for w=1, #woods do @@ -164,7 +166,7 @@ for w=1, #woods do mcl_sounds.node_sound_wood_defaults(), {axey=1, material_wood=1}, nil, - "A wooden pressure plate is a redstone component which supplies its surrounding blocks with redstone power while any movable object (including dropped items, players and mobs) rests on top of it.") + S("A wooden pressure plate is a redstone component which supplies its surrounding blocks with redstone power while any movable object (including dropped items, players and mobs) rests on top of it.")) minetest.register_craft({ type = "fuel", @@ -176,7 +178,7 @@ end mesecon.register_pressure_plate( "mesecons_pressureplates:pressure_plate_stone", - "Stone Pressure Plate", + S("Stone Pressure Plate"), {"default_stone.png"}, {"default_stone.png"}, "default_stone.png", @@ -185,6 +187,6 @@ mesecon.register_pressure_plate( mcl_sounds.node_sound_stone_defaults(), {pickaxey=1, material_stone=1}, { player = true, mob = true }, - "A stone pressure plate is a redstone component which supplies its surrounding blocks with redstone power while a player or mob stands on top of it. It is not triggered by anything else.") + S("A stone pressure plate is a redstone component which supplies its surrounding blocks with redstone power while a player or mob stands on top of it. It is not triggered by anything else.")) diff --git a/mods/ITEMS/REDSTONE/mesecons_solarpanel/init.lua b/mods/ITEMS/REDSTONE/mesecons_solarpanel/init.lua index 0bd0b737..d71f0cdd 100644 --- a/mods/ITEMS/REDSTONE/mesecons_solarpanel/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons_solarpanel/init.lua @@ -1,3 +1,5 @@ +local S = minetest.get_translator("mesecons_solarpanel") + local boxes = { -8/16, -8/16, -8/16, 8/16, -2/16, 8/16 } -- Daylight Sensor @@ -18,7 +20,7 @@ minetest.register_node("mesecons_solarpanel:solar_panel_on", { fixed = boxes }, drop = "mesecons_solarpanel:solar_panel_off", - description="Daylight Sensor", + description=S("Daylight Sensor"), _doc_items_create_entry = false, groups = {handy=1,axey=1, not_in_creative_inventory = 1, material_wood=1}, sounds = mcl_sounds.node_sound_glass_defaults(), @@ -56,8 +58,8 @@ minetest.register_node("mesecons_solarpanel:solar_panel_off", { fixed = boxes }, groups = {handy=1,axey=1, material_wood=1}, - description="Daylight Sensor", - _doc_items_longdesc = "Daylight sensors are redstone components which provide redstone power when they are in sunlight and no power otherwise. They can also be inverted.", + description=S("Daylight Sensor"), + _doc_items_longdesc = S("Daylight sensors are redstone components which provide redstone power when they are in sunlight and no power otherwise. They can also be inverted."), _doc_items_usagehelp = "Rightclick the daylight sensor to turn it into an inverted daylight sensor, which supplies redstone energy when it is in moonlight.", sounds = mcl_sounds.node_sound_glass_defaults(), mesecons = {receptor = { @@ -136,7 +138,7 @@ minetest.register_node("mesecons_solarpanel:solar_panel_inverted_on", { }, drop = "mesecons_solarpanel:solar_panel_off", groups = {handy=1,axey=1, not_in_creative_inventory = 1, material_wood=1}, - description="Inverted Daylight Sensor", + description=S("Inverted Daylight Sensor"), _doc_items_create_entry = false, sounds = mcl_sounds.node_sound_glass_defaults(), mesecons = {receptor = { @@ -174,8 +176,8 @@ minetest.register_node("mesecons_solarpanel:solar_panel_inverted_off", { }, drop = "mesecons_solarpanel:solar_panel_off", groups = {handy=1,axey=1, not_in_creative_inventory=1, material_wood=1}, - description="Inverted Daylight Sensor", - _doc_items_longdesc = "An inverted daylight sensor is a variant of the daylight sensor. It is a redstone component which provides redstone power when it in moonlight and no power otherwise. It can turned back into an ordinary daylight sensor.", + description=S("Inverted Daylight Sensor"), + _doc_items_longdesc = S("An inverted daylight sensor is a variant of the daylight sensor. It is a redstone component which provides redstone power when it in moonlight and no power otherwise. It can turned back into an ordinary daylight sensor."), _doc_items_usagehelp = "Rightclick the daylight sensor to turn it into a daylight sensor.", sounds = mcl_sounds.node_sound_glass_defaults(), mesecons = {receptor = { diff --git a/mods/ITEMS/REDSTONE/mesecons_torch/init.lua b/mods/ITEMS/REDSTONE/mesecons_torch/init.lua index 48c593c4..17b45e20 100644 --- a/mods/ITEMS/REDSTONE/mesecons_torch/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons_torch/init.lua @@ -1,4 +1,6 @@ --- REDSTONE TORCHES +-- REDSTONE TORCH AND BLOCK OF REDSTONE + +local S = minetest.get_translator("mesecons_torch") local TORCH_COOLOFF = 120 -- Number of seconds it takes for a burned-out torch to reactivate @@ -164,13 +166,13 @@ mcl_torches.register_torch("mesecon_torch_overheated", "Redstone Torch (overheat -mcl_torches.register_torch("mesecon_torch_on", "Redstone Torch", - "A redstone torch is a redstone component which can be used to invert a redstone signal. It supplies its surrounding blocks with redstone power, except for the block it is attached to. A redstone torch is normally lit, but it can also be turned off by powering the block it is attached to. While unlit, a redstone torch does not power anything.", - [[Redstone torches can generally be placed at the side and on the top of full solid opaque blocks. The following exceptions apply: -• Glass, fence, wall, hopper: Can only be placed on top -• Upside-down slab/stair: Can only be placed on top -• Soul sand, mob spawner: Placement possible -• Glowstone and pistons: No placement possible]], +mcl_torches.register_torch("mesecon_torch_on", S("Redstone Torch"), + S("A redstone torch is a redstone component which can be used to invert a redstone signal. It supplies its surrounding blocks with redstone power, except for the block it is attached to. A redstone torch is normally lit, but it can also be turned off by powering the block it is attached to. While unlit, a redstone torch does not power anything."), + S("Redstone torches can generally be placed at the side and on the top of full solid opaque blocks. The following exceptions apply:").."\n".. +S("• Glass, fence, wall, hopper: Can only be placed on top").. +S("• Upside-down slab/stair: Can only be placed on top").. +S("• Soul sand, mob spawner: Placement possible").. +S("• Glowstone and pistons: No placement possible"), "jeija_torches_on.png", "mcl_torches_torch_floor.obj", "mcl_torches_torch_wall.obj", {"jeija_torches_on.png"}, @@ -193,8 +195,8 @@ mcl_torches.register_torch("mesecon_torch_on", "Redstone Torch", ) minetest.register_node("mesecons_torch:redstoneblock", { - description = "Block of Redstone", - _doc_items_longdesc = "A block of redstone permanently supplies redstone power to its surrounding blocks.", + description = S("Block of Redstone"), + _doc_items_longdesc = S("A block of redstone permanently supplies redstone power to its surrounding blocks."), tiles = {"redstone_redstone_block.png"}, stack_max = 64, groups = {pickaxey=1}, diff --git a/mods/ITEMS/REDSTONE/mesecons_walllever/init.lua b/mods/ITEMS/REDSTONE/mesecons_walllever/init.lua index 9db4fe74..5f8dbd49 100644 --- a/mods/ITEMS/REDSTONE/mesecons_walllever/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons_walllever/init.lua @@ -1,3 +1,5 @@ +local S = minetest.get_translator("mesecons_wallever") + local lever_get_output_rules = mesecon.rules.buttonlike_get -- LEVER @@ -20,8 +22,8 @@ minetest.register_node("mesecons_walllever:wall_lever_off", { }, groups = {handy=1, dig_by_water=1, destroy_by_lava_flow=1, dig_by_piston=1, attached_node_facedir=1}, is_ground_content = false, - description="Lever", - _doc_items_longdesc = "A lever is a redstone component which can be flipped on and off. It supplies redstone power to adjacent blocks while it is in the “on” state.", + description=S("Lever"), + _doc_items_longdesc = S("A lever is a redstone component which can be flipped on and off. It supplies redstone power to adjacent blocks while it is in the “on” state."), _doc_items_usagehelp = "Right-click the lever to flip it on or off.", on_rightclick = function (pos, node) minetest.swap_node(pos, {name="mesecons_walllever:wall_lever_on", param2=node.param2}) @@ -122,7 +124,7 @@ minetest.register_node("mesecons_walllever:wall_lever_on", { groups = {handy=1, not_in_creative_inventory = 1, dig_by_water=1, destroy_by_lava_flow=1, dig_by_piston=1, attached_node_facedir=1}, is_ground_content = false, drop = '"mesecons_walllever:wall_lever_off" 1', - description="Lever", + description=S("Lever"), _doc_items_create_entry = false, on_rightclick = function (pos, node) minetest.swap_node(pos, {name="mesecons_walllever:wall_lever_off", param2=node.param2}) diff --git a/mods/ITEMS/REDSTONE/mesecons_wires/init.lua b/mods/ITEMS/REDSTONE/mesecons_wires/init.lua index 01bf6bbb..49f048a1 100644 --- a/mods/ITEMS/REDSTONE/mesecons_wires/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons_wires/init.lua @@ -4,6 +4,8 @@ -- Where 0 means the wire has no visual connection to that direction and -- 1 means that the wire visually connects to that other node. +local S = minetest.get_translator("mesecons_wires") + -- ####################### -- ## Update wire looks ## -- ####################### @@ -223,23 +225,23 @@ local function register_wires() tiles_off = { dot_off, dot_off, "blank.png", "blank.png", "blank.png", "blank.png" } tiles_on = { dot_on, dot_on, "blank.png", "blank.png", "blank.png", "blank.png" } - longdesc = [[Redstone is a versatile conductive mineral which transmits redstone power. It can be placed on the ground as a trail. -A redstone trail can be in two states: Powered or not powered. A powered redstone trail will power (and thus activate) adjacent redstone components. -Redstone power can be received from various redstone components, such as a block of redstone or a button. Redstone power is used to activate numerous mechanisms, such as redstone lamps or pistons.]] - usagehelp = [[Place redstone on the ground to build a redstone trail. The trails will connect to each other automatically and it can also go over hills. An easy way to power a redstone trail is by placing a redstone torch. + longdesc = S("Redstone is a versatile conductive mineral which transmits redstone power. It can be placed on the ground as a trail.").."\n".. +S("A redstone trail can be in two states: Powered or not powered. A powered redstone trail will power (and thus activate) adjacent redstone components.").."\n".. +S("Redstone power can be received from various redstone components, such as a block of redstone or a button. Redstone power is used to activate numerous mechanisms, such as redstone lamps or pistons.") + usagehelp = S("Place redstone on the ground to build a redstone trail. The trails will connect to each other automatically and it can also go over hills. An easy way to power a redstone trail is by placing a redstone torch.").."\n\n".. -Read the help entries on the other redstone components to learn how redstone components interact.]] +S("Read the help entries on the other redstone components to learn how redstone components interact.") img = "redstone_redstone_dust.png" - desc_off = "Redstone" - desc_on = "Powered Redstone Spot ("..nodeid..")" + desc_off = S("Redstone") + desc_on = S("Powered Redstone Spot (@1)", nodeid) else -- Connected redstone wire table.insert(nodebox, box_center) tiles_off = { crossing_off, crossing_off, straight0_off, straight1_off, straight0_off, straight1_off, } tiles_on = { crossing_on, crossing_on, straight0_on, straight1_on, straight0_on, straight1_on, } wirehelp = false - desc_off = "Redstone Trail ("..nodeid..")" - desc_on = "Powered Redstone Trail ("..nodeid..")" + desc_off = S("Redstone Trail (@1)", nodeid) + desc_on = S("Powered Redstone Trail (@1)", nodeid) end mesecon.register_node(":mesecons:wire_"..nodeid, { From 2e738a39a4ef39e34a25cf68039ef4a0ca2de662 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Fri, 8 Mar 2019 01:59:45 +0100 Subject: [PATCH 042/737] Disable radar mode in survival --- mods/HELP/mcl_doc_basics/init.lua | 6 +++--- mods/ITEMS/mcl_maps/init.lua | 13 +++++++++---- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/mods/HELP/mcl_doc_basics/init.lua b/mods/HELP/mcl_doc_basics/init.lua index be4f4ae2..7b30533e 100644 --- a/mods/HELP/mcl_doc_basics/init.lua +++ b/mods/HELP/mcl_doc_basics/init.lua @@ -430,11 +430,11 @@ S("There are 2 minimap modes and 3 zoom levels.").."\n\n".. S("Surface mode (image 1) is a top-down view of the world, roughly resembling the colors of the blocks this world is made of. It only shows the topmost blocks, everything below is hidden, like a satellite photo. Surface mode is useful if you got lost.").."\n\n".. -S("Radar mode (image 2) is more complicated. It displays the “denseness” of the area around you and changes with your height. Roughly, the more green an area is, the less “dense” it is. Black areas have many blocks. Use the radar to find caverns, hidden areas, walls and more. The rectangular shapes in image 2 clearly expose the position of a dungeon.").."\n\n".. +S("Radar mode (image 2) is more complicated. It displays the “denseness” of the area around you and changes with your height. Roughly, the more green an area is, the less “dense” it is. Black areas have many blocks. Use the radar to find caverns, hidden areas, walls and more. The rectangular shapes in image 2 clearly expose the position of a dungeon. Radar mode is only available in Creative Mode").."\n\n".. S("There are also two different rotation modes. In “square mode”, the rotation of the minimap is fixed. If you press [Shift]+[F9] to switch to “circle mode”, the minimap will instead rotate with your looking direction, so “up” is always your looking direction.").."\n\n".. -S("In some games, the minimap may be disabled.").."\n\n".. +S("In other games, the minimap may be disabled.").."\n\n".. S("• Toggle minimap mode: [F9]").."\n".. S("• Toggle minimap rotation mode: [Shift]+[F9]"), @@ -767,7 +767,7 @@ S("• Mined blocks don't drop items").."\n".. S("• Items don't get used up").."\n".. S("• Tools don't wear off").."\n".. S("• You can eat food whenever you want").."\n".. -S("• You can always use the minimap").."\n\n".. +S("• You can always use the minimap (including radar mode)").."\n\n".. S("Damage is not affected by Creative Mode, it needs to be disabled seperately.") }}) diff --git a/mods/ITEMS/mcl_maps/init.lua b/mods/ITEMS/mcl_maps/init.lua index dbe27022..e48ae58a 100644 --- a/mods/ITEMS/mcl_maps/init.lua +++ b/mods/ITEMS/mcl_maps/init.lua @@ -34,7 +34,7 @@ minetest.register_craftitem("mcl_maps:empty_map", { -- has a very greatly zoomed-out version and even a radar mode minetest.register_craftitem("mcl_maps:filled_map", { description = S("Map"), - _doc_items_longdesc = S("Maps show your surroundings as you explore the world. They can even show you the world like a radar. MAGIC!\nNote: Maps are subject to change in future versions of MineClone 2."), + _doc_items_longdesc = S("Maps show your surroundings as you explore the world."), _doc_items_usagehelp = S("Hold the map in any of the hotbar slots. This allows you to access the minimap by pressing the minimap key ([F9] by default).\nIn Creative Mode, you don't need this item; the minimap is always available."), groups = { tool = 1 }, inventory_image = "mcl_maps_map_filled.png^(mcl_maps_map_filled_markings.png^[colorize:#000000)", @@ -64,10 +64,15 @@ end -- Checks if player is still allowed to display the minimap local function update_minimap(player) - if minetest.settings:get_bool("creative_mode") or has_item_in_hotbar(player, "mcl_maps:filled_map") then - player:hud_set_flags({minimap = true}) + local creative = minetest.settings:get_bool("creative_mode") + if creative then + player:hud_set_flags({minimap=true, minimap_radar = true}) else - player:hud_set_flags({minimap = false}) + if has_item_in_hotbar(player, "mcl_maps:filled_map") then + player:hud_set_flags({minimap = true, minimap_radar = false}) + else + player:hud_set_flags({minimap = false, minimap_radar = false}) + end end end From fed10e688e0d7e64bbee7055aa564f2ec3d4ec76 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Fri, 8 Mar 2019 03:05:27 +0100 Subject: [PATCH 043/737] Tweak water/lava drips --- mods/ENTITIES/drippingwater/init.lua | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/mods/ENTITIES/drippingwater/init.lua b/mods/ENTITIES/drippingwater/init.lua index efa37fd2..cd8746e4 100644 --- a/mods/ENTITIES/drippingwater/init.lua +++ b/mods/ENTITIES/drippingwater/init.lua @@ -12,7 +12,7 @@ minetest.register_entity("drippingwater:drop_water", { hp_max = 1, physical = true, collide_with_objects = false, - collisionbox = {0,0,0,0,0,0}, + collisionbox = {-0.025,-0.05,-0.025,0.025,-0.01,0.025}, pointable = false, visual = "cube", visual_size = {x=0.05, y=0.1}, @@ -51,7 +51,9 @@ minetest.register_entity("drippingwater:drop_lava", { hp_max = 1, physical = true, collide_with_objects = false, - collisionbox = {0,0,0,0,0,0}, + collisionbox = {-0.025,-0.05,-0.025,0.025,-0.01,0.025}, + glow = math.max(7, minetest.registered_nodes["mcl_core:lava_source"].light_source - 3), + pointable = false, visual = "cube", visual_size = {x=0.05, y=0.1}, textures = {lava_tex, lava_tex, lava_tex, lava_tex, lava_tex, lava_tex}, From f7d9aea529c658799f65105eb2c984c2615df0a8 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Fri, 8 Mar 2019 03:40:46 +0100 Subject: [PATCH 044/737] Make blazes glow in the dark --- mods/ENTITIES/mcl_mobs/api.lua | 1 + mods/ENTITIES/mcl_mobs/api.txt | 1 + mods/ENTITIES/mobs_mc/blaze.lua | 1 + mods/ITEMS/mcl_tnt/init.lua | 2 +- 4 files changed, 4 insertions(+), 1 deletion(-) diff --git a/mods/ENTITIES/mcl_mobs/api.lua b/mods/ENTITIES/mcl_mobs/api.lua index 3c2d61bd..dfc4c773 100644 --- a/mods/ENTITIES/mcl_mobs/api.lua +++ b/mods/ENTITIES/mcl_mobs/api.lua @@ -3087,6 +3087,7 @@ minetest.register_entity(name, { -- MCL2 extensions ignores_nametag = def.ignores_nametag or false, rain_damage = def.rain_damage or 0, + glow = def.glow, can_despawn = can_despawn, on_spawn = def.on_spawn, diff --git a/mods/ENTITIES/mcl_mobs/api.txt b/mods/ENTITIES/mcl_mobs/api.txt index 157370d0..5baab263 100644 --- a/mods/ENTITIES/mcl_mobs/api.txt +++ b/mods/ENTITIES/mcl_mobs/api.txt @@ -215,6 +215,7 @@ functions needed for the mob to work properly which contains the following: are in direct sunlight 'spawn_small_alternative': name of a smaller mob to use as replacement if spawning fails due to space requirements + 'glow' same as in entity definition Node Replacement ---------------- diff --git a/mods/ENTITIES/mobs_mc/blaze.lua b/mods/ENTITIES/mobs_mc/blaze.lua index 34ee630f..21e752a3 100644 --- a/mods/ENTITIES/mobs_mc/blaze.lua +++ b/mods/ENTITIES/mobs_mc/blaze.lua @@ -67,6 +67,7 @@ mobs:register_mob("mobs_mc:blaze", { jump_chance = 98, fear_height = 120, blood_amount = 0, + glow = 14, }) mobs:spawn_specific("mobs_mc:blaze", mobs_mc.spawn.nether_fortress, {"air"}, 0, minetest.LIGHT_MAX+1, 30, 5000, 3, mobs_mc.spawn_height.nether_min, mobs_mc.spawn_height.nether_max) diff --git a/mods/ITEMS/mcl_tnt/init.lua b/mods/ITEMS/mcl_tnt/init.lua index c3bc2d93..f18f64b5 100644 --- a/mods/ITEMS/mcl_tnt/init.lua +++ b/mods/ITEMS/mcl_tnt/init.lua @@ -32,7 +32,7 @@ local function do_tnt_physics(tnt_np,tntr) local damage = (4 / dist) * tntr if obj:is_player() == true then if mod_death_messages then - mcl_death_messages.player_damage(obj, string.format("%s was caught in an explosion.", obj:get_player_name())) + mcl_death_messages.player_damage(obj, S("@1 was caught in an explosion.", obj:get_player_name())) end end obj:set_hp(obj:get_hp() - damage) From f40eeb4477a505682d924003955bfea71676aad9 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Fri, 8 Mar 2019 03:47:14 +0100 Subject: [PATCH 045/737] Make barrier particles glow in the dark --- mods/ITEMS/mcl_core/nodes_misc.lua | 1 + mods/PLAYER/mcl_playerplus/init.lua | 1 + 2 files changed, 2 insertions(+) diff --git a/mods/ITEMS/mcl_core/nodes_misc.lua b/mods/ITEMS/mcl_core/nodes_misc.lua index 7c6f7dc7..3eb40274 100644 --- a/mods/ITEMS/mcl_core/nodes_misc.lua +++ b/mods/ITEMS/mcl_core/nodes_misc.lua @@ -138,6 +138,7 @@ minetest.register_node("mcl_core:barrier", { expirationtime = 1, size = 8, texture = "mcl_core_barrier.png", + glow = 14, playername = placer:get_player_name() }) end, diff --git a/mods/PLAYER/mcl_playerplus/init.lua b/mods/PLAYER/mcl_playerplus/init.lua index 17074ea9..ea232129 100644 --- a/mods/PLAYER/mcl_playerplus/init.lua +++ b/mods/PLAYER/mcl_playerplus/init.lua @@ -208,6 +208,7 @@ minetest.register_globalstep(function(dtime) expirationtime = 1, size = 8, texture = tex, + glow = 14, playername = name }) end From daed3059bf3f59fc386fc8a7435c7928b6f8e240 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Fri, 8 Mar 2019 04:42:24 +0100 Subject: [PATCH 046/737] Predict water when digging ice --- mods/ITEMS/mcl_core/nodes_base.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/mods/ITEMS/mcl_core/nodes_base.lua b/mods/ITEMS/mcl_core/nodes_base.lua index decdda0d..f76a7f86 100644 --- a/mods/ITEMS/mcl_core/nodes_base.lua +++ b/mods/ITEMS/mcl_core/nodes_base.lua @@ -788,6 +788,7 @@ minetest.register_node("mcl_core:ice", { groups = {handy=1,pickaxey=1, slippery=3, building_block=1}, drop = "", sounds = mcl_sounds.node_sound_glass_defaults(), + node_dig_prediction = "mcl_core:water_source", after_dig_node = function(pos, oldnode) -- Create a water source if ice is destroyed and there was something below it local below = {x=pos.x, y=pos.y-1, z=pos.z} From 9057743eb852dad7d615ad165a784534de0bd93a Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Fri, 8 Mar 2019 05:12:31 +0100 Subject: [PATCH 047/737] Tweak spawning algorithm --- mods/PLAYER/mcl_spawn/init.lua | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/mods/PLAYER/mcl_spawn/init.lua b/mods/PLAYER/mcl_spawn/init.lua index 746beeb8..b8f3f086 100644 --- a/mods/PLAYER/mcl_spawn/init.lua +++ b/mods/PLAYER/mcl_spawn/init.lua @@ -20,10 +20,17 @@ mcl_spawn.get_spawn_pos = function(player) spawn = minetest.setting_get_pos("static_spawnpoint") custom_spawn = false end + -- We are getting desperate ... + -- Use the first spawn point of the player if not spawn or spawn == "" then local attr = player:get_meta():get_string("mcl_spawn:first_spawn") if attr ~= nil and attr ~= "" then + -- Adjust Y spawn = minetest.string_to_pos(attr) + local y = minetest.get_spawn_level(spawn.x, spawn.z) + if y then + spawn.y = y + end custom_spawn = false end end From db8d7af245a20088d23d3496e912d2eccc8b08c8 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Fri, 8 Mar 2019 19:09:40 +0100 Subject: [PATCH 048/737] Fix lightning dealing way too much damage --- mods/ENVIRONMENT/lightning/init.lua | 99 ++++++++++++++--------------- 1 file changed, 47 insertions(+), 52 deletions(-) diff --git a/mods/ENVIRONMENT/lightning/init.lua b/mods/ENVIRONMENT/lightning/init.lua index 527bfa86..0d0b7d1e 100644 --- a/mods/ENVIRONMENT/lightning/init.lua +++ b/mods/ENVIRONMENT/lightning/init.lua @@ -121,10 +121,51 @@ lightning.strike = function(pos) minetest.sound_play({ pos = pos, name = "lightning_thunder", gain = 10, max_hear_distance = 500 }) - -- damage nearby objects, player or not - for _, obj in ipairs(minetest.get_objects_inside_radius(pos, 5)) do - -- nil as param#1 is supposed to work, but core can't handle it. - obj:punch(obj, 1.0, {full_punch_interval = 1.0, damage_groups = {fleshy=8}}, nil) + -- damage nearby objects, transform mobs + local objs = minetest.get_objects_inside_radius(pos2, 3.5) + for o=1, #objs do + local obj = objs[o] + local lua = obj:get_luaentity() + if obj:is_player() then + -- Player damage + if minetest.get_modpath("mcl_death_messages") then + mcl_death_messages.player_damage(obj, S("@1 was struck by lightning.", obj:get_player_name())) + end + obj:set_hp(obj:get_hp()-5) + -- Mobs + elseif lua and lua._cmi_is_mob then + -- pig → zombie pigman (no damage) + if lua.name == "mobs_mc:pig" then + local rot = obj:get_yaw() + obj:remove() + obj = minetest.add_entity(pos2, "mobs_mc:pigman") + obj:set_yaw(rot) + -- mooshroom: toggle color red/brown (no damage) + elseif lua.name == "mobs_mc:mooshroom" then + if lua.base_texture[1] == "mobs_mc_mooshroom.png" then + lua.base_texture = { "mobs_mc_mooshroom_brown.png", "mobs_mc_mushroom_brown.png" } + else + lua.base_texture = { "mobs_mc_mooshroom.png", "mobs_mc_mushroom_red.png" } + end + obj:set_properties({textures = lua.base_texture}) + -- villager → witch (no damage) + elseif lua.name == "mobs_mc:villager" then + -- Witches are incomplete, this code is unused + -- TODO: Enable this code when witches are working. + --[[ + local rot = obj:get_yaw() + obj:remove() + obj = minetest.add_entity(pos2, "mobs_mc:witch") + obj:set_yaw(rot) + ]] + -- TODO: creeper → charged creeper (no damage) + elseif lua.name == "mobs_mc:creeper" then + + -- Other mobs: Just damage + else + obj:set_hp(obj:get_hp()-5, "lightning") + end + end end local playerlist = minetest.get_connected_players() @@ -168,58 +209,11 @@ lightning.strike = function(pos) angle = angle + (math.pi*2) / 3 end - -- Cause a fire, deal damage, transform mobs + -- Cause a fire else minetest.set_node(pos2, {name = "mcl_fire:fire"}) - - local objs = minetest.get_objects_inside_radius(pos2, 3.5) - for o=1, #objs do - local obj = objs[o] - local lua = obj:get_luaentity() - if obj:is_player() then - -- Player damage - if minetest.get_modpath("mcl_death_messages") then - mcl_death_messages.player_damage(obj, S("@1 was struck by lightning.", obj:get_player_name())) - end - obj:set_hp(obj:get_hp()-5) - -- Mobs - elseif lua and lua._cmi_is_mob then - -- pig → zombie pigman - if lua.name == "mobs_mc:pig" then - local rot = obj:get_yaw() - obj:remove() - obj = minetest.add_entity(pos2, "mobs_mc:pigman") - obj:set_yaw(rot) - -- mooshroom: toggle color red/brown - elseif lua.name == "mobs_mc:mooshroom" then - if lua.base_texture[1] == "mobs_mc_mooshroom.png" then - lua.base_texture = { "mobs_mc_mooshroom_brown.png", "mobs_mc_mushroom_brown.png" } - else - lua.base_texture = { "mobs_mc_mooshroom.png", "mobs_mc_mushroom_red.png" } - end - obj:set_properties({textures = lua.base_texture}) - -- villager → witch - elseif lua.name == "mobs_mc:villager" then - -- Witches are incomplete, this code is unused - -- TODO: Enable this code when witches are working. - --[[ - local rot = obj:get_yaw() - obj:remove() - obj = minetest.add_entity(pos2, "mobs_mc:witch") - obj:set_yaw(rot) - ]] - -- TODO: creeper → charged creeper - elseif lua.name == "mobs_mc:creeper" then - - -- Other mobs: Just Damage - else - obj:set_hp(obj:get_hp()-5) - end - end - end end end - -- TODO: Charged creeper end end @@ -261,3 +255,4 @@ minetest.register_chatcommand("lightning", { return true end, }) + From 20576431e183465adb67f405795dbd1d1e49d8a9 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Fri, 8 Mar 2019 20:22:01 +0100 Subject: [PATCH 049/737] More death messages, more reliable --- mods/ENTITIES/mobs_mc/ender_dragon.lua | 2 +- mods/ENTITIES/mobs_mc/wither.lua | 2 +- mods/HUD/mcl_death_messages/init.lua | 210 ++++++++++++------------- mods/ITEMS/mcl_nether/depends.txt | 2 +- mods/ITEMS/mcl_nether/init.lua | 6 +- mods/ITEMS/mcl_throwing/init.lua | 5 + mods/MISC/mcl_commands/depends.txt | 1 + mods/MISC/mcl_commands/init.lua | 20 ++- mods/PLAYER/mcl_hunger/depends.txt | 2 +- mods/PLAYER/mcl_hunger/hunger.lua | 7 + mods/PLAYER/mcl_hunger/init.lua | 13 +- mods/PLAYER/mcl_playerplus/init.lua | 6 +- 12 files changed, 148 insertions(+), 128 deletions(-) create mode 100644 mods/MISC/mcl_commands/depends.txt diff --git a/mods/ENTITIES/mobs_mc/ender_dragon.lua b/mods/ENTITIES/mobs_mc/ender_dragon.lua index 8bcd2541..dd81ab14 100644 --- a/mods/ENTITIES/mobs_mc/ender_dragon.lua +++ b/mods/ENTITIES/mobs_mc/ender_dragon.lua @@ -124,7 +124,7 @@ mobs:register_arrow("mobs_mc:roar_of_the_dragon2", { for _,obj in ipairs(objects) do local name = self.name if name~="mobs_mc:roar_of_the_dragon2" and name ~= "mobs_mc:enderdragon" then - obj:set_hp(obj:get_hp()-0.05) + obj:set_hp(obj:get_hp()-5) if (obj:get_hp() <= 0) then if (not obj:is_player()) and name ~= self.object:get_luaentity().name then obj:remove() diff --git a/mods/ENTITIES/mobs_mc/wither.lua b/mods/ENTITIES/mobs_mc/wither.lua index d61237a9..a06510a9 100644 --- a/mods/ENTITIES/mobs_mc/wither.lua +++ b/mods/ENTITIES/mobs_mc/wither.lua @@ -94,7 +94,7 @@ mobs:register_arrow("mobs_mc:roar_of_the_dragon", { for _,obj in ipairs(objects) do local name = self.name if name~="mobs_mc:roar_of_the_dragon" and name ~= "mobs_mc:wither" then - obj:set_hp(obj:get_hp()-0.05) + obj:set_hp(obj:get_hp()-5) if (obj:get_hp() <= 0) then if (not obj:is_player()) and name ~= self.object:get_luaentity().name then obj:remove() diff --git a/mods/HUD/mcl_death_messages/init.lua b/mods/HUD/mcl_death_messages/init.lua index 302b1a67..85e51c84 100644 --- a/mods/HUD/mcl_death_messages/init.lua +++ b/mods/HUD/mcl_death_messages/init.lua @@ -28,9 +28,6 @@ local msgs = { S("%s drowned."), S("%s ran out of oxygen."), }, - ["starve"] = { - S("%s starved."), - }, ["murder"] = { S("%s was killed by %s."), }, @@ -42,13 +39,13 @@ local msgs = { S("%s was killed by a fireball from a blaze."), }, ["fire_charge"] = { - S("%s was hit by a fire charge."), + S("%s was burned by a fire charge."), }, ["ghast_fireball"] = { S("A ghast scared %s to death."), S("%s has been fireballed by a ghast."), }, - ["fall_damage"] = { + ["fall"] = { S("%s fell from a high cliff."), S("%s took fatal fall damage."), S("%s fell victim to gravity."), @@ -117,132 +114,123 @@ end local last_damages = { } -minetest.register_on_dieplayer(function(player) +minetest.register_on_dieplayer(function(player, reason) -- Death message local message = minetest.settings:get_bool("mcl_showDeathMessages") - if message == nil then message = true end + if message == nil then + message = true + end if message then local name = player:get_player_name() if not name then return end - - local node = minetest.registered_nodes[minetest.get_node(player:get_pos()).name] local msg - -- Lava - if minetest.get_item_group(node.name, "lava") ~= 0 then - msg = dmsg("lava", name) - -- Drowning - elseif player:get_breath() == 0 then - msg = dmsg("drown", name) - -- Fire - elseif minetest.get_item_group(node.name, "fire") ~= 0 then - msg = dmsg("fire", name) - -- Other - else - -- Killed by entity - if last_damages[name] then - -- Mob - if last_damages[name].hittertype == "mob" then - if last_damages[name].hittername then - msg = dmsg("murder", name, last_damages[name].hittername) - else - msg = mmsg(last_damages[name].hittersubtype, name) - end - -- Player - elseif last_damages[name].hittertype == "player" then - if last_damages[name].hittername == name then - -- Workaround when player somehow punches self. Caused by creeper explosions in mobs mod. - -- FIXME: Remove when self-punching is no longer buggy. - msg = dmsg("other", name) - else - msg = dmsg("murder", name, last_damages[name].hittername) - end - -- Arrow - elseif last_damages[name].hittertype == "arrow" then - if last_damages[name].shooter == nil then - msg = dmsg("arrow", name) - elseif last_damages[name].shooter:is_player() then - msg = dmsg("arrow_name", name, last_damages[name].shooter:get_player_name()) - elseif last_damages[name].shooter:get_luaentity()._cmi_is_mob then - if last_damages[name].shooter:get_luaentity().nametag ~= "" then - msg = dmsg("arrow_name", name, last_damages[name].shooter:get_player_name()) - else - msg = dmsg("arrow", name) - end - else - msg = dmsg("arrow", name) - end - -- Fireball - elseif last_damages[name].hittertype == "blaze_fireball" then - msg = dmsg("blaze_fireball", name) - elseif last_damages[name].hittertype == "ghast_fireball" then - msg = dmsg("ghast_fireball", name) - elseif last_damages[name].hittertype == "fire_charge" then - msg = dmsg("fire_charge", name) - -- Custom death message - elseif last_damages[name].custom then - msg = last_damages[name].message + if reason.type == "node_damage" then + local pos = player:get_pos() + -- Check multiple nodes because players occupy multiple nodes + -- (we add one additional node because the check may fail if the player was + -- just barely touching the node with the head) + local posses = { pos, {x=pos.x,y=pos.y+1,z=pos.z}, {x=pos.x,y=pos.y+2,z=pos.z}} + for p=1, #posses do + local node = minetest.registered_nodes[minetest.get_node(posses[p]).name] + -- Lava + if minetest.get_item_group(node.name, "lava") ~= 0 then + msg = dmsg("lava", name) + break + -- Fire + elseif minetest.get_item_group(node.name, "fire") ~= 0 then + msg = dmsg("fire", name) + break end - -- Other reason - else - msg = dmsg("other", name) + end + elseif reason.type == "drown" then + msg = dmsg("drown", name) + elseif reason.type == "punch" then + -- Punches + local hitter = reason.object + local hittername, hittertype, hittersubtype, shooter + -- Unknown hitter + if hitter == nil then + msg = dmsg("murder_any") + -- Player + elseif hitter:is_player() then + hittername = hitter:get_player_name() + if hittername ~= nil then + msg = dmsg("murder", name, hittername) + else + msg = dmsg("murder_any", name) + end + -- Mob (according to Common Mob Interface) + elseif hitter:get_luaentity()._cmi_is_mob then + if hitter:get_luaentity().nametag and hitter:get_luaentity().nametag ~= "" then + hittername = hitter:get_luaentity().nametag + end + hittersubtype = hitter:get_luaentity().name + if hittername then + msg = dmsg("murder", name, hittername) + elseif hittersubtype ~= nil and hittersubtype ~= "" then + msg = mmsg(hittersubtype, name) + else + msg = dmsg("murder_any", name) + end + -- Arrow + elseif hitter:get_luaentity().name == "mcl_bows:arrow_entity" or hitter:get_luaentity().name == "mobs_mc:arrow_entity" then + local shooter + if hitter:get_luaentity()._shooter then + shooter = hitter:get_luaentity()._shooter + end + if shooter == nil then + msg = dmsg("arrow", name) + elseif shooter:is_player() then + msg = dmsg("arrow_name", name, shooter:get_player_name()) + elseif shooter:get_luaentity()._cmi_is_mob then + if shooter:get_luaentity().nametag ~= "" then + msg = dmsg("arrow_name", name, shooter:get_player_name()) + else + msg = dmsg("arrow", name) + end + else + msg = dmsg("arrow", name) + end + -- Blaze fireball + elseif hitter:get_luaentity().name == "mobs_mc:blaze_fireball" then + if hitter:get_luaentity()._shot_from_dispenser then + msg = dmsg("fire_charge", name) + else + msg = dmsg("blaze_fireball", name) + end + -- Ghast fireball + elseif hitter:get_luaentity().name == "mobs_monster:fireball" then + msg = dmsg("ghast_fireball", name) + end + -- Falling + elseif reason.type == "fall" then + msg = dmsg("fall", name) + -- Other + elseif reason.type == "set_hp" then + if last_damages[name] and last_damages[name].custom then + msg = last_damages[name].message end end - if msg then - minetest.chat_send_all(msg) + if not msg then + msg = dmsg("other", name) end + minetest.chat_send_all(msg) end end) local start_damage_reset_countdown = function (player) minetest.after(1, function(playername) - last_damages[playername] = nil + -- FIXME: Fix race condition with many damages in quick succession + if last_damages[playername] and last_damages[playername].custom then + last_damages[playername] = nil + end end, player:get_player_name()) end -minetest.register_on_punchplayer(function(player, hitter) - if not player or not player:is_player() or not hitter then - return - end - local msg - local hittername, hittertype, hittersubtype, shooter - -- Player - if hitter:is_player() then - hittername = hitter:get_player_name() - hittertype = "player" - -- Mob (according to Common Mob Interface) - elseif hitter:get_luaentity()._cmi_is_mob then - if hitter:get_luaentity().nametag and hitter:get_luaentity().nametag ~= "" then - hittername = hitter:get_luaentity().nametag - end - hittertype = "mob" - hittersubtype = hitter:get_luaentity().name - -- Arrow - elseif hitter:get_luaentity().name == "mcl_bows:arrow_entity" or hitter:get_luaentity().name == "mobs_mc:arrow_entity" then - hittertype = "arrow" - if hitter:get_luaentity()._shooter then - shooter = hitter:get_luaentity()._shooter - end - -- Blaze fireball - elseif hitter:get_luaentity().name == "mobs_mc:blaze_fireball" then - if hitter:get_luaentity()._shot_from_dispenser then - hittertype = "fire_charge" - else - hittertype = "blaze_fireball" - end - -- Ghast fireball - elseif hitter:get_luaentity().name == "mobs_monster:fireball" then - hittertype = "ghast_fireball" - else - return - end - - last_damages[player:get_player_name()] = { shooter = shooter, hittername = hittername, hittertype = hittertype, hittersubtype = hittersubtype } - start_damage_reset_countdown(player) -end) - --- To be called BEFORE damaging a player. If the player died, then message will be used as the death message. +-- To be called BEFORE damaging a player via set_hp. The next time the player dies due to a set_hp, +-- the message will be shown. This must happen within one second, otherwise it won't work. function mcl_death_messages.player_damage(player, message) last_damages[player:get_player_name()] = { custom = true, message = message } start_damage_reset_countdown(player) diff --git a/mods/ITEMS/mcl_nether/depends.txt b/mods/ITEMS/mcl_nether/depends.txt index 23488aae..273e76e1 100644 --- a/mods/ITEMS/mcl_nether/depends.txt +++ b/mods/ITEMS/mcl_nether/depends.txt @@ -2,6 +2,6 @@ mcl_core mcl_sounds mcl_util walkover -mcl_death_messages +mcl_death_messages? doc_items doc? diff --git a/mods/ITEMS/mcl_nether/init.lua b/mods/ITEMS/mcl_nether/init.lua index ee158945..15d5f931 100644 --- a/mods/ITEMS/mcl_nether/init.lua +++ b/mods/ITEMS/mcl_nether/init.lua @@ -1,5 +1,7 @@ local S = minetest.get_translator("mcl_nether") +local mod_death_messages = minetest.get_modpath("mcl_death_messages") + minetest.register_node("mcl_nether:glowstone", { description = S("Glowstone"), _doc_items_longdesc = S("Glowstone is a naturally-glowing block which is home to the Nether."), @@ -91,7 +93,9 @@ minetest.register_node("mcl_nether:magma", { on_walk_over = function(loc, nodeiamon, player) -- Hurt players standing on top of this block if player:get_hp() > 0 then - mcl_death_messages.player_damage(player, string.format("%s stood too long on a magma block.", player:get_player_name())) + if mod_death_messages then + mcl_death_messages.player_damage(player, string.format("%s stood too long on a magma block.", player:get_player_name())) + end player:set_hp(player:get_hp() - 1) end end, diff --git a/mods/ITEMS/mcl_throwing/init.lua b/mods/ITEMS/mcl_throwing/init.lua index 93e06ff0..8d3915c3 100644 --- a/mods/ITEMS/mcl_throwing/init.lua +++ b/mods/ITEMS/mcl_throwing/init.lua @@ -1,6 +1,7 @@ mcl_throwing = {} local S = minetest.get_translator("mcl_throwing") +local mod_death_messages = minetest.get_modpath("mcl_death_messages") -- -- Snowballs and other throwable items @@ -267,6 +268,10 @@ local pearl_on_step = function(self, dtime) local oldpos = player:get_pos() -- Teleport and hurt player player:set_pos(telepos) + if mod_death_messages then + mcl_death_messages.player_damage(player, S("@1 used the ender pearl too often.", player:get_player_name())) + end + -- TODO: Deal as fall damage player:set_hp(player:get_hp() - 5) -- 5% chance to spawn endermite at the player's origin diff --git a/mods/MISC/mcl_commands/depends.txt b/mods/MISC/mcl_commands/depends.txt new file mode 100644 index 00000000..6e14ff13 --- /dev/null +++ b/mods/MISC/mcl_commands/depends.txt @@ -0,0 +1 @@ +mcl_death_messages? diff --git a/mods/MISC/mcl_commands/init.lua b/mods/MISC/mcl_commands/init.lua index 50dd0526..1444abd7 100644 --- a/mods/MISC/mcl_commands/init.lua +++ b/mods/MISC/mcl_commands/init.lua @@ -2,6 +2,8 @@ local minecraftaliases = true local S = minetest.get_translator("mcl_commands") +local mod_death_messages = minetest.get_modpath("mcl_death_messages") + local function handle_kill_command(suspect, victim) if minetest.settings:get_bool("enable_damage") == false then return false, S("Players can't be killed right now, damage has been disabled.") @@ -16,17 +18,29 @@ local function handle_kill_command(suspect, victim) return false, S("@1 is already dead", victim) end end - if not suspect == victim then - minetest.log("action", S("@1 killed @2", suspect, victim)) - end -- If player holds a totem of undying, destroy it before killing, -- so it doesn't rescue the player. local wield = victimref:get_wielded_item() if wield:get_name() == "mobs_mc:totem" then victimref:set_wielded_item("") end + if mod_death_messages then + local msg + if suspect == victim then + msg = S("@1 committed suicide.", victim) + else + msg = S("@1 was killed by @2.", victim, suspect) + end + mcl_death_messages.player_damage(victimref, msg) + end -- DIE! victimref:set_hp(0) + -- Log + if not suspect == victim then + minetest.log("action", string.format("%s killed %s using /kill", suspect, victim)) + else + minetest.log("action", string.format("%s committed suicide using /kill", victim)) + end return true end diff --git a/mods/PLAYER/mcl_hunger/depends.txt b/mods/PLAYER/mcl_hunger/depends.txt index db4d6ccb..ed8cc423 100644 --- a/mods/PLAYER/mcl_hunger/depends.txt +++ b/mods/PLAYER/mcl_hunger/depends.txt @@ -1,2 +1,2 @@ hudbars -intllib? +mcl_death_messages? diff --git a/mods/PLAYER/mcl_hunger/hunger.lua b/mods/PLAYER/mcl_hunger/hunger.lua index 939aeed9..d37d0514 100644 --- a/mods/PLAYER/mcl_hunger/hunger.lua +++ b/mods/PLAYER/mcl_hunger/hunger.lua @@ -1,3 +1,6 @@ +local S = minetest.get_translator("mcl_hunger") +local mod_death_messages = minetest.get_modpath("mcl_death_messages") + -- wrapper for minetest.item_eat (this way we make sure other mods can't break this one) local org_eat = minetest.do_item_eat minetest.do_item_eat = function(hp_change, replace_with_item, itemstack, user, pointed_thing) @@ -110,7 +113,11 @@ local function poisonp(tick, time, time_left, damage, exhaustion, name) end -- Deal damage and exhaust player + -- TODO: Introduce fatal poison at higher difficulties if player:get_hp()-damage > 0 then + if mod_death_messages then + mcl_death_messages.player_damage(player, S("@1 succumbed to the poison."), name) + end player:set_hp(player:get_hp()-damage) end diff --git a/mods/PLAYER/mcl_hunger/init.lua b/mods/PLAYER/mcl_hunger/init.lua index 5df787e7..87812b8d 100644 --- a/mods/PLAYER/mcl_hunger/init.lua +++ b/mods/PLAYER/mcl_hunger/init.lua @@ -1,10 +1,5 @@ -local S -if (minetest.get_modpath("intllib")) then - S = intllib.Getter() -else - S = function ( s ) return s end -end - +local S = minetest.get_translator("mcl_hunger") +local mod_death_messages = minetest.get_modpath("mcl_death_messages") mcl_hunger = {} @@ -172,7 +167,11 @@ minetest.register_globalstep(function(dtime) mcl_hunger.update_exhaustion_hud(player, mcl_hunger.get_exhaustion(player)) elseif h == 0 then -- Damage hungry player down to 1 HP + -- TODO: Allow starvation at higher difficulty levels if hp-1 > 0 then + if mod_death_messages then + mcl_death_messages.player_damage(player, S("@1 starved to death."), name) + end player:set_hp(hp-1) end end diff --git a/mods/PLAYER/mcl_playerplus/init.lua b/mods/PLAYER/mcl_playerplus/init.lua index ea232129..c3315f42 100644 --- a/mods/PLAYER/mcl_playerplus/init.lua +++ b/mods/PLAYER/mcl_playerplus/init.lua @@ -1,3 +1,5 @@ +local S = minetest.get_translator("mcl_playerplus") + -- Internal player state local mcl_playerplus_internal = {} @@ -118,7 +120,7 @@ minetest.register_globalstep(function(dtime) -- Check privilege, too and (not minetest.check_player_privs(name, {noclip = true})) then if player:get_hp() > 0 then - mcl_death_messages.player_damage(player, string.format("%s suffocated to death.", name)) + mcl_death_messages.player_damage(player, S("@1 suffocated to death.", name)) player:set_hp(player:get_hp() - 1) end end @@ -134,7 +136,7 @@ minetest.register_globalstep(function(dtime) local dist_feet = vector.distance({x=pos.x, y=pos.y-1, z=pos.z}, near) if dist < 1.1 or dist_feet < 1.1 then if player:get_hp() > 0 then - mcl_death_messages.player_damage(player, string.format("%s was prickled by a cactus.", name)) + mcl_death_messages.player_damage(player, S("@1 was prickled to death by a cactus.", name)) player:set_hp(player:get_hp() - 1) end end From 049c6322769e4751376f095e846d3ea849e2e2cf Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Fri, 8 Mar 2019 21:59:16 +0100 Subject: [PATCH 050/737] Generalize node damage death message --- mods/HUD/mcl_death_messages/init.lua | 40 +++++++++++++--------------- mods/ITEMS/mcl_core/nodes_liquid.lua | 9 +++++++ mods/ITEMS/mcl_fire/init.lua | 8 ++++++ 3 files changed, 36 insertions(+), 21 deletions(-) diff --git a/mods/HUD/mcl_death_messages/init.lua b/mods/HUD/mcl_death_messages/init.lua index 85e51c84..1436205a 100644 --- a/mods/HUD/mcl_death_messages/init.lua +++ b/mods/HUD/mcl_death_messages/init.lua @@ -11,18 +11,6 @@ local msgs = { ["arrow_name"] = { S("%s was shot by an arrow from %s."), }, - ["fire"] = { - S("%s has been cooked crisp."), - S("%s felt the burn."), - S("%s died in the flames."), - S("%s died in a fire."), - }, - ["lava"] = { - S("%s melted in lava."), - S("%s took a bath in a hot lava tub."), - S("%s died in lava."), - S("%s could not survive in lava."), - }, ["drown"] = { S("%s forgot to breathe."), S("%s drowned."), @@ -132,18 +120,27 @@ minetest.register_on_dieplayer(function(player, reason) -- (we add one additional node because the check may fail if the player was -- just barely touching the node with the head) local posses = { pos, {x=pos.x,y=pos.y+1,z=pos.z}, {x=pos.x,y=pos.y+2,z=pos.z}} + local highest_damage = 0 + local highest_damage_def = nil + -- Show message for node that dealt the most damage for p=1, #posses do - local node = minetest.registered_nodes[minetest.get_node(posses[p]).name] - -- Lava - if minetest.get_item_group(node.name, "lava") ~= 0 then - msg = dmsg("lava", name) - break - -- Fire - elseif minetest.get_item_group(node.name, "fire") ~= 0 then - msg = dmsg("fire", name) - break + local def = minetest.registered_nodes[minetest.get_node(posses[p]).name] + local dmg = def.damage_per_second + if dmg and dmg > highest_damage then + highest_damage = dmg + highest_damage_def = def end end + if highest_damage_def and highest_damage_def._mcl_node_death_message then + local field = highest_damage_def._mcl_node_death_message + local field_msg + if type(field) == "table" then + field_msg = field[math.random(1, #field)] + else + field_msg = field + end + msg = string.format(field_msg, name) + end elseif reason.type == "drown" then msg = dmsg("drown", name) elseif reason.type == "punch" then @@ -235,3 +232,4 @@ function mcl_death_messages.player_damage(player, message) last_damages[player:get_player_name()] = { custom = true, message = message } start_damage_reset_countdown(player) end + diff --git a/mods/ITEMS/mcl_core/nodes_liquid.lua b/mods/ITEMS/mcl_core/nodes_liquid.lua index 8fe03205..2fdcb1ba 100644 --- a/mods/ITEMS/mcl_core/nodes_liquid.lua +++ b/mods/ITEMS/mcl_core/nodes_liquid.lua @@ -6,6 +6,13 @@ local WATER_ALPHA = 179 local WATER_VISC = 1 local LAVA_VISC = 7 +local lava_death_messages = { + S("%s melted in lava."), + S("%s took a bath in a hot lava tub."), + S("%s died in lava."), + S("%s could not survive in lava."), +} + minetest.register_node("mcl_core:water_flowing", { description = S("Flowing Water"), _doc_items_create_entry = false, @@ -129,6 +136,7 @@ minetest.register_node("mcl_core:lava_flowing", { liquid_renewable = false, liquid_range = 3, damage_per_second = 4*2, + _mcl_node_death_message = lava_death_messages, post_effect_color = {a=255, r=208, g=73, b=10}, groups = { lava=3, liquid=2, destroys_items=1, not_in_creative_inventory=1, dig_by_piston=1}, _mcl_blast_resistance = 500, @@ -175,6 +183,7 @@ S([[Lava interacts with water various ways: liquid_renewable = false, liquid_range = 3, damage_per_second = 4*2, + _mcl_node_death_message = lava_death_messages, post_effect_color = {a=255, r=208, g=73, b=10}, stack_max = 64, groups = { lava=3, liquid=2, destroys_items=1, not_in_creative_inventory=1, dig_by_piston=1}, diff --git a/mods/ITEMS/mcl_fire/init.lua b/mods/ITEMS/mcl_fire/init.lua index d85fbf1c..0ffaf775 100644 --- a/mods/ITEMS/mcl_fire/init.lua +++ b/mods/ITEMS/mcl_fire/init.lua @@ -12,6 +12,12 @@ local S = minetest.get_translator("mcl_fire") local fire_help = S("Fire is a damaging and destructive but short-lived kind of block. It will destroy and spread towards near flammable blocks, but fire will disappear when there is nothing to burn left. It will be extinguished by nearby water and rain. Fire can be destroyed safely by punching it, but it is hurtful if you stand directly in it. If a fire is started above netherrack or a magma block, it will immediately turn into an eternal fire.") local eternal_fire_help = S("Eternal fire is a damaging and destructive block. It will create fire around it when flammable blocks are nearby. Eternal fire can be extinguished by punches and nearby water blocks. Other than (normal) fire, eternal fire does not get extinguished on its own and also continues to burn under rain. Punching eternal fire is safe, but it hurts if you stand inside.") +local fire_death_messages = { + S("%s has been cooked crisp."), + S("%s felt the burn."), + S("%s died in the flames."), + S("%s died in a fire."), +} minetest.register_node("mcl_fire:fire", { description = S("Fire"), @@ -36,6 +42,7 @@ minetest.register_node("mcl_fire:fire", { buildable_to = true, sunlight_propagates = true, damage_per_second = 1, + _mcl_node_death_message = fire_death_messages, groups = {fire = 1, dig_immediate = 3, not_in_creative_inventory = 1, dig_by_piston=1, destroys_items=1 }, floodable = true, on_flood = function(pos, oldnode, newnode) @@ -115,6 +122,7 @@ minetest.register_node("mcl_fire:eternal_fire", { buildable_to = true, sunlight_propagates = true, damage_per_second = 1, + _mcl_node_death_message = fire_death_messages, groups = {fire = 1, dig_immediate = 3, not_in_creative_inventory = 1, dig_by_piston = 1, destroys_items = 1}, floodable = true, on_flood = function(pos, oldnode, newnode) From 636ff60c682a4733a8b9a175db03065115afb840 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Fri, 8 Mar 2019 22:31:26 +0100 Subject: [PATCH 051/737] Don't re-damage object with arrow if already dead --- mods/ITEMS/mcl_bows/arrow.lua | 36 ++++++++++++++++++----------------- 1 file changed, 19 insertions(+), 17 deletions(-) diff --git a/mods/ITEMS/mcl_bows/arrow.lua b/mods/ITEMS/mcl_bows/arrow.lua index 9561fea0..0b41a282 100644 --- a/mods/ITEMS/mcl_bows/arrow.lua +++ b/mods/ITEMS/mcl_bows/arrow.lua @@ -184,26 +184,28 @@ ARROW_ENTITY.on_step = function(self, dtime) local is_player = obj:is_player() local lua = obj:get_luaentity() if obj ~= self._shooter and (is_player or (lua and lua._cmi_is_mob)) then - obj:punch(self.object, 1.0, { - full_punch_interval=1.0, - damage_groups={fleshy=self._damage}, - }, nil) + if obj:get_hp() > 0 then + obj:punch(self.object, 1.0, { + full_punch_interval=1.0, + damage_groups={fleshy=self._damage}, + }, nil) - if is_player then - if self._shooter and self._shooter:is_player() then - -- “Ding” sound for hitting another player - minetest.sound_play({name="mcl_bows_hit_player", gain=0.1}, {to_player=self._shooter}) + if is_player then + if self._shooter and self._shooter:is_player() then + -- “Ding” sound for hitting another player + minetest.sound_play({name="mcl_bows_hit_player", gain=0.1}, {to_player=self._shooter}) + end end - end - if lua then - local entity_name = lua.name - -- Achievement for hitting skeleton, wither skeleton or stray (TODO) with an arrow at least 50 meters away - -- NOTE: Range has been reduced because mobs unload much earlier than that ... >_> - -- TODO: This achievement should be given for the kill, not just a hit - if self._shooter and self._shooter:is_player() and vector.distance(pos, self._startpos) >= 20 then - if mod_awards and (entity_name == "mobs_mc:skeleton" or entity_name == "mobs_mc:stray" or entity_name == "mobs_mc:witherskeleton") then - awards.unlock(self._shooter:get_player_name(), "mcl:snipeSkeleton") + if lua then + local entity_name = lua.name + -- Achievement for hitting skeleton, wither skeleton or stray (TODO) with an arrow at least 50 meters away + -- NOTE: Range has been reduced because mobs unload much earlier than that ... >_> + -- TODO: This achievement should be given for the kill, not just a hit + if self._shooter and self._shooter:is_player() and vector.distance(pos, self._startpos) >= 20 then + if mod_awards and (entity_name == "mobs_mc:skeleton" or entity_name == "mobs_mc:stray" or entity_name == "mobs_mc:witherskeleton") then + awards.unlock(self._shooter:get_player_name(), "mcl:snipeSkeleton") + end end end end From 086b29f08c6a706517e8fa4e05a665daad4886f8 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Fri, 8 Mar 2019 22:51:35 +0100 Subject: [PATCH 052/737] Fix minor race condition in mcl_death_messages --- mods/HUD/mcl_death_messages/init.lua | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/mods/HUD/mcl_death_messages/init.lua b/mods/HUD/mcl_death_messages/init.lua index 1436205a..f0f6285c 100644 --- a/mods/HUD/mcl_death_messages/init.lua +++ b/mods/HUD/mcl_death_messages/init.lua @@ -206,7 +206,7 @@ minetest.register_on_dieplayer(function(player, reason) msg = dmsg("fall", name) -- Other elseif reason.type == "set_hp" then - if last_damages[name] and last_damages[name].custom then + if last_damages[name] then msg = last_damages[name].message end end @@ -214,22 +214,30 @@ minetest.register_on_dieplayer(function(player, reason) msg = dmsg("other", name) end minetest.chat_send_all(msg) + last_damages[name] = nil end end) -local start_damage_reset_countdown = function (player) - minetest.after(1, function(playername) - -- FIXME: Fix race condition with many damages in quick succession - if last_damages[playername] and last_damages[playername].custom then +-- dmg_sequence_number is used to discard old damage events +local dmg_sequence_number = 0 +local start_damage_reset_countdown = function (player, sequence_number) + minetest.after(1, function(playername, sequence_number) + if last_damages[playername] and last_damages[playername].sequence_number == sequence_number then last_damages[playername] = nil end - end, player:get_player_name()) + end, player:get_player_name(), sequence_number) end --- To be called BEFORE damaging a player via set_hp. The next time the player dies due to a set_hp, --- the message will be shown. This must happen within one second, otherwise it won't work. +-- Send a custom death mesage when damaging a player via set_hp. +-- To be called directly BEFORE damaging a player via set_hp. +-- The next time the player dies due to a set_hp, the message will be shown. +-- The player must die via set_hp within 0.1 seconds, otherwise the message will be discarded. function mcl_death_messages.player_damage(player, message) - last_damages[player:get_player_name()] = { custom = true, message = message } - start_damage_reset_countdown(player) + last_damages[player:get_player_name()] = { message = message, sequence_number = dmg_sequence_number } + start_damage_reset_countdown(player, dmg_sequence_number) + dmg_sequence_number = dmg_sequence_number + 1 + if dmg_sequence_number >= 65535 then + dmg_sequence_number = 0 + end end From b8d3e7473b8094cc7afd676594e9043fb2ba1596 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Fri, 8 Mar 2019 23:11:44 +0100 Subject: [PATCH 053/737] Mob sfx: Random pitch, higher pitch for children --- mods/ENTITIES/mcl_mobs/api.lua | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/mods/ENTITIES/mcl_mobs/api.lua b/mods/ENTITIES/mcl_mobs/api.lua index dfc4c773..f443be5c 100644 --- a/mods/ENTITIES/mcl_mobs/api.lua +++ b/mods/ENTITIES/mcl_mobs/api.lua @@ -105,10 +105,20 @@ local mob_sound = function(self, sound, is_opinion) if is_opinion and self.opinion_sound_cooloff > 0 then return end + local pitch + if self.child then + -- Children have high pitch + pitch = 1.5 + else + pitch = 1.0 + end + -- randomize the pitch a bit + local pitch = pitch + math.random(-10, 10) * 0.005 minetest.sound_play(sound, { object = self.object, gain = 1.0, - max_hear_distance = self.sounds.distance + max_hear_distance = self.sounds.distance, + pitch = pitch, }) self.opinion_sound_cooloff = 1 end From a58b6fd3fbc0079af9334b10e13d437898b5677f Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Fri, 8 Mar 2019 23:17:42 +0100 Subject: [PATCH 054/737] Fixed pitch for fuse sound --- mods/ENTITIES/mcl_mobs/api.lua | 55 ++++++++-------------------------- 1 file changed, 13 insertions(+), 42 deletions(-) diff --git a/mods/ENTITIES/mcl_mobs/api.lua b/mods/ENTITIES/mcl_mobs/api.lua index f443be5c..ae89a15e 100644 --- a/mods/ENTITIES/mcl_mobs/api.lua +++ b/mods/ENTITIES/mcl_mobs/api.lua @@ -99,21 +99,23 @@ local mod_mobspawners = minetest.get_modpath("mcl_mobspawners") ~= nil local mod_hunger = minetest.get_modpath("mcl_hunger") ~= nil -- play sound -local mob_sound = function(self, sound, is_opinion) +local mob_sound = function(self, sound, is_opinion, fixed_pitch) if sound then if is_opinion and self.opinion_sound_cooloff > 0 then return end local pitch - if self.child then - -- Children have high pitch - pitch = 1.5 - else - pitch = 1.0 + if not fixed_pitch then + if self.child then + -- Children have high pitch + pitch = 1.5 + else + pitch = 1.0 + end + -- randomize the pitch a bit + pitch = pitch + math.random(-10, 10) * 0.005 end - -- randomize the pitch a bit - local pitch = pitch + math.random(-10, 10) * 0.005 minetest.sound_play(sound, { object = self.object, gain = 1.0, @@ -1943,7 +1945,7 @@ local do_states = function(self, dtime) self.v_start = true self.timer = 0 self.blinktimer = 0 - mob_sound(self, self.sounds.fuse) + mob_sound(self, self.sounds.fuse, nil, false) -- stop timer if out of reach or direct line of sight elseif self.allow_fuse_reset @@ -3655,40 +3657,9 @@ function mobs:capture_mob(self, clicker, chance_hand, chance_net, chance_lasso, end --- protect tamed mob with rune item +-- No-op in MCL2 (protecting mobs is not possible). function mobs:protect(self, clicker) - local name = clicker:get_player_name() - local tool = clicker:get_wielded_item() - - if tool:get_name() ~= "mobs:protector" then - return false - end - - if self.tamed == false then - minetest.chat_send_player(name, S("Not tamed!")) - return true -- false - end - - if self.protected == true then - minetest.chat_send_player(name, S("Already protected!")) - return true -- false - end - - if not mobs.is_creative(clicker:get_player_name()) then - tool:take_item() -- take 1 protection rune - clicker:set_wielded_item(tool) - end - - self.protected = true - - local pos = self.object:get_pos() - pos.y = pos.y + self.collisionbox[2] + 0.5 - - effect(self.object:get_pos(), 25, "mobs_protect_particle.png", 0.5, 4, 2, 15) - - mob_sound(self, "mobs_spell") - - return true + return false end From f373f3a4f1c85e32cc0560eeda5af34d8f23de72 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Fri, 8 Mar 2019 23:26:54 +0100 Subject: [PATCH 055/737] Mob spawner: Reduce spawn count for big mobs --- mods/ITEMS/mcl_mobspawners/init.lua | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_mobspawners/init.lua b/mods/ITEMS/mcl_mobspawners/init.lua index e9c2fc32..70d4cdad 100644 --- a/mods/ITEMS/mcl_mobspawners/init.lua +++ b/mods/ITEMS/mcl_mobspawners/init.lua @@ -43,6 +43,14 @@ local doll_size_overrides = { ["mobs_mc:enderdragon"] = { x = 0.16, y = 0.16 }, ["mobs_mc:witch"] = { x = 0.95, y = 0.95 }, } +local spawn_count_overrides = { + ["mobs_mc:enderdragon"] = 1, + ["mobs_mc:wither"] = 1, + ["mobs_mc:ghast"] = 1, + ["mobs_mc:guardian_elder"] = 1, + ["mobs_mc:guardian"] = 2, + ["mobs_mc:iron_golem"] = 2, +} local function set_doll_properties(doll, mob) local mobinfo = minetest.registered_entities[mob] @@ -218,7 +226,11 @@ local spawn_mobs = function(pos, elapsed) -- spawn up to 4 mobs in random air blocks if air then - for a=1, 4 do + local max = 4 + if spawn_count_overrides[mob] then + max = spawn_count_overrides[mob] + end + for a=1, max do if #air <= 0 then -- We're out of space! Stop spawning break From 793357cdfeab8f89d08648cfa4a7d2d065ab32aa Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Fri, 8 Mar 2019 23:47:50 +0100 Subject: [PATCH 056/737] Fix crash in mcl_hunger --- mods/PLAYER/mcl_hunger/hunger.lua | 2 +- mods/PLAYER/mcl_hunger/init.lua | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/PLAYER/mcl_hunger/hunger.lua b/mods/PLAYER/mcl_hunger/hunger.lua index d37d0514..81f37e71 100644 --- a/mods/PLAYER/mcl_hunger/hunger.lua +++ b/mods/PLAYER/mcl_hunger/hunger.lua @@ -116,7 +116,7 @@ local function poisonp(tick, time, time_left, damage, exhaustion, name) -- TODO: Introduce fatal poison at higher difficulties if player:get_hp()-damage > 0 then if mod_death_messages then - mcl_death_messages.player_damage(player, S("@1 succumbed to the poison."), name) + mcl_death_messages.player_damage(player, S("@1 succumbed to the poison.", name)) end player:set_hp(player:get_hp()-damage) end diff --git a/mods/PLAYER/mcl_hunger/init.lua b/mods/PLAYER/mcl_hunger/init.lua index 87812b8d..0e64a190 100644 --- a/mods/PLAYER/mcl_hunger/init.lua +++ b/mods/PLAYER/mcl_hunger/init.lua @@ -170,7 +170,7 @@ minetest.register_globalstep(function(dtime) -- TODO: Allow starvation at higher difficulty levels if hp-1 > 0 then if mod_death_messages then - mcl_death_messages.player_damage(player, S("@1 starved to death."), name) + mcl_death_messages.player_damage(player, S("@1 starved to death.", name)) end player:set_hp(hp-1) end From 9434baf9915112162ab858085f373e0f7387295d Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Fri, 8 Mar 2019 23:52:41 +0100 Subject: [PATCH 057/737] High pitch for baby monsters --- mods/ENTITIES/mcl_mobs/api.lua | 13 ++++++++----- mods/ENTITIES/mcl_mobs/api.txt | 1 + mods/ENTITIES/mobs_mc/zombie.lua | 2 ++ mods/ENTITIES/mobs_mc/zombiepig.lua | 1 + 4 files changed, 12 insertions(+), 5 deletions(-) diff --git a/mods/ENTITIES/mcl_mobs/api.lua b/mods/ENTITIES/mcl_mobs/api.lua index ae89a15e..7c66a5f5 100644 --- a/mods/ENTITIES/mcl_mobs/api.lua +++ b/mods/ENTITIES/mcl_mobs/api.lua @@ -384,8 +384,10 @@ local item_drop = function(self, cooked) -- no drops if disabled by setting if not mobs_drop_items then return end - -- no drops for child mobs - if self.child then return end + -- no drops for child mobs (except monster) + if (self.child and self.type ~= "monster") then + return + end local obj, item, num local pos = self.object:get_pos() @@ -740,7 +742,7 @@ local do_jump = function(self) if not self.jump or self.jump_height == 0 or self.fly - or self.child + or (self.child and self.type ~= "monster") or self.order == "stand" then return false end @@ -2546,7 +2548,7 @@ local mob_punch = function(self, hitter, tflp, tool_capabilities, dir) -- attack puncher and call other mobs for help if self.passive == false and self.state ~= "flop" - and self.child == false + and (self.child == false or self.type == "monster") and hitter:get_player_name() ~= self.owner and not mobs.invis[ name ] then @@ -3064,7 +3066,6 @@ minetest.register_entity(name, { pause_timer = 0, horny = false, hornytimer = 0, - child = false, gotten = false, health = 0, reach = def.reach or 3, @@ -3101,6 +3102,8 @@ minetest.register_entity(name, { rain_damage = def.rain_damage or 0, glow = def.glow, can_despawn = can_despawn, + child = def.child or false, + -- End of MCL2 extensions on_spawn = def.on_spawn, diff --git a/mods/ENTITIES/mcl_mobs/api.txt b/mods/ENTITIES/mcl_mobs/api.txt index 5baab263..10b21412 100644 --- a/mods/ENTITIES/mcl_mobs/api.txt +++ b/mods/ENTITIES/mcl_mobs/api.txt @@ -216,6 +216,7 @@ functions needed for the mob to work properly which contains the following: 'spawn_small_alternative': name of a smaller mob to use as replacement if spawning fails due to space requirements 'glow' same as in entity definition + 'child' if true, spawn mob as child Node Replacement ---------------- diff --git a/mods/ENTITIES/mobs_mc/zombie.lua b/mods/ENTITIES/mobs_mc/zombie.lua index 0b329c55..8f27ed3c 100644 --- a/mods/ENTITIES/mobs_mc/zombie.lua +++ b/mods/ENTITIES/mobs_mc/zombie.lua @@ -92,6 +92,7 @@ baby_zombie.visual_size = {x=zombie.visual_size.x/2, y=zombie.visual_size.y/2} baby_zombie.walk_velocity = 1.2 baby_zombie.run_velocity = 2.4 baby_zombie.sunlight_damage = 0 +baby_zombie.child = 1 mobs:register_mob("mobs_mc:baby_zombie", baby_zombie) @@ -113,6 +114,7 @@ baby_husk.collisionbox = {-0.25, -0.01, -0.25, 0.25, 0.94, 0.25} baby_husk.visual_size = {x=zombie.visual_size.x/2, y=zombie.visual_size.y/2} baby_husk.walk_velocity = 1.2 baby_husk.run_velocity = 2.4 +baby_husk.child = 1 mobs:register_mob("mobs_mc:baby_husk", baby_husk) diff --git a/mods/ENTITIES/mobs_mc/zombiepig.lua b/mods/ENTITIES/mobs_mc/zombiepig.lua index a4b1db60..b61d507f 100644 --- a/mods/ENTITIES/mobs_mc/zombiepig.lua +++ b/mods/ENTITIES/mobs_mc/zombiepig.lua @@ -96,6 +96,7 @@ baby_pigman.textures = { { baby_pigman.walk_velocity = 1.2 baby_pigman.run_velocity = 2.4 baby_pigman.light_damage = 0 +baby_pigman.child = 1 mobs:register_mob("mobs_mc:baby_pigman", baby_pigman) From 6f9e178084b4ab42075cef1c84b70ea8964cf7e1 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Fri, 8 Mar 2019 23:55:27 +0100 Subject: [PATCH 058/737] Baby zombies take sunlight damage --- mods/ENTITIES/mobs_mc/zombie.lua | 1 - 1 file changed, 1 deletion(-) diff --git a/mods/ENTITIES/mobs_mc/zombie.lua b/mods/ENTITIES/mobs_mc/zombie.lua index 8f27ed3c..da8cae1a 100644 --- a/mods/ENTITIES/mobs_mc/zombie.lua +++ b/mods/ENTITIES/mobs_mc/zombie.lua @@ -91,7 +91,6 @@ baby_zombie.collisionbox = {-0.25, -0.01, -0.25, 0.25, 0.94, 0.25} baby_zombie.visual_size = {x=zombie.visual_size.x/2, y=zombie.visual_size.y/2} baby_zombie.walk_velocity = 1.2 baby_zombie.run_velocity = 2.4 -baby_zombie.sunlight_damage = 0 baby_zombie.child = 1 mobs:register_mob("mobs_mc:baby_zombie", baby_zombie) From e37411dc1308f48860eddaf233bb6f9d09e5b155 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sat, 9 Mar 2019 00:10:59 +0100 Subject: [PATCH 059/737] Random pitch for eat/drink sounds --- mods/ITEMS/mcl_buckets/init.lua | 4 ++-- mods/PLAYER/mcl_hunger/hunger.lua | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_buckets/init.lua b/mods/ITEMS/mcl_buckets/init.lua index 3144bd81..e17a9863 100644 --- a/mods/ITEMS/mcl_buckets/init.lua +++ b/mods/ITEMS/mcl_buckets/init.lua @@ -28,14 +28,14 @@ mcl_buckets.liquids = {} local sound_place = function(itemname, pos) local def = minetest.registered_nodes[itemname] if def and def.sounds and def.sounds.place then - minetest.sound_play(def.sounds.place, {gain=1.0, pos = pos}) + minetest.sound_play(def.sounds.place, {gain=1.0, pos = pos, pitch = 1 + math.random(-10, 10)*0.005}) end end local sound_take = function(itemname, pos) local def = minetest.registered_nodes[itemname] if def and def.sounds and def.sounds.dug then - minetest.sound_play(def.sounds.dug, {gain=1.0, pos = pos}) + minetest.sound_play(def.sounds.dug, {gain=1.0, pos = pos, pitch = 1 + math.random(-10, 10)*0.005}) end end diff --git a/mods/PLAYER/mcl_hunger/hunger.lua b/mods/PLAYER/mcl_hunger/hunger.lua index 81f37e71..7d7306bd 100644 --- a/mods/PLAYER/mcl_hunger/hunger.lua +++ b/mods/PLAYER/mcl_hunger/hunger.lua @@ -148,6 +148,7 @@ function mcl_hunger.item_eat(hunger_change, replace_with_item, poisontime, poiso pos = pos, max_hear_distance = 12, gain = 1.0, + pitch = 1 + math.random(-10, 10)*0.005, }) else -- Assume the item is a food @@ -186,6 +187,7 @@ function mcl_hunger.item_eat(hunger_change, replace_with_item, poisontime, poiso pos = pos, max_hear_distance = 12, gain = 1.0, + pitch = 1 + math.random(-10, 10)*0.005, }) end From c98df597fc9b6f64406d977899957fdc65ee9496 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sat, 9 Mar 2019 00:18:21 +0100 Subject: [PATCH 060/737] Fix mob detection of fences and walls --- mods/ENTITIES/mcl_mobs/api.lua | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mods/ENTITIES/mcl_mobs/api.lua b/mods/ENTITIES/mcl_mobs/api.lua index 7c66a5f5..e331cf72 100644 --- a/mods/ENTITIES/mcl_mobs/api.lua +++ b/mods/ENTITIES/mcl_mobs/api.lua @@ -788,7 +788,8 @@ local do_jump = function(self) or minetest.registered_items[nod.name].walkable then if not nod.name:find("fence") - and not nod.name:find("gate") then + and not nod.name:find("fence_gate") + and not nod.name:find("wall") then local v = self.object:get_velocity() From 8b44e6fb7a913d44ed733168a0ec10dc4a182b29 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sat, 9 Mar 2019 00:24:53 +0100 Subject: [PATCH 061/737] Mobs: Also play jump sfx if not moving horizontal --- mods/ENTITIES/mcl_mobs/api.lua | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/mods/ENTITIES/mcl_mobs/api.lua b/mods/ENTITIES/mcl_mobs/api.lua index e331cf72..003ca495 100644 --- a/mods/ENTITIES/mcl_mobs/api.lua +++ b/mods/ENTITIES/mcl_mobs/api.lua @@ -801,7 +801,7 @@ local do_jump = function(self) -- when in air move forward minetest.after(0.3, function(self, v) - if not self.object:get_luaentity() then + if not self.object or not self.object:get_luaentity() then return end self.object:set_acceleration({ @@ -811,11 +811,9 @@ local do_jump = function(self) }) end, self, v) - if get_velocity(self) > 0 then - if self.jump_sound_cooloff <= 0 then - mob_sound(self, self.sounds.jump) - self.jump_sound_cooloff = 0.5 - end + if self.jump_sound_cooloff <= 0 then + mob_sound(self, self.sounds.jump) + self.jump_sound_cooloff = 0.5 end else self.facing_fence = true From a5b20b1bf0c4bc1e58a0d90771945894ed5e831d Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sat, 9 Mar 2019 00:44:24 +0100 Subject: [PATCH 062/737] Modify pitch of small slimes and magma cubes --- mods/ENTITIES/mcl_mobs/api.lua | 10 +++++++--- mods/ENTITIES/mcl_mobs/api.txt | 4 ++++ mods/ENTITIES/mobs_mc/slime+magma_cube.lua | 3 +++ 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/mods/ENTITIES/mcl_mobs/api.lua b/mods/ENTITIES/mcl_mobs/api.lua index 003ca495..ab35de47 100644 --- a/mods/ENTITIES/mcl_mobs/api.lua +++ b/mods/ENTITIES/mcl_mobs/api.lua @@ -107,11 +107,15 @@ local mob_sound = function(self, sound, is_opinion, fixed_pitch) end local pitch if not fixed_pitch then + local base_pitch = self.sounds.base_pitch + if not base_pitch then + base_pitch = 1 + end if self.child then - -- Children have high pitch - pitch = 1.5 + -- Children have higher pitch + pitch = base_pitch * 1.5 else - pitch = 1.0 + pitch = base_pitch end -- randomize the pitch a bit pitch = pitch + math.random(-10, 10) * 0.005 diff --git a/mods/ENTITIES/mcl_mobs/api.txt b/mods/ENTITIES/mcl_mobs/api.txt index 10b21412..f38d8ef1 100644 --- a/mods/ENTITIES/mcl_mobs/api.txt +++ b/mods/ENTITIES/mcl_mobs/api.txt @@ -131,6 +131,7 @@ functions needed for the mob to work properly which contains the following: 'makes_footstep_sound' when true you can hear mobs walking. 'sounds' this is a table with sounds of the mob 'distance' maximum distance sounds can be heard, default is 10. + 'base_pitch' base pitch to use adult mobs, default is 1.0 (MCL2 extension) 'random' played randomly from time to time. also played for overfeeding animal. 'war_cry' what you hear when mob starts to attack player. (currently disabled) @@ -142,6 +143,9 @@ functions needed for the mob to work properly which contains the following: 'fuse' sound played when mob explode timer starts. 'explode' sound played when mob explodes. + Note: For all sounds except fuse and explode, the pitch is slightly randomized from the base pitch + The pitch of children is 50% higher. + 'drops' table of items that are dropped when mob is killed, fields are: 'name' name of item to drop. 'chance' chance of drop, 1 for always, 2 for 1-in-2 chance etc. diff --git a/mods/ENTITIES/mobs_mc/slime+magma_cube.lua b/mods/ENTITIES/mobs_mc/slime+magma_cube.lua index da52d3bc..63a15932 100644 --- a/mods/ENTITIES/mobs_mc/slime+magma_cube.lua +++ b/mods/ENTITIES/mobs_mc/slime+magma_cube.lua @@ -114,6 +114,7 @@ local slime_big = { mobs:register_mob("mobs_mc:slime_big", slime_big) local slime_small = table.copy(slime_big) +slime_small.sounds.base_pitch = 1.15 slime_small.hp_min = 4 slime_small.hp_max = 4 slime_small.collisionbox = {-0.51, -0.01, -0.51, 0.51, 1.00, 0.51} @@ -128,6 +129,7 @@ slime_small.on_die = spawn_children_on_die("mobs_mc:slime_tiny", 4, 0.6, 1.0) mobs:register_mob("mobs_mc:slime_small", slime_small) local slime_tiny = table.copy(slime_big) +slime_tiny.sounds.base_pitch = 1.3 slime_tiny.hp_min = 1 slime_tiny.hp_max = 1 slime_tiny.collisionbox = {-0.2505, -0.01, -0.2505, 0.2505, 0.50, 0.2505} @@ -239,6 +241,7 @@ mobs:register_mob("mobs_mc:magma_cube_small", magma_cube_small) local magma_cube_tiny = table.copy(magma_cube_big) magma_cube_tiny.sounds.jump = "mobs_mc_magma_cube_small" magma_cube_tiny.sounds.death = "mobs_mc_magma_cube_small" +magma_cube_tiny.sounds.base_pitch = 1.25 magma_cube_tiny.hp_min = 1 magma_cube_tiny.hp_max = 1 magma_cube_tiny.collisionbox = {-0.2505, -0.01, -0.2505, 0.2505, 0.50, 0.2505} From 7899f6d4325892ebd19bc420dc958a5060ad9ae6 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sat, 9 Mar 2019 00:54:49 +0100 Subject: [PATCH 063/737] Tweak height fear of all mobs --- mods/ENTITIES/mobs_mc/blaze.lua | 2 +- mods/ENTITIES/mobs_mc/ender_dragon.lua | 1 - mods/ENTITIES/mobs_mc/ghast.lua | 1 - mods/ENTITIES/mobs_mc/slime+magma_cube.lua | 4 ++-- mods/ENTITIES/mobs_mc/villager_zombie.lua | 2 +- 5 files changed, 4 insertions(+), 6 deletions(-) diff --git a/mods/ENTITIES/mobs_mc/blaze.lua b/mods/ENTITIES/mobs_mc/blaze.lua index 21e752a3..c832fb70 100644 --- a/mods/ENTITIES/mobs_mc/blaze.lua +++ b/mods/ENTITIES/mobs_mc/blaze.lua @@ -65,7 +65,7 @@ mobs:register_mob("mobs_mc:blaze", { jump_height = 4, fly = true, jump_chance = 98, - fear_height = 120, + fear_height = 0, blood_amount = 0, glow = 14, }) diff --git a/mods/ENTITIES/mobs_mc/ender_dragon.lua b/mods/ENTITIES/mobs_mc/ender_dragon.lua index dd81ab14..06fb82bb 100644 --- a/mods/ENTITIES/mobs_mc/ender_dragon.lua +++ b/mods/ENTITIES/mobs_mc/ender_dragon.lua @@ -63,7 +63,6 @@ mobs:register_mob("mobs_mc:enderdragon", { jump_height = 14, stepheight = 1.2, jump_chance = 100, - fear_height = 120, fly = true, fly_in = {"air"}, dogshoot_switch = 1, diff --git a/mods/ENTITIES/mobs_mc/ghast.lua b/mods/ENTITIES/mobs_mc/ghast.lua index 2ed0fb95..44cf3496 100644 --- a/mods/ENTITIES/mobs_mc/ghast.lua +++ b/mods/ENTITIES/mobs_mc/ghast.lua @@ -73,7 +73,6 @@ mobs:register_mob("mobs_mc:ghast", { fly = true, fly_in = {"air"}, jump_chance = 98, - fear_height = 120, blood_amount = 0, }) diff --git a/mods/ENTITIES/mobs_mc/slime+magma_cube.lua b/mods/ENTITIES/mobs_mc/slime+magma_cube.lua index 63a15932..8e9f93f9 100644 --- a/mods/ENTITIES/mobs_mc/slime+magma_cube.lua +++ b/mods/ENTITIES/mobs_mc/slime+magma_cube.lua @@ -107,7 +107,7 @@ local slime_big = { walk_chance = 0, jump_height = 5.2, jump_chance = 100, - fear_height = 60, + fear_height = 0, spawn_small_alternative = "mobs_mc:slime_small", on_die = spawn_children_on_die("mobs_mc:slime_small", 4, 1.0, 1.5) } @@ -213,7 +213,7 @@ local magma_cube_big = { jump_height = 8, walk_chance = 0, jump_chance = 100, - fear_height = 100000, + fear_height = 0, spawn_small_alternative = "mobs_mc:magma_cube_small", on_die = spawn_children_on_die("mobs_mc:magma_cube_small", 3, 0.8, 1.5) } diff --git a/mods/ENTITIES/mobs_mc/villager_zombie.lua b/mods/ENTITIES/mobs_mc/villager_zombie.lua index 7e8037df..e23f86bb 100644 --- a/mods/ENTITIES/mobs_mc/villager_zombie.lua +++ b/mods/ENTITIES/mobs_mc/villager_zombie.lua @@ -75,7 +75,7 @@ mobs:register_mob("mobs_mc:villager_zombie", { lava_damage = 5, sunlight_damage = 1, view_range = 16, - fear_height = 5, + fear_height = 4, }) From f3b4c567721a2263f3a179af521f9b425ec5f6b4 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sat, 9 Mar 2019 01:04:18 +0100 Subject: [PATCH 064/737] Change default mob view range to 16 --- mods/ENTITIES/mcl_mobs/api.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ENTITIES/mcl_mobs/api.lua b/mods/ENTITIES/mcl_mobs/api.lua index ab35de47..3a5a8273 100644 --- a/mods/ENTITIES/mcl_mobs/api.lua +++ b/mods/ENTITIES/mcl_mobs/api.lua @@ -3029,7 +3029,7 @@ minetest.register_entity(name, { visual_size = def.visual_size or {x = 1, y = 1}, mesh = def.mesh, makes_footstep_sound = def.makes_footstep_sound or false, - view_range = def.view_range or 5, + view_range = def.view_range or 16, walk_velocity = def.walk_velocity or 1, run_velocity = def.run_velocity or 2, damage = max(0, (def.damage or 0) * difficulty), From 47ef78bf6ab77a726f2b80e609cda3a078d4e8db Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sat, 9 Mar 2019 01:50:00 +0100 Subject: [PATCH 065/737] Fix group attack for slime, zombie and zombiepig --- mods/ENTITIES/mcl_mobs/api.lua | 18 +++++++++++++----- mods/ENTITIES/mcl_mobs/api.txt | 3 +++ mods/ENTITIES/mobs_mc/slime+magma_cube.lua | 2 +- mods/ENTITIES/mobs_mc/zombie.lua | 5 ++--- mods/ENTITIES/mobs_mc/zombiepig.lua | 2 +- 5 files changed, 20 insertions(+), 10 deletions(-) diff --git a/mods/ENTITIES/mcl_mobs/api.lua b/mods/ENTITIES/mcl_mobs/api.lua index 3a5a8273..901fe07f 100644 --- a/mods/ENTITIES/mcl_mobs/api.lua +++ b/mods/ENTITIES/mcl_mobs/api.lua @@ -2569,12 +2569,20 @@ local mob_punch = function(self, hitter, tflp, tool_capabilities, dir) if obj then - -- only alert members of same mob - if obj.group_attack == true + -- only alert members of same mob or friends + if obj.group_attack and obj.state ~= "attack" - and obj.owner ~= name - and obj.name == self.name then - do_attack(obj, hitter) + and obj.owner ~= name then + if obj.name == self.name then + do_attack(obj, hitter) + elseif type(obj.group_attack) == "table" then + for i=1, #obj.group_attack do + if obj.name == obj.group_attack[i] then + do_attack(obj, hitter) + break + end + end + end end -- have owned mobs attack player threat diff --git a/mods/ENTITIES/mcl_mobs/api.txt b/mods/ENTITIES/mcl_mobs/api.txt index f38d8ef1..b3e2f03e 100644 --- a/mods/ENTITIES/mcl_mobs/api.txt +++ b/mods/ENTITIES/mcl_mobs/api.txt @@ -78,6 +78,8 @@ functions needed for the mob to work properly which contains the following: punches when nearby. 'group_attack' when true has same mob type grouping together to attack offender. + [MCL2 extension:] When a table, this is a list of + mob types that will get alerted as well (besides same mob type) 'attack_type' tells the api what a mob does when attacking the player or another mob: 'dogfight' is a melee attack when player is within mob reach. @@ -222,6 +224,7 @@ functions needed for the mob to work properly which contains the following: 'glow' same as in entity definition 'child' if true, spawn mob as child + Node Replacement ---------------- diff --git a/mods/ENTITIES/mobs_mc/slime+magma_cube.lua b/mods/ENTITIES/mobs_mc/slime+magma_cube.lua index 8e9f93f9..4fbeea76 100644 --- a/mods/ENTITIES/mobs_mc/slime+magma_cube.lua +++ b/mods/ENTITIES/mobs_mc/slime+magma_cube.lua @@ -58,7 +58,7 @@ end local slime_big = { type = "monster", pathfinding = 1, - group_attack = true, + group_attack = { "mobs_mc:slime_big", "mobs_mc:slime_small", "mobs_mc:slime_tiny" }, hp_min = 16, hp_max = 16, collisionbox = {-1.02, -0.01, -1.02, 1.02, 2.03, 1.02}, diff --git a/mods/ENTITIES/mobs_mc/zombie.lua b/mods/ENTITIES/mobs_mc/zombie.lua index da8cae1a..f08d364d 100644 --- a/mods/ENTITIES/mobs_mc/zombie.lua +++ b/mods/ENTITIES/mobs_mc/zombie.lua @@ -65,8 +65,8 @@ local zombie = { fear_height = 4, pathfinding = 1, jump = true, - --jump_height = 3, - group_attack = true, + jump_height = 4, + group_attack = { "mobs_mc:zombie", "mobs_mc:baby_zombie", "mobs_mc:husk", "mobs_mc:baby_husk" }, drops = drops_zombie, animation = { speed_normal = 25, speed_run = 50, @@ -75,7 +75,6 @@ local zombie = { run_start = 0, run_end = 40, }, lava_damage = 4, - -- TODO: Burn mob only when in direct sunlight sunlight_damage = 2, view_range = 16, attack_type = "dogfight", diff --git a/mods/ENTITIES/mobs_mc/zombiepig.lua b/mods/ENTITIES/mobs_mc/zombiepig.lua index b61d507f..f21ea4fa 100644 --- a/mods/ENTITIES/mobs_mc/zombiepig.lua +++ b/mods/ENTITIES/mobs_mc/zombiepig.lua @@ -18,7 +18,7 @@ local pigman = { hp_max = 20, armor = 90, attack_type = "dogfight", - group_attack = true, + group_attack = { "mobs_mc:pigman", "mobs_mc:baby_pigman" }, damage = 9, reach = 2, collisionbox = {-0.3, -0.01, -0.3, 0.3, 1.94, 0.3}, From 10035a64af04b3d09ea409edcf2d7208615fe3be Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sat, 9 Mar 2019 01:57:51 +0100 Subject: [PATCH 066/737] Fix mobs not retaliating if friend died with 1 hit --- mods/ENTITIES/mcl_mobs/api.lua | 29 +++++++++++++---------------- 1 file changed, 13 insertions(+), 16 deletions(-) diff --git a/mods/ENTITIES/mcl_mobs/api.lua b/mods/ENTITIES/mcl_mobs/api.lua index 901fe07f..335fd01f 100644 --- a/mods/ENTITIES/mcl_mobs/api.lua +++ b/mods/ENTITIES/mcl_mobs/api.lua @@ -2434,6 +2434,8 @@ local mob_punch = function(self, hitter, tflp, tool_capabilities, dir) hitter:set_wielded_item(weapon) end + local die = false + -- only play hit sound and show blood effects if damage is 1 or over if damage >= 1 then @@ -2475,21 +2477,14 @@ local mob_punch = function(self, hitter, tflp, tool_capabilities, dir) -- do damage self.health = self.health - floor(damage) - -- exit here if dead, special item check - if weapon:get_name() == "mobs:pick_lava" then - if check_for_death(self, "lava", {type = "punch", - puncher = hitter}) then - return - end - else - if check_for_death(self, "hit", {type = "punch", - puncher = hitter}) then - return - end + -- skip future functions if dead, except alerting others + if check_for_death(self, "hit", {type = "punch", puncher = hitter}) then + die = true end -- knock back effect (only on full punch) - if self.knock_back + if not die + and self.knock_back and tflp >= punch_interval then local v = self.object:get_velocity() @@ -2524,7 +2519,7 @@ local mob_punch = function(self, hitter, tflp, tool_capabilities, dir) end -- END if damage -- if skittish then run away - if self.runaway == true then + if not die and self.runaway == true then local lp = hitter:get_pos() local s = self.object:get_pos() @@ -2555,9 +2550,11 @@ local mob_punch = function(self, hitter, tflp, tool_capabilities, dir) and hitter:get_player_name() ~= self.owner and not mobs.invis[ name ] then - -- attack whoever punched mob - self.state = "" - do_attack(self, hitter) + if not die then + -- attack whoever punched mob + self.state = "" + do_attack(self, hitter) + end -- alert others to the attack local objs = minetest.get_objects_inside_radius(hitter:get_pos(), self.view_range) From a15c58a2dca4c869c67c85972f1d45ae926111d3 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sat, 9 Mar 2019 03:58:41 +0100 Subject: [PATCH 067/737] Fix typos in mcl_core --- mods/ITEMS/mcl_core/nodes_base.lua | 2 +- mods/ITEMS/mcl_core/nodes_climb.lua | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_core/nodes_base.lua b/mods/ITEMS/mcl_core/nodes_base.lua index f76a7f86..d395c33a 100644 --- a/mods/ITEMS/mcl_core/nodes_base.lua +++ b/mods/ITEMS/mcl_core/nodes_base.lua @@ -730,7 +730,7 @@ minetest.register_node("mcl_core:goldblock", { minetest.register_node("mcl_core:diamondblock", { description = S("Block of Diamond"), - _doc_items_longdesc = S("A block of diamond mostly a shiny decorational block but also useful as a compact storage of diamonds."), + _doc_items_longdesc = S("A block of diamond is mostly a shiny decorational block but also useful as a compact storage of diamonds."), tiles = {"default_diamond_block.png"}, is_ground_content = false, stack_max = 64, diff --git a/mods/ITEMS/mcl_core/nodes_climb.lua b/mods/ITEMS/mcl_core/nodes_climb.lua index eda1fc66..2c71f677 100644 --- a/mods/ITEMS/mcl_core/nodes_climb.lua +++ b/mods/ITEMS/mcl_core/nodes_climb.lua @@ -79,7 +79,7 @@ minetest.register_node("mcl_core:ladder", { minetest.register_node("mcl_core:vine", { description = S("Vines"), - _doc_items_longdesc = S("Vines are climbable blocks which can be placed on the sides solid full-cube blocks. Vines slowly grow and spread."), + _doc_items_longdesc = S("Vines are climbable blocks which can be placed on the sides of solid full-cube blocks. Vines slowly grow and spread."), drawtype = "signlike", tiles = {"mcl_core_vine.png"}, inventory_image = "mcl_core_vine.png", From 79a3eb23a7644930b9997ac58f9a110bad9e7ba1 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sat, 9 Mar 2019 04:45:43 +0100 Subject: [PATCH 068/737] Add German translation of mcl_core --- mods/ITEMS/mcl_core/locale/mcl_core.de.tr | 239 ++++++++++++++++++++++ mods/ITEMS/mcl_core/locale/template.tr | 238 +++++++++++++++++++++ 2 files changed, 477 insertions(+) create mode 100644 mods/ITEMS/mcl_core/locale/mcl_core.de.tr create mode 100644 mods/ITEMS/mcl_core/locale/template.tr diff --git a/mods/ITEMS/mcl_core/locale/mcl_core.de.tr b/mods/ITEMS/mcl_core/locale/mcl_core.de.tr new file mode 100644 index 00000000..717ccf35 --- /dev/null +++ b/mods/ITEMS/mcl_core/locale/mcl_core.de.tr @@ -0,0 +1,239 @@ +# textdomain: mcl_core +%s could not survive in lava.=%s konnte nicht in Lava überleben. +%s died in lava.=%s starb in Lava. +%s melted in lava.=%s schmolz in der Lava. +%s took a bath in a hot lava tub.=%s nahm ein Bad in einer heißen Lavawanne. +A block of diamond is mostly a shiny decorational block but also useful as a compact storage of diamonds.=Ein Diamantblock ist hauptsächlich ein glänzender Dekorationsblock, aber er ist auch nützlich zur kompakten Aufbewahrung von Diamanten. +A block of emerald is mostly a shiny decorational block but also useful as a compact storage of emeralds.=Ein Smaragdblock ist hauptsächlich ein glänzender Dekorationsblock, aber er ist auch nützlich zur kompakten Aufbewahrung von Smaragden. +A block of gold is mostly a shiny decorational block but also useful as a compact storage of gold ingots.=Ein Goldblock ist hauptsächlich ein glänzender Dekorationsblock, aber er ist auch nützlich zur kompakten Aufbewahrung von Goldbarren. +A block of iron is mostly a decorational block but also useful as a compact storage of iron ingots.=Ein Eisenblock ist hauptsächlich ein glänzender Dekorationsblock, aber er ist auch nützlich zur kompakten Aufbewahrung von Eisenbarren. +A cactus can only be placed on top of another cactus or any sand.=Ein Kaktus kann nur auf einem anderen Kaktus oder auf beliebigem Sand platziert werden. +A decorational and mostly transparent block.=Ein Dekoblock, der größtenteils transparent ist. +A grass block is dirt with a grass cover. Grass blocks are resourceful blocks which allow the growth of all sorts of plants. They can be turned into farmland with a hoe and turned into grass paths with a shovel. In light, the grass slowly spreads onto dirt nearby. Under an opaque block or a liquid, a grass block may turn back to dirt.=Ein Grasblock ist Erde mit einer Grasschicht. Grasblöcke sind vielseitige Blöcke, die das Wachstum aller möglichen Pflanzen fördern. Mit einer Hacke kann man das Land bestellen und einen Ackerboden machen. Mit einer Schaufel verwandelt man ihn in einen Graspfad. Im Licht wird das Gras sich langsam auf benachbarte Erde ausbreiten. Unter einem lichtundurchlässigen Block kann sich dieser Block wieder zurück zu Erde verwandeln. +A lapis lazuli block is mostly a decorational block but also useful as a compact storage of lapis lazuli.=Ein Lapislazuliblock ist hauptsächlich ein Deko-Block aber er ist auch nützlich zur kompakten Aufbewahrung von Lapislazuli. +A lava source sets fire to a couple of air blocks above when they're next to a flammable block.=Eine Lavaquelle zündet einige Luftblöcke über ihr an, wenn sie sich neben einem entzündlichen Block befinden. +A piece of ladder which allows you to climb vertically. Ladders can only be placed on the side of solid blocks and not on glass, leaves, ice, slabs, glowstone, nor sea lanterns.=Ein Leiterstück, mit dem Sie vertikal klettern können. Leitern können nur an der Seite fester Blöcke und nicht an Glas, Blättern, Eis, Platten, Leuchtsteinen oder Ozeanlaternen platziert werden. +Acacia Bark=Akazienrinde +Acacia Leaves=Akazienblätter +Acacia Sapling=Akaziensetzling +Acacia Wood=Akazienholz +Acacia Wood Planks=Akazienholzplanken +Acacia leaves are grown from acacia trees.=Akazienblätter wachsen an Akazienbäumen. +Andesite=Andesit +Andesite is an igneous rock.=Andesit ist ein magmatisches Gestein. +Apple=Apfel +Apples are food items which can be eaten.=Äpfel sind essbare Gegenstände. +Barrier=Barriere +Barriers are invisble walkable blocks. They are used to create boundaries of adventure maps and the like. Monsters and animals won't appear on barriers, and fences do not connect to barriers. Other blocks can be built on barriers like on any other block.=Barrieren sind unsichtbare feste Blöcke. Sie sind nützlich, um Grenzen für Abenteuerkarten und ähnliches zu bauen. Monster und Tiere werden auf Barrieren nicht auftauchen, und Zäune verbinden sich nicht mit Barrieren. Andere Blöcke können an Barrieren gebaut werden, wie bei allen anderen Blöcken. +Bedrock=Grundgestein +Bedrock is a very hard type of rock. It can not be broken, destroyed, collected or moved by normal means, unless in Creative Mode.=Grundgestein ist ein sehr harter Gesteinstyp. Er kann unter normalen Umständen nicht abgebaut, zerstört, aufgesammelt oder verschoben werden, außer im Kreativmodus. +Birch Bark=Birkenrinde +Birch Leaves=Birkenblätter +Birch Sapling=Birkensetzling +Birch Wood=Birkenholz +Birch Wood Planks=Birkenholzplanken +Birch leaves are grown from birch trees.=Birkenblätter wachsen an Birken. +Black Stained Glass=Schwarzes Glas +Block of Coal=Kohleblock +Block of Diamond=Diamantblock +Block of Emerald=Smaragdblock +Block of Gold=Goldblock +Block of Iron=Eisenblock +Blocks of coal are useful as a compact storage of coal and very useful as a furnace fuel. A block of coal is as efficient as 10 coal.=Kohleblöcke sind für eine kompakte Aufbewahrung von Kohle nützlich und sehr nützlich als Ofenbrennstoff. Ein Kohleblock ist so effizient wie 10 mal Kohle. +Blue Stained Glass=Blaues Glas +Bone Block=Knockenblock +Bone blocks are decorational blocks and a compact storage of bone meal.=Knochenblöcke sind Deko-Blöcke und geeignet zur kompakten Aufbewahrung von Knochenmehl. +Bowl=Schale +Bowls are mainly used to hold tasty soups.=Schalen werden hauptsächlich für leckere Suppen gebraucht. +Brick=Ziegel +Brick Block=Ziegelblock +Brick blocks are a good building material for building solid houses and can take quite a punch.=Ziegelblöcke sind ein gutes Baumaterial für den Bau stabiler Gebäude und halten einiges aus. +Bricks are used to craft brick blocks.=Ziegel werden zur Herstellung von Ziegelblöcken benötigt. +Brown Stained Glass=Braunes Glas +Cactus=Kaktus +Charcoal=Holzkohle +Charcoal is an alternative furnace fuel created by cooking wood in a furnace. It has the same burning time as coal and also shares many of its crafting recipes, but it can not be used to create coal blocks.=Holzkohle ist ein alternativer Brennstoff. Er entsteht, wenn Holz im Ofen verkohlt wird. Er brennt genau so lange wie Kohle und hat fast identische Herstellungsrezepte, aber es können keine Kohleblöcke damit gemacht werden. +Chiseled Red Sandstone=Gemeißelter roter Sandstein +Chiseled Sandstone=Gemeißelter Sandstein +Chiseled Stone Bricks=Gemeißelte Steinziegel +Chiseled red sandstone is a decorational building block.=Gemeißelter roter Sandstein ist ein dekorativer Block zum Bauen. +Chiseled sandstone is a decorational building block.=Gemeißelter Sandstein ist ein dekorativer Block zum Bauen. +Clay=Ton +Clay Ball=Tonklumpen +Clay balls are a raw material, mainly used to create bricks in the furnace.=Tonklumpen sind ein Rohstoff, sie werden hauptsächlich zur Ziegelherstellung im Ofen benutzt. +Clay is a versatile kind of earth commonly found at beaches underwater.=Ton ist eine vielseitige Art Erde, die oft an Stränden unter dem Wasser gefunden werden kann. +Coal=Kohle +Coal Ore=Kohleerz +Coarse Dirt=Grobe Erde +Coarse dirt acts as a soil for some plants and is similar to dirt, but it will never grow a cover.=Große Erde ist für einige Pflanzen ein Erdboden und ähnlich wie Erde, aber auf ihr wird nie eine Grasschicht oder ähnliches wachsen. +Cobblestone=Kopfsteinpflaster +Cobweb=Spinnennetz +Cobwebs can be walked through, but significantly slow you down.=Spinnennetze können passiert werden, aber sie verlangsamen Sie beträchtlich. +Cracked Stone Bricks=Brüchige Steinziegel +Cut Red Sandstone=Geschliffener roter Sandstein +Cut Sandstone=Geschliffener Sandstein +Cut red sandstone is a decorational building block.=Geschliffener roter Sandstein ist ein dekorativer Block zum Bauen. +Cut sandstone is a decorational building block.=Geschliffener Sandstein ist ein dekorativer Block zum Bauen. +Cyan Stained Glass=Türkises Glas +Dark Oak Bark=Dunkeleichenrinde +Dark Oak Leaves=Dunkeleichenblätter +Dark Oak Sapling=Dunkeleichensetzling +Dark Oak Wood=Dunkeleichenholz +Dark Oak Wood Planks=Dunkeleichenholzplanken +Dark oak leaves are grown from dark oak trees.=Dunkeleichenblätter wachsen an Dunkeleichen. +Dark oak saplings can grow into dark oaks, but only in groups. A lonely dark oak sapling won't grow. A group of four dark oak saplings grows into a dark oak after some time when they are placed on soil (such as dirt) in a 2×2 square and exposed to light.=Dunkeleichensetzlinge können zu Dunkeleichen heranwachsen, aber nur in Gruppen. Ein einsamer Dunkeleichensetzling wird nicht wachsen. Eine Gruppe aus vier Dunkeleichensetzlingen werden nach etwas Zeit zu einer Dunkeleiche heranwachen, wenn sie auf einem Erdboden (wie Erde) in einem 2×2-Quadrat platziert wurden und genügend Licht ausgesetzt sind. +Dead Bush=Toter Busch +Dead bushes are unremarkable plants often found in dry areas. They can be harvested for sticks.=Tote Büsche sind uninteressante Pflanzen, die oft in trockenen Gebieten vorkommen. +Diamond=Diamant +Diamond Ore=Diamanterz +Diamond ore is rare and can be found in clusters near the bottom of the world.=Diamanterz ist selten und kann in kleinen Ansammlungen in der Nähe des Weltbodens gefunden werden. +Diamonds are precious minerals and useful to create the highest tier of armor and tools.=Diamanten sind kostbare Mineralien, die für die hochwertigsten Rüstungen und Werkzeuge gebraucht werden. +Diorite=Diorit +Diorite is an igneous rock.=Diorit ist ein vulkanisches Gestein. +Dirt=Erde +Dirt acts as a soil for a few plants. When in light, this block may grow a grass or mycelium cover if such blocks are nearby.=Erde dient als Nährboden für einige Pflanzen. Im Licht könnte auf diesem Block eine Gras- oder Myzelschicht wachsen, wenn solche Blöcke in der Nähe sind. +Emerald=Smaragd +Emerald Ore=Smaragderz +Emerald ore is the ore of emeralds. It is very rare and can be found alone, not in clusters.=Smaragderz ist das Erz von Smaragden. Es ist sehr selten und kann nur einzeln gefunden werden, nicht in Ansammlungen. +Emeralds are not very useful on their own, but they can exchanged for gold ingots by crafting.=Smaragde sind nicht besonders nützlich, aber man kann sie in der Fertigung durch Goldbarren eintauschen. +Flint=Feuerstein +Flint is a raw material.=Feuerstein ist ein Rohstoff. +Flowing Lava=Fließende Lava +Flowing Water=Fließendes Wasser +Frosted Ice=Brüchiges Eis +Frosted ice is a short-lived solid translucent block. It melts into a water source within a few seconds.=Brüchiges Eis ist ein kurzlebiger durchscheinender Block. Er wird sich in einigen Sekunden zu einer Wasserquelle verwandeln. +Glass=Glas +Gold Ingot=Goldbarren +Gold Nugget=Goldklumpen +Gold Ore=Golderz +Gold nuggets are very small pieces of molten gold; the main purpose is to create gold ingots.=Goldklumpen sind sehr kleine Stücke geschmolzenes Gold; ihr Hauptzweck besteht darin, Goldbarren herzustellen. +Golden Apple=Goldener Apfel +Golden apples are precious food items which can be eaten.=Goldene Äpfel sind kostbare Lebensmittel. +Granite=Granit +Grass Block=Grasblock +Grass Path=Graspfad +Grass paths are a decorational variant of grass blocks. Their top has a different color and they are a bit lower than grass blocks, making them useful to build footpaths. Grass paths can be created with a shovel. A grass path turns into dirt when it is below a solid block.=Graspfade sind eine dekorative Variante von Grasblöcken. Ihre Oberseite hat eine andere Farbe und sie sind etwas niedriger als Grasblöcke, wodurch sie nützlich sind, um Fußwege zu errichten. Graspfade werden mit einer Schaufel errichtet. Ein Grasphad verwandelt sich in Erde, wenn er sich unter einem festen Block befindet. +Gravel=Kies +Green Stained Glass=Grünes Glas +Grey Stained Glass=Graues Glas +Ice=Eis +Ice is a translucent solid block usually found in cold areas. It melts near block light sources at a light level of 12 or higher. When it melts or is broken while resting on top of another block, it will turn into a water source.=Eis ist ein durchscheinender fester Block, der oft in kalten Gebieten gefunden werden kann. Er schmitzt in der nähe von Block-Lichtquellen bei einer Helligkeit von 12 oder höher. Wenn es schmilzt oder abgeaut wird, und darunter ein anderer Block war, wird er sich in eine Wasserquelle verwandeln. +In the End dimension, starting a fire on this block will create an eternal fire.=In der Ende-Dimension wird Feuer auf diesem Block ewig brennen. +Iron Ingot=Eisenbarren +Iron Nugget=Eisenklumpen +Iron Ore=Eisenerz +Iron nuggets are very small pieces of molten iron; the main purpose is to create iron ingots.=Eisenklumpen sind sehr kleine Brocken aus geschmolzenem Eisen; ihr Hauptzweck besteht darin, Eisenbarren herzustellen. +Jungle Bark=Dschungelrinde +Jungle Leaves=Dschungelblätter +Jungle Sapling=Dschungelsetzling +Jungle Wood=Dschungelholz +Jungle Wood Planks=Dschungelholzplanken +Jungle leaves are grown from jungle trees.=Dschungelblätter wachsen an Dschungelbäumen. +Ladder=Leiter +Lapis Lazuli Block=Lapislazuliblock +Lapis Lazuli Ore=Lapislazulierz +Lapis lazuli ore is the ore of lapis lazuli. It can be rarely found in clusters near the bottom of the world.=Lapislazulierz ist das Erz von Lapislazuli. Es kann relativ selten in Ansammlungen in der Nähe des Weltbodens gefunden werden. +Lava Source=Lavaquelle +Lava is hot and rather dangerous. Don't touch it, it will hurt you a lot and it is hard to get out.=Lava ist heiß und ziemlich gefährlich. Berühren Sie sie nicht, es wird Sie verletzen und es ist schwierig, ihr zu entkommen. +Light Blue Stained Glass=Hellblaues Glas +Light Grey Stained Glass=Hellgraues Glas +Lime Stained Glass=Lindgrünes Glas +Lit Redstone Ore=Leuchtendes Redstoneerz +Magenta Stained Glass=Magenta Glas +Molten gold. It is used to craft armor, tools, and whatnot.=Geschmolzenes Gold. Es wird benutzt, um Rüstungen, Werkzeuge, und anderes herzustellen. +Molten iron. It is used to craft armor, tools, and whatnot.=Geschmolzenes Eisen. Es wird benutzt, um Rüstungen, Werkzeuge, und vieles mehr herzustellen. + +Moss Stone=Moosstein +Mossy Stone Bricks=Moosige Steinziegel +Mycelium=Myzel +Mycelium is a type of dirt and the ideal soil for mushrooms. Unlike other dirt-type blocks, it can not be turned into farmland with a hoe. In light, mycelium slowly spreads over nearby dirt. Under an opaque block or a liquid, it eventually turns back into dirt.=Myzel ist eine Art Erde und der perfekte Nährboden für Pilze. Anders als bei anderen erdähnlichen Blöcken kann es mit einer Hacke nicht zu Ackerboden verwandelt werden. Im Licht wird sich Myzel langsam auf benachbarte Erde ausbreiten. Unter einem lichtundurchlässigen Block oder einer Flüssigkeit wird es sich früher oder später zurück zu Erde verwandeln. +Oak Bark=Eichenrinde +Oak Leaves=Eichenblätter +Oak Sapling=Eichensetzling +Oak Wood=Eichenholz +Oak Wood Planks=Eichenholzplanken +Oak leaves are grown from oak trees.=Eichenblätter wachsen von Eichen. +Obsidian=Obsidian +Obsidian is an extremely hard mineral with an enourmous blast-resistance. Obsidian is formed when water meets lava.=Obsidian ist ein extrem hartes Mineral mit einem enormen Sprengwiderstand. +One of the most common blocks in the world, almost the entire underground consists of stone. It sometimes contains ores. Stone may be created when water meets lava.=Eines der häufigsten Blöcke der Welt, fast der ganze Untergrund besteht aus stein. Er enthält manchmal Erze. Stein kann entstehen, wenn Wasser auf Lava trifft. +Orange Stained Glass=Orange Glas +Packed Ice=Packeis +Packed ice is a compressed form of ice. It is opaque and solid.=Packeis ist eine kompakte Eisform. Es ist undurchsichtig und fest. +Paper=Papier +Paper is used to craft books and maps.=Papier wird benutzt, um Bücher und Karten herzustellen. +Pink Stained Glass=Rosa Glas +Podzol=Podsol +Podzol is a type of dirt found in taiga forests. Only a few plants are able to survive on it.=Podsol ist eine Art Erde, die man in Taigawäldern finden kann. Nur wenige Pflanzen können hierauf wachsen. +Polished Andesite=Polierter Andesit +Polished Diorite=Polierter Diorit +Polished Granite=Polierter Granit +Polished Stone=Polierter Stein +Polished andesite is a decorational building block made from andesite.=Polierter Andesit ist ein dekorativer Block zum Bauen, der aus Andesit gemacht wurde. +Polished diorite is a decorational building block made from diorite.=Polierter Diorit ist ein dekorativer Block zum Bauen, der aus Diorit gemacht wurde. +Polished granite is a decorational building block made from granite.=Polierter Granit ist ein dekorativer Block zum Bauen, der aus Granit gemacht wurde. +Purple Stained Glass=Violettes Glas +Realm Barrier=Reichsbarriere +Red Sand=Roter Sand +Red Sandstone=Roter Sandstein +Red Stained Glass=Rotes Glas +Red sand is found in large quantities in mesa biomes.=Roter Sand kommt in großen Mengen bei Tafelbergbiomen vor. +Red sandstone is compressed red sand and is a rather soft kind of stone.=Roter Sandstein ist komprimierter roter Sand und ein relativ weiches Gestein. +Redstone Ore=Redstone-Erz +Redstone ore is commonly found near the bottom of the world. It glows when it is punched or walked upon.=Redstone-Erz kommt oft in der Nähe des Weltbodens vor. Er leuchtet, wenn er berührt wird. +Sand=Sand +Sand is found in large quantities at beaches and deserts.=Sand kommt in großen Mengen an Stränden und in Wüsten vor. +Sandstone=Sandstein +Sandstone is compressed sand and is a rather soft kind of stone.=Sandstein ist komprimierter Sand und ein relativ weiches Gestein. +Slime Block=Schleimblock +Slime blocks are very bouncy and prevent fall damage.=Schleimblöcke sind sehr sprunghaft und verhindern Fallschaden. +Smooth Red Sandstone=Weicher roter Sandstein +Smooth Sandstone=Weicher Sandstein +Smooth red sandstone is a decorational building block.=Weicher roter Sandstein ist ein decorativer Block zum Bauen. +Smooth sandstone is compressed sand and is a rather soft kind of stone.=Weicher Sandstein ist komprimierter Sand und ein relativ weiches Gestein. +Snow=Schnee +Some coal contained in stone, it is very common and can be found inside stone in medium to large clusters at nearly every height.=Etwas Kohle im Stein, es kommt sehr häufig vor und kann in mittelgroßen bis großen Ansammlungen im Stein bei fast jeder Höhe gefunden werden. +Some iron contained in stone, it is prety common and can be found below sea level.=Etwas Eisen umschlossen von Stein, es ist recht verbreitet und kann unter der Meeresoberfläche gefunden werden. +Spruce Bark=Fichtenrinde +Spruce Leaves=Fichtenblätter +Spruce Sapling=Fichtensetzling +Spruce Wood=Fichtenholz +Spruce Wood Planks=Fichtenholzplanken +Spruce leaves are grown from spruce trees.=Fichtenblätter wachsen an Fichten. +Stained glass is a decorational and mostly transparent block which comes in various different colors.=Farbglas ist ein dekorativer und größtenteils durchsichtiger Block, der in verschiedenen Farben daherkommt. +Stick=Stock +Sticks are a very versatile crafting material; used in countless crafting recipes.=Stöcke sind ein vielseitiges Material, sie werden in zahllosen Fertigungsrezepten gebraucht. +Stone=Stein +Stone Bricks=Steinziegel +Sugar=Zucker +Sugar Canes=Zuckerrohr +Sugar canes are a plant which has some uses in crafting. Sugar canes will slowly grow up to 3 blocks when they are next to water and are placed on a grass block, dirt, sand, red sand, podzol or coarse dirt. When a sugar cane is broken, all sugar canes connected above will break as well.=Zuckerrohr ist eine Pflanze, die in der Herstellung gebraucht wird. Zuckerrohr wird in der Nähe von Wasser bis zu 3 zusätzliche Blöcke wachsen lassen, wenn sie sich neben Wasser befinden und auf einem Grasblock, auf Erde, Sand, roten Sand, Podsol oder grobe Erde platziert wurden. Wird ein Zuckerrohr abgebrochen, werden alle verbundenen Zuckerrohrblöcke ebenfalls abbrechen. +Sugar canes can only be placed top of other sugar canes and on top of blocks on which they would grow.=Zuckerrohr kann nur auf Zuckerrohr platziert werden und auf Blöcken, auf denen Zuckerrohr wachsen würde. +Sugar comes from sugar canes and is used to make sweet foods.=Zucker kommt von Zuckerrohr und wird benutzt, um süße Lebensmittel zu machen. +The trunk of a birch tree.=Der Baumstamm einer Birke. +The trunk of a dark oak tree.=Der Baumstamm einer Dunkeleiche. +The trunk of a jungle tree.=Der Baumstamm eines Dschungelbaums. +The trunk of a spruce tree.=Der Baumstamm einer Fichte. +The trunk of an acacia.=Der Baumstamm einer Akazie. +The trunk of an oak tree.=Der Baumstamm einer Eiche. +This block consists of a couple of loose stones and can't support itself.=Diser Block besteht aus ein paar losen Steinchen und kann sich nicht selbst tragen. +This is a decorative block surrounded by the bark of a tree trunk.=Dies ist ein dekorativer Block, der von der Rinde eines Baumstamms umgeben ist. +This is a full block of snow. Snow of this thickness is usually found in areas of extreme cold.=Ein ganzer Block aus Schnee. Schnee von dieser Dicke wird üblicherweise in Gebieten extremer Kälte gefunden. +This is a piece of cactus commonly found in dry areas, especially deserts. Over time, cacti will grow up to 3 blocks high on sand or red sand. A cactus hurts living beings touching it with a damage of 1 HP every half second. When a cactus block is broken, all cactus blocks connected above it will break as well.=Dies ist ein Teil eines Kaktus, der für gewöhnlich in trockenen Gebieten wächst, vorallem Wüsten. Im Laufe der Zeit werden Kakteen auf bis zu 3 Blöcke hoch auf Sand oder rotem Sand wachsen. Ein Kaktus verletzt Lebewesen, die ihn berühren, er richtet jede halbe Sekunden 1 Schaden an. Wenn ein Kaktusblock bricht, werden alle Kaktusblöcke darüber auch abbrechen. +This stone contains pure gold, a rare metal.=Dieser Stein enthält pures Gold, ein seltenes Metall. +Top Snow=Schneeschicht +Top snow is a layer of snow. It melts near light sources other than the sun with a light level of 12 or higher.=Eine Schneeschicht. Sie schmilzt in der Näche von Lichtquellen außer der Sonne bei einer Helligkeit von 12 oder höher. +Vines=Lianen +Vines are climbable blocks which can be placed on the sides of solid full-cube blocks. Vines slowly grow and spread.=Lianen sind erkletterbare Blöcke, die an den Seiten von festen ganzen Blöcken platziert werden können. Lianen wachsen langsam und breiten sich aus. +Void=Leere +Water=Wasser +Water Source=Wasserquelle +Water is abundant in oceans and also appears in a few springs in the ground. You can swim easily in water, but you need to catch your breath from time to time.=Wasser gibt es reichlich in Ozeanen und es kommt im Untergrund auch in einigen Quellen vor. Sie können im Wasser mit Leichtigkeit schwimmen, aber Sie müssen gelegentlich Luft holen. +When placed on soil (such as dirt) and exposed to light, a birch sapling will grow into a birch after some time.=Wird er auf einem Nährboden (wie Erde) platziert und ist er dem Licht ausgesetzt, wird ein Birkensetzling langsam zu einer Birke nach etwas Zeit heranwachsen. +When placed on soil (such as dirt) and exposed to light, a jungle sapling will grow into a jungle tree after some time. When there are 4 jungle saplings in a 2×2 square, they will grow to a huge jungle tree.=Wird er auf einem Nährboden (wie Erde) platziert und ist er dem Licht ausgesetzt, wird ein Dschungelsetzling langsam zu einem Dschungelbaum nach etwas Zeit heranwachsen. Gibt es 4 Dschungelsetzlinge in einem 2×2-Quadrat, werden sie zu einem riesigen Dschungelbaum heranwachsen. +When placed on soil (such as dirt) and exposed to light, a spruce sapling will grow into a spruce after some time. When there are 4 spruce saplings in a 2×2 square, they will grow to a huge spruce.=Wird er auf einem Nährboden (wie Erde) platziert und ist er dem Licht ausgesetzt, wird ein Fichtensetzling langsam zu einer Fichte nach etwas Zeit heranwachsen. Gibt es 4 Fichtensetzlinge in einem 2×2-Quadrat, werden sie zu einer Riesenfichte heranwachsen. +When placed on soil (such as dirt) and exposed to light, an acacia sapling will grow into an acacia after some time.=Wird er auf einem Nährboden (wie Erde) platziert und ist er dem Licht ausgesetzt, wird ein Akaziensetzling langsam zu einer Akazie nach etwas Zeit heranwachsen. +When placed on soil (such as dirt) and exposed to light, an oak sapling will grow into an oak after some time.=Wird er auf einem Nährboden (wie Erde) platziert und ist er dem Licht ausgesetzt, wird ein Eichensetzling langsam zu einer Eiche nach etwas Zeit heranwachsen. +When you hold a barrier in hand, you reveal all placed barriers in a short distance around you.=Wenn Sie eine Barriere in der Hand halten, legen Sie alle Barrieren in Ihrer Nähe offen. +White Stained Glass=Weißes Glas +Yellow Stained Glass=Gelbes Glas +“Coal” refers to coal lumps obtained by digging coal ore which can be found underground. Coal is your standard furnace fuel, but it can also be used to make torches, coal blocks and a few other things.=„Kohle“ meint Kohleklumpen, die herausfallen, wenn Kohleerz gegraben wird, was im Untergrund gefunden werden kann. Kohle ist der klassische Brennstoff für den Ofen, aber er kann auch benutzt werden, um Fackeln, Kohleblöcke und einige andere Dinge herzustellen. diff --git a/mods/ITEMS/mcl_core/locale/template.tr b/mods/ITEMS/mcl_core/locale/template.tr new file mode 100644 index 00000000..b0ec0e99 --- /dev/null +++ b/mods/ITEMS/mcl_core/locale/template.tr @@ -0,0 +1,238 @@ +# textdomain: mcl_core +%s could not survive in lava.= +%s died in lava.= +%s melted in lava.= +%s took a bath in a hot lava tub.= +A block of diamond is mostly a shiny decorational block but also useful as a compact storage of diamonds.= +A block of emerald is mostly a shiny decorational block but also useful as a compact storage of emeralds.= +A block of gold is mostly a shiny decorational block but also useful as a compact storage of gold ingots.= +A block of iron is mostly a decorational block but also useful as a compact storage of iron ingots.= +A cactus can only be placed on top of another cactus or any sand.= +A decorational and mostly transparent block.= +A grass block is dirt with a grass cover. Grass blocks are resourceful blocks which allow the growth of all sorts of plants. They can be turned into farmland with a hoe and turned into grass paths with a shovel. In light, the grass slowly spreads onto dirt nearby. Under an opaque block or a liquid, a grass block may turn back to dirt.= +A lapis lazuli block is mostly a decorational block but also useful as a compact storage of lapis lazuli.= +A lava source sets fire to a couple of air blocks above when they're next to a flammable block.= +A piece of ladder which allows you to climb vertically. Ladders can only be placed on the side of solid blocks and not on glass, leaves, ice, slabs, glowstone, nor sea lanterns.= +Acacia Bark= +Acacia Leaves= +Acacia Sapling= +Acacia Wood= +Acacia Wood Planks= +Acacia leaves are grown from acacia trees.= +Andesite= +Andesite is an igneous rock.= +Apple= +Apples are food items which can be eaten.= +Barrier= +Barriers are invisble walkable blocks. They are used to create boundaries of adventure maps and the like. Monsters and animals won't appear on barriers, and fences do not connect to barriers. Other blocks can be built on barriers like on any other block.= +Bedrock= +Bedrock is a very hard type of rock. It can not be broken, destroyed, collected or moved by normal means, unless in Creative Mode.= +Birch Bark= +Birch Leaves= +Birch Sapling= +Birch Wood= +Birch Wood Planks= +Birch leaves are grown from birch trees.= +Black Stained Glass= +Block of Coal= +Block of Diamond= +Block of Emerald= +Block of Gold= +Block of Iron= +Blocks of coal are useful as a compact storage of coal and very useful as a furnace fuel. A block of coal is as efficient as 10 coal.= +Blue Stained Glass= +Bone Block= +Bone blocks are decorational blocks and a compact storage of bone meal.= +Bowl= +Bowls are mainly used to hold tasty soups.= +Brick= +Brick Block= +Brick blocks are a good building material for building solid houses and can take quite a punch.= +Bricks are used to craft brick blocks.= +Brown Stained Glass= +Cactus= +Charcoal= +Charcoal is an alternative furnace fuel created by cooking wood in a furnace. It has the same burning time as coal and also shares many of its crafting recipes, but it can not be used to create coal blocks.= +Chiseled Red Sandstone= +Chiseled Sandstone= +Chiseled Stone Bricks= +Chiseled red sandstone is a decorational building block.= +Chiseled sandstone is a decorational building block.= +Clay= +Clay Ball= +Clay balls are a raw material, mainly used to create bricks in the furnace.= +Clay is a versatile kind of earth commonly found at beaches underwater.= +Coal= +Coal Ore= +Coarse Dirt= +Coarse dirt acts as a soil for some plants and is similar to dirt, but it will never grow a cover.= +Cobblestone= +Cobweb= +Cobwebs can be walked through, but significantly slow you down.= +Cracked Stone Bricks= +Cut Red Sandstone= +Cut Sandstone= +Cut red sandstone is a decorational building block.= +Cut sandstone is a decorational building block.= +Cyan Stained Glass= +Dark Oak Bark= +Dark Oak Leaves= +Dark Oak Sapling= +Dark Oak Wood= +Dark Oak Wood Planks= +Dark oak leaves are grown from dark oak trees.= +Dark oak saplings can grow into dark oaks, but only in groups. A lonely dark oak sapling won't grow. A group of four dark oak saplings grows into a dark oak after some time when they are placed on soil (such as dirt) in a 2×2 square and exposed to light.= +Dead Bush= +Dead bushes are unremarkable plants often found in dry areas. They can be harvested for sticks.= +Diamond= +Diamond Ore= +Diamond ore is rare and can be found in clusters near the bottom of the world.= +Diamonds are precious minerals and useful to create the highest tier of armor and tools.= +Diorite= +Diorite is an igneous rock.= +Dirt= +Dirt acts as a soil for a few plants. When in light, this block may grow a grass or mycelium cover if such blocks are nearby.= +Emerald= +Emerald Ore= +Emerald ore is the ore of emeralds. It is very rare and can be found alone, not in clusters.= +Emeralds are not very useful on their own, but they can exchanged for gold ingots by crafting.= +Flint= +Flint is a raw material.= +Flowing Lava= +Flowing Water= +Frosted Ice= +Frosted ice is a short-lived solid translucent block. It melts into a water source within a few seconds.= +Glass= +Gold Ingot= +Gold Nugget= +Gold Ore= +Gold nuggets are very small pieces of molten gold; the main purpose is to create gold ingots.= +Golden Apple= +Golden apples are precious food items which can be eaten.= +Granite= +Grass Block= +Grass Path= +Grass paths are a decorational variant of grass blocks. Their top has a different color and they are a bit lower than grass blocks, making them useful to build footpaths. Grass paths can be created with a shovel. A grass path turns into dirt when it is below a solid block.= +Gravel= +Green Stained Glass= +Grey Stained Glass= +Ice= +Ice is a translucent solid block usually found in cold areas. It melts near block light sources at a light level of 12 or higher. When it melts or is broken while resting on top of another block, it will turn into a water source.= +In the End dimension, starting a fire on this block will create an eternal fire.= +Iron Ingot= +Iron Nugget= +Iron Ore= +Iron nuggets are very small pieces of molten iron; the main purpose is to create iron ingots.= +Jungle Bark= +Jungle Leaves= +Jungle Sapling= +Jungle Wood= +Jungle Wood Planks= +Jungle leaves are grown from jungle trees.= +Ladder= +Lapis Lazuli Block= +Lapis Lazuli Ore= +Lapis lazuli ore is the ore of lapis lazuli. It can be rarely found in clusters near the bottom of the world.= +Lava Source= +Lava is hot and rather dangerous. Don't touch it, it will hurt you a lot and it is hard to get out.= +Light Blue Stained Glass= +Light Grey Stained Glass= +Lime Stained Glass= +Lit Redstone Ore= +Magenta Stained Glass= +Molten gold. It is used to craft armor, tools, and whatnot.= +Molten iron. It is used to craft armor, tools, and whatnot.= +Moss Stone= +Mossy Stone Bricks= +Mycelium= +Mycelium is a type of dirt and the ideal soil for mushrooms. Unlike other dirt-type blocks, it can not be turned into farmland with a hoe. In light, mycelium slowly spreads over nearby dirt. Under an opaque block or a liquid, it eventually turns back into dirt.= +Oak Bark= +Oak Leaves= +Oak Sapling= +Oak Wood= +Oak Wood Planks= +Oak leaves are grown from oak trees.= +Obsidian= +Obsidian is an extremely hard mineral with an enourmous blast-resistance. Obsidian is formed when water meets lava.= +One of the most common blocks in the world, almost the entire underground consists of stone. It sometimes contains ores. Stone may be created when water meets lava.= +Orange Stained Glass= +Packed Ice= +Packed ice is a compressed form of ice. It is opaque and solid.= +Paper= +Paper is used to craft books and maps.= +Pink Stained Glass= +Podzol= +Podzol is a type of dirt found in taiga forests. Only a few plants are able to survive on it.= +Polished Andesite= +Polished Diorite= +Polished Granite= +Polished Stone= +Polished andesite is a decorational building block made from andesite.= +Polished diorite is a decorational building block made from diorite.= +Polished granite is a decorational building block made from granite.= +Purple Stained Glass= +Realm Barrier= +Red Sand= +Red Sandstone= +Red Stained Glass= +Red sand is found in large quantities in mesa biomes.= +Red sandstone is compressed red sand and is a rather soft kind of stone.= +Redstone Ore= +Redstone ore is commonly found near the bottom of the world. It glows when it is punched or walked upon.= +Sand= +Sand is found in large quantities at beaches and deserts.= +Sandstone= +Sandstone is compressed sand and is a rather soft kind of stone.= +Slime Block= +Slime blocks are very bouncy and prevent fall damage.= +Smooth Red Sandstone= +Smooth Sandstone= +Smooth red sandstone is a decorational building block.= +Smooth sandstone is compressed sand and is a rather soft kind of stone.= +Snow= +Some coal contained in stone, it is very common and can be found inside stone in medium to large clusters at nearly every height.= +Some iron contained in stone, it is prety common and can be found below sea level.= +Spruce Bark= +Spruce Leaves= +Spruce Sapling= +Spruce Wood= +Spruce Wood Planks= +Spruce leaves are grown from spruce trees.= +Stained glass is a decorational and mostly transparent block which comes in various different colors.= +Stick= +Sticks are a very versatile crafting material; used in countless crafting recipes.= +Stone= +Stone Bricks= +Sugar= +Sugar Canes= +Sugar canes are a plant which has some uses in crafting. Sugar canes will slowly grow up to 3 blocks when they are next to water and are placed on a grass block, dirt, sand, red sand, podzol or coarse dirt. When a sugar cane is broken, all sugar canes connected above will break as well.= +Sugar canes can only be placed top of other sugar canes and on top of blocks on which they would grow.= +Sugar comes from sugar canes and is used to make sweet foods.= +The trunk of a birch tree.= +The trunk of a dark oak tree.= +The trunk of a jungle tree.= +The trunk of a spruce tree.= +The trunk of an acacia.= +The trunk of an oak tree.= +This block consists of a couple of loose stones and can't support itself.= +This is a decorative block surrounded by the bark of a tree trunk.= +This is a full block of snow. Snow of this thickness is usually found in areas of extreme cold.= +This is a piece of cactus commonly found in dry areas, especially deserts. Over time, cacti will grow up to 3 blocks high on sand or red sand. A cactus hurts living beings touching it with a damage of 1 HP every half second. When a cactus block is broken, all cactus blocks connected above it will break as well.= +This stone contains pure gold, a rare metal.= +Top Snow= +Top snow is a layer of snow. It melts near light sources other than the sun with a light level of 12 or higher.= +Vines= +Vines are climbable blocks which can be placed on the sides of solid full-cube blocks. Vines slowly grow and spread.= +Void= +Water= +Water Source= +Water is abundant in oceans and also appears in a few springs in the ground. You can swim easily in water, but you need to catch your breath from time to time.= +When placed on soil (such as dirt) and exposed to light, a birch sapling will grow into a birch after some time.= +When placed on soil (such as dirt) and exposed to light, a jungle sapling will grow into a jungle tree after some time. When there are 4 jungle saplings in a 2×2 square, they will grow to a huge jungle tree.= +When placed on soil (such as dirt) and exposed to light, a spruce sapling will grow into a spruce after some time. When there are 4 spruce saplings in a 2×2 square, they will grow to a huge spruce.= +When placed on soil (such as dirt) and exposed to light, an acacia sapling will grow into an acacia after some time.= +When placed on soil (such as dirt) and exposed to light, an oak sapling will grow into an oak after some time.= +When you hold a barrier in hand, you reveal all placed barriers in a short distance around you.= +White Stained Glass= +Yellow Stained Glass= +“Coal” refers to coal lumps obtained by digging coal ore which can be found underground. Coal is your standard furnace fuel, but it can also be used to make torches, coal blocks and a few other things.= From c6efa8a6262fa4a568cb4ced8a12ca69011dc6df Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sat, 9 Mar 2019 05:51:58 +0100 Subject: [PATCH 069/737] Close formspecs when double chest breaks --- mods/ITEMS/mcl_chests/init.lua | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/mods/ITEMS/mcl_chests/init.lua b/mods/ITEMS/mcl_chests/init.lua index 9f0ebd45..e17450ae 100644 --- a/mods/ITEMS/mcl_chests/init.lua +++ b/mods/ITEMS/mcl_chests/init.lua @@ -220,6 +220,9 @@ minetest.register_node("mcl_chests:"..basename.."_left", { if not p or minetest.get_node(p).name ~= "mcl_chests:"..basename.."_right" then return end + for pl=1, #players do + minetest.close_formspec(players[pl]:get_player_name(), "mcl_chests:"..formspec_basename.."_"..p.x.."_"..p.y.."_"..p.z) + end minetest.swap_node(p, { name = "mcl_chests:"..basename, param2 = param2 }) end, after_dig_node = function(pos, oldnode, oldmetadata, digger) @@ -341,6 +344,9 @@ minetest.register_node("mcl_chests:"..basename.."_right", { if not p or minetest.get_node(p).name ~= "mcl_chests:"..basename.."_left" then return end + for pl=1, #players do + minetest.close_formspec(players[pl]:get_player_name(), "mcl_chests:"..formspec_basename.."_"..p.x.."_"..p.y.."_"..p.z) + end minetest.swap_node(p, { name = "mcl_chests:"..basename, param2 = param2 }) end, after_dig_node = function(pos, oldnode, oldmetadata, digger) From 225930a2c73225041368aea750c260335841bcc8 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sat, 9 Mar 2019 06:09:52 +0100 Subject: [PATCH 070/737] Constructing double chest part checks for neighbor ... and reverts to single chest if none found. Required for piston stuff. --- mods/ITEMS/mcl_chests/init.lua | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/mods/ITEMS/mcl_chests/init.lua b/mods/ITEMS/mcl_chests/init.lua index e17450ae..d3ceeb3f 100644 --- a/mods/ITEMS/mcl_chests/init.lua +++ b/mods/ITEMS/mcl_chests/init.lua @@ -204,6 +204,15 @@ minetest.register_node("mcl_chests:"..basename.."_left", { drop = drop, is_ground_content = false, sounds = mcl_sounds.node_sound_wood_defaults(), + on_construct = function(pos) + local n = minetest.get_node(pos) + local param2 = n.param2 + local p = mcl_util.get_double_container_neighbor_pos(pos, param2, "left") + if not p or minetest.get_node(p).name ~= "mcl_chests:"..basename.."_right" then + n.name = "mcl_chests:"..basename + minetest.swap_node(pos, n) + end + end, on_destruct = function(pos) local n = minetest.get_node(pos) if n.name == "mcl_chests:"..basename then @@ -328,6 +337,15 @@ minetest.register_node("mcl_chests:"..basename.."_right", { drop = drop, is_ground_content = false, sounds = mcl_sounds.node_sound_wood_defaults(), + on_construct = function(pos) + local n = minetest.get_node(pos) + local param2 = n.param2 + local p = mcl_util.get_double_container_neighbor_pos(pos, param2, "right") + if not p or minetest.get_node(p).name ~= "mcl_chests:"..basename.."_left" then + n.name = "mcl_chests:"..basename + minetest.swap_node(pos, n) + end + end, on_destruct = function(pos) local n = minetest.get_node(pos) if n.name == "mcl_chests:"..basename then From e6e9d137010b41d19a6ea41fd55f15ab8ab2b090 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sat, 9 Mar 2019 07:01:12 +0100 Subject: [PATCH 071/737] Piston support: banner, sign, armor stand, chests, daylight sensor, jukebox, noteblock --- mods/ITEMS/REDSTONE/mesecons_mvps/init.lua | 51 ++++++++----------- mods/ITEMS/mcl_banners/init.lua | 2 +- mods/ITEMS/mcl_signs/init.lua | 2 +- .../minetest-3d_armor/3d_armor_stand/init.lua | 6 +-- 4 files changed, 27 insertions(+), 34 deletions(-) diff --git a/mods/ITEMS/REDSTONE/mesecons_mvps/init.lua b/mods/ITEMS/REDSTONE/mesecons_mvps/init.lua index a5820821..1ac74e06 100644 --- a/mods/ITEMS/REDSTONE/mesecons_mvps/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons_mvps/init.lua @@ -316,21 +316,23 @@ function mesecon.mvps_move_objects(pos, dir, nodestack) end end -mesecon.register_mvps_stopper("mcl_core:obsidian") -mesecon.register_mvps_stopper("mcl_core:bedrock") +-- Unmovable by design mesecon.register_mvps_stopper("mcl_core:barrier") mesecon.register_mvps_stopper("mcl_core:realm_barrier") mesecon.register_mvps_stopper("mcl_core:void") -mesecon.register_mvps_stopper("mcl_chests:chest") -mesecon.register_mvps_stopper("mcl_chests:chest_left") -mesecon.register_mvps_stopper("mcl_chests:chest_right") -mesecon.register_mvps_stopper("mcl_chests:trapped_chest") -mesecon.register_mvps_stopper("mcl_chests:trapped_chest_left") -mesecon.register_mvps_stopper("mcl_chests:trapped_chest_right") -mesecon.register_mvps_stopper("mcl_chests:trapped_chest_on") -mesecon.register_mvps_stopper("mcl_chests:trapped_chest_on_left") -mesecon.register_mvps_stopper("mcl_chests:trapped_chest_on_right") +mesecon.register_mvps_stopper("mcl_core:bedrock") +mesecon.register_mvps_stopper("mcl_core:obsidian") mesecon.register_mvps_stopper("mcl_chests:ender_chest") +mesecon.register_mvps_stopper("mcl_mobspawners:spawner") +mesecon.register_mvps_stopper("mesecons_commandblock:commandblock_off") +mesecon.register_mvps_stopper("mesecons_commandblock:commandblock_on") +mesecon.register_mvps_stopper("mcl_portals:portal") +mesecon.register_mvps_stopper("mcl_portals:portal_end") +mesecon.register_mvps_stopper("mcl_portals:end_portal_frame") +mesecon.register_mvps_stopper("mcl_portals:end_portal_frame_eye") + +-- Unmovable by technical restrictions. +-- Open formspec would screw up if node is destroyed (minor problem) mesecon.register_mvps_stopper("mcl_furnaces:furnace") mesecon.register_mvps_stopper("mcl_furnaces:furnace_active") mesecon.register_mvps_stopper("mcl_hoppers:hopper") @@ -344,24 +346,15 @@ mesecon.register_mvps_stopper("mcl_dispensers:dispenser_down") mesecon.register_mvps_stopper("mcl_anvils:anvil") mesecon.register_mvps_stopper("mcl_anvils:anvil_damage_1") mesecon.register_mvps_stopper("mcl_anvils:anvil_damage_2") -mesecon.register_mvps_stopper("mcl_jukebox:jukebox") -mesecon.register_mvps_stopper("mcl_mobspawners:spawner") -mesecon.register_mvps_stopper("mcl_signs:standing_sign") -mesecon.register_mvps_stopper("mcl_signs:wall_sign") -mesecon.register_mvps_stopper("mesecons_commandblock:commandblock_off") -mesecon.register_mvps_stopper("mesecons_commandblock:commandblock_on") -mesecon.register_mvps_stopper("mesecons_solarpanel:solar_panel_off") -mesecon.register_mvps_stopper("mesecons_solarpanel:solar_panel_on") -mesecon.register_mvps_stopper("mesecons_solarpanel:solar_panel_inverted_off") -mesecon.register_mvps_stopper("mesecons_solarpanel:solar_panel_inverted_on") -mesecon.register_mvps_stopper("mesecons_noteblock:noteblock") -mesecon.register_mvps_stopper("3d_armor_stand:armor_stand") -mesecon.register_mvps_stopper("mcl_banners:standing_banner") -mesecon.register_mvps_stopper("mcl_banners:hanging_banner") -mesecon.register_mvps_stopper("mcl_portals:portal") -mesecon.register_mvps_stopper("mcl_portals:portal_end") -mesecon.register_mvps_stopper("mcl_portals:end_portal_frame") -mesecon.register_mvps_stopper("mcl_portals:end_portal_frame_eye") +-- Would screw up on/off state of trapped chest (big problem) +mesecon.register_mvps_stopper("mcl_chests:trapped_chest") +mesecon.register_mvps_stopper("mcl_chests:trapped_chest_left") +mesecon.register_mvps_stopper("mcl_chests:trapped_chest_right") +mesecon.register_mvps_stopper("mcl_chests:trapped_chest_on") +mesecon.register_mvps_stopper("mcl_chests:trapped_chest_on_left") +mesecon.register_mvps_stopper("mcl_chests:trapped_chest_on_right") + +-- Glazed terracotta: unpullable mesecon.register_mvps_unsticky("mcl_colorblocks:glazed_terracotta_red") mesecon.register_mvps_unsticky("mcl_colorblocks:glazed_terracotta_orange") mesecon.register_mvps_unsticky("mcl_colorblocks:glazed_terracotta_yellow") diff --git a/mods/ITEMS/mcl_banners/init.lua b/mods/ITEMS/mcl_banners/init.lua index 2c7304b9..e908db9d 100644 --- a/mods/ITEMS/mcl_banners/init.lua +++ b/mods/ITEMS/mcl_banners/init.lua @@ -216,7 +216,7 @@ S("You can copy the pattern of a banner by placing two banners of the same color wield_image = "mcl_banners_item_base.png", selection_box = {type = "fixed", fixed= {-0.3, -0.5, -0.3, 0.3, 0.5, 0.3} }, - groups = {axey=1,handy=1, attached_node = 1, not_in_creative_inventory = 1, not_in_craft_guide = 1, material_wood=1 }, + groups = {axey=1,handy=1, attached_node = 1, not_in_creative_inventory = 1, not_in_craft_guide = 1, material_wood=1, dig_by_piston=1 }, stack_max = 16, sounds = node_sounds, drop = "", -- Item drops are handled in entity code diff --git a/mods/ITEMS/mcl_signs/init.lua b/mods/ITEMS/mcl_signs/init.lua index 866de83b..2fada201 100644 --- a/mods/ITEMS/mcl_signs/init.lua +++ b/mods/ITEMS/mcl_signs/init.lua @@ -172,7 +172,7 @@ local function get_wall_signtext_info(param2, nodename) end end -local sign_groups = {handy=1,axey=1, flammable=1, deco_block=1, material_wood=1, attached_node=1} +local sign_groups = {handy=1,axey=1, flammable=1, deco_block=1, material_wood=1, attached_node=1, dig_by_piston=1} local destruct_sign = function(pos) local objects = minetest.get_objects_inside_radius(pos, 0.5) diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor_stand/init.lua b/mods/ITEMS/minetest-3d_armor/3d_armor_stand/init.lua index 775c1f53..6254e98c 100644 --- a/mods/ITEMS/minetest-3d_armor/3d_armor_stand/init.lua +++ b/mods/ITEMS/minetest-3d_armor/3d_armor_stand/init.lua @@ -88,7 +88,7 @@ if minetest.get_modpath("screwdriver") then on_rotate = screwdriver.disallow end --- FIXME: The armor stand should be an entity +-- TODO: The armor stand should be an entity minetest.register_node("3d_armor_stand:armor_stand", { description = S("Armor Stand"), _doc_items_longdesc = S("An armor stand is a decorative object which can display different pieces of armor. Anything which players can wear as armor can also be put on an armor stand."), @@ -107,8 +107,8 @@ minetest.register_node("3d_armor_stand:armor_stand", { type = "fixed", fixed = {-0.5,-0.5,-0.5, 0.5,1.4,0.5} }, - -- FIXME: This should be breakable by 2 quick punches - groups = {handy=1, deco_block=1}, + -- TODO: This should be breakable by 2 quick punches + groups = {handy=1, deco_block=1, dig_by_piston=1}, _mcl_hardness = 2, sounds = mcl_sounds.node_sound_wood_defaults(), on_construct = function(pos) From ad8403adbd777f7845bbeca3e7737e5e77a6736e Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sat, 9 Mar 2019 07:23:10 +0100 Subject: [PATCH 072/737] Add piston support for trapped chests --- mods/ITEMS/REDSTONE/mesecons_mvps/init.lua | 6 --- mods/ITEMS/mcl_chests/init.lua | 46 ++++++++++++---------- 2 files changed, 25 insertions(+), 27 deletions(-) diff --git a/mods/ITEMS/REDSTONE/mesecons_mvps/init.lua b/mods/ITEMS/REDSTONE/mesecons_mvps/init.lua index 1ac74e06..9eaceb88 100644 --- a/mods/ITEMS/REDSTONE/mesecons_mvps/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons_mvps/init.lua @@ -347,12 +347,6 @@ mesecon.register_mvps_stopper("mcl_anvils:anvil") mesecon.register_mvps_stopper("mcl_anvils:anvil_damage_1") mesecon.register_mvps_stopper("mcl_anvils:anvil_damage_2") -- Would screw up on/off state of trapped chest (big problem) -mesecon.register_mvps_stopper("mcl_chests:trapped_chest") -mesecon.register_mvps_stopper("mcl_chests:trapped_chest_left") -mesecon.register_mvps_stopper("mcl_chests:trapped_chest_right") -mesecon.register_mvps_stopper("mcl_chests:trapped_chest_on") -mesecon.register_mvps_stopper("mcl_chests:trapped_chest_on_left") -mesecon.register_mvps_stopper("mcl_chests:trapped_chest_on_right") -- Glazed terracotta: unpullable mesecon.register_mvps_unsticky("mcl_colorblocks:glazed_terracotta_red") diff --git a/mods/ITEMS/mcl_chests/init.lua b/mods/ITEMS/mcl_chests/init.lua index d3ceeb3f..28639fa0 100644 --- a/mods/ITEMS/mcl_chests/init.lua +++ b/mods/ITEMS/mcl_chests/init.lua @@ -71,15 +71,17 @@ local player_chest_close = function(player) end -- This is a helper function to register both chests and trapped chests. Trapped chests will make use of the additional parameters -local register_chest = function(basename, desc, longdesc, usagehelp, tiles_table, hidden, mesecons, on_rightclick_addendum, on_rightclick_addendum_left, on_rightclick_addendum_right, drop, formspec_basename) +local register_chest = function(basename, desc, longdesc, usagehelp, tiles_table, hidden, mesecons, on_rightclick_addendum, on_rightclick_addendum_left, on_rightclick_addendum_right, drop, canonical_basename) -- START OF register_chest FUNCTION BODY if not drop then drop = "mcl_chests:"..basename else drop = "mcl_chests:"..drop end -if not formspec_basename then - formspec_basename = basename +-- The basename of the "canonical" version of the node, if set (e.g.: trapped_chest_on → trapped_chest). +-- Used to get a shared formspec ID and to swap the node back to the canonical version in on_construct. +if not canonical_basename then + canonical_basename = basename end minetest.register_node("mcl_chests:"..basename, { @@ -120,14 +122,16 @@ minetest.register_node("mcl_chests:"..basename, { -- BEGIN OF LISTRING WORKAROUND inv:set_size("input", 1) -- END OF LISTRING WORKAROUND - if minetest.get_node(mcl_util.get_double_container_neighbor_pos(pos, param2, "right")).name == "mcl_chests:"..basename then - minetest.swap_node(pos, {name="mcl_chests:"..basename.."_right",param2=param2}) + if minetest.get_node(mcl_util.get_double_container_neighbor_pos(pos, param2, "right")).name == "mcl_chests:"..canonical_basename then + minetest.swap_node(pos, {name="mcl_chests:"..canonical_basename.."_right",param2=param2}) local p = mcl_util.get_double_container_neighbor_pos(pos, param2, "right") - minetest.swap_node(p, { name = "mcl_chests:"..basename.."_left", param2 = param2 }) - elseif minetest.get_node(mcl_util.get_double_container_neighbor_pos(pos, param2, "left")).name == "mcl_chests:"..basename then - minetest.swap_node(pos, {name="mcl_chests:"..basename.."_left",param2=param2}) + minetest.swap_node(p, { name = "mcl_chests:"..canonical_basename.."_left", param2 = param2 }) + elseif minetest.get_node(mcl_util.get_double_container_neighbor_pos(pos, param2, "left")).name == "mcl_chests:"..canonical_basename then + minetest.swap_node(pos, {name="mcl_chests:"..canonical_basename.."_left",param2=param2}) local p = mcl_util.get_double_container_neighbor_pos(pos, param2, "left") - minetest.swap_node(p, { name = "mcl_chests:"..basename.."_right", param2 = param2 }) + minetest.swap_node(p, { name = "mcl_chests:"..canonical_basename.."_right", param2 = param2 }) + else + minetest.swap_node(pos, { name = "mcl_chests:"..canonical_basename, param2 = param2 }) end end, after_dig_node = function(pos, oldnode, oldmetadata, digger) @@ -170,7 +174,7 @@ minetest.register_node("mcl_chests:"..basename, { on_rightclick = function(pos, node, clicker) minetest.show_formspec(clicker:get_player_name(), - "mcl_chests:"..formspec_basename.."_"..pos.x.."_"..pos.y.."_"..pos.z, + "mcl_chests:"..canonical_basename.."_"..pos.x.."_"..pos.y.."_"..pos.z, "size[9,8.75]".. mcl_vars.inventory_header.. "background[-0.19,-0.25;9.41,10.48;mcl_chests_inventory_chest.png]".. @@ -189,7 +193,7 @@ minetest.register_node("mcl_chests:"..basename, { on_destruct = function(pos) local players = minetest.get_connected_players() for p=1, #players do - minetest.close_formspec(players[p]:get_player_name(), "mcl_chests:"..formspec_basename.."_"..pos.x.."_"..pos.y.."_"..pos.z) + minetest.close_formspec(players[p]:get_player_name(), "mcl_chests:"..canonical_basename.."_"..pos.x.."_"..pos.y.."_"..pos.z) end end, mesecons = mesecons, @@ -208,8 +212,8 @@ minetest.register_node("mcl_chests:"..basename.."_left", { local n = minetest.get_node(pos) local param2 = n.param2 local p = mcl_util.get_double_container_neighbor_pos(pos, param2, "left") - if not p or minetest.get_node(p).name ~= "mcl_chests:"..basename.."_right" then - n.name = "mcl_chests:"..basename + if not p or minetest.get_node(p).name ~= "mcl_chests:"..canonical_basename.."_right" then + n.name = "mcl_chests:"..canonical_basename minetest.swap_node(pos, n) end end, @@ -221,7 +225,7 @@ minetest.register_node("mcl_chests:"..basename.."_left", { local players = minetest.get_connected_players() for p=1, #players do - minetest.close_formspec(players[p]:get_player_name(), "mcl_chests:"..formspec_basename.."_"..pos.x.."_"..pos.y.."_"..pos.z) + minetest.close_formspec(players[p]:get_player_name(), "mcl_chests:"..canonical_basename.."_"..pos.x.."_"..pos.y.."_"..pos.z) end local param2 = n.param2 @@ -230,7 +234,7 @@ minetest.register_node("mcl_chests:"..basename.."_left", { return end for pl=1, #players do - minetest.close_formspec(players[pl]:get_player_name(), "mcl_chests:"..formspec_basename.."_"..p.x.."_"..p.y.."_"..p.z) + minetest.close_formspec(players[pl]:get_player_name(), "mcl_chests:"..canonical_basename.."_"..p.x.."_"..p.y.."_"..p.z) end minetest.swap_node(p, { name = "mcl_chests:"..basename, param2 = param2 }) end, @@ -304,7 +308,7 @@ minetest.register_node("mcl_chests:"..basename.."_left", { local pos_other = mcl_util.get_double_container_neighbor_pos(pos, node.param2, "left") minetest.show_formspec(clicker:get_player_name(), - "mcl_chests:"..formspec_basename.."_"..pos.x.."_"..pos.y.."_"..pos.z, + "mcl_chests:"..canonical_basename.."_"..pos.x.."_"..pos.y.."_"..pos.z, "size[9,11.5]".. "background[-0.19,-0.25;9.41,12.5;mcl_chests_inventory_chest_large.png]".. mcl_vars.inventory_header.. @@ -341,8 +345,8 @@ minetest.register_node("mcl_chests:"..basename.."_right", { local n = minetest.get_node(pos) local param2 = n.param2 local p = mcl_util.get_double_container_neighbor_pos(pos, param2, "right") - if not p or minetest.get_node(p).name ~= "mcl_chests:"..basename.."_left" then - n.name = "mcl_chests:"..basename + if not p or minetest.get_node(p).name ~= "mcl_chests:"..canonical_basename.."_left" then + n.name = "mcl_chests:"..canonical_basename minetest.swap_node(pos, n) end end, @@ -354,7 +358,7 @@ minetest.register_node("mcl_chests:"..basename.."_right", { local players = minetest.get_connected_players() for p=1, #players do - minetest.close_formspec(players[p]:get_player_name(), "mcl_chests:"..formspec_basename.."_"..pos.x.."_"..pos.y.."_"..pos.z) + minetest.close_formspec(players[p]:get_player_name(), "mcl_chests:"..canonical_basename.."_"..pos.x.."_"..pos.y.."_"..pos.z) end local param2 = n.param2 @@ -363,7 +367,7 @@ minetest.register_node("mcl_chests:"..basename.."_right", { return end for pl=1, #players do - minetest.close_formspec(players[pl]:get_player_name(), "mcl_chests:"..formspec_basename.."_"..p.x.."_"..p.y.."_"..p.z) + minetest.close_formspec(players[pl]:get_player_name(), "mcl_chests:"..canonical_basename.."_"..p.x.."_"..p.y.."_"..p.z) end minetest.swap_node(p, { name = "mcl_chests:"..basename, param2 = param2 }) end, @@ -437,7 +441,7 @@ minetest.register_node("mcl_chests:"..basename.."_right", { local pos_other = mcl_util.get_double_container_neighbor_pos(pos, node.param2, "right") minetest.show_formspec(clicker:get_player_name(), - "mcl_chests:"..formspec_basename.."_"..pos.x.."_"..pos.y.."_"..pos.z, + "mcl_chests:"..canonical_basename.."_"..pos.x.."_"..pos.y.."_"..pos.z, "size[9,11.5]".. "background[-0.19,-0.25;9.41,12.5;mcl_chests_inventory_chest_large.png]".. From 6d6fc3f34cdd89e72b26cba3594969599a77cd16 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sat, 9 Mar 2019 07:59:07 +0100 Subject: [PATCH 073/737] Disable active trapped chests at loading time --- mods/ITEMS/mcl_chests/init.lua | 32 +++++++++++++++++++++++++------- 1 file changed, 25 insertions(+), 7 deletions(-) diff --git a/mods/ITEMS/mcl_chests/init.lua b/mods/ITEMS/mcl_chests/init.lua index 28639fa0..6f3c0ceb 100644 --- a/mods/ITEMS/mcl_chests/init.lua +++ b/mods/ITEMS/mcl_chests/init.lua @@ -39,13 +39,8 @@ end local trapped_chest_mesecons_rules = mesecon.rules.pplate --- To be called if a player closed a chest -local player_chest_close = function(player) - local name = player:get_player_name() - if open_chests[name] == nil then - return - end - local pos = open_chests[name].pos +-- To be called when a chest is closed (only relevant for trapped chest atm) +local chest_update_after_close = function(pos) local node = minetest.get_node(pos) if node.name == "mcl_chests:trapped_chest_on" then @@ -66,6 +61,16 @@ local player_chest_close = function(player) minetest.swap_node(pos_other, {name="mcl_chests:trapped_chest_left", param2 = node.param2}) mesecon.receptor_off(pos_other, trapped_chest_mesecons_rules) end +end + +-- To be called if a player closed a chest +local player_chest_close = function(player) + local name = player:get_player_name() + if open_chests[name] == nil then + return + end + local pos = open_chests[name].pos + chest_update_after_close(pos) open_chests[name] = nil end @@ -839,3 +844,16 @@ minetest.register_craft({ } }) +minetest.register_lbm({ + -- Disable active/open trapped chests when loaded because nobody could + -- have them open at loading time. + -- Fixes redstone weirdness. + label = "Disable active trapped chests", + name = "mcl_chests:reset_trapped_chests", + nodenames = { "mcl_chests:trapped_chest_on", "mcl_chests:trapped_chest_on_left", "mcl_chests:trapped_chest_on_right" }, + run_at_every_load = true, + action = function(pos, node) + minetest.log("error", "lbm!" ..minetest.pos_to_string(pos)) + chest_update_after_close(pos) + end, +}) From b9377a0dbfe885cdedf8dd287718893a57c12b8a Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sat, 9 Mar 2019 08:25:00 +0100 Subject: [PATCH 074/737] Fix broken player init in mcl_hunger causing crash --- mods/PLAYER/mcl_hunger/api.lua | 25 +++++++++++++++++++------ mods/PLAYER/mcl_hunger/init.lua | 9 ++------- 2 files changed, 21 insertions(+), 13 deletions(-) diff --git a/mods/PLAYER/mcl_hunger/api.lua b/mods/PLAYER/mcl_hunger/api.lua index ad609e05..46dc76fa 100644 --- a/mods/PLAYER/mcl_hunger/api.lua +++ b/mods/PLAYER/mcl_hunger/api.lua @@ -1,19 +1,32 @@ mcl_hunger.registered_foods = {} +function mcl_hunger.init_player(player) + local meta = player:get_meta() + if meta:get_string("mcl_hunger:hunger") == "" then + meta:set_string("mcl_hunger:hunger", tostring(20)) + end + if meta:get_string("mcl_hunger:saturation") == "" then + meta:set_string("mcl_hunger:saturation", tostring(mcl_hunger.SATURATION_INIT)) + end + if meta:get_string("mcl_hunger:exhaustion") == "" then + meta:set_string("mcl_hunger:exhaustion", tostring(0)) + end +end + if mcl_hunger.active then function mcl_hunger.get_hunger(player) - local hunger = player:get_meta():get_string("mcl_hunger:hunger") or 20 - return tonumber(hunger) + local hunger = tonumber(player:get_meta():get_string("mcl_hunger:hunger")) or 20 + return hunger end function mcl_hunger.get_saturation(player) - local saturation = player:get_meta():get_string("mcl_hunger:saturation") or mcl_hunger.SATURATION_INIT - return tonumber(saturation) + local saturation = tonumber(player:get_meta():get_string("mcl_hunger:saturation")) or mcl_hunger.SATURATION_INIT + return saturation end function mcl_hunger.get_exhaustion(player) - local exhaustion = player:get_meta():get_string("mcl_hunger:exhaustion") or 0 - return tonumber(exhaustion) + local exhaustion = tonumber(player:get_meta():get_string("mcl_hunger:exhaustion")) or 0 + return exhaustion end function mcl_hunger.set_hunger(player, hunger, update_hudbars) diff --git a/mods/PLAYER/mcl_hunger/init.lua b/mods/PLAYER/mcl_hunger/init.lua index 0e64a190..a90bdb73 100644 --- a/mods/PLAYER/mcl_hunger/init.lua +++ b/mods/PLAYER/mcl_hunger/init.lua @@ -96,15 +96,9 @@ if mcl_hunger.debug then hb.register_hudbar("exhaustion", 0xFFFFFF, S("Exhaust."), { icon = "mcl_hunger_icon_exhaustion.png", bgicon = "mcl_hunger_bgicon_exhaustion.png", bar = "mcl_hunger_bar_exhaustion.png" }, 0, mcl_hunger.EXHAUST_LVL, false, S("%s: %d/%d")) end -minetest.register_on_newplayer(function(player) - local name = player:get_player_name() - mcl_hunger.set_hunger(player, 20, false) - mcl_hunger.set_saturation(player, mcl_hunger.SATURATION_INIT, false) - mcl_hunger.set_exhaustion(player, 0, false) -end) - minetest.register_on_joinplayer(function(player) local name = player:get_player_name() + mcl_hunger.init_player(player) init_hud(player) mcl_hunger.poison_damage[name] = 0 mcl_hunger.poison_hunger[name] = 0 @@ -193,6 +187,7 @@ end) else minetest.register_on_joinplayer(function(player) + mcl_hunger.init_player(player) mcl_hunger.last_eat[player:get_player_name()] = -1 end) From 2f88b4221081b2614da1ff9294bd0bba8af07bef Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sat, 9 Mar 2019 08:40:52 +0100 Subject: [PATCH 075/737] Make armor stand attached --- mods/ITEMS/minetest-3d_armor/3d_armor_stand/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor_stand/init.lua b/mods/ITEMS/minetest-3d_armor/3d_armor_stand/init.lua index 6254e98c..332970b3 100644 --- a/mods/ITEMS/minetest-3d_armor/3d_armor_stand/init.lua +++ b/mods/ITEMS/minetest-3d_armor/3d_armor_stand/init.lua @@ -108,7 +108,7 @@ minetest.register_node("3d_armor_stand:armor_stand", { fixed = {-0.5,-0.5,-0.5, 0.5,1.4,0.5} }, -- TODO: This should be breakable by 2 quick punches - groups = {handy=1, deco_block=1, dig_by_piston=1}, + groups = {handy=1, deco_block=1, dig_by_piston=1, attached_node=1}, _mcl_hardness = 2, sounds = mcl_sounds.node_sound_wood_defaults(), on_construct = function(pos) From 4f2baf8506ab03f9cea0f5212913d2310fb2946c Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sat, 9 Mar 2019 08:52:47 +0100 Subject: [PATCH 076/737] Play place sound if falling node hit the bottom --- mods/ENTITIES/mcl_falling_nodes/init.lua | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/mods/ENTITIES/mcl_falling_nodes/init.lua b/mods/ENTITIES/mcl_falling_nodes/init.lua index dfbf198e..753f7c8c 100644 --- a/mods/ENTITIES/mcl_falling_nodes/init.lua +++ b/mods/ENTITIES/mcl_falling_nodes/init.lua @@ -200,15 +200,19 @@ minetest.register_entity(":__builtin:falling_node", { for _, callback in pairs(minetest.registered_on_dignodes) do callback(np, n2) end - if minetest.registered_nodes[self.node.name] then + local def = minetest.registered_nodes[self.node.name] + if def then minetest.add_node(np, self.node) - if minetest.registered_nodes[self.node.name]._mcl_after_falling then - minetest.registered_nodes[self.node.name]._mcl_after_falling(np, get_falling_depth(self)) + if def._mcl_after_falling then + def._mcl_after_falling(np, get_falling_depth(self)) end if self.meta then local meta = minetest.get_meta(np) meta:from_table(self.meta) end + if def.sounds and def.sounds.place and def.sounds.place.name then + minetest.sound_play(def.sounds.place, {pos = np}) + end end else -- Drop the *falling node* as an item if the destination node is NOT buildable to @@ -238,8 +242,14 @@ minetest.register_entity(":__builtin:falling_node", { local npos3 = table.copy(npos) npos3.y = npos3.y - 1 minetest.add_node(npos3, self.node) - if minetest.registered_nodes[self.node.name]._mcl_after_falling then - minetest.registered_nodes[self.node.name]._mcl_after_falling(npos3, get_falling_depth(self)) + local def = minetest.registered_nodes[self.node.name] + if def then + if def._mcl_after_falling then + def._mcl_after_falling(npos3, get_falling_depth(self)) + end + if def.sounds and def.sounds.place and def.sounds.place.name then + minetest.sound_play(def.sounds.place, {pos = np}) + end end deal_falling_damage(self, dtime) self.object:remove() From eff91038e8bafcefcd1ad442fb29b542071df91d Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sat, 9 Mar 2019 10:04:54 +0100 Subject: [PATCH 077/737] Fix crash if item dropped in end portal in the end --- mods/ITEMS/mcl_portals/portal_end.lua | 8 +++- mods/PLAYER/mcl_spawn/init.lua | 58 ++++++++++++++++----------- 2 files changed, 40 insertions(+), 26 deletions(-) diff --git a/mods/ITEMS/mcl_portals/portal_end.lua b/mods/ITEMS/mcl_portals/portal_end.lua index 8ba08b04..4a1a5fd4 100644 --- a/mods/ITEMS/mcl_portals/portal_end.lua +++ b/mods/ITEMS/mcl_portals/portal_end.lua @@ -239,9 +239,13 @@ minetest.register_abm({ local target if dim == "end" then -- End portal in the End: - -- Teleport back to the player's spawn in the Overworld. + -- Teleport back to the player's spawn or world spawn in the Overworld. - target = mcl_spawn.get_spawn_pos(obj) + if obj:is_player() then + target = mcl_spawn.get_spawn_pos(obj) + else + target = mcl_spawn.get_world_spawn_pos(obj) + end else -- End portal in any other dimension: -- Teleport to the End at a fixed position and generate a diff --git a/mods/PLAYER/mcl_spawn/init.lua b/mods/PLAYER/mcl_spawn/init.lua index b8f3f086..9f8fa70e 100644 --- a/mods/PLAYER/mcl_spawn/init.lua +++ b/mods/PLAYER/mcl_spawn/init.lua @@ -2,10 +2,39 @@ mcl_spawn = {} local mg_name = minetest.get_mapgen_setting("mg_name") --- Returns current custom spawn position of player. --- Returns nil if player has no custom spawn position. --- If player is nil or not a player, the default spawn point is returned. --- The second return value is true if spawn point is player-chosen, +local cached_world_spawn + +mcl_spawn.get_world_spawn_pos = function() + local spawn + spawn = minetest.setting_get_pos("static_spawnpoint") + if spawn then + return spawn + end + if cached_world_spawn then + return cached_world_spawn + end + -- 32 attempts to find a suitable spawn point + spawn = { x=math.random(-16, 16), y=8, z=math.random(-16, 16) } + for i=1, 32 do + local y = minetest.get_spawn_level(spawn.x, spawn.z) + if y then + spawn.y = y + cached_world_spawn = spawn + minetest.log("action", "[mcl_spawn] Dynamic world spawn determined to be "..minetest.pos_to_string(spawn)) + return spawn + end + -- Random walk + spawn.x = spawn.x + math.random(-64, 64) + spawn.z = spawn.z + math.random(-64, 64) + end + minetest.log("action", "[mcl_spawn] Failed to determine dynamic world spawn!") + -- Use dummy position if nothing found + return { x=math.random(-16, 16), y=8, z=math.random(-16, 16) } +end + +-- Returns a spawn position of player. +-- If player is nil or not a player, a world spawn point is returned. +-- The second return value is true if returned spawn point is player-chosen, -- false otherwise. mcl_spawn.get_spawn_pos = function(player) local spawn, custom_spawn = nil, false @@ -17,23 +46,9 @@ mcl_spawn.get_spawn_pos = function(player) end end if not spawn or spawn == "" then - spawn = minetest.setting_get_pos("static_spawnpoint") + spawn = mcl_spawn.get_world_spawn_pos() custom_spawn = false end - -- We are getting desperate ... - -- Use the first spawn point of the player - if not spawn or spawn == "" then - local attr = player:get_meta():get_string("mcl_spawn:first_spawn") - if attr ~= nil and attr ~= "" then - -- Adjust Y - spawn = minetest.string_to_pos(attr) - local y = minetest.get_spawn_level(spawn.x, spawn.z) - if y then - spawn.y = y - end - custom_spawn = false - end - end return spawn, custom_spawn end @@ -105,8 +120,3 @@ minetest.register_on_respawnplayer(function(player) end end) -minetest.register_on_newplayer(function(player) - -- Remember where the player spawned first - player:get_meta():set_string("mcl_spawn:first_spawn", minetest.pos_to_string(player:get_pos())) -end) - From 5dd650e921682b7e23c34a3bab454dd18c9daab5 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sat, 9 Mar 2019 17:01:36 +0100 Subject: [PATCH 078/737] =?UTF-8?q?Change=20wording:=20=E2=80=9Cdecoration?= =?UTF-8?q?al=E2=80=9D=20=E2=86=92=20=E2=80=9Cdecorative=E2=80=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mods/HELP/mcl_doc_basics/init.lua | 2 +- mods/ITEMS/mcl_colorblocks/init.lua | 4 +-- mods/ITEMS/mcl_core/locale/mcl_core.de.tr | 34 +++++++++++------------ mods/ITEMS/mcl_core/locale/template.tr | 34 +++++++++++------------ mods/ITEMS/mcl_core/nodes_base.lua | 28 +++++++++---------- mods/ITEMS/mcl_core/nodes_glass.lua | 4 +-- mods/ITEMS/mcl_core/nodes_misc.lua | 2 +- mods/ITEMS/mcl_end/building.lua | 4 +-- mods/ITEMS/mcl_flowerpots/init.lua | 2 +- mods/ITEMS/mcl_heads/description.txt | 2 +- mods/ITEMS/mcl_nether/init.lua | 2 +- mods/ITEMS/mcl_wool/init.lua | 2 +- 12 files changed, 60 insertions(+), 60 deletions(-) diff --git a/mods/HELP/mcl_doc_basics/init.lua b/mods/HELP/mcl_doc_basics/init.lua index 7b30533e..d8b8c790 100644 --- a/mods/HELP/mcl_doc_basics/init.lua +++ b/mods/HELP/mcl_doc_basics/init.lua @@ -59,7 +59,7 @@ S("Minetest is a free software game engine for games based on voxel gameplay, in S("The player is thrown into a huge world made out of cubes or blocks. These cubes usually make the landscape they blocks can be removed and placed almost entirely freely. Using the collected items, new tools and other items can be crafted. Games in Minetest can, however, be much more complex than this.").."\n\n".. -S("A core feature of Minetest is the built-in modding capability. Mods modify existing gameplay. They can be as simple as adding a few decorational blocks or be very complex by e.g. introducing completely new gameplay concepts, generating a completely different kind of world, and many other things.").."\n\n".. +S("A core feature of Minetest is the built-in modding capability. Mods modify existing gameplay. They can be as simple as adding a few decorative blocks or be very complex by e.g. introducing completely new gameplay concepts, generating a completely different kind of world, and many other things.").."\n\n".. S("Minetest can be played alone or online together with multiple players. Online play will work out of the box with any mods, with no need for additional software as they are entirely provided by the server.").."\n\n".. diff --git a/mods/ITEMS/mcl_colorblocks/init.lua b/mods/ITEMS/mcl_colorblocks/init.lua index 57e96e4d..18faee84 100644 --- a/mods/ITEMS/mcl_colorblocks/init.lua +++ b/mods/ITEMS/mcl_colorblocks/init.lua @@ -22,9 +22,9 @@ block.dyes = { } local hc_desc = "Terracotta is a basic building material. It comes in many different colors." -local gt_desc = "Glazed terracotta is a decorational block with a complex pattern. It can be rotated by placing it in different directions." +local gt_desc = "Glazed terracotta is a decorative block with a complex pattern. It can be rotated by placing it in different directions." local cp_desc = "Concrete powder is used for creating concrete, but it can also be used as decoration itself. It comes in different colors. Concrete powder turns into concrete of the same color when it comes in contact with water." -local conc_desc = "Concrete is a decorational block which comes in many different colors. It is notable for having a very strong and clean color.", +local conc_desc = "Concrete is a decorative block which comes in many different colors. It is notable for having a very strong and clean color.", minetest.register_node("mcl_colorblocks:hardened_clay", { description = "Terracotta", diff --git a/mods/ITEMS/mcl_core/locale/mcl_core.de.tr b/mods/ITEMS/mcl_core/locale/mcl_core.de.tr index 717ccf35..8657503a 100644 --- a/mods/ITEMS/mcl_core/locale/mcl_core.de.tr +++ b/mods/ITEMS/mcl_core/locale/mcl_core.de.tr @@ -3,14 +3,14 @@ %s died in lava.=%s starb in Lava. %s melted in lava.=%s schmolz in der Lava. %s took a bath in a hot lava tub.=%s nahm ein Bad in einer heißen Lavawanne. -A block of diamond is mostly a shiny decorational block but also useful as a compact storage of diamonds.=Ein Diamantblock ist hauptsächlich ein glänzender Dekorationsblock, aber er ist auch nützlich zur kompakten Aufbewahrung von Diamanten. -A block of emerald is mostly a shiny decorational block but also useful as a compact storage of emeralds.=Ein Smaragdblock ist hauptsächlich ein glänzender Dekorationsblock, aber er ist auch nützlich zur kompakten Aufbewahrung von Smaragden. -A block of gold is mostly a shiny decorational block but also useful as a compact storage of gold ingots.=Ein Goldblock ist hauptsächlich ein glänzender Dekorationsblock, aber er ist auch nützlich zur kompakten Aufbewahrung von Goldbarren. -A block of iron is mostly a decorational block but also useful as a compact storage of iron ingots.=Ein Eisenblock ist hauptsächlich ein glänzender Dekorationsblock, aber er ist auch nützlich zur kompakten Aufbewahrung von Eisenbarren. +A block of diamond is mostly a shiny decorative block but also useful as a compact storage of diamonds.=Ein Diamantblock ist hauptsächlich ein glänzender Dekorationsblock, aber er ist auch nützlich zur kompakten Aufbewahrung von Diamanten. +A block of emerald is mostly a shiny decorative block but also useful as a compact storage of emeralds.=Ein Smaragdblock ist hauptsächlich ein glänzender Dekorationsblock, aber er ist auch nützlich zur kompakten Aufbewahrung von Smaragden. +A block of gold is mostly a shiny decorative block but also useful as a compact storage of gold ingots.=Ein Goldblock ist hauptsächlich ein glänzender Dekorationsblock, aber er ist auch nützlich zur kompakten Aufbewahrung von Goldbarren. +A block of iron is mostly a decorative block but also useful as a compact storage of iron ingots.=Ein Eisenblock ist hauptsächlich ein glänzender Dekorationsblock, aber er ist auch nützlich zur kompakten Aufbewahrung von Eisenbarren. A cactus can only be placed on top of another cactus or any sand.=Ein Kaktus kann nur auf einem anderen Kaktus oder auf beliebigem Sand platziert werden. -A decorational and mostly transparent block.=Ein Dekoblock, der größtenteils transparent ist. +A decorative and mostly transparent block.=Ein Dekoblock, der größtenteils transparent ist. A grass block is dirt with a grass cover. Grass blocks are resourceful blocks which allow the growth of all sorts of plants. They can be turned into farmland with a hoe and turned into grass paths with a shovel. In light, the grass slowly spreads onto dirt nearby. Under an opaque block or a liquid, a grass block may turn back to dirt.=Ein Grasblock ist Erde mit einer Grasschicht. Grasblöcke sind vielseitige Blöcke, die das Wachstum aller möglichen Pflanzen fördern. Mit einer Hacke kann man das Land bestellen und einen Ackerboden machen. Mit einer Schaufel verwandelt man ihn in einen Graspfad. Im Licht wird das Gras sich langsam auf benachbarte Erde ausbreiten. Unter einem lichtundurchlässigen Block kann sich dieser Block wieder zurück zu Erde verwandeln. -A lapis lazuli block is mostly a decorational block but also useful as a compact storage of lapis lazuli.=Ein Lapislazuliblock ist hauptsächlich ein Deko-Block aber er ist auch nützlich zur kompakten Aufbewahrung von Lapislazuli. +A lapis lazuli block is mostly a decorative block but also useful as a compact storage of lapis lazuli.=Ein Lapislazuliblock ist hauptsächlich ein Deko-Block aber er ist auch nützlich zur kompakten Aufbewahrung von Lapislazuli. A lava source sets fire to a couple of air blocks above when they're next to a flammable block.=Eine Lavaquelle zündet einige Luftblöcke über ihr an, wenn sie sich neben einem entzündlichen Block befinden. A piece of ladder which allows you to climb vertically. Ladders can only be placed on the side of solid blocks and not on glass, leaves, ice, slabs, glowstone, nor sea lanterns.=Ein Leiterstück, mit dem Sie vertikal klettern können. Leitern können nur an der Seite fester Blöcke und nicht an Glas, Blättern, Eis, Platten, Leuchtsteinen oder Ozeanlaternen platziert werden. Acacia Bark=Akazienrinde @@ -42,7 +42,7 @@ Block of Iron=Eisenblock Blocks of coal are useful as a compact storage of coal and very useful as a furnace fuel. A block of coal is as efficient as 10 coal.=Kohleblöcke sind für eine kompakte Aufbewahrung von Kohle nützlich und sehr nützlich als Ofenbrennstoff. Ein Kohleblock ist so effizient wie 10 mal Kohle. Blue Stained Glass=Blaues Glas Bone Block=Knockenblock -Bone blocks are decorational blocks and a compact storage of bone meal.=Knochenblöcke sind Deko-Blöcke und geeignet zur kompakten Aufbewahrung von Knochenmehl. +Bone blocks are decorative blocks and a compact storage of bone meal.=Knochenblöcke sind Deko-Blöcke und geeignet zur kompakten Aufbewahrung von Knochenmehl. Bowl=Schale Bowls are mainly used to hold tasty soups.=Schalen werden hauptsächlich für leckere Suppen gebraucht. Brick=Ziegel @@ -56,8 +56,8 @@ Charcoal is an alternative furnace fuel created by cooking wood in a furnace. It Chiseled Red Sandstone=Gemeißelter roter Sandstein Chiseled Sandstone=Gemeißelter Sandstein Chiseled Stone Bricks=Gemeißelte Steinziegel -Chiseled red sandstone is a decorational building block.=Gemeißelter roter Sandstein ist ein dekorativer Block zum Bauen. -Chiseled sandstone is a decorational building block.=Gemeißelter Sandstein ist ein dekorativer Block zum Bauen. +Chiseled red sandstone is a decorative building block.=Gemeißelter roter Sandstein ist ein dekorativer Block zum Bauen. +Chiseled sandstone is a decorative building block.=Gemeißelter Sandstein ist ein dekorativer Block zum Bauen. Clay=Ton Clay Ball=Tonklumpen Clay balls are a raw material, mainly used to create bricks in the furnace.=Tonklumpen sind ein Rohstoff, sie werden hauptsächlich zur Ziegelherstellung im Ofen benutzt. @@ -72,8 +72,8 @@ Cobwebs can be walked through, but significantly slow you down.=Spinnennetze kö Cracked Stone Bricks=Brüchige Steinziegel Cut Red Sandstone=Geschliffener roter Sandstein Cut Sandstone=Geschliffener Sandstein -Cut red sandstone is a decorational building block.=Geschliffener roter Sandstein ist ein dekorativer Block zum Bauen. -Cut sandstone is a decorational building block.=Geschliffener Sandstein ist ein dekorativer Block zum Bauen. +Cut red sandstone is a decorative building block.=Geschliffener roter Sandstein ist ein dekorativer Block zum Bauen. +Cut sandstone is a decorative building block.=Geschliffener Sandstein ist ein dekorativer Block zum Bauen. Cyan Stained Glass=Türkises Glas Dark Oak Bark=Dunkeleichenrinde Dark Oak Leaves=Dunkeleichenblätter @@ -112,7 +112,7 @@ Golden apples are precious food items which can be eaten.=Goldene Äpfel sind ko Granite=Granit Grass Block=Grasblock Grass Path=Graspfad -Grass paths are a decorational variant of grass blocks. Their top has a different color and they are a bit lower than grass blocks, making them useful to build footpaths. Grass paths can be created with a shovel. A grass path turns into dirt when it is below a solid block.=Graspfade sind eine dekorative Variante von Grasblöcken. Ihre Oberseite hat eine andere Farbe und sie sind etwas niedriger als Grasblöcke, wodurch sie nützlich sind, um Fußwege zu errichten. Graspfade werden mit einer Schaufel errichtet. Ein Grasphad verwandelt sich in Erde, wenn er sich unter einem festen Block befindet. +Grass paths are a decorative variant of grass blocks. Their top has a different color and they are a bit lower than grass blocks, making them useful to build footpaths. Grass paths can be created with a shovel. A grass path turns into dirt when it is below a solid block.=Graspfade sind eine dekorative Variante von Grasblöcken. Ihre Oberseite hat eine andere Farbe und sie sind etwas niedriger als Grasblöcke, wodurch sie nützlich sind, um Fußwege zu errichten. Graspfade werden mit einer Schaufel errichtet. Ein Grasphad verwandelt sich in Erde, wenn er sich unter einem festen Block befindet. Gravel=Kies Green Stained Glass=Grünes Glas Grey Stained Glass=Graues Glas @@ -168,9 +168,9 @@ Polished Andesite=Polierter Andesit Polished Diorite=Polierter Diorit Polished Granite=Polierter Granit Polished Stone=Polierter Stein -Polished andesite is a decorational building block made from andesite.=Polierter Andesit ist ein dekorativer Block zum Bauen, der aus Andesit gemacht wurde. -Polished diorite is a decorational building block made from diorite.=Polierter Diorit ist ein dekorativer Block zum Bauen, der aus Diorit gemacht wurde. -Polished granite is a decorational building block made from granite.=Polierter Granit ist ein dekorativer Block zum Bauen, der aus Granit gemacht wurde. +Polished andesite is a decorative building block made from andesite.=Polierter Andesit ist ein dekorativer Block zum Bauen, der aus Andesit gemacht wurde. +Polished diorite is a decorative building block made from diorite.=Polierter Diorit ist ein dekorativer Block zum Bauen, der aus Diorit gemacht wurde. +Polished granite is a decorative building block made from granite.=Polierter Granit ist ein dekorativer Block zum Bauen, der aus Granit gemacht wurde. Purple Stained Glass=Violettes Glas Realm Barrier=Reichsbarriere Red Sand=Roter Sand @@ -188,7 +188,7 @@ Slime Block=Schleimblock Slime blocks are very bouncy and prevent fall damage.=Schleimblöcke sind sehr sprunghaft und verhindern Fallschaden. Smooth Red Sandstone=Weicher roter Sandstein Smooth Sandstone=Weicher Sandstein -Smooth red sandstone is a decorational building block.=Weicher roter Sandstein ist ein decorativer Block zum Bauen. +Smooth red sandstone is a decorative building block.=Weicher roter Sandstein ist ein decorativer Block zum Bauen. Smooth sandstone is compressed sand and is a rather soft kind of stone.=Weicher Sandstein ist komprimierter Sand und ein relativ weiches Gestein. Snow=Schnee Some coal contained in stone, it is very common and can be found inside stone in medium to large clusters at nearly every height.=Etwas Kohle im Stein, es kommt sehr häufig vor und kann in mittelgroßen bis großen Ansammlungen im Stein bei fast jeder Höhe gefunden werden. @@ -199,7 +199,7 @@ Spruce Sapling=Fichtensetzling Spruce Wood=Fichtenholz Spruce Wood Planks=Fichtenholzplanken Spruce leaves are grown from spruce trees.=Fichtenblätter wachsen an Fichten. -Stained glass is a decorational and mostly transparent block which comes in various different colors.=Farbglas ist ein dekorativer und größtenteils durchsichtiger Block, der in verschiedenen Farben daherkommt. +Stained glass is a decorative and mostly transparent block which comes in various different colors.=Farbglas ist ein dekorativer und größtenteils durchsichtiger Block, der in verschiedenen Farben daherkommt. Stick=Stock Sticks are a very versatile crafting material; used in countless crafting recipes.=Stöcke sind ein vielseitiges Material, sie werden in zahllosen Fertigungsrezepten gebraucht. Stone=Stein diff --git a/mods/ITEMS/mcl_core/locale/template.tr b/mods/ITEMS/mcl_core/locale/template.tr index b0ec0e99..6bb6474a 100644 --- a/mods/ITEMS/mcl_core/locale/template.tr +++ b/mods/ITEMS/mcl_core/locale/template.tr @@ -3,14 +3,14 @@ %s died in lava.= %s melted in lava.= %s took a bath in a hot lava tub.= -A block of diamond is mostly a shiny decorational block but also useful as a compact storage of diamonds.= -A block of emerald is mostly a shiny decorational block but also useful as a compact storage of emeralds.= -A block of gold is mostly a shiny decorational block but also useful as a compact storage of gold ingots.= -A block of iron is mostly a decorational block but also useful as a compact storage of iron ingots.= +A block of diamond is mostly a shiny decorative block but also useful as a compact storage of diamonds.= +A block of emerald is mostly a shiny decorative block but also useful as a compact storage of emeralds.= +A block of gold is mostly a shiny decorative block but also useful as a compact storage of gold ingots.= +A block of iron is mostly a decorative block but also useful as a compact storage of iron ingots.= A cactus can only be placed on top of another cactus or any sand.= -A decorational and mostly transparent block.= +A decorative and mostly transparent block.= A grass block is dirt with a grass cover. Grass blocks are resourceful blocks which allow the growth of all sorts of plants. They can be turned into farmland with a hoe and turned into grass paths with a shovel. In light, the grass slowly spreads onto dirt nearby. Under an opaque block or a liquid, a grass block may turn back to dirt.= -A lapis lazuli block is mostly a decorational block but also useful as a compact storage of lapis lazuli.= +A lapis lazuli block is mostly a decorative block but also useful as a compact storage of lapis lazuli.= A lava source sets fire to a couple of air blocks above when they're next to a flammable block.= A piece of ladder which allows you to climb vertically. Ladders can only be placed on the side of solid blocks and not on glass, leaves, ice, slabs, glowstone, nor sea lanterns.= Acacia Bark= @@ -42,7 +42,7 @@ Block of Iron= Blocks of coal are useful as a compact storage of coal and very useful as a furnace fuel. A block of coal is as efficient as 10 coal.= Blue Stained Glass= Bone Block= -Bone blocks are decorational blocks and a compact storage of bone meal.= +Bone blocks are decorative blocks and a compact storage of bone meal.= Bowl= Bowls are mainly used to hold tasty soups.= Brick= @@ -56,8 +56,8 @@ Charcoal is an alternative furnace fuel created by cooking wood in a furnace. It Chiseled Red Sandstone= Chiseled Sandstone= Chiseled Stone Bricks= -Chiseled red sandstone is a decorational building block.= -Chiseled sandstone is a decorational building block.= +Chiseled red sandstone is a decorative building block.= +Chiseled sandstone is a decorative building block.= Clay= Clay Ball= Clay balls are a raw material, mainly used to create bricks in the furnace.= @@ -72,8 +72,8 @@ Cobwebs can be walked through, but significantly slow you down.= Cracked Stone Bricks= Cut Red Sandstone= Cut Sandstone= -Cut red sandstone is a decorational building block.= -Cut sandstone is a decorational building block.= +Cut red sandstone is a decorative building block.= +Cut sandstone is a decorative building block.= Cyan Stained Glass= Dark Oak Bark= Dark Oak Leaves= @@ -112,7 +112,7 @@ Golden apples are precious food items which can be eaten.= Granite= Grass Block= Grass Path= -Grass paths are a decorational variant of grass blocks. Their top has a different color and they are a bit lower than grass blocks, making them useful to build footpaths. Grass paths can be created with a shovel. A grass path turns into dirt when it is below a solid block.= +Grass paths are a decorative variant of grass blocks. Their top has a different color and they are a bit lower than grass blocks, making them useful to build footpaths. Grass paths can be created with a shovel. A grass path turns into dirt when it is below a solid block.= Gravel= Green Stained Glass= Grey Stained Glass= @@ -167,9 +167,9 @@ Polished Andesite= Polished Diorite= Polished Granite= Polished Stone= -Polished andesite is a decorational building block made from andesite.= -Polished diorite is a decorational building block made from diorite.= -Polished granite is a decorational building block made from granite.= +Polished andesite is a decorative building block made from andesite.= +Polished diorite is a decorative building block made from diorite.= +Polished granite is a decorative building block made from granite.= Purple Stained Glass= Realm Barrier= Red Sand= @@ -187,7 +187,7 @@ Slime Block= Slime blocks are very bouncy and prevent fall damage.= Smooth Red Sandstone= Smooth Sandstone= -Smooth red sandstone is a decorational building block.= +Smooth red sandstone is a decorative building block.= Smooth sandstone is compressed sand and is a rather soft kind of stone.= Snow= Some coal contained in stone, it is very common and can be found inside stone in medium to large clusters at nearly every height.= @@ -198,7 +198,7 @@ Spruce Sapling= Spruce Wood= Spruce Wood Planks= Spruce leaves are grown from spruce trees.= -Stained glass is a decorational and mostly transparent block which comes in various different colors.= +Stained glass is a decorative and mostly transparent block which comes in various different colors.= Stick= Sticks are a very versatile crafting material; used in countless crafting recipes.= Stone= diff --git a/mods/ITEMS/mcl_core/nodes_base.lua b/mods/ITEMS/mcl_core/nodes_base.lua index d395c33a..eef73e5a 100644 --- a/mods/ITEMS/mcl_core/nodes_base.lua +++ b/mods/ITEMS/mcl_core/nodes_base.lua @@ -249,7 +249,7 @@ minetest.register_node("mcl_core:granite", { minetest.register_node("mcl_core:granite_smooth", { description = S("Polished Granite"), - _doc_items_longdesc = S("Polished granite is a decorational building block made from granite."), + _doc_items_longdesc = S("Polished granite is a decorative building block made from granite."), tiles = {"mcl_core_granite_smooth.png"}, stack_max = 64, is_ground_content = false, @@ -273,7 +273,7 @@ minetest.register_node("mcl_core:andesite", { minetest.register_node("mcl_core:andesite_smooth", { description = S("Polished Andesite"), - _doc_items_longdesc = S("Polished andesite is a decorational building block made from andesite."), + _doc_items_longdesc = S("Polished andesite is a decorative building block made from andesite."), tiles = {"mcl_core_andesite_smooth.png"}, is_ground_content = false, stack_max = 64, @@ -297,7 +297,7 @@ minetest.register_node("mcl_core:diorite", { minetest.register_node("mcl_core:diorite_smooth", { description = S("Polished Diorite"), - _doc_items_longdesc = S("Polished diorite is a decorational building block made from diorite."), + _doc_items_longdesc = S("Polished diorite is a decorative building block made from diorite."), tiles = {"mcl_core_diorite_smooth.png"}, is_ground_content = false, stack_max = 64, @@ -370,7 +370,7 @@ end minetest.register_node("mcl_core:grass_path", { tiles = {"mcl_core_grass_path_top.png", "default_dirt.png", "mcl_core_grass_path_side.png"}, description = S("Grass Path"), - _doc_items_longdesc = S("Grass paths are a decorational variant of grass blocks. Their top has a different color and they are a bit lower than grass blocks, making them useful to build footpaths. Grass paths can be created with a shovel. A grass path turns into dirt when it is below a solid block."), + _doc_items_longdesc = S("Grass paths are a decorative variant of grass blocks. Their top has a different color and they are a bit lower than grass blocks, making them useful to build footpaths. Grass paths can be created with a shovel. A grass path turns into dirt when it is below a solid block."), drop = "mcl_core:dirt", is_ground_content = true, drawtype = "nodebox", @@ -501,7 +501,7 @@ minetest.register_node("mcl_core:sandstone", { minetest.register_node("mcl_core:sandstonesmooth", { description = S("Cut Sandstone"), - _doc_items_longdesc = S("Cut sandstone is a decorational building block."), + _doc_items_longdesc = S("Cut sandstone is a decorative building block."), tiles = {"mcl_core_sandstone_top.png", "mcl_core_sandstone_bottom.png", "mcl_core_sandstone_smooth.png"}, is_ground_content = false, stack_max = 64, @@ -513,7 +513,7 @@ minetest.register_node("mcl_core:sandstonesmooth", { minetest.register_node("mcl_core:sandstonecarved", { description = S("Chiseled Sandstone"), - _doc_items_longdesc = S("Chiseled sandstone is a decorational building block."), + _doc_items_longdesc = S("Chiseled sandstone is a decorative building block."), tiles = {"mcl_core_sandstone_top.png", "mcl_core_sandstone_bottom.png", "mcl_core_sandstone_carved.png"}, is_ground_content = false, stack_max = 64, @@ -564,7 +564,7 @@ minetest.register_node("mcl_core:redsandstone", { minetest.register_node("mcl_core:redsandstonesmooth", { description = S("Cut Red Sandstone"), - _doc_items_longdesc = S("Cut red sandstone is a decorational building block."), + _doc_items_longdesc = S("Cut red sandstone is a decorative building block."), tiles = {"mcl_core_red_sandstone_top.png", "mcl_core_red_sandstone_bottom.png", "mcl_core_red_sandstone_smooth.png"}, is_ground_content = false, stack_max = 64, @@ -576,7 +576,7 @@ minetest.register_node("mcl_core:redsandstonesmooth", { minetest.register_node("mcl_core:redsandstonecarved", { description = S("Chiseled Red Sandstone"), - _doc_items_longdesc = S("Chiseled red sandstone is a decorational building block."), + _doc_items_longdesc = S("Chiseled red sandstone is a decorative building block."), tiles = {"mcl_core_red_sandstone_top.png", "mcl_core_red_sandstone_bottom.png", "mcl_core_red_sandstone_carved.png"}, is_ground_content = false, stack_max = 64, @@ -588,7 +588,7 @@ minetest.register_node("mcl_core:redsandstonecarved", { minetest.register_node("mcl_core:redsandstonesmooth2", { description = S("Smooth Red Sandstone"), - _doc_items_longdesc = S("Smooth red sandstone is a decorational building block."), + _doc_items_longdesc = S("Smooth red sandstone is a decorative building block."), tiles = {"mcl_core_red_sandstone_top.png"}, is_ground_content = false, stack_max = 64, @@ -706,7 +706,7 @@ minetest.register_node("mcl_core:coalblock", { minetest.register_node("mcl_core:ironblock", { description = S("Block of Iron"), - _doc_items_longdesc = S("A block of iron is mostly a decorational block but also useful as a compact storage of iron ingots."), + _doc_items_longdesc = S("A block of iron is mostly a decorative block but also useful as a compact storage of iron ingots."), tiles = {"default_steel_block.png"}, is_ground_content = false, stack_max = 64, @@ -718,7 +718,7 @@ minetest.register_node("mcl_core:ironblock", { minetest.register_node("mcl_core:goldblock", { description = S("Block of Gold"), - _doc_items_longdesc = S("A block of gold is mostly a shiny decorational block but also useful as a compact storage of gold ingots."), + _doc_items_longdesc = S("A block of gold is mostly a shiny decorative block but also useful as a compact storage of gold ingots."), tiles = {"default_gold_block.png"}, is_ground_content = false, stack_max = 64, @@ -730,7 +730,7 @@ minetest.register_node("mcl_core:goldblock", { minetest.register_node("mcl_core:diamondblock", { description = S("Block of Diamond"), - _doc_items_longdesc = S("A block of diamond is mostly a shiny decorational block but also useful as a compact storage of diamonds."), + _doc_items_longdesc = S("A block of diamond is mostly a shiny decorative block but also useful as a compact storage of diamonds."), tiles = {"default_diamond_block.png"}, is_ground_content = false, stack_max = 64, @@ -742,7 +742,7 @@ minetest.register_node("mcl_core:diamondblock", { minetest.register_node("mcl_core:lapisblock", { description = S("Lapis Lazuli Block"), - _doc_items_longdesc = S("A lapis lazuli block is mostly a decorational block but also useful as a compact storage of lapis lazuli."), + _doc_items_longdesc = S("A lapis lazuli block is mostly a decorative block but also useful as a compact storage of lapis lazuli."), tiles = {"mcl_core_lapis_block.png"}, is_ground_content = false, stack_max = 64, @@ -754,7 +754,7 @@ minetest.register_node("mcl_core:lapisblock", { minetest.register_node("mcl_core:emeraldblock", { description = S("Block of Emerald"), - _doc_items_longdesc = S("A block of emerald is mostly a shiny decorational block but also useful as a compact storage of emeralds."), + _doc_items_longdesc = S("A block of emerald is mostly a shiny decorative block but also useful as a compact storage of emeralds."), tiles = {"mcl_core_emerald_block.png"}, is_ground_content = false, stack_max = 64, diff --git a/mods/ITEMS/mcl_core/nodes_glass.lua b/mods/ITEMS/mcl_core/nodes_glass.lua index b9344962..f87ce79b 100644 --- a/mods/ITEMS/mcl_core/nodes_glass.lua +++ b/mods/ITEMS/mcl_core/nodes_glass.lua @@ -3,7 +3,7 @@ local S = minetest.get_translator("mcl_core") minetest.register_node("mcl_core:glass", { description = S("Glass"), - _doc_items_longdesc = S("A decorational and mostly transparent block."), + _doc_items_longdesc = S("A decorative and mostly transparent block."), drawtype = "glasslike", is_ground_content = false, tiles = {"default_glass.png"}, @@ -24,7 +24,7 @@ function mcl_core.add_glass(desc, recipeitem, colorgroup, color) minetest.register_node("mcl_core:glass_"..color, { description = desc, - _doc_items_longdesc = S("Stained glass is a decorational and mostly transparent block which comes in various different colors."), + _doc_items_longdesc = S("Stained glass is a decorative and mostly transparent block which comes in various different colors."), drawtype = "glasslike", is_ground_content = false, tiles = {"mcl_core_glass_"..color..".png"}, diff --git a/mods/ITEMS/mcl_core/nodes_misc.lua b/mods/ITEMS/mcl_core/nodes_misc.lua index 3eb40274..8d204fa9 100644 --- a/mods/ITEMS/mcl_core/nodes_misc.lua +++ b/mods/ITEMS/mcl_core/nodes_misc.lua @@ -3,7 +3,7 @@ local S = minetest.get_translator("mcl_core") minetest.register_node("mcl_core:bone_block", { description = S("Bone Block"), - _doc_items_longdesc = S("Bone blocks are decorational blocks and a compact storage of bone meal."), + _doc_items_longdesc = S("Bone blocks are decorative blocks and a compact storage of bone meal."), tiles = {"mcl_core_bone_block_top.png", "mcl_core_bone_block_top.png", "mcl_core_bone_block_side.png"}, is_ground_content = false, paramtype2 = "facedir", diff --git a/mods/ITEMS/mcl_end/building.lua b/mods/ITEMS/mcl_end/building.lua index aeee897f..174140ed 100644 --- a/mods/ITEMS/mcl_end/building.lua +++ b/mods/ITEMS/mcl_end/building.lua @@ -52,7 +52,7 @@ minetest.register_node("mcl_end:purpur_pillar", { minetest.register_node("mcl_end:end_rod", { description = S("End Rod"), - _doc_items_longdesc = S("End rods are decorational light sources."), + _doc_items_longdesc = S("End rods are decorative light sources."), tiles = { "mcl_end_end_rod_top.png", "mcl_end_end_rod_bottom.png", @@ -127,7 +127,7 @@ minetest.register_node("mcl_end:end_rod", { minetest.register_node("mcl_end:dragon_egg", { description = S("Dragon Egg"), - _doc_items_longdesc = S("A dragon egg is a decorational item which can be placed."), + _doc_items_longdesc = S("A dragon egg is a decorative item which can be placed."), tiles = { "mcl_end_dragon_egg.png", "mcl_end_dragon_egg.png", diff --git a/mods/ITEMS/mcl_flowerpots/init.lua b/mods/ITEMS/mcl_flowerpots/init.lua index c58fab7c..d0d74da8 100644 --- a/mods/ITEMS/mcl_flowerpots/init.lua +++ b/mods/ITEMS/mcl_flowerpots/init.lua @@ -29,7 +29,7 @@ local cubes = { minetest.register_node("mcl_flowerpots:flower_pot", { description = S("Flower Pot"), - _doc_items_longdesc = S("Flower pots are decorational blocks in which flowers and other small plants can be placed."), + _doc_items_longdesc = S("Flower pots are decorative blocks in which flowers and other small plants can be placed."), _doc_items_usagehelp = S("Rightclick an empty flower pot while you wield a plant to place the plant. Flower pots can hold small flowers (not higher than 1 block), saplings, ferns, dead bushes, mushrooms and cacti. Rightclick a potted plant to retrieve the plant."), drawtype = "mesh", mesh = "flowerpot.obj", diff --git a/mods/ITEMS/mcl_heads/description.txt b/mods/ITEMS/mcl_heads/description.txt index c3a38bb7..b169ba79 100644 --- a/mods/ITEMS/mcl_heads/description.txt +++ b/mods/ITEMS/mcl_heads/description.txt @@ -1 +1 @@ -Small decorational head blocks. +Small decorative head blocks. diff --git a/mods/ITEMS/mcl_nether/init.lua b/mods/ITEMS/mcl_nether/init.lua index 15d5f931..d12b5a41 100644 --- a/mods/ITEMS/mcl_nether/init.lua +++ b/mods/ITEMS/mcl_nether/init.lua @@ -153,7 +153,7 @@ minetest.register_node("mcl_nether:red_nether_brick", { minetest.register_node("mcl_nether:nether_wart_block", { description = S("Nether Wart Block"), - _doc_items_longdesc = S("A nether wart block is a purely decorational block made from nether wart."), + _doc_items_longdesc = S("A nether wart block is a purely decorative block made from nether wart."), stack_max = 64, tiles = {"mcl_nether_nether_wart_block.png"}, is_ground_content = false, diff --git a/mods/ITEMS/mcl_wool/init.lua b/mods/ITEMS/mcl_wool/init.lua index 99e7344f..40c2340b 100644 --- a/mods/ITEMS/mcl_wool/init.lua +++ b/mods/ITEMS/mcl_wool/init.lua @@ -40,7 +40,7 @@ for _, row in ipairs(wool.dyes) do -- Node Definition minetest.register_node("mcl_wool:"..name, { description = desc_wool, - _doc_items_longdesc = S("Wool is a decorational block which comes in many different colors."), + _doc_items_longdesc = S("Wool is a decorative block which comes in many different colors."), stack_max = 64, is_ground_content = false, tiles = {texture..".png"}, From e2fd769657371e90e76cf25df1fae82cd745f680 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sat, 9 Mar 2019 18:52:24 +0100 Subject: [PATCH 079/737] New, stratum-based end stone generation --- mods/MAPGEN/mcl_biomes/init.lua | 102 ++++++++++++++++++++++++-------- 1 file changed, 76 insertions(+), 26 deletions(-) diff --git a/mods/MAPGEN/mcl_biomes/init.lua b/mods/MAPGEN/mcl_biomes/init.lua index 26efcee6..836548d7 100644 --- a/mods/MAPGEN/mcl_biomes/init.lua +++ b/mods/MAPGEN/mcl_biomes/init.lua @@ -1606,47 +1606,97 @@ local function register_dimension_ores() --[[ THE END ]] -- Generate fake End - -- TODO: Remove both "ores" when there's a better End generator + -- TODO: Remove the "ores" when there's a better End generator + -- FIXME: Broken lighting in v6 mapgen + + local end_wherein + if mg_name == "v6" then + end_wherein = {"air", "mcl_core:stone"} + else + end_wherein = {"air"} + end minetest.register_ore({ - ore_type = "sheet", + ore_type = "stratum", ore = "mcl_end:end_stone", - wherein = {"air"}, + wherein = end_wherein, y_min = mcl_vars.mg_end_min+64, - y_max = mcl_vars.mg_end_min+80, - column_height_min = 6, - column_height_max = 7, - column_midpoint_factor = 0.0, + y_max = mcl_vars.mg_end_min+100, + noise_params = { + offset = mcl_vars.mg_end_min+70, + scale = -1, + spread = {x=126, y=126, z=126}, + seed = 9999, + octaves = 3, + persist = 0.5, + }, + + np_stratum_thickness = { offset = -2, - scale = 8, - spread = {x=100, y=100, z=100}, - seed = 2999, - octaves = 5, - persist = 0.55, + scale = 10, + spread = {x=126, y=126, z=126}, + seed = 9999, + octaves = 3, + persist = 0.5, }, - noise_threshold = 0, + clust_scarcity = 1, }) minetest.register_ore({ - ore_type = "sheet", + ore_type = "stratum", ore = "mcl_end:end_stone", - wherein = {"air"}, + wherein = end_wherein, y_min = mcl_vars.mg_end_min+64, - y_max = mcl_vars.mg_end_min+80, - column_height_min = 4, - column_height_max = 4, - column_midpoint_factor = 0.0, + y_max = mcl_vars.mg_end_min+100, + noise_params = { - offset = -4, - scale = 3, - spread = {x=200, y=200, z=200}, - seed = 5390, - octaves = 5, - persist = 0.6, + offset = mcl_vars.mg_end_min+72, + scale = -3, + spread = {x=84, y=84, z=84}, + seed = 999, + octaves = 4, + persist = 0.8, }, - noise_threshold = 0, + + np_stratum_thickness = { + offset = -4, + scale = 10, + spread = {x=84, y=84, z=84}, + seed = 999, + octaves = 4, + persist = 0.8, + }, + clust_scarcity = 1, }) + minetest.register_ore({ + ore_type = "stratum", + ore = "mcl_end:end_stone", + wherein = end_wherein, + y_min = mcl_vars.mg_end_min+64, + y_max = mcl_vars.mg_end_min+100, + + noise_params = { + offset = mcl_vars.mg_end_min+70, + scale = -2, + spread = {x=84, y=84, z=84}, + seed = 99, + octaves = 4, + persist = 0.85, + }, + + np_stratum_thickness = { + offset = -3, + scale = 5, + spread = {x=63, y=63, z=63}, + seed = 50, + octaves = 4, + persist = 0.85, + }, + clust_scarcity = 1, + }) + + end From 895b9e7e3ade5b39c5e43bf6325f7007f5771c26 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sat, 9 Mar 2019 19:15:10 +0100 Subject: [PATCH 080/737] More End tweaks --- mods/CORE/mcl_init/init.lua | 2 +- mods/MAPGEN/mcl_biomes/init.lua | 13 +++++++------ 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/mods/CORE/mcl_init/init.lua b/mods/CORE/mcl_init/init.lua index 7f310b9a..afbe9dfa 100644 --- a/mods/CORE/mcl_init/init.lua +++ b/mods/CORE/mcl_init/init.lua @@ -85,7 +85,7 @@ end mcl_vars.mg_end_min = -27073 -- Carefully chosen to be at a mapchunk border mcl_vars.mg_end_max_official = mcl_vars.mg_end_min + minecraft_height_limit mcl_vars.mg_end_max = mcl_vars.mg_overworld_min - 2000 -mcl_vars.mg_end_platform_pos = { x = 100, y = mcl_vars.mg_end_min + 80, z = 0 } +mcl_vars.mg_end_platform_pos = { x = 100, y = mcl_vars.mg_end_min + 74, z = 0 } -- Realm barrier used to safely separate the End from the void below the Overworld mcl_vars.mg_realm_barrier_overworld_end_max = mcl_vars.mg_end_max diff --git a/mods/MAPGEN/mcl_biomes/init.lua b/mods/MAPGEN/mcl_biomes/init.lua index 836548d7..774ac96b 100644 --- a/mods/MAPGEN/mcl_biomes/init.lua +++ b/mods/MAPGEN/mcl_biomes/init.lua @@ -1,4 +1,5 @@ local mg_name = minetest.get_mapgen_setting("mg_name") +local mg_seed = minetest.get_mapgen_setting("seed") -- Some mapgen settings local superflat = mg_name == "flat" and minetest.get_mapgen_setting("mcl_superflat_classic") == "true" @@ -1627,7 +1628,7 @@ local function register_dimension_ores() offset = mcl_vars.mg_end_min+70, scale = -1, spread = {x=126, y=126, z=126}, - seed = 9999, + seed = mg_seed+9999, octaves = 3, persist = 0.5, }, @@ -1636,7 +1637,7 @@ local function register_dimension_ores() offset = -2, scale = 10, spread = {x=126, y=126, z=126}, - seed = 9999, + seed = mg_seed+9999, octaves = 3, persist = 0.5, }, @@ -1654,7 +1655,7 @@ local function register_dimension_ores() offset = mcl_vars.mg_end_min+72, scale = -3, spread = {x=84, y=84, z=84}, - seed = 999, + seed = mg_seed+999, octaves = 4, persist = 0.8, }, @@ -1663,7 +1664,7 @@ local function register_dimension_ores() offset = -4, scale = 10, spread = {x=84, y=84, z=84}, - seed = 999, + seed = mg_seed+999, octaves = 4, persist = 0.8, }, @@ -1680,7 +1681,7 @@ local function register_dimension_ores() offset = mcl_vars.mg_end_min+70, scale = -2, spread = {x=84, y=84, z=84}, - seed = 99, + seed = mg_seed+99, octaves = 4, persist = 0.85, }, @@ -1689,7 +1690,7 @@ local function register_dimension_ores() offset = -3, scale = 5, spread = {x=63, y=63, z=63}, - seed = 50, + seed = mg_seed+50, octaves = 4, persist = 0.85, }, From 7a4aeb662533cdfbaafd2e29aad54c4a34fd382e Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sat, 9 Mar 2019 21:02:40 +0100 Subject: [PATCH 081/737] Generate chorus plants in the End --- mods/ITEMS/mcl_end/chorus_plant.lua | 230 ++++++++++++++++------------ mods/MAPGEN/mcl_biomes/depends.txt | 1 + mods/MAPGEN/mcl_biomes/init.lua | 49 +++++- 3 files changed, 182 insertions(+), 98 deletions(-) diff --git a/mods/ITEMS/mcl_end/chorus_plant.lua b/mods/ITEMS/mcl_end/chorus_plant.lua index 1374e774..6f7b849b 100644 --- a/mods/ITEMS/mcl_end/chorus_plant.lua +++ b/mods/ITEMS/mcl_end/chorus_plant.lua @@ -3,6 +3,8 @@ local S = minetest.get_translator("mcl_end") +mcl_end = {} + --- Plant parts --- local MAX_FLOWER_AGE = 5 -- Maximum age of chorus flower before it dies @@ -168,6 +170,138 @@ minetest.register_node("mcl_end:chorus_plant", { _mcl_hardness = 0.4, }) +-- Grow a complete chorus plant at pos +mcl_end.grow_chorus_plant = function(pos, node) + local flowers = { pos } + -- Plant initial flower (if it isn't there already) + if not node then + node = minetest.get_node(pos) + end + if node.name ~= "mcl_end:chorus_flower" then + minetest.set_node(pos, { name = "mcl_end:chorus_flower" }) + end + while true do + local new_flowers_list = {} + for f=1, #flowers do + local new_flowers = mcl_end.grow_chorus_plant_step(flowers[f], minetest.get_node(flowers[f])) + if #new_flowers > 0 then + table.insert(new_flowers_list, new_flowers) + end + end + if #new_flowers_list == 0 then + return + end + flowers = {} + for l=1, #new_flowers_list do + for f=1, #new_flowers_list[l] do + table.insert(flowers, new_flowers_list[l][f]) + end + end + end +end + +-- Grow a single step of a chorus plant at pos. +-- Pos must be a chorus flower. +mcl_end.grow_chorus_plant_step = function(pos, node) + local new_flower_buds = {} + local above = { x = pos.x, y = pos.y + 1, z = pos.z } + local node_above = minetest.get_node(above) + local around = { + { x=-1, y=0, z= 0 }, + { x= 1, y=0, z= 0 }, + { x= 0, y=0, z=-1 }, + { x= 0, y=0, z= 1 }, + } + local air_around = true + for a=1, #around do + if minetest.get_node(vector.add(above, around[a])).name ~= "air" then + air_around = false + break + end + end + local grown = false + if node_above.name == "air" and air_around then + local branching = false + local h = 0 + for y=1, 4 do + local checkpos = {x=pos.x, y=pos.y-y, z=pos.z} + local node = minetest.get_node(checkpos) + if node.name == "mcl_end:chorus_plant" then + h = y + if not branching then + for a=1, #around do + local node_side = minetest.get_node(vector.add(checkpos, around[a])) + if node_side.name == "mcl_end:chorus_plant" then + branching = true + end + end + end + else + break + end + end + + local grow_chance + if h <= 1 then + grow_chance = 100 + elseif h == 2 and branching == false then + grow_chance = 60 + elseif h == 2 and branching == true then + grow_chance = 50 + elseif h == 3 and branching == false then + grow_chance = 40 + elseif h == 3 and branching == true then + grow_chance = 25 + elseif h == 4 and branching == false then + grow_chance = 20 + end + + if grow_chance then + local new_flowers = {} + local r = math.random(1, 100) + local age = node.param2 + if r <= grow_chance then + table.insert(new_flowers, above) + else + age = age + 1 + local branches + if branching == false then + branches = math.random(1, 4) + elseif branching == true then + branches = math.random(0, 3) + end + local branch_grown = false + for b=1, branches do + local next_branch = math.random(1, #around) + local branch = vector.add(pos, around[next_branch]) + local below_branch = vector.add(branch, {x=0,y=-1,z=0}) + if minetest.get_node(below_branch).name == "air" then + table.insert(new_flowers, branch) + end + end + end + + for _, f in ipairs(new_flowers) do + if age >= MAX_FLOWER_AGE then + minetest.set_node(f, {name="mcl_end:chorus_flower_dead"}) + grown = true + else + minetest.set_node(f, {name="mcl_end:chorus_flower", param2 = age}) + table.insert(new_flower_buds, f) + grown = true + end + end + if #new_flowers >= 1 then + minetest.set_node(pos, {name="mcl_end:chorus_plant"}) + grown = true + end + end + end + if not grown then + minetest.set_node(pos, {name = "mcl_end:chorus_flower_dead"}) + end + return new_flower_buds +end --- ABM --- minetest.register_abm({ @@ -176,101 +310,7 @@ minetest.register_abm({ interval = 35.0, chance = 4.0, action = function(pos, node, active_object_count, active_object_count_wider) - local above = { x = pos.x, y = pos.y + 1, z = pos.z } - local node_above = minetest.get_node(above) - local around = { - { x=-1, y=0, z= 0 }, - { x= 1, y=0, z= 0 }, - { x= 0, y=0, z=-1 }, - { x= 0, y=0, z= 1 }, - } - local air_around = true - for a=1, #around do - if minetest.get_node(vector.add(above, around[a])).name ~= "air" then - air_around = false - break - end - end - local grown = false - if node_above.name == "air" and air_around then - local branching = false - local h = 0 - for y=1, 4 do - local checkpos = {x=pos.x, y=pos.y-y, z=pos.z} - local node = minetest.get_node(checkpos) - if node.name == "mcl_end:chorus_plant" then - h = y - if not branching then - for a=1, #around do - local node_side = minetest.get_node(vector.add(checkpos, around[a])) - if node_side.name == "mcl_end:chorus_plant" then - branching = true - end - end - end - else - break - end - end - - local grow_chance - if h <= 1 then - grow_chance = 100 - elseif h == 2 and branching == false then - grow_chance = 60 - elseif h == 2 and branching == true then - grow_chance = 50 - elseif h == 3 and branching == false then - grow_chance = 40 - elseif h == 3 and branching == true then - grow_chance = 25 - elseif h == 4 and branching == false then - grow_chance = 20 - end - - if grow_chance then - local new_flowers = {} - local r = math.random(1, 100) - local age = node.param2 - if r <= grow_chance then - table.insert(new_flowers, above) - else - age = age + 1 - local branches - if branching == false then - branches = math.random(1, 4) - elseif branching == true then - branches = math.random(0, 3) - end - local branch_grown = false - for b=1, branches do - local next_branch = math.random(1, #around) - local branch = vector.add(pos, around[next_branch]) - local below_branch = vector.add(branch, {x=0,y=-1,z=0}) - if minetest.get_node(below_branch).name == "air" then - table.insert(new_flowers, branch) - end - end - end - - for _, f in ipairs(new_flowers) do - if age >= MAX_FLOWER_AGE then - minetest.set_node(f, {name="mcl_end:chorus_flower_dead"}) - grown = true - else - minetest.set_node(f, {name="mcl_end:chorus_flower", param2 = age}) - grown = true - end - end - if #new_flowers >= 1 then - minetest.set_node(pos, {name="mcl_end:chorus_plant"}) - grown = true - end - end - end - if not grown then - minetest.set_node(pos, {name = "mcl_end:chorus_flower_dead"}) - end + mcl_end.grow_chorus_plant_step(pos, node) end, }) diff --git a/mods/MAPGEN/mcl_biomes/depends.txt b/mods/MAPGEN/mcl_biomes/depends.txt index 3e94ed7c..4ec3afae 100644 --- a/mods/MAPGEN/mcl_biomes/depends.txt +++ b/mods/MAPGEN/mcl_biomes/depends.txt @@ -3,3 +3,4 @@ mcl_core mcl_worlds mcl_farming mcl_flowers +mcl_end diff --git a/mods/MAPGEN/mcl_biomes/init.lua b/mods/MAPGEN/mcl_biomes/init.lua index 774ac96b..a433bb85 100644 --- a/mods/MAPGEN/mcl_biomes/init.lua +++ b/mods/MAPGEN/mcl_biomes/init.lua @@ -9,6 +9,8 @@ local generate_fallen_logs = minetest.settings:get_bool("mcl_generate_fallen_log -- Jungle bush schematic. In PC/Java Edition it's Jungle Wood + Oak Leaves local jungle_bush_schematic = minetest.get_modpath("mcl_core").."/schematics/mcl_core_jungle_bush_oak_leaves.mts" +local chorus_plant_deco_id + -- -- Register biomes -- @@ -1697,8 +1699,6 @@ local function register_dimension_ores() clust_scarcity = 1, }) - - end @@ -3240,7 +3240,38 @@ end -- Decorations in non-Overworld dimensions local function register_dimension_decorations() - -- TODO + --[[ NETHER ]] + -- TODO: Nether + + --[[ THE END ]] + + -- Chorus plant + minetest.register_decoration({ + name = "mcl_biomes:chorus_plant", + deco_type = "simple", + place_on = {"mcl_end:end_stone", "air"}, + flags = "all_floors", + sidelen = 16, + noise_params = { + offset = -0.012, + scale = 0.024, + spread = {x = 100, y = 100, z = 100}, + seed = 257, + octaves = 3, + persist = 0.6 + }, + y_min = mcl_vars.mg_end_min, + y_max = mcl_vars.mg_end_max, + decoration = "mcl_end:chorus_flower", + height = 1, + biomes = { "End" }, + }) + + deco_id_chorus_plant = minetest.get_decoration_id("mcl_biomes:chorus_plant") + minetest.set_gen_notify({decoration=true}, { deco_id_chorus_plant }) + + -- TODO: End cities + end @@ -3273,5 +3304,17 @@ if mg_name ~= "singlenode" then register_dimension_decorations() -- Overworld decorations for v6 are handled in mcl_mapgen_core + + if deco_id_chorus_plant then + minetest.register_on_generated(function(minp, maxp, blockseed) + local gennotify = minetest.get_mapgen_object("gennotify") + local poslist = {} + for _, pos in ipairs(gennotify["decoration#"..deco_id_chorus_plant] or {}) do + local realpos = { x = pos.x, y = pos.y + 1, z = pos.z } + mcl_end.grow_chorus_plant(realpos) + end + end) + end + end From 05e8cc8a2c9c1935086bb3bc4d7e6682058c5d0a Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sat, 9 Mar 2019 21:20:37 +0100 Subject: [PATCH 082/737] Don't turn water into end stone anymore --- mods/MAPGEN/mcl_biomes/init.lua | 6 +++--- mods/MAPGEN/mcl_mapgen_core/init.lua | 10 +--------- 2 files changed, 4 insertions(+), 12 deletions(-) diff --git a/mods/MAPGEN/mcl_biomes/init.lua b/mods/MAPGEN/mcl_biomes/init.lua index a433bb85..027d6745 100644 --- a/mods/MAPGEN/mcl_biomes/init.lua +++ b/mods/MAPGEN/mcl_biomes/init.lua @@ -1624,7 +1624,7 @@ local function register_dimension_ores() ore = "mcl_end:end_stone", wherein = end_wherein, y_min = mcl_vars.mg_end_min+64, - y_max = mcl_vars.mg_end_min+100, + y_max = mcl_vars.mg_end_min+80, noise_params = { offset = mcl_vars.mg_end_min+70, @@ -1651,7 +1651,7 @@ local function register_dimension_ores() ore = "mcl_end:end_stone", wherein = end_wherein, y_min = mcl_vars.mg_end_min+64, - y_max = mcl_vars.mg_end_min+100, + y_max = mcl_vars.mg_end_min+80, noise_params = { offset = mcl_vars.mg_end_min+72, @@ -1677,7 +1677,7 @@ local function register_dimension_ores() ore = "mcl_end:end_stone", wherein = end_wherein, y_min = mcl_vars.mg_end_min+64, - y_max = mcl_vars.mg_end_min+100, + y_max = mcl_vars.mg_end_min+80, noise_params = { offset = mcl_vars.mg_end_min+70, diff --git a/mods/MAPGEN/mcl_mapgen_core/init.lua b/mods/MAPGEN/mcl_mapgen_core/init.lua index 5bb28479..c245fdb8 100644 --- a/mods/MAPGEN/mcl_mapgen_core/init.lua +++ b/mods/MAPGEN/mcl_mapgen_core/init.lua @@ -1841,15 +1841,7 @@ minetest.register_on_generated(function(minp, maxp, seed) local y = nodes[n].y local p_pos = area:index(nodes[n].x, y, nodes[n].z) - if data[p_pos] == c_water then - if y <= mcl_vars.mg_end_min + 104 and y >= mcl_vars.mg_end_min + 40 then - data[p_pos] = c_end_stone - lvm_used = true - else - data[p_pos] = c_air - lvm_used = true - end - elseif data[p_pos] == c_stone or data[p_pos] == c_dirt or data[p_pos] == c_sand then + if data[p_pos] == c_water or data[p_pos] == c_stone or data[p_pos] == c_dirt or data[p_pos] == c_sand then data[p_pos] = c_air lvm_used = true end From 655a240107fca15fa408a02fcdb3f275580a57d4 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sat, 9 Mar 2019 23:19:14 +0100 Subject: [PATCH 083/737] Chorus plant: Prevent double placement of flowers --- mods/ITEMS/mcl_end/chorus_plant.lua | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/mods/ITEMS/mcl_end/chorus_plant.lua b/mods/ITEMS/mcl_end/chorus_plant.lua index 6f7b849b..f9f4a59a 100644 --- a/mods/ITEMS/mcl_end/chorus_plant.lua +++ b/mods/ITEMS/mcl_end/chorus_plant.lua @@ -283,12 +283,18 @@ mcl_end.grow_chorus_plant_step = function(pos, node) for _, f in ipairs(new_flowers) do if age >= MAX_FLOWER_AGE then - minetest.set_node(f, {name="mcl_end:chorus_flower_dead"}) - grown = true + local nn = minetest.get_node(f).name + if nn ~= "mcl_end:chorus_flower" and nn ~= "mcl_end:chorus_flower_dead" then + minetest.set_node(f, {name="mcl_end:chorus_flower_dead"}) + grown = true + end else - minetest.set_node(f, {name="mcl_end:chorus_flower", param2 = age}) - table.insert(new_flower_buds, f) - grown = true + local nn = minetest.get_node(f).name + if nn ~= "mcl_end:chorus_flower" and nn ~= "mcl_end:chorus_flower_dead" then + minetest.set_node(f, {name="mcl_end:chorus_flower", param2 = age}) + table.insert(new_flower_buds, f) + grown = true + end end end if #new_flowers >= 1 then From ef0b941bce5664f1f5aeef2782b5a50dd49a565b Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sun, 10 Mar 2019 00:35:16 +0100 Subject: [PATCH 084/737] Fix undeclared global bug in mcl_biomes --- mods/MAPGEN/mcl_biomes/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/MAPGEN/mcl_biomes/init.lua b/mods/MAPGEN/mcl_biomes/init.lua index 027d6745..89746e03 100644 --- a/mods/MAPGEN/mcl_biomes/init.lua +++ b/mods/MAPGEN/mcl_biomes/init.lua @@ -9,7 +9,7 @@ local generate_fallen_logs = minetest.settings:get_bool("mcl_generate_fallen_log -- Jungle bush schematic. In PC/Java Edition it's Jungle Wood + Oak Leaves local jungle_bush_schematic = minetest.get_modpath("mcl_core").."/schematics/mcl_core_jungle_bush_oak_leaves.mts" -local chorus_plant_deco_id +local deco_id_chorus_plant -- -- Register biomes From 740e87cd81af727f27412e76cbf61f60f4d8e403 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sun, 10 Mar 2019 01:05:06 +0100 Subject: [PATCH 085/737] Add FIXME for chorus plants --- mods/ITEMS/mcl_end/chorus_plant.lua | 3 +++ 1 file changed, 3 insertions(+) diff --git a/mods/ITEMS/mcl_end/chorus_plant.lua b/mods/ITEMS/mcl_end/chorus_plant.lua index f9f4a59a..a9a28ed5 100644 --- a/mods/ITEMS/mcl_end/chorus_plant.lua +++ b/mods/ITEMS/mcl_end/chorus_plant.lua @@ -304,6 +304,9 @@ mcl_end.grow_chorus_plant_step = function(pos, node) end end if not grown then + -- FIXME: In the End, chorus plant fails to generate thru mapchunk borders. + -- So the chorus plants are capped at a fixed height. + -- The mapgen needs to be taught somehow how to deal with this. minetest.set_node(pos, {name = "mcl_end:chorus_flower_dead"}) end return new_flower_buds From 29c12439c439ddafa951e01dd5836217089f417b Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sun, 10 Mar 2019 01:11:29 +0100 Subject: [PATCH 086/737] Fix hand range not being applied if wielding item --- mods/PLAYER/mcl_meshhand/depends.txt | 1 + mods/PLAYER/mcl_meshhand/init.lua | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/mods/PLAYER/mcl_meshhand/depends.txt b/mods/PLAYER/mcl_meshhand/depends.txt index f8be59ba..c86b5f93 100644 --- a/mods/PLAYER/mcl_meshhand/depends.txt +++ b/mods/PLAYER/mcl_meshhand/depends.txt @@ -1 +1,2 @@ +mcl_tools mcl_skins? diff --git a/mods/PLAYER/mcl_meshhand/init.lua b/mods/PLAYER/mcl_meshhand/init.lua index 87b9e692..0ef9e201 100644 --- a/mods/PLAYER/mcl_meshhand/init.lua +++ b/mods/PLAYER/mcl_meshhand/init.lua @@ -1,5 +1,7 @@ local has_mcl_skins = minetest.get_modpath("mcl_skins") ~= nil +local def = minetest.registered_items[""] + -- mcl_skins is enabled if has_mcl_skins == true then --generate a node for every skin @@ -14,6 +16,7 @@ if has_mcl_skins == true then drawtype = "mesh", mesh = "mcl_meshhand.b3d", node_placement_prediction = "", + range = def.range, }) end --change the player's hand to their skin @@ -34,6 +37,7 @@ else drawtype = "mesh", mesh = "mcl_meshhand.b3d", node_placement_prediction = "", + range = def.range, }) minetest.register_on_joinplayer(function(player) From 022f627fd0366099d3b59f7019da1f323c2422b3 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sun, 10 Mar 2019 02:58:53 +0100 Subject: [PATCH 087/737] Drop attached chorus plant nodes if detached --- mods/ITEMS/mcl_end/building.lua | 1 + mods/ITEMS/mcl_end/chorus_plant.lua | 72 +++++++++++++++++++++++++++-- mods/ITEMS/mcl_end/init.lua | 4 +- 3 files changed, 71 insertions(+), 6 deletions(-) diff --git a/mods/ITEMS/mcl_end/building.lua b/mods/ITEMS/mcl_end/building.lua index 174140ed..4dbfb563 100644 --- a/mods/ITEMS/mcl_end/building.lua +++ b/mods/ITEMS/mcl_end/building.lua @@ -8,6 +8,7 @@ minetest.register_node("mcl_end:end_stone", { stack_max = 64, groups = {pickaxey=1, building_block=1, material_stone=1}, sounds = mcl_sounds.node_sound_stone_defaults(), + after_dig_node = mcl_end.check_detach_chorus_plant, _mcl_blast_resistance = 45, _mcl_hardness = 3, }) diff --git a/mods/ITEMS/mcl_end/chorus_plant.lua b/mods/ITEMS/mcl_end/chorus_plant.lua index a9a28ed5..3eb952b1 100644 --- a/mods/ITEMS/mcl_end/chorus_plant.lua +++ b/mods/ITEMS/mcl_end/chorus_plant.lua @@ -3,8 +3,6 @@ local S = minetest.get_translator("mcl_end") -mcl_end = {} - --- Plant parts --- local MAX_FLOWER_AGE = 5 -- Maximum age of chorus flower before it dies @@ -26,6 +24,67 @@ local function round(num, idp) return math.floor(num * mult + 0.5) / mult end +-- This detaches all chorus plants that are/were attached +-- at start_pos. +mcl_end.detach_chorus_plant = function(start_pos) + local neighbors = { + { x=0, y=1, z=0 }, + { x=0, y=0, z=1 }, + { x=-1, y=0, z=0 }, + { x=0, y=0, z=-1 }, + { x=1, y=0, z=0 }, + { x=0, y=-1, z=0 }, + } + table.insert(neighbors, { x=0, y=-1, z=0 }) + local tree_start_posses = {} + for i=1, #neighbors do + table.insert(tree_start_posses, vector.add(start_pos, neighbors[i])) + end + + -- From the start_pos, we look at the 6 possible directions. Each of these can + -- have a full independent chorus plant ("tree") that might be detached. + for t=1, #tree_start_posses do + -- For each "tree", we do a depth-first search to traverse all + -- chorus plant nodes. + local touched_nodes_hashes = { minetest.hash_node_position(start_pos) } + local check_posses = { tree_start_posses[t] } + local chorus_nodes = {} + local break_tree = true + while #check_posses > 0 do + local pos = check_posses[1] + local node = minetest.get_node(pos) + touched_nodes_hashes[minetest.hash_node_position(pos)] = true + if node.name == "mcl_end:end_stone" then + -- End stone found, the algorithm ends here (haha!) + -- without destroying any nodes, because chorus plants + -- attach to end stone. + break_tree = false + break + elseif minetest.get_item_group(node.name, "chorus_plant") == 1 then + table.insert(chorus_nodes, pos) + for i=1, #neighbors do + local newpos = vector.add(pos, neighbors[i]) + if not touched_nodes_hashes[minetest.hash_node_position(newpos)] then + table.insert(check_posses, vector.add(pos, neighbors[i])) + end + end + end + table.remove(check_posses, 1) + end + if break_tree then + -- If we traversed the entire chorus plant and it was not attached to end stone: + -- Drop ALL the chorus nodes we found. + for c=1, #chorus_nodes do + minetest.dig_node(chorus_nodes[c]) + end + end + end +end + +mcl_end.check_detach_chorus_plant = function(pos) + mcl_end.detach_chorus_plant(pos) +end + minetest.register_node("mcl_end:chorus_flower", { description = S("Chorus Flower"), _doc_items_longdesc = S("A chorus flower is the living part of a chorus plant. It can grow into a tall chorus plant, step by step. When it grows, it may die on old age eventually. It also dies when it is unable to grow."), @@ -44,7 +103,7 @@ minetest.register_node("mcl_end:chorus_flower", { node_box = chorus_flower_box, selection_box = { type = "regular" }, sounds = mcl_sounds.node_sound_wood_defaults(), - groups = {handy=1,axey=1, deco_block = 1, dig_by_piston = 1, destroy_by_lava_flow = 1,}, + groups = {handy=1,axey=1, deco_block = 1, dig_by_piston = 1, destroy_by_lava_flow = 1,chorus_plant = 1}, node_placement_prediction = "", on_place = function(itemstack, placer, pointed_thing) @@ -106,6 +165,7 @@ minetest.register_node("mcl_end:chorus_flower", { return itemstack end end, + after_dig_node = mcl_end.check_detach_chorus_plant, _mcl_blast_resistance = 2, _mcl_hardness = 0.4, }) @@ -128,7 +188,8 @@ minetest.register_node("mcl_end:chorus_flower_dead", { selection_box = { type = "regular" }, sounds = mcl_sounds.node_sound_wood_defaults(), drop = "mcl_end:chorus_flower", - groups = {handy=1,axey=1, deco_block = 1, dig_by_piston = 1, destroy_by_lava_flow = 1,}, + groups = {handy=1,axey=1, deco_block = 1, dig_by_piston = 1, destroy_by_lava_flow = 1,chorus_plant = 1}, + after_dig_node = mcl_end.check_detach_chorus_plant, _mcl_blast_resistance = 2, _mcl_hardness = 0.4, }) @@ -165,7 +226,8 @@ minetest.register_node("mcl_end:chorus_plant", { { items = { "mcl_end:chorus_fruit"}, rarity = 2 }, } }, - groups = {handy=1,axey=1, not_in_creative_inventory = 1, dig_by_piston = 1, destroy_by_lava_flow = 1 }, + groups = {handy=1,axey=1, not_in_creative_inventory = 1, dig_by_piston = 1, destroy_by_lava_flow = 1, chorus_plant = 1 }, + after_dig_node = mcl_end.check_detach_chorus_plant, _mcl_blast_resistance = 2, _mcl_hardness = 0.4, }) diff --git a/mods/ITEMS/mcl_end/init.lua b/mods/ITEMS/mcl_end/init.lua index 6b76dfcd..e3ca8a86 100644 --- a/mods/ITEMS/mcl_end/init.lua +++ b/mods/ITEMS/mcl_end/init.lua @@ -1,4 +1,6 @@ +mcl_end = {} + local basepath = minetest.get_modpath(minetest.get_current_modname()) -dofile(basepath.."/building.lua") dofile(basepath.."/chorus_plant.lua") +dofile(basepath.."/building.lua") dofile(basepath.."/eye_of_ender.lua") From 3cdf570460742bcfd7146b9e678f47a7168fd086 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sun, 10 Mar 2019 03:22:35 +0100 Subject: [PATCH 088/737] The End: Remove 2 helper recipes, update help --- mods/ITEMS/mcl_end/chorus_plant.lua | 2 +- mods/ITEMS/mcl_end/eye_of_ender.lua | 2 +- mods/ITEMS/mcl_portals/portal_end.lua | 2 +- mods/MISC/mcl_temp_helper_recipes/init.lua | 18 ------------------ 4 files changed, 3 insertions(+), 21 deletions(-) diff --git a/mods/ITEMS/mcl_end/chorus_plant.lua b/mods/ITEMS/mcl_end/chorus_plant.lua index 3eb952b1..be20e74a 100644 --- a/mods/ITEMS/mcl_end/chorus_plant.lua +++ b/mods/ITEMS/mcl_end/chorus_plant.lua @@ -88,7 +88,7 @@ end minetest.register_node("mcl_end:chorus_flower", { description = S("Chorus Flower"), _doc_items_longdesc = S("A chorus flower is the living part of a chorus plant. It can grow into a tall chorus plant, step by step. When it grows, it may die on old age eventually. It also dies when it is unable to grow."), - _doc_items_usagehelp = S("Place it and wait for it to grow. It can only be placed on top of end stone, on top of a chorus plant stem, or at the side of exactly a chorus plant stem."), + _doc_items_usagehelp = S("Place it and wait for it to grow. It can only be placed on top of end stone, on top of a chorus plant stem, or at the side of exactly one chorus plant stem."), tiles = { "mcl_end_chorus_flower.png", "mcl_end_chorus_flower.png", diff --git a/mods/ITEMS/mcl_end/eye_of_ender.lua b/mods/ITEMS/mcl_end/eye_of_ender.lua index a76eee0d..3dbebebf 100644 --- a/mods/ITEMS/mcl_end/eye_of_ender.lua +++ b/mods/ITEMS/mcl_end/eye_of_ender.lua @@ -74,7 +74,7 @@ minetest.register_entity("mcl_end:ender_eye", { minetest.register_craftitem("mcl_end:ender_eye", { description = S("Eye of Ender"), - _doc_items_longdesc = S("This item is used to locate End portal shrines in the Overworld and to activate End portals." .. "\n" .. "NOTE: The End dimension is currently incomplete and boring."), + _doc_items_longdesc = S("This item is used to locate End portal shrines in the Overworld and to activate End portals." .. "\n" .. "NOTE: The End dimension is currently incomplete and might change in future versions."), _doc_items_usagehelp = S("Use the attack key to release the eye of ender. It will rise and fly in the horizontal direction of the closest end portal shrine. If you're very close, the eye of ender will take the direct path to the End portal shrine instead. After a few seconds, it stops. It may drop as an item, but there's a 20% chance it shatters.") .. "\n" .. S("To activate an End portal, eyes of ender need to be placed into each block of an intact End portal frame."), wield_image = "mcl_end_ender_eye.png", inventory_image = "mcl_end_ender_eye.png", diff --git a/mods/ITEMS/mcl_portals/portal_end.lua b/mods/ITEMS/mcl_portals/portal_end.lua index 4a1a5fd4..eeb20dfe 100644 --- a/mods/ITEMS/mcl_portals/portal_end.lua +++ b/mods/ITEMS/mcl_portals/portal_end.lua @@ -302,7 +302,7 @@ end minetest.register_node("mcl_portals:end_portal_frame", { description = S("End Portal Frame"), - _doc_items_longdesc = S("End portal frames are used in the construction of End portals. Each block has a socket for an eye of ender." .. "\n" .. "NOTE: The End dimension is currently incomplete and boring."), + _doc_items_longdesc = S("End portal frames are used in the construction of End portals. Each block has a socket for an eye of ender." .. "\n" .. "NOTE: The End dimension is currently incomplete and might change in future versions."), _doc_items_usagehelp = S("To create an End portal, you need 12 end portal frames and 12 eyes of ender. The end portal frames have to be arranged around a horizontal 3×3 area with each block facing inward. Any other arrangement will fail.") .. "\n" .. S("Place an eye of ender into each block. The end portal appears in the middle after placing the final eye." .. "\n" .. "Once placed, an eye of ender can not be taken back."), groups = { creative_breakable = 1, deco_block = 1 }, tiles = { "mcl_portals_endframe_top.png", "mcl_portals_endframe_bottom.png", "mcl_portals_endframe_side.png" }, diff --git a/mods/MISC/mcl_temp_helper_recipes/init.lua b/mods/MISC/mcl_temp_helper_recipes/init.lua index 06206372..139e6d50 100644 --- a/mods/MISC/mcl_temp_helper_recipes/init.lua +++ b/mods/MISC/mcl_temp_helper_recipes/init.lua @@ -17,15 +17,6 @@ minetest.register_craft({ } }) -minetest.register_craft({ - output = "mcl_end:end_stone", - recipe = { - { "mcl_core:sandstone", "mcl_core:stone", "mcl_core:sandstone" }, - { "mcl_core:stone", "mcl_core:sandstone", "mcl_core:stone" }, - { "mcl_core:sandstone", "mcl_core:stone", "mcl_core:sandstone" }, - }, -}) - minetest.register_craft({ output = "mcl_ocean:prismarine_shard", recipe = { @@ -39,15 +30,6 @@ minetest.register_craft({ recipe = { "mcl_ocean:prismarine_shard", "mcl_ocean:prismarine_shard", "mcl_ocean:prismarine_shard", "mcl_core:gold_ingot" }, }) -minetest.register_craft({ - output = "mcl_end:chorus_flower", - recipe = { - { "mcl_flowers:allium", "mcl_end:end_stone", "mcl_flowers:allium" }, - { "mcl_end:end_stone", "mcl_end:end_stone", "mcl_end:end_stone" }, - { "mcl_flowers:allium", "mcl_end:end_stone", "mcl_flowers:allium" }, - }, -}) - minetest.register_craft({ output = "mcl_mobitems:shulker_shell", recipe = { From 2892c45f527b56e4de9709d757c7627e15edc005 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sun, 10 Mar 2019 03:30:18 +0100 Subject: [PATCH 089/737] Fix end portal shrine being in lava in flat mapgen --- mods/MAPGEN/mcl_strongholds/init.lua | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mods/MAPGEN/mcl_strongholds/init.lua b/mods/MAPGEN/mcl_strongholds/init.lua index e82540f2..92313bee 100644 --- a/mods/MAPGEN/mcl_strongholds/init.lua +++ b/mods/MAPGEN/mcl_strongholds/init.lua @@ -19,6 +19,7 @@ local strongholds = {} local strongholds_inited = false local mg_name = minetest.get_mapgen_setting("mg_name") +local superflat = mg_name == "flat" and minetest.get_mapgen_setting("mcl_superflat_classic") == "true" -- Determine the stronghold positions and store them into the strongholds table. -- The stronghold positions are based on the world seed. @@ -45,7 +46,7 @@ local init_strongholds = function() for a=1, ring.amount do local dist = pr:next(ring.min, ring.max) local y - if mg_name == "flat" then + if superflat then y = mcl_vars.mg_bedrock_overworld_max + 3 else y = pr:next(mcl_vars.mg_bedrock_overworld_max+1, mcl_vars.mg_overworld_min+48) From c8f9c3e9235ecc2d9a07dce191a1e238954a60b4 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sun, 10 Mar 2019 04:22:19 +0100 Subject: [PATCH 090/737] Delete drippingwater entities when block unloads --- mods/ENTITIES/drippingwater/init.lua | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mods/ENTITIES/drippingwater/init.lua b/mods/ENTITIES/drippingwater/init.lua index cd8746e4..6e23183f 100644 --- a/mods/ENTITIES/drippingwater/init.lua +++ b/mods/ENTITIES/drippingwater/init.lua @@ -19,6 +19,7 @@ minetest.register_entity("drippingwater:drop_water", { textures = {water_tex, water_tex, water_tex, water_tex, water_tex, water_tex}, spritediv = {x=1, y=1}, initial_sprite_basepos = {x=0, y=0}, + static_save = false, on_activate = function(self, staticdata) self.object:set_sprite({x=0,y=0}, 1, 1, true) @@ -59,6 +60,7 @@ minetest.register_entity("drippingwater:drop_lava", { textures = {lava_tex, lava_tex, lava_tex, lava_tex, lava_tex, lava_tex}, spritediv = {x=1, y=1}, initial_sprite_basepos = {x=0, y=0}, + static_save = false, on_activate = function(self, staticdata) self.object:set_sprite({x=0,y=0}, 1, 0, true) From aee7c4b4a2d1d3a896bfa5dd348203c4b1157a36 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sun, 10 Mar 2019 06:06:06 +0100 Subject: [PATCH 091/737] Simplify top snow generation in v6 --- mods/MAPGEN/mcl_mapgen_core/init.lua | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/mods/MAPGEN/mcl_mapgen_core/init.lua b/mods/MAPGEN/mcl_mapgen_core/init.lua index c245fdb8..fbdf0040 100644 --- a/mods/MAPGEN/mcl_mapgen_core/init.lua +++ b/mods/MAPGEN/mcl_mapgen_core/init.lua @@ -934,6 +934,17 @@ local function register_mgv6_decorations() register_mgv6_flower("oxeye_daisy", 3490) register_mgv6_flower("poppy", 9439) + -- Put top snow on snowy grass blocks. The v6 mapgen does not generate the top snow on its own. + minetest.register_decoration({ + deco_type = "simple", + place_on = {"mcl_core:dirt_with_grass_snow"}, + sidelen = 16, + fill_ratio = 11.0, -- complete coverage + y_min = 1, + y_max = mcl_vars.mg_overworld_max, + decoration = "mcl_core:snow", + }) + end -- Apply mapgen-specific mapgen code @@ -1733,20 +1744,7 @@ minetest.register_on_generated(function(minp, maxp, seed) -- A snowy grass block must be below a top snow or snow block at all times. if emin.y <= mcl_vars.mg_overworld_max and emax.y >= mcl_vars.mg_overworld_min then -- v6 mapgen: - -- Put top snow on snowy grass blocks. The mapgen does not generate the top snow on its own. if mg_name == "v6" then - -- FIXME: Cavegen and mudflow might screw this up and cause floating top snow to appear - local snowdirt = minetest.find_nodes_in_area_under_air(minp, maxp, "mcl_core:dirt_with_grass_snow") - for n = 1, #snowdirt do - -- CHECKME: What happens at chunk borders? - local p_pos = area:index(snowdirt[n].x, snowdirt[n].y + 1, snowdirt[n].z) - if p_pos then - data[p_pos] = c_top_snow - end - end - if #snowdirt > 0 then - lvm_used = true - end --[[ Remove broken double plants caused by v6 weirdness. v6 might break the bottom part of double plants because of how it works. From a943428b11df89686e243ca3a0ccf0d46aea3f5f Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sun, 10 Mar 2019 06:37:36 +0100 Subject: [PATCH 092/737] Simplify pumpkin map generation --- mods/MAPGEN/mcl_biomes/init.lua | 13 ++++--------- mods/MAPGEN/mcl_mapgen_core/init.lua | 13 ++++--------- 2 files changed, 8 insertions(+), 18 deletions(-) diff --git a/mods/MAPGEN/mcl_biomes/init.lua b/mods/MAPGEN/mcl_biomes/init.lua index 89746e03..b3528570 100644 --- a/mods/MAPGEN/mcl_biomes/init.lua +++ b/mods/MAPGEN/mcl_biomes/init.lua @@ -2953,14 +2953,10 @@ local function register_decorations() -- Pumpkin minetest.register_decoration({ - deco_type = "schematic", - schematic = { - size = { x=1, y=2, z=1 }, - data = { - { name = "air", prob = 0 }, - { name = "mcl_farming:pumpkin_face", param1=255, }, - }, - }, + deco_type = "simple", + decoration = "mcl_farming:pumpkin_face", + param2 = 0, + param2_max = 3, place_on = {"group:grass_block_no_snow"}, sidelen = 16, noise_params = { @@ -2973,7 +2969,6 @@ local function register_decorations() }, y_min = 1, y_max = mcl_vars.mg_overworld_max, - rotation = "random", }) -- Grasses and ferns diff --git a/mods/MAPGEN/mcl_mapgen_core/init.lua b/mods/MAPGEN/mcl_mapgen_core/init.lua index fbdf0040..99acfaa3 100644 --- a/mods/MAPGEN/mcl_mapgen_core/init.lua +++ b/mods/MAPGEN/mcl_mapgen_core/init.lua @@ -784,14 +784,10 @@ local function register_mgv6_decorations() -- Pumpkin minetest.register_decoration({ - deco_type = "schematic", - schematic = { - size = { x=1, y=2, z=1 }, - data = { - { name = "air", prob = 0 }, - { name = "mcl_farming:pumpkin_face" }, - }, - }, + deco_type = "simple", + decoration = "mcl_farming:pumpkin_face", + param2 = 0, + param2_max = 3, place_on = {"group:grass_block_no_snow"}, sidelen = 16, noise_params = { @@ -804,7 +800,6 @@ local function register_mgv6_decorations() }, y_min = 1, y_max = mcl_vars.overworld_max, - rotation = "random", }) -- Tall grass From f55dac38e2efb1fa0894aac2fd2fd14c860edcca Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sun, 10 Mar 2019 06:50:15 +0100 Subject: [PATCH 093/737] Re-introduce melons in v6 mapgen --- mods/MAPGEN/mcl_mapgen_core/init.lua | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/mods/MAPGEN/mcl_mapgen_core/init.lua b/mods/MAPGEN/mcl_mapgen_core/init.lua index 99acfaa3..28cd8475 100644 --- a/mods/MAPGEN/mcl_mapgen_core/init.lua +++ b/mods/MAPGEN/mcl_mapgen_core/init.lua @@ -802,6 +802,27 @@ local function register_mgv6_decorations() y_max = mcl_vars.overworld_max, }) + -- Melon + minetest.register_decoration({ + deco_type = "simple", + place_on = {"group:grass_block_no_snow"}, + sidelen = 16, + noise_params = { + offset = 0.002, + scale = 0.006, + spread = {x = 250, y = 250, z = 250}, + seed = 333, + octaves = 3, + persist = 0.6 + }, + -- Small trick to make sure melon spawn in jungles + spawn_by = { "mcl_core:jungletree", "mcl_flowers:fern" }, + num_spawn_by = 1, + y_min = 1, + y_max = 40, + decoration = "mcl_farming:melon", + }) + -- Tall grass minetest.register_decoration({ deco_type = "simple", @@ -932,7 +953,7 @@ local function register_mgv6_decorations() -- Put top snow on snowy grass blocks. The v6 mapgen does not generate the top snow on its own. minetest.register_decoration({ deco_type = "simple", - place_on = {"mcl_core:dirt_with_grass_snow"}, + place_on = {"group:grass_block_snow"}, sidelen = 16, fill_ratio = 11.0, -- complete coverage y_min = 1, From 2a9e30b900f95f1bec155ff4089264caff4edc34 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sun, 10 Mar 2019 08:41:09 +0100 Subject: [PATCH 094/737] Also generate more gold in MesaPlateauF --- mods/MAPGEN/mcl_biomes/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/MAPGEN/mcl_biomes/init.lua b/mods/MAPGEN/mcl_biomes/init.lua index b3528570..57807ebd 100644 --- a/mods/MAPGEN/mcl_biomes/init.lua +++ b/mods/MAPGEN/mcl_biomes/init.lua @@ -1270,7 +1270,7 @@ local function register_biome_ores() clust_size = 3, y_min = mcl_worlds.layer_to_y(32), y_max = mcl_worlds.layer_to_y(79), - biomes = { "Mesa", "Mesa_sandlevel", "Mesa_ocean" }, + biomes = { "Mesa", "Mesa_sandlevel", "Mesa_ocean", "MesaPlateauF", "MesaPlateauF_sandlevel", "MesaPlatauF_ocean" }, }) end end From b4b5cb2879725b0600de1d1827643c97b1189f8f Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sun, 10 Mar 2019 18:42:53 +0100 Subject: [PATCH 095/737] Tweak mesa-underground transition --- mods/MAPGEN/mcl_biomes/init.lua | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/mods/MAPGEN/mcl_biomes/init.lua b/mods/MAPGEN/mcl_biomes/init.lua index 57807ebd..35669e87 100644 --- a/mods/MAPGEN/mcl_biomes/init.lua +++ b/mods/MAPGEN/mcl_biomes/init.lua @@ -1270,7 +1270,7 @@ local function register_biome_ores() clust_size = 3, y_min = mcl_worlds.layer_to_y(32), y_max = mcl_worlds.layer_to_y(79), - biomes = { "Mesa", "Mesa_sandlevel", "Mesa_ocean", "MesaPlateauF", "MesaPlateauF_sandlevel", "MesaPlatauF_ocean" }, + biomes = { "Mesa", "Mesa_sandlevel", "Mesa_ocean", "MesaPlateauF", "MesaPlateauF_sandlevel", "MesaPlateauF_ocean" }, }) end end @@ -1334,23 +1334,21 @@ local function register_biomelike_ores() }) - -- Small hack to make sure stone appears at ca. sea level in Mesa biomes + -- For a transition from stone to hardened clay in mesa biomes that is not perfectly flat minetest.register_ore({ - ore_type = "sheet", + ore_type = "stratum", ore = "mcl_core:stone", - noise_threshold = -100, - noise_params = {offset=0, scale=1, spread={x=3100, y=3100, z=3100}, octaves=1, persist=1.00}, + wherein = {"group:hardened_clay"}, + noise_params = {offset=-6, scale=2, spread={x=25, y=25, z=25}, octaves=1, persist=0.60}, + stratum_thickness = 8, biomes = { - "Mesa", "Mesa_sandlevel", "Mesa_ocean", "Mesa_deep_ocean", "Mesa_underground", - "MesaPlateauF", "MesaPlateauF_sandlevel", "MesaPlateauF_ocean", "MesaPlateauF_deep_ocean", "MesaPlateauF_underground", + "Mesa_sandlevel", "Mesa_ocean", + "MesaPlateauF_sandlevel", "MesaPlateauF_ocean", }, - wherein = {"mcl_colorblocks:hardened_clay"}, - column_height_min = 32, - column_height_max = 32, - y_min = -32, + y_min = -4, y_max = 0, - }) + }) -- Mesa strata (registered as sheet ores) From f48019a87733ecd5a592eeac386a2da1a983601b Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sun, 10 Mar 2019 18:47:27 +0100 Subject: [PATCH 096/737] Use built stratum ore type for mesa strata --- mods/MAPGEN/mcl_biomes/init.lua | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/mods/MAPGEN/mcl_biomes/init.lua b/mods/MAPGEN/mcl_biomes/init.lua index 35669e87..75038ae7 100644 --- a/mods/MAPGEN/mcl_biomes/init.lua +++ b/mods/MAPGEN/mcl_biomes/init.lua @@ -1363,15 +1363,11 @@ local function register_biomelike_ores() end local y_max = y_min + height-1 minetest.register_ore({ - ore_type = "sheet", + ore_type = "stratum", ore = "mcl_colorblocks:hardened_clay_"..color, wherein = {"mcl_colorblocks:hardened_clay"}, - column_height_min = height, - column_height_max = height, y_min = y_min, y_max = y_max, - noise_threshold = -1.0, - noise_params = {offset=0, scale=1, spread={x=3100, y=3100, z=3100}, seed=seed, octaves=3, persist=0.70}, biomes = { "Mesa", "MesaPlateauF", }, }) end From c868b7a767863182b88544c9ade3020ddb0d7f76 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 11 Mar 2019 00:04:03 +0100 Subject: [PATCH 097/737] Add MesaPlateauFM biome Variant of MesaPlateauF, more erratic terrain, smooth transitions, has red sandstone, more red sand, fewer trees, much more dry shrubs and coarse dirt --- mods/MAPGEN/mcl_biomes/init.lua | 225 +++++++++++++++++++++++++++++++- 1 file changed, 219 insertions(+), 6 deletions(-) diff --git a/mods/MAPGEN/mcl_biomes/init.lua b/mods/MAPGEN/mcl_biomes/init.lua index 75038ae7..8cad4a59 100644 --- a/mods/MAPGEN/mcl_biomes/init.lua +++ b/mods/MAPGEN/mcl_biomes/init.lua @@ -116,6 +116,7 @@ local function register_biomes() "SavannaM", "Mesa", "MesaPlateauF", + "MesaPlateauFM", } local OCEAN_MIN = -15 @@ -855,6 +856,71 @@ local function register_biomes() heat_point = 60, }) + -- Mesa Plateau FM + -- Variant of MesaPlateauF: fewer trees, more coarse dirt, more erratic terrain, more sand, red sandstone at sandlevel + minetest.register_biome({ + name = "MesaPlateauFM", + node_top = "mcl_colorblocks:hardened_clay", + depth_top = 1, + node_filler = "mcl_colorblocks:hardened_clay", + node_riverbed = "mcl_core:redsand", + depth_riverbed = 1, + node_stone = "mcl_colorblocks:hardened_clay", + y_min = 12, + y_max = 29, + humidity_point = -4, + heat_point = 80, + vertical_blend = 5, + }) + + -- Grass plateau + minetest.register_biome({ + name = "MesaPlateauFM_grasstop", + node_top = "mcl_core:dirt_with_dry_grass", + depth_top = 1, + node_filler = "mcl_core:coarse_dirt", + depth_filler = 2, + node_riverbed = "mcl_core:dirt", + depth_riverbed = 1, + node_stone = "mcl_colorblocks:hardened_clay", + y_min = 30, + y_max = mcl_vars.mg_overworld_max, + humidity_point = -4, + heat_point = 80, + }) + + -- Helper biome for the red sand at the bottom. + minetest.register_biome({ + name = "MesaPlateauFM_sandlevel", + node_top = "mcl_core:redsand", + depth_top = 2, + node_filler = "mcl_colorblocks:hardened_clay_orange", + depth_filler = 3, + node_riverbed = "mcl_core:redsand", + depth_riverbed = 2, + node_stone = "mcl_colorblocks:hardened_clay_orange", + -- sand has wider reach than in other mesa biomes + y_min = -4, + y_max = 11, + humidity_point = -4, + heat_point = 80, + vertical_blend = 4, + }) + minetest.register_biome({ + name = "MesaPlateauFM_ocean", + node_top = "mcl_core:sand", + depth_top = 3, + node_filler = "mcl_colorblocks:sand", + depth_filler = 2, + node_riverbed = "mcl_core:sand", + depth_riverbed = 2, + y_min = OCEAN_MIN, + y_max = -3, + humidity_point = -4, + heat_point = 80, + }) + + -- Savanna minetest.register_biome({ name = "Savanna", @@ -1270,7 +1336,9 @@ local function register_biome_ores() clust_size = 3, y_min = mcl_worlds.layer_to_y(32), y_max = mcl_worlds.layer_to_y(79), - biomes = { "Mesa", "Mesa_sandlevel", "Mesa_ocean", "MesaPlateauF", "MesaPlateauF_sandlevel", "MesaPlateauF_ocean" }, + biomes = { "Mesa", "Mesa_sandlevel", "Mesa_ocean", + "MesaPlateauF", "MesaPlateauF_sandlevel", "MesaPlateauF_ocean", + "MesaPlateauFM", "MesaPlateauFM_sandlevel", "MesaPlateauFM_ocean", }, }) end end @@ -1316,6 +1384,74 @@ local function register_biomelike_ores() y_max = mcl_vars.mg_overworld_max, biomes = { "MesaPlateauF_grasstop" }, }) + minetest.register_ore({ + ore_type = "sheet", + ore = "mcl_core:coarse_dirt", + wherein = {"mcl_core:dirt_with_dry_grass", "mcl_core:dirt"}, + column_height_max = 1, + column_midpoint_factor = 0.0, + y_min = mcl_vars.mg_overworld_min, + y_max = mcl_vars.mg_overworld_max, + noise_threshold = -2.5, + noise_params = {offset=1, scale=15, spread={x=250, y=250, z=250}, seed=24, octaves=3, persist=0.80}, + biomes = { "MesaPlateauFM_grasstop" }, + }) + minetest.register_ore({ + ore_type = "blob", + ore = "mcl_core:coarse_dirt", + wherein = {"mcl_core:dirt_with_dry_grass", "mcl_core:dirt"}, + clust_scarcity = 1800, + clust_num_ores = 65, + clust_size = 15, + y_min = mcl_vars.mg_overworld_min, + y_max = mcl_vars.mg_overworld_max, + biomes = { "MesaPlateauFM_grasstop" }, + }) + -- Occasionally dig out portions of MesaPlateauFM + minetest.register_ore({ + ore_type = "blob", + ore = "air", + wherein = {"group:hardened_clay", "group:sand","mcl_core:coarse_dirt"}, + clust_scarcity = 4000, + clust_size = 5, + y_min = mcl_vars.mg_overworld_min, + y_max = mcl_vars.mg_overworld_max, + biomes = { "MesaPlateauFM", "MesaPlateauFM_grasstop" }, + }) + minetest.register_ore({ + ore_type = "blob", + ore = "mcl_core:redsandstone", + wherein = {"mcl_colorblocks:hardened_clay_orange"}, + clust_scarcity = 300, + clust_size = 8, + y_min = mcl_vars.mg_overworld_min, + y_max = mcl_vars.mg_overworld_max, + biomes = { "MesaPlateauFM_sandlevel" }, + }) + -- More red sand in MesaPlateauFM + minetest.register_ore({ + ore_type = "sheet", + ore = "mcl_core:redsand", + wherein = {"group:hardened_clay"}, + clust_scarcity = 1, + clust_num_ores = 12, + clust_size = 10, + y_min = mcl_vars.mg_overworld_min, + y_max = mcl_vars.mg_overworld_max, + noise_threshold = 0.1, + noise_params = {offset=0, scale=15, spread={x=130, y=130, z=130}, seed=95, octaves=3, persist=0.70}, + biomes = { "MesaPlateauFM" }, + }) + minetest.register_ore({ + ore_type = "blob", + ore = "mcl_core:redsand", + wherein = {"group:hardened_clay"}, + clust_scarcity = 1500, + clust_size = 4, + y_min = mcl_vars.mg_overworld_min, + y_max = mcl_vars.mg_overworld_max, + biomes = { "MesaPlateauFM", "MesaPlateauFM_grasstop", "MesaPlateauFM_sandlevel" }, + }) -- Small dirt patches in Extreme Hills M minetest.register_ore({ @@ -1332,8 +1468,6 @@ local function register_biomelike_ores() noise_params = {offset=0, scale=5, spread={x=250, y=250, z=250}, seed=64, octaves=3, persist=0.60}, biomes = { "ExtremeHillsM" }, }) - - -- For a transition from stone to hardened clay in mesa biomes that is not perfectly flat minetest.register_ore({ ore_type = "stratum", @@ -1344,6 +1478,7 @@ local function register_biomelike_ores() biomes = { "Mesa_sandlevel", "Mesa_ocean", "MesaPlateauF_sandlevel", "MesaPlateauF_ocean", + "MesaPlateauFM_sandlevel", "MesaPlateauFM_ocean", }, y_min = -4, y_max = 0, @@ -1914,6 +2049,25 @@ local function register_decorations() flags = "place_center_x, place_center_z", rotation = "random", }) + minetest.register_decoration({ + deco_type = "schematic", + place_on = {"mcl_core:dirt_with_dry_grass", "mcl_core:dirt"}, + sidelen = 16, + noise_params = { + offset = 0.008, + scale = 0.002, + spread = {x = 250, y = 250, z = 250}, + seed = 2, + octaves = 3, + persist = 0.7 + }, + biomes = {"MesaPlateauFM_grasstop"}, + y_min = 30, + y_max = mcl_vars.mg_overworld_max, + schematic = minetest.get_modpath("mcl_core").."/schematics/mcl_core_oak_classic.mts", + flags = "place_center_x, place_center_z", + rotation = "random", + }) minetest.register_decoration({ deco_type = "schematic", @@ -2448,7 +2602,10 @@ local function register_decorations() y_min = 4, y_max = mcl_vars.mg_overworld_max, decoration = "mcl_core:cactus", - biomes = {"Desert","Mesa","Mesa_sandlevel","MesaPlateauF","MesaPlateauF_sandlevel"}, + biomes = {"Desert", + "Mesa","Mesa_sandlevel", + "MesaPlateauF","MesaPlateauF_sandlevel", + "MesaPlateauFM","MesaPlateauFM_sandlevel"}, height = 1, height_max = 3, }) @@ -2970,7 +3127,8 @@ local function register_decorations() local grass_mpf = {"MesaPlateauF_grasstop"} local grass_plains = {"Plains", "SunflowerPlains", "JungleEdge", "JungleEdgeM" } local grass_savanna = {"Savanna", "SavannaM"} - local grass_sparse = {"ExtremeHills", "ExtremeHills+", "ExtremeHills+_snowtop", "ExtremeHillsM", "Jungle", } + local grass_sparse = {"ExtremeHills", "ExtremeHills+", "ExtremeHills+_snowtop", "ExtremeHillsM", "Jungle" } + local grass_mpfm = {"MesaPlateauFM_grasstop" } register_grass_decoration("tallgrass", -0.03, 0.09, grass_forest) register_grass_decoration("tallgrass", -0.015, 0.075, grass_forest) @@ -2988,6 +3146,7 @@ local function register_decorations() register_grass_decoration("tallgrass", 0.09, -0.03, grass_plains) register_grass_decoration("tallgrass", 0.18, -0.03, grass_savanna, dry_index) register_grass_decoration("tallgrass", 0.05, -0.03, grass_sparse) + register_grass_decoration("tallgrass", 0.05, 0.05, grass_mpfm, dry_index) local fern_minimal = { "Jungle", "JungleM", "JungleEdge", "JungleEdgeM", "Taiga", "MegaTaiga", "MegaSpruceTaiga", "ColdTaiga" } local fern_low = { "Jungle", "JungleM", "JungleEdge", "JungleEdgeM", "Taiga", "MegaTaiga", "MegaSpruceTaiga" } @@ -3060,7 +3219,7 @@ local function register_decorations() place_on = {"group:sand", "mcl_core:podzol", "mcl_core:dirt", "mcl_core:dirt_with_dry_grass", "mcl_core:coarse_dirt", "group:hardened_clay"}, sidelen = 16, noise_params = { - offset = 0, + offset = 0.0, scale = 0.035, spread = {x = 100, y = 100, z = 100}, seed = 1972, @@ -3073,6 +3232,60 @@ local function register_decorations() decoration = "mcl_core:deadbush", height = 1, }) + minetest.register_decoration({ + deco_type = "simple", + place_on = {"group:sand", "mcl_core:dirt", "mcl_core:dirt_with_dry_grass", "mcl_core:coarse_dirt"}, + sidelen = 16, + noise_params = { + offset = 0.1, + scale = 0.035, + spread = {x = 100, y = 100, z = 100}, + seed = 1972, + octaves = 3, + persist = 0.6 + }, + y_min = 4, + y_max = mcl_vars.mg_overworld_max, + biomes = {"MesaPlateauFM_grasstop"}, + decoration = "mcl_core:deadbush", + height = 1, + }) + minetest.register_decoration({ + deco_type = "simple", + place_on = {"group:sand"}, + sidelen = 16, + noise_params = { + offset = 0.045, + scale = 0.055, + spread = {x = 100, y = 100, z = 100}, + seed = 1972, + octaves = 3, + persist = 0.6 + }, + y_min = 4, + y_max = mcl_vars.mg_overworld_max, + biomes = {"MesaPlateauFM","MesaPlateauFM_sandlevel"}, + decoration = "mcl_core:deadbush", + height = 1, + }) + minetest.register_decoration({ + deco_type = "simple", + place_on = {"group:hardened_clay"}, + sidelen = 16, + noise_params = { + offset = 0.010, + scale = 0.035, + spread = {x = 100, y = 100, z = 100}, + seed = 1972, + octaves = 3, + persist = 0.6 + }, + y_min = 4, + y_max = mcl_vars.mg_overworld_max, + biomes = {"MesaPlateauFM", "MesaPlateauFM_sandlevel", "MesaPlateauFM_grasstop"}, + decoration = "mcl_core:deadbush", + height = 1, + }) -- Mushrooms in mushroom biome minetest.register_decoration({ From f59f4d4f7c66727ae7927c37edf60c39e0abe5b8 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 11 Mar 2019 00:08:36 +0100 Subject: [PATCH 098/737] Tweak MesaPlateauFM riverbed --- mods/MAPGEN/mcl_biomes/init.lua | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/mods/MAPGEN/mcl_biomes/init.lua b/mods/MAPGEN/mcl_biomes/init.lua index 8cad4a59..69738a81 100644 --- a/mods/MAPGEN/mcl_biomes/init.lua +++ b/mods/MAPGEN/mcl_biomes/init.lua @@ -70,7 +70,6 @@ local function register_biomes() * Taiga M * Roofed Forest M * Swampland M - * Mesa Plateau F M * Extreme Hills Edge TODO: @@ -864,7 +863,7 @@ local function register_biomes() depth_top = 1, node_filler = "mcl_colorblocks:hardened_clay", node_riverbed = "mcl_core:redsand", - depth_riverbed = 1, + depth_riverbed = 2, node_stone = "mcl_colorblocks:hardened_clay", y_min = 12, y_max = 29, @@ -880,7 +879,7 @@ local function register_biomes() depth_top = 1, node_filler = "mcl_core:coarse_dirt", depth_filler = 2, - node_riverbed = "mcl_core:dirt", + node_riverbed = "mcl_core:redsand", depth_riverbed = 1, node_stone = "mcl_colorblocks:hardened_clay", y_min = 30, @@ -911,9 +910,9 @@ local function register_biomes() node_top = "mcl_core:sand", depth_top = 3, node_filler = "mcl_colorblocks:sand", - depth_filler = 2, + depth_filler = 3, node_riverbed = "mcl_core:sand", - depth_riverbed = 2, + depth_riverbed = 3, y_min = OCEAN_MIN, y_max = -3, humidity_point = -4, From 18adaef361085a18b82a8a399283ed8ae8b7adec Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 11 Mar 2019 01:57:00 +0100 Subject: [PATCH 099/737] Eroded strata for MesaPlateauFM --- mods/MAPGEN/mcl_biomes/init.lua | 31 +++++++++++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) diff --git a/mods/MAPGEN/mcl_biomes/init.lua b/mods/MAPGEN/mcl_biomes/init.lua index 69738a81..d9f62654 100644 --- a/mods/MAPGEN/mcl_biomes/init.lua +++ b/mods/MAPGEN/mcl_biomes/init.lua @@ -1484,7 +1484,6 @@ local function register_biomelike_ores() }) - -- Mesa strata (registered as sheet ores) -- Helper function to create strata. @@ -1496,14 +1495,42 @@ local function register_biomelike_ores() seed = 39 end local y_max = y_min + height-1 + -- Full stratum minetest.register_ore({ ore_type = "stratum", ore = "mcl_colorblocks:hardened_clay_"..color, wherein = {"mcl_colorblocks:hardened_clay"}, y_min = y_min, y_max = y_max, - biomes = { "Mesa", "MesaPlateauF", }, + biomes = { "Mesa", "MesaPlateauF" }, }) + -- Eroded stratum + minetest.register_ore({ + ore_type = "stratum", + ore = "mcl_colorblocks:hardened_clay_"..color, + wherein = {"mcl_colorblocks:hardened_clay"}, + y_min = y_min, + y_max = y_max, + biomes = { "MesaPlateauFM" }, + noise_params = { + offset = y_min+(y_max-y_min)/2, + scale = 0, + spread = {x = 50, y = 50, z = 50}, + seed = seed+4, + octaves = 1, + persist = 1.0 + }, + np_stratum_thickness = { + offset = 0.1, + scale = 1, + spread = {x = 28, y = 28, z = 28}, + seed = seed+4, + octaves = 2, + persist = 0.6, + }, + }) + + end -- First stratum near the sand level. Always orange. From f713394f6da427e1c7403566fced45d5b6b89db6 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 11 Mar 2019 02:51:59 +0100 Subject: [PATCH 100/737] Add vertical blend to ExtremeHills+ --- mods/MAPGEN/mcl_biomes/init.lua | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/mods/MAPGEN/mcl_biomes/init.lua b/mods/MAPGEN/mcl_biomes/init.lua index d9f62654..3ee1bad3 100644 --- a/mods/MAPGEN/mcl_biomes/init.lua +++ b/mods/MAPGEN/mcl_biomes/init.lua @@ -355,9 +355,10 @@ local function register_biomes() node_riverbed = "mcl_core:sand", depth_riverbed = 4, y_min = 1, - y_max = 44, + y_max = 41, humidity_point = 24, heat_point = 25, + vertical_blend = 6, }) ---- Sub-biome for Extreme Hills+ for those snow Forests minetest.register_biome({ @@ -370,7 +371,7 @@ local function register_biomes() node_river_water = "mcl_core:ice", node_riverbed = "mcl_core:sand", depth_riverbed = 4, - y_min = 45, + y_min = 42, y_max = mcl_vars.mg_overworld_max, humidity_point = 24, heat_point = 25, @@ -807,6 +808,7 @@ local function register_biomes() y_max = 29, humidity_point = 0, heat_point = 60, + vertical_blend = 0, -- we want a sharp transition }) -- The actual plateau of this biome @@ -830,7 +832,7 @@ local function register_biomes() minetest.register_biome({ name = "MesaPlateauF_sandlevel", node_top = "mcl_core:redsand", - depth_top = 1, + depth_top = 2, node_filler = "mcl_colorblocks:hardened_clay_orange", depth_filler = 3, node_riverbed = "mcl_core:redsand", @@ -892,7 +894,7 @@ local function register_biomes() minetest.register_biome({ name = "MesaPlateauFM_sandlevel", node_top = "mcl_core:redsand", - depth_top = 2, + depth_top = 3, node_filler = "mcl_colorblocks:hardened_clay_orange", depth_filler = 3, node_riverbed = "mcl_core:redsand", @@ -1236,6 +1238,7 @@ local function register_biomes() depth_filler = 2, node_riverbed = "mcl_core:gravel", depth_riverbed = 2, + vertical_blend = 5, }) -- Underground biomes are used to identify the underground and to prevent nodes from the surface From cc9b78215a5ee9737caad170df1f38b0e2d80ca4 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 11 Mar 2019 13:23:55 +0100 Subject: [PATCH 101/737] Fix crash with wither projectile --- mods/ENTITIES/mobs_mc/wither.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ENTITIES/mobs_mc/wither.lua b/mods/ENTITIES/mobs_mc/wither.lua index a06510a9..05431ce9 100644 --- a/mods/ENTITIES/mobs_mc/wither.lua +++ b/mods/ENTITIES/mobs_mc/wither.lua @@ -136,7 +136,7 @@ mobs:register_arrow(":mobs_mc:fireball", { hit_mob = function(self, mob) minetest.sound_play("tnt_explode", {pos = mob:get_pos(), gain = 1.5,max_hear_distance = 16}) - player:punch(self.object, 1.0, { + mob:punch(self.object, 1.0, { full_punch_interval = 0.5, damage_groups = {fleshy = 8}, }, nil) From 2c599c4a0e965d60835f73bc4c13991f031f740c Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 11 Mar 2019 13:25:06 +0100 Subject: [PATCH 102/737] Refactor mobs_mc a bit --- mods/ENTITIES/mobs_mc/2_throwing.lua | 4 ++-- mods/ENTITIES/mobs_mc/blaze.lua | 4 ++-- mods/ENTITIES/mobs_mc/ender_dragon.lua | 29 -------------------------- mods/ENTITIES/mobs_mc/ghast.lua | 4 ++-- mods/ENTITIES/mobs_mc/shulker.lua | 4 ++-- mods/ENTITIES/mobs_mc/witch.lua | 4 ++-- 6 files changed, 10 insertions(+), 39 deletions(-) diff --git a/mods/ENTITIES/mobs_mc/2_throwing.lua b/mods/ENTITIES/mobs_mc/2_throwing.lua index 1e4c0a55..5173b5a9 100644 --- a/mods/ENTITIES/mobs_mc/2_throwing.lua +++ b/mods/ENTITIES/mobs_mc/2_throwing.lua @@ -195,8 +195,8 @@ if c("egg") then }, nil) end, - hit_mob = function(self, player) - player:punch(minetest.get_player_by_name(self.playername) or self.object, 1.0, { + hit_mob = function(self, mob) + mob:punch(minetest.get_player_by_name(self.playername) or self.object, 1.0, { full_punch_interval = 1.0, damage_groups = {}, }, nil) diff --git a/mods/ENTITIES/mobs_mc/blaze.lua b/mods/ENTITIES/mobs_mc/blaze.lua index c832fb70..421a90d4 100644 --- a/mods/ENTITIES/mobs_mc/blaze.lua +++ b/mods/ENTITIES/mobs_mc/blaze.lua @@ -87,8 +87,8 @@ mobs:register_arrow("mobs_mc:blaze_fireball", { }, nil) end, - hit_mob = function(self, player) - player:punch(self.object, 1.0, { + hit_mob = function(self, mob) + mob:punch(self.object, 1.0, { full_punch_interval = 1.0, damage_groups = {fleshy = 5}, }, nil) diff --git a/mods/ENTITIES/mobs_mc/ender_dragon.lua b/mods/ENTITIES/mobs_mc/ender_dragon.lua index 06fb82bb..a06f1c46 100644 --- a/mods/ENTITIES/mobs_mc/ender_dragon.lua +++ b/mods/ENTITIES/mobs_mc/ender_dragon.lua @@ -4,35 +4,6 @@ local S = minetest.get_translator("mobs_mc") ---[[ -mobs:register_mob("mobs_mc:12enderdragon", { - type = "animal", - passive = true, - runaway = true, - stepheight = 1.2, - hp_min = 30, - hp_max = 60, - armor = 150, - collisionbox = {-0.35, -0.01, -0.35, 0.35, 2, 0.35}, - visual = "mesh", - mesh = "enderdragon.b3d", - textures = { - {"enderdragon.png"}, - }, - visual_size = {x=1, y=1}, - walk_velocity = 0.6, - run_velocity = 2, - jump = true, - animation = { - speed_normal = 25, speed_run = 50, - stand_start = 0, stand_end = 20, - walk_start = 0, walk_end = 20, - run_start = 0, run_end = 20, - }, -}) - -mobs:register_egg("mobs_mc:12enderdragon", "Enderdragon", "enderdragon_inv.png", 0) -]] mobs:register_mob("mobs_mc:enderdragon", { type = "monster", pathfinding = 1, diff --git a/mods/ENTITIES/mobs_mc/ghast.lua b/mods/ENTITIES/mobs_mc/ghast.lua index 44cf3496..029d517a 100644 --- a/mods/ENTITIES/mobs_mc/ghast.lua +++ b/mods/ENTITIES/mobs_mc/ghast.lua @@ -94,8 +94,8 @@ mobs:register_arrow(":mobs_monster:fireball", { }, nil) end, - hit_mob = function(self, player) - player:punch(self.object, 1.0, { + hit_mob = function(self, mob) + mob:punch(self.object, 1.0, { full_punch_interval = 1.0, damage_groups = {fleshy = 8}, }, nil) diff --git a/mods/ENTITIES/mobs_mc/shulker.lua b/mods/ENTITIES/mobs_mc/shulker.lua index 0d23a14f..9eff2132 100644 --- a/mods/ENTITIES/mobs_mc/shulker.lua +++ b/mods/ENTITIES/mobs_mc/shulker.lua @@ -66,8 +66,8 @@ mobs:register_arrow("mobs_mc:shulkerbullet", { }, nil) end, - hit_mob = function(self, player) - player:punch(self.object, 1.0, { + hit_mob = function(self, mob) + mob:punch(self.object, 1.0, { full_punch_interval = 1.0, damage_groups = {fleshy = 4}, }, nil) diff --git a/mods/ENTITIES/mobs_mc/witch.lua b/mods/ENTITIES/mobs_mc/witch.lua index 83e7b7b3..8e8d8025 100644 --- a/mods/ENTITIES/mobs_mc/witch.lua +++ b/mods/ENTITIES/mobs_mc/witch.lua @@ -87,8 +87,8 @@ mobs:register_arrow(":mobs:potion_arrow", { }, nil) end, - hit_mob = function(self, player) - player:punch(self.object, 1.0, { + hit_mob = function(self, mob) + mob:punch(self.object, 1.0, { full_punch_interval = 1.0, damage_groups = {fleshy = 2}, }, nil) From 053e10f223de7650cbceeef5665c2a1033cc8757 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 11 Mar 2019 13:41:19 +0100 Subject: [PATCH 103/737] Update mcl_biome comments --- mods/MAPGEN/mcl_biomes/init.lua | 29 ++++++++++++----------------- 1 file changed, 12 insertions(+), 17 deletions(-) diff --git a/mods/MAPGEN/mcl_biomes/init.lua b/mods/MAPGEN/mcl_biomes/init.lua index 3ee1bad3..b5487bfd 100644 --- a/mods/MAPGEN/mcl_biomes/init.lua +++ b/mods/MAPGEN/mcl_biomes/init.lua @@ -54,7 +54,7 @@ local function register_biomes() * Other modifiers: Some complex biomes require more layers to improve the landscape. The following naming conventions apply: - * The land biome name is equal to the MC biome name (in camel case) + * The land biome name is equal to the MC biome name, as of Minecraft 1.11 (in camel case) * Height modifiers and sub-biomes are appended with underscores and in lowercase. Example: “_ocean” * Non-MC biomes are written in lowercase * MC dimension biomes are named after their MC dimension @@ -62,26 +62,21 @@ local function register_biomes() Intentionally missing biomes: * River (generated by valleys and v7) * Frozen River (generated by valleys and v7) - * Mesa (Bryce) - * Hills biomes - * Plateau - * Plateau M - * Cold Taiga M - * Taiga M - * Roofed Forest M - * Swampland M - * Extreme Hills Edge + * Mesa Bryce (oddities of terrain generator might generate this by chance, esp. v7) + * Hills biomes (shape only) + * Plateau (shape only) + * Plateau M (shape only) + * Cold Taiga M (mountain only) + * Taiga M (mountain only) + * Roofed Forest M (mountain only) + * Swampland M (mountain only) + * Extreme Hills Edge (unused in MC) TODO: * Better beaches * Improve Extreme Hills M * Desert M - Tricky biomes: - * Mushroom Island (must be on island) - * Stone Beach (must be at beaches only) - TODO: Find a way to position these biomes accordingly. - ]] -- List of Overworld biomes without modifiers. @@ -391,7 +386,7 @@ local function register_biomes() }) -- Stone beach - -- TODO: Should occour only at real beaches. + -- Not really a beach in MCL2, only named so according to MC minetest.register_biome({ name = "StoneBeach", node_riverbed = "mcl_core:sand", @@ -1178,7 +1173,7 @@ local function register_biomes() }) -- Mushroom Island / Mushroom Island Shore (rare) - -- TODO: Make sure these biomes only spawn in islands + -- Not neccessarily an island at all, only named after Minecraft's biome minetest.register_biome({ name = "MushroomIsland", node_top = "mcl_core:mycelium", From 256dc9e1b5c10cb95001fbbb09c1d6f9c73e1eeb Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 11 Mar 2019 13:50:27 +0100 Subject: [PATCH 104/737] Vertical blend for mushroomisland --- mods/MAPGEN/mcl_biomes/init.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/mods/MAPGEN/mcl_biomes/init.lua b/mods/MAPGEN/mcl_biomes/init.lua index b5487bfd..7882e34f 100644 --- a/mods/MAPGEN/mcl_biomes/init.lua +++ b/mods/MAPGEN/mcl_biomes/init.lua @@ -1185,6 +1185,7 @@ local function register_biomes() y_min = 4, -- Note: Limited in height! y_max = 20, + vertical_blend = 1, humidity_point = 106, heat_point = 50, }) From 0b9e25fd9a3ee94019336b5689c514cec23dbbd2 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 11 Mar 2019 14:22:05 +0100 Subject: [PATCH 105/737] Add vertical blend for *_ocean biomes --- mods/MAPGEN/mcl_biomes/init.lua | 47 ++++++++++++++++++++------------- 1 file changed, 28 insertions(+), 19 deletions(-) diff --git a/mods/MAPGEN/mcl_biomes/init.lua b/mods/MAPGEN/mcl_biomes/init.lua index 7882e34f..220a3b02 100644 --- a/mods/MAPGEN/mcl_biomes/init.lua +++ b/mods/MAPGEN/mcl_biomes/init.lua @@ -193,7 +193,7 @@ local function register_biomes() depth_filler = 2, node_riverbed = "mcl_core:sand", depth_riverbed = 2, - y_min = -3, + y_min = -4, y_max = 0, humidity_point = 58, heat_point = 8, @@ -207,9 +207,10 @@ local function register_biomes() node_riverbed = "mcl_core:sand", depth_riverbed = 2, y_min = OCEAN_MIN, - y_max = -4, + y_max = -5, humidity_point = 58, heat_point = 8, + vertical_blend = 1, }) -- Mega Taiga @@ -291,7 +292,7 @@ local function register_biomes() depth_filler = 3, node_riverbed = "mcl_core:sand", depth_riverbed = 4, - y_min = -3, + y_min = -4, y_max = 3, humidity_point = 10, heat_point = 45, @@ -305,7 +306,8 @@ local function register_biomes() node_riverbed = "mcl_core:sand", depth_riverbed = 4, y_min = OCEAN_MIN, - y_max = -4, + y_max = -5, + vertical_blend = 1, humidity_point = 10, heat_point = 45, }) @@ -391,7 +393,7 @@ local function register_biomes() name = "StoneBeach", node_riverbed = "mcl_core:sand", depth_riverbed = 1, - y_min = -6, + y_min = -7, y_max = mcl_vars.mg_overworld_max, humidity_point = 0, heat_point = 8, @@ -404,7 +406,8 @@ local function register_biomes() node_riverbed = "mcl_core:sand", depth_riverbed = 1, y_min = OCEAN_MIN, - y_max = -7, + y_max = -8, + vertical_blend = 2, humidity_point = 0, heat_point = 8, }) @@ -770,7 +773,7 @@ local function register_biomes() node_riverbed = "mcl_core:redsand", depth_riverbed = 1, node_stone = "mcl_colorblocks:hardened_clay_orange", - y_min = -3, + y_min = -4, y_max = 10, humidity_point = 0, heat_point = 100, @@ -784,7 +787,8 @@ local function register_biomes() node_riverbed = "mcl_core:sand", depth_riverbed = 2, y_min = OCEAN_MIN, - y_max = -4, + y_max = -5, + vertical_blend = 1, humidity_point = 0, heat_point = 100, }) @@ -833,7 +837,7 @@ local function register_biomes() node_riverbed = "mcl_core:redsand", depth_riverbed = 1, node_stone = "mcl_colorblocks:hardened_clay_orange", - y_min = -3, + y_min = -5, y_max = 10, humidity_point = 0, heat_point = 60, @@ -847,7 +851,8 @@ local function register_biomes() node_riverbed = "mcl_core:sand", depth_riverbed = 2, y_min = OCEAN_MIN, - y_max = -4, + y_max = -6, + vertical_blend = 1, humidity_point = 0, heat_point = 60, }) @@ -895,8 +900,8 @@ local function register_biomes() node_riverbed = "mcl_core:redsand", depth_riverbed = 2, node_stone = "mcl_colorblocks:hardened_clay_orange", - -- sand has wider reach than in other mesa biomes - y_min = -4, + -- red sand has wider reach than in other mesa biomes + y_min = -7, y_max = 11, humidity_point = -4, heat_point = 80, @@ -911,7 +916,8 @@ local function register_biomes() node_riverbed = "mcl_core:sand", depth_riverbed = 3, y_min = OCEAN_MIN, - y_max = -3, + y_max = -8, + vertical_blend = 2, humidity_point = -4, heat_point = 80, }) @@ -1010,7 +1016,7 @@ local function register_biomes() depth_filler = 3, node_riverbed = "mcl_core:sand", depth_riverbed = 2, - y_min = -1, + y_min = -2, y_max = 0, humidity_point = 88, heat_point = 81, @@ -1024,7 +1030,8 @@ local function register_biomes() node_riverbed = "mcl_core:sand", depth_riverbed = 2, y_min = OCEAN_MIN, - y_max = -2, + y_max = -3, + vertical_blend = 1, humidity_point = 88, heat_point = 81, }) @@ -1052,7 +1059,7 @@ local function register_biomes() depth_filler = 3, node_riverbed = "mcl_core:sand", depth_riverbed = 2, - y_min = -1, + y_min = -2, y_max = 0, humidity_point = 92, heat_point = 81, @@ -1066,7 +1073,8 @@ local function register_biomes() node_riverbed = "mcl_core:sand", depth_riverbed = 2, y_min = OCEAN_MIN, - y_max = -2, + y_max = -3, + vertical_blend = 1, humidity_point = 92, heat_point = 81, }) @@ -1153,7 +1161,7 @@ local function register_biomes() depth_filler = 3, node_riverbed = "mcl_core:sand", depth_riverbed = 2, - y_min = -4, + y_min = -5, y_max = 0, humidity_point = 90, heat_point = 50, @@ -1167,7 +1175,8 @@ local function register_biomes() node_riverbed = "mcl_core:sand", depth_riverbed = 2, y_min = OCEAN_MIN, - y_max = -5, + y_max = -6, + vertical_blend = 1, humidity_point = 90, heat_point = 50, }) From ae513f7b533a3782a188e74d63f35d30dd0bccaa Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 11 Mar 2019 21:42:30 +0100 Subject: [PATCH 106/737] Add MesaBryce biome --- mods/MAPGEN/mcl_biomes/init.lua | 54 +++++++++++++++++++++++++++++++-- 1 file changed, 51 insertions(+), 3 deletions(-) diff --git a/mods/MAPGEN/mcl_biomes/init.lua b/mods/MAPGEN/mcl_biomes/init.lua index 220a3b02..e6189dd1 100644 --- a/mods/MAPGEN/mcl_biomes/init.lua +++ b/mods/MAPGEN/mcl_biomes/init.lua @@ -62,7 +62,6 @@ local function register_biomes() Intentionally missing biomes: * River (generated by valleys and v7) * Frozen River (generated by valleys and v7) - * Mesa Bryce (oddities of terrain generator might generate this by chance, esp. v7) * Hills biomes (shape only) * Plateau (shape only) * Plateau M (shape only) @@ -109,6 +108,7 @@ local function register_biomes() "Savanna", "SavannaM", "Mesa", + "MesaBryce", "MesaPlateauF", "MesaPlateauFM", } @@ -793,6 +793,52 @@ local function register_biomes() heat_point = 100, }) + -- Mesa Bryce: Variant of Mesa, but without the red sand desert + minetest.register_biome({ + name = "MesaBryce", + node_top = "mcl_colorblocks:hardened_clay", + depth_top = 1, + node_filler = "mcl_colorblocks:hardened_clay", + node_riverbed = "mcl_colorblocks:hardened_clay", + depth_riverbed = 1, + node_stone = "mcl_colorblocks:hardened_clay", + y_min = 0, + y_max = mcl_vars.mg_overworld_max, + humidity_point = -4, + heat_point = 100, + }) + -- Helper biome for the red sand at the bottom of Mesas. + minetest.register_biome({ + name = "MesaBryce_sandlevel", + node_top = "mcl_core:redsand", + depth_top = 1, + node_filler = "mcl_colorblocks:hardened_clay_orange", + depth_filler = 3, + node_riverbed = "mcl_colorblocks:hardned_clay", + depth_riverbed = 1, + node_stone = "mcl_colorblocks:hardened_clay_orange", + y_min = -4, + y_max = -1, + humidity_point = -4, + heat_point = 100, + }) + minetest.register_biome({ + name = "MesaBryce_ocean", + node_top = "mcl_core:sand", + depth_top = 3, + node_filler = "mcl_core:sand", + depth_filler = 2, + node_riverbed = "mcl_core:sand", + depth_riverbed = 2, + y_min = OCEAN_MIN, + y_max = -5, + vertical_blend = 1, + humidity_point = -4, + heat_point = 100, + }) + + + -- Mesa Plateau F -- Identical to Mesa below Y=30. At Y=30 and above there is an oak forest minetest.register_biome({ @@ -1344,6 +1390,7 @@ local function register_biome_ores() y_min = mcl_worlds.layer_to_y(32), y_max = mcl_worlds.layer_to_y(79), biomes = { "Mesa", "Mesa_sandlevel", "Mesa_ocean", + "MesaBryce", "MesaBryce_sandlevel", "MesaBryce_ocean", "MesaPlateauF", "MesaPlateauF_sandlevel", "MesaPlateauF_ocean", "MesaPlateauFM", "MesaPlateauFM_sandlevel", "MesaPlateauFM_ocean", }, }) @@ -1484,6 +1531,7 @@ local function register_biomelike_ores() stratum_thickness = 8, biomes = { "Mesa_sandlevel", "Mesa_ocean", + "MesaBryce_sandlevel", "MesaBryce_ocean", "MesaPlateauF_sandlevel", "MesaPlateauF_ocean", "MesaPlateauFM_sandlevel", "MesaPlateauFM_ocean", }, @@ -1510,7 +1558,7 @@ local function register_biomelike_ores() wherein = {"mcl_colorblocks:hardened_clay"}, y_min = y_min, y_max = y_max, - biomes = { "Mesa", "MesaPlateauF" }, + biomes = { "Mesa", "MesaPlateauF", "MesaBryce" }, }) -- Eroded stratum minetest.register_ore({ @@ -3262,7 +3310,7 @@ local function register_decorations() }, y_min = 4, y_max = mcl_vars.mg_overworld_max, - biomes = {"Desert", "Mesa", "Mesa_sandlevel", "MesaPlateauF", "MesaPlateauF_sandlevel", "MesaPlateauF_grasstop", "Taiga", "MegaTaiga"}, + biomes = {"Desert", "Mesa", "Mesa_sandlevel", "MesaPlateauF", "MesaPlateauF_sandlevel", "MesaPlateauF_grasstop","MesaBryce","Taiga", "MegaTaiga"}, decoration = "mcl_core:deadbush", height = 1, }) From a16886bf170e11d6fe75539f7f77e086b61f62dc Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 11 Mar 2019 21:44:13 +0100 Subject: [PATCH 107/737] Tweak heat and humidity points of new mesa biomes --- mods/MAPGEN/mcl_biomes/init.lua | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/mods/MAPGEN/mcl_biomes/init.lua b/mods/MAPGEN/mcl_biomes/init.lua index e6189dd1..867bd46f 100644 --- a/mods/MAPGEN/mcl_biomes/init.lua +++ b/mods/MAPGEN/mcl_biomes/init.lua @@ -804,7 +804,7 @@ local function register_biomes() node_stone = "mcl_colorblocks:hardened_clay", y_min = 0, y_max = mcl_vars.mg_overworld_max, - humidity_point = -4, + humidity_point = -5, heat_point = 100, }) -- Helper biome for the red sand at the bottom of Mesas. @@ -819,7 +819,7 @@ local function register_biomes() node_stone = "mcl_colorblocks:hardened_clay_orange", y_min = -4, y_max = -1, - humidity_point = -4, + humidity_point = -5, heat_point = 100, }) minetest.register_biome({ @@ -833,7 +833,7 @@ local function register_biomes() y_min = OCEAN_MIN, y_max = -5, vertical_blend = 1, - humidity_point = -4, + humidity_point = -5, heat_point = 100, }) @@ -915,8 +915,8 @@ local function register_biomes() node_stone = "mcl_colorblocks:hardened_clay", y_min = 12, y_max = 29, - humidity_point = -4, - heat_point = 80, + humidity_point = -5, + heat_point = 60, vertical_blend = 5, }) @@ -932,8 +932,8 @@ local function register_biomes() node_stone = "mcl_colorblocks:hardened_clay", y_min = 30, y_max = mcl_vars.mg_overworld_max, - humidity_point = -4, - heat_point = 80, + humidity_point = -5, + heat_point = 60, }) -- Helper biome for the red sand at the bottom. @@ -949,8 +949,8 @@ local function register_biomes() -- red sand has wider reach than in other mesa biomes y_min = -7, y_max = 11, - humidity_point = -4, - heat_point = 80, + humidity_point = -5, + heat_point = 60, vertical_blend = 4, }) minetest.register_biome({ @@ -964,8 +964,8 @@ local function register_biomes() y_min = OCEAN_MIN, y_max = -8, vertical_blend = 2, - humidity_point = -4, - heat_point = 80, + humidity_point = -5, + heat_point = 60, }) From f1f6dc4c48edd3b4105eddfcfae5358320bd1b35 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 11 Mar 2019 22:08:17 +0100 Subject: [PATCH 108/737] Colorize bottom terracotta layers of MesaBryce --- mods/MAPGEN/mcl_biomes/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/MAPGEN/mcl_biomes/init.lua b/mods/MAPGEN/mcl_biomes/init.lua index 867bd46f..0ad81870 100644 --- a/mods/MAPGEN/mcl_biomes/init.lua +++ b/mods/MAPGEN/mcl_biomes/init.lua @@ -1590,7 +1590,7 @@ local function register_biomelike_ores() end -- First stratum near the sand level. Always orange. - stratum(11, 3, "orange") + stratum(-1, 15, "orange") -- Create random strata for up to Y = 256. -- These strata are calculated based on the world seed and are global. From c62658fd27aea3345a7d434b7f30be77b9cb0c6e Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 11 Mar 2019 23:00:59 +0100 Subject: [PATCH 109/737] Erode strata a bit in Mesa and MesaPlateauF --- mods/MAPGEN/mcl_biomes/init.lua | 68 ++++++++++++++++++++++++--------- 1 file changed, 49 insertions(+), 19 deletions(-) diff --git a/mods/MAPGEN/mcl_biomes/init.lua b/mods/MAPGEN/mcl_biomes/init.lua index 0ad81870..c9c83749 100644 --- a/mods/MAPGEN/mcl_biomes/init.lua +++ b/mods/MAPGEN/mcl_biomes/init.lua @@ -749,7 +749,8 @@ local function register_biomes() heat_point = 27, }) - -- Mesa + -- Mesa: Starts with a couple of sand-covered layers (the "sandlevel"), + -- followed by terracotta with colorful (but imperfect) strata minetest.register_biome({ name = "Mesa", node_top = "mcl_colorblocks:hardened_clay", @@ -793,7 +794,7 @@ local function register_biomes() heat_point = 100, }) - -- Mesa Bryce: Variant of Mesa, but without the red sand desert + -- Mesa Bryce: Variant of Mesa, but without the red sand desert. Has perfect strata minetest.register_biome({ name = "MesaBryce", node_top = "mcl_colorblocks:hardened_clay", @@ -807,7 +808,6 @@ local function register_biomes() humidity_point = -5, heat_point = 100, }) - -- Helper biome for the red sand at the bottom of Mesas. minetest.register_biome({ name = "MesaBryce_sandlevel", node_top = "mcl_core:redsand", @@ -840,7 +840,7 @@ local function register_biomes() -- Mesa Plateau F - -- Identical to Mesa below Y=30. At Y=30 and above there is an oak forest + -- Identical to Mesa below Y=30. At Y=30 and above there is a "dry" oak forest minetest.register_biome({ name = "MesaPlateauF", node_top = "mcl_colorblocks:hardened_clay", @@ -855,9 +855,9 @@ local function register_biomes() heat_point = 60, vertical_blend = 0, -- we want a sharp transition }) - - -- The actual plateau of this biome - -- This is a plateau for grass blocks, tall grass, coarse dirt and oaks. + -- The oak forest plateau of this biome. + -- This is a plateau for grass blocks, dry shrubs, tall grass, coarse dirt and oaks. + -- Strata don't generate here. minetest.register_biome({ name = "MesaPlateauF_grasstop", node_top = "mcl_core:dirt_with_dry_grass", @@ -872,8 +872,6 @@ local function register_biomes() humidity_point = 0, heat_point = 60, }) - - -- Helper biome for the red sand at the bottom. minetest.register_biome({ name = "MesaPlateauF_sandlevel", node_top = "mcl_core:redsand", @@ -904,7 +902,9 @@ local function register_biomes() }) -- Mesa Plateau FM - -- Variant of MesaPlateauF: fewer trees, more coarse dirt, more erratic terrain, more sand, red sandstone at sandlevel + -- Dryer and more "chaotic"/"weathered down" variant of MesaPlateauF: + -- oak forest is less dense, more coarse dirt, more erratic terrain, vertical blend, more red sand layers, + -- red sand as ores, red sandstone at sandlevel minetest.register_biome({ name = "MesaPlateauFM", node_top = "mcl_colorblocks:hardened_clay", @@ -919,7 +919,6 @@ local function register_biomes() heat_point = 60, vertical_blend = 5, }) - -- Grass plateau minetest.register_biome({ name = "MesaPlateauFM_grasstop", @@ -935,8 +934,6 @@ local function register_biomes() humidity_point = -5, heat_point = 60, }) - - -- Helper biome for the red sand at the bottom. minetest.register_biome({ name = "MesaPlateauFM_sandlevel", node_top = "mcl_core:redsand", @@ -1543,7 +1540,7 @@ local function register_biomelike_ores() -- Mesa strata (registered as sheet ores) -- Helper function to create strata. - local stratum = function(y_min, height, color, seed) + local stratum = function(y_min, height, color, seed, is_perfect) if not height then height = 1 end @@ -1551,16 +1548,49 @@ local function register_biomelike_ores() seed = 39 end local y_max = y_min + height-1 - -- Full stratum + local perfect_biomes + if is_perfect then + -- "perfect" means no erosion + perfect_biomes = { "MesaBryce", "Mesa", "MesaPlateauF", "MesaPlateauFM" } + else + perfect_biomes = { "MesaBryce" } + end + -- Full, perfect stratum minetest.register_ore({ ore_type = "stratum", ore = "mcl_colorblocks:hardened_clay_"..color, wherein = {"mcl_colorblocks:hardened_clay"}, y_min = y_min, y_max = y_max, - biomes = { "Mesa", "MesaPlateauF", "MesaBryce" }, + biomes = perfect_biomes, }) - -- Eroded stratum + if not is_perfect then + -- Slightly eroded stratum, only minor imperfections + minetest.register_ore({ + ore_type = "stratum", + ore = "mcl_colorblocks:hardened_clay_"..color, + wherein = {"mcl_colorblocks:hardened_clay"}, + y_min = y_min, + y_max = y_max, + biomes = { "Mesa", "MesaPlateauF" }, + noise_params = { + offset = y_min+(y_max-y_min)/2, + scale = 0, + spread = {x = 50, y = 50, z = 50}, + seed = seed+4, + octaves = 1, + persist = 1.0 + }, + np_stratum_thickness = { + offset = 1.28, + scale = 1, + spread = {x = 18, y = 18, z = 18}, + seed = seed+4, + octaves = 3, + persist = 0.8, + }, + }) + -- Very eroded stratum, most of the color is gone minetest.register_ore({ ore_type = "stratum", ore = "mcl_colorblocks:hardened_clay_"..color, @@ -1585,12 +1615,12 @@ local function register_biomelike_ores() persist = 0.6, }, }) - + end end -- First stratum near the sand level. Always orange. - stratum(-1, 15, "orange") + stratum(-1, 15, "orange", nil, true) -- Create random strata for up to Y = 256. -- These strata are calculated based on the world seed and are global. From 12581e844107bad6e9ffbf5e6dd4de7f1383dfa6 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 12 Mar 2019 00:26:33 +0100 Subject: [PATCH 110/737] Tweak MesaBryce sandlevel: Sand beach, strata --- mods/MAPGEN/mcl_biomes/init.lua | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/mods/MAPGEN/mcl_biomes/init.lua b/mods/MAPGEN/mcl_biomes/init.lua index c9c83749..0384bab4 100644 --- a/mods/MAPGEN/mcl_biomes/init.lua +++ b/mods/MAPGEN/mcl_biomes/init.lua @@ -794,7 +794,7 @@ local function register_biomes() heat_point = 100, }) - -- Mesa Bryce: Variant of Mesa, but without the red sand desert. Has perfect strata + -- Mesa Bryce: Variant of Mesa, but with perfect strata and a much smaller red sand desert minetest.register_biome({ name = "MesaBryce", node_top = "mcl_colorblocks:hardened_clay", @@ -803,7 +803,7 @@ local function register_biomes() node_riverbed = "mcl_colorblocks:hardened_clay", depth_riverbed = 1, node_stone = "mcl_colorblocks:hardened_clay", - y_min = 0, + y_min = 5, y_max = mcl_vars.mg_overworld_max, humidity_point = -5, heat_point = 100, @@ -818,7 +818,7 @@ local function register_biomes() depth_riverbed = 1, node_stone = "mcl_colorblocks:hardened_clay_orange", y_min = -4, - y_max = -1, + y_max = 4, humidity_point = -5, heat_point = 100, }) @@ -1559,6 +1559,8 @@ local function register_biomelike_ores() minetest.register_ore({ ore_type = "stratum", ore = "mcl_colorblocks:hardened_clay_"..color, + -- Only paint uncolored so the biome can choose + -- a color in advance. wherein = {"mcl_colorblocks:hardened_clay"}, y_min = y_min, y_max = y_max, @@ -1619,13 +1621,19 @@ local function register_biomelike_ores() end - -- First stratum near the sand level. Always orange. - stratum(-1, 15, "orange", nil, true) + -- Hardcoded orange strata near sea level. + + -- For MesaBryce, since it has no sand at these heights + stratum(5, 1, "orange", nil, true) + stratum(7, 2, "orange", nil, true) + + -- 3-level stratum above the sandlevel (all mesa biomes) + stratum(11, 3, "orange", nil, true) -- Create random strata for up to Y = 256. -- These strata are calculated based on the world seed and are global. - -- They are thus unique per-world. - local mesapr = PcgRandom(minetest.get_mapgen_setting("seed")) + -- They are thus different per-world. + local mesapr = PcgRandom(mg_seed) --[[ From 206293e3f9f8db23fcb286e1b1c82e7dda1d9932 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 12 Mar 2019 00:34:44 +0100 Subject: [PATCH 111/737] Fix MesaBryce typo --- mods/MAPGEN/mcl_biomes/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/MAPGEN/mcl_biomes/init.lua b/mods/MAPGEN/mcl_biomes/init.lua index 0384bab4..0bc7022d 100644 --- a/mods/MAPGEN/mcl_biomes/init.lua +++ b/mods/MAPGEN/mcl_biomes/init.lua @@ -814,7 +814,7 @@ local function register_biomes() depth_top = 1, node_filler = "mcl_colorblocks:hardened_clay_orange", depth_filler = 3, - node_riverbed = "mcl_colorblocks:hardned_clay", + node_riverbed = "mcl_colorblocks:hardened_clay", depth_riverbed = 1, node_stone = "mcl_colorblocks:hardened_clay_orange", y_min = -4, From 2e092dc15fa2d8bd611b26dc09e2b49a0caec5a7 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 12 Mar 2019 00:46:08 +0100 Subject: [PATCH 112/737] Shrink MesaBryce beach once more --- mods/MAPGEN/mcl_biomes/init.lua | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mods/MAPGEN/mcl_biomes/init.lua b/mods/MAPGEN/mcl_biomes/init.lua index 0bc7022d..ea82aa8f 100644 --- a/mods/MAPGEN/mcl_biomes/init.lua +++ b/mods/MAPGEN/mcl_biomes/init.lua @@ -803,7 +803,7 @@ local function register_biomes() node_riverbed = "mcl_colorblocks:hardened_clay", depth_riverbed = 1, node_stone = "mcl_colorblocks:hardened_clay", - y_min = 5, + y_min = 4, y_max = mcl_vars.mg_overworld_max, humidity_point = -5, heat_point = 100, @@ -818,7 +818,7 @@ local function register_biomes() depth_riverbed = 1, node_stone = "mcl_colorblocks:hardened_clay_orange", y_min = -4, - y_max = 4, + y_max = 3, humidity_point = -5, heat_point = 100, }) @@ -1624,7 +1624,7 @@ local function register_biomelike_ores() -- Hardcoded orange strata near sea level. -- For MesaBryce, since it has no sand at these heights - stratum(5, 1, "orange", nil, true) + stratum(4, 1, "orange", nil, true) stratum(7, 2, "orange", nil, true) -- 3-level stratum above the sandlevel (all mesa biomes) From 45a30867c3343eb29ea0d48fe47889e7e3c6f8a6 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 12 Mar 2019 00:56:35 +0100 Subject: [PATCH 113/737] Del. color from underground hclay in MesaPlateauFM --- mods/MAPGEN/mcl_biomes/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/MAPGEN/mcl_biomes/init.lua b/mods/MAPGEN/mcl_biomes/init.lua index ea82aa8f..b909cf13 100644 --- a/mods/MAPGEN/mcl_biomes/init.lua +++ b/mods/MAPGEN/mcl_biomes/init.lua @@ -942,7 +942,7 @@ local function register_biomes() depth_filler = 3, node_riverbed = "mcl_core:redsand", depth_riverbed = 2, - node_stone = "mcl_colorblocks:hardened_clay_orange", + node_stone = "mcl_colorblocks:hardened_clay", -- red sand has wider reach than in other mesa biomes y_min = -7, y_max = 11, From 7935e6463764ceb13cea81b1e4075338718364e1 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 12 Mar 2019 01:49:27 +0100 Subject: [PATCH 114/737] Cleanup ambigious sandstone groups, change meaning - Change meaning of "sandstone" group to include sandstone of any color - Add "normal_sandstone" group - Rename "redsandstone" group to "red_sandstone" --- GROUPS.md | 6 ++++-- mods/HELP/mcl_craftguide/init.lua | 6 ++++-- mods/ITEMS/mcl_core/nodes_base.lua | 28 ++++++++++++++-------------- mods/ITEMS/mcl_stairs/register.lua | 8 ++++---- mods/MAPGEN/mcl_mapgen_core/init.lua | 1 - 5 files changed, 26 insertions(+), 23 deletions(-) diff --git a/GROUPS.md b/GROUPS.md index 70f61247..cb1f531e 100644 --- a/GROUPS.md +++ b/GROUPS.md @@ -66,8 +66,10 @@ Please read to learn how digging times ### Groups (mostly) used for crafting recipes * `sand=1`: Sand (any color) -* `sandstone=1`: (Yellow) sandstone and related nodes (chiseled and the like) (only full blocks) -* `redsandstone=1`: Red sandstone and related nodes (chiseled and the like) (only full blocks) +* `sandstone=1`: Sandstone (any color) and related nodes (chiseled and the like) (only full blocks) +* `normal_sandstone=1`: “Normal” (yellow) sandstone and related nodes (chiseled and the like) (only full blocks) +* `red_sandstone=1`: Red sandstone and related nodes (chiseled and the like) (only full blocks) +* `hardened_clay=1`: Terracotta (any color) * `quartz_block=1`: Quartz Block and variants (chiseled, pillar, etc.) (only full blocks) * `stonebrick=1`: Stone Bricks and related nodes (only full blocks) * `shulker_box=1`: Block is a shulker box diff --git a/mods/HELP/mcl_craftguide/init.lua b/mods/HELP/mcl_craftguide/init.lua index 3c821706..144a9e8c 100644 --- a/mods/HELP/mcl_craftguide/init.lua +++ b/mods/HELP/mcl_craftguide/init.lua @@ -61,6 +61,8 @@ local group_stereotypes = { banner = "mcl_banners:banner_item_white", mesecon_conductor_craftable = "mesecons:wire_00000000_off", purpur_block = "mcl_end:purpur_block", + normal_sandstone = "mcl_core:sandstone", + red_sandstone = "mcl_core:redsandstone", compass = mcl_compass.stereotype, clock = mcl_clock.sterotype, } @@ -71,8 +73,8 @@ local group_names = { wood = "Any wood planks", tree = "Any wood", sand = "Any sand", - sandstone = "Any sandstone (yellow)", - redsandstone = "Any red sandstone", + normal_sandstone = "Any normal sandstone", + red_sandstone = "Any red sandstone", carpet = "Any carpet", dye = "Any dye", water_bucket = "Any water bucket", diff --git a/mods/ITEMS/mcl_core/nodes_base.lua b/mods/ITEMS/mcl_core/nodes_base.lua index eef73e5a..0661bb43 100644 --- a/mods/ITEMS/mcl_core/nodes_base.lua +++ b/mods/ITEMS/mcl_core/nodes_base.lua @@ -315,7 +315,7 @@ minetest.register_node("mcl_core:dirt_with_grass", { tiles = {"default_grass.png", "default_dirt.png", {name="default_dirt.png^default_grass_side.png", tileable_vertical=false}}, is_ground_content = true, stack_max = 64, - groups = {handy=1,shovely=1, grass_block=1, grass_block_no_snow=1, soil=1, soil_sapling=2, soil_sugarcane=1, cultivatable=2, spreading_dirt_type=1, enderman_takable=1, building_block=1}, + groups = {handy=1,shovely=1,dirt=2,grass_block=1, grass_block_no_snow=1, soil=1, soil_sapling=2, soil_sugarcane=1, cultivatable=2, spreading_dirt_type=1, enderman_takable=1, building_block=1}, drop = 'mcl_core:dirt', sounds = mcl_sounds.node_sound_dirt_defaults({ footstep = {name="default_grass_footstep", gain=0.4}, @@ -349,7 +349,7 @@ minetest.register_node("mcl_core:dirt_with_dry_grass", { tiles = {"default_dry_grass.png", "default_dirt.png", {name="default_dirt.png^default_dry_grass_side.png", tileable_vertical=false}}, is_ground_content = true, stack_max = 64, - groups = {handy=1,shovely=1, grass_block=1, grass_block_no_snow=1, soil=1, soil_sapling=2, soil_sugarcane=1, cultivatable=2, spreading_dirt_type=1, enderman_takable=1, building_block=1, not_in_creative_inventory=1}, + groups = {handy=1,shovely=1, dirt=2,grass_block=1, grass_block_no_snow=1, soil=1, soil_sapling=2, soil_sugarcane=1, cultivatable=2, spreading_dirt_type=1, enderman_takable=1, building_block=1, not_in_creative_inventory=1}, drop = 'mcl_core:dirt', sounds = mcl_sounds.node_sound_dirt_defaults({ footstep = {name="default_grass_footstep", gain=0.4}, @@ -397,7 +397,7 @@ minetest.register_node("mcl_core:mycelium", { tiles = {"mcl_core_mycelium_top.png", "default_dirt.png", {name="mcl_core_mycelium_side.png", tileable_vertical=false}}, is_ground_content = true, stack_max = 64, - groups = {handy=1,shovely=1, spreading_dirt_type=1, building_block=1}, + groups = {handy=1,shovely=1, dirt=2,spreading_dirt_type=1, building_block=1}, drop = 'mcl_core:dirt', sounds = mcl_sounds.node_sound_dirt_defaults({ footstep = {name="default_grass_footstep", gain=0.4}, @@ -416,7 +416,7 @@ minetest.register_node("mcl_core:podzol", { tiles = {"mcl_core_dirt_podzol_top.png", "default_dirt.png", {name="mcl_core_dirt_podzol_side.png", tileable_vertical=false}}, is_ground_content = true, stack_max = 64, - groups = {handy=1,shovely=3, soil=1, soil_sapling=2, soil_sugarcane=1, enderman_takable=1, building_block=1}, + groups = {handy=1,shovely=3, dirt=2,soil=1, soil_sapling=2, soil_sugarcane=1, enderman_takable=1, building_block=1}, drop = 'mcl_core:dirt', sounds = mcl_sounds.node_sound_dirt_defaults(), on_construct = mcl_core.on_snowable_construct, @@ -433,7 +433,7 @@ minetest.register_node("mcl_core:dirt", { tiles = {"default_dirt.png"}, is_ground_content = true, stack_max = 64, - groups = {handy=1,shovely=1, soil=1, soil_sapling=2, soil_sugarcane=1, cultivatable=2, enderman_takable=1, building_block=1}, + groups = {handy=1,shovely=1, dirt=1,soil=1, soil_sapling=2, soil_sugarcane=1, cultivatable=2, enderman_takable=1, building_block=1}, sounds = mcl_sounds.node_sound_dirt_defaults(), _mcl_blast_resistance = 3, _mcl_hardness = 0.5, @@ -445,7 +445,7 @@ minetest.register_node("mcl_core:coarse_dirt", { tiles = {"mcl_core_coarse_dirt.png"}, is_ground_content = true, stack_max = 64, - groups = {handy=1,shovely=1, soil=1, soil_sugarcane=1, cultivatable=1, enderman_takable=1, building_block=1}, + groups = {handy=1,shovely=1, dirt=3,soil=1, soil_sugarcane=1, cultivatable=1, enderman_takable=1, building_block=1}, sounds = mcl_sounds.node_sound_dirt_defaults(), _mcl_blast_resistance = 3, _mcl_hardness = 0.5, @@ -493,7 +493,7 @@ minetest.register_node("mcl_core:sandstone", { tiles = {"mcl_core_sandstone_top.png", "mcl_core_sandstone_bottom.png", "mcl_core_sandstone_normal.png"}, is_ground_content = true, stack_max = 64, - groups = {pickaxey=1, sandstone=1, building_block=1, material_stone=1}, + groups = {pickaxey=1, sandstone=1, normal_sandstone=1, building_block=1, material_stone=1}, sounds = mcl_sounds.node_sound_stone_defaults(), _mcl_blast_resistance = 4, _mcl_hardness = 0.8, @@ -505,7 +505,7 @@ minetest.register_node("mcl_core:sandstonesmooth", { tiles = {"mcl_core_sandstone_top.png", "mcl_core_sandstone_bottom.png", "mcl_core_sandstone_smooth.png"}, is_ground_content = false, stack_max = 64, - groups = {pickaxey=1, sandstone=1, building_block=1, material_stone=1}, + groups = {pickaxey=1, sandstone=1, normal_sandstone=1, building_block=1, material_stone=1}, sounds = mcl_sounds.node_sound_stone_defaults(), _mcl_blast_resistance = 4, _mcl_hardness = 0.8, @@ -517,7 +517,7 @@ minetest.register_node("mcl_core:sandstonecarved", { tiles = {"mcl_core_sandstone_top.png", "mcl_core_sandstone_bottom.png", "mcl_core_sandstone_carved.png"}, is_ground_content = false, stack_max = 64, - groups = {pickaxey=1, sandstone=1, building_block=1, material_stone=1}, + groups = {pickaxey=1, sandstone=1, normal_sandstone=1, building_block=1, material_stone=1}, sounds = mcl_sounds.node_sound_stone_defaults(), _mcl_blast_resistance = 4, _mcl_hardness = 0.8, @@ -530,7 +530,7 @@ minetest.register_node("mcl_core:sandstonesmooth2", { tiles = {"mcl_core_sandstone_top.png"}, is_ground_content = false, stack_max = 64, - groups = {pickaxey=1, sandstone=1, building_block=1, material_stone=1}, + groups = {pickaxey=1, sandstone=1, normal_sandstone=1, building_block=1, material_stone=1}, sounds = mcl_sounds.node_sound_stone_defaults(), _mcl_blast_resistance = 4, _mcl_hardness = 0.8, @@ -556,7 +556,7 @@ minetest.register_node("mcl_core:redsandstone", { tiles = {"mcl_core_red_sandstone_top.png", "mcl_core_red_sandstone_bottom.png", "mcl_core_red_sandstone_normal.png"}, is_ground_content = true, stack_max = 64, - groups = {pickaxey=1, redsandstone=1, building_block=1, material_stone=1}, + groups = {pickaxey=1, sandstone=1, red_sandstone=1, building_block=1, material_stone=1}, sounds = mcl_sounds.node_sound_stone_defaults(), _mcl_blast_resistance = 4, _mcl_hardness = 0.8, @@ -568,7 +568,7 @@ minetest.register_node("mcl_core:redsandstonesmooth", { tiles = {"mcl_core_red_sandstone_top.png", "mcl_core_red_sandstone_bottom.png", "mcl_core_red_sandstone_smooth.png"}, is_ground_content = false, stack_max = 64, - groups = {pickaxey=1, redsandstone=1, building_block=1, material_stone=1}, + groups = {pickaxey=1, sandstone=1, red_sandstone=1, building_block=1, material_stone=1}, sounds = mcl_sounds.node_sound_stone_defaults(), _mcl_blast_resistance = 4, _mcl_hardness = 0.8, @@ -580,7 +580,7 @@ minetest.register_node("mcl_core:redsandstonecarved", { tiles = {"mcl_core_red_sandstone_top.png", "mcl_core_red_sandstone_bottom.png", "mcl_core_red_sandstone_carved.png"}, is_ground_content = false, stack_max = 64, - groups = {pickaxey=1, redsandstone=1, building_block=1, material_stone=1}, + groups = {pickaxey=1, sandstone=1, red_sandstone=1, building_block=1, material_stone=1}, sounds = mcl_sounds.node_sound_stone_defaults(), _mcl_blast_resistance = 4, _mcl_hardness = 0.8, @@ -592,7 +592,7 @@ minetest.register_node("mcl_core:redsandstonesmooth2", { tiles = {"mcl_core_red_sandstone_top.png"}, is_ground_content = false, stack_max = 64, - groups = {pickaxey=1, redsandstone=1, building_block=1, material_stone=1}, + groups = {pickaxey=1, sandstone=1, red_sandstone=1, building_block=1, material_stone=1}, sounds = mcl_sounds.node_sound_stone_defaults(), _mcl_blast_resistance = 4, _mcl_hardness = 0.8, diff --git a/mods/ITEMS/mcl_stairs/register.lua b/mods/ITEMS/mcl_stairs/register.lua index 6eadf629..fbbedf2c 100644 --- a/mods/ITEMS/mcl_stairs/register.lua +++ b/mods/ITEMS/mcl_stairs/register.lua @@ -50,24 +50,24 @@ mcl_stairs.register_stair_and_slab_simple("mossycobble", "mcl_core:mossycobble", mcl_stairs.register_stair_and_slab_simple("brick_block", "mcl_core:brick_block", S("Brick Stairs"), S("Brick Slab"), S("Double Brick Slab")) -mcl_stairs.register_stair("sandstone", "group:sandstone", +mcl_stairs.register_stair("sandstone", "group:normal_sandstone", {pickaxey=1, material_stone=1}, {"mcl_core_sandstone_top.png", "mcl_core_sandstone_bottom.png", "mcl_core_sandstone_normal.png"}, S("Sandstone Stairs"), mcl_sounds.node_sound_stone_defaults(), 0.8, nil, "mcl_core:sandstone") -mcl_stairs.register_slab("sandstone", "group:sandstone", +mcl_stairs.register_slab("sandstone", "group:normal_sandstone", {pickaxey=1, material_stone=1}, {"mcl_core_sandstone_top.png", "mcl_core_sandstone_bottom.png", "mcl_core_sandstone_normal.png"}, S("Sandstone Slab"), mcl_sounds.node_sound_stone_defaults(), 2, S("Double Sandstone Slab"), "mcl_core:sandstone") mcl_stairs.register_stair_and_slab_simple("sandstonesmooth2", "mcl_core:sandstonesmooth2", S("Smooth Sandstone Stairs"), S("Smooth Sandstone Slab"), S("Double Smooth Sandstone Slab")) -mcl_stairs.register_stair("redsandstone", "group:redsandstone", +mcl_stairs.register_stair("redsandstone", "group:red_sandstone", {pickaxey=1, material_stone=1}, {"mcl_core_red_sandstone_top.png", "mcl_core_red_sandstone_bottom.png", "mcl_core_red_sandstone_normal.png"}, S("Red Sandstone Stairs"), mcl_sounds.node_sound_stone_defaults(), 0.8, nil, "mcl_core:redsandstone") -mcl_stairs.register_slab("redsandstone", "group:redsandstone", +mcl_stairs.register_slab("redsandstone", "group:red_sandstone", {pickaxey=1, material_stone=1}, {"mcl_core_red_sandstone_top.png", "mcl_core_red_sandstone_bottom.png", "mcl_core_red_sandstone_normal.png"}, S("Red Sandstone Slab"), diff --git a/mods/MAPGEN/mcl_mapgen_core/init.lua b/mods/MAPGEN/mcl_mapgen_core/init.lua index 28cd8475..18be851e 100644 --- a/mods/MAPGEN/mcl_mapgen_core/init.lua +++ b/mods/MAPGEN/mcl_mapgen_core/init.lua @@ -1808,7 +1808,6 @@ minetest.register_on_generated(function(minp, maxp, seed) data[p_pos] = c_sandstone lvm_used = true elseif data[p_pos] == c_redsand then - -- Note: This is the only place in which red sandstone is generatd data[p_pos] = c_redsandstone lvm_used = true end From e26a668b74c35ac3134e78d2bab51cdceb5e024a Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 12 Mar 2019 02:13:15 +0100 Subject: [PATCH 115/737] Add emerald ore+monster eggs in all ExtremeHills --- mods/MAPGEN/mcl_biomes/init.lua | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/mods/MAPGEN/mcl_biomes/init.lua b/mods/MAPGEN/mcl_biomes/init.lua index b909cf13..409debc0 100644 --- a/mods/MAPGEN/mcl_biomes/init.lua +++ b/mods/MAPGEN/mcl_biomes/init.lua @@ -270,6 +270,7 @@ local function register_biomes() }) -- Extreme Hills + -- Sparsely populated grasslands with little tallgras and trees. minetest.register_biome({ name = "ExtremeHills", node_top = "mcl_core:dirt_with_grass", @@ -313,6 +314,7 @@ local function register_biomes() }) -- Extreme Hills M + -- Just gravel. minetest.register_biome({ name = "ExtremeHillsM", node_top = "mcl_core:gravel", @@ -341,8 +343,8 @@ local function register_biomes() }) -- Extreme Hills+ - -- This biome is identical to Extreme Hills on the surface but has snow-covered mountains with spruce/oak - -- Forests above a certain height. + -- This biome is near-identical to Extreme Hills on the surface but has snow-covered mountains with spruce/oak + -- forests above a certain height. minetest.register_biome({ name = "ExtremeHills+", node_top = "mcl_core:dirt_with_grass", @@ -357,7 +359,7 @@ local function register_biomes() heat_point = 25, vertical_blend = 6, }) - ---- Sub-biome for Extreme Hills+ for those snow Forests + ---- Sub-biome for Extreme Hills+ for those snow forests minetest.register_biome({ name = "ExtremeHills+_snowtop", node_dust = "mcl_core:snow", @@ -388,7 +390,8 @@ local function register_biomes() }) -- Stone beach - -- Not really a beach in MCL2, only named so according to MC + -- Just stone. + -- Not neccessarily a beach at all, only named so according to MC minetest.register_biome({ name = "StoneBeach", node_riverbed = "mcl_core:sand", @@ -1352,7 +1355,11 @@ local function register_biome_ores() clust_size = 1, y_min = mcl_worlds.layer_to_y(4), y_max = mcl_worlds.layer_to_y(32), - biomes = { "ExtremeHills", "ExtremeHills_beach", "ExtremeHills_ocean" }, + biomes = { + "ExtremeHills", "ExtremeHills_beach", "ExtremeHills_ocean", "ExtremeHills_deep_ocean", "ExtremeHills_underground", + "ExtremeHills+", "ExtremeHills+_ocean", "ExtremeHills+_deep_ocean", "ExtremeHills+_underground", + "ExtremeHillsM", "ExtremeHillsM_ocean", "ExtremeHillsM_deep_ocean", "ExtremeHillsM_underground", + }, }) -- Rarely replace stone with stone monster eggs. @@ -1372,7 +1379,11 @@ local function register_biome_ores() clust_size = 2, y_min = mcl_vars.mg_overworld_min, y_max = mcl_worlds.layer_to_y(61), - biomes = { "ExtremeHills", "ExtremeHills_beach", "ExtremeHills_ocean" }, + biomes = { + "ExtremeHills", "ExtremeHills_beach", "ExtremeHills_ocean", "ExtremeHills_deep_ocean", "ExtremeHills_underground", + "ExtremeHills+", "ExtremeHills+_ocean", "ExtremeHills+_deep_ocean", "ExtremeHills+_underground", + "ExtremeHillsM", "ExtremeHillsM_ocean", "ExtremeHillsM_deep_ocean", "ExtremeHillsM_underground", + }, }) -- Bonus gold spawn in Mesa From 4ede0a1227d859145c82bc166c13afa2df5bed5c Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 12 Mar 2019 03:18:07 +0100 Subject: [PATCH 116/737] Fix underwater ice sheet in IcePlainsSpikes biome --- mods/MAPGEN/mcl_biomes/init.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/MAPGEN/mcl_biomes/init.lua b/mods/MAPGEN/mcl_biomes/init.lua index 409debc0..dee12faa 100644 --- a/mods/MAPGEN/mcl_biomes/init.lua +++ b/mods/MAPGEN/mcl_biomes/init.lua @@ -124,6 +124,8 @@ local function register_biomes() depth_top = 1, node_filler = "mcl_core:dirt", depth_filler = 2, + node_water_top = "mcl_core:ice", + depth_water_top = 1, node_river_water = "mcl_core:ice", node_riverbed = "mcl_core:sand", depth_riverbed = 2, @@ -138,8 +140,6 @@ local function register_biomes() depth_top = 2, node_filler = "mcl_core:dirt", depth_filler = 3, - node_water_top = "mcl_core:ice", - depth_water_top = 2, node_river_water = "mcl_core:ice", node_riverbed = "mcl_core:sand", depth_riverbed = 2, From b551b144d4c2646b5598303681afbcb7ce572da9 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 12 Mar 2019 13:33:11 +0100 Subject: [PATCH 117/737] Disable translator of mcl_achievements --- mods/HUD/mcl_achievements/init.lua | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/mods/HUD/mcl_achievements/init.lua b/mods/HUD/mcl_achievements/init.lua index cfeea18b..8b4e1c48 100644 --- a/mods/HUD/mcl_achievements/init.lua +++ b/mods/HUD/mcl_achievements/init.lua @@ -3,7 +3,9 @@ -- If true, activates achievements from other Minecraft editions (XBox, PS, etc.) local non_pc_achievements = false -local S = minetest.get_translator("mcl_achievements") +-- TODO: Enable translator when there's a translation +-- local S = minetest.get_translator("mcl_achievements") +local S = function(s) return s end -- Achievements from PC Edition From ac7a16eb96c31028179ba9302ed8aee0cfb610e0 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 12 Mar 2019 22:03:21 +0100 Subject: [PATCH 118/737] Update to latest version of craftguide --- mods/HELP/mcl_craftguide/.luacheckrc | 5 + mods/HELP/mcl_craftguide/API.md | 173 ++ mods/HELP/mcl_craftguide/LICENSE | 681 ------- mods/HELP/mcl_craftguide/README.md | 17 +- mods/HELP/mcl_craftguide/depends.txt | 2 + mods/HELP/mcl_craftguide/init.lua | 1559 +++++++++++------ mods/HELP/mcl_craftguide/license.txt | 58 + .../locale/mcl_craftguide.de.tr | 25 + .../locale/mcl_craftguide.fr.tr | 24 + .../locale/mcl_craftguide.ru.tr | 25 + mods/HELP/mcl_craftguide/locale/template | 25 + mods/HELP/mcl_craftguide/settingtypes.txt | 5 + .../textures/craftguide_clear_icon.png | Bin 0 -> 708 bytes .../textures/craftguide_next_icon.png | Bin 0 -> 727 bytes .../textures/craftguide_prev_icon.png | Bin 0 -> 728 bytes .../textures/craftguide_search_icon.png | Bin 0 -> 1908 bytes .../textures/craftguide_zoomin_icon.png | Bin 0 -> 3544 bytes .../textures/craftguide_zoomout_icon.png | Bin 0 -> 2948 bytes mods/HUD/mcl_inventory/depends.txt | 1 + mods/HUD/mcl_inventory/init.lua | 3 + 20 files changed, 1418 insertions(+), 1185 deletions(-) create mode 100644 mods/HELP/mcl_craftguide/API.md delete mode 100644 mods/HELP/mcl_craftguide/LICENSE create mode 100644 mods/HELP/mcl_craftguide/license.txt create mode 100644 mods/HELP/mcl_craftguide/locale/mcl_craftguide.de.tr create mode 100644 mods/HELP/mcl_craftguide/locale/mcl_craftguide.fr.tr create mode 100644 mods/HELP/mcl_craftguide/locale/mcl_craftguide.ru.tr create mode 100644 mods/HELP/mcl_craftguide/locale/template create mode 100644 mods/HELP/mcl_craftguide/settingtypes.txt create mode 100644 mods/HELP/mcl_craftguide/textures/craftguide_clear_icon.png create mode 100644 mods/HELP/mcl_craftguide/textures/craftguide_next_icon.png create mode 100644 mods/HELP/mcl_craftguide/textures/craftguide_prev_icon.png create mode 100644 mods/HELP/mcl_craftguide/textures/craftguide_search_icon.png create mode 100644 mods/HELP/mcl_craftguide/textures/craftguide_zoomin_icon.png create mode 100644 mods/HELP/mcl_craftguide/textures/craftguide_zoomout_icon.png diff --git a/mods/HELP/mcl_craftguide/.luacheckrc b/mods/HELP/mcl_craftguide/.luacheckrc index a21bce1f..5a495c7a 100644 --- a/mods/HELP/mcl_craftguide/.luacheckrc +++ b/mods/HELP/mcl_craftguide/.luacheckrc @@ -4,4 +4,9 @@ allow_defined_top = true read_globals = { "minetest", "default", + "sfinv", + "sfinv_buttons", + "vector", + "string", + "table", } diff --git a/mods/HELP/mcl_craftguide/API.md b/mods/HELP/mcl_craftguide/API.md new file mode 100644 index 00000000..e03a0e2b --- /dev/null +++ b/mods/HELP/mcl_craftguide/API.md @@ -0,0 +1,173 @@ +## API + +### Custom recipes + +#### Registering a custom crafting type (example) + +```Lua +craftguide.register_craft_type("digging", { + description = "Digging", + icon = "default_tool_steelpick.png", +}) +``` + +#### Registering a custom crafting recipe (example) + +```Lua +craftguide.register_craft({ + type = "digging", + width = 1, + output = "default:cobble 2", + items = {"default:stone"}, +}) +``` + +--- + +### Recipe filters + +Recipe filters can be used to filter the recipes shown to players. Progressive +mode is implemented as a recipe filter. + +#### `craftguide.add_recipe_filter(name, function(recipes, player))` + +Adds a recipe filter with the given name. The filter function should return the +recipes to be displayed, given the available recipes and an `ObjectRef` to the +user. Each recipe is a table of the form returned by +`minetest.get_craft_recipe`. + +Example function to hide recipes for items from a mod called "secretstuff": + +```lua +craftguide.add_recipe_filter("Hide secretstuff", function(recipes) + local filtered = {} + for _, recipe in ipairs(recipes) do + if recipe.output:sub(1,12) ~= "secretstuff:" then + filtered[#filtered + 1] = recipe + end + end + + return filtered +end) +``` + +#### `craftguide.remove_recipe_filter(name)` + +Removes the recipe filter with the given name. + +#### `craftguide.set_recipe_filter(name, function(recipe, player))` + +Removes all recipe filters and adds a new one. + +#### `craftguide.get_recipe_filters()` + +Returns a map of recipe filters, indexed by name. + +--- + +### Search filters + +Search filters are used to perform specific searches inside the search field. +They can be used like so: `+=,,<...>` + +Examples: + +- `+groups=cracky,crumbly`: search for groups `cracky` and `crumbly` in all items. +- `sand+groups=falling_node`: search for group `falling_node` for items which contain `sand` in their names. + +Notes: +- If `optional name` is omitted, the search filter will apply to all items, without pre-filtering. +- Filters can be combined. +- The `groups` filter is currently implemented by default. + +#### `craftguide.add_search_filter(name, function(item, values))` + +Adds a search filter with the given name. +The search function should return a boolean value (whether the given item should be listed or not). + +Example function to show items which contain at least a recipe of given width(s): + +```lua +craftguide.add_search_filter("widths", function(item, widths) + local has_width + local recipes = recipes_cache[item] + + if recipes then + for i = 1, #recipes do + local recipe_width = recipes[i].width + for j = 1, #widths do + local width = tonumber(widths[j]) + if width == recipe_width then + has_width = true + break + end + end + end + end + + return has_width +end) +``` + +#### `craftguide.remove_search_filter(name)` + +Removes the search filter with the given name. + +#### `craftguide.get_search_filters()` + +Returns a map of search filters, indexed by name. + +--- + +### Custom formspec elements + +#### `craftguide.add_formspec_element(name, def)` + +Adds a formspec element to the current formspec. +Supported types: `box`, `label`, `image`, `button`, `tooltip`, `item_image`, `image_button`, `item_image_button` + +Example: + +```lua +craftguide.add_formspec_element("export", { + type = "button", + element = function(data) + -- Should return a table of parameters according to the formspec element type. + -- Note: for all buttons, the 'name' parameter *must not* be specified! + if data.recipes then + return { + data.iX - 3.7, -- X + sfinv_only and 7.9 or 8, -- Y + 1.6, -- W + 1, -- H + ESC(S("Export")) -- label + } + end + end, + -- Optional. + action = function(player, data) + -- When the button is pressed. + print("Exported!") + end +}) +``` + +#### `craftguide.remove_formspec_element(name)` + +Removes the formspec element with the given name. + +#### `craftguide.get_formspec_elements()` + +Returns a map of formspec elements, indexed by name. + +--- + +### Miscellaneous + +#### `craftguide.show(player_name, item, show_usages)` + +Opens the Crafting Guide with the current filter applied. + + * `player_name`: string param. + * `item`: optional, string param. If set, this item is pre-selected. If the item does not exist or has no recipe, use the player's previous selection. By default, player's previous selection is used + * `show_usages`: optional, boolean param. If true, show item usages. diff --git a/mods/HELP/mcl_craftguide/LICENSE b/mods/HELP/mcl_craftguide/LICENSE deleted file mode 100644 index fedaf1ee..00000000 --- a/mods/HELP/mcl_craftguide/LICENSE +++ /dev/null @@ -1,681 +0,0 @@ -┌───────────────────────────────────────────────────────────────────┐ -│ Copyright (c) 2015-2017 kilbith │ -│ │ -│ Code: GPL version 3 │ -│ Textures: WTFPL (credits: Gambit) │ -└───────────────────────────────────────────────────────────────────┘ - - GNU GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The GNU General Public License is a free, copyleft license for -software and other kinds of works. - - The licenses for most software and other practical works are designed -to take away your freedom to share and change the works. By contrast, -the GNU General Public License is intended to guarantee your freedom to -share and change all versions of a program--to make sure it remains free -software for all its users. We, the Free Software Foundation, use the -GNU General Public License for most of our software; it applies also to -any other work released this way by its authors. You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -them if you wish), that you receive source code or can get it if you -want it, that you can change the software or use pieces of it in new -free programs, and that you know you can do these things. - - To protect your rights, we need to prevent others from denying you -these rights or asking you to surrender the rights. Therefore, you have -certain responsibilities if you distribute copies of the software, or if -you modify it: responsibilities to respect the freedom of others. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must pass on to the recipients the same -freedoms that you received. You must make sure that they, too, receive -or can get the source code. And you must show them these terms so they -know their rights. - - Developers that use the GNU GPL protect your rights with two steps: -(1) assert copyright on the software, and (2) offer you this License -giving you legal permission to copy, distribute and/or modify it. - - For the developers' and authors' protection, the GPL clearly explains -that there is no warranty for this free software. For both users' and -authors' sake, the GPL requires that modified versions be marked as -changed, so that their problems will not be attributed erroneously to -authors of previous versions. - - Some devices are designed to deny users access to install or run -modified versions of the software inside them, although the manufacturer -can do so. This is fundamentally incompatible with the aim of -protecting users' freedom to change the software. The systematic -pattern of such abuse occurs in the area of products for individuals to -use, which is precisely where it is most unacceptable. Therefore, we -have designed this version of the GPL to prohibit the practice for those -products. If such problems arise substantially in other domains, we -stand ready to extend this provision to those domains in future versions -of the GPL, as needed to protect the freedom of users. - - Finally, every program is threatened constantly by software patents. -States should not allow patents to restrict development and use of -software on general-purpose computers, but in those that do, we wish to -avoid the special danger that patents applied to a free program could -make it effectively proprietary. To prevent this, the GPL assures that -patents cannot be used to render the program non-free. - - The precise terms and conditions for copying, distribution and -modification follow. - - TERMS AND CONDITIONS - - 0. Definitions. - - "This License" refers to version 3 of the GNU General Public License. - - "Copyright" also means copyright-like laws that apply to other kinds of -works, such as semiconductor masks. - - "The Program" refers to any copyrightable work licensed under this -License. Each licensee is addressed as "you". "Licensees" and -"recipients" may be individuals or organizations. - - To "modify" a work means to copy from or adapt all or part of the work -in a fashion requiring copyright permission, other than the making of an -exact copy. The resulting work is called a "modified version" of the -earlier work or a work "based on" the earlier work. - - A "covered work" means either the unmodified Program or a work based -on the Program. - - To "propagate" a work means to do anything with it that, without -permission, would make you directly or secondarily liable for -infringement under applicable copyright law, except executing it on a -computer or modifying a private copy. Propagation includes copying, -distribution (with or without modification), making available to the -public, and in some countries other activities as well. - - To "convey" a work means any kind of propagation that enables other -parties to make or receive copies. Mere interaction with a user through -a computer network, with no transfer of a copy, is not conveying. - - An interactive user interface displays "Appropriate Legal Notices" -to the extent that it includes a convenient and prominently visible -feature that (1) displays an appropriate copyright notice, and (2) -tells the user that there is no warranty for the work (except to the -extent that warranties are provided), that licensees may convey the -work under this License, and how to view a copy of this License. If -the interface presents a list of user commands or options, such as a -menu, a prominent item in the list meets this criterion. - - 1. Source Code. - - The "source code" for a work means the preferred form of the work -for making modifications to it. "Object code" means any non-source -form of a work. - - A "Standard Interface" means an interface that either is an official -standard defined by a recognized standards body, or, in the case of -interfaces specified for a particular programming language, one that -is widely used among developers working in that language. - - The "System Libraries" of an executable work include anything, other -than the work as a whole, that (a) is included in the normal form of -packaging a Major Component, but which is not part of that Major -Component, and (b) serves only to enable use of the work with that -Major Component, or to implement a Standard Interface for which an -implementation is available to the public in source code form. A -"Major Component", in this context, means a major essential component -(kernel, window system, and so on) of the specific operating system -(if any) on which the executable work runs, or a compiler used to -produce the work, or an object code interpreter used to run it. - - The "Corresponding Source" for a work in object code form means all -the source code needed to generate, install, and (for an executable -work) run the object code and to modify the work, including scripts to -control those activities. However, it does not include the work's -System Libraries, or general-purpose tools or generally available free -programs which are used unmodified in performing those activities but -which are not part of the work. For example, Corresponding Source -includes interface definition files associated with source files for -the work, and the source code for shared libraries and dynamically -linked subprograms that the work is specifically designed to require, -such as by intimate data communication or control flow between those -subprograms and other parts of the work. - - The Corresponding Source need not include anything that users -can regenerate automatically from other parts of the Corresponding -Source. - - The Corresponding Source for a work in source code form is that -same work. - - 2. Basic Permissions. - - All rights granted under this License are granted for the term of -copyright on the Program, and are irrevocable provided the stated -conditions are met. This License explicitly affirms your unlimited -permission to run the unmodified Program. The output from running a -covered work is covered by this License only if the output, given its -content, constitutes a covered work. This License acknowledges your -rights of fair use or other equivalent, as provided by copyright law. - - You may make, run and propagate covered works that you do not -convey, without conditions so long as your license otherwise remains -in force. You may convey covered works to others for the sole purpose -of having them make modifications exclusively for you, or provide you -with facilities for running those works, provided that you comply with -the terms of this License in conveying all material for which you do -not control copyright. Those thus making or running the covered works -for you must do so exclusively on your behalf, under your direction -and control, on terms that prohibit them from making any copies of -your copyrighted material outside their relationship with you. - - Conveying under any other circumstances is permitted solely under -the conditions stated below. Sublicensing is not allowed; section 10 -makes it unnecessary. - - 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - - No covered work shall be deemed part of an effective technological -measure under any applicable law fulfilling obligations under article -11 of the WIPO copyright treaty adopted on 20 December 1996, or -similar laws prohibiting or restricting circumvention of such -measures. - - When you convey a covered work, you waive any legal power to forbid -circumvention of technological measures to the extent such circumvention -is effected by exercising rights under this License with respect to -the covered work, and you disclaim any intention to limit operation or -modification of the work as a means of enforcing, against the work's -users, your or third parties' legal rights to forbid circumvention of -technological measures. - - 4. Conveying Verbatim Copies. - - You may convey verbatim copies of the Program's source code as you -receive it, in any medium, provided that you conspicuously and -appropriately publish on each copy an appropriate copyright notice; -keep intact all notices stating that this License and any -non-permissive terms added in accord with section 7 apply to the code; -keep intact all notices of the absence of any warranty; and give all -recipients a copy of this License along with the Program. - - You may charge any price or no price for each copy that you convey, -and you may offer support or warranty protection for a fee. - - 5. Conveying Modified Source Versions. - - You may convey a work based on the Program, or the modifications to -produce it from the Program, in the form of source code under the -terms of section 4, provided that you also meet all of these conditions: - - a) The work must carry prominent notices stating that you modified - it, and giving a relevant date. - - b) The work must carry prominent notices stating that it is - released under this License and any conditions added under section - 7. This requirement modifies the requirement in section 4 to - "keep intact all notices". - - c) You must license the entire work, as a whole, under this - License to anyone who comes into possession of a copy. This - License will therefore apply, along with any applicable section 7 - additional terms, to the whole of the work, and all its parts, - regardless of how they are packaged. This License gives no - permission to license the work in any other way, but it does not - invalidate such permission if you have separately received it. - - d) If the work has interactive user interfaces, each must display - Appropriate Legal Notices; however, if the Program has interactive - interfaces that do not display Appropriate Legal Notices, your - work need not make them do so. - - A compilation of a covered work with other separate and independent -works, which are not by their nature extensions of the covered work, -and which are not combined with it such as to form a larger program, -in or on a volume of a storage or distribution medium, is called an -"aggregate" if the compilation and its resulting copyright are not -used to limit the access or legal rights of the compilation's users -beyond what the individual works permit. Inclusion of a covered work -in an aggregate does not cause this License to apply to the other -parts of the aggregate. - - 6. Conveying Non-Source Forms. - - You may convey a covered work in object code form under the terms -of sections 4 and 5, provided that you also convey the -machine-readable Corresponding Source under the terms of this License, -in one of these ways: - - a) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by the - Corresponding Source fixed on a durable physical medium - customarily used for software interchange. - - b) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by a - written offer, valid for at least three years and valid for as - long as you offer spare parts or customer support for that product - model, to give anyone who possesses the object code either (1) a - copy of the Corresponding Source for all the software in the - product that is covered by this License, on a durable physical - medium customarily used for software interchange, for a price no - more than your reasonable cost of physically performing this - conveying of source, or (2) access to copy the - Corresponding Source from a network server at no charge. - - c) Convey individual copies of the object code with a copy of the - written offer to provide the Corresponding Source. This - alternative is allowed only occasionally and noncommercially, and - only if you received the object code with such an offer, in accord - with subsection 6b. - - d) Convey the object code by offering access from a designated - place (gratis or for a charge), and offer equivalent access to the - Corresponding Source in the same way through the same place at no - further charge. You need not require recipients to copy the - Corresponding Source along with the object code. If the place to - copy the object code is a network server, the Corresponding Source - may be on a different server (operated by you or a third party) - that supports equivalent copying facilities, provided you maintain - clear directions next to the object code saying where to find the - Corresponding Source. Regardless of what server hosts the - Corresponding Source, you remain obligated to ensure that it is - available for as long as needed to satisfy these requirements. - - e) Convey the object code using peer-to-peer transmission, provided - you inform other peers where the object code and Corresponding - Source of the work are being offered to the general public at no - charge under subsection 6d. - - A separable portion of the object code, whose source code is excluded -from the Corresponding Source as a System Library, need not be -included in conveying the object code work. - - A "User Product" is either (1) a "consumer product", which means any -tangible personal property which is normally used for personal, family, -or household purposes, or (2) anything designed or sold for incorporation -into a dwelling. In determining whether a product is a consumer product, -doubtful cases shall be resolved in favor of coverage. For a particular -product received by a particular user, "normally used" refers to a -typical or common use of that class of product, regardless of the status -of the particular user or of the way in which the particular user -actually uses, or expects or is expected to use, the product. A product -is a consumer product regardless of whether the product has substantial -commercial, industrial or non-consumer uses, unless such uses represent -the only significant mode of use of the product. - - "Installation Information" for a User Product means any methods, -procedures, authorization keys, or other information required to install -and execute modified versions of a covered work in that User Product from -a modified version of its Corresponding Source. The information must -suffice to ensure that the continued functioning of the modified object -code is in no case prevented or interfered with solely because -modification has been made. - - If you convey an object code work under this section in, or with, or -specifically for use in, a User Product, and the conveying occurs as -part of a transaction in which the right of possession and use of the -User Product is transferred to the recipient in perpetuity or for a -fixed term (regardless of how the transaction is characterized), the -Corresponding Source conveyed under this section must be accompanied -by the Installation Information. But this requirement does not apply -if neither you nor any third party retains the ability to install -modified object code on the User Product (for example, the work has -been installed in ROM). - - The requirement to provide Installation Information does not include a -requirement to continue to provide support service, warranty, or updates -for a work that has been modified or installed by the recipient, or for -the User Product in which it has been modified or installed. Access to a -network may be denied when the modification itself materially and -adversely affects the operation of the network or violates the rules and -protocols for communication across the network. - - Corresponding Source conveyed, and Installation Information provided, -in accord with this section must be in a format that is publicly -documented (and with an implementation available to the public in -source code form), and must require no special password or key for -unpacking, reading or copying. - - 7. Additional Terms. - - "Additional permissions" are terms that supplement the terms of this -License by making exceptions from one or more of its conditions. -Additional permissions that are applicable to the entire Program shall -be treated as though they were included in this License, to the extent -that they are valid under applicable law. If additional permissions -apply only to part of the Program, that part may be used separately -under those permissions, but the entire Program remains governed by -this License without regard to the additional permissions. - - When you convey a copy of a covered work, you may at your option -remove any additional permissions from that copy, or from any part of -it. (Additional permissions may be written to require their own -removal in certain cases when you modify the work.) You may place -additional permissions on material, added by you to a covered work, -for which you have or can give appropriate copyright permission. - - Notwithstanding any other provision of this License, for material you -add to a covered work, you may (if authorized by the copyright holders of -that material) supplement the terms of this License with terms: - - a) Disclaiming warranty or limiting liability differently from the - terms of sections 15 and 16 of this License; or - - b) Requiring preservation of specified reasonable legal notices or - author attributions in that material or in the Appropriate Legal - Notices displayed by works containing it; or - - c) Prohibiting misrepresentation of the origin of that material, or - requiring that modified versions of such material be marked in - reasonable ways as different from the original version; or - - d) Limiting the use for publicity purposes of names of licensors or - authors of the material; or - - e) Declining to grant rights under trademark law for use of some - trade names, trademarks, or service marks; or - - f) Requiring indemnification of licensors and authors of that - material by anyone who conveys the material (or modified versions of - it) with contractual assumptions of liability to the recipient, for - any liability that these contractual assumptions directly impose on - those licensors and authors. - - All other non-permissive additional terms are considered "further -restrictions" within the meaning of section 10. If the Program as you -received it, or any part of it, contains a notice stating that it is -governed by this License along with a term that is a further -restriction, you may remove that term. If a license document contains -a further restriction but permits relicensing or conveying under this -License, you may add to a covered work material governed by the terms -of that license document, provided that the further restriction does -not survive such relicensing or conveying. - - If you add terms to a covered work in accord with this section, you -must place, in the relevant source files, a statement of the -additional terms that apply to those files, or a notice indicating -where to find the applicable terms. - - Additional terms, permissive or non-permissive, may be stated in the -form of a separately written license, or stated as exceptions; -the above requirements apply either way. - - 8. Termination. - - You may not propagate or modify a covered work except as expressly -provided under this License. Any attempt otherwise to propagate or -modify it is void, and will automatically terminate your rights under -this License (including any patent licenses granted under the third -paragraph of section 11). - - However, if you cease all violation of this License, then your -license from a particular copyright holder is reinstated (a) -provisionally, unless and until the copyright holder explicitly and -finally terminates your license, and (b) permanently, if the copyright -holder fails to notify you of the violation by some reasonable means -prior to 60 days after the cessation. - - Moreover, your license from a particular copyright holder is -reinstated permanently if the copyright holder notifies you of the -violation by some reasonable means, this is the first time you have -received notice of violation of this License (for any work) from that -copyright holder, and you cure the violation prior to 30 days after -your receipt of the notice. - - Termination of your rights under this section does not terminate the -licenses of parties who have received copies or rights from you under -this License. If your rights have been terminated and not permanently -reinstated, you do not qualify to receive new licenses for the same -material under section 10. - - 9. Acceptance Not Required for Having Copies. - - You are not required to accept this License in order to receive or -run a copy of the Program. Ancillary propagation of a covered work -occurring solely as a consequence of using peer-to-peer transmission -to receive a copy likewise does not require acceptance. However, -nothing other than this License grants you permission to propagate or -modify any covered work. These actions infringe copyright if you do -not accept this License. Therefore, by modifying or propagating a -covered work, you indicate your acceptance of this License to do so. - - 10. Automatic Licensing of Downstream Recipients. - - Each time you convey a covered work, the recipient automatically -receives a license from the original licensors, to run, modify and -propagate that work, subject to this License. You are not responsible -for enforcing compliance by third parties with this License. - - An "entity transaction" is a transaction transferring control of an -organization, or substantially all assets of one, or subdividing an -organization, or merging organizations. If propagation of a covered -work results from an entity transaction, each party to that -transaction who receives a copy of the work also receives whatever -licenses to the work the party's predecessor in interest had or could -give under the previous paragraph, plus a right to possession of the -Corresponding Source of the work from the predecessor in interest, if -the predecessor has it or can get it with reasonable efforts. - - You may not impose any further restrictions on the exercise of the -rights granted or affirmed under this License. For example, you may -not impose a license fee, royalty, or other charge for exercise of -rights granted under this License, and you may not initiate litigation -(including a cross-claim or counterclaim in a lawsuit) alleging that -any patent claim is infringed by making, using, selling, offering for -sale, or importing the Program or any portion of it. - - 11. Patents. - - A "contributor" is a copyright holder who authorizes use under this -License of the Program or a work on which the Program is based. The -work thus licensed is called the contributor's "contributor version". - - A contributor's "essential patent claims" are all patent claims -owned or controlled by the contributor, whether already acquired or -hereafter acquired, that would be infringed by some manner, permitted -by this License, of making, using, or selling its contributor version, -but do not include claims that would be infringed only as a -consequence of further modification of the contributor version. For -purposes of this definition, "control" includes the right to grant -patent sublicenses in a manner consistent with the requirements of -this License. - - Each contributor grants you a non-exclusive, worldwide, royalty-free -patent license under the contributor's essential patent claims, to -make, use, sell, offer for sale, import and otherwise run, modify and -propagate the contents of its contributor version. - - In the following three paragraphs, a "patent license" is any express -agreement or commitment, however denominated, not to enforce a patent -(such as an express permission to practice a patent or covenant not to -sue for patent infringement). To "grant" such a patent license to a -party means to make such an agreement or commitment not to enforce a -patent against the party. - - If you convey a covered work, knowingly relying on a patent license, -and the Corresponding Source of the work is not available for anyone -to copy, free of charge and under the terms of this License, through a -publicly available network server or other readily accessible means, -then you must either (1) cause the Corresponding Source to be so -available, or (2) arrange to deprive yourself of the benefit of the -patent license for this particular work, or (3) arrange, in a manner -consistent with the requirements of this License, to extend the patent -license to downstream recipients. "Knowingly relying" means you have -actual knowledge that, but for the patent license, your conveying the -covered work in a country, or your recipient's use of the covered work -in a country, would infringe one or more identifiable patents in that -country that you have reason to believe are valid. - - If, pursuant to or in connection with a single transaction or -arrangement, you convey, or propagate by procuring conveyance of, a -covered work, and grant a patent license to some of the parties -receiving the covered work authorizing them to use, propagate, modify -or convey a specific copy of the covered work, then the patent license -you grant is automatically extended to all recipients of the covered -work and works based on it. - - A patent license is "discriminatory" if it does not include within -the scope of its coverage, prohibits the exercise of, or is -conditioned on the non-exercise of one or more of the rights that are -specifically granted under this License. You may not convey a covered -work if you are a party to an arrangement with a third party that is -in the business of distributing software, under which you make payment -to the third party based on the extent of your activity of conveying -the work, and under which the third party grants, to any of the -parties who would receive the covered work from you, a discriminatory -patent license (a) in connection with copies of the covered work -conveyed by you (or copies made from those copies), or (b) primarily -for and in connection with specific products or compilations that -contain the covered work, unless you entered into that arrangement, -or that patent license was granted, prior to 28 March 2007. - - Nothing in this License shall be construed as excluding or limiting -any implied license or other defenses to infringement that may -otherwise be available to you under applicable patent law. - - 12. No Surrender of Others' Freedom. - - If conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot convey a -covered work so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you may -not convey it at all. For example, if you agree to terms that obligate you -to collect a royalty for further conveying from those to whom you convey -the Program, the only way you could satisfy both those terms and this -License would be to refrain entirely from conveying the Program. - - 13. Use with the GNU Affero General Public License. - - Notwithstanding any other provision of this License, you have -permission to link or combine any covered work with a work licensed -under version 3 of the GNU Affero General Public License into a single -combined work, and to convey the resulting work. The terms of this -License will continue to apply to the part which is the covered work, -but the special requirements of the GNU Affero General Public License, -section 13, concerning interaction through a network will apply to the -combination as such. - - 14. Revised Versions of this License. - - The Free Software Foundation may publish revised and/or new versions of -the GNU General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - - Each version is given a distinguishing version number. If the -Program specifies that a certain numbered version of the GNU General -Public License "or any later version" applies to it, you have the -option of following the terms and conditions either of that numbered -version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of the -GNU General Public License, you may choose any version ever published -by the Free Software Foundation. - - If the Program specifies that a proxy can decide which future -versions of the GNU General Public License can be used, that proxy's -public statement of acceptance of a version permanently authorizes you -to choose that version for the Program. - - Later license versions may give you additional or different -permissions. However, no additional obligations are imposed on any -author or copyright holder as a result of your choosing to follow a -later version. - - 15. Disclaimer of Warranty. - - THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY -APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT -HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY -OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM -IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF -ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. Limitation of Liability. - - IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS -THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY -GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE -USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF -DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD -PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF -SUCH DAMAGES. - - 17. Interpretation of Sections 15 and 16. - - If the disclaimer of warranty and limitation of liability provided -above cannot be given local legal effect according to their terms, -reviewing courts shall apply local law that most closely approximates -an absolute waiver of all civil liability in connection with the -Program, unless a warranty or assumption of liability accompanies a -copy of the Program in return for a fee. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -state the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - {one line to give the program's name and a brief idea of what it does.} - Copyright (C) {year} {name of author} - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. - - If the program does terminal interaction, make it output a short -notice like this when it starts in an interactive mode: - - {project} Copyright (C) {year} {fullname} - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, your program's commands -might be different; for a GUI interface, you would use an "about box". - - You should also get your employer (if you work as a programmer) or school, -if any, to sign a "copyright disclaimer" for the program, if necessary. -For more information on this, and how to apply and follow the GNU GPL, see -. - - The GNU General Public License does not permit incorporating your program -into proprietary programs. If your program is a subroutine library, you -may consider it more useful to permit linking proprietary applications with -the library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. But first, please read -. diff --git a/mods/HELP/mcl_craftguide/README.md b/mods/HELP/mcl_craftguide/README.md index c3b1a158..f02ad346 100644 --- a/mods/HELP/mcl_craftguide/README.md +++ b/mods/HELP/mcl_craftguide/README.md @@ -1,14 +1,11 @@ -## ![Preview1](http://i.imgur.com/fIPNYkb.png) Crafting Guide ## +# Crafting Guide (MineClone 2 edition) -#### A Crafting Guide for Minetest that doesn't suck. #### +#### `mcl_craftguide` is based on, `craftguide` the most comprehensive crafting guide on Minetest. +#### Consult the [Minetest Wiki](http://wiki.minetest.net/Crafting_guide) for more details. -#### `craftguide` is simply the most comprehensive mod of his category, with the cleanest code. #### -#### Consult the [Minetest Wiki](http://wiki.minetest.net/Crafting_guide) for more details and comparisons. #### +This crafting guide can be accessed from the invenotory menu (book icon). -#### This crafting guide is usable with a blue book named *"Crafting Guide"*. #### +Crafting guide starts out empty and will be filled with more recipes whenever you hold on +to a new items that you can use to new recipes. -#### This crafting guide features two modes : Standard and Progressive. #### -The Progressive mode is a Terraria-like system that only shows recipes you can craft from items in inventory. -The progressive mode can be enabled with `craftguide_progressive_mode = true` in `minetest.conf`. - -![Preview2](http://i.imgur.com/3q7rVSo.png) +For developers, there's a modding API (see `API.md`). diff --git a/mods/HELP/mcl_craftguide/depends.txt b/mods/HELP/mcl_craftguide/depends.txt index de1a2085..5bff1157 100644 --- a/mods/HELP/mcl_craftguide/depends.txt +++ b/mods/HELP/mcl_craftguide/depends.txt @@ -2,3 +2,5 @@ mcl_core mcl_compass mcl_clock doc +sfinv? +sfinv_buttons? diff --git a/mods/HELP/mcl_craftguide/init.lua b/mods/HELP/mcl_craftguide/init.lua index 144a9e8c..28cae912 100644 --- a/mods/HELP/mcl_craftguide/init.lua +++ b/mods/HELP/mcl_craftguide/init.lua @@ -1,50 +1,57 @@ mcl_craftguide = {} -local craftguide, datas, mt = {}, {}, minetest --- Progressive Mode: --- true: Only show recipes which include at least one of the items the player posesses --- false: Show all crafting recipes -local progressive_mode = false -if mt.settings:get_bool("craftguide_progressive_mode") == true then - progressive_mode = true -end -local get_recipe = mt.get_craft_recipe -local get_result, show_formspec = mt.get_craft_result, mt.show_formspec -local reg_items = mt.registered_items +local M = minetest +local player_data = {} -local get_recipes = function(query_item) - local recipes = mt.get_all_craft_recipes(query_item) +-- Caches +local init_items = {} +local searches = {} +local recipes_cache = {} +local usages_cache = {} +local fuel_cache = {} - -- Manually add repairing recipes (workaround, because get_all_craft_recipes - -- doesn't return repairing recipes) - if minetest.get_modpath("mcl_core") then - local def = minetest.registered_items[query_item] - if not def then - return - end - if def.type == "tool" then - if recipes == nil then - recipes = {} - end - if minetest.get_item_group(query_item, "disable_repair") ~= 1 then - table.insert(recipes, { - type = "normal", - width = 0, - items = { [1] = query_item, [2] = query_item }, - output = query_item, - -- Special marker for repairing recipes - _is_toolrepair = true, - }) - end - end - end - return recipes -end +local progressive_mode = M.settings:get_bool("craftguide_progressive_mode") and rawget(_G, "sfinv") +local sfinv_only = M.settings:get_bool("craftguide_sfinv_only") and rawget(_G, "sfinv") + +local colorize = M.colorize +local reg_items = M.registered_items +local get_result = M.get_craft_result +local show_formspec = M.show_formspec +local get_player_by_name = M.get_player_by_name +local serialize, deserialize = M.serialize, M.deserialize + +local ESC = M.formspec_escape +local S = M.get_translator("mcl_craftguide") + +local maxn, sort, concat, insert, copy = + table.maxn, table.sort, table.concat, table.insert, + table.copy + +local fmt, find, gmatch, match, sub, split, lower = + string.format, string.find, string.gmatch, string.match, + string.sub, string.split, string.lower --- Lua 5.3 removed `table.maxn`, use this alternative in case of breakage: --- https://github.com/kilbith/xdecor/blob/master/handlers/helpers.lua#L1 -local remove, maxn, sort = table.remove, table.maxn, table.sort local min, max, floor, ceil = math.min, math.max, math.floor, math.ceil +local pairs, next, unpack = pairs, next, unpack +local vec_add, vec_mul = vector.add, vector.multiply + +local DEFAULT_SIZE = 10 +local MIN_LIMIT, MAX_LIMIT = 10, 12 +DEFAULT_SIZE = min(MAX_LIMIT, max(MIN_LIMIT, DEFAULT_SIZE)) + +local GRID_LIMIT = 5 +local POLL_FREQ = 0.25 + +local FMT = { + box = "box[%f,%f;%f,%f;%s]", + label = "label[%f,%f;%s]", + image = "image[%f,%f;%f,%f;%s]", + button = "button[%f,%f;%f,%f;%s;%s]", + tooltip = "tooltip[%s;%s]", + item_image = "item_image[%f,%f;%f,%f;%s]", + image_button = "image_button[%f,%f;%f,%f;%s;%s;%s]", + item_image_button = "item_image_button[%f,%f;%f,%f;%s;%s;%s]", +} local group_stereotypes = { wool = "mcl_wool:white", @@ -67,544 +74,1108 @@ local group_stereotypes = { clock = mcl_clock.sterotype, } -local group_names = { - shulker_box = "Any shulker box", - wool = "Any wool", - wood = "Any wood planks", - tree = "Any wood", - sand = "Any sand", - normal_sandstone = "Any normal sandstone", - red_sandstone = "Any red sandstone", - carpet = "Any carpet", - dye = "Any dye", - water_bucket = "Any water bucket", - flower = "Any flower", - mushroom = "Any mushroom", - wood_slab = "Any wooden slab", - wood_stairs = "Any wooden stairs", - coal = "Any coal", - quartz_block = "Any kind of quartz block", - purpur_block = "Any kind of purpur block", - stonebrick = "Any stone bricks", +local item_lists = { + "main", + "craft", + "craftpreview", } -function craftguide:group_to_item(item) - if item:sub(1,6) == "group:" then - local itemsub = item:sub(7) - if group_stereotypes[itemsub] then - item = group_stereotypes[itemsub] - elseif reg_items["mcl_core:"..itemsub] then - item = item:gsub("group:", "mcl_core:") - else - for name, def in pairs(reg_items) do - if def.groups[item:match("[^,:]+$")] then - item = name - end - end +local function table_merge(t, t2) + t, t2 = t or {}, t2 or {} + local c = #t + + for i = 1, #t2 do + c = c + 1 + t[c] = t2[i] + end + + return t +end + +local function table_replace(t, val, new) + for k, v in pairs(t) do + if v == val then + t[k] = new end end - return item:sub(1,6) == "group:" and "" or item +end + +local function table_diff(t, t2) + local hash = {} + + for i = 1, #t do + local v = t[i] + hash[v] = true + end + + for i = 1, #t2 do + local v = t2[i] + hash[v] = nil + end + + local diff, c = {}, 0 + + for i = 1, #t do + local v = t[i] + if hash[v] then + c = c + 1 + diff[c] = v + end + end + + return diff +end + +local function __func() + return debug.getinfo(2, "n").name +end + +local custom_crafts, craft_types = {}, {} + +function mcl_craftguide.register_craft_type(name, def) + local func = "mcl_craftguide." .. __func() .. "(): " + assert(name, func .. "'name' field missing") + assert(def.description, func .. "'description' field missing") + assert(def.icon, func .. "'icon' field missing") + + craft_types[name] = def +end + +function mcl_craftguide.register_craft(def) + local func = "mcl_craftguide." .. __func() .. "(): " + assert(def.type, func .. "'type' field missing") + assert(def.width, func .. "'width' field missing") + assert(def.output, func .. "'output' field missing") + assert(def.items, func .. "'items' field missing") + + custom_crafts[#custom_crafts + 1] = def +end + +local recipe_filters = {} + +function mcl_craftguide.add_recipe_filter(name, f) + local func = "mcl_craftguide." .. __func() .. "(): " + assert(name, func .. "filter name missing") + assert(f and type(f) == "function", func .. "filter function missing") + + recipe_filters[name] = f +end + +function mcl_craftguide.remove_recipe_filter(name) + recipe_filters[name] = nil +end + +function mcl_craftguide.set_recipe_filter(name, f) + local func = "mcl_craftguide." .. __func() .. "(): " + assert(name, func .. "filter name missing") + assert(f and type(f) == "function", func .. "filter function missing") + + recipe_filters = {[name] = f} +end + +function mcl_craftguide.get_recipe_filters() + return recipe_filters +end + +local function apply_recipe_filters(recipes, player) + for _, filter in pairs(recipe_filters) do + recipes = filter(recipes, player) + end + + return recipes +end + +local search_filters = {} + +function mcl_craftguide.add_search_filter(name, f) + local func = "mcl_craftguide." .. __func() .. "(): " + assert(name, func .. "filter name missing") + assert(f and type(f) == "function", func .. "filter function missing") + + search_filters[name] = f +end + +function mcl_craftguide.remove_search_filter(name) + search_filters[name] = nil +end + +function mcl_craftguide.get_search_filters() + return search_filters +end + +local formspec_elements = {} + +function mcl_craftguide.add_formspec_element(name, def) + local func = "mcl_craftguide." .. __func() .. "(): " + assert(def.element, func .. "'element' field not defined") + assert(def.type, func .. "'type' field not defined") + assert(FMT[def.type], func .. "'" .. def.type .. "' type not supported by the API") + + formspec_elements[name] = { + type = def.type, + element = def.element, + action = def.action, + } +end + +function mcl_craftguide.remove_formspec_element(name) + formspec_elements[name] = nil +end + +function mcl_craftguide.get_formspec_elements() + return formspec_elements +end + +local function item_has_groups(item_groups, groups) + for i = 1, #groups do + local group = groups[i] + if not item_groups[group] then + return + end + end + + return true end local function extract_groups(str) - if str:sub(1,6) ~= "group:" then return end - return str:sub(7):split(",") + return split(sub(str, 7), ",") end -local function colorize(str) - -- If client <= 0.4.14, don't colorize for compatibility. - return mt.colorize and mt.colorize("#FFFF00", str) or str -end - -local function get_fueltime(item) - return get_result({method="fuel", width=1, items={item}}).time -end - -function craftguide:get_tooltip(item, recipe_type, cooktime, groups) - local raw = self:get_tooltip_raw(item, recipe_type, cooktime, groups) - if raw == "" then - return raw - else - local tooltip = "tooltip["..item..";" - tooltip = tooltip .. raw - tooltip = tooltip .. "]" - return tooltip - end -end - -function craftguide:get_tooltip_raw(item, recipe_type, cooktime, groups) - local tooltip, item_desc = "", "" - local fueltime = get_fueltime(item) - local has_extras = groups or recipe_type == "cooking" or fueltime > 0 - - if reg_items[item] then - if not groups then - item_desc = reg_items[item].description +local function item_in_recipe(item, recipe) + for _, recipe_item in pairs(recipe.items) do + if recipe_item == item then + return true end - else - return tooltip.."Unknown Item ("..item..")]" end +end + +local function groups_item_in_recipe(item, recipe) + local item_groups = reg_items[item].groups + for _, recipe_item in pairs(recipe.items) do + if sub(recipe_item, 1, 6) == "group:" then + local groups = extract_groups(recipe_item) + if item_has_groups(item_groups, groups) then + local usage = copy(recipe) + table_replace(usage.items, recipe_item, item) + return usage + end + end + end +end + +local function get_item_usages(item) + local usages, c = {}, 0 + + for _, recipes in pairs(recipes_cache) do + for i = 1, #recipes do + local recipe = recipes[i] + if item_in_recipe(item, recipe) then + c = c + 1 + usages[c] = recipe + else + recipe = groups_item_in_recipe(item, recipe) + if recipe then + c = c + 1 + usages[c] = recipe + end + end + end + end + + if fuel_cache[item] then + usages[#usages + 1] = {type = "fuel", width = 1, items = {item}} + end + + return usages +end + +local function get_filtered_items(player) + local items, c = {}, 0 + + for i = 1, #init_items do + local item = init_items[i] + local recipes = recipes_cache[item] + local usages = usages_cache[item] + + if recipes and #apply_recipe_filters(recipes, player) > 0 or + usages and #apply_recipe_filters(usages, player) > 0 then + c = c + 1 + items[c] = item + end + end + + return items +end + +local function cache_recipes(output) + local recipes = M.get_all_craft_recipes(output) or {} + local c = 0 + + for i = 1, #custom_crafts do + local custom_craft = custom_crafts[i] + if match(custom_craft.output, "%S*") == output then + c = c + 1 + recipes[c] = custom_craft + end + end + + if #recipes > 0 then + recipes_cache[output] = recipes + return true + end +end + +local function get_recipes(item, data, player) + local recipes = recipes_cache[item] + local usages = usages_cache[item] + + if recipes then + recipes = apply_recipe_filters(recipes, player) + end + + local no_recipes = not recipes or #recipes == 0 + if no_recipes and not usages then + return + elseif usages and no_recipes then + data.show_usages = true + end + + if data.show_usages then + recipes = apply_recipe_filters(usages_cache[item], player) + if #recipes == 0 then + return + end + end + + return recipes +end + +local function get_burntime(item) + return get_result({method = "fuel", width = 1, items = {item}}).time +end + +local function cache_fuel(item) + local burntime = get_burntime(item) + if burntime > 0 then + fuel_cache[item] = burntime + return true + end +end + +local function groups_to_item(groups) + if #groups == 1 then + local group = groups[1] + local def_gr = "default:" .. group + + if group_stereotypes[group] then + return group_stereotypes[group] + elseif reg_items[def_gr] then + return def_gr + end + end + + for name, def in pairs(reg_items) do + if item_has_groups(def.groups, groups) then + return name + end + end + + return "" +end + +local function get_tooltip(item, groups, cooktime, burntime) + local tooltip + if groups then - local gcol = "#FFAAFF" - local groupstr - if #groups == 1 then - local g = group_names[groups[1]] - -- Treat the groups “compass” and “clock” as fake groups - -- and just print the normal group name without special formatting - if groups[1] == "compass" or groups[1] == "clock" then - gcol = "" - groupstr = reg_items[item].description - elseif group_names[groups[1]] then - -- Use the special group name string - groupstr = group_names[groups[1]] - else - --[[ Fallback: Generic group explanation: This always - works, but the internally used group name (which - looks ugly) is exposed to the user. ]] - groupstr = "Any item belonging to the " .. groups[1] .. " group" - end - else - groupstr = "Any item belonging to the following groups: " - for i=1, #groups do - groupstr = groupstr .. groups[i].. - (groups[i+1] and " and " or "") - end + local groupstr, c = {}, 0 + + for i = 1, #groups do + c = c + 1 + groupstr[c] = colorize("yellow", groups[i]) end - tooltip = tooltip..core.colorize(gcol, groupstr) - end - tooltip = tooltip .. item_desc - if recipe_type == "cooking" then - tooltip = tooltip.."\nCooking time: ".. - colorize(cooktime) - end - if fueltime > 0 and not groups then - tooltip = tooltip.."\nBurning time: ".. - colorize(fueltime) - end - return tooltip -end - -function craftguide:get_recipe(iY, xoffset, tooltip_raw, item, recipe_num, recipes) - local formspec, recipes_total = "", #recipes - if recipes_total > 1 then - formspec = formspec.. - "button[0,"..(iY+3)..";2,1;alternate;Alternate]".. - "label[0,"..(iY+2)..".5;Recipe ".. - recipe_num.." of "..recipes_total.."]" - end - local recipe_type = recipes[recipe_num].type - - local items = recipes[recipe_num].items - local width = recipes[recipe_num].width - local output = recipes[recipe_num].output - local cooking_time = 10 - local is_shapeless = false - if recipe_type == "normal" and width == 0 then - is_shapeless = true - if #items <= 4 then - width = 2 - else - width = min(3, #items) - end - end - - --[[ Recipe type symbols ]] - - -- Cooking (furnace) - if recipe_type == "cooking" then - cooking_time = width - width = 1 - formspec = formspec.. - "image["..(xoffset-0.8)..","..(iY+1).. - ".5;0.5,0.5;default_furnace_front_active.png]" - -- Shapeless recipes (intertwined arrows) - elseif is_shapeless then - formspec = formspec.. - "image["..(xoffset-0.8)..","..(iY+1).. - ".5;0.5,0.5;craftguide_shapeless.png]" - end - - -- Recipe only available in v6 (“v6” icon) - -- TODO/FIXME: This only works for the unique red sand recipe. - -- Remove this when red sand becomes regularily available. - local v6_only_recipe = false - if output == "mcl_core:redsand 8" and - width == 3 and - items[1] == "mcl_core:sand" and - items[2] == "mcl_core:sand" and - items[3] == "mcl_core:sand" and - items[4] == "mcl_core:sand" and - items[5] == "mcl_nether:nether_wart_item" and - items[6] == "mcl_core:sand" and - items[7] == "mcl_core:sand" and - items[8] == "mcl_core:sand" and - items[9] == "mcl_core:sand" then - v6_only_recipe = true - end - - if v6_only_recipe then - formspec = formspec.. - "image["..(xoffset-0.8)..","..(iY+2.75).. - ".5;0.5,0.5;mcl_craftguide_v6.png]" - end - - -- Render slots - - local rows = ceil(maxn(items) / width) - local btn_size, craftgrid_limit = 1, 5 - - if recipe_type == "normal" and - width > craftgrid_limit or rows > craftgrid_limit then - formspec = formspec.. - "label["..xoffset..","..(iY+2).. - ";Recipe is too big to\nbe displayed (".. - width.."x"..rows..")]" + groupstr = concat(groupstr, ", ") + tooltip = S("Any item belonging to the group(s): @1", groupstr) else - for i, v in pairs(items) do - local X = (i-1) % width + xoffset - 4 + (3 - max(1, width)) - local Y = ceil(i / width + iY+2 - min(2, rows)) - - if recipe_type == "normal" and - width > 3 or rows > 3 then - btn_size = width > 3 and 3 / width or 3 / rows - X = btn_size * (i % width) + xoffset - 4 + (3 - max(1, width)) - - Y = btn_size * floor((i-1) / width) + iY+3 - - min(2, rows) - end - - local groups = extract_groups(v) - local label = "" - -- Add the “G” symbols for group item slots - if groups then - --[[ Exception: Groups “compass” and “clock” since the items in these groups should - be treated as a single item from the user perspective. ]] - if not (#groups == 1 and (groups[1] == "compass" or groups[1] == "clock")) then - label = "\nG" or "" - end - end - local item_r = self:group_to_item(v) - local tltip = self:get_tooltip( - item_r, recipe_type, cooking_time, groups) - - formspec = formspec.. - "item_image_button["..X..","..Y..";".. - btn_size..","..btn_size..";"..item_r.. - ";"..item_r..";"..label.."]"..tltip - end + tooltip = reg_items[item].description end - local label = "" - if recipes[recipe_num]._is_toolrepair then - tooltip_raw = tooltip_raw .. "\n" .. core.colorize("#00FF00", string.format("Repaired by %.0f%%", (mcl_core.repair*100))) - label = "\nR" + + if cooktime then + tooltip = tooltip .. "\n" .. + S("Cooking time: @1", colorize("yellow", cooktime)) end - return formspec.. - "image["..(xoffset-1)..","..(iY+2).. - ".12;0.9,0.7;craftguide_arrow.png]".. - "item_image_button["..(xoffset)..","..(iY+2)..";1,1;".. - output..";"..item.."_out"..";"..label.."]".."tooltip["..item.."_out"..";"..minetest.formspec_escape(tooltip_raw).."]" + + if burntime then + tooltip = tooltip .. "\n" .. + S("Burning time: @1", colorize("yellow", burntime)) + end + + return fmt(FMT.tooltip, item, ESC(tooltip)) end -function craftguide:get_formspec(player_name, is_fuel) - local data = datas[player_name] - local iY = data.iX - 5 +local function get_recipe_fs(data, iY) + local fs = {} + local recipe = data.recipes[data.rnum] + local width = recipe.width + local xoffset = data.iX / 2.15 + local cooktime, shapeless + + if recipe.type == "cooking" then + cooktime, width = width, 1 + elseif width == 0 then + shapeless = true + width = min(3, #recipe.items) + end + + local rows = ceil(maxn(recipe.items) / width) + local rightest, btn_size, s_btn_size = 0, 1.1 + + local btn_lab = data.show_usages and + ESC(S("Usage @1 of @2", data.rnum, #data.recipes)) or + ESC(S("Recipe @1 of @2", data.rnum, #data.recipes)) + + fs[#fs + 1] = fmt(FMT.button, + sfinv_only and 5.8 or data.iX - 2.6, + sfinv_only and 7.9 or iY + 3.3, + 2.2, + 1, + "alternate", + btn_lab) + + if width > GRID_LIMIT or rows > GRID_LIMIT then + fs[#fs + 1] = fmt(FMT.label, + (data.iX / 2) - 2, + iY + 2.2, + ESC(S("Recipe is too big to be displayed (@1x@2)", width, rows))) + + return concat(fs) + end + + for i, item in pairs(recipe.items) do + local X = ceil((i - 1) % width + xoffset - width) - + (sfinv_only and 0 or 0.2) + local Y = ceil(i / width + (iY + 2) - min(2, rows)) + + if width > 3 or rows > 3 then + btn_size = width > 3 and 3 / width or 3 / rows + s_btn_size = btn_size + X = btn_size * (i % width) + xoffset - 2.65 + Y = btn_size * floor((i - 1) / width) + (iY + 3) - min(2, rows) + end + + if X > rightest then + rightest = X + end + + local groups + if sub(item, 1, 6) == "group:" then + groups = extract_groups(item) + item = groups_to_item(groups) + end + + local label = groups and "\nG" or "" + + fs[#fs + 1] = fmt(FMT.item_image_button, + X, + Y + (sfinv_only and 0.7 or 0.2), + btn_size, + btn_size, + item, + match(item, "%S*"), + ESC(label)) + + local burntime = fuel_cache[item] + + if groups or cooktime or burntime then + fs[#fs + 1] = get_tooltip(item, groups, cooktime, burntime) + end + end + + local custom_recipe = craft_types[recipe.type] + + if custom_recipe or shapeless or recipe.type == "cooking" then + local icon = custom_recipe and custom_recipe.icon or + shapeless and "shapeless" or "furnace" + + if recipe.type == "cooking" then + icon = "default_furnace_front_active.png" + elseif not custom_recipe then + icon = fmt("craftguide_%s.png", icon) + end + + fs[#fs + 1] = fmt(FMT.image, + rightest + 1.2, + sfinv_only and 6.2 or iY + 1.7, + 0.5, + 0.5, + icon) + + local tooltip = custom_recipe and custom_recipe.description or + shapeless and S("Shapeless") or S("Cooking") + + fs[#fs + 1] = fmt("tooltip[%f,%f;%f,%f;%s]", + rightest + 1.2, + sfinv_only and 6.2 or iY + 1.7, + 0.5, + 0.5, + ESC(tooltip)) + end + + local arrow_X = rightest + (s_btn_size or 1.1) + local output_X = arrow_X + 0.9 + + fs[#fs + 1] = fmt(FMT.image, + arrow_X, + sfinv_only and 6.85 or iY + 2.35, + 0.9, + 0.7, + "craftguide_arrow.png") + + if recipe.type == "fuel" then + fs[#fs + 1] = fmt(FMT.image, + output_X, + sfinv_only and 6.68 or iY + 2.18, + 1.1, + 1.1, + "mcl_craftguide_fuel.png") + else + local output_name = match(recipe.output, "%S+") + local burntime = fuel_cache[output_name] + + fs[#fs + 1] = fmt(FMT.item_image_button, + output_X, + sfinv_only and 6.7 or iY + 2.2, + 1.1, + 1.1, + recipe.output, + ESC(output_name), + "") + + if burntime then + fs[#fs + 1] = get_tooltip(output_name, nil, nil, burntime) + + fs[#fs + 1] = fmt(FMT.image, + output_X + 1, + sfinv_only and 6.83 or iY + 2.33, + 0.6, + 0.4, + "craftguide_arrow.png") + + fs[#fs + 1] = fmt(FMT.image, + output_X + 1.6, + sfinv_only and 6.68 or iY + 2.18, + 0.6, + 0.6, + "mcl_craftguide_fuel.png") + end + end + + return concat(fs) +end + +local function make_formspec(name) + local data = player_data[name] + local iY = sfinv_only and 4 or data.iX - 5 local ipp = data.iX * iY - if not data.items then - data.items = datas.init_items - end data.pagemax = max(1, ceil(#data.items / ipp)) - local formspec = "size["..data.iX..","..(iY+3)..".6;]".. - mcl_vars.inventory_header.. - [=[background[1,1;1,1;craftguide_bg.png;true] - button[2.4,0.21;0.8,0.5;search;?] - button[3.05,0.21;0.8,0.5;clear;X] - tooltip[search;Search] - tooltip[clear;Reset] - tooltip[size_inc;Increase window size] - tooltip[size_dec;Decrease window size] - field_close_on_enter[filter;false]]=].. - "button["..(data.iX/2)..",-0.02;0.7,1;size_inc;+]".. - "button["..((data.iX/2) + 0.5).. - ",-0.02;0.7,1;size_dec;-]".. - "button["..(data.iX-3)..".4,0;0.8,0.95;prev;<]".. - "label["..(data.iX-2)..".1,0.18;".. - colorize(data.pagenum).." / "..data.pagemax.."]".. - "button["..(data.iX-1)..".2,0;0.8,0.95;next;>]".. - "field[0.3,0.32;2.5,1;filter;;".. - mt.formspec_escape(data.filter).."]" + local fs = {} - local even_num = data.iX % 2 == 0 - local xoffset = data.iX / 2 + (even_num and 0.5 or 0) + 2 + if not sfinv_only then + fs[#fs + 1] = fmt("size[%f,%f;]", data.iX - 0.35, iY + 4) - if not next(data.items) then - local msg = "" - if data.filter == "" then - msg = "You don't know any crafting recipes yet.\nCollect some items and open the recipe book again." - else - msg = "No crafting recipes found.\nReset the search and try again." + fs[#fs + 1] = [[ + no_prepend[] + background[1,1;1,1;craftguide_bg.png;true] + ]] + + fs[#fs + 1] = fmt([[ tooltip[size_inc;%s] + tooltip[size_dec;%s] ]], + ESC(S("Increase window size")), + ESC(S("Decrease window size"))) + + fs[#fs + 1] = fmt([[ + image_button[%f,0.12;0.8,0.8;craftguide_zoomin_icon.png;size_inc;] + image_button[%f,0.12;0.8,0.8;craftguide_zoomout_icon.png;size_dec;] ]], + data.iX * 0.47, + data.iX * 0.47 + 0.6) + end + + fs[#fs + 1] = [[ + image_button[2.4,0.12;0.8,0.8;craftguide_search_icon.png;search;] + image_button[3.05,0.12;0.8,0.8;craftguide_clear_icon.png;clear;] + field_close_on_enter[filter;false] + ]] + + fs[#fs + 1] = fmt([[ tooltip[search;%s] + tooltip[clear;%s] + tooltip[prev;%s] + tooltip[next;%s] ]], + ESC(S("Search")), + ESC(S("Reset")), + ESC(S("Previous page")), + ESC(S("Next page"))) + + fs[#fs + 1] = fmt("label[%f,%f;%s / %u]", + sfinv_only and 6.3 or data.iX - 2.2, + 0.22, + colorize("yellow", data.pagenum), + data.pagemax) + + fs[#fs + 1] = fmt([[ + image_button[%f,0.12;0.8,0.8;craftguide_prev_icon.png;prev;] + image_button[%f,0.12;0.8,0.8;craftguide_next_icon.png;next;] ]], + sfinv_only and 5.5 or data.iX - 3.1, + sfinv_only and 7.3 or (data.iX - 1.2) - (data.iX >= 11 and 0.08 or 0)) + + fs[#fs + 1] = fmt("field[0.3,0.32;2.5,1;filter;;%s]", ESC(data.filter)) + + if #data.items == 0 then + local no_item = S("No item to show") + local pos = (data.iX / 2) - 1 + + if next(recipe_filters) and #init_items > 0 and data.filter == "" then + no_item = S("Collect items to reveal more recipes") + pos = pos - 1 end - formspec = formspec.."label[0,2;"..mt.formspec_escape(msg).."]" + + fs[#fs + 1] = fmt(FMT.label, pos, 2, ESC(no_item)) end local first_item = (data.pagenum - 1) * ipp for i = first_item, first_item + ipp - 1 do - local name = data.items[i+1] - if not name then break end + local item = data.items[i + 1] + if not item then + break + end + local X = i % data.iX local Y = (i % ipp - X) / data.iX + 1 - formspec = formspec.. - "item_image_button["..X..","..Y..";1,1;".. - name..";"..name.."_inv;]" + fs[#fs + 1] = fmt("item_image_button[%f,%f;%f,%f;%s;%s_inv;]", + X - (sfinv_only and 0 or (X * 0.05)), + Y, + 1.1, + 1.1, + item, + item) end - if data.item and reg_items[data.item] then - local tooltip_raw = self:get_tooltip_raw(data.item) - local tooltip = "" - if tooltip_raw ~= "" then - tooltip = "tooltip["..data.item..";"..minetest.formspec_escape(tooltip_raw).."]" - end - if not data.recipes_item or (is_fuel and not - get_recipe(data.item).items) then - formspec = formspec.. - "image["..(xoffset-1)..","..(iY+2).. - ".12;0.9,0.7;craftguide_arrow.png]".. - "item_image_button["..(xoffset-2)..","..(iY+2).. - ";1,1;"..data.item..";"..data.item..";]".. - tooltip.. - "image["..(xoffset)..",".. - -- TODO: Remove fire icon, find better way to represent fuel - (iY+1.98)..";1,1;mcl_craftguide_fuel.png]" - else - formspec = formspec..self:get_recipe( - iY, xoffset, tooltip_raw, data.item, - data.recipe_num, data.recipes_item) - end + if data.recipes and #data.recipes > 0 then + fs[#fs + 1] = get_recipe_fs(data, iY) end - data.formspec = formspec - show_formspec(player_name, "craftguide", formspec) -end - -local function player_has_item(T) - for i=1, #T do - if T[i] then return true end - end -end - -local function group_to_items(group) - local items_with_group, counter = {}, 0 - for name, def in pairs(reg_items) do - if def.groups[group:sub(7)] then - counter = counter + 1 - items_with_group[counter] = name - end - end - return items_with_group -end - -local function item_in_inv(inv, item) - return inv:contains_item("main", item) -end - --- Returns true if player knows the item. Used for progressive mode (EXPERIMENTAL). -local function knows_item(playername, item) - local has_item = doc.entry_exists("nodes", item) and doc.entry_revealed(playername, "nodes", item) - if not has_item then - has_item = doc.entry_exists("tools", item) and doc.entry_revealed(playername, "tools", item) - end - if not has_item then - has_item = doc.entry_exists("craftitems", item) and doc.entry_revealed(playername, "craftitems", item) - end - return has_item -end - -function craftguide:recipe_in_inv(inv, item_name, recipes_f, playername) - local recipes = recipes_f or get_recipes(item_name) or {} - local show_item_recipes = {} - - for i=1, #recipes do - show_item_recipes[i] = false - for _, item in pairs(recipes[i].items) do - local group_in_inv = false - if item:sub(1,6) == "group:" then - local groups = group_to_items(item) - for j=1, #groups do - if item_in_inv(inv, groups[j]) then - group_in_inv = true - end - end + for elem_name, def in pairs(formspec_elements) do + local element = def.element(data) + if element then + if find(def.type, "button") then + insert(element, #element, elem_name) end - if group_in_inv or item_in_inv(inv, item) or knows_item(playername, item) then - show_item_recipes[i] = true - end - end - end - for i=#show_item_recipes, 1, -1 do - if not show_item_recipes[i] then - remove(recipes, i) + + fs[#fs + 1] = fmt(FMT[def.type], unpack(element)) end end - return recipes, player_has_item(show_item_recipes) + return concat(fs) end -function craftguide:get_init_items() - local items_list, counter = {}, 0 - for name, def in pairs(reg_items) do - local is_fuel = get_fueltime(name) > 0 - local is_tool = def.type == "tool" - if (not def.groups.not_in_craft_guide or def.groups.not_in_craft_guide == 0) - and (get_recipe(name).items or is_fuel or is_tool) - and def.description and def.description ~= "" then - counter = counter + 1 - items_list[counter] = name +local show_fs = function(player, name) + if sfinv_only then + sfinv.set_player_inventory_formspec(player) + else + show_formspec(name, "mcl_craftguide", make_formspec(name)) + end +end + +mcl_craftguide.add_search_filter("groups", function(item, groups) + local itemdef = reg_items[item] + local has_groups = true + + for i = 1, #groups do + local group = groups[i] + if not itemdef.groups[group] then + has_groups = nil + break end end - sort(items_list) - datas.init_items = items_list -end + return has_groups +end) -function craftguide:get_filter_items(data, player) +local function search(data) local filter = data.filter - local items_list = progressive_mode and data.init_filter_items or - datas.init_items - local inv = player:get_inventory() - local filtered_list, counter = {}, 0 - for i=1, #items_list do - local item = items_list[i] - local item_desc = reg_items[item].description:lower() + if searches[filter] then + data.items = searches[filter] + return + end - if filter ~= "" then - if item:find(filter, 1, true) or - item_desc:find(filter, 1, true) then - counter = counter + 1 - filtered_list[counter] = item - end - elseif progressive_mode then - local _, has_item = self:recipe_in_inv(inv, item, nil, player:get_player_name()) - if has_item then - counter = counter + 1 - filtered_list[counter] = item + local filtered_list, c = {}, 0 + local extras = "^(.-)%+([%w_]+)=([%w_,]+)" + local search_filter = next(search_filters) and match(filter, extras) + local filters = {} + + if search_filter then + for filter_name, values in gmatch(filter, sub(extras, 6, -1)) do + if search_filters[filter_name] then + values = split(values, ",") + filters[filter_name] = values end end end - if progressive_mode and not data.items then - data.init_filter_items = filtered_list + for i = 1, #data.items_raw do + local item = data.items_raw[i] + local def = reg_items[item] + local desc = lower(def.description) + local search_in = item .. desc + local to_add + + if search_filter then + for filter_name, values in pairs(filters) do + local func = search_filters[filter_name] + to_add = func(item, values) and (search_filter == "" or + find(search_in, search_filter, 1, true)) + end + else + to_add = find(search_in, filter, 1, true) + end + + if to_add then + c = c + 1 + filtered_list[c] = item + end end + + if not next(recipe_filters) then + -- Cache the results only if searched 2 times + if searches[filter] == nil then + searches[filter] = false + else + searches[filter] = filtered_list + end + end + data.items = filtered_list end -mt.register_on_player_receive_fields(function(player, formname, fields) - if formname ~= "craftguide" then return end - local player_name = player:get_player_name() - local data = datas[player_name] +local function get_inv_items(player) + local inv = player:get_inventory() + local stacks = {} + + for i = 1, #item_lists do + local list = inv:get_list(item_lists[i]) + table_merge(stacks, list) + end + + local inv_items, c = {}, 0 + + for i = 1, #stacks do + local stack = stacks[i] + if not stack:is_empty() then + local name = stack:get_name() + if reg_items[name] then + c = c + 1 + inv_items[c] = name + end + end + end + + return inv_items +end + +local function init_data(name) + player_data[name] = { + filter = "", + pagenum = 1, + iX = sfinv_only and 8 or DEFAULT_SIZE, + items = init_items, + items_raw = init_items, + } +end + +local function reset_data(data) + data.filter = "" + data.pagenum = 1 + data.rnum = 1 + data.query_item = nil + data.show_usages = nil + data.recipes = nil + data.items = data.items_raw +end + +local function cache_usages() + for i = 1, #init_items do + local item = init_items[i] + usages_cache[item] = get_item_usages(item) + end +end + +local function get_init_items() + local c = 0 + for name, def in pairs(reg_items) do + local is_fuel = cache_fuel(name) + if not (def.groups.not_in_craft_guide == 1 or + def.groups.not_in_creative_inventory == 1) and + def.description and def.description ~= "" and + (cache_recipes(name) or is_fuel) then + c = c + 1 + init_items[c] = name + end + end + + sort(init_items) + cache_usages() +end + +local function on_receive_fields(player, fields) + local name = player:get_player_name() + local data = player_data[name] + + for elem_name, def in pairs(formspec_elements) do + if fields[elem_name] and def.action then + return def.action(player, data) + end + end if fields.clear then - data.filter, data.item, data.pagenum, data.recipe_num = - "", nil, 1, 1 - data.items = progressive_mode and data.init_filter_items or - datas.init_items - craftguide:get_formspec(player_name) + reset_data(data) + show_fs(player, name) + elseif fields.alternate then - local recipe = data.recipes_item[data.recipe_num + 1] - data.recipe_num = recipe and data.recipe_num + 1 or 1 - craftguide:get_formspec(player_name) + if #data.recipes == 1 then + return + end + + local num_next = data.rnum + 1 + data.rnum = data.recipes[num_next] and num_next or 1 + show_fs(player, name) + elseif (fields.key_enter_field == "filter" or fields.search) and fields.filter ~= "" then - data.filter = fields.filter:lower() + local fltr = lower(fields.filter) + if data.filter == fltr then + return + end + + data.filter = fltr data.pagenum = 1 - craftguide:get_filter_items(data, player) - craftguide:get_formspec(player_name) + search(data) + show_fs(player, name) + elseif fields.prev or fields.next then + if data.pagemax == 1 then + return + end + data.pagenum = data.pagenum - (fields.prev and 1 or -1) + if data.pagenum > data.pagemax then data.pagenum = 1 elseif data.pagenum == 0 then data.pagenum = data.pagemax end - craftguide:get_formspec(player_name) - elseif (fields.size_inc and data.iX < 12) or - (fields.size_dec and data.iX > 8) then + + show_fs(player, name) + + elseif (fields.size_inc and data.iX < MAX_LIMIT) or + (fields.size_dec and data.iX > MIN_LIMIT) then data.pagenum = 1 - data.iX = data.iX - (fields.size_dec and 1 or -1) - craftguide:get_formspec(player_name) - elseif (fields.quit) then - datas[player_name] = nil + data.iX = data.iX + (fields.size_inc and 1 or -1) + show_fs(player, name) else - for item in pairs(fields) do - if item:find(":") then - if item:sub(-4) == "_inv" or item:sub(-4) == "_out" then - item = item:sub(1,-5) + local item + for field in pairs(fields) do + if find(field, ":") then + item = field + break end + end - local is_fuel = get_fueltime(item) > 0 - local recipes = get_recipes(item) - if not recipes and not is_fuel then return end + if not item then + return + elseif sub(item, -4) == "_inv" then + item = sub(item, 1, -5) + end - if item == data.item then - if data.recipes_item and #data.recipes_item >= 2 then - local recipe = data.recipes_item[data.recipe_num + 1] - data.recipe_num = recipe and data.recipe_num + 1 or 1 - craftguide:get_formspec(player_name) + if item ~= data.query_item then + data.show_usages = nil + else + data.show_usages = not data.show_usages + end + + local recipes = get_recipes(item, data, player) + if not recipes then + return + end + + data.query_item = item + data.recipes = recipes + data.rnum = 1 + + show_fs(player, name) + end +end + +M.register_on_mods_loaded(get_init_items) + +M.register_on_joinplayer(function(player) + local name = player:get_player_name() + init_data(name) +end) + +M.register_on_leaveplayer(function(player) + local name = player:get_player_name() + player_data[name] = nil +end) + +if sfinv_only then + sfinv.register_page("craftguide:craftguide", { + title = S("Craft Guide"), + + get = function(self, player, context) + local name = player:get_player_name() + local formspec = make_formspec(name) + + return sfinv.make_formspec(player, context, formspec) + end, + + on_enter = function(self, player, context) + if next(recipe_filters) then + local name = player:get_player_name() + local data = player_data[name] + + data.items_raw = get_filtered_items(player) + search(data) + end + end, + + on_player_receive_fields = function(self, player, context, fields) + on_receive_fields(player, fields) + end, + }) +else + M.register_on_player_receive_fields(function(player, formname, fields) + if formname == "mcl_craftguide" then + on_receive_fields(player, fields) + end + end) + + local function on_use(user) + local name = user:get_player_name() + + if next(recipe_filters) then + local data = player_data[name] + data.items_raw = get_filtered_items(user) + search(data) + end + + show_formspec(name, "mcl_craftguide", make_formspec(name)) + end + +end + +if progressive_mode then + local function item_in_inv(item, inv_items) + local inv_items_size = #inv_items + + if sub(item, 1, 6) == "group:" then + local groups = extract_groups(item) + for i = 1, inv_items_size do + local inv_item = reg_items[inv_items[i]] + if inv_item then + local item_groups = inv_item.groups + if item_has_groups(item_groups, groups) then + return true + end end + end + else + for i = 1, inv_items_size do + if inv_items[i] == item then + return true + end + end + end + end + + local function recipe_in_inv(recipe, inv_items) + for _, item in pairs(recipe.items) do + if not item_in_inv(item, inv_items) then + return + end + end + + return true + end + + local function progressive_filter(recipes, player) + local name = player:get_player_name() + local data = player_data[name] + + if #data.inv_items == 0 then + return {} + end + + local filtered, c = {}, 0 + for i = 1, #recipes do + local recipe = recipes[i] + if recipe_in_inv(recipe, data.inv_items) then + c = c + 1 + filtered[c] = recipe + end + end + + return filtered + end + + -- Workaround. Need an engine call to detect when the contents + -- of the player inventory changed, instead. + local function poll_new_items() + local players = M.get_connected_players() + for i = 1, #players do + local player = players[i] + local name = player:get_player_name() + local data = player_data[name] + local inv_items = get_inv_items(player) + local diff = table_diff(inv_items, data.inv_items) + + if #diff > 0 then + data.inv_items = table_merge(diff, data.inv_items) + end + end + + M.after(POLL_FREQ, poll_new_items) + end + + poll_new_items() + + mcl_craftguide.add_recipe_filter("Default progressive filter", progressive_filter) + + M.register_on_joinplayer(function(player) + local meta = player:get_meta() + local name = player:get_player_name() + local data = player_data[name] + + data.inv_items = deserialize(meta:get_string("inv_items")) or {} + end) + + local function save_meta(player) + local meta = player:get_meta() + local name = player:get_player_name() + local data = player_data[name] + + meta:set_string("inv_items", serialize(data.inv_items)) + end + + M.register_on_leaveplayer(save_meta) + + M.register_on_shutdown(function() + local players = M.get_connected_players() + for i = 1, #players do + local player = players[i] + save_meta(player) + end + end) +end + +M.register_chatcommand("craft", { + description = S("Show recipe(s) of the pointed node"), + func = function(name) + local player = get_player_by_name(name) + local ppos = player:get_pos() + local dir = player:get_look_dir() + local eye_h = {x = ppos.x, y = ppos.y + 1.625, z = ppos.z} + local node_name + + for i = 1, 10 do + local look_at = vec_add(eye_h, vec_mul(dir, i)) + local node = M.get_node(look_at) + + if node.name ~= "air" then + node_name = node.name + break + end + end + + local red = colorize("red", "[mcl_craftguide] ") + + if not node_name then + return false, red .. S("No node pointed") + end + + local data = player_data[name] + reset_data(data) + + local recipes = recipes_cache[node_name] + local usages = usages_cache[node_name] + + if recipes then + recipes = apply_recipe_filters(recipes, player) + end + + if not recipes or #recipes == 0 then + local ylw = colorize("yellow", node_name) + local msg = red .. "%s: " .. ylw + + if usages then + recipes = usages_cache[node_name] + if #recipes > 0 then + data.show_usages = true + end + elseif recipes_cache[node_name] then + return false, fmt(msg, S("You don't know a recipe for this node")) else - - if progressive_mode then - local inv = player:get_inventory() - local _, has_item = craftguide:recipe_in_inv(inv, item, nil, player:get_player_name()) - - if not has_item then return end - recipes = craftguide:recipe_in_inv(inv, item, recipes, player_name) - end - - data.item = item - data.recipe_num = 1 - data.recipes_item = recipes - - craftguide:get_formspec(player_name, is_fuel) + return false, fmt(msg, S("No recipe for this node")) end end - end - end -end) -function craftguide:on_use(user) - if not datas.init_items then - craftguide:get_init_items() - end + data.query_item = node_name + data.recipes = recipes - local player_name = user:get_player_name() - local data = datas[player_name] + return true, show_fs(player, name) + end, +}) - if progressive_mode or not data then - datas[player_name] = {filter="", pagenum=1, iX=9} - if progressive_mode then - craftguide:get_filter_items( - datas[player_name], user) - end - craftguide:get_formspec(player_name) - else - show_formspec(player_name, "craftguide", data.formspec) - end +function mcl_craftguide.show(name, item, show_usages) + local func = "mcl_craftguide." .. __func() .. "(): " + assert(name, func .. "player name missing") + + local data = player_data[name] + local player = get_player_by_name(name) + local query_item = data.query_item + + reset_data(data) + + item = reg_items[item] and item or query_item + + data.query_item = item + data.show_usages = show_usages + data.recipes = get_recipes(item, data, player) + + show_fs(player, name) end -mcl_craftguide.show_craftguide = function(player) - craftguide:on_use(player) -end +--[[ Custom recipes (>3x3) test code -mt.register_on_player_receive_fields(function(player, formname, fields) - if fields.__mcl_craftguide then - craftguide:on_use(player) +M.register_craftitem(":secretstuff:custom_recipe_test", { + description = "Custom Recipe Test", +}) + +local cr = {} +for x = 1, 6 do + cr[x] = {} + for i = 1, 10 - x do + cr[x][i] = {} + for j = 1, 10 - x do + cr[x][i][j] = "group:wood" + end end -end) -mt.register_on_leaveplayer(function(player) - datas[player:get_player_name()] = nil -end) + M.register_craft({ + output = "secretstuff:custom_recipe_test", + recipe = cr[x] + }) +end +]] diff --git a/mods/HELP/mcl_craftguide/license.txt b/mods/HELP/mcl_craftguide/license.txt new file mode 100644 index 00000000..57174d4d --- /dev/null +++ b/mods/HELP/mcl_craftguide/license.txt @@ -0,0 +1,58 @@ +License of source code +---------------------- + +The MIT License (MIT) + +Copyright (c) 2015-2019 Jean-Patrick Guerrero and contributors. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + +Licenses of media (textures) +---------------------------- + +Copyright © Diego Martínez (kaeza): craftguide_*_icon.png (CC BY-SA 3.0) + +You are free to: +Share — copy and redistribute the material in any medium or format. +Adapt — remix, transform, and build upon the material for any purpose, even commercially. +The licensor cannot revoke these freedoms as long as you follow the license terms. + +Under the following terms: + +Attribution — You must give appropriate credit, provide a link to the license, and +indicate if changes were made. You may do so in any reasonable manner, but not in any way +that suggests the licensor endorses you or your use. + +ShareAlike — If you remix, transform, or build upon the material, you must distribute +your contributions under the same license as the original. + +No additional restrictions — You may not apply legal terms or technological measures that +legally restrict others from doing anything the license permits. + +Notices: + +You do not have to comply with the license for elements of the material in the public +domain or where your use is permitted by an applicable exception or limitation. +No warranties are given. The license may not give you all of the permissions necessary +for your intended use. For example, other rights such as publicity, privacy, or moral +rights may limit how you use the material. + +For more details: +http://creativecommons.org/licenses/by-sa/3.0/ diff --git a/mods/HELP/mcl_craftguide/locale/mcl_craftguide.de.tr b/mods/HELP/mcl_craftguide/locale/mcl_craftguide.de.tr new file mode 100644 index 00000000..f97ba9b0 --- /dev/null +++ b/mods/HELP/mcl_craftguide/locale/mcl_craftguide.de.tr @@ -0,0 +1,25 @@ +# textdomain: mcl_craftguide + +Craft Guide=Rezeptbuch +Crafting Guide=Rezeptbuch +Crafting Guide Sign=Rezepttafel +Search=Suche +Reset=Zurücksetzen +Previous page=Vorherige Seite +Next page=Nächste Seite +Usage @1 of @2=Verwendung @1 von @2 +Recipe @1 of @2=Rezept @1 von @2 +Burning time: @1=Brennzeit: @1 +Cooking time: @1=Kochzeit: @1 +Any item belonging to the group(s): @1=Beliebiger Gegenstand aus Gruppe(n): @1 +Recipe is too big to be displayed (@1x@2)=Rezept ist zu groß für die Anzeige (@1×@2) +Shapeless=Formlos +Cooking=Kochen +Increase window size=Fenster vergrößern +Decrease window size=Fenster verkleinern +No item to show=Nichts anzuzeigen +Collect items to reveal more recipes=Gegenstände aufsammeln, um mehr Rezepte aufzudecken +Show recipe(s) of the pointed node=Rezept(e) des gezeigten Blocks anzeigen +No node pointed=Auf keinen Block gezeigt +You don't know a recipe for this node=Sie kennen kein Rezept für diesen Block +No recipe for this node=Kein Rezept für diesen Block diff --git a/mods/HELP/mcl_craftguide/locale/mcl_craftguide.fr.tr b/mods/HELP/mcl_craftguide/locale/mcl_craftguide.fr.tr new file mode 100644 index 00000000..94de87fb --- /dev/null +++ b/mods/HELP/mcl_craftguide/locale/mcl_craftguide.fr.tr @@ -0,0 +1,24 @@ +# textdomain: mcl_craftguide + +Craft Guide=Guide de recettes +Crafting Guide=Guide de recettes +Search=Rechercher +Reset=Réinitialiser +Previous page=Page précédente +Next page=Page suivante +Usage @1 of @2=Usage @1 de @2 +Recipe @1 of @2=Recette @1 de @2 +Burning time: @1=Temps de combustion : @1 +Cooking time: @1=Temps de cuisson : @1 +Any item belonging to the group(s): @1=Tout item appartenant au(x) groupe(s) : @1 +Recipe is too big to be displayed (@1x@2)=La recette est trop grande pour être affichée (@1x@2) +Shapeless=Sans forme +Cooking=Cuisson +Increase window size=Agrandir la fenêtre +Decrease window size=Réduire la fenêtre +No item to show=Aucun item à afficher +Collect items to reveal more recipes=Collecte des items pour révéler plus de recettes +Show recipe(s) of the pointed node=Affiche les recettes du bloc visé +No node pointed=Aucun bloc visé +You don't know a recipe for this node=Tu ne connais aucune recette pour ce bloc +No recipe for this node=Aucune recette pour ce bloc diff --git a/mods/HELP/mcl_craftguide/locale/mcl_craftguide.ru.tr b/mods/HELP/mcl_craftguide/locale/mcl_craftguide.ru.tr new file mode 100644 index 00000000..04723dbe --- /dev/null +++ b/mods/HELP/mcl_craftguide/locale/mcl_craftguide.ru.tr @@ -0,0 +1,25 @@ +# textdomain: mcl_craftguide + +Craft Guide=книга рецептов крафта +Crafting Guide=книга рецептов крафта +Crafting Guide Sign=Знак с книгой рецептов +Search=Поиск +Reset=Сброс +Previous page=Предыдущая страница +Next page=Следущая страница +Usage @1 of @2=использование @1 из @2 +Recipe @1 of @2=Рецепт @1 из @2 +Burning time: @1=Время горения: @1 +Cooking time: @1=Время преготовления: @1 +Any item belonging to the group(s): @1=Любой элемент из группы: @1 +Recipe is too big to be displayed (@1x@2)=Рецепт слишком большой для показа (@1x@2) +Shapeless=Бесформенный +Cooking=Приготовление +Increase window size=Увеличить окно +Decrease window size=Уменьшить окно +No item to show=Нет элемента для показа +Collect items to reveal more recipes=Собирайте предметы, чтобы раскрыть больше рецептов +Show recipe(s) of the pointed node=Показать рецепт(ы) выбранной ноды +No node pointed=Не указана нода +You don't know a recipe for this node=Вы не знаете рецепт для этой ноды +No recipe for this node=Нет рецептов для этой ноды diff --git a/mods/HELP/mcl_craftguide/locale/template b/mods/HELP/mcl_craftguide/locale/template new file mode 100644 index 00000000..d051c275 --- /dev/null +++ b/mods/HELP/mcl_craftguide/locale/template @@ -0,0 +1,25 @@ +# textdomain: craftguide + +Craft Guide= +Crafting Guide= +Crafting Guide Sign= +Search= +Reset= +Previous page= +Next page= +Usage @1 of @2= +Recipe @1 of @2= +Burning time: @1= +Cooking time: @1= +Any item belonging to the group(s): @1= +Recipe is too big to be displayed (@1x@2)= +Shapeless= +Cooking= +Increase window size= +Decrease window size= +No item to show= +Collect items to reveal more recipes= +Show recipe(s) of the pointed node= +No node pointed= +You don't know a recipe for this node= +No recipe for this node= diff --git a/mods/HELP/mcl_craftguide/settingtypes.txt b/mods/HELP/mcl_craftguide/settingtypes.txt new file mode 100644 index 00000000..14198aeb --- /dev/null +++ b/mods/HELP/mcl_craftguide/settingtypes.txt @@ -0,0 +1,5 @@ +# The progressive mode shows recipes you can craft from items you ever had in your inventory. +craftguide_progressive_mode (Progressive Mode) bool false + +# Integration in the default Minetest Game inventory. +craftguide_sfinv_only (Sfinv only) bool false \ No newline at end of file diff --git a/mods/HELP/mcl_craftguide/textures/craftguide_clear_icon.png b/mods/HELP/mcl_craftguide/textures/craftguide_clear_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..9244264adcf8a710ff13a2d684f148f997f1522f GIT binary patch literal 708 zcmeAS@N?(olHy`uVBq!ia0y~yU}ykg4mJh`hQoG=rx_TSx;~)y=#~!>?p$a zV0+p0t~<@l7jDnJE#mQn&G8YBrT-2_^98)(8>ZZgVURoP#*{MY#+ftc()O?SdvfvL z|2>hXH<>drpa8GaXSQygx_y@C4{^bdcE;th>vGN4y**^MR-`Vi?$nv~GkeaTS>1Q7 z%yiw$#F)iGAw2&B#Z`ak{&DxZpzue}t3ahjHACXx64eSNFhfPP!tsY!zyqcGPhM{0 zy|&ddIo2y6^SSw47WFqZlM|XgtoCa%F5f5QBT)Cz^Mkx~Jg3(DpI5yD3_!Z;CO%$p z;6`{;y50vXV|x*)->&M8t#j+wuw36;(_nJ4-SM!&pN@|Af`u!7809NJdN;*$!pzwn zJEZ?_pXTf$b1Zwq59Nf}xjFGdbc z4Znmnb^N&WVCg;ABj-DQMExw?=X&I=0ndEV1^b1LTsmCt|KLnG)5G0{BKw3m?iVW5 zOm_I8*7#wn!;e1ZhqGA@nRB+-FZSG!FYxc5Y1{rF#bhssAan;KT<|{qg^yu`QKY#yx%+Ejmf9+EvCB5Qf=OwiwTl#JL zZgovQ!0-C6bfNb@zk-X!W`9H8=%_c!chCE&^5PxeZU@em`wuKW9OwuSX$khe@MP~- zNmYTmX3qx;1G)7Yj~~ zL*vs)HcudrSg4c=DDidAKMu)FFT<1e2;jH{xl?Dg75>y0+u}*hCZj3KD;wo!HpsKf!v23e|EFhP2;dzK4qOu z>0L%1{mjpa3{HIiFhvk8mvLPY4q`EVhGtPK9NMu)}`w zGp9f7m0{sYkT|&6k%Qa6$%2tbpFQ^`dz61u1mmAtp$AD4`V8XE%ms!fFv_2a`Gbl9 zgS?W|fobg>`|I@ul?)o{{hJ;?G!d4u3znU;%f$=z30rhP!R| z?|+W(uY73S@OS&)taU%xHr(HK|NiIm+0~Uh7+G$9<2}%No?(%G4VysCL*s@A-18Y( z;(zcc{5X`(a8TTinPcAvNrw-u=NX#xYs@oc>fZ2o=gHLN^d2^6XwPThyU!rAkI|xr zx!}jaEuy^ttUq+V>z&1CAHgvFfaHhXcd@(P%lyj=;x$)#ZnOAzL7V2?%e%eX<+U3) q>+NPH8*kg5;f_ zWBRR(ytv#k#+O6O@Nd*HfX%76u^({QRmQQAT{PLw!mOI-oYdpN``vd+);|C%$82S(JGfy!5 zar^-52fiIl?;7>l6w;r?GrVu)*JUU_;4I(w{)FPa>}UOr{s%aAu*5MOwv$<`ec;{9 z`dwx})N5y(uqFI{u%9WfA^O3t{^op!fBW9l=QP(}yMB2o ze`c4R+s}6Hcia@-1J7pKXBqGRzI#by^MCh;(&}ewm<1w!@HkXFG-i0%dY++0eBTcS zi_gu>56g}fkA3T`9Jol?oc!REZrOclehKh;m77Swh z9xz1wX!2grs$apn;R7rCfkWal4BYVr3_3LjRWBS8-@_E~qlx*#yYu!7cY9wyB))^m zCj0qM^8?Y`@oDT53|ni{_!6&i87!_gI(~iIcloM+{9F#2sZrUrORBAoFZx@_v*%lg zz$R{ur9N3}?>AJwW;y+M1CJU@f-cMa@V>)u6TBFrIOb)o<=1X4=o4=#V%o4xXpIqz zCgTl(rkzI(bQq+&5;NyB#%Y}5IM9}4kuiVb?&b*$YeWw}eYaqjH3wJ2Zf52LLlXuu zXS~#g-4c4PtqT7#AHG!lP|NsG(SQLR{}*Fo7LaMuejt8V`w6c@1czA3`kw!Me@qxE z6(cU}HLG(fpZ)8h{OrTK_kZh{^;Guc=Acto@?Ei{9u?0?U*!L=oi>XxtNgWv0R%i< L{an^LB{Ts5o|!d` literal 0 HcmV?d00001 diff --git a/mods/HELP/mcl_craftguide/textures/craftguide_search_icon.png b/mods/HELP/mcl_craftguide/textures/craftguide_search_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..aace8044ac235bcf5935ed8a72c4cb136746a916 GIT binary patch literal 1908 zcmeAS@N?(olHy`uVBq!ia0y~yU}ykg4mJh`hQoG=rx_U7tvy{FLn>~)o$H+=nkvyY ze?QZ$s655iU?-Q(FN*{e6%-2-FS*1lR9SOplfp$;b3Koe#E2aYM;sQl9bwg8EYZv; z9mL^TuEN{a;JB34C2yhbg)2^(!4vBAo;f?rnCYy)-1zyP^UJ!6tDgPc|9)=$zuyf4 zP8^CYxQI_)CpK3YuV#~KPygZ0dZ^?#Y~u(CDUJF_H1p^e?Rr z+#BQ~7|yV#RX=*pRNRnd&N%On;Dc$i69jhf@-X~$P`@DPv_p?M#rk7D<9lZBhUtIu zWdn@Q&6i=zV+e0N{qK7M$HN&s6V@Kt&M><%^}uQe#uam)oaSNNd!X_G(+2yN3yRD> z`H!R<_#3Y`xcUG299(lV(A>%V1N#Q`mVz)gjoMG!ncg$3Za6Bu;@R=j1_itptTMcc zHOkCW)IOFTSbku3-F5vLX`X-Mr2jD0$T{s$WcG>u6wY+J!SvpV)h9c)B<8EkV<>A8 z@S8rFF)d|9>;H}Se|9&nQu<$dW_Nk*zc>5d-rZ+-K+dpoYB_g$b#&6ia`En+e!cys zSC~xGzPVa{6>)N#wEyhnc#Ti@*&5~c8&@}YAMkvzMmmvW$MgGhU!K&iPzq=EZme3L z`KtEM0*R`>g&P)M+SMH#_ICD7|Fmn#M-3CwmY>a;KQq^S^VZnd*z-A$)~#EYke2<| z{M*lbK9Q9RkDIO!VN<{Hz<6{1**9K-j`C)kKc|%)IAdqH`H;#hjUV}PAF_GG7e4RG zULUM>T>i)1w6bGo-YsX@egBNr*_{5Frv3}(rR{fH9&g01)= z_ir3){;7t0zU!9SKMgE6qQ17sJ+yQE_L&(S=6O@{SuEJMvvhb{FuL_Td zY1Pe?hAE8mQ#G4yuQyC?=a>Iyq|I2Qs~#II!g!EIJ>ks^XbXM}py*Ibm zf^IQchcesPHgI=_eNegkH@xw&VvBJk_oQsAcT$tH8dc-MBp=jo5$N50eC-oSmOA!t zX%=DCv5ynZJl`63Oic2D=e25H0eAijvQ96~W-W+`-k#l?+&MjztzyZq^=eT!1kLm8 z+)P$qpVnNlb?3E>GtR$mV2w+YJdmjtwM+K;*WIjNO3KUUpQzdpliZ)(_gd)Occaq` z=d>2JN)&!!oIY#TES=W}i+ZQW6w7Shd&a2YGuugSy{f(Q=ZgF7dS>ygYG!H!ySZN% zW1jHZCnvenV~Zy-&Pr)$-{Z68pI+Z?&GL|IFG|lAp806>yeUYBYb|q}$B&wx4Bq%S z39lEd4qNm$`mt5)Nu5(7`}iT#Ih%t1cJ03T$8@~xPfmO3-ms#8nP<6;G4sVsZ}%8X ze)9B7Imijc%|CX2VVBA(PHDI`Wk+wt%v6TwN*|Te`RC1Sm62R<;P7GfdB=41H}gCw z5wve+yLcjUo>-{a1e;BkFH)y5&WR7^2~fDTZmM|L@+%R|prEjH{dD4{Qo_rMZ530c zuJ5>Fdc5%VX&q*Z^bWq1u58KkjIX4nrLU*hMy%U7@5jWmiTbZ4B_BA->sxiLwO^PT ziSwP!o;eY*e7R@IM-W}3b-^XJdn znagi(Ed6!={gW&&8+Dg6E6r>332 zl~Tz2qc>yvyL%^ZxxY}ZiQY4Rf76R4mrmZgbydu%!hd^p&4SrV_N8j8jVzgQaBZ_IT^W!CB$ zzFUsJ-&thV7$+_M@kRDyJ>k6~i&%dwxRcGa*TU%8(TVrU|F5~@yCD3y+8(QIEow8i zwJnU3n_Ji0wSv>7i?ha~eAPvrMLr6`Cs>RceG<~55_N=Es7>HZVVdaxrFflZI+!-X zlzfnnpLugnXU5gYgTW2wU*xLKdN|uluSMWr*b(jZYC9fPOJs{YJ!RZDDgK~Zz$fh+ zEM9f3vmYqCZZPs)V7iV4a;XbLQUFPq;BFtfWPMxWC6gUcyk2 SD#yUUz~JfX=d#Wzp$P!GEO%=F literal 0 HcmV?d00001 diff --git a/mods/HELP/mcl_craftguide/textures/craftguide_zoomin_icon.png b/mods/HELP/mcl_craftguide/textures/craftguide_zoomin_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..5b8ecc2cbdfbee1ae0398c6562221d711d47e6f8 GIT binary patch literal 3544 zcmeAS@N?(olHy`uVBq!ia0y~yVAux29Bd2>3?(1RSr`}?I14-?iy0WWg+Z8+Vb&Z8 z1_suPnIRD+5xzcF$@#f@i7EL>sd^Q;1q>iyV_#8_n4FzjqL7rDo|$K>^nUk#C56ls zTcvPQUjyF)=hTc$kE){7;3~h6MhI|Z8xtBTx$+|-gpg^Jvqyke^gTP3i$ zR(Zu%AYpwa1+bEmY+EHqkcA2nz5xo(`9-M;rg~<&$%ZCI3g(u2hGqtqMkYE6Mh1rF z`Ud9uhQ_)EhE@hqbJP@rU|U{jQmW)F1`yp;U%VofAHsV<2nskTZ+ z28I^8hK9OErXhx=Rz@aPriR*}7&L$=_03PoOsmAE)Y#I>&=N&yYDr>BVo4%F#VN^F zY57IDi6yp5nYoGSsrm(Z=}HRlkhF5n&&emWH!&?WMK{sh#8lVPIMrO&!Ys)sDLKu=JjD#+3twL=m;B^X zP~?L2L(+LlesX4t6~b1_L`y@%G_xe#6iY)RT@wqF6y2nhlr&v~6k}6!LsLV;BvTWZ zYy68c(=+oDbC691xhf?y#mdmg(mct`+(g$R#oRVO*CH(`SvM)gGR@4~IK@2C zG#Qkj!D+E8aT-r ziFxU%DYi=bN+AE}gUT96)aawf8dwggT(VQJ0Sg7WxPh49A{11d+9@E)>D0UwTcsi; zdpoz-@Bjt|_O+fajv*Cu-rn`jk4cw3{_*_{&sP(+6nZ~a%WMqjS|Px#Va~}J$`QxH zZKiYcgVl{sO1m2LCOUYma7tq2e#fnq$CPyI#*?PtS!#Xyhac6u7290wQ93Vt`{&v3 z%AvB)&&-+kvc|Tq=9!H@+u?@-nrAN+$~Szmkl3aqIjB%s^z!9**dpHDwKGnhEoD)9 zhg~2^^oPv`zBLT-_y&vcJ1?#;X1oNpMi57d4Cdig-@19SJPCkuIY_l7sT zXGm|{niIy#4Kh*yP0RA9*(1O|ZA-{ievXd+FN8b_~6eWzzpPl^>EQla>!SJhAev>5X=S zH(}FO1lNAHa{nu|(o(Wa`giZQV#)hkXB)gRi`oQ&RkHy}a^RAk|UCCFXOq%)Cr7M+l zk7sWN8K-A*>%8c#xmGb5ZFkRwHP_x*a`tEl_xTOCGYZ{Uv|gP&9aGBDcK4X^l_~2h zV-H?m!uel)Tj4Y_=ZTjsL^2O;xP4>Ux(~Cj^JaC;c$RV__YUK{tS$1#Z}3W#Nk4CR zF7@U)*E*RCEs5JV`pk|r(Y832cWA@y9nQ0FKIQ*V^+xT|;dxuXIR5|kWX;s4n%`%e z+}h?nd*KN^_Wh1&vdRCq&NkJXzvo+uV%iIp{^!>kR$pQDn!ZB(fBco>_s=uezsieW zVt4GH@>ZXlLLaOjEPYoeedWUgrP8SP*AFaT`P%BATkB_DKE1l)i1|yxT7Siq|JlE2 zU!q>w`N!)Ii0}ISZ(5Y^E6Z2Ri?Z)-tG;5Cxj6aGo4)@-rN>g|MlnCl`#wk6{*XW4 z@5Kko8^a~_jm;J$-FWk_ve)YWo||`{zrNDtx4mIK(|?wGjCPKDyW^K1`YH9H{oU*H zm-2pW;QGT*F*oYfoAV)Swl~xV-_MADDf{^Km7uKcyN}mNR&>w$VqkUbf6)CUzprow zYll3^FYE7}lQ@6Rk(<*S;)C8FnEZZObx*tWZ6Ev4>-BfmEIp;Red~tv6+1qzIBv1B zzUOc48)kdveXet@`zPBRi%b0TCr$UZ_3J;y{|h%Cd)@!|PVxV(l~{o$Ku2f-0t^?Q35u`G4+JX}4W)R1h?9xy1?tv?T~=+kJ+l8~_AJJShqpZ05Wb>#>*QjN-|^qi z^SmkiaBI@PZ6}x3zW3i5uib8W?BsLHw-WB+4r>Ku%3mEn$NcKiZ}W!fE4x3e4-Q-t z_`D!L*w}L(+ds#%Ci^{N5Bzs5-=CUw>}1BWvsK&wn`-r)efLp6XtLn5*ut-}558Y{ z&$c*O=IouF*Q}38hwR9{GW)XChn(*<*LFYu&m{WAH>>GTWft2-ukSnJ1!`L3Ke;qt zKA;^^a((4YCH>%oIYELkFSfl6FwWbyVnh6*MfYC(t8MLi$!B^uXL5w_kcipzWTmM|`airnmNZa%kk%s0g{G-i@d-o5!;c^w0di{?-q{55C9dbA3~1{?eaZ zH0eO%yye2Y^Ai3>sINbJZ+_AK!*3Q}ttg$}EUy0b@a?&uo=?6l_qFnv8}H9V`Ke+1 zTX;X1W*++A*_CpGc$9m@ud6mlvP@cUc^Rk>ivF>#c9BGxwD*oVw>pz<&V*;BBTlkF}dhrbYQ? zO^@c;S!=JhyMFaQH=IFVdQ&MBb@0AyL+1^@s6 literal 0 HcmV?d00001 diff --git a/mods/HELP/mcl_craftguide/textures/craftguide_zoomout_icon.png b/mods/HELP/mcl_craftguide/textures/craftguide_zoomout_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..7db747fdac7f320cd792262753d31c0aa0a68c70 GIT binary patch literal 2948 zcmeAS@N?(olHy`uVBq!ia0y~yVAux29Bd2>3?(1RSr`}?I14-?iy0WWg+Z8+Vb&Z8 z1_suPnIRD+5xzcF$@#f@i7EL>sd^Q;1q>iyV_#8_n4FzjqL7rDo|$K>^nUk#C56ls zTcvPQUjyF)=hTc$kE){7;3~h6MhI|Z8xtBTx$+|-gpg^Jvqyke^gTP3i$ zR(Zu%AYpwa1+bEmY+EHqkcA2nz5xo(`9-M;rg~<&$%ZCI3g(u2hGqtqMkYE6Mh1rF z`Ud9uhQ_)EhE@hqbJP@rU|U{jQmW)F1`yp;U%VofAHsV<2nskTZ+ z28I^8hK9OErXhx=Rz@aPriR*}7&L$=_03PoOsmAE)WqD%$OJ`cYDr>BVo4%F#VN^F zY57IDi6yp5nYoGSsrm(Z=}HRlkhF5n&&eo)zCaC)i62HSl84f)krrn*~CcK(%8~mHz_SS#nL3z#K_DXZkm5l zW_o5`Vh*yYAXlYirdXvU8JQa-nOf>5r=*zZ8d{nd>sp#wr0Nl+j(_~VO(dJ;W4fZ(l11!~Pp-Ill^=1 zRX=~P$FS-`^P(byz~qosnc8BG&08*%+1AWoc3JT@!`)3!FMof1NprKc&Eb94o9Et5 zm*i=8USbkFS*~G=JWuq*!G)^#q`B!Z`;<@Xf49jm*+7D?eX?A$NtxV6(UTjfgEVd5 z{5#$wE4k6;#ofHBBX8ery?g9N?VDe}Z(jXxvGre>lJ6(S+xf)@YzlZSTy1~sXH;)c zZ+L(E)8qqc1&kG~T+gH*lX(-&%B3!kAv%8AKA6%wmeOJ zkov$YdLH9FHapg^2J^=FM*D{6D;EDy5zU^>te$K5&-d?yJf?c4%^^?ZxBdQCz5M@%@6Av6 zm)7w9XtH9upYU9>via?D>Ffi{%G)mPz3*E#@6+|0b_QRr_a0We?Qfn}-cx(mux$HA z&KjOQ+%dO4d+;xK^8Ci;ocH(hMq_4_+-{FL2;px!GsUlMUf3m&;hSOge1m6l-`vaf;kFx9&Y>wyRpcVf=7^345Uf z?~T9H&;5=oy7Br7xA?BB0v2{J9p5Z}vSIm&d;9lx+09n9|L{+|c=v9*my96cc9#7N zhHNMMYrmXZTj+7`UM-|;qJnnvkkv}FTNtN{T_pdi>tZ2Y=l_D*1zJWjt?bFn=`iEeP7&k|KW6- ziwSHM^SbgT&eANJ#+5d+>w!yj`Q%xJ#jRYwO+>#2{r)8)dO0*}*Uj|rIr>@C&ICz6 zwh?`GZOx3ek+$wDBMqmo2#Sl@`b~fO-P?Chn!Q{4&f?c(mUn6Pi`Au;w6As6`Z?WQHmPl`$4Eo}nLYBaEQ(1# R)&y!Nd%F6$taD0e0sy4|ia-DW literal 0 HcmV?d00001 diff --git a/mods/HUD/mcl_inventory/depends.txt b/mods/HUD/mcl_inventory/depends.txt index 46d93c42..b1bb2487 100644 --- a/mods/HUD/mcl_inventory/depends.txt +++ b/mods/HUD/mcl_inventory/depends.txt @@ -1,4 +1,5 @@ mcl_init mcl_player? +mcl_craftguide? _mcl_autogroup? 3d_armor? diff --git a/mods/HUD/mcl_inventory/init.lua b/mods/HUD/mcl_inventory/init.lua index 899abeba..5d6c8ca6 100644 --- a/mods/HUD/mcl_inventory/init.lua +++ b/mods/HUD/mcl_inventory/init.lua @@ -5,6 +5,7 @@ mcl_inventory = {} local show_armor = minetest.get_modpath("3d_armor") ~= nil local mod_player = minetest.get_modpath("mcl_player") ~= nil +local mod_craftguide = minetest.get_modpath("mcl_craftguide") ~= nil -- Returns a single itemstack in the given inventory to the main inventory, or drop it when there's no space left local function return_item(itemstack, dropper, pos, inv) @@ -130,6 +131,8 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) if not minetest.settings:get_bool("creative_mode") and (formname == "" or formname == "main") then set_inventory(player) end + elseif fields.__mcl_craftguide and mod_craftguide then + mcl_craftguide.show(player:get_player_name()) end end) From 9ff95e7a087aaa31065dcafb55b99cc4c7e55d14 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 12 Mar 2019 22:21:06 +0100 Subject: [PATCH 119/737] Remove v6 craftguide image --- .../mcl_craftguide/textures/mcl_craftguide_v6.png | Bin 167 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 mods/HELP/mcl_craftguide/textures/mcl_craftguide_v6.png diff --git a/mods/HELP/mcl_craftguide/textures/mcl_craftguide_v6.png b/mods/HELP/mcl_craftguide/textures/mcl_craftguide_v6.png deleted file mode 100644 index 50511b9e7defebc5f7b499a71109ea31198ca57c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 167 zcmeAS@N?(olHy`uVBq!ia0y~yV2}V|CT0c(hPjegvl$o|I0Jk_Tp1V`l9G~&ii#Y* zzRqJ{U|=i>@(X5gcy=R=fq}ut)5S5Qg0Z)Iqu>Dp4(6*5er6=F+wk(rDFwT=n6+wt zIX=JTwDI2!n}gX_i?9{jHFC&q@O-1rZaOLPV8i^ZHIsE!uS8}ZWaK&Y^Zwq9ere8m UeA*Kk7#J8lUHx3vIVCg!0Ks}R Date: Tue, 12 Mar 2019 23:00:42 +0100 Subject: [PATCH 120/737] Craftguide: Restore old group support --- mods/HELP/mcl_craftguide/init.lua | 68 +++++++++++++++++++++++++++---- 1 file changed, 59 insertions(+), 9 deletions(-) diff --git a/mods/HELP/mcl_craftguide/init.lua b/mods/HELP/mcl_craftguide/init.lua index 28cae912..56cdd8d1 100644 --- a/mods/HELP/mcl_craftguide/init.lua +++ b/mods/HELP/mcl_craftguide/init.lua @@ -54,6 +54,9 @@ local FMT = { } local group_stereotypes = { + wood = "mcl_core:wood", + stone = "mcl_core:stone", + sand = "mcl_core:sand", wool = "mcl_wool:white", carpet = "mcl_wool:white_carpet", dye = "mcl_dye:red", @@ -74,6 +77,30 @@ local group_stereotypes = { clock = mcl_clock.sterotype, } +local group_names = { + shulker_box = "Any shulker box", + wool = "Any wool", + wood = "Any wood planks", + tree = "Any wood", + sand = "Any sand", + normal_sandstone = "Any normal sandstone", + red_sandstone = "Any red sandstone", + carpet = "Any carpet", + dye = "Any dye", + water_bucket = "Any water bucket", + flower = "Any flower", + mushroom = "Any mushroom", + wood_slab = "Any wooden slab", + wood_stairs = "Any wooden stairs", + coal = "Any coal", + quartz_block = "Any kind of quartz block", + purpur_block = "Any kind of purpur block", + stonebrick = "Any stone bricks", + stick = "Any stick", +} + + + local item_lists = { "main", "craft", @@ -365,7 +392,7 @@ end local function groups_to_item(groups) if #groups == 1 then local group = groups[1] - local def_gr = "default:" .. group + local def_gr = "mcl_core:" .. group if group_stereotypes[group] then return group_stereotypes[group] @@ -387,15 +414,35 @@ local function get_tooltip(item, groups, cooktime, burntime) local tooltip if groups then - local groupstr, c = {}, 0 + local gcol = "#FFAAFF" + if #groups == 1 then + local g = group_names[groups[1]] + -- Treat the groups “compass” and “clock” as fake groups + -- and just print the normal item name without special formatting + if groups[1] == "compass" or groups[1] == "clock" then + groupstr = reg_items[item].description + elseif group_names[groups[1]] then + -- Use the special group name string + groupstr = minetest.colorize(gcol, group_names[groups[1]]) + else + --[[ Fallback: Generic group explanation: This always + works, but the internally used group name (which + looks ugly) is exposed to the user. ]] + groupstr = minetest.colorize(gcol, groups[1]) + groupstr = S("Any item belonging to the @1 group", groupstr) + end + tooltip = groupstr + else - for i = 1, #groups do - c = c + 1 - groupstr[c] = colorize("yellow", groups[i]) + local groupstr, c = {}, 0 + for i = 1, #groups do + c = c + 1 + groupstr[c] = colorize(gcol, groups[i]) + end + + groupstr = concat(groupstr, ", ") + tooltip = S("Any item belonging to the groups: @1", groupstr) end - - groupstr = concat(groupstr, ", ") - tooltip = S("Any item belonging to the group(s): @1", groupstr) else tooltip = reg_items[item].description end @@ -473,7 +520,10 @@ local function get_recipe_fs(data, iY) item = groups_to_item(groups) end - local label = groups and "\nG" or "" + local label = "" + if groups and (#groups >= 1 and groups[1] ~= "compass" and groups[1] ~= "clock") then + label = "\nG" + end fs[#fs + 1] = fmt(FMT.item_image_button, X, From e24a698baeec77b6684b95c04d0475f4bc3936f3 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 12 Mar 2019 23:05:03 +0100 Subject: [PATCH 121/737] =?UTF-8?q?Craftguide:=202=C3=972=20for=20shapeles?= =?UTF-8?q?s=20recipe=20w/=20<=3D=204=20items?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mods/HELP/mcl_craftguide/init.lua | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/mods/HELP/mcl_craftguide/init.lua b/mods/HELP/mcl_craftguide/init.lua index 56cdd8d1..4adf25a1 100644 --- a/mods/HELP/mcl_craftguide/init.lua +++ b/mods/HELP/mcl_craftguide/init.lua @@ -471,7 +471,11 @@ local function get_recipe_fs(data, iY) cooktime, width = width, 1 elseif width == 0 then shapeless = true - width = min(3, #recipe.items) + if #recipe.items <= 4 then + width = 2 + else + width = min(3, #recipe.items) + end end local rows = ceil(maxn(recipe.items) / width) From 82d56de18e129d6a51134c3db0dfe4c707bb00ab Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 12 Mar 2019 23:07:35 +0100 Subject: [PATCH 122/737] Craftguide: Remove no_prepend[] --- mods/HELP/mcl_craftguide/init.lua | 1 - 1 file changed, 1 deletion(-) diff --git a/mods/HELP/mcl_craftguide/init.lua b/mods/HELP/mcl_craftguide/init.lua index 4adf25a1..236d8727 100644 --- a/mods/HELP/mcl_craftguide/init.lua +++ b/mods/HELP/mcl_craftguide/init.lua @@ -640,7 +640,6 @@ local function make_formspec(name) fs[#fs + 1] = fmt("size[%f,%f;]", data.iX - 0.35, iY + 4) fs[#fs + 1] = [[ - no_prepend[] background[1,1;1,1;craftguide_bg.png;true] ]] From cdb6e3e3f50ec35ff37e1df679b04f6c1c877d5e Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 12 Mar 2019 23:08:04 +0100 Subject: [PATCH 123/737] Craftguide: Remove /craft command --- mods/HELP/mcl_craftguide/init.lua | 58 ------------------------------- 1 file changed, 58 deletions(-) diff --git a/mods/HELP/mcl_craftguide/init.lua b/mods/HELP/mcl_craftguide/init.lua index 236d8727..2f37ebd3 100644 --- a/mods/HELP/mcl_craftguide/init.lua +++ b/mods/HELP/mcl_craftguide/init.lua @@ -1133,64 +1133,6 @@ if progressive_mode then end) end -M.register_chatcommand("craft", { - description = S("Show recipe(s) of the pointed node"), - func = function(name) - local player = get_player_by_name(name) - local ppos = player:get_pos() - local dir = player:get_look_dir() - local eye_h = {x = ppos.x, y = ppos.y + 1.625, z = ppos.z} - local node_name - - for i = 1, 10 do - local look_at = vec_add(eye_h, vec_mul(dir, i)) - local node = M.get_node(look_at) - - if node.name ~= "air" then - node_name = node.name - break - end - end - - local red = colorize("red", "[mcl_craftguide] ") - - if not node_name then - return false, red .. S("No node pointed") - end - - local data = player_data[name] - reset_data(data) - - local recipes = recipes_cache[node_name] - local usages = usages_cache[node_name] - - if recipes then - recipes = apply_recipe_filters(recipes, player) - end - - if not recipes or #recipes == 0 then - local ylw = colorize("yellow", node_name) - local msg = red .. "%s: " .. ylw - - if usages then - recipes = usages_cache[node_name] - if #recipes > 0 then - data.show_usages = true - end - elseif recipes_cache[node_name] then - return false, fmt(msg, S("You don't know a recipe for this node")) - else - return false, fmt(msg, S("No recipe for this node")) - end - end - - data.query_item = node_name - data.recipes = recipes - - return true, show_fs(player, name) - end, -}) - function mcl_craftguide.show(name, item, show_usages) local func = "mcl_craftguide." .. __func() .. "(): " assert(name, func .. "player name missing") From e77c5a3562109571be1b545a354dacdf6584d9e8 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Wed, 13 Mar 2019 00:13:04 +0100 Subject: [PATCH 124/737] Craftguide: Remove call to Lua debug library --- mods/HELP/mcl_craftguide/init.lua | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/mods/HELP/mcl_craftguide/init.lua b/mods/HELP/mcl_craftguide/init.lua index 2f37ebd3..25f6fac5 100644 --- a/mods/HELP/mcl_craftguide/init.lua +++ b/mods/HELP/mcl_craftguide/init.lua @@ -153,14 +153,10 @@ local function table_diff(t, t2) return diff end -local function __func() - return debug.getinfo(2, "n").name -end - local custom_crafts, craft_types = {}, {} function mcl_craftguide.register_craft_type(name, def) - local func = "mcl_craftguide." .. __func() .. "(): " + local func = "mcl_craftguide.register_craft_guide(): " assert(name, func .. "'name' field missing") assert(def.description, func .. "'description' field missing") assert(def.icon, func .. "'icon' field missing") @@ -169,7 +165,7 @@ function mcl_craftguide.register_craft_type(name, def) end function mcl_craftguide.register_craft(def) - local func = "mcl_craftguide." .. __func() .. "(): " + local func = "mcl_craftguide.register_craft(): " assert(def.type, func .. "'type' field missing") assert(def.width, func .. "'width' field missing") assert(def.output, func .. "'output' field missing") @@ -181,7 +177,7 @@ end local recipe_filters = {} function mcl_craftguide.add_recipe_filter(name, f) - local func = "mcl_craftguide." .. __func() .. "(): " + local func = "mcl_craftguide.add_recipe_filter(): " assert(name, func .. "filter name missing") assert(f and type(f) == "function", func .. "filter function missing") @@ -193,7 +189,7 @@ function mcl_craftguide.remove_recipe_filter(name) end function mcl_craftguide.set_recipe_filter(name, f) - local func = "mcl_craftguide." .. __func() .. "(): " + local func = "mcl_craftguide.set_recipe_filter(): " assert(name, func .. "filter name missing") assert(f and type(f) == "function", func .. "filter function missing") @@ -215,7 +211,7 @@ end local search_filters = {} function mcl_craftguide.add_search_filter(name, f) - local func = "mcl_craftguide." .. __func() .. "(): " + local func = "mcl_craftguide.add_search_filter(): " assert(name, func .. "filter name missing") assert(f and type(f) == "function", func .. "filter function missing") @@ -233,7 +229,7 @@ end local formspec_elements = {} function mcl_craftguide.add_formspec_element(name, def) - local func = "mcl_craftguide." .. __func() .. "(): " + local func = "mcl_craftguide.add_formspec_element(): " assert(def.element, func .. "'element' field not defined") assert(def.type, func .. "'type' field not defined") assert(FMT[def.type], func .. "'" .. def.type .. "' type not supported by the API") @@ -1134,7 +1130,7 @@ if progressive_mode then end function mcl_craftguide.show(name, item, show_usages) - local func = "mcl_craftguide." .. __func() .. "(): " + local func = "mcl_craftguide.show(): " assert(name, func .. "player name missing") local data = player_data[name] From e26f03f37ec34d8a7a7d209684ba71bd4e6568a0 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Wed, 13 Mar 2019 02:45:46 +0100 Subject: [PATCH 125/737] Remove some no-longer missing engine features --- MISSING_ENGINE_FEATURES.md | 6 ------ 1 file changed, 6 deletions(-) diff --git a/MISSING_ENGINE_FEATURES.md b/MISSING_ENGINE_FEATURES.md index c3bb8a28..313c535f 100644 --- a/MISSING_ENGINE_FEATURES.md +++ b/MISSING_ENGINE_FEATURES.md @@ -8,8 +8,6 @@ For these features, no easy Lua workaround could be found. ### Lua API #### Tools/wielded item -- Allow **much** faster liquid flowing ([#2810](https://github.com/minetest/minetest/issues/2810)) - - “Lock” hotbar for a brief time after using an item, making it impossible to switch item or to attach/mine/build until the delay is over (For eating with delay) - Tool charging: Holding down the mouse and releasing it, applying a “power level” (For bow and arrows, more charge = higher arrow range) ([issue 5212](https://github.com/minetest/minetest/issues/5212)) - [Dual Wielding](http://minecraft.gamepedia.com/Dual_wield) @@ -21,7 +19,6 @@ For these features, no easy Lua workaround could be found. ## Interface - Inventory: Hold down right mouse button while holding an item stack to drop items into the slots as you move the mouse. Makes crafting MUCH faster -- **Much** more informative item tooltips - Sneak+Leftclick on crafting output crafts as many items as possible and immediately puts it into the player inventory ([issue 5211](https://github.com/minetest/minetest/issues/5211)) - Sneak+click on inventory slot should be able to put items into additional “fallback inventories” if the first inventory is full. Required for large chests - Sneak+click puts items in different inventories depending on the item type (maybe group-based)? Required for sneak-clicking to armor slots @@ -39,8 +36,5 @@ For these features, a workaround (or hack ;-)) by using Lua is theoretically pos - Set damage frequency of `damage_per_second`. In Minecraft many things damage players every half-second rather than every second - Possible to damage players directly when they are with the head inside. This allows to add Minecraft-like suffocation -#### Crafting -- Require tools to be intact in crafting - #### Nice-to-haye - Utility function to rotate pillar-like nodes, requiring only 3 possible orientations (X, Y, Z). Basically this is `minetest.rotate_node` but with less orientations; the purpur pillar would mess up if a mirrored rotation would be possible. This is already implemented in MCL2, See `mcl_util` for more infos From d25e9ec4cc1ad82d3f21f1348407e9446b4a66bc Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Wed, 13 Mar 2019 04:52:23 +0100 Subject: [PATCH 126/737] Re-introduce the progressive mode! YESSSSS --- mods/HELP/mcl_craftguide/API.md | 34 +++++++++++------------ mods/HELP/mcl_craftguide/init.lua | 18 ++++++++++-- mods/HELP/mcl_craftguide/settingtypes.txt | 9 +++--- mods/HUD/mcl_inventory/depends.txt | 1 - mods/HUD/mcl_inventory/init.lua | 2 -- settingtypes.txt | 12 ++++---- 6 files changed, 40 insertions(+), 36 deletions(-) diff --git a/mods/HELP/mcl_craftguide/API.md b/mods/HELP/mcl_craftguide/API.md index e03a0e2b..17b42ee7 100644 --- a/mods/HELP/mcl_craftguide/API.md +++ b/mods/HELP/mcl_craftguide/API.md @@ -5,7 +5,7 @@ #### Registering a custom crafting type (example) ```Lua -craftguide.register_craft_type("digging", { +mcl_craftguide.register_craft_type("digging", { description = "Digging", icon = "default_tool_steelpick.png", }) @@ -14,7 +14,7 @@ craftguide.register_craft_type("digging", { #### Registering a custom crafting recipe (example) ```Lua -craftguide.register_craft({ +mcl_craftguide.register_craft({ type = "digging", width = 1, output = "default:cobble 2", @@ -29,7 +29,7 @@ craftguide.register_craft({ Recipe filters can be used to filter the recipes shown to players. Progressive mode is implemented as a recipe filter. -#### `craftguide.add_recipe_filter(name, function(recipes, player))` +#### `mcl_craftguide.add_recipe_filter(name, function(recipes, player))` Adds a recipe filter with the given name. The filter function should return the recipes to be displayed, given the available recipes and an `ObjectRef` to the @@ -39,7 +39,7 @@ user. Each recipe is a table of the form returned by Example function to hide recipes for items from a mod called "secretstuff": ```lua -craftguide.add_recipe_filter("Hide secretstuff", function(recipes) +mcl_craftguide.add_recipe_filter("Hide secretstuff", function(recipes) local filtered = {} for _, recipe in ipairs(recipes) do if recipe.output:sub(1,12) ~= "secretstuff:" then @@ -51,15 +51,15 @@ craftguide.add_recipe_filter("Hide secretstuff", function(recipes) end) ``` -#### `craftguide.remove_recipe_filter(name)` +#### `mcl_craftguide.remove_recipe_filter(name)` Removes the recipe filter with the given name. -#### `craftguide.set_recipe_filter(name, function(recipe, player))` +#### `mcl_craftguide.set_recipe_filter(name, function(recipe, player))` Removes all recipe filters and adds a new one. -#### `craftguide.get_recipe_filters()` +#### `mcl_craftguide.get_recipe_filters()` Returns a map of recipe filters, indexed by name. @@ -80,7 +80,7 @@ Notes: - Filters can be combined. - The `groups` filter is currently implemented by default. -#### `craftguide.add_search_filter(name, function(item, values))` +#### `mcl_craftguide.add_search_filter(name, function(item, values))` Adds a search filter with the given name. The search function should return a boolean value (whether the given item should be listed or not). @@ -88,7 +88,7 @@ The search function should return a boolean value (whether the given item should Example function to show items which contain at least a recipe of given width(s): ```lua -craftguide.add_search_filter("widths", function(item, widths) +mcl_craftguide.add_search_filter("widths", function(item, widths) local has_width local recipes = recipes_cache[item] @@ -109,11 +109,11 @@ craftguide.add_search_filter("widths", function(item, widths) end) ``` -#### `craftguide.remove_search_filter(name)` +#### `mcl_craftguide.remove_search_filter(name)` Removes the search filter with the given name. -#### `craftguide.get_search_filters()` +#### `mcl_craftguide.get_search_filters()` Returns a map of search filters, indexed by name. @@ -121,7 +121,7 @@ Returns a map of search filters, indexed by name. ### Custom formspec elements -#### `craftguide.add_formspec_element(name, def)` +#### `mcl_craftguide.add_formspec_element(name, def)` Adds a formspec element to the current formspec. Supported types: `box`, `label`, `image`, `button`, `tooltip`, `item_image`, `image_button`, `item_image_button` @@ -129,7 +129,7 @@ Supported types: `box`, `label`, `image`, `button`, `tooltip`, `item_image`, `im Example: ```lua -craftguide.add_formspec_element("export", { +mcl_craftguide.add_formspec_element("export", { type = "button", element = function(data) -- Should return a table of parameters according to the formspec element type. @@ -152,11 +152,11 @@ craftguide.add_formspec_element("export", { }) ``` -#### `craftguide.remove_formspec_element(name)` +#### `mcl_craftguide.remove_formspec_element(name)` Removes the formspec element with the given name. -#### `craftguide.get_formspec_elements()` +#### `mcl_craftguide.get_formspec_elements()` Returns a map of formspec elements, indexed by name. @@ -164,10 +164,8 @@ Returns a map of formspec elements, indexed by name. ### Miscellaneous -#### `craftguide.show(player_name, item, show_usages)` +#### `mcl_craftguide.show(player_name, item, show_usages)` Opens the Crafting Guide with the current filter applied. * `player_name`: string param. - * `item`: optional, string param. If set, this item is pre-selected. If the item does not exist or has no recipe, use the player's previous selection. By default, player's previous selection is used - * `show_usages`: optional, boolean param. If true, show item usages. diff --git a/mods/HELP/mcl_craftguide/init.lua b/mods/HELP/mcl_craftguide/init.lua index 25f6fac5..e9256909 100644 --- a/mods/HELP/mcl_craftguide/init.lua +++ b/mods/HELP/mcl_craftguide/init.lua @@ -10,8 +10,8 @@ local recipes_cache = {} local usages_cache = {} local fuel_cache = {} -local progressive_mode = M.settings:get_bool("craftguide_progressive_mode") and rawget(_G, "sfinv") -local sfinv_only = M.settings:get_bool("craftguide_sfinv_only") and rawget(_G, "sfinv") +local progressive_mode = M.settings:get_bool("mcl_craftguide_progressive_mode") or true +local sfinv_only = false local colorize = M.colorize local reg_items = M.registered_items @@ -1008,6 +1008,8 @@ else M.register_on_player_receive_fields(function(player, formname, fields) if formname == "mcl_craftguide" then on_receive_fields(player, fields) + elseif fields.__mcl_craftguide then + mcl_craftguide.show(player:get_player_name()) end end) @@ -1129,7 +1131,7 @@ if progressive_mode then end) end -function mcl_craftguide.show(name, item, show_usages) +function mcl_craftguide.show_old(name, item, show_usages) local func = "mcl_craftguide.show(): " assert(name, func .. "player name missing") @@ -1148,6 +1150,16 @@ function mcl_craftguide.show(name, item, show_usages) show_fs(player, name) end +function mcl_craftguide.show(name) + local player = minetest.get_player_by_name(name) + if next(recipe_filters) then + local data = player_data[name] + data.items_raw = get_filtered_items(player) + search(data) + end + show_formspec(name, "mcl_craftguide", make_formspec(name)) +end + --[[ Custom recipes (>3x3) test code M.register_craftitem(":secretstuff:custom_recipe_test", { diff --git a/mods/HELP/mcl_craftguide/settingtypes.txt b/mods/HELP/mcl_craftguide/settingtypes.txt index 14198aeb..dd3a5915 100644 --- a/mods/HELP/mcl_craftguide/settingtypes.txt +++ b/mods/HELP/mcl_craftguide/settingtypes.txt @@ -1,5 +1,4 @@ -# The progressive mode shows recipes you can craft from items you ever had in your inventory. -craftguide_progressive_mode (Progressive Mode) bool false - -# Integration in the default Minetest Game inventory. -craftguide_sfinv_only (Sfinv only) bool false \ No newline at end of file +# If enabled, the recipe book will progressively be filled with new recipes that can be crafted from all items you ever have had in your inventory. +# Recommended for new players and for a spoiler-free gameplay experience. +# If disabled, all recipes will be shown. +mcl_craftguide_progressive_mode (Learn crafting recipes progressively) bool true diff --git a/mods/HUD/mcl_inventory/depends.txt b/mods/HUD/mcl_inventory/depends.txt index b1bb2487..46d93c42 100644 --- a/mods/HUD/mcl_inventory/depends.txt +++ b/mods/HUD/mcl_inventory/depends.txt @@ -1,5 +1,4 @@ mcl_init mcl_player? -mcl_craftguide? _mcl_autogroup? 3d_armor? diff --git a/mods/HUD/mcl_inventory/init.lua b/mods/HUD/mcl_inventory/init.lua index 5d6c8ca6..9738cd4d 100644 --- a/mods/HUD/mcl_inventory/init.lua +++ b/mods/HUD/mcl_inventory/init.lua @@ -131,8 +131,6 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) if not minetest.settings:get_bool("creative_mode") and (formname == "" or formname == "main") then set_inventory(player) end - elseif fields.__mcl_craftguide and mod_craftguide then - mcl_craftguide.show(player:get_player_name()) end end) diff --git a/settingtypes.txt b/settingtypes.txt index ba0db568..ae31f930 100644 --- a/settingtypes.txt +++ b/settingtypes.txt @@ -40,6 +40,11 @@ mcl_keepInventory (Keep inventory on death) bool false # If enabled, chat messages are shown to everyone when a player dies. mcl_showDeathMessages (Show death messages) bool true +# If enabled, the recipe book will progressively be filled with new recipes that can be crafted from all items you ever have had in your inventory. +# Recommended for new players and for a spoiler-free gameplay experience. +# If disabled, all recipes will be shown. +mcl_craftguide_progressive_mode (Learn crafting recipes progressively) bool true + [Mobs] # If enabled, mobs will spawn naturally. This does not affect # affect mob spawners. @@ -74,13 +79,6 @@ mobs_disable_blood (Disable mob blood) bool false flame_sound (Flame sound) bool true [Experimental] -# If enabled, the recipe book will only show recipes which require one -# item which you have already discovered. -# If disabled, the recipe book shows all crafting recipes. -# This setting is EXPERIMENTAL and may be changed in later versions. -# Feedback is appreciated. -craftguide_progressive_mode (Enable recipe book progressive mode) bool false - # Mobs difficulty. This is a number that will affect the initial and maximum # health and the amount of damage that mobs deal. Health and damage will # be multiplied with this number. From 008a1b1cac477b9167c00eafcde9e9aafa6bb44a Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Wed, 13 Mar 2019 05:57:43 +0100 Subject: [PATCH 127/737] Add German translation for boats --- mods/ENTITIES/mcl_boats/locale/mcl_boats.de.tr | 10 ++++++++++ mods/ENTITIES/mcl_boats/locale/template.txt | 10 ++++++++++ 2 files changed, 20 insertions(+) create mode 100644 mods/ENTITIES/mcl_boats/locale/mcl_boats.de.tr create mode 100644 mods/ENTITIES/mcl_boats/locale/template.txt diff --git a/mods/ENTITIES/mcl_boats/locale/mcl_boats.de.tr b/mods/ENTITIES/mcl_boats/locale/mcl_boats.de.tr new file mode 100644 index 00000000..d18b3526 --- /dev/null +++ b/mods/ENTITIES/mcl_boats/locale/mcl_boats.de.tr @@ -0,0 +1,10 @@ +# textdomain: mcl_boats +Acacia Boat=Akazienboot +Birch Boat=Birkenboot +Boat=Boot +Boats are used to travel on the surface of water.=Boote werden benutzt, um sich auf der Wasseroberfläche zu bewegen. +Dark Oak Boat=Dunkeleichenboot +Jungle Boat=Dschungelboot +Oak Boat=Eichenboot +Rightclick on a water source to place the boat. Rightclick the boat to enter it. Use [Left] and [Right] to steer, [Forwards] to speed up and [Backwards] to slow down or move backwards. Rightclick the boat again to leave it, punch the boat to make it drop as an item.=Rechtsklicken Sie auf eine Wasserquelle, um das Boot zu platzieren. Rechtsklicken Sie auf das Boot, um es zu betreten. Mit [Links] und [Rechts] lenken, mit [Vorwärts] und [Rückwärts] Geschwindigkeit regeln oder rückwärts fahren. Rechtsklicken Sie erneut auf das Boot, um es zu verlassen, schlagen Sie das Boot, um es als Gegenstand fallen zu lassen. +Spruce Boat=Fichtenboot diff --git a/mods/ENTITIES/mcl_boats/locale/template.txt b/mods/ENTITIES/mcl_boats/locale/template.txt new file mode 100644 index 00000000..9af27b70 --- /dev/null +++ b/mods/ENTITIES/mcl_boats/locale/template.txt @@ -0,0 +1,10 @@ +# textdomain: mcl_boats +Acacia Boat= +Birch Boat= +Boat= +Boats are used to travel on the surface of water.= +Dark Oak Boat= +Jungle Boat= +Oak Boat= +Rightclick on a water source to place the boat. Rightclick the boat to enter it. Use [Left] and [Right] to steer, [Forwards] to speed up and [Backwards] to slow down or move backwards. Rightclick the boat again to leave it, punch the boat to make it drop as an item.= +Spruce Boat= From f7af5dfa0712d1d28bf70840abf0219babd85ace Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Wed, 13 Mar 2019 08:05:59 +0100 Subject: [PATCH 128/737] Version 0.50.0 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index e81c549d..f480fc8f 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ An unofficial Minecraft-like game for Minetest. Forked from MineClone by daredevils. Developed by Wuzzy and contributors. Not developed or endorsed by Mojang AB. -Version: 0.49.0 +Version: 0.50.0 ### Gameplay You start in a randomly-generated world made entirely of cubes. You can explore From fb389df3a04148938a2307adb65ad7e9beeb4e71 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Wed, 13 Mar 2019 11:32:26 +0100 Subject: [PATCH 129/737] Fix crash when clicking craftbook icon in furnace --- mods/HELP/mcl_craftguide/init.lua | 19 ------------------- mods/ITEMS/mcl_furnaces/init.lua | 6 +----- 2 files changed, 1 insertion(+), 24 deletions(-) diff --git a/mods/HELP/mcl_craftguide/init.lua b/mods/HELP/mcl_craftguide/init.lua index e9256909..4785c93b 100644 --- a/mods/HELP/mcl_craftguide/init.lua +++ b/mods/HELP/mcl_craftguide/init.lua @@ -1131,25 +1131,6 @@ if progressive_mode then end) end -function mcl_craftguide.show_old(name, item, show_usages) - local func = "mcl_craftguide.show(): " - assert(name, func .. "player name missing") - - local data = player_data[name] - local player = get_player_by_name(name) - local query_item = data.query_item - - reset_data(data) - - item = reg_items[item] and item or query_item - - data.query_item = item - data.show_usages = show_usages - data.recipes = get_recipes(item, data, player) - - show_fs(player, name) -end - function mcl_craftguide.show(name) local player = minetest.get_player_by_name(name) if next(recipe_filters) then diff --git a/mods/ITEMS/mcl_furnaces/init.lua b/mods/ITEMS/mcl_furnaces/init.lua index 781fe4a9..3e1b9c3b 100644 --- a/mods/ITEMS/mcl_furnaces/init.lua +++ b/mods/ITEMS/mcl_furnaces/init.lua @@ -20,7 +20,6 @@ local function active_formspec(fuel_percent, item_percent) (item_percent)..":gui_furnace_arrow_fg.png^[transformR270]".. "image_button[8,0;1,1;craftguide_book.png;craftguide;]".. "tooltip[craftguide;Recipe book]".. - "tooltip[doc;Help]".. "listring[current_name;dst]".. "listring[current_player;main]".. "listring[current_name;src]".. @@ -41,7 +40,6 @@ local inactive_formspec = "size[9,8.75]".. "image[4.1,1.5;1.5,1;gui_furnace_arrow_bg.png^[transformR270]".. "image_button[8,0;1,1;craftguide_book.png;craftguide;]".. "tooltip[craftguide;Recipe book]".. - "tooltip[doc;Help]".. "listring[current_name;dst]".. "listring[current_player;main]".. "listring[current_name;src]".. @@ -51,9 +49,7 @@ local inactive_formspec = "size[9,8.75]".. local receive_fields = function(pos, formname, fields, sender) if fields.craftguide then - mcl_craftguide.show_craftguide(sender) - elseif fields.doc and minetest.get_modpath("doc") then - doc.show_entry(sender:get_player_name(), "nodes", "mcl_furnaces:furnace", true) + mcl_craftguide.show(sender:get_player_name()) end end From 550efda4953f46d2f116836b8df0513d2876fda5 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Wed, 13 Mar 2019 11:32:55 +0100 Subject: [PATCH 130/737] Version 0.50.1 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index f480fc8f..8345b5f4 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ An unofficial Minecraft-like game for Minetest. Forked from MineClone by daredevils. Developed by Wuzzy and contributors. Not developed or endorsed by Mojang AB. -Version: 0.50.0 +Version: 0.50.1 ### Gameplay You start in a randomly-generated world made entirely of cubes. You can explore From 2b586549cfed87b6f4bc6a1b608f94ef2e276f05 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Wed, 13 Mar 2019 22:52:14 +0100 Subject: [PATCH 131/737] Add translation templates for 3 mods --- mods/ENTITIES/mcl_falling_nodes/init.lua | 5 +- .../mcl_falling_nodes/locale/template.txt | 3 ++ .../awards/locale/{de.txt => awards.de.tr} | 0 mods/HUD/hbarmor/locale/de.txt | 2 - mods/HUD/hbarmor/locale/hbarmor.de.tr | 2 + .../hbarmor/locale/{it.txt => hbarmor.it.tr} | 4 +- mods/HUD/hbarmor/locale/template.txt | 4 +- mods/HUD/mcl_achievements/locale/template.txt | 49 +++++++++++++++++++ 8 files changed, 61 insertions(+), 8 deletions(-) create mode 100644 mods/ENTITIES/mcl_falling_nodes/locale/template.txt rename mods/HUD/awards/locale/{de.txt => awards.de.tr} (100%) delete mode 100644 mods/HUD/hbarmor/locale/de.txt create mode 100644 mods/HUD/hbarmor/locale/hbarmor.de.tr rename mods/HUD/hbarmor/locale/{it.txt => hbarmor.it.tr} (65%) create mode 100644 mods/HUD/mcl_achievements/locale/template.txt diff --git a/mods/ENTITIES/mcl_falling_nodes/init.lua b/mods/ENTITIES/mcl_falling_nodes/init.lua index 753f7c8c..35355c79 100644 --- a/mods/ENTITIES/mcl_falling_nodes/init.lua +++ b/mods/ENTITIES/mcl_falling_nodes/init.lua @@ -1,3 +1,4 @@ +local S = minetest.get_translator("mcl_falling_nodes") local dmes = minetest.get_modpath("mcl_death_messages") ~= nil local get_falling_depth = function(self) @@ -48,9 +49,9 @@ local deal_falling_damage = function(self, dtime) -- TODO: Reduce damage if wearing a helmet local msg if minetest.get_item_group(self.node.name, "anvil") ~= 0 then - msg = "%s was smashed by a falling anvil." + msg = S("%s was smashed by a falling anvil.") else - msg = "%s was smashed by a falling block." + msg = S("%s was smashed by a falling block.") end if dmes then mcl_death_messages.player_damage(v, string.format(msg, v:get_player_name())) diff --git a/mods/ENTITIES/mcl_falling_nodes/locale/template.txt b/mods/ENTITIES/mcl_falling_nodes/locale/template.txt new file mode 100644 index 00000000..040742c6 --- /dev/null +++ b/mods/ENTITIES/mcl_falling_nodes/locale/template.txt @@ -0,0 +1,3 @@ +# textdomain: mcl_falling_nodes +%s was smashed by a falling anvil.= +%s was smashed by a falling block.= diff --git a/mods/HUD/awards/locale/de.txt b/mods/HUD/awards/locale/awards.de.tr similarity index 100% rename from mods/HUD/awards/locale/de.txt rename to mods/HUD/awards/locale/awards.de.tr diff --git a/mods/HUD/hbarmor/locale/de.txt b/mods/HUD/hbarmor/locale/de.txt deleted file mode 100644 index 5a6bacdc..00000000 --- a/mods/HUD/hbarmor/locale/de.txt +++ /dev/null @@ -1,2 +0,0 @@ -Armor = Panzerung -%s: %d%% = %s: %d%% diff --git a/mods/HUD/hbarmor/locale/hbarmor.de.tr b/mods/HUD/hbarmor/locale/hbarmor.de.tr new file mode 100644 index 00000000..d1be8698 --- /dev/null +++ b/mods/HUD/hbarmor/locale/hbarmor.de.tr @@ -0,0 +1,2 @@ +Armor=Panzerung +%s: %d%%=%s: %d%% diff --git a/mods/HUD/hbarmor/locale/it.txt b/mods/HUD/hbarmor/locale/hbarmor.it.tr similarity index 65% rename from mods/HUD/hbarmor/locale/it.txt rename to mods/HUD/hbarmor/locale/hbarmor.it.tr index a2f704b2..f9c8f99e 100644 --- a/mods/HUD/hbarmor/locale/it.txt +++ b/mods/HUD/hbarmor/locale/hbarmor.it.tr @@ -1,4 +1,4 @@ -Armor = Armatura +Armor=Armatura # Format string for displaying the armor. E.g. "Armor: 100%" -%s: %d%% = +%s: %d%%=%s: %d%% diff --git a/mods/HUD/hbarmor/locale/template.txt b/mods/HUD/hbarmor/locale/template.txt index d898abe4..09bc54ce 100644 --- a/mods/HUD/hbarmor/locale/template.txt +++ b/mods/HUD/hbarmor/locale/template.txt @@ -1,4 +1,4 @@ -Armor = +Armor= # Format string for displaying the armor. E.g. "Armor: 100%" -%s: %d%% = +%s: %d%%= diff --git a/mods/HUD/mcl_achievements/locale/template.txt b/mods/HUD/mcl_achievements/locale/template.txt new file mode 100644 index 00000000..3b630162 --- /dev/null +++ b/mods/HUD/mcl_achievements/locale/template.txt @@ -0,0 +1,49 @@ +# textdomain: mcl_achievements +Aquire Hardware= +Bake Bread= +Benchmarking= +Cow Tipper= +Craft a bookshelf.= +Craft a cake using wheat, sugar, milk and an egg.= +Craft a crafting table from 4 wooden planks.= +Craft a stone pickaxe using sticks and cobblestone.= +Craft a wooden sword using wooden planks and sticks on a crafting table.= +DIAMONDS!= +Delicious Fish= +Dispense With This= +Eat a cooked porkchop.= +Eat a cooked rabbit.= +Get really desperate and eat rotten flesh.= +Getting Wood= +Getting an Upgrade= +Hit a skeleton, wither skeleton or stray by bow and arrow from a distance of at least 20 meters.= +Hot Topic= +Into Fire= +Into the Nether= +Iron Belly= +Librarian= +Mine emerald ore.= +On A Rail= +Pick up a blaze rod from the floor.= +Pick up a diamond from the floor.= +Pick up a wood item from the ground.@nHint: Punch a tree trunk until it pops out as an item.= +Pick up leather from the floor.@nHint: Cows and some other animals have a chance to drop leather, when killed.= +Place a dispenser.= +Place a flower pot.= +Pork Chop= +Pot Planter= +Rabbit Season= +Sniper Duel= +Take a cooked fish from a furnace.@nHint: Use a fishing rod to catch a fish and cook it in a furnace.= +Take an iron ingot from a furnace's output slot.@nHint: To smelt an iron ingot, put a fuel (like coal) and iron ore into a furnace.= +The Haggler= +The Lie= +Time to Farm!= +Time to Mine!= +Time to Strike!= +Travel by minecart for at least 1000 meters from your starting point in a single ride.= +Use 8 cobblestones to craft a furnace.= +Use a crafting table to craft a wooden hoe from wooden planks and sticks.= +Use a crafting table to craft a wooden pickaxe from wooden planks and sticks.= +Use obsidian and a fire starter to construct a Nether portal.= +Use wheat to craft a bread.= From d7fc15807333cb8d1f5fb43f57045385d25b8b9b Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Wed, 13 Mar 2019 23:26:33 +0100 Subject: [PATCH 132/737] Make mcl_spawn translatable --- mods/PLAYER/mcl_spawn/init.lua | 7 ++++--- mods/PLAYER/mcl_spawn/locale/template.txt | 4 ++++ 2 files changed, 8 insertions(+), 3 deletions(-) create mode 100644 mods/PLAYER/mcl_spawn/locale/template.txt diff --git a/mods/PLAYER/mcl_spawn/init.lua b/mods/PLAYER/mcl_spawn/init.lua index 9f8fa70e..66fe8cdd 100644 --- a/mods/PLAYER/mcl_spawn/init.lua +++ b/mods/PLAYER/mcl_spawn/init.lua @@ -1,5 +1,6 @@ mcl_spawn = {} +local S = minetest.get_translator("mcl_spawn") local mg_name = minetest.get_mapgen_setting("mg_name") local cached_world_spawn @@ -63,7 +64,7 @@ mcl_spawn.set_spawn_pos = function(player, pos, message) if meta:get_string("mcl_beds:spawn") ~= "" then spawn_changed = true if message then - minetest.chat_send_player(player:get_player_name(), "Respawn position cleared!") + minetest.chat_send_player(player:get_player_name(), S("Respawn position cleared!")) end end meta:set_string("mcl_beds:spawn", "") @@ -74,7 +75,7 @@ mcl_spawn.set_spawn_pos = function(player, pos, message) if vector.distance(pos, oldpos) > 0.1 then spawn_changed = true if message then - minetest.chat_send_player(player:get_player_name(), "New respawn position set!") + minetest.chat_send_player(player:get_player_name(), S("New respawn position set!")) end end end @@ -115,7 +116,7 @@ minetest.register_on_respawnplayer(function(player) if (bgroup ~= 1 and bgroup ~= 2) then mcl_spawn.set_spawn_pos(player, nil) end - minetest.chat_send_player(player:get_player_name(), "Your spawn bed was missing or blocked.") + minetest.chat_send_player(player:get_player_name(), S("Your spawn bed was missing or blocked.")) end end end) diff --git a/mods/PLAYER/mcl_spawn/locale/template.txt b/mods/PLAYER/mcl_spawn/locale/template.txt new file mode 100644 index 00000000..8906d18f --- /dev/null +++ b/mods/PLAYER/mcl_spawn/locale/template.txt @@ -0,0 +1,4 @@ +# textdomain: mcl_spawn +New respawn position set!= +Respawn position cleared!= +Your spawn bed was missing or blocked.= From 5aeb4aea74b460af3a90a6b15c20b66320788911 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Wed, 13 Mar 2019 23:40:59 +0100 Subject: [PATCH 133/737] Add translation templates for most mods Using the findtext.lua script --- .../mcl_minecarts/locale/template.txt | 23 + .../ENVIRONMENT/lightning/locale/template.txt | 4 + .../mcl_void_damage/locale/template.txt | 3 + mods/HELP/mcl_doc/locale/template.txt | 54 ++ mods/HELP/mcl_doc_basics/locale/template.txt | 465 ++++++++++++++++++ .../mcl_death_messages/locale/template.txt | 53 ++ mods/HUD/mcl_inventory/locale/template.txt | 1 + .../mcl_comparators/locale/template.txt | 9 + .../mcl_dispensers/locale/template.txt | 7 + .../REDSTONE/mcl_droppers/locale/template.txt | 6 + .../mcl_observers/locale/template.txt | 4 + .../mesecons_button/locale/template.txt | 0 .../mesecons_commandblock/locale/template.txt | 14 + .../mesecons_delayer/locale/template.txt | 8 + .../mesecons_lightstone/locale/template.txt | 0 .../mesecons_noteblock/locale/template.txt | 10 + .../mesecons_pistons/locale/template.txt | 6 + .../locale/template.txt | 11 + .../mesecons_solarpanel/locale/template.txt | 5 + .../mesecons_torch/locale/template.txt | 10 + .../mesecons_walllever/locale/template.txt | 4 + .../mesecons_wires/locale/template.txt | 10 + mods/ITEMS/mcl_anvils/locale/template.txt | 13 + mods/ITEMS/mcl_banners/locale/template.txt | 60 +++ mods/ITEMS/mcl_beds/locale/template.txt | 32 ++ mods/ITEMS/mcl_books/locale/template.txt | 25 + mods/ITEMS/mcl_bows/locale/template.txt | 11 + mods/ITEMS/mcl_buckets/locale/template.txt | 13 + mods/ITEMS/mcl_cake/locale/template.txt | 10 + mods/ITEMS/mcl_cauldrons/locale/template.txt | 10 + mods/ITEMS/mcl_chests/locale/template.txt | 28 ++ mods/ITEMS/mcl_clock/locale/template.txt | 4 + mods/ITEMS/mcl_cocoas/locale/template.txt | 6 + .../ITEMS/mcl_colorblocks/locale/template.txt | 0 mods/ITEMS/mcl_compass/locale/template.txt | 3 + .../mcl_crafting_table/locale/template.txt | 4 + mods/ITEMS/mcl_doors/locale/template.txt | 22 + mods/ITEMS/mcl_dye/locale/template.txt | 25 + mods/ITEMS/mcl_end/locale/template.txt | 23 + mods/ITEMS/mcl_farming/locale/template.txt | 93 ++++ mods/ITEMS/mcl_fences/locale/template.txt | 16 + mods/ITEMS/mcl_fire/locale/template.txt | 15 + mods/ITEMS/mcl_fishing/locale/template.txt | 16 + mods/ITEMS/mcl_flowerpots/locale/template.txt | 24 + mods/ITEMS/mcl_flowers/locale/template.txt | 32 ++ mods/ITEMS/mcl_furnaces/locale/template.txt | 5 + mods/ITEMS/mcl_heads/locale/template.txt | 11 + mods/ITEMS/mcl_hoppers/locale/template.txt | 8 + mods/ITEMS/mcl_itemframes/locale/template.txt | 4 + mods/ITEMS/mcl_jukebox/locale/template.txt | 9 + mods/ITEMS/mcl_maps/locale/template.txt | 7 + mods/ITEMS/mcl_mobitems/locale/template.txt | 60 +++ .../ITEMS/mcl_mobspawners/locale/template.txt | 4 + .../mcl_monster_eggs/locale/template.txt | 8 + mods/ITEMS/mcl_mushrooms/locale/template.txt | 21 + mods/ITEMS/mcl_nether/locale/template.txt | 27 + mods/ITEMS/mcl_ocean/locale/template.txt | 9 + mods/ITEMS/mcl_portals/locale/template.txt | 14 + mods/ITEMS/mcl_potions/locale/template.txt | 20 + mods/ITEMS/mcl_signs/locale/template.txt | 4 + mods/ITEMS/mcl_sponges/locale/template.txt | 8 + mods/ITEMS/mcl_stairs/locale/template.txt | 101 ++++ mods/ITEMS/mcl_throwing/locale/template.txt | 9 + mods/ITEMS/mcl_tnt/locale/template.txt | 5 + mods/ITEMS/mcl_tools/locale/template.txt | 29 ++ mods/ITEMS/mcl_torches/locale/template.txt | 3 + mods/ITEMS/mcl_totems/locale/template.txt | 0 mods/ITEMS/mcl_walls/locale/template.txt | 16 + mods/ITEMS/mcl_wool/locale/template.txt | 35 ++ mods/ITEMS/mclx_core/locale/template.txt | 5 + mods/ITEMS/mclx_fences/locale/template.txt | 4 + mods/ITEMS/mclx_stairs/locale/template.txt | 31 ++ .../3d_armor/locale/template.txt | 23 + .../3d_armor_stand/locale/template.txt | 4 + mods/ITEMS/xpanes/locale/template.txt | 21 + mods/MISC/mcl_commands/locale/template.txt | 20 + mods/MISC/mcl_privs/locale/template.txt | 2 + mods/MISC/mcl_wip/locale/template.txt | 3 + .../PLAYER/mcl_playerplus/locale/template.txt | 3 + 79 files changed, 1725 insertions(+) create mode 100644 mods/ENTITIES/mcl_minecarts/locale/template.txt create mode 100644 mods/ENVIRONMENT/lightning/locale/template.txt create mode 100644 mods/ENVIRONMENT/mcl_void_damage/locale/template.txt create mode 100644 mods/HELP/mcl_doc/locale/template.txt create mode 100644 mods/HELP/mcl_doc_basics/locale/template.txt create mode 100644 mods/HUD/mcl_death_messages/locale/template.txt create mode 100644 mods/HUD/mcl_inventory/locale/template.txt create mode 100644 mods/ITEMS/REDSTONE/mcl_comparators/locale/template.txt create mode 100644 mods/ITEMS/REDSTONE/mcl_dispensers/locale/template.txt create mode 100644 mods/ITEMS/REDSTONE/mcl_droppers/locale/template.txt create mode 100644 mods/ITEMS/REDSTONE/mcl_observers/locale/template.txt create mode 100644 mods/ITEMS/REDSTONE/mesecons_button/locale/template.txt create mode 100644 mods/ITEMS/REDSTONE/mesecons_commandblock/locale/template.txt create mode 100644 mods/ITEMS/REDSTONE/mesecons_delayer/locale/template.txt create mode 100644 mods/ITEMS/REDSTONE/mesecons_lightstone/locale/template.txt create mode 100644 mods/ITEMS/REDSTONE/mesecons_noteblock/locale/template.txt create mode 100644 mods/ITEMS/REDSTONE/mesecons_pistons/locale/template.txt create mode 100644 mods/ITEMS/REDSTONE/mesecons_pressureplates/locale/template.txt create mode 100644 mods/ITEMS/REDSTONE/mesecons_solarpanel/locale/template.txt create mode 100644 mods/ITEMS/REDSTONE/mesecons_torch/locale/template.txt create mode 100644 mods/ITEMS/REDSTONE/mesecons_walllever/locale/template.txt create mode 100644 mods/ITEMS/REDSTONE/mesecons_wires/locale/template.txt create mode 100644 mods/ITEMS/mcl_anvils/locale/template.txt create mode 100644 mods/ITEMS/mcl_banners/locale/template.txt create mode 100644 mods/ITEMS/mcl_beds/locale/template.txt create mode 100644 mods/ITEMS/mcl_books/locale/template.txt create mode 100644 mods/ITEMS/mcl_bows/locale/template.txt create mode 100644 mods/ITEMS/mcl_buckets/locale/template.txt create mode 100644 mods/ITEMS/mcl_cake/locale/template.txt create mode 100644 mods/ITEMS/mcl_cauldrons/locale/template.txt create mode 100644 mods/ITEMS/mcl_chests/locale/template.txt create mode 100644 mods/ITEMS/mcl_clock/locale/template.txt create mode 100644 mods/ITEMS/mcl_cocoas/locale/template.txt create mode 100644 mods/ITEMS/mcl_colorblocks/locale/template.txt create mode 100644 mods/ITEMS/mcl_compass/locale/template.txt create mode 100644 mods/ITEMS/mcl_crafting_table/locale/template.txt create mode 100644 mods/ITEMS/mcl_doors/locale/template.txt create mode 100644 mods/ITEMS/mcl_dye/locale/template.txt create mode 100644 mods/ITEMS/mcl_end/locale/template.txt create mode 100644 mods/ITEMS/mcl_farming/locale/template.txt create mode 100644 mods/ITEMS/mcl_fences/locale/template.txt create mode 100644 mods/ITEMS/mcl_fire/locale/template.txt create mode 100644 mods/ITEMS/mcl_fishing/locale/template.txt create mode 100644 mods/ITEMS/mcl_flowerpots/locale/template.txt create mode 100644 mods/ITEMS/mcl_flowers/locale/template.txt create mode 100644 mods/ITEMS/mcl_furnaces/locale/template.txt create mode 100644 mods/ITEMS/mcl_heads/locale/template.txt create mode 100644 mods/ITEMS/mcl_hoppers/locale/template.txt create mode 100644 mods/ITEMS/mcl_itemframes/locale/template.txt create mode 100644 mods/ITEMS/mcl_jukebox/locale/template.txt create mode 100644 mods/ITEMS/mcl_maps/locale/template.txt create mode 100644 mods/ITEMS/mcl_mobitems/locale/template.txt create mode 100644 mods/ITEMS/mcl_mobspawners/locale/template.txt create mode 100644 mods/ITEMS/mcl_monster_eggs/locale/template.txt create mode 100644 mods/ITEMS/mcl_mushrooms/locale/template.txt create mode 100644 mods/ITEMS/mcl_nether/locale/template.txt create mode 100644 mods/ITEMS/mcl_ocean/locale/template.txt create mode 100644 mods/ITEMS/mcl_portals/locale/template.txt create mode 100644 mods/ITEMS/mcl_potions/locale/template.txt create mode 100644 mods/ITEMS/mcl_signs/locale/template.txt create mode 100644 mods/ITEMS/mcl_sponges/locale/template.txt create mode 100644 mods/ITEMS/mcl_stairs/locale/template.txt create mode 100644 mods/ITEMS/mcl_throwing/locale/template.txt create mode 100644 mods/ITEMS/mcl_tnt/locale/template.txt create mode 100644 mods/ITEMS/mcl_tools/locale/template.txt create mode 100644 mods/ITEMS/mcl_torches/locale/template.txt create mode 100644 mods/ITEMS/mcl_totems/locale/template.txt create mode 100644 mods/ITEMS/mcl_walls/locale/template.txt create mode 100644 mods/ITEMS/mcl_wool/locale/template.txt create mode 100644 mods/ITEMS/mclx_core/locale/template.txt create mode 100644 mods/ITEMS/mclx_fences/locale/template.txt create mode 100644 mods/ITEMS/mclx_stairs/locale/template.txt create mode 100644 mods/ITEMS/minetest-3d_armor/3d_armor/locale/template.txt create mode 100644 mods/ITEMS/minetest-3d_armor/3d_armor_stand/locale/template.txt create mode 100644 mods/ITEMS/xpanes/locale/template.txt create mode 100644 mods/MISC/mcl_commands/locale/template.txt create mode 100644 mods/MISC/mcl_privs/locale/template.txt create mode 100644 mods/MISC/mcl_wip/locale/template.txt create mode 100644 mods/PLAYER/mcl_playerplus/locale/template.txt diff --git a/mods/ENTITIES/mcl_minecarts/locale/template.txt b/mods/ENTITIES/mcl_minecarts/locale/template.txt new file mode 100644 index 00000000..74bd547b --- /dev/null +++ b/mods/ENTITIES/mcl_minecarts/locale/template.txt @@ -0,0 +1,23 @@ +# textdomain: mcl_minecarts +Minecart= +Minecarts can be used for a quick transportion on rails.= +Minecarts only ride on rails and always follow the tracks. At a T-junction with no straight way ahead, they turn left. The speed is affected by the rail type.= +You can place the minecart on rails. Right-click it to enter it. Punch it to get it moving.= +To obtain the minecart, punch it while holding down the sneak key.= +Minecart with Chest= +Minecart with Furnace= +Minecart with Command Block= +Minecart with Hopper= +Minecart with TNT= +Place them on the ground to build your railway, the rails will automatically connect to each other and will turn into curves, T-junctions, crossings and slopes as needed.= +Rail= +Rails can be used to build transport tracks for minecarts. Normal rails slightly slow down minecarts due to friction.= +Powered Rail= +Rails can be used to build transport tracks for minecarts. Powered rails are able to accelerate and brake minecarts.= +Without redstone power, the rail will brake minecarts. To make this rail accelerate minecarts, power it with redstone power.= +Activator Rail= +Rails can be used to build transport tracks for minecarts. Activator rails are used to activate special minecarts.= +To make this rail activate minecarts, power it with redstone power and send a minecart over this piece of rail.= +Detector Rail= +Rails can be used to build transport tracks for minecarts. A detector rail is able to detect a minecart above it and powers redstone mechanisms.= +To detect a minecart and provide redstone power, connect it to redstone trails or redstone mechanisms and send any minecart over the rail.= diff --git a/mods/ENVIRONMENT/lightning/locale/template.txt b/mods/ENVIRONMENT/lightning/locale/template.txt new file mode 100644 index 00000000..2c07393f --- /dev/null +++ b/mods/ENVIRONMENT/lightning/locale/template.txt @@ -0,0 +1,4 @@ +# textdomain: lightning +@1 was struck by lightning.= +Let lightning strike at the specified position or yourself= +No position specified and unknown player= diff --git a/mods/ENVIRONMENT/mcl_void_damage/locale/template.txt b/mods/ENVIRONMENT/mcl_void_damage/locale/template.txt new file mode 100644 index 00000000..db9050e2 --- /dev/null +++ b/mods/ENVIRONMENT/mcl_void_damage/locale/template.txt @@ -0,0 +1,3 @@ +# textdomain: mcl_void_damage +The void is off-limits to you!= +@1 fell into the endless void.= diff --git a/mods/HELP/mcl_doc/locale/template.txt b/mods/HELP/mcl_doc/locale/template.txt new file mode 100644 index 00000000..da297a3e --- /dev/null +++ b/mods/HELP/mcl_doc/locale/template.txt @@ -0,0 +1,54 @@ +# textdomain: mcl_doc +Water can flow into this block and cause it to drop as an item.= +This block can be turned into dirt with a hoe.= +This block can be turned into farmland with a hoe.= +This block acts as a soil for all saplings.= +This block acts as a soil for some saplings.= +Sugar canes will grow on this block.= +Nether wart will grow on this block.= +This block quickly decays when there is no wood block of any species within a distance of @1. When decaying, it disappears and may drop one of its regular drops. The block does not decay when the block has been placed by a player.= +This block quickly decays and disappears when there is no wood block of any species within a distance of @1. The block does not decay when the block has been placed by a player.= +This plant can only grow on grass blocks and dirt. To survive, it needs to have an unobstructed view to the sky above or be exposed to a light level of 8 or higher.= +This plant can grow on grass blocks, podzol, dirt and coarse dirt. To survive, it needs to have an unobstructed view to the sky above or be exposed to a light level of 8 or higher.= +This block is flammable.= +This block destroys any item it touches.= +To eat it, wield it, then rightclick.= +You can eat this even when your hunger bar is full.= +You cannot eat this when your hunger bar is full.= +To drink it, wield it, then rightclick.= +You cannot drink this when your hunger bar is full.= +To consume it, wield it, then rightclick.= +You cannot consume this when your hunger bar is full.= +You have to wait for about 2 seconds before you can eat or drink again.= +Hunger points restored: @1= +Saturation points restored: @1%.1f= +This item can be repaired at an anvil with: @1.= +This item can be repaired at an anvil with any wooden planks.= +This item can be repaired at an anvil with any item in the “@1” group.= +This item cannot be renamed at an anvil.= +This block crushes any block it falls into.= +When this block falls deeper than 1 block, it causes damage to any player it hits. The damage dealt is B×2−2 hit points with B @= number of blocks fallen. The damage can never be more than 40 HP.= +Diamond Pickaxe= +Iron Pickaxe= +Stone Pickaxe= +Golden Pickaxe= +Wooden Pickaxe= +Diamond Axe= +Iron Axe= +Stone Axe= +Golden Axe= +Wooden Axe= +Diamond Shovel= +Iron Shovel= +Stone Shovel= +Golden Shovel= +Wooden Shovel= +This block can be mined by any tool instantly.= +This block can be mined by:= +Hardness: ∞= +Hardness: @1= +This block will not be destroyed by TNT explosions.= +This block drops itself when mined by shears.= +@1×@2= +This blocks drops the following when mined by shears: @1= +, = diff --git a/mods/HELP/mcl_doc_basics/locale/template.txt b/mods/HELP/mcl_doc_basics/locale/template.txt new file mode 100644 index 00000000..0fcc0f3b --- /dev/null +++ b/mods/HELP/mcl_doc_basics/locale/template.txt @@ -0,0 +1,465 @@ +# textdomain: mcl_doc_basics +Basics= +Everything you need to know about MineClone 2 to get started with playing= +Advanced usage= +Advanced information about Minetest which may be nice to know, but is not crucial to gameplay= +Quick start= +This is a very brief introduction to the basic gameplay:= +Basic controls:= +• Move mouse to look= +• [W], [A], [S] and [D] to move= +• [E] to sprint= +• [Space] to jump or move upwards= +• [Shift] to sneak or move downwards= +• Mouse wheel or [1]-[9] to select item= +• Left-click to mine blocks or attack= +• Recover from swings to deal full damage= +• Right-click to build blocks and use things= +• [I] for the inventory= +• Lowest row in inventory appears in hotbar below= +• [Esc] to close this window= +How to play:= +• Punch a tree trunk until it breaks and collect wood= +• Place the wood into the 2×2 grid (your “crafting grid”) in your inventory menu and craft 4 wood planks= +• Place them in a 2×2 shape in the crafting grid to craft a crafting table= +• Place the crafting table on the ground= +• Rightclick it for a 3×3 crafting grid= +• Use the crafting guide (book icon) to learn all the possible crafting recipes= +• Craft a wooden pickaxe so you can dig stone= +• Different tools break different kinds of blocks. Try them out!= +• Read entries in this help to learn the rest= +• Continue playing as you wish. There's no goal. Have fun!= +Minetest= +Minetest is a free software game engine for games based on voxel gameplay, inspired by InfiniMiner, Minecraft, and the like. Minetest was originally created by Perttu Ahola (alias “celeron55”).= +The player is thrown into a huge world made out of cubes or blocks. These cubes usually make the landscape they blocks can be removed and placed almost entirely freely. Using the collected items, new tools and other items can be crafted. Games in Minetest can, however, be much more complex than this.= +A core feature of Minetest is the built-in modding capability. Mods modify existing gameplay. They can be as simple as adding a few decorative blocks or be very complex by e.g. introducing completely new gameplay concepts, generating a completely different kind of world, and many other things.= +Minetest can be played alone or online together with multiple players. Online play will work out of the box with any mods, with no need for additional software as they are entirely provided by the server.= +Minetest is usually bundled with a simple default game, named “Minetest Game” (shown in images 1 and 2). You probably already have it. Other games for Minetest can be downloaded from the official Minetest forums .= +Minetest as well as Minetest Game are both unfinished at the moment, so please forgive us when not everything works out perfectly.= +Sneaking= +Sneaking makes you walk slower and prevents you from falling off the edge of a block.= +To sneak, hold down the sneak key (default: [Shift]). When you release it, you stop sneaking. Careful: When you release the sneak key at a ledge, you might fall!= +• Sneak: [Shift]= +Sneaking only works when you stand on solid ground, are not in a liquid and don't climb.= +If you jump while holding the sneak key, you also jump slightly higher than usual.= +Sneaking might be disabled by mods. In this case, you still walk slower by sneaking, but you will no longer be stopped at ledges.= +Controls= +These are the default controls:= +Basic movement:= +• Moving the mouse around: Look around= +• W: Move forwards= +• A: Move to the left= +• D: Move to the right= +• S: Move backwards= +• E: Sprint= +While standing on solid ground:= +• Space: Jump= +• Shift: Sneak= +While on a ladder, swimming in a liquid or fly mode is active= +• Space: Move up= +• Shift: Move down= +Extended movement (requires privileges):= +• J: Toggle fast mode, makes you run or fly fast (requires “fast” privilege)= +• K: Toggle fly mode, makes you move freely in all directions (requires “fly” privilege)= +• H: Toggle noclip mode, makes you go through walls in fly mode (requires “noclip” privilege)= +• E: Move even faster when in fast mode= +World interaction:= +• Left mouse button: Punch / mine blocks / take items= +• Right mouse button: Build or use pointed block= +• Shift+Right mouse button: Build= +• Roll mouse wheel: Select next/previous item in hotbar= +• 1-9: Select item in hotbar directly= +• Q: Drop item stack= +• Shift+Q: Drop 1 item= +• I: Show/hide inventory menu= +Inventory interaction:= +See the entry “Basics > Inventory”.= +Camera:= +• Z: Zoom (requires “zoom” privilege)= +• F7: Toggle camera mode= +• F8: Toggle cinematic mode= +Interface:= +• Esc: Open menu window (pauses in single-player mode) or close window= +• F1: Show/hide HUD= +• F2: Show/hide chat= +• F9: Toggle minimap (only works if have a map)= +• Shift+F9: Toggle minimap rotation mode= +• F10: Open/close console/chat log= +• F12: Take a screenshot= +Server interaction:= +• T: Open chat window (chat requires the “shout” privilege)= +• /: Start issuing a server command)= +Technical:= +• R: Toggle far view (disables all fog and allows viewing far away, can make game very slow)= +• +: Increase minimal viewing distance= +• -: Decrease minimal viewing distance= +• F3: Enable/disable fog= +• F5: Enable/disable debug screen which also shows your coordinates= +• F6: Only useful for developers. Enables/disables profiler= +• P: Only useful for developers. Writes current stack traces= +Players= +Players (actually: “player characters”) are the characters which users control.= +Players are living beings which occupy a space of about 1×2×1 cubes. They start with 20 health points (HP) and 10 breath points (BP).= +Players are capable of walking, sneaking, jumping, climbing, swimming, diving, mining, building, fighting and using tools and blocks.= +At a health of 0, the player dies and loses all items in the inventory. The player can just respawn in the world.= +Some blocks reduce breath. While being with the head in a block which causes drowning, the breath points are reduced by 1 for every 2 seconds. When all breath is gone, the player starts to suffer drowning damage. Breath is quickly restored in any other block.= +Damage can be disabled on any world. Without damage, players are immortal and health and breath are unimportant.= +In multi-player mode, the name of other players is written above their head.= +Items= +Items are things you can carry along and store in inventories. They can be used for crafting, smelting, building, mining, and more. Types of items include blocks, tools, weapons and items only used for crafting.= +An item stack is a collection of items of the same type which fits into a single item slot. Item stacks can be dropped on the ground. Items which drop into the same coordinates will form an item stack.= +Dropped item stacks will be collected automatically when you stand close to them.= +Tools= +Some items may serve as a tool when wielded. Any item which has some special use which can be directly used by its wielder is considered a tool.= +Mining tools are important to break all kinds of blocks. Weapons are another kind of tool. There are some other more specialized tools. Special actions of tools are usually done by right-click.= +When nothing is wielded, players use their hand which may act as tool and weapon. The hand is capable of punching and deals minimum damage.= +Many tools will wear off when using them and may eventually get destroyed. The damage is displayed in a damage bar below the tool icon. If no damage bar is shown, the tool is in mint condition. Tools may be repairable by crafting, see “Basics > Crafting”.= +Weapons= +Some items are usable as a melee weapon when wielded. Weapons share most of the properties of tools.= +Melee weapons deal damage by punching players and other animate objects. There are two ways to attack:= +• Single punch: Left-click once to deal a single punch= +• Quick punching: Hold down the left mouse button to deal quick repeated punches= +There are two core attributes of melee weapons:= +• Maximum damage: Damage which is dealt after a hit when the weapon was fully recovered)= +• Full punch interval: Time it takes for fully recovering from a punch= +A weapon only deals full damage when it has fully recovered from a previous punch. Otherwise, the weapon will deal only reduced damage. This means, quick punching is very fast, but also deals rather low damage. Note the full punch interval does not limit how fast you can attack.= +There is a rule which sometimes makes attacks impossible: Players, animate objects and weapons belong to damage groups. A weapon only deals damage to those who share at least one damage group with it. So if you're using the wrong weapon, you might not deal any damage at all.= +Pointing= +“Pointing” means looking at something in range with the crosshair. Pointing is needed for interaction, like mining, punching, using, etc. Pointable things include blocks, dropped items, players, computer enemies and objects.= +To point something, it must be in the pointing range (also just called “range”) of your wielded item. There's a default range when you are not wielding anything. A pointed thing will be outlined or highlighted (depending on your settings). Pointing is not possible with the 3rd person front camera.= +A few things can not be pointed. Most blocks are pointable. A few blocks, like air, can never be pointed. Other blocks, like liquids can only be pointed by special items.= +Camera= +You can change the camera mode by pressing [F7].= +There is also Cinematic Mode which can be toggled with [F8]. With Cinematic Mode enabled, the camera movements become more smooth. Some players don't like it, it is a matter of taste.= +By holding down [Z], you can zoom the view at your crosshair. You need the “zoom” privilege to do this.= +• Switch camera mode: [F7]= +• Toggle Cinematic Mode: [F8]= +• Zoom: [Z]= +Blocks= +The world of MineClone 2 is made entirely out of blocks (voxels, to be precise). Blocks can be added or removed with the correct tools.= +Blocks can have a wide range of different properties which determine mining times, behavior, looks, shape, and much more. Their properties include:= +• Collidable: Collidable blocks can not be passed through; players can walk on them. Non-collidable blocks can be passed through freely= +• Pointable: Pointable blocks show a wireframe or a halo box when pointed. But you will just point through non-pointable blocks. Liquids are usually non-pointable but they can be pointed at by some special tools= +• Mining properties: By which tools it can be mined, how fast and how much it wears off tools= +• Climbable: While you are at a climbable block, you won't fall and you can move up and down with the jump and sneak keys= +• Drowning damage: See the entry “Basics > Player”= +• Liquids: See the entry “Basics > Liquids”= +• Group memberships: Group memberships are used to determine mining properties, crafting, interactions between blocks and more= +Mining= +Mining (or digging) is the process of breaking blocks to remove them. To mine a block, point it and hold down the left mouse button until it breaks.= +Blocks require a mining tool to be mined. Different blocks are mined by different mining tools, and some blocks can not be mined by any tool. Blocks vary in hardness and tools vary in strength. Mining tools will wear off over time. The mining time and the tool wear depend on the block and the mining tool. The fastest way to find out how efficient your mining tools are is by just trying them out on various blocks. Any items you gather by mining will drop on the ground, ready to be collected.= +After mining, a block may leave a “drop” behind. This is a number of items you get after mining. Most commonly, you will get the block itself. There are other possibilities for a drop which depends on the block type. The following drops are possible:= +• Always drops itself (the usual case)= +• Always drops the same items= +• Drops items based on probability= +• Drops nothing= +Building= +Almost all blocks can be built (or placed). Building is very simple and has no delay.= +To build your wielded block, point at a block in the world and right-click. If this is not possible because the pointed block has a special right-click action, hold down the sneak key before right-clicking.= +Blocks can almost always be built at pointable blocks. One exception are blocks attached to the floor; these can only be built on the floor.= +Normally, blocks are built in front of the pointed side of the pointed block. A few blocks are different: When you try to build at them, they are replaced.= +Liquids= +Liquids are special dynamic blocks. Liquids like to spread and flow to their surrounding blocks. Players can swim and drown in them.= +Liquids usually come in two forms: In source form (S) and in flowing form (F).= +Liquid sources have the shape of a full cube. A liquid source will generate flowing liquids around it from time to time, and, if the liquid is renewable, it also generates liquid sources. A liquid source can sustain itself. A long it is left alone, a liquid source will normally keep its place and does not drain out.= +Flowing liquids take a sloped form. Flowing liquids spread around the world until they drain. A flowing liquid can not sustain itself and always comes from a liquid source, either directly or indirectly. Without a liquid source, a flowing liquid will eventually drain out and disappear.= +All liquids share the following properties:= +• All properties of blocks (including drowning damage= +• Renewability: Renewable liquids can create new sources= +• Flowing range: How many flowing liquids are created at maximum per liquid source, it determines how far the liquid will spread. Possible are ranges from 0 to 8. At 0, no flowing liquids will be created. Image 5 shows a liquid of flowing range 2= +• Viscosity: How slow players move through it and how slow the liquid spreads= +When those criteria are met, the open space is filled with a new liquid source of the same type (image 3).= +Swimming in a liquid is fairly straightforward: The usual direction keys for basic movement, the jump key for rising and the sneak key for sinking.= +The physics for swimming and diving in a liquid are:= +• The higher the viscosity, the slower you move= +• If you rest, you'll slowly sink= +• There is no fall damage for falling into a liquid as such= +• If you fall into a liquid, you will be slowed down on impact (but don't stop instantly). Your impact depth is determined by your speed and the liquid viscosity. For a safe high drop into a liquid, make sure there is enough liquid above the ground, otherwise you might hit the ground and take fall damage= +Liquids are often not pointable. But some special items are able to point all liquids.= +Crafting= +Crafting is the task of combining several items to form a new item.= +To craft something, you need one or more items, a crafting grid (C) and a crafting recipe. A crafting grid is like a normal inventory which can also be used for crafting. Items need to be put in a certain pattern into the crafting grid. Next to the crafting grid is an output slot (O). Here the result will appear when you placed items correctly. This is just a preview, not the actual item. Crafting grids can come in different sizes which limits the possible recipes you can craft.= +To complete the craft, take the result item from the output slot, which will consume items from the crafting grid and creates a new item. It is not possible to place items into the output slot.= +A description on how to craft an item is called a “crafting recipe”. These crafting recipes can be found in the crafting guide which you can access from the inventory menu.= +Crafting recipes consist of at least one input item and exactly one stack of output items. When performing a single craft, it will consume exactly one item from each stack of the crafting grid, unless the crafting recipe defines replacements.= +In some crafting recipes, some input items do not need to be a concrete item, instead they need to be a member of a group (see “Basics > Groups”). These recipes offer a bit more freedom in the input items. Images 6-8 show the same group-based recipe. Here, 8 items of the “stone” group are required, which is true for all of the shown items.= +Rarely, crafting recipes have replacements. This means, whenever you perform a craft, some items in the crafting grid will not be consumed, but instead will be replaced by another item.= +Cooking= +Cooking (or smelting) is a form of crafting which does not involve a crafting grid. Cooking is done with a furnace, an cookable item, a fuel item and time in order to yield a new item.= +Each fuel item has a burning time. This is the time a single item of the fuel keeps a furnace burning.= +Each cookable item requires time to be cooked. This time is specific to the item type and the item must be “on fire” for the whole cooking time to actually yield the result.= +Hotbar= +At the bottom of the screen you see some squares. This is called the “hotbar”. The hotbar allows you to quickly access the lowest row of items in the player inventory.= +You can change the selected item with the mouse wheel or the number keys.= +• Select previous item in hotbar: [Mouse wheel up]= +• Select next item in hotbar: [Mouse wheel down]= +• Select item in hotbar directly: [0]-[9]= +The selected item is also your wielded item.= +Minimap= +If you have a map item in any of your hotbar slots, you can use the minimap.= +Press [F9] to make a minimap appear on the top right. The minimap helps you to find your way around the world. Press it again to select different minimap modes and zoom levels. The minimap also shows the positions of other players.= +There are 2 minimap modes and 3 zoom levels.= +Surface mode (image 1) is a top-down view of the world, roughly resembling the colors of the blocks this world is made of. It only shows the topmost blocks, everything below is hidden, like a satellite photo. Surface mode is useful if you got lost.= +Radar mode (image 2) is more complicated. It displays the “denseness” of the area around you and changes with your height. Roughly, the more green an area is, the less “dense” it is. Black areas have many blocks. Use the radar to find caverns, hidden areas, walls and more. The rectangular shapes in image 2 clearly expose the position of a dungeon. Radar mode is only available in Creative Mode= +There are also two different rotation modes. In “square mode”, the rotation of the minimap is fixed. If you press [Shift]+[F9] to switch to “circle mode”, the minimap will instead rotate with your looking direction, so “up” is always your looking direction.= +In other games, the minimap may be disabled.= +• Toggle minimap mode: [F9]= +• Toggle minimap rotation mode: [Shift]+[F9]= +Inventories are used to store item stacks. There are other uses, such as crafting. An inventory consists of a rectangular grid of item slots. Each item slot can either be empty or hold one item stack. Item stacks can be moved freely between most slots.= +You have your own inventory which is called your “player inventory”, you can open it with the inventory key (default: [I]). The first inventory slots are also used as slots in your hotbar.= +Blocks can also have their own inventory, e.g. chests and furnaces.= +Inventory controls:= +Taking: You can take items from an occupied slot if the cursor holds nothing.= +• Left click: take entire item stack= +• Right click: take half from the item stack (rounded up)= +• Middle click: take 10 items from the item stack= +Putting: You can put items onto a slot if the cursor holds 1 or more items and the slot is either empty or contains an item stack of the same item type.= +• Left click: put entire item stack= +• Right click: put 1 item of the item stack= +• Middle click: put 10 items of the item stack= +Exchanging: You can exchange items if the cursor holds 1 or more items and the destination slot is occupied by a different item type.= +• Click: exchange item stacks= +Throwing away: If you hold an item stack and click with it somewhere outside the menu, the item stack gets thrown away into the environment.= +Quick transfer: You can quickly transfer an item stack to/from the player inventory to/from another item's inventory slot like a furnace, chest, or any other item with an inventory slot when that item's inventory is accessed. The target inventory is generally the most relevant inventory in this context.= +• Sneak+Left click: Automatically transfer item stack= +Online help= +You may want to check out these online resources related to MineClone 2.= +MineClone 2 download and forum discussion: = +Here you find the most recent version of MineClone 2 and can discuss it.= +Bug tracker: = +Report bugs here.= +Minetest links:= +Official homepage of Minetest: = +The main place to find the most recent version of Minetest, the engine used by MineClone 2.= +Community wiki: = +A community-based documentation website for Minetest. Anyone with an account can edit it.= +Minetest forums: = +A web-based discussion platform where you can discuss everything related to Minetest. This is also a place where player-made mods and games are published and discussed. The discussions are mainly in English, but there is also space for discussion in other languages.= +Chat: = +A generic Internet Relay Chat channel for everything related to Minetest where people can meet to discuss in real-time. If you do not understand IRC, see the Community Wiki for help.= +Groups= +Items, players and objects (animate and inanimate) can be members of any number of groups. Groups serve multiple purposes:= +• Crafting recipes: Slots in a crafting recipe may not require a specific item, but instead an item which is a member of a particular group, or multiple groups= +• Digging times: Diggable blocks belong to groups which are used to determine digging times. Mining tools are capable of digging blocks belonging to certain groups= +• Block behavior: Blocks may show a special behaviour and interact with other blocks when they belong to a particular group= +• Damage and armor: Objects and players have armor groups, weapons have damage groups. These groups determine damage. See also: “Basics > Weapons”= +• Other uses= +In the item help, many important groups are usually mentioned and explained.= +Glossary= +This is a list of commonly used terms:= +Controls:= +• Wielding: Holding an item in hand= +• Pointing: Looking with the crosshair at something in range= +• Dropping: Throwing an item or item stack to the ground= +• Punching: Attacking with left-click, is also used on blocks= +• Sneaking: Walking slowly while (usually) avoiding to fall over edges= +• Climbing: Moving up or down a climbable block= +Blocks:= +• Block: Cubes that the worlds are made of= +• Mining/digging: Using a mining tool to break a block= +• Building/placing: Putting a block somewhere= +• Drop: Items you get after mining a block= +• Using a block: Right-clicking a block to access its special function= +Items:= +• Item: A single thing that players can possess= +• Item stack: A collection of items of the same kind= +• Maximum stack size: Maximum amount of items in an item stack= +• Slot / inventory slot: Can hold one item stack= +• Inventory: Provides several inventory slots for storage= +• Player inventory: The main inventory of a player= +• Tool: An item which you can use to do special things with when wielding= +• Range: How far away things can be to be pointed by an item= +• Mining tool: A tool which allows to break blocks= +• Craftitem: An item which is (primarily or only) used for crafting= +Gameplay:= +• “heart”: A single health symbol, indicates 2 HP= +• “bubble”: A single breath symbol, indicates 1 BP= +• HP: Hit point (equals a half “heart”)= +• BP: Breath point, indicates breath when diving= +• Mob: Computer-controlled enemy= +• Crafting: Combining multiple items to create new ones= +• Crafting guide: A helper which shows available crafting recipes= +• Spawning: Appearing in the world= +• Respawning: Appearing again in the world after death= +• Group: Puts similar things together, often affects gameplay= +• noclip: Allows to fly through walls= +Interface= +• Hotbar: Inventory slots at the bottom= +• Statbar: Indicator made out of half-symbols, used for health and breath= +• Minimap: The map or radar at the top right= +• Crosshair: Seen in the middle, used to point at things= +Online multiplayer:= +• PvP: Player vs Player. If active, players can deal damage to each other= +• Griefing: Destroying the buildings of other players against their will= +• Protection: Mechanism to own areas of the world, which only allows the owners to modify blocks inside= +Technical terms:= +• Minetest: This game engine= +• MineClone 2: What you play right now= +• Minetest Game: A game for Minetest by the Minetest developers= +• Game: A complete playing experience to be used in Minetest; such as a game or sandbox or similar= +• Mod: A single subsystem which adds or modifies functionality; is the basic building block of games and can be used to further enhance or modify them= +• Privilege: Allows a player to do something= +• Node: Other word for “block”= +Settings= +There is a large variety of settings to configure Minetest. Pretty much every aspect can be changed that way.= +These are a few of the most important gameplay settings:= +• Damage enabled (enable_damage): Enables the health and breath attributes for all players. If disabled, players are immortal= +• Creative Mode (creative_mode): Enables sandbox-style gameplay focusing on creativity rather than a challenging gameplay. Changes include: Instant digging, easy access to almost all items, tools never wear off, etc.= +• PvP (enable_pvp): Short for “Player vs Player”. If enabled, players can deal damage to each other= +For a full list of all available settings, use the “Advanced settings” dialog in the main menu.= +Movement modes= +If you have the required privileges, you can use up to three special movement modes. Using these may be considered cheating.= +Fast mode:= +• Description: Allows you to move much faster. Hold down the the “Use” key [E] to move faster. In the client configuration, you can further customize fast mode.= +• Default key: [J]= +• Required privilege: fast= +Fly mode:= +• Description: Gravity doesn't affect you and you can move freely in all directions. Use the jump key to rise and the sneak key to sink.= +• Default key: [K]= +• Required privilege: fly= +Noclip mode:= +• Description: Allows you to move through walls. Only works when fly mode is enabled, too.= +• Default key: [H]= +• Required privilege: noclip= +Console= +With [F10] you can open and close the console. The main use of the console is to show the chat log and enter chat messages or server commands.= +Using the chat or server command key also opens the console, but it is smaller and will be closed after you sent a message.= +Use the chat to communicate with other players. This requires you to have the “shout” privilege.= +Just type in the message and hit [Enter]. Public chat messages can not begin with “/”.= +You can send private messages: Say “/msg ” in chat to send “” which can only be seen by .= +There are some special controls for the console:= +• [F10] Open/close console= +• [Enter]: Send message or command= +• [Tab]: Try to auto-complete a partially-entered player name= +• [Ctrl]+[Left]: Move cursor to the beginning of the previous word= +• [Ctrl]+[Right]: Move cursor to the beginning of the next word= +• [Ctrl]+[Backspace]: Delete previous word= +• [Ctrl]+[Delete]: Delete next word= +• [Ctrl]+[U]: Delete all text before the cursor= +• [Ctrl]+[K]: Delete all text after the cursor= +• [Page up]: Scroll up= +• [Page down]: Scroll down= +There is also an input history. Minetest saves your previous console inputs which you can quickly access later:= +• [Up]: Go to previous entry in history= +• [Down]: Go to next entry in history= +Server commands= +Server commands (also called “chat commands”) are little helpers for advanced users. You don't need to use these commands when playing. But they might come in handy to perform some more technical tasks. Server commands work both in multi-player and single-player mode.= +Server commands can be entered by players using the chat to perform a special server action. There are a few commands which can be issued by everyone, but some commands only work if you have certain privileges granted on the server. There is a small set of basic commands which are always available, other commands can be added by mods.= +To issue a command, simply type it like a chat message or press Minetest's command key (default: [/]). All commands have to begin with “/”, for example “/mods”. The Minetest command key does the same as the chat key, except that the slash is already entered.= +Commands may or may not give a response in the chat log, but errors will generally be shown in the chat. Try it for yourselves: Close this window and type in the “/mods” command. This will give you the list of available mods on this server.= +“/help all” is a very important command: You get a list of all available commands on the server, a short explanation and the allowed parameters. This command is also important because the available commands often differ per server.= +Commands are followed by zero or more parameters.= +In the command reference, you see some placeholders which you need to replace with an actual value. Here's an explanation:= +• Text in greater-than and lower-than signs (e.g. “”): Placeholder for a parameter= +• Anything in square brackets (e.g. “[text]”) is optional and can be omitted= +• Pipe or slash (e.g. “text1 | text2 | text3”): Alternation. One of multiple texts must be used (e.g. “text2”)= +• Parenthesis: (e.g. “(word1 word2) | word3”): Groups multiple words together, used for alternations= +• Everything else is to be read as literal text= +Here are some examples to illustrate the command syntax:= +• /mods: No parameters. Just enter “/mods”= +• /me : 1 parameter. You have to enter “/me ” followed by any text, e.g. “/me orders pizza”= +• /give : Two parameters. Example: “/give Player default:apple”= +• /help [all|privs|]: Valid inputs are “/help”, “/help all”, “/help privs”, or “/help ” followed by a command name, like “/help time”= +• /spawnentity [,,]: Valid inputs include “/spawnentity boats:boat” and “/spawnentity boats:boat 0,0,0”= +Some final remarks:= +• For /give and /giveme, you need an itemstring. This is an internally used unique item identifier which you may find in the item help if you have the “give” or “debug” privilege= +• For /spawnentity you need an entity name, which is another identifier= +Privileges= +Each player has a set of privileges, which differs from server to server. Your privileges determine what you can and can't do. Privileges can be granted and revoked from other players by any player who has the privilege called “privs”.= +On a multiplayer server with the default configuration, new players start with the privileges called “interact” and “shout”. The “interact” privilege is required for the most basic gameplay actions such as building, mining, using, etc. The “shout” privilege allows to chat.= +There is a small set of core privileges which you'll find on every server, other privileges might be added by mods.= +To view your own privileges, issue the server command “/privs”.= +Here are a few basic privilege-related commands:= +• /privs: Lists your privileges= +• /privs : Lists the privileges of = +• /help privs: Shows a list and description about all privileges= +Players with the “privs” privilege can modify privileges at will:= +• /grant : Grant to = +• /revoke : Revoke from = +In single-player mode, you can use “/grant singleplayer all” to unlock all abilities (which is often considered cheating).= +Light= +As the world is entirely block-based, so is the light in the world. Each block has its own brightness. The brightness of a block is expressed in a “light level” which ranges from 0 (total darkness) to 15 (as bright as the sun).= +There are two types of light: Sunlight and artificial light.= +Artificial light is emitted by luminous blocks. Artificial light has a light level from 1-14.= +Sunlight is the brightest light and always goes perfectly straight down from the sky at each time of the day. blocks. At night, the sunlight will become moonlight instead, which still provides a small amount of light. The light level of sunlight is 15.= +Blocks have 3 levels of transparency:= +• Transparent: Sunlight goes through limitless, artificial light goes through with losses= +• Semi-transparent: Sunlight and artificial light go through with losses= +• Opaque: No light passes through= +Artificial light will lose one level of brightness for each transparent or semi-transparent block it passes through, until only darkness remains (image 1).= +Sunlight will preserve its brightness as long it only passes fully transparent blocks. When it passes through a semi-transparent block, it turns to artificial light. Image 2 shows the difference.= +Note that “transparency” here only means that the block is able to carry brightness from its neighboring blocks. It is possible for a block to be transparent to light but you can't see trough the other side.= +Coordinates= +The world is a large cube. And because of this, a position in the world can be easily expressed with Cartesian coordinates. That is, for each position in the world, there are 3 values X, Y and Z.= +Like this: (5, 45, -12)= +This refers to the position where X@=5, Y@=45 and Z@=-12. The 3 letters are called “axes”: Y is for the height. X and Z are for the horizontal position.= +The values for X, Y and Z work like this:= +• If you go up, Y increases= +• If you go down, Y decreases= +• If you follow the sun, X increases= +• If you go to the reverse direction, X decreases= +• Follow the sun, then go right: Z increases= +• Follow the sun, then go left: Z decreases= +• The side length of a full cube is 1= +You can view your current position in the debug screen (open with [F5]). This is considered cheating in some games.= +Creative Mode= +Enabling Creative Mode in MineClone 2 applies the following changes:= +• You keep the things you've placed= +• Creative inventory is available to obtain most items easily= +• Hand breaks all default blocks instantly= +• Greatly increased hand pointing range= +• Mined blocks don't drop items= +• Items don't get used up= +• Tools don't wear off= +• You can eat food whenever you want= +• You can always use the minimap (including radar mode)= +Damage is not affected by Creative Mode, it needs to be disabled seperately.= +Mobs= +Mobs are the living beings in the world. This includes animals and monsters.= +Mobs appear randomly throughout the world. This is called “spawning”. Each mob kind appears on particular block types at a given light level. The height also plays a role. Peaceful mobs tend to spawn at daylight while hostile ones prefer darkness. Most mobs can spawn on any solid block but some blocks only spawn on particular blocks (like grass blocks).= +Like players, mobs have hit points and sometimes armor points, too (which means you need better weapons to deal any damage at all). Also like players, hostile mobs can attack directly or at a distance. Mobs may drop random items after they die.= +Most animals roam the world aimlessly while most hostile mobs hunt players. Animals can be fed, tamed and bred.= +Animals= +Animals are peaceful beings which roam the world aimlessly. You can feed, tame and breed them.= +Feeding:= +Each animal has its own taste for food and doesn't just accept any food. To feed, hold an item in your hand and rightclick the animal.= +Animals are attraced to the food they like and follow you as long you hold the food item in hand.= +Feeding an animal has three uses: Taming, healing and breeding.= +Feeding heals animals instantly, depending on the quality of the food item.= +Taming:= +A few animals can be tamed. You can generally do more things with tamed animals and use other items on them. For example, tame horses can be saddled and tame wolves fight on your side.= +Breeding:= +When you have fed an animal up to its maximum health, then feed it again, you will activate “Love Mode” and many hearts appear around the animal.= +Two animals of the same species will start to breed if they are in Love Mode and close to each other. Soon a baby animal will pop up.= +Baby animals:= +Baby animals are just like their adult couterparts, but they can't be fed, tamed or bred and don't drop anything when they die. They grow to adults after a short time.= +Hunger= +Hunger affects your health and your ability to sprint. Hunger is not in effect when damage is disabled.= +Core hunger rules:= +• You start with 20/20 hunger points (more points @= less hungry)= +• Actions like combat, jumping, sprinting, etc. decrease hunger points= +• Food restores hunger points= +• If your hunger bar decreases, you're hungry= +• At 18-20 hunger points, you regenerate 1 HP every 4 seconds= +• At 6 hunger points or less, you can't sprint= +• At 0 hunger points, you lose 1 HP every 4 seconds (down to 1 HP)= +• Poisonous food decreases your health= +Details:= +You have 0-20 hunger points, indicated by 20 drumstick half-icons above the hotbar. You also have an invisible attribute: Saturation.= +Hunger points reflect how full you are while saturation points reflect how long it takes until you're hungry again.= +Each food item increases both your hunger level as well your saturation.= +Food with a high saturation boost has the advantage that it will take longer until you get hungry again.= +A few food items might induce food poisoning by chance. When you're poisoned, the health and hunger symbols turn sickly green. Food poisoning drains your health by 1 HP per second, down to 1 HP. Food poisoning also drains your saturation. Food poisoning goes away after a while or when you drink milk.= +You start with 5 saturation points. The maximum saturation is equal to your current hunger level. So with 20 hunger points your maximum saturation is 20. What this means is that food items which restore many saturation points are more effective the more hunger points you have. This is because at low hunger levels, a lot of the saturation boost will be lost due to the low saturation cap.= +If your saturation reaches 0, you're hungry and start to lose hunger points. Whenever you see the hunger bar decrease, it is a good time to eat.= +Saturation decreases by doing things which exhaust you (highest exhaustion first):= +• Regenerating 1 HP= +• Suffering food poisoning= +• Sprint-jumping= +• Sprinting= +• Attacking= +• Taking damage= +• Swimming= +• Jumping= +• Mining a block= +Other actions, like walking, do not exaust you.= diff --git a/mods/HUD/mcl_death_messages/locale/template.txt b/mods/HUD/mcl_death_messages/locale/template.txt new file mode 100644 index 00000000..654b4c66 --- /dev/null +++ b/mods/HUD/mcl_death_messages/locale/template.txt @@ -0,0 +1,53 @@ +# textdomain: mcl_death_messages +%s was fatally hit by an arrow.= +%s has been killed with an arrow.= +%s was shot by an arrow from %s.= +%s forgot to breathe.= +%s drowned.= +%s ran out of oxygen.= +%s was killed by %s.= +%s was killed by a mob.= +%s was burned to death by a blaze's fireball.= +%s was killed by a fireball from a blaze.= +%s was burned by a fire charge.= +A ghast scared %s to death.= +%s has been fireballed by a ghast.= +%s fell from a high cliff.= +%s took fatal fall damage.= +%s fell victim to gravity.= +%s died.= +%s was killed by a zombie.= +%s was killed by a baby zombie.= +%s was killed by a blaze.= +%s was killed by a slime.= +%s was killed by a witch.= +%s was killed by a magma cube.= +%s was killed by a wolf.= +%s was killed by a cat.= +%s was killed by an ocelot.= +%s was killed by an ender dragon.= +%s was killed by a wither.= +%s was killed by an enderman.= +%s was killed by an endermite.= +%s was killed by a ghast.= +%s was killed by an elder guardian.= +%s was killed by a guardian.= +%s was killed by an iron golem.= +%s was killed by a polar_bear.= +%s was killed by a killer bunny.= +%s was killed by a shulker.= +%s was killed by a silverfish.= +%s was killed by a skeleton.= +%s was killed by a stray.= +%s was killed by a slime.= +%s was killed by a spider.= +%s was killed by a cave spider.= +%s was killed by a vex.= +%s was killed by an evoker.= +%s was killed by an illusioner.= +%s was killed by a vindicator.= +%s was killed by a zombie villager.= +%s was killed by a husk.= +%s was killed by a baby husk.= +%s was killed by a zombie pigman.= +%s was killed by a baby zombie pigman.= diff --git a/mods/HUD/mcl_inventory/locale/template.txt b/mods/HUD/mcl_inventory/locale/template.txt new file mode 100644 index 00000000..ed721afb --- /dev/null +++ b/mods/HUD/mcl_inventory/locale/template.txt @@ -0,0 +1 @@ +# textdomain: mcl_inventory diff --git a/mods/ITEMS/REDSTONE/mcl_comparators/locale/template.txt b/mods/ITEMS/REDSTONE/mcl_comparators/locale/template.txt new file mode 100644 index 00000000..7934a4cb --- /dev/null +++ b/mods/ITEMS/REDSTONE/mcl_comparators/locale/template.txt @@ -0,0 +1,9 @@ +# textdomain: mcl_comparators +Redstone comparators are multi-purpose redstone components.= +They can transmit a redstone signal, detect whether a block contains any items and compare multiple signals.= +A redstone comparator has 1 main input, 2 side inputs and 1 output. The output is in arrow direction, the main input is in the opposite direction. The other 2 sides are the side inputs.= +The main input can powered in 2 ways: First, it can be powered directly by redstone power like any other component. Second, it is powered if, and only if a container (like a chest) is placed in front of it and the container contains at least one item.= +The side inputs are only powered by normal redstone power. The redstone can operate in two modes: Transmission mode and subtraction mode. It starts in transmission mode and the mode can be changed by a rightclick.= +Transmission mode:@nThe front torch is unlit and lowered. The output is powered if, and only if the main input is powered. The two side inputs are ignored.= +Subtraction mode:@nThe front torch is lit. The output is powered if, and only if the main input is powered and none of the side inputs is powered.= +Redstone Comparator= diff --git a/mods/ITEMS/REDSTONE/mcl_dispensers/locale/template.txt b/mods/ITEMS/REDSTONE/mcl_dispensers/locale/template.txt new file mode 100644 index 00000000..a7a7fb0e --- /dev/null +++ b/mods/ITEMS/REDSTONE/mcl_dispensers/locale/template.txt @@ -0,0 +1,7 @@ +# textdomain: mcl_dispensers +Dispenser= +A dispenser is a block which acts as a redstone component which, when powered with redstone power, dispenses an item. It has a container with 9 inventory slots.= +Place the dispenser in one of 6 possible directions. The “hole” is where items will fly out of the dispenser. Rightclick the dispenser to access its inventory. Insert the items you wish to dispense. Supply the dispenser with redstone energy once to dispense a single random item.= +The dispenser will do different things, depending on the dispensed item:= +Downwards-Facing Dispenser= +Upwards-Facing Dispenser= diff --git a/mods/ITEMS/REDSTONE/mcl_droppers/locale/template.txt b/mods/ITEMS/REDSTONE/mcl_droppers/locale/template.txt new file mode 100644 index 00000000..312e96cb --- /dev/null +++ b/mods/ITEMS/REDSTONE/mcl_droppers/locale/template.txt @@ -0,0 +1,6 @@ +# textdomain: mcl_droppers +Dropper= +A dropper is a redstone component and a container with 9 inventory slots which, when supplied with redstone power, drops an item or puts it into a container in front of it.= +Droppers can be placed in 6 possible directions, items will be dropped out of the hole. Rightclick the dropper to access its inventory. Supply it with redstone energy once to make the dropper drop or transfer a random item.= +Downwards-Facing Dropper= +Upwards-Facing Dropper= diff --git a/mods/ITEMS/REDSTONE/mcl_observers/locale/template.txt b/mods/ITEMS/REDSTONE/mcl_observers/locale/template.txt new file mode 100644 index 00000000..6f8259f8 --- /dev/null +++ b/mods/ITEMS/REDSTONE/mcl_observers/locale/template.txt @@ -0,0 +1,4 @@ +# textdomain: mcl_observers +Observer= +An observer is a redstone component which observes the block in front of it and sends a very short redstone pulse whenever this block changes.= +Place the observer directly in front of the block you want to observe with the “face” looking at the block. The arrow shows you the side of the output, which is at the opposite side of the “face”. The arrow points to it. You need to place your redstone wire or any other component you want to power here.= diff --git a/mods/ITEMS/REDSTONE/mesecons_button/locale/template.txt b/mods/ITEMS/REDSTONE/mesecons_button/locale/template.txt new file mode 100644 index 00000000..e69de29b diff --git a/mods/ITEMS/REDSTONE/mesecons_commandblock/locale/template.txt b/mods/ITEMS/REDSTONE/mesecons_commandblock/locale/template.txt new file mode 100644 index 00000000..27b496b6 --- /dev/null +++ b/mods/ITEMS/REDSTONE/mesecons_commandblock/locale/template.txt @@ -0,0 +1,14 @@ +# textdomain: mesecons_commandblock +Command Block= +Command blocks are mighty redstone components which are able to alter reality itself. In other words, they cause the server to execute server commands when they are supplied with redstone power.= +To use an already existing command block, just supply it with redstone power and see what happens. This will execute the commands once. To execute the commands again, turn the redstone power off and on again.= +To place a command block and change the commands, you need to be in Creative Mode and must have the “maphack” privilege. A new command block does not have any commands and does nothing. Rightclick the command block (in Creative Mode!) to edit its commands. Read the help entry “Advanced topics > Server Commands” to understand how they work. Each line contains a single command. You enter them like you would in the console, but without the leading slash. The commands will be executed from top to bottom.= +All commands will be executed on behalf of the player who placed the command block, as if the player typed in the commands. This player is said to be the “commander” of the block.= +Command blocks support placeholders, insert one of these placerholders and they will be replaced by a player name:= +• “@c”: commander of this command block= +• “@n” or “@p”: nearest player from the command block= +• “@f” farthest player from the command block= +• “@r”: random player currently in the world= +• “@@”: literal “@” sign= +Example 1:@n time 12000@nSets the game clock to 12:00= +Example 2:@n give @n mcl_core:apple 5@n→ Gives the nearest player 5 apples= diff --git a/mods/ITEMS/REDSTONE/mesecons_delayer/locale/template.txt b/mods/ITEMS/REDSTONE/mesecons_delayer/locale/template.txt new file mode 100644 index 00000000..daad51ad --- /dev/null +++ b/mods/ITEMS/REDSTONE/mesecons_delayer/locale/template.txt @@ -0,0 +1,8 @@ +# textdomain: mesecons_delayer +Redstone repeaters are versatile redstone components with multiple purposes: 1. They only allow signals to travel in one direction. 2. They delay the signal. 3. Optionally, they can lock their output in one state.= +To power a redstone repeater, send a signal in “arrow” direction (the input). The signal goes out on the opposite side (the output) with a delay. To change the delay, rightclick the redstone repeater. The delay is between 0.1 and 0.4 seconds long and can be changed in steps of 0.1 seconds. It is indicated by the position of the moving redstone torch.= +To lock a repeater, send a signal from an adjacent repeater into one of its sides. While locked, the moving redstone torch disappears, the output doesn't change and the input signal is ignored.= +Redstone Repeater= +Redstone Repeater (Powered)= +Redstone Repeater (Locked)= +Redstone Repeater (Locked, Powered)= diff --git a/mods/ITEMS/REDSTONE/mesecons_lightstone/locale/template.txt b/mods/ITEMS/REDSTONE/mesecons_lightstone/locale/template.txt new file mode 100644 index 00000000..e69de29b diff --git a/mods/ITEMS/REDSTONE/mesecons_noteblock/locale/template.txt b/mods/ITEMS/REDSTONE/mesecons_noteblock/locale/template.txt new file mode 100644 index 00000000..ea26974b --- /dev/null +++ b/mods/ITEMS/REDSTONE/mesecons_noteblock/locale/template.txt @@ -0,0 +1,10 @@ +# textdomain: mesecons_noteblock +Note Block= +A note block is a musical block which plays one of many musical notes and different intruments when it is punched or supplied with redstone power.= +Rightclick the note block to choose the next musical note (there are 24 half notes, or 2 octaves). The intrument played depends on the material of the block below the note block:= +• Glass: Sticks= +• Wood: Bass guitar= +• Stone: Bass drum= +• Sand or gravel: Snare drum= +• Anything else: Piano= +The note block will only play a note when it is below air, otherwise, it stays silent.= diff --git a/mods/ITEMS/REDSTONE/mesecons_pistons/locale/template.txt b/mods/ITEMS/REDSTONE/mesecons_pistons/locale/template.txt new file mode 100644 index 00000000..93a4de14 --- /dev/null +++ b/mods/ITEMS/REDSTONE/mesecons_pistons/locale/template.txt @@ -0,0 +1,6 @@ +# textdomain: mesecons_pistons +This block can have one of 6 possible orientations. On placement, the pusher will face you.= +Piston= +A piston is a redstone component with a pusher which pushes the block or blocks in front of it when it is supplied with redstone power. Not all blocks can be pushed, however.= +Sticky Piston= +A sticky piston is a redstone component with a sticky pusher which can be extended and retracted. It extends when it is supplied with redstone power. When the pusher extends, it pushes the block or blocks in front of it. When it retracts, it pulls back the single block in front of it. Note that not all blocks can be pushed or pulled.= diff --git a/mods/ITEMS/REDSTONE/mesecons_pressureplates/locale/template.txt b/mods/ITEMS/REDSTONE/mesecons_pressureplates/locale/template.txt new file mode 100644 index 00000000..0927706c --- /dev/null +++ b/mods/ITEMS/REDSTONE/mesecons_pressureplates/locale/template.txt @@ -0,0 +1,11 @@ +# textdomain: mesecons_pressureplates +A pressure plate is a redstone component which supplies its surrounding blocks with redstone power while someone or something rests on top of it.= +Oak Pressure Plate= +Acacia Pressure Plate= +Birch Pressure Plate= +Dark Oak Pressure Plate= +Spruce Pressure Plate= +Jungle Pressure Plate= +A wooden pressure plate is a redstone component which supplies its surrounding blocks with redstone power while any movable object (including dropped items, players and mobs) rests on top of it.= +Stone Pressure Plate= +A stone pressure plate is a redstone component which supplies its surrounding blocks with redstone power while a player or mob stands on top of it. It is not triggered by anything else.= diff --git a/mods/ITEMS/REDSTONE/mesecons_solarpanel/locale/template.txt b/mods/ITEMS/REDSTONE/mesecons_solarpanel/locale/template.txt new file mode 100644 index 00000000..15de4f82 --- /dev/null +++ b/mods/ITEMS/REDSTONE/mesecons_solarpanel/locale/template.txt @@ -0,0 +1,5 @@ +# textdomain: mesecons_solarpanel +Daylight Sensor= +Daylight sensors are redstone components which provide redstone power when they are in sunlight and no power otherwise. They can also be inverted.= +Inverted Daylight Sensor= +An inverted daylight sensor is a variant of the daylight sensor. It is a redstone component which provides redstone power when it in moonlight and no power otherwise. It can turned back into an ordinary daylight sensor.= diff --git a/mods/ITEMS/REDSTONE/mesecons_torch/locale/template.txt b/mods/ITEMS/REDSTONE/mesecons_torch/locale/template.txt new file mode 100644 index 00000000..b3e5b7be --- /dev/null +++ b/mods/ITEMS/REDSTONE/mesecons_torch/locale/template.txt @@ -0,0 +1,10 @@ +# textdomain: mesecons_torch +Redstone Torch= +A redstone torch is a redstone component which can be used to invert a redstone signal. It supplies its surrounding blocks with redstone power, except for the block it is attached to. A redstone torch is normally lit, but it can also be turned off by powering the block it is attached to. While unlit, a redstone torch does not power anything.= +Redstone torches can generally be placed at the side and on the top of full solid opaque blocks. The following exceptions apply:= +• Glass, fence, wall, hopper: Can only be placed on top= +• Upside-down slab/stair: Can only be placed on top= +• Soul sand, mob spawner: Placement possible= +• Glowstone and pistons: No placement possible= +Block of Redstone= +A block of redstone permanently supplies redstone power to its surrounding blocks.= diff --git a/mods/ITEMS/REDSTONE/mesecons_walllever/locale/template.txt b/mods/ITEMS/REDSTONE/mesecons_walllever/locale/template.txt new file mode 100644 index 00000000..afdabf1b --- /dev/null +++ b/mods/ITEMS/REDSTONE/mesecons_walllever/locale/template.txt @@ -0,0 +1,4 @@ +# textdomain: mesecons_wallever +Lever= +A lever is a redstone component which can be flipped on and off. It supplies redstone power to adjacent blocks while it is in the “on” state.= +Lever= diff --git a/mods/ITEMS/REDSTONE/mesecons_wires/locale/template.txt b/mods/ITEMS/REDSTONE/mesecons_wires/locale/template.txt new file mode 100644 index 00000000..632a3eef --- /dev/null +++ b/mods/ITEMS/REDSTONE/mesecons_wires/locale/template.txt @@ -0,0 +1,10 @@ +# textdomain: mesecons_wires +Redstone is a versatile conductive mineral which transmits redstone power. It can be placed on the ground as a trail.= +A redstone trail can be in two states: Powered or not powered. A powered redstone trail will power (and thus activate) adjacent redstone components.= +Redstone power can be received from various redstone components, such as a block of redstone or a button. Redstone power is used to activate numerous mechanisms, such as redstone lamps or pistons.= +Place redstone on the ground to build a redstone trail. The trails will connect to each other automatically and it can also go over hills. An easy way to power a redstone trail is by placing a redstone torch.= +Read the help entries on the other redstone components to learn how redstone components interact.= +Redstone= +Powered Redstone Spot (@1)= +Redstone Trail (@1)= +Powered Redstone Trail (@1)= diff --git a/mods/ITEMS/mcl_anvils/locale/template.txt b/mods/ITEMS/mcl_anvils/locale/template.txt new file mode 100644 index 00000000..268f3480 --- /dev/null +++ b/mods/ITEMS/mcl_anvils/locale/template.txt @@ -0,0 +1,13 @@ +# textdomain: mcl_anvils +Set Name= +Anvil= +The anvil allows you to repair tools and armor, and to give names to items. It has a limited durability, however. Don't let it fall on your head, it could be quite painful!= +To use an anvil, rightclick it. An anvil has 2 input slots (on the left) and one output slot.= +To rename items, put an item stack in one of the item slots while keeping the other input slot empty. Type in a name, hit enter or “Set Name”, then take the renamed item from the output slot.= +There are two possibilities to repair tools (and armor):= +• Tool + Tool: Place two tools of the same type in the input slots. The “health” of the repaired tool is the sum of the “health” of both input tools, plus a 12% bonus.= +• Tool + Material: Some tools can also be repaired by combining them with an item that it's made of. For example, iron pickaxes can be repaired with iron ingots. This repairs the tool by 25%.= +Armor counts as a tool. It is possible to repair and rename a tool in a single step.= +The anvil has limited durability and 3 damage levels: undamaged, slightly damaged and very damaged. Each time you repair or rename something, there is a 12% chance the anvil gets damaged. Anvils also have a chance of being damaged when they fall by more than 1 block. If a very damaged anvil is damaged again, it is destroyed.= +Slightly Damaged Anvil= +Very Damaged Anvil= diff --git a/mods/ITEMS/mcl_banners/locale/template.txt b/mods/ITEMS/mcl_banners/locale/template.txt new file mode 100644 index 00000000..868ae20b --- /dev/null +++ b/mods/ITEMS/mcl_banners/locale/template.txt @@ -0,0 +1,60 @@ +# textdomain: mcl_banners +White Banner= +Grey Banner= +Light Grey Banner= +Black Banner= +Red Banner= +Yellow Banner= +Green Banner= +Cyan Banner= +Blue Banner= +Magenta Banner= +Orange Banner= +Purple Banner= +Brown Banner= +Pink Banner= +Lime Banner= +Light Blue Banner= +Banners are tall colorful decorative blocks. They can be placed on the floor and at walls. Banners can be emblazoned with a variety of patterns using a lot of dye in crafting.= +Use crafting to draw a pattern on top of the banner. Emblazoned banners can be emblazoned again to combine various patterns. You can draw up to 12 layers on a banner that way. If the banner includes a gradient, only 3 layers are possible.= +You can copy the pattern of a banner by placing two banners of the same color in the crafting grid—one needs to be emblazoned, the other one must be clean. Finally, you can use a banner on a cauldron with water to wash off its top-most layer.= +%s Bordure= +%s Bricks= +%s Roundel= +%s Creeper Charge= +%s Saltire= +%s Bordure Indented= +%s Per Bend Inverted= +%s Per Bend Sinister Inverted= +%s Per Bend= +%s Per Bend Sinister= +%s Flower Charge= +%s Gradient= +%s Base Gradient= +%s Per Fess Inverted= +%s Per Fess= +%s Per Pale= +%s Per Pale Inverted= +%s Thing Charge= +%s Lozenge= +%s Skull Charge= +%s Paly= +%s Base Dexter Canton= +%s Base Sinister Canton= +%s Chief Dexter Canton= +%s Chief Sinister Canton= +%s Cross= +%s Base= +%s Pale= +%s Bend Sinister= +%s Bend= +%s Pale Dexter= +%s Fess= +%s Pale Sinister= +%s Chief= +%s Chevron= +%s Chevron Inverted= +%s Base Indented= +%s Chief Indented= +And one addional layer= +And %d addional layers= diff --git a/mods/ITEMS/mcl_beds/locale/template.txt b/mods/ITEMS/mcl_beds/locale/template.txt new file mode 100644 index 00000000..191489e3 --- /dev/null +++ b/mods/ITEMS/mcl_beds/locale/template.txt @@ -0,0 +1,32 @@ +# textdomain: mcl_beds +Beds allow you to sleep at night and make the time pass faster.= +To use a bed, stand close to it and right-click the bed to sleep in it. Sleeping only works when the sun sets, at night or during a thunderstorm. The bed must also be clear of any danger.= +In local folklore, legends are told of other worlds where setting the start point for your next life would be possible. But this world is not one of them.= +By using a bed, you set the starting point for your next life. If you die, you will start your next life at this bed, unless it is obstructed or destroyed.= +In this strange world, going to bed won't skip the night, but you can skip thunderstorms.= +Sleeping allows you to skip the night. The night is skipped when all players in this world went to sleep. The night is skipped after sleeping for a few seconds. Thunderstorms can be skipped in the same manner.= +Red Bed= +Blue Bed= +Cyan Bed= +Grey Bed= +Light Grey Bed= +Black Bed= +Yellow Bed= +Green Bed= +Magenta Bed= +Orange Bed= +Purple Bed= +Brown Bed= +Pink Bed= +Lime Bed= +Light Blue Bed= +White Bed= +You can't sleep, the bed's too far away!= +This bed is already occupied!= +You have to stop moving before going to bed!= +You can't sleep now, monsters are nearby!= +You can't sleep, the bed is obstructed!= +It's too dangerous to sleep here!= +New respawn position set! But you can only sleep at night or during a thunderstorm.= +You can only sleep at night or during a thunderstorm.= +New respawn position set!= diff --git a/mods/ITEMS/mcl_books/locale/template.txt b/mods/ITEMS/mcl_books/locale/template.txt new file mode 100644 index 00000000..1d7ee963 --- /dev/null +++ b/mods/ITEMS/mcl_books/locale/template.txt @@ -0,0 +1,25 @@ +# textdomain: mcl_books +Book= +Books are used to make bookshelves and book and quills.= +“@1”= +Copy of “@1”= +Copy of Copy of “@1”= +Tattered Book= +by @1= +Sign= +Done= +This item can be used to write down some notes.= +Hold it in the hand, then rightclick to read the current notes and edit then. You can edit the text as often as you like. You can also sign the book which turns it into a written book which you can stack, but it can't be edited anymore.= +A book can hold up to 4500 characters. The title length is limited to 64 characters.= +Enter book title:= +by @1= +Note: The book will no longer@nbe editable after signing.= +Sign and Close= +Cancel= +Nameless Book= +Written Book= +Written books contain some text written by someone. They can be read and copied, but not edited.= +Hold it in your hand, then rightclick to read the book.= +To copy the text of the written book, place it into the crafting grid together with a book and quill (or multiple of those) and craft. The written book will not be consumed. Copies of copies can not be copied.= +Bookshelf= +Bookshelves are used for decoration.= diff --git a/mods/ITEMS/mcl_bows/locale/template.txt b/mods/ITEMS/mcl_bows/locale/template.txt new file mode 100644 index 00000000..c6c91b44 --- /dev/null +++ b/mods/ITEMS/mcl_bows/locale/template.txt @@ -0,0 +1,11 @@ +# textdomain: mcl_bows +Arrow= +Arrows are ammunition for bows and dispensers.= +An arrow fired from a bow has a regular damage of 1-9. At full charge, there's a 20% chance of a critical hit dealing 10 damage instead. An arrow fired from a dispenser always deals 3 damage.= +Arrows might get stuck on solid blocks and can be retrieved again. They are also capable of pushing wooden buttons.= +To use arrows as ammunition for a bow, just put them anywhere in your inventory, they will be used up automatically. To use arrows as ammunition for a dispenser, place them in the dispenser's inventory. To retrieve an arrow that sticks in a block, simply walk close to it.= +Bow= +Bows are ranged weapons to shoot arrows at your foes.= +The speed and damage of the arrow increases the longer you charge. The regular damage of the arrow is between 1 and 9. At full charge, there's also a 20% of a critical hit, dealing 10 damage instead.= +To use the bow, you first need to have at least one arrow anywhere in your inventory (unless in Creative Mode). Hold down the right mouse button to charge, release to shoot.= +Bow= diff --git a/mods/ITEMS/mcl_buckets/locale/template.txt b/mods/ITEMS/mcl_buckets/locale/template.txt new file mode 100644 index 00000000..f9a23d40 --- /dev/null +++ b/mods/ITEMS/mcl_buckets/locale/template.txt @@ -0,0 +1,13 @@ +# textdomain: mcl_buckets +Empty Bucket= +A bucket can be used to collect and release liquids.= +Punch a liquid source to collect the liquid. With the filled bucket, you can right-click somewhere to empty the bucket which will create a liquid source at the position you've clicked at.= +Lava Bucket= +A bucket can be used to collect and release liquids. This one is filled with hot lava, safely contained inside. Use with caution.= +Choose a place where you want to empty the bucket, then get in a safe spot somewhere above it. Be prepared to run away when something goes wrong as the lava will soon start to flow after placing. To empty the bucket (which places a lava source), right-click on your chosen place.= +Water Bucket= +A bucket can be used to collect and release liquids. This one is filled with water.= +Right-click on any block to empty the bucket and put a water source on this spot.= +River Water Bucket= +A bucket can be used to collect and release liquids. This one is filled with river water.= +Right-click on any block to empty the bucket and put a river water source on this spot.= diff --git a/mods/ITEMS/mcl_cake/locale/template.txt b/mods/ITEMS/mcl_cake/locale/template.txt new file mode 100644 index 00000000..921f9612 --- /dev/null +++ b/mods/ITEMS/mcl_cake/locale/template.txt @@ -0,0 +1,10 @@ +# textdomain: mcl_cake +Cake= +Cakes can be placed and eaten to restore hunger points. A cake has 7 slices. Each slice restores 2 hunger points and 0.4 saturation points. Cakes will be destroyed when dug or when the block below them is broken.= +Place the cake anywhere, then rightclick it to eat a single slice. You can't eat from the cake when your hunger bar is full.= +Cake (6 Slices Left)= +Cake (5 Slices Left)= +Cake (4 Slices Left)= +Cake (3 Slices Left)= +Cake (2 Slices Left)= +Cake (1 Slice Left)= diff --git a/mods/ITEMS/mcl_cauldrons/locale/template.txt b/mods/ITEMS/mcl_cauldrons/locale/template.txt new file mode 100644 index 00000000..426d7d69 --- /dev/null +++ b/mods/ITEMS/mcl_cauldrons/locale/template.txt @@ -0,0 +1,10 @@ +# textdomain: mcl_cauldron +Cauldron= +Cauldrons are used to store water and slowly fill up under rain. They can also be used to wash off banners.= +Place a water pucket into the cauldron to fill it with water. Place an empty bucket on a full cauldron to retrieve the water. Place a water bottle into the cauldron to fill the cauldron to one third with water. Place a glass bottle in a cauldron with water to retrieve one third of the water. Use an emblazoned banner on a cauldron with water to wash off its top layer.= +Cauldron (1/3 Water)= +Cauldron (2/3 Water)= +Cauldron (3/3 Water)= +Cauldron (1/3 River Water)= +Cauldron (2/3 River Water)= +Cauldron (3/3 River Water)= diff --git a/mods/ITEMS/mcl_chests/locale/template.txt b/mods/ITEMS/mcl_chests/locale/template.txt new file mode 100644 index 00000000..682795bc --- /dev/null +++ b/mods/ITEMS/mcl_chests/locale/template.txt @@ -0,0 +1,28 @@ +# textdomain: mcl_chests +Chest= +Chests are containers which provide 27 inventory slots. Chests can be turned into large chests with double the capacity by placing two chests next to each other.= +To access the chest's inventory, rightclick the chest. When broken, the items of the chest will drop out.= +Trapped Chest= +A trapped chest is a container which provides 27 inventory slots. When it is opened, it sends a redstone signal to its adjacent blocks as long it stays open. Trapped chests can be turned into large trapped chests with double the capacity by placing two trapped chests next to each other.= +To access the inventory of a trapped chest, rightclick it. When broken, the items will drop out.= +Ender Chest= +Ender chests grant you access to a single personal interdimensional inventory with 27 slots. This inventory is the same no matter from which ender chest you access it from. If you put one item into one ender chest, you will find it in all other ender chests. Each player will only see their own items, but not the items of other players.= +Rightclick the ender chest to access your personal interdimensional inventory.= +White Shulker Box= +Light Grey Shulker Box= +Orange Shulker Box= +Cyan Shulker Box= +Magenta Shulker Box= +Purple Shulker Box= +Light Blue Shulker Box= +Blue Shulker Box= +Yellow Shulker Box= +Brown Shulker Box= +Lime Shulker Box= +Green Shulker Box= +Pink Shulker Box= +Red Shulker Box= +Grey Shulker Box= +Black Shulker Box= +A shulker box is a portable container which provides 27 inventory slots for any item except shulker boxes. Shulker boxes keep their inventory when broken, so shulker boxes as well as their contents can be taken as a single item. Shulker boxes come in many different colors.= +To access the inventory of a shulker box, place and right-click it. To take a shulker box and its contents with you, just break and collect it, the items will not fall out. Place the shulker box again to be able to retrieve its contents.= diff --git a/mods/ITEMS/mcl_clock/locale/template.txt b/mods/ITEMS/mcl_clock/locale/template.txt new file mode 100644 index 00000000..07ff8cab --- /dev/null +++ b/mods/ITEMS/mcl_clock/locale/template.txt @@ -0,0 +1,4 @@ +# textdomain: mcl_clock +Clocks are tools which shows the current time of day in the Overworld.= +The clock contains a rotating disc with a sun symbol (yellow disc) and moon symbol and a little “pointer” which shows the current time of day by estimating the real position of the sun and the moon in the sky. Noon is represented by the sun symbol and midnight is represented by the moon symbol.= +Clock= diff --git a/mods/ITEMS/mcl_cocoas/locale/template.txt b/mods/ITEMS/mcl_cocoas/locale/template.txt new file mode 100644 index 00000000..ff9fb588 --- /dev/null +++ b/mods/ITEMS/mcl_cocoas/locale/template.txt @@ -0,0 +1,6 @@ +# textdomain: mcl_cocoas +Premature Cocoa= +Cocoas are plants which grow on the side of jungle trees in 3 stages.= +Medium Cocoa= +Mature Cocoa= +A mature cocoa is a plant which grew on a jungle tree to its full size and it is ready to be harvested for cocoa beans. It won't grow any further.= diff --git a/mods/ITEMS/mcl_colorblocks/locale/template.txt b/mods/ITEMS/mcl_colorblocks/locale/template.txt new file mode 100644 index 00000000..e69de29b diff --git a/mods/ITEMS/mcl_compass/locale/template.txt b/mods/ITEMS/mcl_compass/locale/template.txt new file mode 100644 index 00000000..2db3584f --- /dev/null +++ b/mods/ITEMS/mcl_compass/locale/template.txt @@ -0,0 +1,3 @@ +# textdomain: mcl_compass +Compasses are tools which point to the world origin (X@=0, Z@=0) or the spawn point in the Overworld.= +Compass= diff --git a/mods/ITEMS/mcl_crafting_table/locale/template.txt b/mods/ITEMS/mcl_crafting_table/locale/template.txt new file mode 100644 index 00000000..bd0e5879 --- /dev/null +++ b/mods/ITEMS/mcl_crafting_table/locale/template.txt @@ -0,0 +1,4 @@ +# textdomain: mcl_crafting_table +Crafting Table= +A crafting table is a block which grants you access to a 3×3 crafting grid which allows you to perform advanced crafts.= +Rightclick the crafting table to access the 3×3 crafting grid.= diff --git a/mods/ITEMS/mcl_doors/locale/template.txt b/mods/ITEMS/mcl_doors/locale/template.txt new file mode 100644 index 00000000..5b9f788a --- /dev/null +++ b/mods/ITEMS/mcl_doors/locale/template.txt @@ -0,0 +1,22 @@ +# textdomain: mcl_doors +Wooden doors are 2-block high barriers which can be opened or closed by hand and by a redstone signal.= +To open or close a wooden door, rightclick it or supply its lower half with a redstone signal.= +Oak Door= +Acacia Door= +Birch Door= +Dark Oak Door= +Jungle Door= +Spruce Door= +Iron Door= +Iron doors are 2-block high barriers which can only be opened or closed by a redstone signal, but not by hand.= +To open or close an iron door, supply its lower half with a redstone signal.= +Oak Trapdoor= +Acacia Trapdoor= +Birch Trapdoor= +Spruce Trapdoor= +Dark Oak Trapdoor= +Jungle Trapdoor= +Wooden trapdoors are horizontal barriers which can be opened and closed by hand or a redstone signal. They occupy the upper or lower part of a block, depending on how they have been placed. When open, they can be climbed like a ladder.= +To open or close the trapdoor, rightclick it or send a redstone signal to it.= +Iron Trapdoor= +Iron trapdoors are horizontal barriers which can only be opened and closed by redstone signals, but not by hand. They occupy the upper or lower part of a block, depending on how they have been placed. When open, they can be climbed like a ladder.= diff --git a/mods/ITEMS/mcl_dye/locale/template.txt b/mods/ITEMS/mcl_dye/locale/template.txt new file mode 100644 index 00000000..f99638e4 --- /dev/null +++ b/mods/ITEMS/mcl_dye/locale/template.txt @@ -0,0 +1,25 @@ +# textdomain: mcl_dye +Bone Meal= +Light Grey Dye= +Grey Dye= +Ink Sac= +Purple Dye= +Lapis Lazuli= +Light Blue Dye= +Cyan Dye= +Cactus Green= +Lime Dye= +Dandelion Yellow= +Cocoa Beans= +Orange Dye= +Rose Red= +Magenta Dye= +Pink Dye= +This item is a dye which is used for dyeing and crafting.= +Rightclick on a sheep to dye its wool. Other things are dyed by crafting.= +Bone Meal= +Bone meal is a white dye and also useful as a fertilizer to speed up the growth of many plants.= +Rightclick a sheep to turn its wool white. Rightclick a plant to speed up its growth. Note that not all plants can be fertilized like this. When you rightclick a grass block, tall grass and flowers will grow all over the place.= +Cocoa beans are a brown dye and can be used to plant cocoas.= +Rightclick a sheep to turn its wool brown. Rightclick on the side of a jungle tree trunk (Jungle Wood) to plant a young cocoa.= +Cocoa Beans= diff --git a/mods/ITEMS/mcl_end/locale/template.txt b/mods/ITEMS/mcl_end/locale/template.txt new file mode 100644 index 00000000..1d74608a --- /dev/null +++ b/mods/ITEMS/mcl_end/locale/template.txt @@ -0,0 +1,23 @@ +# textdomain: mcl_end +End Stone= +End Stone Bricks= +Purpur Block= +Purpur Pillar= +End Rod= +End rods are decorative light sources.= +Dragon Egg= +A dragon egg is a decorative item which can be placed.= +Chorus Flower= +A chorus flower is the living part of a chorus plant. It can grow into a tall chorus plant, step by step. When it grows, it may die on old age eventually. It also dies when it is unable to grow.= +Place it and wait for it to grow. It can only be placed on top of end stone, on top of a chorus plant stem, or at the side of exactly one chorus plant stem.= +Dead Chorus Flower= +This is a part of a chorus plant. It doesn't grow. Chorus flowers die of old age or when they are unable to grow. A dead chorus flower can be harvested to obtain a fresh chorus flower which is able to grow again.= +Chorus Plant Stem= +A chorus plant stem is the part of a chorus plant which holds the whole plant together. It needs end stone as its soil. Stems are grown from chorus flowers.= +Chorus Fruit= +A chorus fruit is an edible fruit from the chorus plant which is home to the End. Eating it teleports you to the top of a random solid block nearby, provided you won't end up inside a liquid, solid or harmful blocks. Teleportation might fail if there are very few or no places to teleport to.= +Popped Chorus Fruit= +Eye of Ender= +This item is used to locate End portal shrines in the Overworld and to activate End portals.= +Use the attack key to release the eye of ender. It will rise and fly in the horizontal direction of the closest end portal shrine. If you're very close, the eye of ender will take the direct path to the End portal shrine instead. After a few seconds, it stops. It may drop as an item, but there's a 20% chance it shatters.= +To activate an End portal, eyes of ender need to be placed into each block of an intact End portal frame.= diff --git a/mods/ITEMS/mcl_farming/locale/template.txt b/mods/ITEMS/mcl_farming/locale/template.txt new file mode 100644 index 00000000..36ac6733 --- /dev/null +++ b/mods/ITEMS/mcl_farming/locale/template.txt @@ -0,0 +1,93 @@ +# textdomain: mcl_farming +Beetroot Seeds= +Grows into a beetroot plant. Chickens like beetroot seeds.= +Place the beetroot seeds on farmland (which can be created with a hoe) to plant a beetroot plant. They grow in sunlight and grow faster on hydrated farmland. Rightclick an animal to feed it beetroot seeds.= +Premature Beetroot Plant (Stage 1)= +Beetroot plants are plants which grow on farmland under sunlight in 4 stages. On hydrated farmland, they grow a bit faster. They can be harvested at any time but will only yield a profit when mature.= +Premature Beetroot Plant= +Premature Beetroot Plant (Stage 2)= +Premature Beetroot Plant (Stage 3)= +Mature Beetroot Plant= +A mature beetroot plant is a farming plant which is ready to be harvested for a beetroot and some beetroot seeds. It won't grow any further.= +Beetroot= +Beetroots are both used as food item and a dye ingredient. Pigs like beetroots, too.= +Hold it in your hand and right-click to eat it. Rightclick an animal to feed it.= +Beetroot Soup= +Beetroot soup is a food item.= +Premature Carrot Plant= +Carrot plants are plants which grow on farmland under sunlight in 8 stages, of which only 4 are actually visible. On hydrated farmland, they grow a bit faster. They can be harvested at any time but will only yield a profit when mature.= +Premature Carrot Plant (Stage @1)= +Mature Carrot Plant= +Mature carrot plants are ready to be harvested for carrots. They won't grow any further.= +Carrot= +Carrots can be eaten and planted. Pigs and rabbits like carrots.= +Hold it in your hand and rightclick to eat it. Place it on top of farmland to plant the carrot. It grows in sunlight and grows faster on hydrated farmland. Rightclick an animal to feed it.= +Golden Carrot= +A golden carrot is a precious food item which can be eaten. It is really, really filling!= +Hoes are essential tools for growing crops. They are used to create farmland in order to plant seeds on it. Hoes can also be used as very weak weapons in a pinch.= +Use the hoe on a cultivatable block (by rightclicking it) to turn it into farmland. Dirt, grass blocks and grass paths are cultivatable blocks. Using a hoe on coarse dirt turns it into dirt.= +Wood Hoe= +Stone Hoe= +Iron Hoe= +Golden Hoe= +Diamond Hoe= +Melon Seeds= +Grows into a melon. Chickens like melon seeds.= +Place the melon seeds on farmland (which can be created with a hoe) to plant a melon stem. Melons grow in sunlight and grow faster on hydrated farmland. Rightclick an animal to feed it melon seeds.= +Melon= +A melon is a block which can be grown from melon stems, which in turn are grown from melon seeds. It can be harvested for melon slices.= +Premature Melon Stem= +Melon stems grow on farmland in 8 stages. On hydrated farmland, the growth is a bit quicker. Mature melon stems are able to grow melons.= +Premature Melon Stem (Stage @1)= +Mature Melon Stem= +A mature melon stem attempts to grow a melon at one of its four adjacent blocks. A melon can only grow on top of farmland, dirt, or a grass block. When a melon is next to a melon stem, the melon stem immediately bends and connects to the melon. While connected, a melon stem can't grow another melon. As soon all melons around the stem have been removed, it loses the connection and is ready to grow another melon.= +Melon Slice= +This is a food item which can be eaten.= +Premature Potato Plant= +Potato plants are plants which grow on farmland under sunlight in 8 stages, of which only 4 are actually visible. On hydrated farmland, they grow a bit faster. They can be harvested at any time but will only yield a profit when mature.= +Premature Potato Plant (Stage @1)= +Mature Potato Plant= +Mature potato plants are ready to be harvested for potatoes. They won't grow any further.= +Potato= +Potatoes are food items which can be eaten, cooked in the furnace and planted. Pigs like potatoes.= +Hold it in your hand and rightclick to eat it. Place it on top of farmland to plant it. It grows in sunlight and grows faster on hydrated farmland. Rightclick an animal to feed it.= +Baked Potato= +Baked potatoes are food items which are more filling than the unbaked ones.= +Poisonous Potato= +This potato doesn't look too healthy. You can eat it to restore hunger points, but there's a 60% chance it will poison you briefly.= +Pumpkin Seeds= +Grows into a pumpkin. Chickens like pumpkin seeds.= +Place the pumpkin seeds on farmland (which can be created with a hoe) to plant a pumpkin stem. Pumpkins grow in sunlight and grow faster on hydrated farmland. Rightclick an animal to feed it pumpkin seeds.= +Premature Pumpkin Stem= +Pumpkin stems grow on farmland in 8 stages. On hydrated farmland, the growth is a bit quicker. Mature pumpkin stems are able to grow pumpkins.= +Premature Pumpkin Stem (Stage @1)= +Mature Pumpkin Stem= +A mature pumpkin stem attempts to grow a pumpkin at one of its four adjacent blocks. A pumpkin can only grow on top of farmland, dirt or a grass block. When a pumpkin is next to a pumpkin stem, the pumpkin stem immediately bends and connects to the pumpkin. A connected pumpkin stem can't grow another pumpkin. As soon all pumpkins around the stem have been removed, it loses the connection and is ready to grow another pumpkin.= +Faceless Pumpkin= +A faceless pumpkin is a decorative block. It can be carved with shears to obtain pumpkin seeds.= +Pumpkin= +A pumpkin can be worn as a helmet for fun, but it doesn't offer any protection. Pumpkins grow from pumpkin stems, which in turn grow from pumpkin seeds.= +Jack o'Lantern= +A jack o'lantern is a traditional Halloween decoration made from a pumpkin. It glows brightly.= +Pumpkin Pie= +A pumpkin pie is a tasty food item which can be eaten.= +Farmland= +Farmland is used for farming, a necessary surface to plant crops. It is created when a hoe is used on dirt or a similar block. Plants are able to grow on farmland, but slowly. Farmland will become hydrated farmland (on which plants grow faster) when it rains or a water source is nearby. This block will turn back to dirt when a solid block appears above it or a piston arm extends above it.= +Hydrated Farmland= +Hydrated farmland is used in farming, this is where you can plant and grow some plants. It is created when farmlands is under rain or near water. Without water, this block will dry out eventually. This block will turn back to dirt when a solid block appears above it or a piston arm extends above it.= +Wheat Seeds= +Grows into a wheat plant. Chickens like wheat seeds.= +Place the wheat seeds on farmland (which can be created with a hoe) to plant a wheat plant. They grow in sunlight and grow faster on hydrated farmland. Rightclick an animal to feed it wheat seeds.= +Premature Wheat Plant= +Premature wheat plants grow on farmland under sunlight in 8 stages. On hydrated farmland, they grow faster. They can be harvested at any time but will only yield a profit when mature.= +Premature Wheat Plant (Stage @1)= +Mature Wheat Plant= +Mature wheat plants are ready to be harvested for wheat and wheat seeds. They won't grow any further.= +Wheat= +Wheat is used in crafting. Some animals like wheat.= +Cookie= +This is a food item which can be eaten.= +Bread= +This is a food item which can be eaten.= +Hay Bale= +Hay bales are decorative blocks made from wheat.= diff --git a/mods/ITEMS/mcl_fences/locale/template.txt b/mods/ITEMS/mcl_fences/locale/template.txt new file mode 100644 index 00000000..9eaee4e4 --- /dev/null +++ b/mods/ITEMS/mcl_fences/locale/template.txt @@ -0,0 +1,16 @@ +# textdomain: mcl_fences +Fences are structures which block the way. Fences will connect to each other and solid blocks. They cannot be jumped over with a simple jump.= +Fence gates can be opened or closed and can't be jumped over. Fences will connect nicely to fence gates.= +Right-click the fence gate to open or close it.= +Oak Fence= +Oak Fence Gate= +Spruce Fence= +Spruce Fence Gate= +Birch Fence= +Birch Fence Gate= +Jungle Fence= +Jungle Fence Gate= +Dark Oak Fence= +Dark Oak Fence Gate= +Acacia Fence= +Acacia Fence Gate= diff --git a/mods/ITEMS/mcl_fire/locale/template.txt b/mods/ITEMS/mcl_fire/locale/template.txt new file mode 100644 index 00000000..d691bf22 --- /dev/null +++ b/mods/ITEMS/mcl_fire/locale/template.txt @@ -0,0 +1,15 @@ +# textdomain: mcl_fire +Fire Charge= +Fire charges are primarily projectiles which can be launched from dispensers, they will fly in a straight line and burst into a fire on impact. Alternatively, they can be used to ignite fires directly.= +Put the fire charge into a dispenser and supply it with redstone power to launch it. To ignite a fire directly, simply place the fire charge on the ground, which uses it up.= +Flint and Steel= +Flint and steel is a tool to start fires and ignite blocks.= +Rightclick the surface of a block to attempt to light a fire in front of it or ignite the block. A few blocks have an unique reaction when ignited.= +Fire is a damaging and destructive but short-lived kind of block. It will destroy and spread towards near flammable blocks, but fire will disappear when there is nothing to burn left. It will be extinguished by nearby water and rain. Fire can be destroyed safely by punching it, but it is hurtful if you stand directly in it. If a fire is started above netherrack or a magma block, it will immediately turn into an eternal fire.= +Eternal fire is a damaging and destructive block. It will create fire around it when flammable blocks are nearby. Eternal fire can be extinguished by punches and nearby water blocks. Other than (normal) fire, eternal fire does not get extinguished on its own and also continues to burn under rain. Punching eternal fire is safe, but it hurts if you stand inside.= +%s has been cooked crisp.= +%s felt the burn.= +%s died in the flames.= +%s died in a fire.= +Fire= +Eternal Fire= diff --git a/mods/ITEMS/mcl_fishing/locale/template.txt b/mods/ITEMS/mcl_fishing/locale/template.txt new file mode 100644 index 00000000..c958e0b4 --- /dev/null +++ b/mods/ITEMS/mcl_fishing/locale/template.txt @@ -0,0 +1,16 @@ +# textdomain: mcl_fishing +Fishing Rod= +Fishing rods can be used to catch fish.= +Rightclick a water source to try to go fishing. Who knows what you're going to catch?= +Raw Fish= +Raw fish is obtained by fishing and is a food item which can be eaten safely. Cooking it improves its nutritional value.= +Cooked Fish= +Mmh, fish! This is a healthy food item.= +Raw Salmon= +Raw salmon is obtained by fishing and is a food item which can be eaten safely. Cooking it improves its nutritional value.= +Cooked Salmon= +This is a healthy food item which can be eaten.= +Clownfish= +Clownfish may be obtained by fishing (and luck) and is a food item which can be eaten safely.= +Pufferfish= +Pufferfish are a common species of fish and can be obtained by fishing. They can technically be eaten, but they are very bad for humans. Eating a pufferfish only restores 1 hunger point and will poison you very badly (which drains your health non-fatally) and causes serious food poisoning (which increases your hunger).= diff --git a/mods/ITEMS/mcl_flowerpots/locale/template.txt b/mods/ITEMS/mcl_flowerpots/locale/template.txt new file mode 100644 index 00000000..75c6b7a2 --- /dev/null +++ b/mods/ITEMS/mcl_flowerpots/locale/template.txt @@ -0,0 +1,24 @@ +# textdomain: mcl_flowerpots +Dandelion Flower Pot= +Poppy Floer Pot= +Blue Orchid Flower Pot= +Allium Flower Pot= +Azure Bluet Flower Pot= +Red Tulip Flower Pot= +Pink Tulip Flower Pot= +White Tulip Flower Pot= +Orange Tulip Flower Pot= +Oxeye Daisy Flower Pot= +Brown Mushroom Flower Pot= +Red Mushroom Flower Pot= +Oak Sapling Flower Pot= +Acacia Sapling Flower Pot= +Jungle Sapling Flower Pot= +Dark Oak Sapling Flower Pot= +Spruce Sapling Flower Pot= +Birch Sapling Flower Pot= +Dead Bush Flower Pot= +Fern Flower Pot= +Flower Pot= +Flower pots are decorative blocks in which flowers and other small plants can be placed.= +Rightclick an empty flower pot while you wield a plant to place the plant. Flower pots can hold small flowers (not higher than 1 block), saplings, ferns, dead bushes, mushrooms and cacti. Rightclick a potted plant to retrieve the plant.= diff --git a/mods/ITEMS/mcl_flowers/locale/template.txt b/mods/ITEMS/mcl_flowers/locale/template.txt new file mode 100644 index 00000000..f89e74cd --- /dev/null +++ b/mods/ITEMS/mcl_flowers/locale/template.txt @@ -0,0 +1,32 @@ +# textdomain: mcl_flowers +This is a small flower. Small flowers are mainly used for dye production and can also be potted.= +It can only be placed on a block on which it would also survive.= +Poppy= +Dandelion= +Oxeye Daisy= +Orange Tulip= +Pink Tulip= +Red Tulip= +White Tulip= +Allium= +Azure Bluet= +Blue Orchid= +Tall Grass= +Tall grass is a small plant which often occours on the surface of grasslands. It can be harvested for wheat seeds. By using bone meal, tall grass can be turned into double tallgrass which is two blocks high.= +Fern= +Ferns are small plants which occour naturally in grasslands. They can be harvested for wheat seeds. By using bone meal, a fern can be turned into a large fern which is two blocks high.= +(Top Part)= +Peony= +A peony is a large plant which occupies two blocks. It is mainly used in dye protection.= +Rose Bush= +A rose bush is a large plant which occupies two blocks. It is safe to touch it. Rose bushes are mainly used in dye protection.= +Lilac= +A lilac is a large plant which occupies two blocks. It is mainly used in dye production.= +Sunflower= +A sunflower is a large plant which occupies two blocks. It is mainly used in dye production.= +Double tallgrass a variant of tall grass and occupies two blocks. It can be harvested for wheat seeds.= +Large fern is a variant of fern and occupies two blocks. It can be harvested for wheat seeds.= +Double Tallgrass= +Large Fern= +Lily Pad= +A lily pad is a flat plant block which can be walked on. They can be placed on water sources, ice and frosted ice.= diff --git a/mods/ITEMS/mcl_furnaces/locale/template.txt b/mods/ITEMS/mcl_furnaces/locale/template.txt new file mode 100644 index 00000000..bdea900a --- /dev/null +++ b/mods/ITEMS/mcl_furnaces/locale/template.txt @@ -0,0 +1,5 @@ +# textdomain: mcl_furnaces +Furnace= +Furnaces cook or smelt several items, using a furnace fuel, into something else.= +Right-click the furnace to view it. Place a furnace fuel in the lower slot and the source material in the upper slot. The furnace will slowly use its fuel to smelt the item. The result will be placed into the output slot at the right side.= +Burning Furnace= diff --git a/mods/ITEMS/mcl_heads/locale/template.txt b/mods/ITEMS/mcl_heads/locale/template.txt new file mode 100644 index 00000000..213fbf5c --- /dev/null +++ b/mods/ITEMS/mcl_heads/locale/template.txt @@ -0,0 +1,11 @@ +# textdomain: mcl_heads +Zombie Head= +A zombie head is a small decorative block which resembles the head of a zombie. It can also be worn as a helmet for fun, but does not offer any protection.= +Creeper Head= +A creeper head is a small decorative block which resembles the head of a creeper. It can also be worn as a helmet for fun, but does not offer any protection.= +Human Head= +A human head is a small decorative block which resembles the head of a human (i.e. a player character). It can also be worn as a helmet for fun, but does not offer any protection.= +Skeleton Skull= +A skeleton skull is a small decorative block which resembles the head of a skeleton. It can also be worn as a helmet for fun, but does not offer any protection.= +Wither Skeleton Skull= +A wither skeleton skull is a small decorative block which resembles the head of a wither skeleton. It can also be worn as a helmet for fun, but does not offer any protection.= diff --git a/mods/ITEMS/mcl_hoppers/locale/template.txt b/mods/ITEMS/mcl_hoppers/locale/template.txt new file mode 100644 index 00000000..080193b6 --- /dev/null +++ b/mods/ITEMS/mcl_hoppers/locale/template.txt @@ -0,0 +1,8 @@ +# textdomain: mcl_hoppers +Hopper= +Hoppers are containers with 5 inventory slots. They collect dropped items from above, take items from a container above and attempts to put its items it into an adjacent container. Hoppers can go either downwards or sideways. Hoppers interact with chests, droppers, dispensers, shulker boxes, furnaces and hoppers.= +Hoppers can be disabled by supplying them with redstone power. Disabled hoppers don't move items.= +To place a hopper vertically, place it on the floor or a ceiling. To place it sideways, place it at the side of a block. Remember you can place at usable blocks (such as chests) with sneak + right-click. The hopper will keep its orientation when the blocks around it are changed. To access the hopper's inventory, rightclick it.= +Disabled Hopper= +Side Hopper= +Disabled Side Hopper= diff --git a/mods/ITEMS/mcl_itemframes/locale/template.txt b/mods/ITEMS/mcl_itemframes/locale/template.txt new file mode 100644 index 00000000..8a3ea6b9 --- /dev/null +++ b/mods/ITEMS/mcl_itemframes/locale/template.txt @@ -0,0 +1,4 @@ +# textdomain: mcl_itemframes +Item Frame= +Item frames are decorative blocks in which items can be placed.= +Hold any item in your hand and right-click the item frame to place the item into the frame. Rightclick the item frame again to retrieve the item.= diff --git a/mods/ITEMS/mcl_jukebox/locale/template.txt b/mods/ITEMS/mcl_jukebox/locale/template.txt new file mode 100644 index 00000000..b2ad0d94 --- /dev/null +++ b/mods/ITEMS/mcl_jukebox/locale/template.txt @@ -0,0 +1,9 @@ +# textdomain: mcl_jukebox +Music Disc= +A music disc holds a single music track which can be used in a jukebox to play music.= +Rightclick an empty jukebox with the music disc in your hand to play the music. Rightclick the jukebox again to retrieve the music disc. The music can only be heard by you, not by other players.= +Music Disc= +@1—@2= +Jukebox= +Jukeboxes play music when they're supplied with a music disc.= +Place a music disc into an empty jukebox to insert the music disc and play music. If the jukebox already has a music disc, you will retrieve this music disc first. The music can only be heard by you, not by other players.= diff --git a/mods/ITEMS/mcl_maps/locale/template.txt b/mods/ITEMS/mcl_maps/locale/template.txt new file mode 100644 index 00000000..8fb561e8 --- /dev/null +++ b/mods/ITEMS/mcl_maps/locale/template.txt @@ -0,0 +1,7 @@ +# textdomain: mcl_maps +Empty Map= +Empty maps are not useful as maps, but they can be stacked and turned to maps which can be used.= +Rightclick to start using the map (which can't be stacked anymore).= +Map= +Maps show your surroundings as you explore the world.= +Hold the map in any of the hotbar slots. This allows you to access the minimap by pressing the minimap key ([F9] by default).@nIn Creative Mode, you don't need this item; the minimap is always available.= diff --git a/mods/ITEMS/mcl_mobitems/locale/template.txt b/mods/ITEMS/mcl_mobitems/locale/template.txt new file mode 100644 index 00000000..21249726 --- /dev/null +++ b/mods/ITEMS/mcl_mobitems/locale/template.txt @@ -0,0 +1,60 @@ +# textdomain: mcl_mobitems +Rotten Flesh= +Yuck! This piece of flesh clearly has seen better days. If you're really desperate, you can eat it to restore a few hunger points, but there's a 80% chance it causes food poisoning, which increases your hunger for a while.= +Raw Mutton= +Raw mutton is the flesh from a sheep and can be eaten safely. Cooking it will greatly increase its nutritional value.= +Cooked Mutton= +Cooked mutton is the cooked flesh from a sheep and is used as food.= +Raw Beef= +Raw beef is the flesh from cows and can be eaten safely. Cooking it will greatly increase its nutritional value.= +Steak= +Steak is cooked beef from cows and can be eaten.= +Raw Chicken= +Raw chicken is a food item which is not safe to consume. You can eat it to restore a few hunger points, but there's a 30% chance to suffer from food poisoning, which increases your hunger rate for a while. Cooking raw chicken will make it safe to eat and increases its nutritional value.= +Cooked Chicken= +A cooked chicken is a healthy food item which can be eaten.= +Raw Porkchop= +A raw porkchop is the flesh from a pig and can be eaten safely. Cooking it will greatly increase its nutritional value.= +Cooked Porkchop= +Cooked porkchop is the cooked flesh of a pig and is used as food.= +Raw Rabbit= +Raw rabbit is a food item from a dead rabbit. It can be eaten safely. Cooking it will increase its nutritional value.= +Cooked Rabbit= +This is a food item which can be eaten.= +Milk= +Milk is very refreshing and can be obtained by using a bucket on a cow. Drinking it will cure all forms of poisoning (in later versions: all status effects), but restores no hunger points.= +Spider Eye= +Spider eyes are used mainly in crafting. If you're really desperate, you can eat a spider eye, but it will poison you briefly.= +Bone= +Bones can be used to tame wolves so they will protect you. They are also useful as a crafting ingredient.= +String= +Strings are used in crafting.= +Blaze Rod= +This is a crafting component dropped from dead blazes.= +Blaze Powder= +This item is mainly used for crafting.= +Magma Cream= +Magma cream is a crafting component.= +Ghast Tear= +Place this item in an item frame as decoration.= +Nether Star= +A nether star is dropped when the Wither dies. Place it in an item frame to show the world how hardcore you are! Or just as decoration.= +Leather= +Leather is a versatile crafting component.= +Feather= +Feathers are used in crafting and are dropped from chickens.= +Rabbit Hide= +Rabbit hide is used to create leather.= +Rabbit's Foot= +Must be your lucky day! Place this item in an item frame for decoration.= +Saddle= +Saddles can be put on some animals in order to mount them.= +Rabbit Stew= +Rabbit stew is a very nutricious food item.= +Shulker Shell= +Shulker shells are used in crafting. They are dropped from dead shulkers.= +Slimeball= +Slimeballs are used in crafting. They are dropped from slimes.= +Gunpowder= +Carrot on a Stick= +A carrot on a stick can be used on saddled pigs to ride them.= diff --git a/mods/ITEMS/mcl_mobspawners/locale/template.txt b/mods/ITEMS/mcl_mobspawners/locale/template.txt new file mode 100644 index 00000000..f6948377 --- /dev/null +++ b/mods/ITEMS/mcl_mobspawners/locale/template.txt @@ -0,0 +1,4 @@ +# textdomain: mcl_mobspawners +Mob Spawner= +A mob spawner regularily causes mobs to appear around it while a player is nearby. Some mob spawners are disabled while in light.= +If you have a spawn egg, you use it to change the mob to spawn. Just place the item on the mob spawner. Player-set mob spawners always spawn mobs regardless of the light level.= diff --git a/mods/ITEMS/mcl_monster_eggs/locale/template.txt b/mods/ITEMS/mcl_monster_eggs/locale/template.txt new file mode 100644 index 00000000..7e8b0c0c --- /dev/null +++ b/mods/ITEMS/mcl_monster_eggs/locale/template.txt @@ -0,0 +1,8 @@ +# textdomain: mcl_mobspawners +An infested block is a block from which a silverfish will pop out when it is broken. It looks identical to its normal counterpart.= +Infested Stone= +Infested Cobblestone= +Infested Stone Bricks= +Infested Cracked Stone Bricks= +Infested Mossy Stone Bricks= +Infested Chiseled Stone Bricks= diff --git a/mods/ITEMS/mcl_mushrooms/locale/template.txt b/mods/ITEMS/mcl_mushrooms/locale/template.txt new file mode 100644 index 00000000..77e0156e --- /dev/null +++ b/mods/ITEMS/mcl_mushrooms/locale/template.txt @@ -0,0 +1,21 @@ +# textdomain: mcl_mushrooms +This decorative block is like a huge mushroom stem, but with the stem texture on all sides.= +Huge red mushroom blocks are the cap parts of huge red mushrooms. It consists of a red skin and can have pores on each of its sides.= +The stem part of a huge red mushroom.= +Huge Red Mushroom Block= +Huge Red Mushroom Stem= +Huge Red Mushroom All-Faces Stem= +Huge brown mushroom blocks are the cap parts of huge brown mushrooms. It consists of a brown skin and can have pores on each of its sides.= +The stem part of a huge brown mushroom.= +Huge Brown Mushroom Block= +Huge Brown Mushroom Stem= +Huge Brown Mushroom All-Faces Stem= +Brown mushrooms are fungi which grow and spread in darkness, but are sensitive to light. They are inedible as such, but they can be used to craft food items.= +Red mushrooms are fungi which grow and spread in darkness, but are sensitive to light. They are inedible as such, but they can be used to craft food items.= +A single mushroom of this species will slowly spread over time towards a random solid opaque block with a light level of 12 or lower in a 3×3×3 cube around the mushroom. It stops spreading when there are 5 or more mushrooms of the same species within an area of 9×3×9 blocks around the mushroom.= +Mushrooms will eventually uproot at a light level of 12 or higher. On mycelium or podzol, they survive and spread at any light level.= +This mushroom can be placed on mycelium and podzol at any light level. They can also be placed on blocks which are both solid and opaque, as long as the light level at daytime is not higher than 12.= +Brown Mushroom= +Red Mushroom= +Mushroom Stew= +Mushroom stew is a healthy soup which can be consumed to restore some hunger points.= diff --git a/mods/ITEMS/mcl_nether/locale/template.txt b/mods/ITEMS/mcl_nether/locale/template.txt new file mode 100644 index 00000000..215bd511 --- /dev/null +++ b/mods/ITEMS/mcl_nether/locale/template.txt @@ -0,0 +1,27 @@ +# textdomain: mcl_nether +Glowstone= +Glowstone is a naturally-glowing block which is home to the Nether.= +Nether Quartz Ore= +Nether quartz ore is an ore containing nether quartz. It is commonly found around netherrack in the Nether.= +Netherrack= +Netherrack is a stone-like block home to the Nether. Starting a fire on this block will create an eternal fire.= +Magma Block= +Magma blocks are hot solid blocks which hurt anyone standing on it, unless they have fire resistance. Starting a fire on this block will create an eternal fire.= +Soul Sand= +Soul sand is a block from the Nether. One can only slowly walk on soul sand. The slowing effect is amplified when the soul sand is on top of ice, packed ice or a slime block.= +Nether Brick Block= +Red Nether Brick Block= +Nether Wart Block= +A nether wart block is a purely decorative block made from nether wart.= +Block of Quartz= +Chiseled Quartz Block= +Pillar Quartz Block= +Smooth Quartz= +Glowstone Dust= +Glowstone dust is the dust which comes out of broken glowstones. It is mainly used in crafting.= +Nether Quartz= +Nether quartz is a versatile crafting ingredient.= +Nether Brick= +Nether bricks are the main crafting ingredient for crafting nether brick blocks and nether fences.= +Nether Lava Source= +Flowing Nether Lava= diff --git a/mods/ITEMS/mcl_ocean/locale/template.txt b/mods/ITEMS/mcl_ocean/locale/template.txt new file mode 100644 index 00000000..943e7dae --- /dev/null +++ b/mods/ITEMS/mcl_ocean/locale/template.txt @@ -0,0 +1,9 @@ +# textdomain: mcl_ocean +Sea Lantern= +Sea lanterns are decorative light sources which look great underwater but can be placed anywhere.= +Prismarine= +Prismarine is used as a building block. It slowly changes its color.= +Prismarine Bricks= +Dark Prismarine= +Prismarine Crystals= +Prismarine Shard= diff --git a/mods/ITEMS/mcl_portals/locale/template.txt b/mods/ITEMS/mcl_portals/locale/template.txt new file mode 100644 index 00000000..3283da3f --- /dev/null +++ b/mods/ITEMS/mcl_portals/locale/template.txt @@ -0,0 +1,14 @@ +# textdomain: mcl_portals +End Portal= +An End portal teleports creatures and objects to the mysterious End dimension (and back!).= +Hop into the portal to teleport. Entering an End portal in the Overworld teleports you to a fixed position in the End dimension and creates a 5×5 obsidian platform at your destination. End portals in the End will lead back to your spawn point in the Overworld.= +End Portal Frame= +End portal frames are used in the construction of End portals. Each block has a socket for an eye of ender.= +To create an End portal, you need 12 end portal frames and 12 eyes of ender. The end portal frames have to be arranged around a horizontal 3×3 area with each block facing inward. Any other arrangement will fail.= +Place an eye of ender into each block. The end portal appears in the middle after placing the final eye.= +End Portal Frame with Eye of Ender= +Nether Portal= +A Nether portal teleports creatures and objects to the hot and dangerous Nether dimension (and back!). Enter at your own risk!= +Stand in the portal for a moment to activate the teleportation. Entering a Nether portal for the first time will also create a new portal in the other dimension. If a Nether portal has been built in the Nether, it will lead to the Overworld. A Nether portal is destroyed if the any of the obsidian which surrounds it is destroyed, or if it was caught in an explosion.= +Obsidian is also used as the frame of Nether portals.= +To open a Nether portal, place an upright frame of obsidian with a width of 4 blocks and a height of 5 blocks, leaving only air in the center. After placing this frame, light a fire in the obsidian frame. Nether portals only work in the Overworld and the Nether.= diff --git a/mods/ITEMS/mcl_potions/locale/template.txt b/mods/ITEMS/mcl_potions/locale/template.txt new file mode 100644 index 00000000..850637b3 --- /dev/null +++ b/mods/ITEMS/mcl_potions/locale/template.txt @@ -0,0 +1,20 @@ +# textdomain: mcl_potions +Put this item in an item frame for decoration. It's useless otherwise.= +Fermented Spider Eye= +Glass Bottle= +A glass bottle is used as a container for liquids and can be used to collect water directly.= +To collect water, it on a cauldron with water (which removes a level of water) or any water source (which removes no water).= +Water Bottle= +Water bottles can be used to fill cauldrons. Drinking water has no effect.= +Rightclick to drink. Rightclick a cauldron to pour the water into the cauldron.= +River Water Bottle= +River water bottles can be used to fill cauldrons. Drinking it has no effect.= +Awkward Potion= +This potion has an awkward taste and is used for brewing more potions. Drinking it has no effect.= +Mundane Potion= +This potion has a clean taste and is used for brewing more potions. Drinking it has no effect.= +Thick Potion= +This potion has a bitter taste and is used for brewing more potions. Drinking it has no effect.= +Glistering Melon= +This shiny melon is full of tiny gold nuggets and would be nice in an item frame. It isn't edible and not useful for anything else.= +Dragon's Breath= diff --git a/mods/ITEMS/mcl_signs/locale/template.txt b/mods/ITEMS/mcl_signs/locale/template.txt new file mode 100644 index 00000000..ae920e30 --- /dev/null +++ b/mods/ITEMS/mcl_signs/locale/template.txt @@ -0,0 +1,4 @@ +# textdomain: mcl_signs +Sign= +Signs can be written and come in two variants: Wall sign and sign on a sign post. Signs can be placed on the top and the sides of other blocks, but not below them.= +Place the sign at the side to build a wall sign, place it on top of another block to build a sign with a sign post.@nAfter placing the sign, you can write something on it. You have 4 lines of text with up to 15 characters for each line; anything beyond these limits is lost. The text can not be changed once it has been written; you have to break and place the sign again.= diff --git a/mods/ITEMS/mcl_sponges/locale/template.txt b/mods/ITEMS/mcl_sponges/locale/template.txt new file mode 100644 index 00000000..2de97226 --- /dev/null +++ b/mods/ITEMS/mcl_sponges/locale/template.txt @@ -0,0 +1,8 @@ +# textdomain: mcl_sponges +Sponge= +Sponges are blocks which remove water around them when they are placed or come in contact with water, turning it into a wet sponge.= +Waterlogged Sponge= +A waterlogged sponge can be dried in the furnace to turn it into (dry) sponge. When there's an empty bucket in the fuel slot of a furnace, the water will pour into the bucket.= +Riverwaterlogged Sponge= +This is a sponge soaking wet with river water. It can be dried in the furnace to turn it into (dry) sponge. When there's an empty bucket in the fuel slot of the furnace, the river water will pour into the bucket.= +A sponge becomes riverwaterlogged (instead of waterlogged) if it sucks up more river water than (normal) water.= diff --git a/mods/ITEMS/mcl_stairs/locale/template.txt b/mods/ITEMS/mcl_stairs/locale/template.txt new file mode 100644 index 00000000..7a0e15db --- /dev/null +++ b/mods/ITEMS/mcl_stairs/locale/template.txt @@ -0,0 +1,101 @@ +# textdomain: mcl_stairs +Stairs are useful to reach higher places by walking over them; jumping is not required. Placing stairs in a corner pattern will create corner stairs. Stairs placed on the bottom or at the upper half of the side of a block will be placed upside down.= +Double @1= +Slabs are half as high as their full block counterparts and occupy either the lower or upper part of a block, depending on how it was placed. Slabs can be easily stepped on without needing to jump. When a slab is placed on another slab of the same type, a double slab is created.= +Upper @1= +Double slabs are full blocks which are created by placing two slabs of the same kind on each other.= +Oak Wood Stairs= +Oak Wood Slab= +Double Oak Wood Slab= +Jungle Wood Stairs= +Jungle Wood Slab= +Double Jungle Wood Slab= +Acacia Wood Stairs= +Acacia Wood Slab= +Double Acacia Wood Slab= +Spruce Wood Stairs= +Spruce Wood Slab= +Double Spruce Wood Slab= +Birch Wood Stairs= +Birch Wood Slab= +Double Birch Wood Slab= +Dark Oak Wood Stairs= +Dark Oak Wood Slab= +Double Dark Oak Wood Slab= +Stone Stairs= +Stone Slab= +Double Stone Slab= +Polished Stone Slab= +Double Polished Stone Slab= +Andesite Stairs= +Andesite Slab= +Double Andesite Slab= +Granite Stairs= +Granite Slab= +Double Granite Slab= +Diorite Stairs= +Diorite Slab= +Double Diorite Slab= +Cobblestone Stairs= +Cobblestone Slab= +Double Cobblestone Slab= +Moss Stone Stairs= +Moss Stone Slab= +Double Moss Stone Slab= +Brick Stairs= +Brick Slab= +Double Brick Slab= +Sandstone Stairs= +Sandstone Slab= +Double Sandstone Slab= +Smooth Sandstone Stairs= +Smooth Sandstone Slab= +Double Smooth Sandstone Slab= +Red Sandstone Stairs= +Red Sandstone Slab= +Double Red Sandstone Slab= +Smooth Red Sandstone Stairs= +Smooth Red Sandstone Slab= +Double Smooth Red Sandstone Slab= +Stone Bricks Stairs= +Stone Bricks Slab= +Double Stone Bricks Slab= +Quartz Stairs= +Quartz Slab= +Double Quartz Slab= +Smooth Quartz Stairs= +Smooth Quartz Slab= +Double Smooth Quartz Slab= +Nether Brick Stairs= +Nether Brick Slab= +Double Nether Brick Slab= +Red Nether Brick Stairs= +Red Nether Brick Slab= +Double Red Nether Brick Slab= +End Stone Brick Stairs= +End Stone Brick Slab= +Double End Stone Brick Slab= +Purpur Stairs= +Purpur Slab= +Double Purpur Slab= +Prismarine Stairs= +Prismarine Slab= +Double Prismarine Slab= +Prismarine Brick Stairs= +Prismarine Brick Slab= +Double Prismarine Brick Slab= +Dark Prismarine Stairs= +Dark Prismarine Slab= +Double Dark Prismarine Slab= +Polished Andesite Slab= +Double Polished Andesite Slab= +Polished Andesite Stairs= +Polished Granite Slab= +Double Polished Granite Slab= +Polished Granite Stairs= +Polished Diorite Slab= +Double Polished Diorite Slab= +Polished Diorite Stairs= +Mossy Stone Brick Stairs= +Mossy Stone Brick Slab= +Double Mossy Stone Brick Slab= diff --git a/mods/ITEMS/mcl_throwing/locale/template.txt b/mods/ITEMS/mcl_throwing/locale/template.txt new file mode 100644 index 00000000..126b3ff0 --- /dev/null +++ b/mods/ITEMS/mcl_throwing/locale/template.txt @@ -0,0 +1,9 @@ +# textdomain: mcl_throwing +@1 used the ender pearl too often.= +Hold it in your and and leftclick to throw.= +Snowball= +Snowballs can be thrown or launched from a dispenser for fun. Hitting something with a snowball does nothing.= +Egg= +Eggs can be thrown or launched from a dispenser and breaks on impact. There is a small chance that 1 or even 4 chickens will pop out of the egg when it hits the ground.= +Ender Pearl= +An ender pearl is an item which can be used for teleportation at the cost of health. It can be thrown and teleport the thrower to its impact location when it hits a solid block, a plant or vines. Each teleportation hurts the user by 5 hit points.= diff --git a/mods/ITEMS/mcl_tnt/locale/template.txt b/mods/ITEMS/mcl_tnt/locale/template.txt new file mode 100644 index 00000000..c50fea38 --- /dev/null +++ b/mods/ITEMS/mcl_tnt/locale/template.txt @@ -0,0 +1,5 @@ +# textdomain: mcl_tnt +@1 was caught in an explosion.= +TNT= +An explosive device. When it explodes, it will hurt living beings, destroy blocks around it, throw blocks affected by gravity all over the place and light fires. A single TNT has an explosion radius of @1. With a small chance, blocks may drop as an item (as if being mined) rather than being destroyed. TNT can be ignited by tools, explosions, fire, lava and redstone signals.= +Place the TNT on the ground and ignite it with one of the methods above. Quickly get in safe distance quickly. The TNT will start to be affected by gravity and explodes in 4 seconds.= diff --git a/mods/ITEMS/mcl_tools/locale/template.txt b/mods/ITEMS/mcl_tools/locale/template.txt new file mode 100644 index 00000000..8d90e42c --- /dev/null +++ b/mods/ITEMS/mcl_tools/locale/template.txt @@ -0,0 +1,29 @@ +# textdomain: mcl_tools +You use your bare hand whenever you are not wielding any item. With your hand you can mine the weakest blocks and deal minor damage by punching. Using the hand is often a last resort, as proper mining tools and weapons are better than the hand. When you are wielding an item which is not a mining tool or a weapon, it will behave as if it were the hand when you start mining or punching. In Creative Mode, the hand is able to break all blocks instantly.= +Pickaxes are mining tools to mine hard blocks, such as stone. A pickaxe can also be used as weapon, but it is rather inefficient.= +An axe is your tool of choice to cut down trees, wood-based blocks and other blocks. Axes deal a lot of damage as well, but they are rather slow.= +Swords are great in melee combat, as they are fast, deal high damage and can endure countless battles. Swords can also be used to cut down a few particular blocks, such as cobwebs.= +Shovels are tools for digging coarse blocks, such as dirt, sand and gravel. They can also be used to turn grass blocks to grass paths. Shovels can be used as weapons, but they are very weak.= +To turn a grass block into a grass path, hold the shovel in your hand, then use (rightclick) the top or side of a grass block. This only works when there's air above the grass block.= +Shears are tools to shear sheep, carve pumpkins and to mine a few block types. Shears are a special mining tool and can be used to obtain the original item from a grass, leaves and similar blocks.= +Wooden Pickaxe= +Stone Pickaxe= +Iron Pickaxe= +Golden Pickaxe= +Diamond Pickaxe= +Wooden Shovel= +Stone Shovel= +Iron Shovel= +Golden Shovel= +Diamond Shovel= +Wooden Axe= +Stone Axe= +Iron Axe= +Golden Axe= +Diamond Axe= +Wooden Sword= +Stone Sword= +Iron Sword= +Golden Sword= +Diamond Sword= +Shears= diff --git a/mods/ITEMS/mcl_torches/locale/template.txt b/mods/ITEMS/mcl_torches/locale/template.txt new file mode 100644 index 00000000..447fba74 --- /dev/null +++ b/mods/ITEMS/mcl_torches/locale/template.txt @@ -0,0 +1,3 @@ +# textdomain: mcl_torches +Torch= +Torches are light sources which can be placed at the side or on the top of most blocks.= diff --git a/mods/ITEMS/mcl_totems/locale/template.txt b/mods/ITEMS/mcl_totems/locale/template.txt new file mode 100644 index 00000000..e69de29b diff --git a/mods/ITEMS/mcl_walls/locale/template.txt b/mods/ITEMS/mcl_walls/locale/template.txt new file mode 100644 index 00000000..76536599 --- /dev/null +++ b/mods/ITEMS/mcl_walls/locale/template.txt @@ -0,0 +1,16 @@ +# textdomain: mcl_walls +A piece of wall. It cannot be jumped over with a simple jump. When multiple of these are placed to next to each other, they will automatically build a nice wall structure.= +Cobblestone Wall= +Mossy Cobblestone Wall= +Andesite Wall= +Granite Wall= +Diorite Wall= +Brick Wall= +Sandstone Wall= +Red Sandstone Wall= +Stone Brick Wall= +Mossy Stone Brick Wall= +Prismarine Wall= +End Stone Brick Wall= +Nether Brick Wall= +Red Nether Brick Wall= diff --git a/mods/ITEMS/mcl_wool/locale/template.txt b/mods/ITEMS/mcl_wool/locale/template.txt new file mode 100644 index 00000000..0358fb50 --- /dev/null +++ b/mods/ITEMS/mcl_wool/locale/template.txt @@ -0,0 +1,35 @@ +# textdomain: mcl_wool +White Wool= +White Carpet= +Grey Wool= +Grey Carpet= +Light Grey Wool= +Light Grey Carpet= +Black Wool= +Black Carpet= +Red Wool= +Red Carpet= +Yellow Wool= +Yellow Carpet= +Green Wool= +Green Carpet= +Cyan Wool= +Cyan Carpet= +Blue Wool= +Blue Carpet= +Magenta Wool= +Magenta Carpet= +Orange Wool= +Orange Carpet= +Purple Wool= +Purple Carpet= +Brown Wool= +Brown Carpet= +Pink Wool= +Pink Carpet= +Lime Wool= +Lime Carpet= +Light Blue Wool= +Light Blue Carpet= +Wool is a decorative block which comes in many different colors.= +Carpets are thin floor covers which come in many different colors.= diff --git a/mods/ITEMS/mclx_core/locale/template.txt b/mods/ITEMS/mclx_core/locale/template.txt new file mode 100644 index 00000000..1486ee30 --- /dev/null +++ b/mods/ITEMS/mclx_core/locale/template.txt @@ -0,0 +1,5 @@ +# textdomain: mclx_core +River Water Source= +River water has the same properties as water, but has a reduced flowing distance and is not renewable.= +River Water= +Flowing River Water= diff --git a/mods/ITEMS/mclx_fences/locale/template.txt b/mods/ITEMS/mclx_fences/locale/template.txt new file mode 100644 index 00000000..e6c05c7f --- /dev/null +++ b/mods/ITEMS/mclx_fences/locale/template.txt @@ -0,0 +1,4 @@ +# textdomain: mclx_fences +Red Nether Brick Fence= +Red Nether Brick Fence Gate= +Nether Brick Fence Gate= diff --git a/mods/ITEMS/mclx_stairs/locale/template.txt b/mods/ITEMS/mclx_stairs/locale/template.txt new file mode 100644 index 00000000..8237d416 --- /dev/null +++ b/mods/ITEMS/mclx_stairs/locale/template.txt @@ -0,0 +1,31 @@ +# textdomain: mclx_stairs +Oak Bark Stairs= +Oak Bark Slab= +Double Oak Bark Slab= +Acacia Bark Stairs= +Acacia Bark Slab= +Double Acacia Bark Slab= +Spruce Bark Stairs= +Spruce Bark Slab= +Double Spruce Bark Slab= +Birch Bark Stairs= +Birch Bark Slab= +Double Birch Bark Slab= +Jungle Bark Stairs= +Jungle Bark Slab= +Double Jungle Bark Slab= +Dark Oak Bark Stairs= +Dark Oak Bark Slab= +Double Dark Oak Bark Slab= +Lapis Lazuli Slab= +Double Lapis Lazuli Slab= +Lapis Lazuli Stairs= +Slab of Gold= +Double Slab of Gold= +Stairs of Gold= +Slab of Iron= +Double Slab of Iron= +Stairs of Iron= +Cracked Stone Brick Stairs= +Cracked Stone Brick Slab= +Double Cracked Stone Brick Slab= diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor/locale/template.txt b/mods/ITEMS/minetest-3d_armor/3d_armor/locale/template.txt new file mode 100644 index 00000000..f0126bca --- /dev/null +++ b/mods/ITEMS/minetest-3d_armor/3d_armor/locale/template.txt @@ -0,0 +1,23 @@ +# textdomain: 3d_armor +This is a piece of equippable armor which reduces the amount of damage you receive.= +To equip it, put it on the corresponding armor slot in your inventory menu.= +Leather Cap= +Iron Helmet= +Golden Helmet= +Diamond Helmet= +Chain Helmet= +Leather Tunic= +Iron Chestplate= +Golden Chestplate= +Diamond Chestplate= +Chain Chestplate= +Leather Pants= +Iron Leggings= +Golden Leggings= +Diamond Leggings= +Chain Leggings= +Leather Boots= +Iron Boots= +Golden Boots= +Diamond Boots= +Chain Boots= diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor_stand/locale/template.txt b/mods/ITEMS/minetest-3d_armor/3d_armor_stand/locale/template.txt new file mode 100644 index 00000000..d05dab07 --- /dev/null +++ b/mods/ITEMS/minetest-3d_armor/3d_armor_stand/locale/template.txt @@ -0,0 +1,4 @@ +# textdomain: 3d_armor_stand +Armor Stand= +An armor stand is a decorative object which can display different pieces of armor. Anything which players can wear as armor can also be put on an armor stand.= +Hold an armor item in your hand and rightclick the armor stand to put it on the armor stand. To take a piece of armor from the armor stand, select your hand and rightclick the armor stand. You'll retrieve the first armor item from above.= diff --git a/mods/ITEMS/xpanes/locale/template.txt b/mods/ITEMS/xpanes/locale/template.txt new file mode 100644 index 00000000..ad8c1b5e --- /dev/null +++ b/mods/ITEMS/xpanes/locale/template.txt @@ -0,0 +1,21 @@ +# textdomain: xpanes +Glass panes are thin layers of glass which neatly connect to their neighbors as you build them.= +Iron Bars= +Iron bars neatly connect to their neighbors as you build them.= +Glass Pane= +Red Stained Glass Pane= +Green Stained Glass Pane= +Blue Stained Glass Pane= +Light Blue Stained Glass Pane= +Black Stained Glass Pane= +White Stained Glass Pane= +Yellow Stained Glass Pane= +Brown Stained Glass Pane= +Orange Stained Glass Pane= +Pink Stained Glass Pane= +Grey Stained Glass Pane= +Lime Stained Glass Pane= +Light Grey Stained Glass Pane= +Magenta Stained Glass Pane= +Purple Stained Glass Pane= +Cyan Stained Glass Pane= diff --git a/mods/MISC/mcl_commands/locale/template.txt b/mods/MISC/mcl_commands/locale/template.txt new file mode 100644 index 00000000..d98db68a --- /dev/null +++ b/mods/MISC/mcl_commands/locale/template.txt @@ -0,0 +1,20 @@ +# textdomain: mcl_commands +Players can't be killed right now, damage has been disabled.= +Player @1 does not exist.= +You are already dead= +@1 is already dead= +@1 committed suicide.= +@1 was killed by @2.= +[]= +Kill player or yourself= +Can use /say= += +Send a message to every player= +Invalid usage, see /help say.= +,, = +Set node at given position= +Invalid node= +@1 spawned.= +Invalid parameters (see /help setblock)= +List bans= +Ban list: @1= diff --git a/mods/MISC/mcl_privs/locale/template.txt b/mods/MISC/mcl_privs/locale/template.txt new file mode 100644 index 00000000..11be3349 --- /dev/null +++ b/mods/MISC/mcl_privs/locale/template.txt @@ -0,0 +1,2 @@ +# textdomain: mcl_privs +Can place and use advanced blocks like mob spawners, command blocks and barriers.= diff --git a/mods/MISC/mcl_wip/locale/template.txt b/mods/MISC/mcl_wip/locale/template.txt new file mode 100644 index 00000000..ab7fadde --- /dev/null +++ b/mods/MISC/mcl_wip/locale/template.txt @@ -0,0 +1,3 @@ +# textdomain: mcl_wip +(WIP)= +(Temporary)= diff --git a/mods/PLAYER/mcl_playerplus/locale/template.txt b/mods/PLAYER/mcl_playerplus/locale/template.txt new file mode 100644 index 00000000..49b1f96a --- /dev/null +++ b/mods/PLAYER/mcl_playerplus/locale/template.txt @@ -0,0 +1,3 @@ +# textdomain: mcl_playerplus +@1 suffocated to death.= +@1 was prickled to death by a cactus.= From 04c2da63adbe6f2da94e625760ab1f289ea7579c Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Thu, 14 Mar 2019 00:00:10 +0100 Subject: [PATCH 134/737] mcl_mobs: Remove unused string --- mods/ENTITIES/mcl_mobs/api.lua | 1 - 1 file changed, 1 deletion(-) diff --git a/mods/ENTITIES/mcl_mobs/api.lua b/mods/ENTITIES/mcl_mobs/api.lua index 335fd01f..dfa34ec0 100644 --- a/mods/ENTITIES/mcl_mobs/api.lua +++ b/mods/ENTITIES/mcl_mobs/api.lua @@ -2355,7 +2355,6 @@ local mob_punch = function(self, hitter, tflp, tool_capabilities, dir) -- is mob protected? if self.protected and hitter:is_player() and minetest.is_protected(self.object:get_pos(), hitter:get_player_name()) then - minetest.chat_send_player(hitter:get_player_name(), S("Mob has been protected!")) return end From 9ef6176958bf7db2ec3915306cd93e6b75d00383 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Thu, 14 Mar 2019 00:09:09 +0100 Subject: [PATCH 135/737] Remove redundant translatability stuff in mobs_mc --- mods/ENTITIES/mobs_mc/1_items_default.lua | 137 +++++++++++----------- mods/ENTITIES/mobs_mc/2_throwing.lua | 23 ++-- mods/ENTITIES/mobs_mc/4_heads.lua | 11 +- mods/ENTITIES/mobs_mc/silverfish.lua | 10 +- 4 files changed, 95 insertions(+), 86 deletions(-) diff --git a/mods/ENTITIES/mobs_mc/1_items_default.lua b/mods/ENTITIES/mobs_mc/1_items_default.lua index 37d54a07..3a58bd49 100644 --- a/mods/ENTITIES/mobs_mc/1_items_default.lua +++ b/mods/ENTITIES/mobs_mc/1_items_default.lua @@ -5,6 +5,9 @@ --THIS IS THE MASTER ITEM LIST TO USE WITH DEFAULT +-- NOTE: Most strings intentionally not marked for translation, other mods already have these items. +-- TODO: Remove this file eventually, most items are already outsourced in other mods. + local S = minetest.get_translator("mobs_mc") local c = mobs_mc.is_item_variable_overridden @@ -12,8 +15,8 @@ local c = mobs_mc.is_item_variable_overridden -- Blaze if c("blaze_rod") then minetest.register_craftitem("mobs_mc:blaze_rod", { - description = S("Blaze Rod"), - _doc_items_longdesc = S("This is a crafting component dropped from dead blazes."), + description = "Blaze Rod", + _doc_items_longdesc = "This is a crafting component dropped from dead blazes.", wield_image = "mcl_mobitems_blaze_rod.png", inventory_image = "mcl_mobitems_blaze_rod.png", }) @@ -39,8 +42,8 @@ end if c("blaze_powder") then minetest.register_craftitem("mobs_mc:blaze_powder", { - description = S("Blaze Powder"), - _doc_items_longdesc = S("This item is mainly used for brewing potions and crafting."), + description = "Blaze Powder", + _doc_items_longdesc = "This item is mainly used for brewing potions and crafting.", wield_image = "mcl_mobitems_blaze_powder.png", inventory_image = "mcl_mobitems_blaze_powder.png", }) @@ -56,8 +59,8 @@ end -- Chicken if c("chicken_raw") then minetest.register_craftitem("mobs_mc:chicken_raw", { - description = S("Raw Chicken"), - _doc_items_longdesc = S("Raw chicken is a food item and can be eaten safely. Cooking it will increase its nutritional value."), + description = "Raw Chicken", + _doc_items_longdesc = "Raw chicken is a food item and can be eaten safely. Cooking it will increase its nutritional value.", inventory_image = "mcl_mobitems_chicken_raw.png", groups = { food = 2, eatable = 2 }, on_use = minetest.item_eat(2), @@ -66,8 +69,8 @@ end if c("chicken_cooked") then minetest.register_craftitem("mobs_mc:chicken_cooked", { - description = S("Cooked Chicken"), - _doc_items_longdesc = S("A cooked chicken is a healthy food item which can be eaten."), + description = "Cooked Chicken", + _doc_items_longdesc = "A cooked chicken is a healthy food item which can be eaten.", inventory_image = "mcl_mobitems_chicken_cooked.png", groups = { food = 2, eatable = 6 }, on_use = minetest.item_eat(6), @@ -85,8 +88,8 @@ end if c("feather") then minetest.register_craftitem("mobs_mc:feather", { - description = S("Feather"), - _doc_items_longdesc = S("Feathers are used in crafting and are dropped from chickens."), + description = "Feather", + _doc_items_longdesc = "Feathers are used in crafting and are dropped from chickens.", inventory_image = "mcl_mobitems_feather.png", }) end @@ -94,8 +97,8 @@ end -- Cow and mooshroom if c("beef_raw") then minetest.register_craftitem("mobs_mc:beef_raw", { - description = S("Raw Beef"), - _doc_items_longdesc = S("Raw beef is the flesh from cows and can be eaten safely. Cooking it will greatly increase its nutritional value."), + description = "Raw Beef", + _doc_items_longdesc = "Raw beef is the flesh from cows and can be eaten safely. Cooking it will greatly increase its nutritional value.", inventory_image = "mcl_mobitems_beef_raw.png", groups = { food = 2, eatable = 3 }, on_use = minetest.item_eat(3), @@ -104,8 +107,8 @@ end if c("beef_cooked") then minetest.register_craftitem("mobs_mc:beef_cooked", { - description = S("Steak"), - _doc_items_longdesc = S("Steak is cooked beef from cows and can be eaten."), + description = "Steak", + _doc_items_longdesc = "Steak is cooked beef from cows and can be eaten.", inventory_image = "mcl_mobitems_beef_cooked.png", groups = { food = 2, eatable = 8 }, on_use = minetest.item_eat(8), @@ -125,8 +128,8 @@ end if c("milk") then -- milk minetest.register_craftitem("mobs_mc:milk_bucket", { - description = S("Milk"), - _doc_items_longdesc = S("Milk is a food item obtained by using a bucket on a cow."), + description = "Milk", + _doc_items_longdesc = "Milk is a food item obtained by using a bucket on a cow.", inventory_image = "mobs_bucket_milk.png", groups = { food = 3, eatable = 1 }, on_use = minetest.item_eat(1, "bucket:bucket_empty"), @@ -136,8 +139,8 @@ end if c("bowl") then minetest.register_craftitem("mobs_mc:bowl", { - description = S("Bowl"), - _doc_items_longdesc = S("Bowls are mainly used to hold tasty soups."), + description = "Bowl", + _doc_items_longdesc = "Bowls are mainly used to hold tasty soups.", inventory_image = "mcl_core_bowl.png", }) @@ -158,8 +161,8 @@ end if c("mushroom_stew") then minetest.register_craftitem("mobs_mc:mushroom_stew", { - description = S("Mushroom Stew"), - _doc_items_longdesc = S("Mushroom stew is a healthy soup."), + description = "Mushroom Stew", + _doc_items_longdesc = "Mushroom stew is a healthy soup.", inventory_image = "farming_mushroom_stew.png", groups = { food = 3, eatable = 6 }, on_use = minetest.item_eat(6, "mobs_mc:bowl"), @@ -177,7 +180,7 @@ if c("dragon_egg") then --ender dragon minetest.register_node("mobs_mc:dragon_egg", { - description = S("Dragon Egg"), + description = "Dragon Egg", tiles = { "mcl_end_dragon_egg.png", "mcl_end_dragon_egg.png", @@ -221,7 +224,7 @@ end -- Enderman if c("ender_eye") then minetest.register_craftitem("mobs_mc:ender_eye", { - description = S("Eye of Ender"), + description = "Eye of Ender", _doc_items_longdesc = longdesc_craftitem, inventory_image = "mcl_end_ender_eye.png", groups = { craftitem = 1 }, @@ -239,8 +242,8 @@ end -- Ghast if c("ghast_tear") then minetest.register_craftitem("mobs_mc:ghast_tear", { - description = S("Ghast Tear"), - _doc_items_longdesc = S("A ghast tear is an item used in potion brewing. It is dropped from dead ghasts."), + description = "Ghast Tear", + _doc_items_longdesc = "A ghast tear is an item used in potion brewing. It is dropped from dead ghasts.", wield_image = "mcl_mobitems_ghast_tear.png", inventory_image = "mcl_mobitems_ghast_tear.png", groups = { brewitem = 1 }, @@ -251,9 +254,9 @@ end if c("saddle") then -- Overwrite the saddle from Mobs Redo minetest.register_craftitem(":mobs:saddle", { - description = S("Saddle"), - _doc_items_longdesc = S("Saddles can be put on horses, donkeys, mules and pigs in order to mount them."), - _doc_items_usagehelp = S("Rightclick an animal while holding a saddle to put on the saddle. You can now mount the animal by rightclicking it again."), + description = "Saddle", + _doc_items_longdesc = "Saddles can be put on horses, donkeys, mules and pigs in order to mount them.", + _doc_items_usagehelp = "Rightclick an animal while holding a saddle to put on the saddle. You can now mount the animal by rightclicking it again.", inventory_image = "mcl_mobitems_saddle.png", stack_max = 1, }) @@ -271,12 +274,12 @@ if c("saddle") and c("lether") and c("string") and c("iron_ingot") then end -- Horse Armor -local horse_armor_use = S("Rightclick a horse to put on the horse armor. Donkeys and mules can't wear horse armor.") +local horse_armor_use = "Rightclick a horse to put on the horse armor. Donkeys and mules can't wear horse armor." -- TODO: Balance the horse armor strength, compare with MC armor strength if c("iron_horse_armor") then minetest.register_craftitem("mobs_mc:iron_horse_armor", { - description = S("Iron Horse Armor"), - _doc_items_longdesc = S("Iron horse armor can be worn by horses to increase their protection from harm a bit."), + description = "Iron Horse Armor", + _doc_items_longdesc = "Iron horse armor can be worn by horses to increase their protection from harm a bit.", _doc_items_usagehelp = horse_armor_use, inventory_image = "mobs_mc_iron_horse_armor.png", _horse_overlay_image = "mobs_mc_horse_armor_iron.png", @@ -286,8 +289,8 @@ if c("iron_horse_armor") then end if c("gold_horse_armor") then minetest.register_craftitem("mobs_mc:gold_horse_armor", { - description = S("Golden Horse Armor"), - _doc_items_longdesc = S("Golden horse armor can be worn by horses to increase their protection from harm."), + description = "Golden Horse Armor", + _doc_items_longdesc = "Golden horse armor can be worn by horses to increase their protection from harm.", _doc_items_usagehelp = horse_armor_use, inventory_image = "mobs_mc_gold_horse_armor.png", _horse_overlay_image = "mobs_mc_horse_armor_gold.png", @@ -297,8 +300,8 @@ if c("gold_horse_armor") then end if c("diamond_horse_armor") then minetest.register_craftitem("mobs_mc:diamond_horse_armor", { - description = S("Diamond Horse Armor"), - _doc_items_longdesc = S("Diamond horse armor can be worn by horses to greatly increase their protection from harm."), + description = "Diamond Horse Armor", + _doc_items_longdesc = "Diamond horse armor can be worn by horses to greatly increase their protection from harm.", _doc_items_usagehelp = horse_armor_use, inventory_image = "mobs_mc_diamond_horse_armor.png", _horse_overlay_image = "mobs_mc_horse_armor_diamond.png", @@ -310,8 +313,8 @@ end -- Pig if c("porkchop_raw") then minetest.register_craftitem("mobs_mc:porkchop_raw", { - description = S("Raw Porkchop"), - _doc_items_longdesc = S("A raw porkchop is the flesh from a pig and can be eaten safely. Cooking it will greatly increase its nutritional value."), + description = "Raw Porkchop", + _doc_items_longdesc = "A raw porkchop is the flesh from a pig and can be eaten safely. Cooking it will greatly increase its nutritional value.", inventory_image = "mcl_mobitems_porkchop_raw.png", groups = { food = 2, eatable = 3 }, on_use = minetest.item_eat(3), @@ -320,7 +323,7 @@ end if c("porkchop_cooked") then minetest.register_craftitem("mobs_mc:porkchop_cooked", { - description = S("Cooked Porkchop"), + description = "Cooked Porkchop", _doc_items_longdesc = "Cooked porkchop is the cooked flesh of a pig and is used as food.", inventory_image = "mcl_mobitems_porkchop_cooked.png", groups = { food = 2, eatable = 8 }, @@ -339,9 +342,9 @@ end if c("carrot_on_a_stick") then minetest.register_tool("mobs_mc:carrot_on_a_stick", { - description = S("Carrot on a Stick"), - _doc_items_longdesc = S("A carrot on a stick can be used on saddled pigs to ride them. Pigs will also follow anyone who holds a carrot on a stick near them."), - _doc_items_usagehelp = S("Rightclick a saddled pig with the carrot on a stick to mount it. You can now ride it like a horse."), + description = "Carrot on a Stick", + _doc_items_longdesc = "A carrot on a stick can be used on saddled pigs to ride them. Pigs will also follow anyone who holds a carrot on a stick near them.", + _doc_items_usagehelp = "Rightclick a saddled pig with the carrot on a stick to mount it. You can now ride it like a horse.", wield_image = "mcl_mobitems_carrot_on_a_stick.png", inventory_image = "mcl_mobitems_carrot_on_a_stick.png", sounds = { breaks = "default_tool_breaks" }, @@ -381,8 +384,8 @@ end -- Rabbit if c("rabbit_raw") then minetest.register_craftitem("mobs_mc:rabbit_raw", { - description = S("Raw Rabbit"), - _doc_items_longdesc = S("Raw rabbit is a food item from a dead rabbit. It can be eaten safely. Cooking it will increase its nutritional value."), + description = "Raw Rabbit", + _doc_items_longdesc = "Raw rabbit is a food item from a dead rabbit. It can be eaten safely. Cooking it will increase its nutritional value.", inventory_image = "mcl_mobitems_rabbit_raw.png", groups = { food = 2, eatable = 3 }, on_use = minetest.item_eat(3), @@ -391,8 +394,8 @@ end if c("rabbit_cooked") then minetest.register_craftitem("mobs_mc:rabbit_cooked", { - description = S("Cooked Rabbit"), - _doc_items_longdesc = S("This is a food item which can be eaten."), + description = "Cooked Rabbit", + _doc_items_longdesc = "This is a food item which can be eaten.", inventory_image = "mcl_mobitems_rabbit_cooked.png", groups = { food = 2, eatable = 5 }, on_use = minetest.item_eat(5), @@ -410,8 +413,8 @@ end if c("rabbit_hide") then minetest.register_craftitem("mobs_mc:rabbit_hide", { - description = S("Rabbit Hide"), - _doc_items_longdesc = S("Rabbit hide is used to create leather."), + description = "Rabbit Hide", + _doc_items_longdesc = "Rabbit hide is used to create leather.", inventory_image = "mcl_mobitems_rabbit_hide.png" }) end @@ -428,8 +431,8 @@ end if c("rabbit_foot") then minetest.register_craftitem("mobs_mc:rabbit_foot", { - description = S("Rabbit's Foot"), - _doc_items_longdesc = S("This item is used in brewing."), + description = "Rabbit's Foot", + _doc_items_longdesc = "This item is used in brewing.", inventory_image = "mcl_mobitems_rabbit_foot.png" }) end @@ -437,8 +440,8 @@ end -- Sheep if c("mutton_raw") then minetest.register_craftitem("mobs_mc:mutton_raw", { - description = S("Raw Mutton"), - _doc_items_longdesc = S("Raw mutton is the flesh from a sheep and can be eaten safely. Cooking it will greatly increase its nutritional value."), + description = "Raw Mutton", + _doc_items_longdesc = "Raw mutton is the flesh from a sheep and can be eaten safely. Cooking it will greatly increase its nutritional value.", inventory_image = "mcl_mobitems_mutton_raw.png", groups = { food = 2, eatable = 4 }, on_use = minetest.item_eat(4), @@ -447,8 +450,8 @@ end if c("mutton_cooked") then minetest.register_craftitem("mobs_mc:mutton_cooked", { - description = S("Cooked Mutton"), - _doc_items_longdesc = S("Cooked mutton is the cooked flesh from a sheep and is used as food."), + description = "Cooked Mutton", + _doc_items_longdesc = "Cooked mutton is the cooked flesh from a sheep and is used as food.", inventory_image = "mcl_mobitems_mutton_cooked.png", groups = { food = 2, eatable = 8 }, on_use = minetest.item_eat(8), @@ -467,8 +470,8 @@ end -- Shulker if c("shulker_shell") then minetest.register_craftitem("mobs_mc:shulker_shell", { - description = S("Shulker Shell"), - _doc_items_longdesc = S("Shulker shells are used in crafting. They are dropped from dead shulkers."), + description = "Shulker Shell", + _doc_items_longdesc = "Shulker shells are used in crafting. They are dropped from dead shulkers.", inventory_image = "mcl_mobitems_shulker_shell.png", groups = { craftitem = 1 }, }) @@ -477,8 +480,8 @@ end -- Magma cube if c("magma_cream") then minetest.register_craftitem("mobs_mc:magma_cream", { - description = S("Magma Cream"), - _doc_items_longdesc = S("Magma cream is a crafting component."), + description = "Magma Cream", + _doc_items_longdesc = "Magma cream is a crafting component.", wield_image = "mcl_mobitems_magma_cream.png", inventory_image = "mcl_mobitems_magma_cream.png", groups = { brewitem = 1 }, @@ -488,8 +491,8 @@ end -- Slime if c("slimeball") then minetest.register_craftitem("mobs_mc:slimeball", { - description = S("Slimeball"), - _doc_items_longdesc = S("Slimeballs are used in crafting. They are dropped from slimes."), + description = "Slimeball", + _doc_items_longdesc = "Slimeballs are used in crafting. They are dropped from slimes.", inventory_image = "mcl_mobitems_slimeball.png" }) if minetest.get_modpath("mesecons_materials") then @@ -503,8 +506,8 @@ end -- Spider if c("spider_eye") then minetest.register_craftitem("mobs_mc:spider_eye", { - description = S("Spider Eye"), - _doc_items_longdesc = S("Spider eyes are used mainly in crafting and brewing. Spider eyes can be eaten, but they poison you and reduce your health by 2 hit points."), + description = "Spider Eye", + _doc_items_longdesc = "Spider eyes are used mainly in crafting and brewing. Spider eyes can be eaten, but they poison you and reduce your health by 2 hit points.", inventory_image = "mcl_mobitems_spider_eye.png", wield_image = "mcl_mobitems_spider_eye.png", -- Simplified poisonous food @@ -589,8 +592,8 @@ end -- Rotten flesh if c("rotten_flesh") then minetest.register_craftitem("mobs_mc:rotten_flesh", { - description = S("Rotten Flesh"), - _doc_items_longdesc = S("Yuck! This piece of flesh clearly has seen better days. Eating it will only poison you and reduces your health by 4 hit points. But tamed wolves can eat it just fine."), + description = "Rotten Flesh", + _doc_items_longdesc = "Yuck! This piece of flesh clearly has seen better days. Eating it will only poison you and reduces your health by 4 hit points. But tamed wolves can eat it just fine.", inventory_image = "mcl_mobitems_rotten_flesh.png", -- Simplified poisonous food groups = { food = 2, eatable = -4 }, @@ -601,8 +604,8 @@ end -- Misc. if c("nether_star") then minetest.register_craftitem("mobs_mc:nether_star", { - description = S("Nether Star"), - _doc_items_longdesc = S("A nether star is a crafting component. It is dropped from the Wither."), + description = "Nether Star", + _doc_items_longdesc = "A nether star is a crafting component. It is dropped from the Wither.", inventory_image = "mcl_mobitems_nether_star.png" }) end @@ -630,9 +633,9 @@ end if c("bone") then minetest.register_craftitem("mobs_mc:bone", { - description = S("Bone"), - _doc_items_longdesc = S("Bones can be used to tame wolves so they will protect you. They are also useful as a crafting ingredient."), - _doc_items_usagehelp = S("Hold the bone in your hand near wolves to attract them. Rightclick the wolf to give it a bone and tame it."), + description = "Bone", + _doc_items_longdesc = "Bones can be used to tame wolves so they will protect you. They are also useful as a crafting ingredient.", + _doc_items_usagehelp = "Hold the bone in your hand near wolves to attract them. Rightclick the wolf to give it a bone and tame it.", inventory_image = "mcl_mobitems_bone.png" }) if minetest.get_modpath("bones") then diff --git a/mods/ENTITIES/mobs_mc/2_throwing.lua b/mods/ENTITIES/mobs_mc/2_throwing.lua index 5173b5a9..59b03741 100644 --- a/mods/ENTITIES/mobs_mc/2_throwing.lua +++ b/mods/ENTITIES/mobs_mc/2_throwing.lua @@ -3,6 +3,9 @@ --made for MC like Survival game --License for code WTFPL and otherwise stated in readmes +-- NOTE: Strings intentionally not marked for translation, other mods already have these items. +-- TODO: Remove this file eventually, all items here are already outsourced in other mods. + local S = minetest.get_translator("mobs_mc") --maikerumines throwing code @@ -130,9 +133,9 @@ end if c("arrow") then minetest.register_craftitem("mobs_mc:arrow", { - description = S("Arrow"), - _doc_items_longdesc = S("Arrows are ammunition for bows."), - _doc_items_usagehelp = S("To use arrows as ammunition for a bow, put them in the inventory slot following the bow. Slots are counted left to right, top to bottom."), + description = "Arrow", + _doc_items_longdesc = "Arrows are ammunition for bows.", + _doc_items_usagehelp = "To use arrows as ammunition for a bow, put them in the inventory slot following the bow. Slots are counted left to right, top to bottom.", inventory_image = "mcl_bows_arrow_inv.png", }) end @@ -150,9 +153,9 @@ end if c("bow") then minetest.register_tool("mobs_mc:bow_wood", { - description = S("Bow"), - _doc_items_longdesc = S("Bows are ranged weapons to shoot arrows at your foes."), - _doc_items_usagehelp = S("To use the bow, you first need to have at least one arrow in slot following the bow. Leftclick to shoot. Each hit deals 3 damage."), + description = "Bow", + _doc_items_longdesc = "Bows are ranged weapons to shoot arrows at your foes.", + _doc_items_usagehelp = "To use the bow, you first need to have at least one arrow in slot following the bow. Leftclick to shoot. Each hit deals 3 damage.", inventory_image = "mcl_bows_bow.png", on_use = function(itemstack, user, pointed_thing) if throwing_shoot_arrow(itemstack, user, pointed_thing) then @@ -289,8 +292,8 @@ if c("egg") then end minetest.register_craftitem("mobs_mc:egg", { - description = S("Egg"), - _doc_items_longdesc = S("Eggs can be thrown and break on impact. There is a small chance that 1 or even 4 chicks will pop out"), + description = "Egg", + _doc_items_longdesc = "Eggs can be thrown and break on impact. There is a small chance that 1 or even 4 chicks will pop out", _doc_items_usagehelp = how_to_throw, inventory_image = "mobs_chicken_egg.png", on_use = mobs_shoot_egg, @@ -375,8 +378,8 @@ if c("snowball") then -- Snowball minetest.register_craftitem("mobs_mc:snowball", { - description = S("Snowball"), - _doc_items_longdesc = S("Snowballs can be thrown at your enemies. A snowball deals 3 damage to blazes, but is harmless to anything else."), + description = "Snowball", + _doc_items_longdesc = "Snowballs can be thrown at your enemies. A snowball deals 3 damage to blazes, but is harmless to anything else.", _doc_items_usagehelp = how_to_throw, inventory_image = "mcl_throwing_snowball.png", on_use = mobs_shoot_snowball, diff --git a/mods/ENTITIES/mobs_mc/4_heads.lua b/mods/ENTITIES/mobs_mc/4_heads.lua index b60cd168..01b8ee57 100644 --- a/mods/ENTITIES/mobs_mc/4_heads.lua +++ b/mods/ENTITIES/mobs_mc/4_heads.lua @@ -1,6 +1,9 @@ --MC Heads for minetest --maikerumine +-- NOTE: Strings intentionally not marked for translation, other mods already have these items. +-- TODO: Remove this file eventually, all items here are already outsourced in other mods. + local S = minetest.get_translator("mobs_mc") -- Heads system @@ -53,7 +56,7 @@ local function addhead(mobname, desc, longdesc) end -- Add heads -addhead("zombie", S("Zombie Head"), S("A zombie head is a small decorative block which resembles the head of a zombie.")) -addhead("creeper", S("Creeper Head"), S("A creeper head is a small decorative block which resembles the head of a creeper.")) -addhead("skeleton", S("Skeleton Skull"), S("A skeleton skull is a small decorative block which resembles the skull of a skeleton.")) -addhead("wither_skeleton", S("Wither Skeleton Skull"), S("A wither skeleton skull is a small decorative block which resembles the skull of a wither skeleton.")) +addhead("zombie", "Zombie Head", "A zombie head is a small decorative block which resembles the head of a zombie.") +addhead("creeper", "Creeper Head", "A creeper head is a small decorative block which resembles the head of a creeper.") +addhead("skeleton", "Skeleton Skull", "A skeleton skull is a small decorative block which resembles the skull of a skeleton.") +addhead("wither_skeleton", "Wither Skeleton Skull", "A wither skeleton skull is a small decorative block which resembles the skull of a wither skeleton.") diff --git a/mods/ENTITIES/mobs_mc/silverfish.lua b/mods/ENTITIES/mobs_mc/silverfish.lua index 77415b40..7f19d9a2 100644 --- a/mods/ENTITIES/mobs_mc/silverfish.lua +++ b/mods/ENTITIES/mobs_mc/silverfish.lua @@ -58,7 +58,7 @@ if minetest.get_modpath("default") and mobs_mc.create_monster_egg_nodes then end end minetest.register_node("mobs_mc:monster_egg_stone", { - description = S("Stone Monster Egg"), + description = "Stone Monster Egg", tiles = {"default_stone.png"}, groups = {oddly_breakable_by_hand = 2, spawns_silverfish = 1}, drop = '', @@ -68,7 +68,7 @@ if minetest.get_modpath("default") and mobs_mc.create_monster_egg_nodes then }) minetest.register_node("mobs_mc:monster_egg_cobble", { - description = S("Cobblestone Monster Egg"), + description = "Cobblestone Monster Egg", tiles = {"default_cobble.png"}, is_ground_content = false, groups = {oddly_breakable_by_hand = 2, spawns_silverfish = 1}, @@ -78,7 +78,7 @@ if minetest.get_modpath("default") and mobs_mc.create_monster_egg_nodes then }) minetest.register_node("mobs_mc:monster_egg_mossycobble", { - description = S("Mossy Cobblestone Monster Egg"), + description = "Mossy Cobblestone Monster Egg", tiles = {"default_mossycobble.png"}, is_ground_content = false, groups = {oddly_breakable_by_hand = 2, spawns_silverfish = 1}, @@ -88,7 +88,7 @@ if minetest.get_modpath("default") and mobs_mc.create_monster_egg_nodes then }) minetest.register_node("mobs_mc:monster_egg_stonebrick", { - description = S("Stone Brick Monster Egg"), + description = "Stone Brick Monster Egg", paramtype2 = "facedir", place_param2 = 0, tiles = {"default_stone_brick.png"}, @@ -100,7 +100,7 @@ if minetest.get_modpath("default") and mobs_mc.create_monster_egg_nodes then }) minetest.register_node("mobs_mc:monster_egg_stone_block", { - description = S("Stone Block Monster Egg"), + description = "Stone Block Monster Egg", tiles = {"default_stone_block.png"}, is_ground_content = false, groups = {oddly_breakable_by_hand = 2, spawns_silverfish = 1}, From 7c9126ace51eae0b545a93844d75287d38a30935 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Thu, 14 Mar 2019 00:25:41 +0100 Subject: [PATCH 136/737] German translation: entities --- .../locale/mcl_falling_nodes.de.tr | 3 + .../mcl_minecarts/locale/mcl_minecarts.de.tr | 23 + mods/ENTITIES/mcl_mobs/locale/mcl_mobs.de.tr | 5 + mods/ENTITIES/mcl_mobs/locale/template.txt | 5 + mods/ENTITIES/mobs_mc/locale/de_DE.po | 742 ------------------ mods/ENTITIES/mobs_mc/locale/mobs_mc.de.tr | 54 ++ mods/ENTITIES/mobs_mc/locale/template.pot | 647 --------------- mods/ENTITIES/mobs_mc/locale/template.txt | 54 ++ 8 files changed, 144 insertions(+), 1389 deletions(-) create mode 100644 mods/ENTITIES/mcl_falling_nodes/locale/mcl_falling_nodes.de.tr create mode 100644 mods/ENTITIES/mcl_minecarts/locale/mcl_minecarts.de.tr create mode 100644 mods/ENTITIES/mcl_mobs/locale/mcl_mobs.de.tr create mode 100644 mods/ENTITIES/mcl_mobs/locale/template.txt delete mode 100644 mods/ENTITIES/mobs_mc/locale/de_DE.po create mode 100644 mods/ENTITIES/mobs_mc/locale/mobs_mc.de.tr delete mode 100644 mods/ENTITIES/mobs_mc/locale/template.pot create mode 100644 mods/ENTITIES/mobs_mc/locale/template.txt diff --git a/mods/ENTITIES/mcl_falling_nodes/locale/mcl_falling_nodes.de.tr b/mods/ENTITIES/mcl_falling_nodes/locale/mcl_falling_nodes.de.tr new file mode 100644 index 00000000..66cf8a2a --- /dev/null +++ b/mods/ENTITIES/mcl_falling_nodes/locale/mcl_falling_nodes.de.tr @@ -0,0 +1,3 @@ +# textdomain: mcl_falling_nodes +%s was smashed by a falling anvil.=%s wurde von einem fallenden Amboss zerschmettert. +%s was smashed by a falling block.=%s wurde von einem fallenden Block zerschmettert. diff --git a/mods/ENTITIES/mcl_minecarts/locale/mcl_minecarts.de.tr b/mods/ENTITIES/mcl_minecarts/locale/mcl_minecarts.de.tr new file mode 100644 index 00000000..9eb3d1a8 --- /dev/null +++ b/mods/ENTITIES/mcl_minecarts/locale/mcl_minecarts.de.tr @@ -0,0 +1,23 @@ +# textdomain: mcl_minecarts +Minecart=Lore +Minecarts can be used for a quick transportion on rails.=Loren können für eine schnelle Fahrt auf Schienen benutzt werden. +Minecarts only ride on rails and always follow the tracks. At a T-junction with no straight way ahead, they turn left. The speed is affected by the rail type.=Loren fahren nur auf Schienen und bleiben immer auf der Strecke. An einer Einmündung ohne einem Weg nach vorne fahren sie nach links. Die Geschwindigkeit hängt vom Schienentyp ab. +You can place the minecart on rails. Right-click it to enter it. Punch it to get it moving.=Sie können die Lore auf Schienen platzieren. Rechtsklicken, um einzusteigen. +To obtain the minecart, punch it while holding down the sneak key.=Um die Lore aufzusammeln, schlagen Sie sie, während Sie die Schleichen-Taste gedrückt halten. +Minecart with Chest=Lore mit Truhe +Minecart with Furnace=Lore mit Ofen +Minecart with Command Block=Lore mit Befehlsblock +Minecart with Hopper=Lore mit Trichter +Minecart with TNT=Lore mit TNT +Place them on the ground to build your railway, the rails will automatically connect to each other and will turn into curves, T-junctions, crossings and slopes as needed.=Bauen Sie sie auf den Boden, um Ihre Schienennetzwerk zu errichten, die Schienen werden sich automatisch verbinden und sich nach Bedarf in Kurven, Einmündungen, Kreuzungen und Steigungen verwandeln. +Rail=Schiene +Rails can be used to build transport tracks for minecarts. Normal rails slightly slow down minecarts due to friction.=Schienen können benutzt werden, um Strecken für Loren zu bauen. Normale Schienen werden Loren aufgrund von Reibung leicht verlangsamen. +Powered Rail=Antriebsschiene +Rails can be used to build transport tracks for minecarts. Powered rails are able to accelerate and brake minecarts.=Schienen können benutzt werden, um Strecken für Loren zu bauen. Antribsschienen können Loren beschleunigen und abbremsen. +Without redstone power, the rail will brake minecarts. To make this rail accelerate minecarts, power it with redstone power.=Ohne Redstone-Energie wird die Schiene Loren abbremsen. Mit Redstone-Energie wird sie sie beschleunigen. +Activator Rail=Aktivierungsschiene +Rails can be used to build transport tracks for minecarts. Activator rails are used to activate special minecarts.=Schienen können benutzt werden, um Strecken für Loren zu bauen. Aktivierungsschienen werden benutzt, um besondere Loren zu aktivieren. +To make this rail activate minecarts, power it with redstone power and send a minecart over this piece of rail.=Wenn diese Schiene mit Redstone-Energie versorgt wird, werden alle Loren, die sie passieren, aktiviert. +Detector Rail=Sensorschiene +Rails can be used to build transport tracks for minecarts. A detector rail is able to detect a minecart above it and powers redstone mechanisms.=Schienen können benutzt werden, um Strecken für Loren zu bauen. Eine Sensorschiene kann eine Lore erkennen und versorgt Redstone-Mechanismen. +To detect a minecart and provide redstone power, connect it to redstone trails or redstone mechanisms and send any minecart over the rail.=Um eine Lore zu erkennen und die Redstone-Energie zu aktivieren, verbinden Sie die Schiene mit Redstonestaub oder Redstone-Mechanismen und schicken Sie eine beliebige Lore über die Schiene. diff --git a/mods/ENTITIES/mcl_mobs/locale/mcl_mobs.de.tr b/mods/ENTITIES/mcl_mobs/locale/mcl_mobs.de.tr new file mode 100644 index 00000000..b5f4d702 --- /dev/null +++ b/mods/ENTITIES/mcl_mobs/locale/mcl_mobs.de.tr @@ -0,0 +1,5 @@ +# textdomain: mcl_mobs +Peaceful mode active! No monsters will spawn.=Friedlicher Modus aktiv! Es werden keine Monster auftauchen. +This allows you to place a single mob.=Damit kann man eine Mob platzieren. +Just place it where you want the mob to appear. Animals will spawn tamed, unless you hold down the sneak key while placing. If you place this on a mob spawner, you change the mob it spawns.=Platzieren Sie dies einfach dort, wo der Mob auftauchen soll. Tiere werden zahm erscheinen, außer, wenn Sie beim Platzieren die Schlichtaste drücken. Platzieren Sie dies auf einem Mobspawner, um den Mob im Mobspawner zu wechseln. +You need the “maphack” privilege to change the mob spawner.=Sie brauchen das „maphack“-Privileg, um den Mobspawner ändern zu können. diff --git a/mods/ENTITIES/mcl_mobs/locale/template.txt b/mods/ENTITIES/mcl_mobs/locale/template.txt new file mode 100644 index 00000000..66565375 --- /dev/null +++ b/mods/ENTITIES/mcl_mobs/locale/template.txt @@ -0,0 +1,5 @@ +# textdomain: mcl_mobs +Peaceful mode active! No monsters will spawn.= +This allows you to place a single mob.= +Just place it where you want the mob to appear. Animals will spawn tamed, unless you hold down the sneak key while placing. If you place this on a mob spawner, you change the mob it spawns.= +You need the “maphack” privilege to change the mob spawner.= diff --git a/mods/ENTITIES/mobs_mc/locale/de_DE.po b/mods/ENTITIES/mobs_mc/locale/de_DE.po deleted file mode 100644 index 21ce7900..00000000 --- a/mods/ENTITIES/mobs_mc/locale/de_DE.po +++ /dev/null @@ -1,742 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# -msgid "" -msgstr "" -"Project-Id-Version: \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-01-25 18:45+0100\n" -"PO-Revision-Date: 2018-01-25 18:48+0100\n" -"Last-Translator: Wuzzy \n" -"Language-Team: \n" -"Language: de_DE\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 2.0.5\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -#: 1_items_default.lua -msgid "Blaze Rod" -msgstr "Lohenrute" - -#: 1_items_default.lua -msgid "This is a crafting component dropped from dead blazes." -msgstr "Dies ist eine Fertigungskomponente, welche von toten Lohen abfällt." - -#: 1_items_default.lua -msgid "Blaze Powder" -msgstr "Lohenstaub" - -#: 1_items_default.lua -msgid "This item is mainly used for brewing potions and crafting." -msgstr "" -"Dieser Gegenstand wird hauptsächlich für die Trankzubereitung und die " -"Fertigung benutzt." - -#: 1_items_default.lua -msgid "Raw Chicken" -msgstr "Rohes Hühnchen" - -#: 1_items_default.lua -msgid "" -"Raw chicken is a food item and can be eaten safely. Cooking it will increase " -"its nutritional value." -msgstr "" -"Rohes Hühnchen ist ein Lebensmittel und kann problemlos gegessen werden. Es " -"kann gegart werden, um den Nährwert zu erhöhen." - -#: 1_items_default.lua -msgid "Cooked Chicken" -msgstr "Gebratenes Hühnchen" - -#: 1_items_default.lua -msgid "A cooked chicken is a healthy food item which can be eaten." -msgstr "Ein gekochtes Hühnchen ist ein gesundes essbares Lebensmittel." - -#: 1_items_default.lua -msgid "Feather" -msgstr "Feder" - -#: 1_items_default.lua -msgid "Feathers are used in crafting and are dropped from chickens." -msgstr "" -"Federn werden für die Fertigung benutzt und werden von Hühnern fallen " -"gelassen." - -#: 1_items_default.lua -msgid "Raw Beef" -msgstr "Rohes Rindfleisch" - -#: 1_items_default.lua -msgid "" -"Raw beef is the flesh from cows and can be eaten safely. Cooking it will " -"greatly increase its nutritional value." -msgstr "" -"Rohes Rindfleisch ist das Fleisch von Kühen und kann problemlos gegessen " -"werden. Es kann gegart werden, um den Nährwert deutlich zu erhöhen." - -#: 1_items_default.lua -msgid "Steak" -msgstr "Steak" - -#: 1_items_default.lua -msgid "Steak is cooked beef from cows and can be eaten." -msgstr "Steak ist gebratenes Rindfleisch und kann gegessen werden." - -#: 1_items_default.lua -msgid "Milk" -msgstr "Milch" - -#: 1_items_default.lua -msgid "Milk is a food item obtained by using a bucket on a cow." -msgstr "" -"Milch ist ein Lebensmittel, das man erhält, wenn man einen Eimer an einer " -"Kuh benutzt." - -#: 1_items_default.lua -msgid "Bowl" -msgstr "Schale" - -#: 1_items_default.lua -msgid "Bowls are mainly used to hold tasty soups." -msgstr "Schüsseln werden benutzt, um leckere Suppen zu transportieren." - -#: 1_items_default.lua -msgid "Mushroom Stew" -msgstr "Pilzsuppe" - -#: 1_items_default.lua -msgid "Mushroom stew is a healthy soup." -msgstr "Pilzsuppe ist ein leckeres Gericht." - -#: 1_items_default.lua -msgid "Dragon Egg" -msgstr "Drachenei" - -#: 1_items_default.lua -msgid "Eye of Ender" -msgstr "Enderauge" - -#: 1_items_default.lua -msgid "Ghast Tear" -msgstr "Ghastträne" - -#: 1_items_default.lua -msgid "" -"A ghast tear is an item used in potion brewing. It is dropped from dead " -"ghasts." -msgstr "" -"Eine Ghastträne kann für die Trankzubereitung benutzt werden. Sie wird von " -"toten Ghasts abgeworfen." - -#: 1_items_default.lua -msgid "Saddle" -msgstr "Sattel" - -#: 1_items_default.lua -msgid "" -"Saddles can be put on horses, donkeys, mules and pigs in order to mount them." -msgstr "" -"Sattel können auf Pferden, Eseln, Maultieren und Schweinen platziert werden, " -"um sich aufzusatteln." - -#: 1_items_default.lua -msgid "" -"Rightclick an animal while holding a saddle to put on the saddle. You can " -"now mount the animal by rightclicking it again." -msgstr "" -"Rechtsklick auf ein Tier mit einem Sattel in der Hand, um den Sattel zu " -"platzieren. Sie können sich nun mit Rechtsklick auf das Tier setzen." - -#: 1_items_default.lua -msgid "" -"Rightclick a horse to put on the horse armor. Donkeys and mules can't wear " -"horse armor." -msgstr "" -"Rechts auf ein Pferd klicken, um die Pferderüstung zu benutzen. Das " -"funktioniert nicht mit Eseln und Maultieren." - -#: 1_items_default.lua -msgid "Iron Horse Armor" -msgstr "Eiserne Pferderüstung" - -#: 1_items_default.lua -msgid "" -"Iron horse armor can be worn by horses to increase their protection from " -"harm a bit." -msgstr "" -"Die Eisenpferderüstung kann von Pferden getragen werden, um sie etwas vor " -"Schaden zu schützen." - -#: 1_items_default.lua -msgid "Golden Horse Armor" -msgstr "Goldene Pferderüstung" - -#: 1_items_default.lua -msgid "" -"Golden horse armor can be worn by horses to increase their protection from " -"harm." -msgstr "" -"Die Goldpferderüstung kann von Pferden getragen werden, um sie vor Schaden " -"zu schützen." - -#: 1_items_default.lua -msgid "Diamond Horse Armor" -msgstr "Diamantene Pferderüstung" - -#: 1_items_default.lua -msgid "" -"Diamond horse armor can be worn by horses to greatly increase their " -"protection from harm." -msgstr "" -"Die Diamantpferderüstung kann von Pferden getragen werden, um ihre " -"Schadenstoleranz stark zu erhöhen." - -#: 1_items_default.lua -msgid "Raw Porkchop" -msgstr "Rohes Schweinefleisch" - -#: 1_items_default.lua -msgid "" -"A raw porkchop is the flesh from a pig and can be eaten safely. Cooking it " -"will greatly increase its nutritional value." -msgstr "" -"Ein rohes Stück Schweinefleisch kann bedenkenlos gegessen werden. Man kann " -"es braten, um seinen Nährwert stark zu erhöhen." - -#: 1_items_default.lua -msgid "Cooked Porkchop" -msgstr "Gebratenes Schweinefleisch" - -#: 1_items_default.lua -msgid "Carrot on a Stick" -msgstr "Karottenrute" - -#: 1_items_default.lua -msgid "" -"A carrot on a stick can be used on saddled pigs to ride them. Pigs will also " -"follow anyone who holds a carrot on a stick near them." -msgstr "" -"Eine Karottenrute kann auf gesattelten Schweinen angewendet werden, um sie " -"zu reiten. Schweine folgen auch jeden, der eine Karottenrüte trägt." - -#: 1_items_default.lua -msgid "" -"Rightclick a saddled pig with the carrot on a stick to mount it. You can now " -"ride it like a horse." -msgstr "" -"Rechts auf ein gesatteltes Schwein klicken, um sich draufzusetzen. Jetzt " -"kann das Schwein wie ein Pferd geritten werden." - -#: 1_items_default.lua -msgid "Raw Rabbit" -msgstr "Rohes Kaninchen" - -#: 1_items_default.lua -msgid "" -"Raw rabbit is a food item from a dead rabbit. It can be eaten safely. " -"Cooking it will increase its nutritional value." -msgstr "" -"Rohes Kaninchenfleisch ist ein Lebensmittel, welches bedenkenlos verzehrt " -"werden kann. Es kann gebraten werden, um seinen Nährwert zu erhöhen." - -#: 1_items_default.lua -msgid "Cooked Rabbit" -msgstr "Gebratenes Kaninchen" - -#: 1_items_default.lua -msgid "This is a food item which can be eaten." -msgstr "Dies ist ein Lebensmittel." - -#: 1_items_default.lua -msgid "Rabbit Hide" -msgstr "Kaninchenfell" - -#: 1_items_default.lua -msgid "Rabbit hide is used to create leather." -msgstr "Aus Kaninchenfellen wird Leder gefertigt." - -#: 1_items_default.lua -msgid "Rabbit's Foot" -msgstr "Hasenpfote" - -#: 1_items_default.lua -msgid "This item is used in brewing." -msgstr "Dieser Gegenstand wird zum Brauen benutzt." - -#: 1_items_default.lua -msgid "Raw Mutton" -msgstr "Rohes Hammelfleisch" - -#: 1_items_default.lua -msgid "" -"Raw mutton is the flesh from a sheep and can be eaten safely. Cooking it " -"will greatly increase its nutritional value." -msgstr "" -"Rohes Hammelfleisch ist das Fleisch eines Schafes und ein Lebensmittel, " -"welches bedenkenlos verzehrt werden kann. Es kann gebraten werden, um seinen " -"Nährwert deutlich zu erhöhen." - -#: 1_items_default.lua -msgid "Cooked Mutton" -msgstr "Gebratenes Hammelfleisch" - -#: 1_items_default.lua -msgid "Cooked mutton is the cooked flesh from a sheep and is used as food." -msgstr "" -"Gebratenes Hammelfleisch ist das gebratene Fleisch eines Schafs und dient " -"als Lebensmittel." - -#: 1_items_default.lua -msgid "Shulker Shell" -msgstr "Shulkerschale" - -#: 1_items_default.lua -msgid "" -"Shulker shells are used in crafting. They are dropped from dead shulkers." -msgstr "" -"Shulkerschalen werden für die Fertigung verwendet. Sie werden von toten " -"Shulkern fallen gelassen." - -#: 1_items_default.lua -msgid "Magma Cream" -msgstr "Magmacreme" - -#: 1_items_default.lua -msgid "Magma cream is a crafting component." -msgstr "Magmacreme wird zum Fertigen benutzt." - -#: 1_items_default.lua -msgid "Slimeball" -msgstr "Schleimkugel" - -#: 1_items_default.lua -msgid "Slimeballs are used in crafting. They are dropped from slimes." -msgstr "" -"Schleimkugeln werden in der Fertigung benutzt. Sie werden von Schleimen " -"fallen gelassen." - -#: 1_items_default.lua -msgid "Spider Eye" -msgstr "Spinnenauge" - -#: 1_items_default.lua -msgid "" -"Spider eyes are used mainly in crafting and brewing. Spider eyes can be " -"eaten, but they poison you and reduce your health by 2 hit points." -msgstr "" -"Spinnenaugen werden hauptsächlich für die Fertigung und die Trankzubereitung " -"benutzt. Spinnenaugen können gegessen werden, aber sie vergiften Sie und Sie " -"verlieren 2 Trefferpunkte." - -#: 1_items_default.lua -msgid "Totem of Undying" -msgstr "Totem der Unsterblichkeit" - -#: 1_items_default.lua -msgid "" -"A totem of undying is a rare artifact which may safe you from certain death." -msgstr "" -"Ein Totem der Unsterblichkeit ist ein seltenes Artefakt, welches Sie vor dem " -"sicheren Tod bewahren kann." - -#: 1_items_default.lua -msgid "" -"The totem only works while you hold it in your hand. If you receive fatal " -"damage, you are saved from death and you get a second chance with 1 HP. The " -"totem is destroyed in the process, however." -msgstr "" -"Der Totem funktioniert nur, während Sie ihn in der Hand halten. Wenn sie " -"tödlichen Schaden erhalten, werden Sie vom Tod bewahrt und erhalten eine " -"zweite Lebenschance mit 1 HP. Der Totem geht dabei jedoch zu Bruch." - -#: 1_items_default.lua -msgid "Rotten Flesh" -msgstr "Verrottetes Fleisch" - -#: 1_items_default.lua -msgid "" -"Yuck! This piece of flesh clearly has seen better days. Eating it will only " -"poison you and reduces your health by 4 hit points. But tamed wolves can eat " -"it just fine." -msgstr "" -"Igitt! Dieses Stück Fleisch hat wohl bessere Tage gesehen. Wenn Sie es " -"essen, werden Sie sofort vergiftet und erleiden einen Schaden von 4 " -"Trefferpunkten. Aber gezähmte Wölfe können es problemlos fressen." - -#: 1_items_default.lua -msgid "Nether Star" -msgstr "Netherstern" - -#: 1_items_default.lua -msgid "A nether star is a crafting component. It is dropped from the Wither." -msgstr "" -"Ein Netherstern ist eine Fertigungskomponente. Er wird vom Wither abgeworfen." - -#: 1_items_default.lua -msgid "Bone" -msgstr "Knochen" - -#: 1_items_default.lua -msgid "" -"Bones can be used to tame wolves so they will protect you. They are also " -"useful as a crafting ingredient." -msgstr "" -"Knochen können benutzt werden, um Wölfe zu zähmen, damit sie einen " -"beschützen. Sie außerdem nützlich in der Fertigung." - -#: 1_items_default.lua -msgid "" -"Hold the bone in your hand near wolves to attract them. Rightclick the wolf " -"to give it a bone and tame it." -msgstr "" -"Halten Sie einen Knochen in der Nähe eines Wolfes, um ihn anzulocken. " -"Rechtsklick auf den Wolf, um ihn den Knochen zu geben un zu zähmen." - -#: 2_throwing.lua -msgid "Arrow" -msgstr "Pfeil" - -#: 2_throwing.lua -msgid "Arrows are ammunition for bows." -msgstr "Pfeile sind Munition für Bögen." - -#: 2_throwing.lua -msgid "" -"To use arrows as ammunition for a bow, put them in the inventory slot " -"following the bow. Slots are counted left to right, top to bottom." -msgstr "" -"Um Pfeile als Munition für einen Bogen zu benutzen, legen Sie sie in das " -"Inventarfeld, das dem des Bogens folgt. Inventarfelder werden von links nach " -"rechts, dann von oben nach unten gezählt." - -#: 2_throwing.lua -msgid "Bow" -msgstr "Bogen" - -#: 2_throwing.lua -msgid "Bows are ranged weapons to shoot arrows at your foes." -msgstr "Bögen sind Fernwaffen, um Pfeile auf Ihre Gegner zu schießen." - -#: 2_throwing.lua -msgid "" -"To use the bow, you first need to have at least one arrow in slot following " -"the bow. Leftclick to shoot. Each hit deals 3 damage." -msgstr "" -"Um den Bogen zu benutzen, brauchen Sie zuerest mindestens einen Pfeil in dem " -"Inventarfeld nach dem des Bogens. Linksklick zum Schießen. Jeder Treffer " -"richtet 3 Schaden an." - -#: 2_throwing.lua -msgid "Egg" -msgstr "Ei" - -#: 2_throwing.lua -msgid "" -"Eggs can be thrown and break on impact. There is a small chance that 1 or " -"even 4 chicks will pop out" -msgstr "" -"Eier können geworfen werden und zerbrechen bei einem Treffer. Es gibt eine " -"kleine Chance, dass 1 oder sogar 4 Küken auftauchen" - -#: 2_throwing.lua -msgid "Snowball" -msgstr "Schneeball" - -#: 2_throwing.lua -msgid "" -"Snowballs can be thrown at your enemies. A snowball deals 3 damage to " -"blazes, but is harmless to anything else." -msgstr "" -"Werfen Sie Schnebälle auf Ihre Feinde. Ein Schneeball richtet gegenüber " -"Lohen 3 Schaden an, ist aber harmlos für alles andere." - -#: 4_heads.lua -msgid "Zombie Head" -msgstr "Zombiekopf" - -#: 4_heads.lua -msgid "" -"A zombie head is a small decorative block which resembles the head of a " -"zombie." -msgstr "" -"Ein Zombiekopf ist ein kleiner dekorativer Block, der wie der Kopf eines " -"Zombies aussieht." - -#: 4_heads.lua -msgid "Creeper Head" -msgstr "Creeperkopf" - -#: 4_heads.lua -msgid "" -"A creeper head is a small decorative block which resembles the head of a " -"creeper." -msgstr "" -"Ein Creeperkopf ist ein kleiner dekorativer Block, der wie der Kopf eines " -"Creeper aussieht." - -#: 4_heads.lua -msgid "Skeleton Skull" -msgstr "Skelettschädel" - -#: 4_heads.lua -msgid "" -"A skeleton skull is a small decorative block which resembles the skull of a " -"skeleton." -msgstr "" -"Ein Skelettschädel ist ein kleiner dekorativer Block, der wie der Schädel " -"eines Skeletts aussieht." - -#: 4_heads.lua -msgid "Wither Skeleton Skull" -msgstr "Witherskelettschädel" - -#: 4_heads.lua -msgid "" -"A wither skeleton skull is a small decorative block which resembles the " -"skull of a wither skeleton." -msgstr "" -"Ein Witherskelettschädel ist ein kleiner dekorativer Block, der wie der " -"Schädel eines Witherskeletts aussieht." - -#: agent.lua -msgid "Agent" -msgstr "Agent" - -#: bat.lua -msgid "Bat" -msgstr "Fledermaus" - -#: blaze.lua -msgid "Blaze" -msgstr "Lohe" - -#: chicken.lua -msgid "Chicken" -msgstr "Huhn" - -#: cow+mooshroom.lua -msgid "Cow" -msgstr "Kuh" - -#: cow+mooshroom.lua -msgid "Mooshroom" -msgstr "Mooshroom" - -#: creeper.lua -msgid "Creeper" -msgstr "Creeper" - -#: ender_dragon.lua -msgid "Ender Dragon" -msgstr "Enderdrache" - -#: enderman.lua -msgid "Enderman" -msgstr "Enderman" - -#: endermite.lua -msgid "Endermite" -msgstr "Endermite" - -#: ghast.lua -msgid "Ghast" -msgstr "Ghast" - -#: guardian_elder.lua -msgid "Elder Guardian" -msgstr "Großer Wächter" - -#: guardian.lua -msgid "Guardian" -msgstr "Wächter" - -#: horse.lua -msgid "Horse" -msgstr "Pferd" - -#: horse.lua -msgid "Skeleton Horse" -msgstr "Skelettpferd" - -#: horse.lua -msgid "Zombie Horse" -msgstr "Zombiepferd" - -#: horse.lua -msgid "Donkey" -msgstr "Esel" - -#: horse.lua -msgid "Mule" -msgstr "Maultier" - -#: iron_golem.lua -msgid "Iron Golem" -msgstr "Eisengolem" - -#: llama.lua -msgid "Llama" -msgstr "Lama" - -#: ocelot.lua -msgid "Ocelot" -msgstr "Ozelot" - -#: parrot.lua -msgid "Parrot" -msgstr "Papagei" - -#: pig.lua -msgid "Pig" -msgstr "Schwein" - -#: polar_bear.lua -msgid "Polar Bear" -msgstr "Eisbär" - -#: rabbit.lua -msgid "Rabbit" -msgstr "Kaninchen" - -#: rabbit.lua -msgid "Killer Bunny" -msgstr "Killer-Kaninchen" - -#: sheep.lua -msgid "Sheep" -msgstr "Schaf" - -#: shulker.lua -msgid "Shulker" -msgstr "Shulker" - -#: silverfish.lua -msgid "Silverfish" -msgstr "Silberfischchen" - -#: silverfish.lua -msgid "Stone Monster Egg" -msgstr "Silberfischchen-Stein" - -#: silverfish.lua -msgid "Cobblestone Monster Egg" -msgstr "Silberfischchen-Bruchstein" - -#: silverfish.lua -msgid "Mossy Cobblestone Monster Egg" -msgstr "Bemooster Silberfischchen-Bruchstein" - -#: silverfish.lua -msgid "Stone Brick Monster Egg" -msgstr "Silberfischchen-Steinziegel" - -#: silverfish.lua -msgid "Stone Block Monster Egg" -msgstr "Silberfischchen-Steinblock" - -#: skeleton+stray.lua -msgid "Skeleton" -msgstr "Skelett" - -#: skeleton+stray.lua -msgid "Stray" -msgstr "Eiswanderer" - -#: skeleton_wither.lua -msgid "Wither Skeleton" -msgstr "Witherskelett" - -#: slime+magma_cube.lua -msgid "Magma Cube" -msgstr "Magmawürfel" - -#: slime+magma_cube.lua -msgid "Slime" -msgstr "Schleim" - -#: snowman.lua -msgid "Snow Golem" -msgstr "Schneegolem" - -#: spider.lua -msgid "Spider" -msgstr "Spinne" - -#: spider.lua -msgid "Cave Spider" -msgstr "Höhlenspinne" - -#: squid.lua -msgid "Squid" -msgstr "Tintenfisch" - -#: vex.lua -msgid "Vex" -msgstr "Plagegeist" - -#: villager_evoker.lua -msgid "Evoker" -msgstr "Magier" - -#: villager_illusioner.lua -msgid "Illusioner" -msgstr "Illusionist" - -#: villager.lua -msgid "Villager" -msgstr "Dorfbewohner" - -#: villager_vindicator.lua -msgid "Vindicator" -msgstr "Diener" - -#: villager_zombie.lua -msgid "Zombie Villager" -msgstr "Dorfbewohnerzombie" - -#: witch.lua -msgid "Witch" -msgstr "Hexe" - -#: wither.lua -msgid "Wither" -msgstr "Wither" - -#: wolf.lua -msgid "Wolf" -msgstr "Wolf" - -#: zombie.lua -msgid "Husk" -msgstr "Wüstenzombie" - -#: zombie.lua -msgid "Zombie" -msgstr "Zombie" - -#: zombiepig.lua -msgid "Zombie Pigman" -msgstr "Schweinezombie" - -#~ msgid "" -#~ "Hold it in your hand and punch once to instantly get back to full health. " -#~ "The totem gets destroyed in the process." -#~ msgstr "" -#~ "Halten Sie es in der Hand und schlagen Sie zu, um sofort auf die volle " -#~ "Gesundheit zu kommen. Das zerstört das Totem." - -#~ msgid "Enderman Head (WIP)" -#~ msgstr "Endermankopf (unfertig)" - -#~ msgid "Ghast Head (WIP)" -#~ msgstr "Ghastkopf (unfertig)" - -#~ msgid "Spider Head (WIP)" -#~ msgstr "Spinnenkopf (unfertig)" - -#~ msgid "Zombie Pigman Head (WIP)" -#~ msgstr "Schweinezombiekopf (unfertig)" diff --git a/mods/ENTITIES/mobs_mc/locale/mobs_mc.de.tr b/mods/ENTITIES/mobs_mc/locale/mobs_mc.de.tr new file mode 100644 index 00000000..97ce2d4c --- /dev/null +++ b/mods/ENTITIES/mobs_mc/locale/mobs_mc.de.tr @@ -0,0 +1,54 @@ +# textdomain: mobs_mc +Totem of Undying=Totem der Unsterblichkeit +A totem of undying is a rare artifact which may safe you from certain death.=Ein Totem der Unsterblichkeit ist ein seltenes Artefakt, dass Sie vor dem sicheren Tod bewahren kann. +The totem only works while you hold it in your hand. If you receive fatal damage, you are saved from death and you get a second chance with 1 HP. The totem is destroyed in the process, however.=Der Totem funktioneirt nur, während Sie ihn halten. Wenn Sie normalerweise tödlich hohen Schaden erhalten, werden Sie vor dem Tod bewahrt und Sie erhalten eine zweite Chance mit 1 TP. Der Totem wird dabei zerstört. +Agent=Akteur +Bat=Fledermaus +Blaze=Lohe +Chicken=Huhn +Cow=Kuh +Mooshroom=Pilzkuh +Creeper=Creeper +Ender Dragon=Enderdrache +Enderman=Enderman +Endermite=Endermilbe +Ghast=Ghast +Elder Guardian=Großer Wächter +Guardian=Wächter +Horse=Pferd +Skeleton Horse=Skelettpferd +Zombie Horse=Zombiepferd +Donkey=Esel +Mule=Maultier +Iron Golem=Eisengolem +Llama=Lama +Ocelot=Ozelot +Parrot=Papagei +Pig=Schwein +Polar Bear=Eisbär +Rabbit=Kaninchen +Killer Bunny=Killerkaninchen +Sheep=Schaf +Shulker=Shulber +Silverfish=Silberfischchen +Skeleton=Skelett +Stray=Eiswanderer +Wither Skeleton=Witherskelett +Magma Cube=Magmakubus +Slime=Schleim +Snow Golem=Schneegolem +Spider=Spinne +Cave Spider=Höhlenspinne +Squid=Tintenfisch +Vex=Plagegeist +Evoker=Magier +Illusioner=Illusionist +Villager=Dorfbewohner +Vindicator=Diener +Zombie Villager=Dorfbewohnerzombie +Witch=Hexe +Wither=Wither +Wolf=Wolf +Husk=Wüstenzombie +Zombie=Zombie +Zombie Pigman=Schweinezombie diff --git a/mods/ENTITIES/mobs_mc/locale/template.pot b/mods/ENTITIES/mobs_mc/locale/template.pot deleted file mode 100644 index f89dc24a..00000000 --- a/mods/ENTITIES/mobs_mc/locale/template.pot +++ /dev/null @@ -1,647 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-01-25 18:45+0100\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"Language: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=CHARSET\n" -"Content-Transfer-Encoding: 8bit\n" - -#: 1_items_default.lua -msgid "Blaze Rod" -msgstr "" - -#: 1_items_default.lua -msgid "This is a crafting component dropped from dead blazes." -msgstr "" - -#: 1_items_default.lua -msgid "Blaze Powder" -msgstr "" - -#: 1_items_default.lua -msgid "This item is mainly used for brewing potions and crafting." -msgstr "" - -#: 1_items_default.lua -msgid "Raw Chicken" -msgstr "" - -#: 1_items_default.lua -msgid "" -"Raw chicken is a food item and can be eaten safely. Cooking it will increase " -"its nutritional value." -msgstr "" - -#: 1_items_default.lua -msgid "Cooked Chicken" -msgstr "" - -#: 1_items_default.lua -msgid "A cooked chicken is a healthy food item which can be eaten." -msgstr "" - -#: 1_items_default.lua -msgid "Feather" -msgstr "" - -#: 1_items_default.lua -msgid "Feathers are used in crafting and are dropped from chickens." -msgstr "" - -#: 1_items_default.lua -msgid "Raw Beef" -msgstr "" - -#: 1_items_default.lua -msgid "" -"Raw beef is the flesh from cows and can be eaten safely. Cooking it will " -"greatly increase its nutritional value." -msgstr "" - -#: 1_items_default.lua -msgid "Steak" -msgstr "" - -#: 1_items_default.lua -msgid "Steak is cooked beef from cows and can be eaten." -msgstr "" - -#: 1_items_default.lua -msgid "Milk" -msgstr "" - -#: 1_items_default.lua -msgid "Milk is a food item obtained by using a bucket on a cow." -msgstr "" - -#: 1_items_default.lua -msgid "Bowl" -msgstr "" - -#: 1_items_default.lua -msgid "Bowls are mainly used to hold tasty soups." -msgstr "" - -#: 1_items_default.lua -msgid "Mushroom Stew" -msgstr "" - -#: 1_items_default.lua -msgid "Mushroom stew is a healthy soup." -msgstr "" - -#: 1_items_default.lua -msgid "Dragon Egg" -msgstr "" - -#: 1_items_default.lua -msgid "Eye of Ender" -msgstr "" - -#: 1_items_default.lua -msgid "Ghast Tear" -msgstr "" - -#: 1_items_default.lua -msgid "" -"A ghast tear is an item used in potion brewing. It is dropped from dead " -"ghasts." -msgstr "" - -#: 1_items_default.lua -msgid "Saddle" -msgstr "" - -#: 1_items_default.lua -msgid "" -"Saddles can be put on horses, donkeys, mules and pigs in order to mount them." -msgstr "" - -#: 1_items_default.lua -msgid "" -"Rightclick an animal while holding a saddle to put on the saddle. You can " -"now mount the animal by rightclicking it again." -msgstr "" - -#: 1_items_default.lua -msgid "" -"Rightclick a horse to put on the horse armor. Donkeys and mules can't wear " -"horse armor." -msgstr "" - -#: 1_items_default.lua -msgid "Iron Horse Armor" -msgstr "" - -#: 1_items_default.lua -msgid "" -"Iron horse armor can be worn by horses to increase their protection from " -"harm a bit." -msgstr "" - -#: 1_items_default.lua -msgid "Golden Horse Armor" -msgstr "" - -#: 1_items_default.lua -msgid "" -"Golden horse armor can be worn by horses to increase their protection from " -"harm." -msgstr "" - -#: 1_items_default.lua -msgid "Diamond Horse Armor" -msgstr "" - -#: 1_items_default.lua -msgid "" -"Diamond horse armor can be worn by horses to greatly increase their " -"protection from harm." -msgstr "" - -#: 1_items_default.lua -msgid "Raw Porkchop" -msgstr "" - -#: 1_items_default.lua -msgid "" -"A raw porkchop is the flesh from a pig and can be eaten safely. Cooking it " -"will greatly increase its nutritional value." -msgstr "" - -#: 1_items_default.lua -msgid "Cooked Porkchop" -msgstr "" - -#: 1_items_default.lua -msgid "Carrot on a Stick" -msgstr "" - -#: 1_items_default.lua -msgid "" -"A carrot on a stick can be used on saddled pigs to ride them. Pigs will also " -"follow anyone who holds a carrot on a stick near them." -msgstr "" - -#: 1_items_default.lua -msgid "" -"Rightclick a saddled pig with the carrot on a stick to mount it. You can now " -"ride it like a horse." -msgstr "" - -#: 1_items_default.lua -msgid "Raw Rabbit" -msgstr "" - -#: 1_items_default.lua -msgid "" -"Raw rabbit is a food item from a dead rabbit. It can be eaten safely. " -"Cooking it will increase its nutritional value." -msgstr "" - -#: 1_items_default.lua -msgid "Cooked Rabbit" -msgstr "" - -#: 1_items_default.lua -msgid "This is a food item which can be eaten." -msgstr "" - -#: 1_items_default.lua -msgid "Rabbit Hide" -msgstr "" - -#: 1_items_default.lua -msgid "Rabbit hide is used to create leather." -msgstr "" - -#: 1_items_default.lua -msgid "Rabbit's Foot" -msgstr "" - -#: 1_items_default.lua -msgid "This item is used in brewing." -msgstr "" - -#: 1_items_default.lua -msgid "Raw Mutton" -msgstr "" - -#: 1_items_default.lua -msgid "" -"Raw mutton is the flesh from a sheep and can be eaten safely. Cooking it " -"will greatly increase its nutritional value." -msgstr "" - -#: 1_items_default.lua -msgid "Cooked Mutton" -msgstr "" - -#: 1_items_default.lua -msgid "Cooked mutton is the cooked flesh from a sheep and is used as food." -msgstr "" - -#: 1_items_default.lua -msgid "Shulker Shell" -msgstr "" - -#: 1_items_default.lua -msgid "" -"Shulker shells are used in crafting. They are dropped from dead shulkers." -msgstr "" - -#: 1_items_default.lua -msgid "Magma Cream" -msgstr "" - -#: 1_items_default.lua -msgid "Magma cream is a crafting component." -msgstr "" - -#: 1_items_default.lua -msgid "Slimeball" -msgstr "" - -#: 1_items_default.lua -msgid "Slimeballs are used in crafting. They are dropped from slimes." -msgstr "" - -#: 1_items_default.lua -msgid "Spider Eye" -msgstr "" - -#: 1_items_default.lua -msgid "" -"Spider eyes are used mainly in crafting and brewing. Spider eyes can be " -"eaten, but they poison you and reduce your health by 2 hit points." -msgstr "" - -#: 1_items_default.lua -msgid "Totem of Undying" -msgstr "" - -#: 1_items_default.lua -msgid "" -"A totem of undying is a rare artifact which may safe you from certain death." -msgstr "" - -#: 1_items_default.lua -msgid "" -"The totem only works while you hold it in your hand. If you receive fatal " -"damage, you are saved from death and you get a second chance with 1 HP. The " -"totem is destroyed in the process, however." -msgstr "" - -#: 1_items_default.lua -msgid "Rotten Flesh" -msgstr "" - -#: 1_items_default.lua -msgid "" -"Yuck! This piece of flesh clearly has seen better days. Eating it will only " -"poison you and reduces your health by 4 hit points. But tamed wolves can eat " -"it just fine." -msgstr "" - -#: 1_items_default.lua -msgid "Nether Star" -msgstr "" - -#: 1_items_default.lua -msgid "A nether star is a crafting component. It is dropped from the Wither." -msgstr "" - -#: 1_items_default.lua -msgid "Bone" -msgstr "" - -#: 1_items_default.lua -msgid "" -"Bones can be used to tame wolves so they will protect you. They are also " -"useful as a crafting ingredient." -msgstr "" - -#: 1_items_default.lua -msgid "" -"Hold the bone in your hand near wolves to attract them. Rightclick the wolf " -"to give it a bone and tame it." -msgstr "" - -#: 2_throwing.lua -msgid "Arrow" -msgstr "" - -#: 2_throwing.lua -msgid "Arrows are ammunition for bows." -msgstr "" - -#: 2_throwing.lua -msgid "" -"To use arrows as ammunition for a bow, put them in the inventory slot " -"following the bow. Slots are counted left to right, top to bottom." -msgstr "" - -#: 2_throwing.lua -msgid "Bow" -msgstr "" - -#: 2_throwing.lua -msgid "Bows are ranged weapons to shoot arrows at your foes." -msgstr "" - -#: 2_throwing.lua -msgid "" -"To use the bow, you first need to have at least one arrow in slot following " -"the bow. Leftclick to shoot. Each hit deals 3 damage." -msgstr "" - -#: 2_throwing.lua -msgid "Egg" -msgstr "" - -#: 2_throwing.lua -msgid "" -"Eggs can be thrown and break on impact. There is a small chance that 1 or " -"even 4 chicks will pop out" -msgstr "" - -#: 2_throwing.lua -msgid "Snowball" -msgstr "" - -#: 2_throwing.lua -msgid "" -"Snowballs can be thrown at your enemies. A snowball deals 3 damage to " -"blazes, but is harmless to anything else." -msgstr "" - -#: 4_heads.lua -msgid "Zombie Head" -msgstr "" - -#: 4_heads.lua -msgid "" -"A zombie head is a small decorative block which resembles the head of a " -"zombie." -msgstr "" - -#: 4_heads.lua -msgid "Creeper Head" -msgstr "" - -#: 4_heads.lua -msgid "" -"A creeper head is a small decorative block which resembles the head of a " -"creeper." -msgstr "" - -#: 4_heads.lua -msgid "Skeleton Skull" -msgstr "" - -#: 4_heads.lua -msgid "" -"A skeleton skull is a small decorative block which resembles the skull of a " -"skeleton." -msgstr "" - -#: 4_heads.lua -msgid "Wither Skeleton Skull" -msgstr "" - -#: 4_heads.lua -msgid "" -"A wither skeleton skull is a small decorative block which resembles the " -"skull of a wither skeleton." -msgstr "" - -#: agent.lua -msgid "Agent" -msgstr "" - -#: bat.lua -msgid "Bat" -msgstr "" - -#: blaze.lua -msgid "Blaze" -msgstr "" - -#: chicken.lua -msgid "Chicken" -msgstr "" - -#: cow+mooshroom.lua -msgid "Cow" -msgstr "" - -#: cow+mooshroom.lua -msgid "Mooshroom" -msgstr "" - -#: creeper.lua -msgid "Creeper" -msgstr "" - -#: ender_dragon.lua -msgid "Ender Dragon" -msgstr "" - -#: enderman.lua -msgid "Enderman" -msgstr "" - -#: endermite.lua -msgid "Endermite" -msgstr "" - -#: ghast.lua -msgid "Ghast" -msgstr "" - -#: guardian_elder.lua -msgid "Elder Guardian" -msgstr "" - -#: guardian.lua -msgid "Guardian" -msgstr "" - -#: horse.lua -msgid "Horse" -msgstr "" - -#: horse.lua -msgid "Skeleton Horse" -msgstr "" - -#: horse.lua -msgid "Zombie Horse" -msgstr "" - -#: horse.lua -msgid "Donkey" -msgstr "" - -#: horse.lua -msgid "Mule" -msgstr "" - -#: iron_golem.lua -msgid "Iron Golem" -msgstr "" - -#: llama.lua -msgid "Llama" -msgstr "" - -#: ocelot.lua -msgid "Ocelot" -msgstr "" - -#: parrot.lua -msgid "Parrot" -msgstr "" - -#: pig.lua -msgid "Pig" -msgstr "" - -#: polar_bear.lua -msgid "Polar Bear" -msgstr "" - -#: rabbit.lua -msgid "Rabbit" -msgstr "" - -#: rabbit.lua -msgid "Killer Bunny" -msgstr "" - -#: sheep.lua -msgid "Sheep" -msgstr "" - -#: shulker.lua -msgid "Shulker" -msgstr "" - -#: silverfish.lua -msgid "Silverfish" -msgstr "" - -#: silverfish.lua -msgid "Stone Monster Egg" -msgstr "" - -#: silverfish.lua -msgid "Cobblestone Monster Egg" -msgstr "" - -#: silverfish.lua -msgid "Mossy Cobblestone Monster Egg" -msgstr "" - -#: silverfish.lua -msgid "Stone Brick Monster Egg" -msgstr "" - -#: silverfish.lua -msgid "Stone Block Monster Egg" -msgstr "" - -#: skeleton+stray.lua -msgid "Skeleton" -msgstr "" - -#: skeleton+stray.lua -msgid "Stray" -msgstr "" - -#: skeleton_wither.lua -msgid "Wither Skeleton" -msgstr "" - -#: slime+magma_cube.lua -msgid "Magma Cube" -msgstr "" - -#: slime+magma_cube.lua -msgid "Slime" -msgstr "" - -#: snowman.lua -msgid "Snow Golem" -msgstr "" - -#: spider.lua -msgid "Spider" -msgstr "" - -#: spider.lua -msgid "Cave Spider" -msgstr "" - -#: squid.lua -msgid "Squid" -msgstr "" - -#: vex.lua -msgid "Vex" -msgstr "" - -#: villager_evoker.lua -msgid "Evoker" -msgstr "" - -#: villager_illusioner.lua -msgid "Illusioner" -msgstr "" - -#: villager.lua -msgid "Villager" -msgstr "" - -#: villager_vindicator.lua -msgid "Vindicator" -msgstr "" - -#: villager_zombie.lua -msgid "Zombie Villager" -msgstr "" - -#: witch.lua -msgid "Witch" -msgstr "" - -#: wither.lua -msgid "Wither" -msgstr "" - -#: wolf.lua -msgid "Wolf" -msgstr "" - -#: zombie.lua -msgid "Husk" -msgstr "" - -#: zombie.lua -msgid "Zombie" -msgstr "" - -#: zombiepig.lua -msgid "Zombie Pigman" -msgstr "" diff --git a/mods/ENTITIES/mobs_mc/locale/template.txt b/mods/ENTITIES/mobs_mc/locale/template.txt new file mode 100644 index 00000000..0b80aef6 --- /dev/null +++ b/mods/ENTITIES/mobs_mc/locale/template.txt @@ -0,0 +1,54 @@ +# textdomain: mobs_mc +Totem of Undying= +A totem of undying is a rare artifact which may safe you from certain death.= +The totem only works while you hold it in your hand. If you receive fatal damage, you are saved from death and you get a second chance with 1 HP. The totem is destroyed in the process, however.= +Agent= +Bat= +Blaze= +Chicken= +Cow= +Mooshroom= +Creeper= +Ender Dragon= +Enderman= +Endermite= +Ghast= +Elder Guardian= +Guardian= +Horse= +Skeleton Horse= +Zombie Horse= +Donkey= +Mule= +Iron Golem= +Llama= +Ocelot= +Parrot= +Pig= +Polar Bear= +Rabbit= +Killer Bunny= +Sheep= +Shulker= +Silverfish= +Skeleton= +Stray= +Wither Skeleton= +Magma Cube= +Slime= +Snow Golem= +Spider= +Cave Spider= +Squid= +Vex= +Evoker= +Illusioner= +Villager= +Vindicator= +Zombie Villager= +Witch= +Wither= +Wolf= +Husk= +Zombie= +Zombie Pigman= From 63d630a208e18c159734b63c97d2d8ab75fe4b46 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Thu, 14 Mar 2019 00:32:22 +0100 Subject: [PATCH 137/737] German translation: environment --- mods/ENVIRONMENT/lightning/locale/lightning.de.tr | 4 ++++ .../mcl_void_damage/locale/mcl_void_damage.de.tr | 3 +++ mods/ENVIRONMENT/mcl_weather/locale/mcl_weather.de.tr | 8 ++++++++ mods/ENVIRONMENT/mcl_weather/locale/template.txt | 8 ++++++++ mods/ENVIRONMENT/mcl_weather/weather_core.lua | 2 +- 5 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 mods/ENVIRONMENT/lightning/locale/lightning.de.tr create mode 100644 mods/ENVIRONMENT/mcl_void_damage/locale/mcl_void_damage.de.tr create mode 100644 mods/ENVIRONMENT/mcl_weather/locale/mcl_weather.de.tr create mode 100644 mods/ENVIRONMENT/mcl_weather/locale/template.txt diff --git a/mods/ENVIRONMENT/lightning/locale/lightning.de.tr b/mods/ENVIRONMENT/lightning/locale/lightning.de.tr new file mode 100644 index 00000000..a76c6809 --- /dev/null +++ b/mods/ENVIRONMENT/lightning/locale/lightning.de.tr @@ -0,0 +1,4 @@ +# textdomain: lightning +@1 was struck by lightning.=@1 wurde vom Blitz getroffen. +Let lightning strike at the specified position or yourself=Lassen Sie einen Blitz an die gegebene Position oder auf sich selbst einschlagen. +No position specified and unknown player=Keine Position angegeben und Spieler nicht bekannt diff --git a/mods/ENVIRONMENT/mcl_void_damage/locale/mcl_void_damage.de.tr b/mods/ENVIRONMENT/mcl_void_damage/locale/mcl_void_damage.de.tr new file mode 100644 index 00000000..19ef9065 --- /dev/null +++ b/mods/ENVIRONMENT/mcl_void_damage/locale/mcl_void_damage.de.tr @@ -0,0 +1,3 @@ +# textdomain: mcl_void_damage +The void is off-limits to you!=Die Leere ist für Sie tabu! +@1 fell into the endless void.=@1 fiel in die endlose Leere. diff --git a/mods/ENVIRONMENT/mcl_weather/locale/mcl_weather.de.tr b/mods/ENVIRONMENT/mcl_weather/locale/mcl_weather.de.tr new file mode 100644 index 00000000..0fc8330a --- /dev/null +++ b/mods/ENVIRONMENT/mcl_weather/locale/mcl_weather.de.tr @@ -0,0 +1,8 @@ +# textdomain: mcl_weather +Gives ability to control weather=Fähigkeit, das Wetter zu beeinflussen +Changes the weather to the specified parameter.=Ändert das Wetter. +Error: No weather specified.=Fehler: Kein Wetter angegeben. +Error: Invalid parameters.=Fehler: Ungültige Parameter. +Error: Duration can't be less than 1 second.=Fehler: Dauer darf nicht weniger als 1 Sekunde sein. +Error: Invalid weather specified. Use “clear”, “rain”, “snow” or “thunder”.=Fehler. Ungültiges Wetter. Benutzen Sie „clear“ (klar), „rain“ (Regen), „snow“ (Schnee) oder „thunder“ (Gewittersturm). +Toggles between clear weather and weather with downfall (randomly rain, thunderstorm or snow)=Wechselt das Wetter zwischem klaren Wetter und Wetter mit Niederschlag (zufällig Regen, Gewittersturm oder Schnee) diff --git a/mods/ENVIRONMENT/mcl_weather/locale/template.txt b/mods/ENVIRONMENT/mcl_weather/locale/template.txt new file mode 100644 index 00000000..03555e47 --- /dev/null +++ b/mods/ENVIRONMENT/mcl_weather/locale/template.txt @@ -0,0 +1,8 @@ +# textdomain: mcl_weather +Gives ability to control weather= +Changes the weather to the specified parameter.= +Error: No weather specified.= +Error: Invalid parameters.= +Error: Duration can't be less than 1 second.= +Error: Invalid weather specified. Use “clear”, “rain”, “snow” or “thunder”.= +Toggles between clear weather and weather with downfall (randomly rain, thunderstorm or snow)= diff --git a/mods/ENVIRONMENT/mcl_weather/weather_core.lua b/mods/ENVIRONMENT/mcl_weather/weather_core.lua index 507040f1..29da968f 100644 --- a/mods/ENVIRONMENT/mcl_weather/weather_core.lua +++ b/mods/ENVIRONMENT/mcl_weather/weather_core.lua @@ -190,7 +190,7 @@ minetest.register_privilege("weather_manager", { -- Weather command definition. Set minetest.register_chatcommand("weather", { - params = S("(clear | rain | snow | thunder) []"), + params = "(clear | rain | snow | thunder) []", description = S("Changes the weather to the specified parameter."), privs = {weather_manager = true}, func = function(name, param) From 2f1c2010762608b406146c4e7f571e32e13c5823 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Thu, 14 Mar 2019 00:42:17 +0100 Subject: [PATCH 138/737] Update craftguide translations --- mods/HELP/mcl_craftguide/init.lua | 43 ++++++++++--------- .../locale/mcl_craftguide.de.tr | 32 +++++++++----- .../locale/mcl_craftguide.fr.tr | 31 +++++++++---- .../locale/mcl_craftguide.ru.tr | 31 +++++++++---- mods/HELP/mcl_craftguide/locale/template | 25 ----------- mods/HELP/mcl_craftguide/locale/template.txt | 37 ++++++++++++++++ 6 files changed, 125 insertions(+), 74 deletions(-) delete mode 100644 mods/HELP/mcl_craftguide/locale/template create mode 100644 mods/HELP/mcl_craftguide/locale/template.txt diff --git a/mods/HELP/mcl_craftguide/init.lua b/mods/HELP/mcl_craftguide/init.lua index 4785c93b..37087de0 100644 --- a/mods/HELP/mcl_craftguide/init.lua +++ b/mods/HELP/mcl_craftguide/init.lua @@ -78,25 +78,25 @@ local group_stereotypes = { } local group_names = { - shulker_box = "Any shulker box", - wool = "Any wool", - wood = "Any wood planks", - tree = "Any wood", - sand = "Any sand", - normal_sandstone = "Any normal sandstone", - red_sandstone = "Any red sandstone", - carpet = "Any carpet", - dye = "Any dye", - water_bucket = "Any water bucket", - flower = "Any flower", - mushroom = "Any mushroom", - wood_slab = "Any wooden slab", - wood_stairs = "Any wooden stairs", - coal = "Any coal", - quartz_block = "Any kind of quartz block", - purpur_block = "Any kind of purpur block", - stonebrick = "Any stone bricks", - stick = "Any stick", + shulker_box = S("Any shulker box"), + wool = S("Any wool"), + wood = S("Any wood planks"), + tree = S("Any wood"), + sand = S("Any sand"), + normal_sandstone = S("Any normal sandstone"), + red_sandstone = S("Any red sandstone"), + carpet = S("Any carpet"), + dye = S("Any dye"), + water_bucket = S("Any water bucket"), + flower = S("Any flower"), + mushroom = S("Any mushroom"), + wood_slab = S("Any wooden slab"), + wood_stairs = S("Any wooden stairs"), + coal = S("Any coal"), + quartz_block = S("Any kind of quartz block"), + purpur_block = S("Any kind of purpur block"), + stonebrick = S("Any stone bricks"), + stick = S("Any stick"), } @@ -493,7 +493,7 @@ local function get_recipe_fs(data, iY) fs[#fs + 1] = fmt(FMT.label, (data.iX / 2) - 2, iY + 2.2, - ESC(S("Recipe is too big to be displayed (@1x@2)", width, rows))) + ESC(S("Recipe is too big to be displayed (@1×@2)", width, rows))) return concat(fs) end @@ -979,9 +979,10 @@ M.register_on_leaveplayer(function(player) player_data[name] = nil end) +-- TODO: Remove sfinv support if sfinv_only then sfinv.register_page("craftguide:craftguide", { - title = S("Craft Guide"), + title = "Craft Guide", get = function(self, player, context) local name = player:get_player_name() diff --git a/mods/HELP/mcl_craftguide/locale/mcl_craftguide.de.tr b/mods/HELP/mcl_craftguide/locale/mcl_craftguide.de.tr index f97ba9b0..02227194 100644 --- a/mods/HELP/mcl_craftguide/locale/mcl_craftguide.de.tr +++ b/mods/HELP/mcl_craftguide/locale/mcl_craftguide.de.tr @@ -1,8 +1,25 @@ # textdomain: mcl_craftguide - -Craft Guide=Rezeptbuch -Crafting Guide=Rezeptbuch -Crafting Guide Sign=Rezepttafel +Any shulker box=Beliebige Shulkerbox +Any wool=Beliebige Wolle +Any wood planks=Beliebige Holzplanken +Any wood=Beliebiges Holz +Any sand=Beliebiger Sand +Any normal sandstone=Beliebiger normaler Sandstein +Any red sandstone=Beliebiger roter Sandstein +Any carpet=Beliebiger Teppich +Any dye=Beliebiger Farbstoff +Any water bucket=Beliebiger Wassereimer +Any flower=Beliebige Blume +Any mushroom=Beliebiger Pilz +Any wooden slab=Beliebige Holzplatte +Any wooden stairs=Beliebgie Holztreppe +Any coal=Beliebige Kohle +Any kind of quartz block=Beliebiger Quarzblock +Any kind of purpur block=Beliebiger Purpurblock +Any stone bricks=Beliebige Steinziegel +Any stick=Beliebiger Stock +Any item belonging to the @1 group=Beliebiger Gegenstand aus Gruppe: @1 +Any item belonging to the groups: @1=Beliebiger Gegenstand aus den Gruppen: @1 Search=Suche Reset=Zurücksetzen Previous page=Vorherige Seite @@ -11,15 +28,10 @@ Usage @1 of @2=Verwendung @1 von @2 Recipe @1 of @2=Rezept @1 von @2 Burning time: @1=Brennzeit: @1 Cooking time: @1=Kochzeit: @1 -Any item belonging to the group(s): @1=Beliebiger Gegenstand aus Gruppe(n): @1 -Recipe is too big to be displayed (@1x@2)=Rezept ist zu groß für die Anzeige (@1×@2) +Recipe is too big to be displayed (@1×@2)=Rezept ist zu groß für die Anzeige (@1×@2) Shapeless=Formlos Cooking=Kochen Increase window size=Fenster vergrößern Decrease window size=Fenster verkleinern No item to show=Nichts anzuzeigen Collect items to reveal more recipes=Gegenstände aufsammeln, um mehr Rezepte aufzudecken -Show recipe(s) of the pointed node=Rezept(e) des gezeigten Blocks anzeigen -No node pointed=Auf keinen Block gezeigt -You don't know a recipe for this node=Sie kennen kein Rezept für diesen Block -No recipe for this node=Kein Rezept für diesen Block diff --git a/mods/HELP/mcl_craftguide/locale/mcl_craftguide.fr.tr b/mods/HELP/mcl_craftguide/locale/mcl_craftguide.fr.tr index 94de87fb..59800119 100644 --- a/mods/HELP/mcl_craftguide/locale/mcl_craftguide.fr.tr +++ b/mods/HELP/mcl_craftguide/locale/mcl_craftguide.fr.tr @@ -1,7 +1,25 @@ # textdomain: mcl_craftguide - -Craft Guide=Guide de recettes -Crafting Guide=Guide de recettes +Any shulker box= +Any wool= +Any wood planks= +Any wood= +Any sand= +Any normal sandstone= +Any red sandstone= +Any carpet= +Any dye= +Any water bucket= +Any flower= +Any mushroom= +Any wooden slab= +Any wooden stairs= +Any coal= +Any kind of quartz block= +Any kind of purpur block= +Any stone bricks= +Any stick= +Any item belonging to the @1 group= +Any item belonging to the groups: @1= Search=Rechercher Reset=Réinitialiser Previous page=Page précédente @@ -10,15 +28,10 @@ Usage @1 of @2=Usage @1 de @2 Recipe @1 of @2=Recette @1 de @2 Burning time: @1=Temps de combustion : @1 Cooking time: @1=Temps de cuisson : @1 -Any item belonging to the group(s): @1=Tout item appartenant au(x) groupe(s) : @1 -Recipe is too big to be displayed (@1x@2)=La recette est trop grande pour être affichée (@1x@2) +Recipe is too big to be displayed (@1×@2)=La recette est trop grande pour être affichée (@1×@2) Shapeless=Sans forme Cooking=Cuisson Increase window size=Agrandir la fenêtre Decrease window size=Réduire la fenêtre No item to show=Aucun item à afficher Collect items to reveal more recipes=Collecte des items pour révéler plus de recettes -Show recipe(s) of the pointed node=Affiche les recettes du bloc visé -No node pointed=Aucun bloc visé -You don't know a recipe for this node=Tu ne connais aucune recette pour ce bloc -No recipe for this node=Aucune recette pour ce bloc diff --git a/mods/HELP/mcl_craftguide/locale/mcl_craftguide.ru.tr b/mods/HELP/mcl_craftguide/locale/mcl_craftguide.ru.tr index 04723dbe..b3c148a6 100644 --- a/mods/HELP/mcl_craftguide/locale/mcl_craftguide.ru.tr +++ b/mods/HELP/mcl_craftguide/locale/mcl_craftguide.ru.tr @@ -1,8 +1,25 @@ # textdomain: mcl_craftguide - -Craft Guide=книга рецептов крафта -Crafting Guide=книга рецептов крафта -Crafting Guide Sign=Знак с книгой рецептов +Any shulker box= +Any wool= +Any wood planks= +Any wood= +Any sand= +Any normal sandstone= +Any red sandstone= +Any carpet= +Any dye= +Any water bucket= +Any flower= +Any mushroom= +Any wooden slab= +Any wooden stairs= +Any coal= +Any kind of quartz block= +Any kind of purpur block= +Any stone bricks= +Any stick= +Any item belonging to the @1 group= +Any item belonging to the groups: @1= Search=Поиск Reset=Сброс Previous page=Предыдущая страница @@ -12,14 +29,10 @@ Recipe @1 of @2=Рецепт @1 из @2 Burning time: @1=Время горения: @1 Cooking time: @1=Время преготовления: @1 Any item belonging to the group(s): @1=Любой элемент из группы: @1 -Recipe is too big to be displayed (@1x@2)=Рецепт слишком большой для показа (@1x@2) +Recipe is too big to be displayed (@1×@2)=Рецепт слишком большой для показа (@1×@2) Shapeless=Бесформенный Cooking=Приготовление Increase window size=Увеличить окно Decrease window size=Уменьшить окно No item to show=Нет элемента для показа Collect items to reveal more recipes=Собирайте предметы, чтобы раскрыть больше рецептов -Show recipe(s) of the pointed node=Показать рецепт(ы) выбранной ноды -No node pointed=Не указана нода -You don't know a recipe for this node=Вы не знаете рецепт для этой ноды -No recipe for this node=Нет рецептов для этой ноды diff --git a/mods/HELP/mcl_craftguide/locale/template b/mods/HELP/mcl_craftguide/locale/template deleted file mode 100644 index d051c275..00000000 --- a/mods/HELP/mcl_craftguide/locale/template +++ /dev/null @@ -1,25 +0,0 @@ -# textdomain: craftguide - -Craft Guide= -Crafting Guide= -Crafting Guide Sign= -Search= -Reset= -Previous page= -Next page= -Usage @1 of @2= -Recipe @1 of @2= -Burning time: @1= -Cooking time: @1= -Any item belonging to the group(s): @1= -Recipe is too big to be displayed (@1x@2)= -Shapeless= -Cooking= -Increase window size= -Decrease window size= -No item to show= -Collect items to reveal more recipes= -Show recipe(s) of the pointed node= -No node pointed= -You don't know a recipe for this node= -No recipe for this node= diff --git a/mods/HELP/mcl_craftguide/locale/template.txt b/mods/HELP/mcl_craftguide/locale/template.txt new file mode 100644 index 00000000..f59e97af --- /dev/null +++ b/mods/HELP/mcl_craftguide/locale/template.txt @@ -0,0 +1,37 @@ +# textdomain: craftguide +Any shulker box= +Any wool= +Any wood planks= +Any wood= +Any sand= +Any normal sandstone= +Any red sandstone= +Any carpet= +Any dye= +Any water bucket= +Any flower= +Any mushroom= +Any wooden slab= +Any wooden stairs= +Any coal= +Any kind of quartz block= +Any kind of purpur block= +Any stone bricks= +Any stick= +Any item belonging to the @1 group= +Any item belonging to the groups: @1= +Search= +Reset= +Previous page= +Next page= +Usage @1 of @2= +Recipe @1 of @2= +Burning time: @1= +Cooking time: @1= +Recipe is too big to be displayed (@1x@2)= +Shapeless= +Cooking= +Increase window size= +Decrease window size= +No item to show= +Collect items to reveal more recipes= From 3c8e2634c0baa1026c997adb4774c5b5d9c891a2 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Thu, 14 Mar 2019 01:08:32 +0100 Subject: [PATCH 139/737] German translation: help (partial) --- mods/HELP/mcl_doc/locale/mcl_doc.de.tr | 54 ++ .../locale/mcl_doc_basics.de.tr | 465 ++++++++++++++++++ 2 files changed, 519 insertions(+) create mode 100644 mods/HELP/mcl_doc/locale/mcl_doc.de.tr create mode 100644 mods/HELP/mcl_doc_basics/locale/mcl_doc_basics.de.tr diff --git a/mods/HELP/mcl_doc/locale/mcl_doc.de.tr b/mods/HELP/mcl_doc/locale/mcl_doc.de.tr new file mode 100644 index 00000000..f0143cab --- /dev/null +++ b/mods/HELP/mcl_doc/locale/mcl_doc.de.tr @@ -0,0 +1,54 @@ +# textdomain: mcl_doc +Water can flow into this block and cause it to drop as an item.=Wasser kann in diesen Block fließen und ihn als Gegenstand fallen lassen. +This block can be turned into dirt with a hoe.=Dieser Block kann mit einer Hacke zu Erde gemacht werden. +This block can be turned into farmland with a hoe.=Dieser Block kann mit einer Hacke zu Ackerboden gemacht werden. +This block acts as a soil for all saplings.=Dieser Block eignet sich als Nährboden für alle Setzlinge. +This block acts as a soil for some saplings.=Dieser Block eignet sich als Nährboden für einige Setzlinge. +Sugar canes will grow on this block.=Zuckerrohr wird auf diesem Block wachsen. +Nether wart will grow on this block.=Netherwurz wird auf diesem Block wachsen. +This block quickly decays when there is no wood block of any species within a distance of @1. When decaying, it disappears and may drop one of its regular drops. The block does not decay when the block has been placed by a player.=Dieser Block wird rasch absterben, wenn sich kein Holzblock irgendeiner Art innerhalb einer Entfernung von @1 befindet. Beim Absterben wird er verschwinden und wirft dabei vielleicht etwas ab. Der Block wird nicht absterben, wenn er von einem Spieler platziert wurde. +This block quickly decays and disappears when there is no wood block of any species within a distance of @1. The block does not decay when the block has been placed by a player.=Dieser Block wird schnell absterben und verschwinden, wenn sich kein Holzblock irgendeiner Art innerhalb einer Entfernung von @1 befindet. Der Block wird nicht absterben, wenn er von einem Spieler platziert wurde. +This plant can only grow on grass blocks and dirt. To survive, it needs to have an unobstructed view to the sky above or be exposed to a light level of 8 or higher.=Diese Pflanze kann nur auf Grasblöcken und Erde wachsen. Zum Überleben muss sie sich direkt unter dem Himmel befinden oder einer Lichtstärke von 8 oder höher ausgesetzt sein. +This plant can grow on grass blocks, podzol, dirt and coarse dirt. To survive, it needs to have an unobstructed view to the sky above or be exposed to a light level of 8 or higher.=Diese Pflanze wächst auf Grasblöcken, Podsol, Erde und grobe Erde. Zum Überleben muss sie sich direkt unter dem Himmel befinden oder einer Lichtstärke von mindestens 8 ausgesetzt sein. +This block is flammable.=Dieser Block ist entzündlich. +This block destroys any item it touches.=Dieser Block zerstört jeden Gegenstand, der in ihn fällt. +To eat it, wield it, then rightclick.=Um dies zu essen, halten Sie es in der Hand und rechtsklicken Sie. +You can eat this even when your hunger bar is full.=Sie können dies essen, auch wenn Ihre Hungerleiste voll ist. +You cannot eat this when your hunger bar is full.=Sie können dies nicht essen, wenn Ihre Hungerleiste voll ist. +To drink it, wield it, then rightclick.=Um dies zu trinken, halten Sie es, dann rechtklicken Sie. +You cannot drink this when your hunger bar is full.=Sie können dies nicht trinken, wenn Ihre Hungerleiste voll ist. +To consume it, wield it, then rightclick.=Um dies zu konsumieren, halten Sie es, dann rechtsklicken Sie. +You cannot consume this when your hunger bar is full.=Sie können dies nicht konsumieren, wenn Ihre Hungerleiste voll ist. +You have to wait for about 2 seconds before you can eat or drink again.=Sie müssen für etwa 2 Sekunden warten, bevor Sie erneut essen oder trinken können- +Hunger points restored: @1=Erhaltene Hungerpunkte: @1 +Saturation points restored: @1%.1f=Erhaltene Sättigungspunkte: @1 +This item can be repaired at an anvil with: @1.=Dieser Gegenstand kann an einem Amboss repariert werden mit: @1 +This item can be repaired at an anvil with any wooden planks.=Dieser Gegenstand kann an einem Amboss mit beliebigen Holzplanken repariert werden. +This item can be repaired at an anvil with any item in the “@1” group.=Dieser Gegenstand kann an einem Amboss in der „@1“-Gruppe repariert werden. +This item cannot be renamed at an anvil.=Dieser Gegenstand kann an einem Amboss nicht umbenannt werden. +This block crushes any block it falls into.=Dieser Block zertrümmert jeden Block, in den er hereinfällt. +When this block falls deeper than 1 block, it causes damage to any player it hits. The damage dealt is B×2−2 hit points with B @= number of blocks fallen. The damage can never be more than 40 HP.=Wenn dieser Block um mehr als 1 Block tief fällt, richtet er für jeden Spieler, den er trifft, Schaden an. Der Schaden ist B×2-2 Trefferpunkte, wobei B = die Anahl der gefallenen Blöcke. Der Schaden ist nie größer als 40 TP. +Diamond Pickaxe=Diamantspitzhacke +Iron Pickaxe=Eisenspitzhacke +Stone Pickaxe=Steinspitzhacke +Golden Pickaxe=Goldspitzhacke +Wooden Pickaxe=Holzspitzhacke +Diamond Axe=Diamantaxt +Iron Axe=Eisenaxt +Stone Axe=Steinaxt +Golden Axe=Goldaxt +Wooden Axe=Holzaxt +Diamond Shovel=Diamantschaufen +Iron Shovel=Eisenschaufel +Stone Shovel=Steinschaufel +Golden Shovel=Goldschaufel +Wooden Shovel=Holzschaufel +This block can be mined by any tool instantly.=Dieser Block kann mit jedem Werkzeug sofort abgebaut werden. +This block can be mined by:=Dieser Block kann abgebaut werden mit: +Hardness: ∞=Härte: ∞ +Hardness: @1=Härte: @1 +This block will not be destroyed by TNT explosions.=Dieser Block wird von TNT-Explosionen nicht zerstört. +This block drops itself when mined by shears.=Dieser Block wirft sich selbst ab, wenn er mit einer Schere abgebaut wird. +@1×@2=@1×@2 +This blocks drops the following when mined by shears: @1=Dieser Block wird folgendes abwerfen, wenn er mit einer Schere abgebaut wird: @ +, =, diff --git a/mods/HELP/mcl_doc_basics/locale/mcl_doc_basics.de.tr b/mods/HELP/mcl_doc_basics/locale/mcl_doc_basics.de.tr new file mode 100644 index 00000000..42ea11ec --- /dev/null +++ b/mods/HELP/mcl_doc_basics/locale/mcl_doc_basics.de.tr @@ -0,0 +1,465 @@ +# textdomain: mcl_doc_basics +Basics=Grundlagen +Everything you need to know about MineClone 2 to get started with playing=Alles, was Sie über MineClone 2 wissen sollten, um zu spielen +Advanced usage=Fortgeschrittenes +Advanced information about Minetest which may be nice to know, but is not crucial to gameplay=Fortgeschrittene Infos über Minetest, die nett zu wissen sind, aber nicht unbedingt kritisch für das Spiel +Quick start=Schnellstart +This is a very brief introduction to the basic gameplay:=Dies ist eine sehr kurze Einleitung ins Spiel: +Basic controls:=Grundsteuerung: +• Move mouse to look=• Maus bewegen zum Umsehen +• [W], [A], [S] and [D] to move=• [W], [A], [S] und [D] zum Bewegen +• [E] to sprint=[E] zum Sprinten +• [Space] to jump or move upwards=[Leertaste] zum Springen oder Aufwärtsbewegung +• [Shift] to sneak or move downwards=• [Umschalt] zum Schleichen oder Abwärtsbewegung +• Mouse wheel or [1]-[9] to select item=Mausrad oder [1]-[9] zur Gegenstandsauswahl +• Left-click to mine blocks or attack=• Linksklick, um Blöcke abzubauen oder anzugreifen +• Recover from swings to deal full damage=• Warten Sie Schwünge von Angriffen ab, um vollen Schaden anzurichten +• Right-click to build blocks and use things=• Rechtsklick, um Blöcke zu bauen und Dinge zu benutzen +• [I] for the inventory=• [I] für das Inventar +• Lowest row in inventory appears in hotbar below=• Unterste Inventarzeile erscheint in Schnellleiste +• [Esc] to close this window=• [Esc], um dieses Fenster zu schließen +How to play:=Spielanleitung +• Punch a tree trunk until it breaks and collect wood=• Hauen Sie einen Baumstamm, bis er bricht und sammeln Sie Holz auf +• Place the wood into the 2×2 grid (your “crafting grid”) in your inventory menu and craft 4 wood planks=• Platzieren Sie das Holz in das 2×2-Gitter (Ihr „Fertigungsgitter) in Ihrem Inventar und fertigen Sie 4 Holzplanken +• Place them in a 2×2 shape in the crafting grid to craft a crafting table=• Platzieren Sie sie in eine 2×2-Form im Fertigungsgitter, um eine Werkbank zu errichten +• Place the crafting table on the ground=• Platzieren Sie die Werkbank auf den Boden +• Rightclick it for a 3×3 crafting grid=Rechtsklicken Sie sie für ein 3×3-Fertigungsgitter +• Use the crafting guide (book icon) to learn all the possible crafting recipes=• Benutzen Sie die Bauanleitung (Buchsymbol) um alle möglichen Fertigungsrezepte zu lernen +• Craft a wooden pickaxe so you can dig stone=• Fertigen Sie eine Holzspitzhacke, damit Sie Stein graben können +• Different tools break different kinds of blocks. Try them out!=• Verschiedene Werkzeuge können verschiedene Blöcke brechen. Probieren Sie einfach! +• Read entries in this help to learn the rest=• Lesen Sie Einträge in dieser Hilfe, um den Rest zu lernen +• Continue playing as you wish. There's no goal. Have fun!=• Spielen Sie weiter, so wie sie wollen. Es gibt kein Ziel. Viel Spaß! +Minetest= +Minetest is a free software game engine for games based on voxel gameplay, inspired by InfiniMiner, Minecraft, and the like. Minetest was originally created by Perttu Ahola (alias “celeron55”).= +The player is thrown into a huge world made out of cubes or blocks. These cubes usually make the landscape they blocks can be removed and placed almost entirely freely. Using the collected items, new tools and other items can be crafted. Games in Minetest can, however, be much more complex than this.= +A core feature of Minetest is the built-in modding capability. Mods modify existing gameplay. They can be as simple as adding a few decorative blocks or be very complex by e.g. introducing completely new gameplay concepts, generating a completely different kind of world, and many other things.= +Minetest can be played alone or online together with multiple players. Online play will work out of the box with any mods, with no need for additional software as they are entirely provided by the server.= +Minetest is usually bundled with a simple default game, named “Minetest Game” (shown in images 1 and 2). You probably already have it. Other games for Minetest can be downloaded from the official Minetest forums .= +Minetest as well as Minetest Game are both unfinished at the moment, so please forgive us when not everything works out perfectly.= +Sneaking= +Sneaking makes you walk slower and prevents you from falling off the edge of a block.= +To sneak, hold down the sneak key (default: [Shift]). When you release it, you stop sneaking. Careful: When you release the sneak key at a ledge, you might fall!= +• Sneak: [Shift]= +Sneaking only works when you stand on solid ground, are not in a liquid and don't climb.= +If you jump while holding the sneak key, you also jump slightly higher than usual.= +Sneaking might be disabled by mods. In this case, you still walk slower by sneaking, but you will no longer be stopped at ledges.= +Controls= +These are the default controls:= +Basic movement:= +• Moving the mouse around: Look around= +• W: Move forwards= +• A: Move to the left= +• D: Move to the right= +• S: Move backwards= +• E: Sprint= +While standing on solid ground:= +• Space: Jump= +• Shift: Sneak= +While on a ladder, swimming in a liquid or fly mode is active= +• Space: Move up= +• Shift: Move down= +Extended movement (requires privileges):= +• J: Toggle fast mode, makes you run or fly fast (requires “fast” privilege)= +• K: Toggle fly mode, makes you move freely in all directions (requires “fly” privilege)= +• H: Toggle noclip mode, makes you go through walls in fly mode (requires “noclip” privilege)= +• E: Move even faster when in fast mode= +World interaction:= +• Left mouse button: Punch / mine blocks / take items= +• Right mouse button: Build or use pointed block= +• Shift+Right mouse button: Build= +• Roll mouse wheel: Select next/previous item in hotbar= +• 1-9: Select item in hotbar directly= +• Q: Drop item stack= +• Shift+Q: Drop 1 item= +• I: Show/hide inventory menu= +Inventory interaction:= +See the entry “Basics > Inventory”.= +Camera:= +• Z: Zoom (requires “zoom” privilege)= +• F7: Toggle camera mode= +• F8: Toggle cinematic mode= +Interface:= +• Esc: Open menu window (pauses in single-player mode) or close window= +• F1: Show/hide HUD= +• F2: Show/hide chat= +• F9: Toggle minimap (only works if have a map)= +• Shift+F9: Toggle minimap rotation mode= +• F10: Open/close console/chat log= +• F12: Take a screenshot= +Server interaction:= +• T: Open chat window (chat requires the “shout” privilege)= +• /: Start issuing a server command)= +Technical:= +• R: Toggle far view (disables all fog and allows viewing far away, can make game very slow)= +• +: Increase minimal viewing distance= +• -: Decrease minimal viewing distance= +• F3: Enable/disable fog= +• F5: Enable/disable debug screen which also shows your coordinates= +• F6: Only useful for developers. Enables/disables profiler= +• P: Only useful for developers. Writes current stack traces= +Players= +Players (actually: “player characters”) are the characters which users control.= +Players are living beings which occupy a space of about 1×2×1 cubes. They start with 20 health points (HP) and 10 breath points (BP).= +Players are capable of walking, sneaking, jumping, climbing, swimming, diving, mining, building, fighting and using tools and blocks.= +At a health of 0, the player dies and loses all items in the inventory. The player can just respawn in the world.= +Some blocks reduce breath. While being with the head in a block which causes drowning, the breath points are reduced by 1 for every 2 seconds. When all breath is gone, the player starts to suffer drowning damage. Breath is quickly restored in any other block.= +Damage can be disabled on any world. Without damage, players are immortal and health and breath are unimportant.= +In multi-player mode, the name of other players is written above their head.= +Items= +Items are things you can carry along and store in inventories. They can be used for crafting, smelting, building, mining, and more. Types of items include blocks, tools, weapons and items only used for crafting.= +An item stack is a collection of items of the same type which fits into a single item slot. Item stacks can be dropped on the ground. Items which drop into the same coordinates will form an item stack.= +Dropped item stacks will be collected automatically when you stand close to them.= +Tools= +Some items may serve as a tool when wielded. Any item which has some special use which can be directly used by its wielder is considered a tool.= +Mining tools are important to break all kinds of blocks. Weapons are another kind of tool. There are some other more specialized tools. Special actions of tools are usually done by right-click.= +When nothing is wielded, players use their hand which may act as tool and weapon. The hand is capable of punching and deals minimum damage.= +Many tools will wear off when using them and may eventually get destroyed. The damage is displayed in a damage bar below the tool icon. If no damage bar is shown, the tool is in mint condition. Tools may be repairable by crafting, see “Basics > Crafting”.= +Weapons= +Some items are usable as a melee weapon when wielded. Weapons share most of the properties of tools.= +Melee weapons deal damage by punching players and other animate objects. There are two ways to attack:= +• Single punch: Left-click once to deal a single punch= +• Quick punching: Hold down the left mouse button to deal quick repeated punches= +There are two core attributes of melee weapons:= +• Maximum damage: Damage which is dealt after a hit when the weapon was fully recovered)= +• Full punch interval: Time it takes for fully recovering from a punch= +A weapon only deals full damage when it has fully recovered from a previous punch. Otherwise, the weapon will deal only reduced damage. This means, quick punching is very fast, but also deals rather low damage. Note the full punch interval does not limit how fast you can attack.= +There is a rule which sometimes makes attacks impossible: Players, animate objects and weapons belong to damage groups. A weapon only deals damage to those who share at least one damage group with it. So if you're using the wrong weapon, you might not deal any damage at all.= +Pointing= +“Pointing” means looking at something in range with the crosshair. Pointing is needed for interaction, like mining, punching, using, etc. Pointable things include blocks, dropped items, players, computer enemies and objects.= +To point something, it must be in the pointing range (also just called “range”) of your wielded item. There's a default range when you are not wielding anything. A pointed thing will be outlined or highlighted (depending on your settings). Pointing is not possible with the 3rd person front camera.= +A few things can not be pointed. Most blocks are pointable. A few blocks, like air, can never be pointed. Other blocks, like liquids can only be pointed by special items.= +Camera= +You can change the camera mode by pressing [F7].= +There is also Cinematic Mode which can be toggled with [F8]. With Cinematic Mode enabled, the camera movements become more smooth. Some players don't like it, it is a matter of taste.= +By holding down [Z], you can zoom the view at your crosshair. You need the “zoom” privilege to do this.= +• Switch camera mode: [F7]= +• Toggle Cinematic Mode: [F8]= +• Zoom: [Z]= +Blocks= +The world of MineClone 2 is made entirely out of blocks (voxels, to be precise). Blocks can be added or removed with the correct tools.= +Blocks can have a wide range of different properties which determine mining times, behavior, looks, shape, and much more. Their properties include:= +• Collidable: Collidable blocks can not be passed through; players can walk on them. Non-collidable blocks can be passed through freely= +• Pointable: Pointable blocks show a wireframe or a halo box when pointed. But you will just point through non-pointable blocks. Liquids are usually non-pointable but they can be pointed at by some special tools= +• Mining properties: By which tools it can be mined, how fast and how much it wears off tools= +• Climbable: While you are at a climbable block, you won't fall and you can move up and down with the jump and sneak keys= +• Drowning damage: See the entry “Basics > Player”= +• Liquids: See the entry “Basics > Liquids”= +• Group memberships: Group memberships are used to determine mining properties, crafting, interactions between blocks and more= +Mining= +Mining (or digging) is the process of breaking blocks to remove them. To mine a block, point it and hold down the left mouse button until it breaks.= +Blocks require a mining tool to be mined. Different blocks are mined by different mining tools, and some blocks can not be mined by any tool. Blocks vary in hardness and tools vary in strength. Mining tools will wear off over time. The mining time and the tool wear depend on the block and the mining tool. The fastest way to find out how efficient your mining tools are is by just trying them out on various blocks. Any items you gather by mining will drop on the ground, ready to be collected.= +After mining, a block may leave a “drop” behind. This is a number of items you get after mining. Most commonly, you will get the block itself. There are other possibilities for a drop which depends on the block type. The following drops are possible:= +• Always drops itself (the usual case)= +• Always drops the same items= +• Drops items based on probability= +• Drops nothing= +Building= +Almost all blocks can be built (or placed). Building is very simple and has no delay.= +To build your wielded block, point at a block in the world and right-click. If this is not possible because the pointed block has a special right-click action, hold down the sneak key before right-clicking.= +Blocks can almost always be built at pointable blocks. One exception are blocks attached to the floor; these can only be built on the floor.= +Normally, blocks are built in front of the pointed side of the pointed block. A few blocks are different: When you try to build at them, they are replaced.= +Liquids= +Liquids are special dynamic blocks. Liquids like to spread and flow to their surrounding blocks. Players can swim and drown in them.= +Liquids usually come in two forms: In source form (S) and in flowing form (F).= +Liquid sources have the shape of a full cube. A liquid source will generate flowing liquids around it from time to time, and, if the liquid is renewable, it also generates liquid sources. A liquid source can sustain itself. A long it is left alone, a liquid source will normally keep its place and does not drain out.= +Flowing liquids take a sloped form. Flowing liquids spread around the world until they drain. A flowing liquid can not sustain itself and always comes from a liquid source, either directly or indirectly. Without a liquid source, a flowing liquid will eventually drain out and disappear.= +All liquids share the following properties:= +• All properties of blocks (including drowning damage= +• Renewability: Renewable liquids can create new sources= +• Flowing range: How many flowing liquids are created at maximum per liquid source, it determines how far the liquid will spread. Possible are ranges from 0 to 8. At 0, no flowing liquids will be created. Image 5 shows a liquid of flowing range 2= +• Viscosity: How slow players move through it and how slow the liquid spreads= +When those criteria are met, the open space is filled with a new liquid source of the same type (image 3).= +Swimming in a liquid is fairly straightforward: The usual direction keys for basic movement, the jump key for rising and the sneak key for sinking.= +The physics for swimming and diving in a liquid are:= +• The higher the viscosity, the slower you move= +• If you rest, you'll slowly sink= +• There is no fall damage for falling into a liquid as such= +• If you fall into a liquid, you will be slowed down on impact (but don't stop instantly). Your impact depth is determined by your speed and the liquid viscosity. For a safe high drop into a liquid, make sure there is enough liquid above the ground, otherwise you might hit the ground and take fall damage= +Liquids are often not pointable. But some special items are able to point all liquids.= +Crafting= +Crafting is the task of combining several items to form a new item.= +To craft something, you need one or more items, a crafting grid (C) and a crafting recipe. A crafting grid is like a normal inventory which can also be used for crafting. Items need to be put in a certain pattern into the crafting grid. Next to the crafting grid is an output slot (O). Here the result will appear when you placed items correctly. This is just a preview, not the actual item. Crafting grids can come in different sizes which limits the possible recipes you can craft.= +To complete the craft, take the result item from the output slot, which will consume items from the crafting grid and creates a new item. It is not possible to place items into the output slot.= +A description on how to craft an item is called a “crafting recipe”. These crafting recipes can be found in the crafting guide which you can access from the inventory menu.= +Crafting recipes consist of at least one input item and exactly one stack of output items. When performing a single craft, it will consume exactly one item from each stack of the crafting grid, unless the crafting recipe defines replacements.= +In some crafting recipes, some input items do not need to be a concrete item, instead they need to be a member of a group (see “Basics > Groups”). These recipes offer a bit more freedom in the input items. Images 6-8 show the same group-based recipe. Here, 8 items of the “stone” group are required, which is true for all of the shown items.= +Rarely, crafting recipes have replacements. This means, whenever you perform a craft, some items in the crafting grid will not be consumed, but instead will be replaced by another item.= +Cooking= +Cooking (or smelting) is a form of crafting which does not involve a crafting grid. Cooking is done with a furnace, an cookable item, a fuel item and time in order to yield a new item.= +Each fuel item has a burning time. This is the time a single item of the fuel keeps a furnace burning.= +Each cookable item requires time to be cooked. This time is specific to the item type and the item must be “on fire” for the whole cooking time to actually yield the result.= +Hotbar= +At the bottom of the screen you see some squares. This is called the “hotbar”. The hotbar allows you to quickly access the lowest row of items in the player inventory.= +You can change the selected item with the mouse wheel or the number keys.= +• Select previous item in hotbar: [Mouse wheel up]= +• Select next item in hotbar: [Mouse wheel down]= +• Select item in hotbar directly: [0]-[9]= +The selected item is also your wielded item.= +Minimap= +If you have a map item in any of your hotbar slots, you can use the minimap.= +Press [F9] to make a minimap appear on the top right. The minimap helps you to find your way around the world. Press it again to select different minimap modes and zoom levels. The minimap also shows the positions of other players.= +There are 2 minimap modes and 3 zoom levels.= +Surface mode (image 1) is a top-down view of the world, roughly resembling the colors of the blocks this world is made of. It only shows the topmost blocks, everything below is hidden, like a satellite photo. Surface mode is useful if you got lost.= +Radar mode (image 2) is more complicated. It displays the “denseness” of the area around you and changes with your height. Roughly, the more green an area is, the less “dense” it is. Black areas have many blocks. Use the radar to find caverns, hidden areas, walls and more. The rectangular shapes in image 2 clearly expose the position of a dungeon. Radar mode is only available in Creative Mode= +There are also two different rotation modes. In “square mode”, the rotation of the minimap is fixed. If you press [Shift]+[F9] to switch to “circle mode”, the minimap will instead rotate with your looking direction, so “up” is always your looking direction.= +In other games, the minimap may be disabled.= +• Toggle minimap mode: [F9]= +• Toggle minimap rotation mode: [Shift]+[F9]= +Inventories are used to store item stacks. There are other uses, such as crafting. An inventory consists of a rectangular grid of item slots. Each item slot can either be empty or hold one item stack. Item stacks can be moved freely between most slots.= +You have your own inventory which is called your “player inventory”, you can open it with the inventory key (default: [I]). The first inventory slots are also used as slots in your hotbar.= +Blocks can also have their own inventory, e.g. chests and furnaces.= +Inventory controls:= +Taking: You can take items from an occupied slot if the cursor holds nothing.= +• Left click: take entire item stack= +• Right click: take half from the item stack (rounded up)= +• Middle click: take 10 items from the item stack= +Putting: You can put items onto a slot if the cursor holds 1 or more items and the slot is either empty or contains an item stack of the same item type.= +• Left click: put entire item stack= +• Right click: put 1 item of the item stack= +• Middle click: put 10 items of the item stack= +Exchanging: You can exchange items if the cursor holds 1 or more items and the destination slot is occupied by a different item type.= +• Click: exchange item stacks= +Throwing away: If you hold an item stack and click with it somewhere outside the menu, the item stack gets thrown away into the environment.= +Quick transfer: You can quickly transfer an item stack to/from the player inventory to/from another item's inventory slot like a furnace, chest, or any other item with an inventory slot when that item's inventory is accessed. The target inventory is generally the most relevant inventory in this context.= +• Sneak+Left click: Automatically transfer item stack= +Online help= +You may want to check out these online resources related to MineClone 2.= +MineClone 2 download and forum discussion: = +Here you find the most recent version of MineClone 2 and can discuss it.= +Bug tracker: = +Report bugs here.= +Minetest links:= +Official homepage of Minetest: = +The main place to find the most recent version of Minetest, the engine used by MineClone 2.= +Community wiki: = +A community-based documentation website for Minetest. Anyone with an account can edit it.= +Minetest forums: = +A web-based discussion platform where you can discuss everything related to Minetest. This is also a place where player-made mods and games are published and discussed. The discussions are mainly in English, but there is also space for discussion in other languages.= +Chat: = +A generic Internet Relay Chat channel for everything related to Minetest where people can meet to discuss in real-time. If you do not understand IRC, see the Community Wiki for help.= +Groups= +Items, players and objects (animate and inanimate) can be members of any number of groups. Groups serve multiple purposes:= +• Crafting recipes: Slots in a crafting recipe may not require a specific item, but instead an item which is a member of a particular group, or multiple groups= +• Digging times: Diggable blocks belong to groups which are used to determine digging times. Mining tools are capable of digging blocks belonging to certain groups= +• Block behavior: Blocks may show a special behaviour and interact with other blocks when they belong to a particular group= +• Damage and armor: Objects and players have armor groups, weapons have damage groups. These groups determine damage. See also: “Basics > Weapons”= +• Other uses= +In the item help, many important groups are usually mentioned and explained.= +Glossary= +This is a list of commonly used terms:= +Controls:= +• Wielding: Holding an item in hand= +• Pointing: Looking with the crosshair at something in range= +• Dropping: Throwing an item or item stack to the ground= +• Punching: Attacking with left-click, is also used on blocks= +• Sneaking: Walking slowly while (usually) avoiding to fall over edges= +• Climbing: Moving up or down a climbable block= +Blocks:= +• Block: Cubes that the worlds are made of= +• Mining/digging: Using a mining tool to break a block= +• Building/placing: Putting a block somewhere= +• Drop: Items you get after mining a block= +• Using a block: Right-clicking a block to access its special function= +Items:= +• Item: A single thing that players can possess= +• Item stack: A collection of items of the same kind= +• Maximum stack size: Maximum amount of items in an item stack= +• Slot / inventory slot: Can hold one item stack= +• Inventory: Provides several inventory slots for storage= +• Player inventory: The main inventory of a player= +• Tool: An item which you can use to do special things with when wielding= +• Range: How far away things can be to be pointed by an item= +• Mining tool: A tool which allows to break blocks= +• Craftitem: An item which is (primarily or only) used for crafting= +Gameplay:= +• “heart”: A single health symbol, indicates 2 HP= +• “bubble”: A single breath symbol, indicates 1 BP= +• HP: Hit point (equals a half “heart”)= +• BP: Breath point, indicates breath when diving= +• Mob: Computer-controlled enemy= +• Crafting: Combining multiple items to create new ones= +• Crafting guide: A helper which shows available crafting recipes= +• Spawning: Appearing in the world= +• Respawning: Appearing again in the world after death= +• Group: Puts similar things together, often affects gameplay= +• noclip: Allows to fly through walls= +Interface= +• Hotbar: Inventory slots at the bottom= +• Statbar: Indicator made out of half-symbols, used for health and breath= +• Minimap: The map or radar at the top right= +• Crosshair: Seen in the middle, used to point at things= +Online multiplayer:= +• PvP: Player vs Player. If active, players can deal damage to each other= +• Griefing: Destroying the buildings of other players against their will= +• Protection: Mechanism to own areas of the world, which only allows the owners to modify blocks inside= +Technical terms:= +• Minetest: This game engine= +• MineClone 2: What you play right now= +• Minetest Game: A game for Minetest by the Minetest developers= +• Game: A complete playing experience to be used in Minetest; such as a game or sandbox or similar= +• Mod: A single subsystem which adds or modifies functionality; is the basic building block of games and can be used to further enhance or modify them= +• Privilege: Allows a player to do something= +• Node: Other word for “block”= +Settings= +There is a large variety of settings to configure Minetest. Pretty much every aspect can be changed that way.= +These are a few of the most important gameplay settings:= +• Damage enabled (enable_damage): Enables the health and breath attributes for all players. If disabled, players are immortal= +• Creative Mode (creative_mode): Enables sandbox-style gameplay focusing on creativity rather than a challenging gameplay. Changes include: Instant digging, easy access to almost all items, tools never wear off, etc.= +• PvP (enable_pvp): Short for “Player vs Player”. If enabled, players can deal damage to each other= +For a full list of all available settings, use the “Advanced settings” dialog in the main menu.= +Movement modes= +If you have the required privileges, you can use up to three special movement modes. Using these may be considered cheating.= +Fast mode:= +• Description: Allows you to move much faster. Hold down the the “Use” key [E] to move faster. In the client configuration, you can further customize fast mode.= +• Default key: [J]= +• Required privilege: fast= +Fly mode:= +• Description: Gravity doesn't affect you and you can move freely in all directions. Use the jump key to rise and the sneak key to sink.= +• Default key: [K]= +• Required privilege: fly= +Noclip mode:= +• Description: Allows you to move through walls. Only works when fly mode is enabled, too.= +• Default key: [H]= +• Required privilege: noclip= +Console= +With [F10] you can open and close the console. The main use of the console is to show the chat log and enter chat messages or server commands.= +Using the chat or server command key also opens the console, but it is smaller and will be closed after you sent a message.= +Use the chat to communicate with other players. This requires you to have the “shout” privilege.= +Just type in the message and hit [Enter]. Public chat messages can not begin with “/”.= +You can send private messages: Say “/msg ” in chat to send “” which can only be seen by .= +There are some special controls for the console:= +• [F10] Open/close console= +• [Enter]: Send message or command= +• [Tab]: Try to auto-complete a partially-entered player name= +• [Ctrl]+[Left]: Move cursor to the beginning of the previous word= +• [Ctrl]+[Right]: Move cursor to the beginning of the next word= +• [Ctrl]+[Backspace]: Delete previous word= +• [Ctrl]+[Delete]: Delete next word= +• [Ctrl]+[U]: Delete all text before the cursor= +• [Ctrl]+[K]: Delete all text after the cursor= +• [Page up]: Scroll up= +• [Page down]: Scroll down= +There is also an input history. Minetest saves your previous console inputs which you can quickly access later:= +• [Up]: Go to previous entry in history= +• [Down]: Go to next entry in history= +Server commands= +Server commands (also called “chat commands”) are little helpers for advanced users. You don't need to use these commands when playing. But they might come in handy to perform some more technical tasks. Server commands work both in multi-player and single-player mode.= +Server commands can be entered by players using the chat to perform a special server action. There are a few commands which can be issued by everyone, but some commands only work if you have certain privileges granted on the server. There is a small set of basic commands which are always available, other commands can be added by mods.= +To issue a command, simply type it like a chat message or press Minetest's command key (default: [/]). All commands have to begin with “/”, for example “/mods”. The Minetest command key does the same as the chat key, except that the slash is already entered.= +Commands may or may not give a response in the chat log, but errors will generally be shown in the chat. Try it for yourselves: Close this window and type in the “/mods” command. This will give you the list of available mods on this server.= +“/help all” is a very important command: You get a list of all available commands on the server, a short explanation and the allowed parameters. This command is also important because the available commands often differ per server.= +Commands are followed by zero or more parameters.= +In the command reference, you see some placeholders which you need to replace with an actual value. Here's an explanation:= +• Text in greater-than and lower-than signs (e.g. “”): Placeholder for a parameter= +• Anything in square brackets (e.g. “[text]”) is optional and can be omitted= +• Pipe or slash (e.g. “text1 | text2 | text3”): Alternation. One of multiple texts must be used (e.g. “text2”)= +• Parenthesis: (e.g. “(word1 word2) | word3”): Groups multiple words together, used for alternations= +• Everything else is to be read as literal text= +Here are some examples to illustrate the command syntax:= +• /mods: No parameters. Just enter “/mods”= +• /me : 1 parameter. You have to enter “/me ” followed by any text, e.g. “/me orders pizza”= +• /give : Two parameters. Example: “/give Player default:apple”= +• /help [all|privs|]: Valid inputs are “/help”, “/help all”, “/help privs”, or “/help ” followed by a command name, like “/help time”= +• /spawnentity [,,]: Valid inputs include “/spawnentity boats:boat” and “/spawnentity boats:boat 0,0,0”= +Some final remarks:= +• For /give and /giveme, you need an itemstring. This is an internally used unique item identifier which you may find in the item help if you have the “give” or “debug” privilege= +• For /spawnentity you need an entity name, which is another identifier= +Privileges= +Each player has a set of privileges, which differs from server to server. Your privileges determine what you can and can't do. Privileges can be granted and revoked from other players by any player who has the privilege called “privs”.= +On a multiplayer server with the default configuration, new players start with the privileges called “interact” and “shout”. The “interact” privilege is required for the most basic gameplay actions such as building, mining, using, etc. The “shout” privilege allows to chat.= +There is a small set of core privileges which you'll find on every server, other privileges might be added by mods.= +To view your own privileges, issue the server command “/privs”.= +Here are a few basic privilege-related commands:= +• /privs: Lists your privileges= +• /privs : Lists the privileges of = +• /help privs: Shows a list and description about all privileges= +Players with the “privs” privilege can modify privileges at will:= +• /grant : Grant to = +• /revoke : Revoke from = +In single-player mode, you can use “/grant singleplayer all” to unlock all abilities (which is often considered cheating).= +Light= +As the world is entirely block-based, so is the light in the world. Each block has its own brightness. The brightness of a block is expressed in a “light level” which ranges from 0 (total darkness) to 15 (as bright as the sun).= +There are two types of light: Sunlight and artificial light.= +Artificial light is emitted by luminous blocks. Artificial light has a light level from 1-14.= +Sunlight is the brightest light and always goes perfectly straight down from the sky at each time of the day. blocks. At night, the sunlight will become moonlight instead, which still provides a small amount of light. The light level of sunlight is 15.= +Blocks have 3 levels of transparency:= +• Transparent: Sunlight goes through limitless, artificial light goes through with losses= +• Semi-transparent: Sunlight and artificial light go through with losses= +• Opaque: No light passes through= +Artificial light will lose one level of brightness for each transparent or semi-transparent block it passes through, until only darkness remains (image 1).= +Sunlight will preserve its brightness as long it only passes fully transparent blocks. When it passes through a semi-transparent block, it turns to artificial light. Image 2 shows the difference.= +Note that “transparency” here only means that the block is able to carry brightness from its neighboring blocks. It is possible for a block to be transparent to light but you can't see trough the other side.= +Coordinates= +The world is a large cube. And because of this, a position in the world can be easily expressed with Cartesian coordinates. That is, for each position in the world, there are 3 values X, Y and Z.= +Like this: (5, 45, -12)= +This refers to the position where X@=5, Y@=45 and Z@=-12. The 3 letters are called “axes”: Y is for the height. X and Z are for the horizontal position.= +The values for X, Y and Z work like this:= +• If you go up, Y increases= +• If you go down, Y decreases= +• If you follow the sun, X increases= +• If you go to the reverse direction, X decreases= +• Follow the sun, then go right: Z increases= +• Follow the sun, then go left: Z decreases= +• The side length of a full cube is 1= +You can view your current position in the debug screen (open with [F5]). This is considered cheating in some games.= +Creative Mode= +Enabling Creative Mode in MineClone 2 applies the following changes:= +• You keep the things you've placed= +• Creative inventory is available to obtain most items easily= +• Hand breaks all default blocks instantly= +• Greatly increased hand pointing range= +• Mined blocks don't drop items= +• Items don't get used up= +• Tools don't wear off= +• You can eat food whenever you want= +• You can always use the minimap (including radar mode)= +Damage is not affected by Creative Mode, it needs to be disabled seperately.= +Mobs= +Mobs are the living beings in the world. This includes animals and monsters.= +Mobs appear randomly throughout the world. This is called “spawning”. Each mob kind appears on particular block types at a given light level. The height also plays a role. Peaceful mobs tend to spawn at daylight while hostile ones prefer darkness. Most mobs can spawn on any solid block but some blocks only spawn on particular blocks (like grass blocks).= +Like players, mobs have hit points and sometimes armor points, too (which means you need better weapons to deal any damage at all). Also like players, hostile mobs can attack directly or at a distance. Mobs may drop random items after they die.= +Most animals roam the world aimlessly while most hostile mobs hunt players. Animals can be fed, tamed and bred.= +Animals= +Animals are peaceful beings which roam the world aimlessly. You can feed, tame and breed them.= +Feeding:= +Each animal has its own taste for food and doesn't just accept any food. To feed, hold an item in your hand and rightclick the animal.= +Animals are attraced to the food they like and follow you as long you hold the food item in hand.= +Feeding an animal has three uses: Taming, healing and breeding.= +Feeding heals animals instantly, depending on the quality of the food item.= +Taming:= +A few animals can be tamed. You can generally do more things with tamed animals and use other items on them. For example, tame horses can be saddled and tame wolves fight on your side.= +Breeding:= +When you have fed an animal up to its maximum health, then feed it again, you will activate “Love Mode” and many hearts appear around the animal.= +Two animals of the same species will start to breed if they are in Love Mode and close to each other. Soon a baby animal will pop up.= +Baby animals:= +Baby animals are just like their adult couterparts, but they can't be fed, tamed or bred and don't drop anything when they die. They grow to adults after a short time.= +Hunger= +Hunger affects your health and your ability to sprint. Hunger is not in effect when damage is disabled.= +Core hunger rules:= +• You start with 20/20 hunger points (more points @= less hungry)= +• Actions like combat, jumping, sprinting, etc. decrease hunger points= +• Food restores hunger points= +• If your hunger bar decreases, you're hungry= +• At 18-20 hunger points, you regenerate 1 HP every 4 seconds= +• At 6 hunger points or less, you can't sprint= +• At 0 hunger points, you lose 1 HP every 4 seconds (down to 1 HP)= +• Poisonous food decreases your health= +Details:= +You have 0-20 hunger points, indicated by 20 drumstick half-icons above the hotbar. You also have an invisible attribute: Saturation.= +Hunger points reflect how full you are while saturation points reflect how long it takes until you're hungry again.= +Each food item increases both your hunger level as well your saturation.= +Food with a high saturation boost has the advantage that it will take longer until you get hungry again.= +A few food items might induce food poisoning by chance. When you're poisoned, the health and hunger symbols turn sickly green. Food poisoning drains your health by 1 HP per second, down to 1 HP. Food poisoning also drains your saturation. Food poisoning goes away after a while or when you drink milk.= +You start with 5 saturation points. The maximum saturation is equal to your current hunger level. So with 20 hunger points your maximum saturation is 20. What this means is that food items which restore many saturation points are more effective the more hunger points you have. This is because at low hunger levels, a lot of the saturation boost will be lost due to the low saturation cap.= +If your saturation reaches 0, you're hungry and start to lose hunger points. Whenever you see the hunger bar decrease, it is a good time to eat.= +Saturation decreases by doing things which exhaust you (highest exhaustion first):= +• Regenerating 1 HP= +• Suffering food poisoning= +• Sprint-jumping= +• Sprinting= +• Attacking= +• Taking damage= +• Swimming= +• Jumping= +• Mining a block= +Other actions, like walking, do not exaust you.= From 9405232fef06f35f4abaa03c554e6bc4012694b6 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Thu, 14 Mar 2019 01:14:39 +0100 Subject: [PATCH 140/737] Clean up awards mod translation --- mods/HUD/awards/locale/awards.de.tr | 248 ++++++---------------------- mods/HUD/awards/locale/template.txt | 247 ++++++--------------------- 2 files changed, 101 insertions(+), 394 deletions(-) diff --git a/mods/HUD/awards/locale/awards.de.tr b/mods/HUD/awards/locale/awards.de.tr index 3396a34f..4334a0b6 100644 --- a/mods/HUD/awards/locale/awards.de.tr +++ b/mods/HUD/awards/locale/awards.de.tr @@ -1,198 +1,50 @@ -A Cat in a Pop-Tart?! = Eine Katze im Pop-Tart?! -Aspiring Farmer = Aufstrebender Bauer -Backpacker = Rucksacktourist -Bankier = Bankier -Bricker = Ziegler -Build a Cave = Höhlenbauer -Castorama = Gießmeister -Craft 10 furnaces. = Fertigen Sie 10 Öfen. -Craft 10 mese lamps. = Fertigen Sie 10 Meselampen. -Craft 100 obsidian bricks. = Fertigen Sie 100 Obsidianziegel. -Craft 100 sandstone bricks. = Fertigen Sie 100 Sandsteinziegel. -Craft 100 sticks. = Fertigen Sie 100 Stöcke. -Craft 100 white dyes. = Fertigen Sie 100 weiße Farbstoffe. -Craft 14 vessels shelves. = Fertigen Sie 14 Gefäßregale. -Craft 15 chests. = Fertigen Sie 15 Truhen. -Craft 15 fancy beds. = Fertigen Sie 15 schicke Betten. -Craft 200 brick blocks. = Fertigen Sie 200 Ziegelblöcke. -Craft 200 stone bricks. = Fertigen Sie 200 Steinziegel. -Craft 24 gold block stairs. = Fertigen Sie 24 Goldblockstufen. -Craft 250 white wool. = Fertigen Sie 250 weiße Wolle. -Craft 3,200 stone bricks. = Fertigen Sie 3200 Steinziegel. -Craft 30 locked chests. = Fertigen Sie 30 abgeschlossene Truhen. -Craft 4 large bags. = Fertigen Sie 4 große Taschen. -Craft 400 blue dyes. = Fertigen Sie 400 blaue Farbstoffe. -Craft 400 desert stone bricks. = Fertigen Sie 400 Wüstensteinziegel. -Craft 400 red dyes. = Fertigen Sie 400 rote Farbstoffe. -Craft 400 yellow dyes. = Fertigen Sie 400 gelbe Farbstoffe. -Craft 7 bookshelves. = Fertigen Sie 7 Bücherregale. -Craft 8 times flint and steel. = Fertigen Sie 8 mal einen Feuerstein und Stahl an. -Craft 800 stone bricks. = Fertigen Sie 800 Steinziegel an. -Craft a diamond block. = Fertigen Sie einen Diamantblock an. -Crafter of Sticks = Stockmacher -Dandelions are Yellow = Löwenzahn ist gelb -Desert Discoverer = Wüstenerkunder -Desert Dweller = Wüstenbewohner -Dig 1,000 copper ores. = Bauen Sie 1000 Kupfererze ab. -Dig 1,000 jungle tree blocks. = Bauen Sie 1000 Dschungelbaumblöcke ab. -Dig 1,000 sand. = Bauen Sie 1000 Sand ab. -Dig 1,000 stone blocks. = Bauen Sie 1000 Steine ab. -Dig 1,296 tree blocks. = Bauen Sie 1296 Baumblöcke ab. -Dig 10,000 stone blocks. = Bauen Sie 10000 Steine ab. -Dig 100 jungle tree blocks. = Bauen Sie 100 Dschungelbaumblöcke ab. -Dig 100 stone blocks. = Bauen Sie 100 Steinblöcke ab. -Dig 216 tree blocks. = Bauen Sie 216 Baumblöcke ab. -Dig 36 tree blocks. = Bauen Sie 36 Baumblöcke ab. -Dig 6 tree blocks. = Bauen Sie 6 Baumblöcke ab. -Far Lands = Ferne Lande -Farming Skills Aquired = Landwirtschaft erlernt -Field Worker = Feldarbeiter -Filthy Rich = Stinkreich -Firefighter = Feuerwehr -First Day in the Woods = Erster Tag im Wald -First Gold Find = Erster Goldfund -First Mese Find = Erster Mesefund -Fortress = Burg -Geraniums are Blue = Geranien sind blau -Girl's Best Friend = Bester Freund der Mädchen -Glacier Discoverer = Gletschererkunder -Glasser = Glasmacher -Gold Rush = Goldrausch -Grasslands Discoverer = Prärieerkunder -Hardened Miner = Abhehärteter Bergarbeiter -Hardest Block on Earth = Härtester Block der Welt -Harvest 125 fully grown wheat plants. = Ernten Sie 125 voll ausgewachsene Getreidepflanzen. -Harvest 25 fully grown wheat plants. = Ernten Sie 25 voll ausgewachsene Getreidepflanzen. -Harvest 625 fully grown wheat plants. = Ernten Sie 625 voll ausgewachsene Getreidepflanzen. -Harvest a fully grown wheat plant. = Ernten Sie eine voll ausgewachsene Getreidepflanze. -Hotelier = Hotelier -House of Obsidian = Haus aus Obsidian -In the Dungeon = Im Verlies -Industrial Age = Industriezeitalter -Jungle Discoverer = Dschungelerkunder -Junglebaby = Dschungelbaby -Jungleman = Dschungelmann -Lava Miner = Lavagräber -Lava and Water = Lava und Wasser -Light It Up = Licht an! -Little Library = Kleine Bücherei -Long Ladder = Lange Leiter -Lumberjack = Holzfäller -Marchand De Sable = -Master Miner = Profibergarbeiter -Mese Mastery = Mesemeister -Mine 18 diamond ores. = Bauen Sie 18 Diamanterze ab. -Mine 45 gold ores. = Bauen Sie 18 Diamanterze ab. -Mine 50 obsidian. = Bauen Sie 50 Obsidian ab. -Mine a mese block. = Bauen Sie einen Meseblock ab. -Mine a mossy cobblestone. = Bauen Sie ein bemoostes Kopfsteinpflaster ab. -Mine a nyan cat. = Bauen Sie eine Nyan Cat ab. -Mine any block while being very close to lava. = Bauen Sie einen beliebigen Block ab, während Sie sehr nahe an der Lava stehen. -Mine some dry grass. = Bauen Sie etwas trockenes Gras ab. -Mine some grass. = Bauen Sie etwas Gras ab. -Mine your first cactus. = Bauen Sie Ihren ersten Kaktus ab. -Mine your first diamond ore. = Bauen Sie Ihr erstes Diamanterz ab. -Mine your first dry shrub. = Bauen Sie Ihren ersten vertrockneten Strauch ab. -Mine your first gold ore. = Bauen Sie Ihr erstes Golderz ab. -Mine your first ice. = Bauen Sie Ihr erstes Eis ab. -Mine your first jungle grass. = Bauen Sie Ihr erstes Dschungelgras ab. -Mine your first mese ore. = Bauen Sie Ihr erstes Meseerz ab. -Mine your first obsidian. = Bauen Sie Ihr erstes Obsidian ab. -Mini Miner = Berganfänger -Obsessed with Obsidian = Von Obsidian besessen -On The Way = Auf dem Weg -Outpost = Außenposten -Pharaoh = Pharao -Place 1,000 torches. = Platzieren Sie 1000 Fackeln. -Place 100 rails. = Platzieren Sie 100 Gleise. -Place 100 stone. = Platzieren Sie 100 Steine. -Place 100 torches. = Platzieren Sie 100 Fackeln. -Place 2 trap stones. = Platzieren Sie 2 Fallensteine. -Place 20 coal checkers. = Platzieren Sie 20 Kohlenschachbrettmuster. -Place 20 iron checkers. = Platzieren Sie 20 Eisenschachbrettmuster. -Place 40 steel ladders. = Platzieren Sie 40 Stahlleitern. -Place 400 wooden ladders. = Platzieren Sie 400 Holzleitern. -Place two snow blocks. = Platzieren Sie zwei Schneeblöcke. -Professional Lumberjack = Profiholzfäller -Put out 1000 fires. = Löschen Sie 1000 Flammen. -Pyromaniac = Pyromane -Really Well Lit = Sehr gute Beleuchtung -Roses Are Red = Rosen sind rot -Saint-Maclou = Saint-Maclou -Sam the Trapper = Sam der Fallensteller -Savannah Discoverer = Savannenerkunder -Semi-pro Lumberjack = Fortgeschrittener Holzfäller -Smelter = Schmelzer -Treasurer = Schatzmeister -Very Simple Snow Man = Sehr simpler Schneemann -Watchtower = Wachturm -Well Lit = Gut ausgeleuchtet -Wheat Magnate = Getreidemagnat -White Color Stock = Weißer Farbstoffvorrat -Wool Over Your Eyes = Wollige Augen -Wow, I am Diamonds! = Wow, ich bin Diamanten! -You’re a copper = Du Kupfer! -%s: %s = %s: %s -%s (got) = %s (erhalten) -%s’s awards: = %ss Auszeichnungen: -(Secret Award) = (Geheime Auszeichnung) -Achievement gotten! = Auszeichnung erhalten! -Achievement gotten: = Auszeichnung erhalten: -Achievement gotten: %s = Auszeichnung erhalten: %s -Secret achievement gotten! = Geheime Auszeichnung erhalten! -Secret achievement gotten: = Geheime Auszeichnung erhalten: -Secret achievement gotten: %s = Geheime Auszeichnung erhalten: %s -Get this achievement to find out what it is. = Verdienen Sie sich diese Auszeichnung, um herauszufinden, was sie ist. -You have not gotten any awards. = Sie haben noch keine Auszeichnungen. -You've disabled awards. Type /awards enable to reenable. = Sie haben die Auszeichnungen deaktiviert. Geben Sie »/awards enable« ein, um sie wieder zu aktivieren. - = - = -Achievement not found. = Auszeichnung nicht gefunden. -All your awards and statistics have been cleared. You can now start again. = All Ihre Auszeichnugen und Statistiken wurden zurückgesetzt. Sie können nun von vorne anfangen. -Get the achievements statistics for the given player or yourself = Die Statistik der Auszeichnungen eines Spielers zeigen -List awards in chat (deprecated) = Auszeichnungen im Chat anzeigen (veraltet) -Show, clear, disable or enable your achievements = Zeigen, löschen, deaktivieren oder aktivieren Sie Ihre Auszeichnungen -You have disabled your achievements. = Sie haben Ihre Auszeichnungen deaktiviert. -You have enabled your achievements. = Sie haben Ihre Auszeichnungen aktiviert. -[c|clear|disable|enable] = [c|clear|disable|enable] -Awards = Auszeichnungen -%d/%d crafted = %d/%d gefertigt -%d/%d deaths = %d/%d Tode -%d/%d dug = %d/%d abgebaut -%d/%d game joins = %d/%d Spielen beigetreten -%d/%d lines of chat = %d/%d Chatzeilen -%d/%d placed = %d/%d platziert -Die %d times. = Sterben Sie %d mal. -Die. = Sterben Sie. -Craft: %d×%s = Fertigen Sie an: %d×%s -Craft: %s = Fertigen Sie an: %s -Mine a block: %s = Bauen Sie einen Block ab: %s -Mine blocks: %d×%s = Bauen Sie Blöcke ab: %d×%s -Place a block: %s = Platzieren Sie einen Block: %s -Place blocks: %d×%s = Platzieren Sie Blöcke: %d×%s -Join the game. = Treten Sie dem Spiel bei. -Join the game %d times. = Treten Sie dem Spiel %d mal bei. -Show details of an achievement = Details einer Auszeichnung anzeigen -OK = OK -Error: No awards available. = Fehler: Keine Auszeichnungen vorhanden. -Eat: %d×%s = Essen Sie: %d×%s -Eat: %s = Essen Sie: %s -%d/%d eaten = %d/%d gegessen -Yummy! = Lecker! -Baker = Bäcker -Eat 10 loaves of bread. = Essen Sie 10 Brote. -Eat 80 apples. = Essen Sie 80 Äpfel. -Tasty Mushrooms = Leckere Pilze -Mushroom Lover = Pilzfreund -Underground Mushroom Farmer = Unterirdischer Pilzbauer -Eat 3 brown mushrooms. = Essen Sie 3 braune Pilze. -Eat 33 brown mushrooms. = Essen Sie 33 braune Pilze. -Eat 333 brown mushrooms. = Essen Sie 333 braune Pilze. -Builder = Bauarbeiter -Constructor = Konstrukteur -Architect = Architekt -Master Architect = Meisterarchitekt -Place %d block(s). = Platzieren Sie %d Blöcke. -Dig %d block(s). = Bauen Sie %d Blöcke ab. -Eat %d item(s). = Essen Sie %d Dinge. -Craft %d item(s). = Fertigen Sie %d Gegenstände. +%s: %s=%s: %s +%s (got)=%s (erhalten) +%s’s awards:=%ss Auszeichnungen: +(Secret Award)=(Geheime Auszeichnung) +Achievement gotten!=Auszeichnung erhalten! +Achievement gotten:=Auszeichnung erhalten: +Achievement gotten: %s=Auszeichnung erhalten: %s +Secret achievement gotten!=Geheime Auszeichnung erhalten! +Secret achievement gotten:=Geheime Auszeichnung erhalten: +Secret achievement gotten: %s=Geheime Auszeichnung erhalten: %s +Get this achievement to find out what it is.=Verdienen Sie sich diese Auszeichnung, um herauszufinden, was sie ist. +You have not gotten any awards.=Sie haben noch keine Auszeichnungen. +You've disabled awards. Type /awards enable to reenable.=Sie haben die Auszeichnungen deaktiviert. Geben Sie »/awards enable« ein, um sie wieder zu aktivieren. += += +Achievement not found.=Auszeichnung nicht gefunden. +All your awards and statistics have been cleared. You can now start again.=All Ihre Auszeichnugen und Statistiken wurden zurückgesetzt. Sie können nun von vorne anfangen. +Get the achievements statistics for the given player or yourself=Die Statistik der Auszeichnungen eines Spielers zeigen +List awards in chat (deprecated)=Auszeichnungen im Chat anzeigen (veraltet) +Show, clear, disable or enable your achievements=Zeigen, löschen, deaktivieren oder aktivieren Sie Ihre Auszeichnungen +You have disabled your achievements.=Sie haben Ihre Auszeichnungen deaktiviert. +You have enabled your achievements.=Sie haben Ihre Auszeichnungen aktiviert. +[c|clear|disable|enable]=[c|clear|disable|enable] +Awards=Auszeichnungen +%d/%d crafted=%d/%d gefertigt +%d/%d deaths=%d/%d Tode +%d/%d dug=%d/%d abgebaut +%d/%d game joins=%d/%d Spielen beigetreten +%d/%d lines of chat=%d/%d Chatzeilen +%d/%d placed=%d/%d platziert +Die %d times.=Sterben Sie %d mal. +Die.=Sterben Sie. +Craft: %d×%s=Fertigen Sie an: %d×%s +Craft: %s=Fertigen Sie an: %s +Mine a block: %s=Bauen Sie einen Block ab: %s +Mine blocks: %d×%s=Bauen Sie Blöcke ab: %d×%s +Place a block: %s=Platzieren Sie einen Block: %s +Place blocks: %d×%s=Platzieren Sie Blöcke: %d×%s +Join the game.=Treten Sie dem Spiel bei. +Join the game %d times.=Treten Sie dem Spiel %d mal bei. +Show details of an achievement=Details einer Auszeichnung anzeigen +OK=OK +Error: No awards available.=Fehler: Keine Auszeichnungen vorhanden. +Eat: %d×%s=Essen Sie: %d×%s +Eat: %s=Essen Sie: %s +%d/%d eaten=%d/%d gegessen +Place %d block(s).=Platzieren Sie %d Blöcke. +Dig %d block(s).=Bauen Sie %d Blöcke ab. +Eat %d item(s).=Essen Sie %d Dinge. +Craft %d item(s).=Fertigen Sie %d Gegenstände. diff --git a/mods/HUD/awards/locale/template.txt b/mods/HUD/awards/locale/template.txt index eecb0c5f..c5ca6ab6 100644 --- a/mods/HUD/awards/locale/template.txt +++ b/mods/HUD/awards/locale/template.txt @@ -1,196 +1,51 @@ -%d/%d chat messages = -%d/%d crafted = -%d/%d deaths = -%d/%d dug = -%d/%d game joins = -%d/%d placed = -%s (got) = -%s: %s = -%s’s awards: = -(Secret Award) = - = - = -A Cat in a Pop-Tart?! = -Achievement gotten! = -Achievement gotten: = -Achievement gotten: %s = -Achievement not found. = -All your awards and statistics have been cleared. You can now start again. = -Aspiring Farmer = -Awards = -Backpacker = -Bankier = -Bricker = -Build a Cave = -Castorama = -Craft 10 furnaces. = -Craft 10 mese lamps. = -Craft 100 obsidian bricks. = -Craft 100 sandstone bricks. = -Craft 100 sticks. = -Craft 100 white dyes. = -Craft 14 vessels shelves. = -Craft 15 chests. = -Craft 15 fancy beds. = -Craft 200 brick blocks. = -Craft 200 stone bricks. = -Craft 24 gold block stairs. = -Craft 250 white wool. = -Craft 3,200 stone bricks. = -Craft 30 locked chests. = -Craft 4 large bags. = -Craft 400 blue dyes. = -Craft 400 desert stone bricks. = -Craft 400 red dyes. = -Craft 400 yellow dyes. = -Craft 7 bookshelves. = -Craft 8 times flint and steel. = -Craft 800 stone bricks. = -Craft a diamond block. = -Craft: %d×%s = -Craft: %s = -Crafter of Sticks = -Dandelions are Yellow = -Desert Discoverer = -Desert Dweller = -Die %d times. = -Die. = -Dig 1,000 copper ores. = -Dig 1,000 jungle tree blocks. = -Dig 1,000 sand. = -Dig 1,000 stone blocks. = -Dig 1,296 tree blocks. = -Dig 10,000 stone blocks. = -Dig 100 jungle tree blocks. = -Dig 100 stone blocks. = -Dig 216 tree blocks. = -Dig 36 tree blocks. = -Dig 6 tree blocks. = -Far Lands = -Farming Skills Aquired = -Field Worker = -Filthy Rich = -Firefighter = -First Day in the Woods = -First Gold Find = -First Mese Find = -Fortress = -Geraniums are Blue = -Get the achievements statistics for the given player or yourself = -Girl's Best Friend = -Glacier Discoverer = -Glasser = -Gold Rush = -Grasslands Discoverer = -Hardened Miner = -Hardest Block on Earth = -Harvest 125 fully grown wheat plants. = -Harvest 25 fully grown wheat plants. = -Harvest 625 fully grown wheat plants. = -Harvest a fully grown wheat plant. = -Hotelier = -House of Obsidian = -In the Dungeon = -Industrial Age = -Join the game %d times. = -Join the game. = -Jungle Discoverer = -Junglebaby = -Jungleman = -Lava Miner = -Lava and Water = -Light It Up = -List awards in chat (deprecated) = -Little Library = -Long Ladder = -Lumberjack = -Marchand De Sable = -Master Miner = -Mese Mastery = -Mine 18 diamond ores. = -Mine 45 gold ores. = -Mine 50 obsidian. = -Mine a block: %s = -Mine a mese block. = -Mine a mossy cobblestone. = -Mine a nyan cat. = -Mine any block while being very close to lava. = -Mine blocks: %d×%s = -Mine some dry grass. = -Mine some grass. = -Mine your first cactus. = -Mine your first diamond ore. = -Mine your first dry shrub. = -Mine your first gold ore. = -Mine your first ice. = -Mine your first jungle grass. = -Mine your first mese ore. = -Mine your first obsidian. = -Mini Miner = -Obsessed with Obsidian = -On The Way = -Outpost = -Pharaoh = -Place 1,000 torches. = -Place 100 rails. = -Place 100 stone. = -Place 100 torches. = -Place 2 trap stones. = -Place 20 coal checkers. = -Place 20 iron checkers. = -Place 40 steel ladders. = -Place 400 wooden ladders. = -Place a block: %s = -Place blocks: %d×%s = -Place two snow blocks. = -Professional Lumberjack = -Put out 1000 fires. = -Pyromaniac = -Really Well Lit = -Roses Are Red = -Saint-Maclou = -Sam the Trapper = -Savannah Discoverer = -Secret Achievement gotten! = -Secret Achievement gotten: = -Secret Achievement gotten: %s = -Semi-pro Lumberjack = -Show details of an achievement = -Show, clear, disable or enable your achievements = -Smelter = -Treasurer = -Get this achievement to find out what it is. = -Very Simple Snow Man = -Watchtower = -Well Lit = -Wheat Magnate = -White Color Stock = -Wool Over Your Eyes = -Wow, I am Diamonds! = -Write %d chat messages. = -Write something in chat. = -You have disabled your achievements. = -You have enabled your achievements. = -You have not gotten any awards. = -You've disabled awards. Type /awards enable to reenable. = -You’re a copper = -[c|clear|disable|enable] = -OK = -Error: No awards available. = -Eat: %d×%s = -Eat: %s = -%d/%d eaten = -Place %d block(s). = -Dig %d block(s). = -Eat %d item(s). = -Craft %d item(s). = -Yummy! = -Baker = -Eat 10 loaves of bread. = -Eat 80 apples. = -Tasty Mushrooms = -Mushroom Lover = -Underground Mushroom Farmer = -Eat 3 brown mushrooms. = -Eat 33 brown mushrooms. = -Eat 333 brown mushrooms. = +%d/%d chat messages= +%d/%d crafted= +%d/%d deaths= +%d/%d dug= +%d/%d game joins= +%d/%d placed= +%s (got)= +%s: %s= +%s’s awards:= +(Secret Award)= += += +A Cat in a Pop-Tart?!= +Achievement gotten!= +Achievement gotten:= +Achievement gotten: %s= +Achievement not found.= +All your awards and statistics have been cleared. You can now start again.= +Awards= +Craft: %d×%s= +Craft: %s= +Die %d times.= +Die.= +Get the achievements statistics for the given player or yourself= +Join the game %d times.= +Join the game.= +List awards in chat (deprecated)= +Place a block: %s= +Place blocks: %d×%s= +Secret Achievement gotten!= +Secret Achievement gotten:= +Secret Achievement gotten: %s= +Show details of an achievement= +Show, clear, disable or enable your achievements= +Get this achievement to find out what it is.= +Write %d chat messages.= +Write something in chat.= +You have disabled your achievements.= +You have enabled your achievements.= +You have not gotten any awards.= +You've disabled awards. Type /awards enable to reenable.= +[c|clear|disable|enable]= +OK= +Error: No awards available.= +Eat: %d×%s= +Eat: %s= +%d/%d eaten= +Place %d block(s).= +Dig %d block(s).= +Eat %d item(s).= +Craft %d item(s).= From 293dd036f84fcdb8bf2627507c8664b2510cfff9 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Thu, 14 Mar 2019 01:50:29 +0100 Subject: [PATCH 141/737] German translations: HUD --- mods/HUD/awards/locale/awards.de.tr | 2 +- .../locale/mcl_achievements.de.tr | 49 +++++++++++++++++ .../locale/mcl_death_messages.de.tr | 53 +++++++++++++++++++ mods/HUD/mcl_inventory/creative.lua | 36 ++++++------- mods/HUD/mcl_inventory/init.lua | 10 ++-- .../mcl_inventory/locale/mcl_inventory.de.tr | 17 ++++++ mods/HUD/mcl_inventory/locale/template.txt | 16 ++++++ 7 files changed, 159 insertions(+), 24 deletions(-) create mode 100644 mods/HUD/mcl_achievements/locale/mcl_achievements.de.tr create mode 100644 mods/HUD/mcl_death_messages/locale/mcl_death_messages.de.tr create mode 100644 mods/HUD/mcl_inventory/locale/mcl_inventory.de.tr diff --git a/mods/HUD/awards/locale/awards.de.tr b/mods/HUD/awards/locale/awards.de.tr index 4334a0b6..6fd3661a 100644 --- a/mods/HUD/awards/locale/awards.de.tr +++ b/mods/HUD/awards/locale/awards.de.tr @@ -1,6 +1,6 @@ %s: %s=%s: %s %s (got)=%s (erhalten) -%s’s awards:=%ss Auszeichnungen: +%s’s awards:=Auszeichnungen von %s: (Secret Award)=(Geheime Auszeichnung) Achievement gotten!=Auszeichnung erhalten! Achievement gotten:=Auszeichnung erhalten: diff --git a/mods/HUD/mcl_achievements/locale/mcl_achievements.de.tr b/mods/HUD/mcl_achievements/locale/mcl_achievements.de.tr new file mode 100644 index 00000000..28f98272 --- /dev/null +++ b/mods/HUD/mcl_achievements/locale/mcl_achievements.de.tr @@ -0,0 +1,49 @@ +# textdomain: mcl_achievements +Aquire Hardware=Schmied +Bake Bread=Brot backen +Benchmarking=Tischler +Cow Tipper=Kuhschubser +Craft a bookshelf.=Fertigen Sie ein Bücherregal +Craft a cake using wheat, sugar, milk and an egg.=Fertigen Sie einen Kuchen mit Weizen, Zucker, Milch und einem Ei. +Craft a crafting table from 4 wooden planks.=Fertigen Sie eine Werkbank aus 4 Holzplanken. +Craft a stone pickaxe using sticks and cobblestone.=Fertigen Sie eine Steinspitzhacke mit Stöcken und Kopfsteinpflaster. +Craft a wooden sword using wooden planks and sticks on a crafting table.=Fertigen Sie ein Holzschwert mit Holzplanken und Stöcken an einer Werkbank. +DIAMONDS!=DIAMANTEN! +Delicious Fish=Leckerer Fisch +Dispense With This=Ein Auge darauf werfen +Eat a cooked porkchop.=Essen Sie ein gekochtes Schweinekotelett +Eat a cooked rabbit.=Essen Sie ein gekochtes Kaninchen +Get really desperate and eat rotten flesh.=Verzweifeln Sie und essen Sie Gammelfleisch. +Getting Wood=Holzhacker +Getting an Upgrade=Aufwertung +Hit a skeleton, wither skeleton or stray by bow and arrow from a distance of at least 20 meters.=Treffen Sie ein Skelett, Witherskelett oder einen Eiswanderer mit Bogen und Pfeil aus einer Entfernung von mindestens 20 Metern. +Hot Topic=Heißes Eisen +Into Fire=In das Feuer +Into the Nether=In den Nether +Iron Belly=Eiserner Magen +Librarian=Bibliothekar +Mine emerald ore.=Bauen Sie Smaragderz ab. +On A Rail=Auf der Schiene +Pick up a blaze rod from the floor.=Sammeln Sie eine Lohenrute vom Boden auf. +Pick up a diamond from the floor.=Sammeln Sie einen Diamanten vom Boden auf. +Pick up a wood item from the ground.@nHint: Punch a tree trunk until it pops out as an item.=Sammeln Sie ein Holz vom Boden auf.@nTipp: Hauen Sie einen Baumstamm, bis er als Gegenstand herausploppt. +Pick up leather from the floor.@nHint: Cows and some other animals have a chance to drop leather, when killed.=Sammeln Sie Leder vom Boden auf.@nTipp: Kühe und einige andere Tiere werfen vielleicht Leder ab, wenn sie sterben. +Place a dispenser.=Platzieren Sie einen Werfer +Place a flower pot.=Platzieren Sie einen Blumentopf +Pork Chop=Kassler +Pot Planter=Topfpflanzer +Rabbit Season=Kaninchensaison +Sniper Duel=Scharfschützenduell +Take a cooked fish from a furnace.@nHint: Use a fishing rod to catch a fish and cook it in a furnace.=Nehmen Sie einen gekochten Fisch aus einem Ofen.@nTipp: Benutzen Sie eine Angel, um einen Fisch zu fangen und kochen Sie ihn in einem Ofen. +Take an iron ingot from a furnace's output slot.@nHint: To smelt an iron ingot, put a fuel (like coal) and iron ore into a furnace.=Nehmen Sie einen Eisenbarren aus dem Ausgabeschlitz eines Ofens.@nTipp: Um einen Eisenbarren zu erhalten, platzieren Sie einen Brennstoff (wie Kohle) und Eisenerz in einen Ofen. +The Haggler=Der Sammler +The Lie=Die Lüge +Time to Farm!=Bauernzeit +Time to Mine!=Zeit zum Graben! +Time to Strike!=Zuschlagen! +Travel by minecart for at least 1000 meters from your starting point in a single ride.=Reisen Sie mit einer Lore für mindestens 1000 Meter vom Startpunkt in einer einzigen Fahrt. +Use 8 cobblestones to craft a furnace.=Benutzen Sie 8 Kopfsteinpflaster, um einen Ofen zu fertigen. +Use a crafting table to craft a wooden hoe from wooden planks and sticks.=Benutzen Sie eine Werkbank, um eine Holzhacke aus Holzplanken und Stöcken zu fertigen. +Use a crafting table to craft a wooden pickaxe from wooden planks and sticks.=Benutzen Sie eine Werkbank, um eine Holzspitzhacke aus Holzplanken und Stöcken zu fertigen. +Use obsidian and a fire starter to construct a Nether portal.=Benutzen Sie Obsidian und ein Feuerzeug, um ein Netherportal zu errichten. +Use wheat to craft a bread.=Benutzen Sie Weizen, um ein Brot zu machen. diff --git a/mods/HUD/mcl_death_messages/locale/mcl_death_messages.de.tr b/mods/HUD/mcl_death_messages/locale/mcl_death_messages.de.tr new file mode 100644 index 00000000..4a65a08c --- /dev/null +++ b/mods/HUD/mcl_death_messages/locale/mcl_death_messages.de.tr @@ -0,0 +1,53 @@ +# textdomain: mcl_death_messages +%s was fatally hit by an arrow.=%s wurde tödlich von einem Pfeil getroffen. +%s has been killed with an arrow.=%s wurde mit einem Pfeil getötet. +%s was shot by an arrow from %s.=%s wurde mit einem Pfeil von %s abgeschossen. +%s forgot to breathe.=%s vergaß, zu atmen. +%s drowned.=%s ertrank. +%s ran out of oxygen.=%s ging die Luft aus. +%s was killed by %s.=%s wurde von %s getötet. +%s was killed by a mob.=%s wurde von einem Mob getötet. +%s was burned to death by a blaze's fireball.=%s wurde von einem Feuerball einer Lohe zu Tode verbrannt. +%s was killed by a fireball from a blaze.=%s wurde von einem Feuerball einer Lohe getötet. +%s was burned by a fire charge.=%s wurde von einer Feuerkugel verbrannt. +A ghast scared %s to death.=Ein Ghast hat %s zu Tode erschrocken. +%s has been fireballed by a ghast.=%s wurde von einem Ghast mit einer Feuerkugel abgeschossen. +%s fell from a high cliff.=%s stürzte von einer hohen Klippe. +%s took fatal fall damage.=%s nahm tödlichen Fallschaden. +%s fell victim to gravity.=%s fiel der Schwerkraft zum Opfer. +%s died.=%s starb. +%s was killed by a zombie.=%s wurde von einem Zombie getötet. +%s was killed by a baby zombie.=%s wurde von einem Zombiebaby getötet. +%s was killed by a blaze.=%s wurde von einer Lohe getötet. +%s was killed by a slime.=%s wurde von einem Schleim getötet. +%s was killed by a witch.=%s wurde von einer Hexe getötet. +%s was killed by a magma cube.=%s wurde von einem Magmakubus getötet. +%s was killed by a wolf.=%s wurde von einem Wolf getötet. +%s was killed by a cat.=%s wurde von einer Katze getötet. +%s was killed by an ocelot.=%s wurde von einem Ozelot getötet. +%s was killed by an ender dragon.=%s wurde von einem Enderdrachen getötet. +%s was killed by a wither.=%s wurde von einem Wither getötet. +%s was killed by an enderman.=%s wurde von einem Enderman getötet. +%s was killed by an endermite.=%s wurde von einer Endermilbe getötet. +%s was killed by a ghast.=%s wurde von einem Ghast getötet. +%s was killed by an elder guardian.=%s wurde von einem Großen Wächter getötet. +%s was killed by a guardian.=%s wurde von einem Wächter getötet. +%s was killed by an iron golem.=%s wurde von einem Eisengolem getötet. +%s was killed by a polar_bear.=%s wurde von einem Eisbären getötet. +%s was killed by a killer bunny.=%s wurde von einem Killerkaninchen getötet. +%s was killed by a shulker.=%s wurde von einem Shulker getötet. +%s was killed by a silverfish.=%s wurde von einem Silberfischchen getötet. +%s was killed by a skeleton.=%s wurde von einem Skelett getötet. +%s was killed by a stray.=%s wurde von einem Eiswanderer getötet. +%s was killed by a slime.=%s wurde von einem Schleim getötet. +%s was killed by a spider.=%s wurde von einer Spinne getötet. +%s was killed by a cave spider.=%s wurde von einer Höhlenspinne getötet. +%s was killed by a vex.=%s wurde von einem Plagegeist getötet. +%s was killed by an evoker.=%s wurde von einem Magier getötet. +%s was killed by an illusioner.=%s wurde von einem Illusionisten getötet. +%s was killed by a vindicator.=%s wurde von einem Diener getötet. +%s was killed by a zombie villager.=%s wurde von einem Dorfbewohnerzombie getötet. +%s was killed by a husk.=%s wurde von einem Wüstenzombie getötet. +%s was killed by a baby husk.=%s wurde von einem Wüstenzombiebaby getötet. +%s was killed by a zombie pigman.=%s wurde von einem Schweinezombie getötet. +%s was killed by a baby zombie pigman.=%s wurde von einem Schweinezombiebaby getötet. diff --git a/mods/HUD/mcl_inventory/creative.lua b/mods/HUD/mcl_inventory/creative.lua index 8b3eef70..1df14238 100644 --- a/mods/HUD/mcl_inventory/creative.lua +++ b/mods/HUD/mcl_inventory/creative.lua @@ -1,5 +1,5 @@ local S = minetest.get_translator("mcl_inventory") -local F = function(s) return minetest.formspec_escape(S(s)) end +local F = minetest.formspec_escape -- Prepare player info table local players = {} @@ -323,16 +323,16 @@ mcl_inventory.set_creative_formspec = function(player, start_i, pagenum, inv_siz player_preview.. -- crafting guide button "image_button[9,1;1,1;craftguide_book.png;__mcl_craftguide;]".. - "tooltip[__mcl_craftguide;"..F("Recipe book").."]".. + "tooltip[__mcl_craftguide;"..F(S("Recipe book")).."]".. -- help button "image_button[9,2;1,1;doc_button_icon_lores.png;__mcl_doc;]".. - "tooltip[__mcl_doc;"..F("Help").."]".. + "tooltip[__mcl_doc;"..F(S("Help")).."]".. -- skins button "image_button[9,3;1,1;mcl_skins_button.png;__mcl_skins;]".. - "tooltip[__mcl_skins;"..F("Select player skin").."]".. + "tooltip[__mcl_skins;"..F(S("Select player skin")).."]".. -- achievements button "image_button[9,4;1,1;mcl_achievements_button.png;__mcl_achievements;]".. - "tooltip[__mcl_achievements;"..F("Achievements").."]" + "tooltip[__mcl_achievements;"..F(S("Achievements")).."]" -- For shortcuts listrings = listrings .. @@ -385,35 +385,35 @@ mcl_inventory.set_creative_formspec = function(player, start_i, pagenum, inv_siz "background[-0.19,-0.25;10.5,9.87;"..inv_bg.."]".. "label[-5,-5;"..name.."]".. tab(name, "blocks") .. - "tooltip[blocks;"..F("Building Blocks").."]".. + "tooltip[blocks;"..F(S("Building Blocks")).."]".. tab(name, "deco") .. - "tooltip[deco;"..F("Decoration Blocks").."]".. + "tooltip[deco;"..F(S("Decoration Blocks")).."]".. tab(name, "redstone") .. - "tooltip[redstone;"..F("Redstone").."]".. + "tooltip[redstone;"..F(S("Redstone")).."]".. tab(name, "rail") .. - "tooltip[rail;"..F("Transportation").."]".. + "tooltip[rail;"..F(S("Transportation")).."]".. tab(name, "misc") .. - "tooltip[misc;"..F("Miscellaneous").."]".. + "tooltip[misc;"..F(S("Miscellaneous")).."]".. tab(name, "nix") .. - "tooltip[nix;"..F("Search Items").."]".. + "tooltip[nix;"..F(S("Search Items")).."]".. fnt.. "list[current_player;main;0,7;9,1;]".. main_list.. tab(name, "food") .. - "tooltip[food;"..F("Foodstuffs").."]".. + "tooltip[food;"..F(S("Foodstuffs")).."]".. tab(name, "tools") .. - "tooltip[tools;"..F("Tools").."]".. + "tooltip[tools;"..F(S("Tools")).."]".. tab(name, "combat") .. - "tooltip[combat;"..F("Combat").."]".. + "tooltip[combat;"..F(S("Combat")).."]".. tab(name, "mobs") .. - "tooltip[mobs;"..F("Mobs").."]".. + "tooltip[mobs;"..F(S("Mobs")).."]".. -- TODO: Add brew --tab(name, "brew") .. - --"tooltip[brew;"..F("Brewing").."]".. + --"tooltip[brew;"..F(S("Brewing")).."]".. tab(name, "matr") .. - "tooltip[matr;"..F("Materials").."]".. + "tooltip[matr;"..F(S("Materials")).."]".. tab(name, "inv") .. - "tooltip[inv;"..F("Survival Inventory").."]".. + "tooltip[inv;"..F(S("Survival Inventory")).."]".. "list[detached:trash;main;9,7;1,1;]".. "image[9,7;1,1;crafting_creative_trash.png]".. listrings diff --git a/mods/HUD/mcl_inventory/init.lua b/mods/HUD/mcl_inventory/init.lua index 9738cd4d..2ca876bf 100644 --- a/mods/HUD/mcl_inventory/init.lua +++ b/mods/HUD/mcl_inventory/init.lua @@ -1,5 +1,5 @@ local S = minetest.get_translator("mcl_inventory") -local F = function(s) return minetest.formspec_escape(S(s)) end +local F = minetest.formspec_escape mcl_inventory = {} @@ -105,16 +105,16 @@ local function set_inventory(player, armor_change_only) "list[current_player;craftpreview;7,1.5;1,1;]".. -- crafting guide button "image_button[4.5,3;1,1;craftguide_book.png;__mcl_craftguide;]".. - "tooltip[__mcl_craftguide;"..F("Recipe book").."]".. + "tooltip[__mcl_craftguide;"..F(S("Recipe book")).."]".. -- help button "image_button[8,3;1,1;doc_button_icon_lores.png;__mcl_doc;]".. - "tooltip[__mcl_doc;"..F("Help").."]".. + "tooltip[__mcl_doc;"..F(S("Help")).."]".. -- skins button "image_button[3,3;1,1;mcl_skins_button.png;__mcl_skins;]".. - "tooltip[__mcl_skins;"..F("Select player skin").."]".. + "tooltip[__mcl_skins;"..F(S("Select player skin")).."]".. -- achievements button "image_button[7,3;1,1;mcl_achievements_button.png;__mcl_achievements;]".. - "tooltip[__mcl_achievements;"..F("Achievements").."]".. + "tooltip[__mcl_achievements;"..F(S("Achievements")).."]".. -- for shortcuts "listring[current_player;main]".. "listring[current_player;craft]".. diff --git a/mods/HUD/mcl_inventory/locale/mcl_inventory.de.tr b/mods/HUD/mcl_inventory/locale/mcl_inventory.de.tr new file mode 100644 index 00000000..e14220e7 --- /dev/null +++ b/mods/HUD/mcl_inventory/locale/mcl_inventory.de.tr @@ -0,0 +1,17 @@ +# textdomain: mcl_inventory +Recipe book=Fertigungsbuch +Help=Hilfe +Select player skin=Spieleraussehen ändern +Achievements=Errungenschaften +Building Blocks=Baublöcke +Decoration Blocks=Dekoblöcke +Redstone=Redstone +Transportation=Transport +Miscellaneous=Sonstiges +Search Items=Gegenstände durchsuchen +Foodstuffs=Lebensmittel +Tools=Werkzeuge +Combat=Kampf +Mobs=Mobs +Materials=Materialien +Survival Inventory=Überlebensinventar diff --git a/mods/HUD/mcl_inventory/locale/template.txt b/mods/HUD/mcl_inventory/locale/template.txt index ed721afb..27920490 100644 --- a/mods/HUD/mcl_inventory/locale/template.txt +++ b/mods/HUD/mcl_inventory/locale/template.txt @@ -1 +1,17 @@ # textdomain: mcl_inventory +Recipe book= +Help= +Select player skin= +Achievements= +Building Blocks= +Decoration Blocks= +Redstone= +Transportation= +Miscellaneous= +Search Items= +Foodstuffs= +Tools= +Combat= +Mobs= +Materials= +Survival Inventory= From 45d09754d0edf809bc7c024d9625b5ca419cabb5 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Thu, 14 Mar 2019 01:59:31 +0100 Subject: [PATCH 142/737] German translation: mcl_structures --- mods/MAPGEN/mcl_structures/init.lua | 23 +++++++------------ .../locale/mcl_structures.de.tr | 7 ++++++ .../MAPGEN/mcl_structures/locale/template.txt | 7 ++++++ 3 files changed, 22 insertions(+), 15 deletions(-) create mode 100644 mods/MAPGEN/mcl_structures/locale/mcl_structures.de.tr create mode 100644 mods/MAPGEN/mcl_structures/locale/template.txt diff --git a/mods/MAPGEN/mcl_structures/init.lua b/mods/MAPGEN/mcl_structures/init.lua index 737722f2..26fd7b2c 100644 --- a/mods/MAPGEN/mcl_structures/init.lua +++ b/mods/MAPGEN/mcl_structures/init.lua @@ -1,4 +1,5 @@ local init = os.clock() +local S = minetest.get_translator("mcl_structures") mcl_structures ={} mcl_structures.get_struct = function(file) @@ -459,7 +460,7 @@ end -- Debug command minetest.register_chatcommand("spawnstruct", { params = "desert_temple | desert_well | igloo | village | witch_hut | boulder | ice_spike_small | ice_spike_large | fossil | end_exit_portal | end_portal_shrine", - description = "Generate a pre-defined structure near your position.", + description = S("Generate a pre-defined structure near your position."), privs = {debug = true}, func = function(name, param) local pos= minetest.get_player_by_name(name):get_pos() @@ -467,48 +468,40 @@ minetest.register_chatcommand("spawnstruct", { return end local errord = false + local message = S("Structure placed.") if param == "village" then mcl_structures.generate_village(pos) - minetest.chat_send_player(name, "Village built. WARNING: Villages are experimental and might have bugs.") + message = S("Village built. WARNING: Villages are experimental and might have bugs.") elseif param == "desert_temple" then mcl_structures.generate_desert_temple(pos) - minetest.chat_send_player(name, "Desert temple built.") elseif param == "desert_well" then mcl_structures.generate_desert_well(pos) - minetest.chat_send_player(name, "Desert well built.") elseif param == "igloo" then mcl_structures.generate_igloo_top(pos) - minetest.chat_send_player(name, "Igloo built.") elseif param == "witch_hut" then mcl_structures.generate_witch_hut(pos) - minetest.chat_send_player(name, "Witch hut built.") elseif param == "boulder" then mcl_structures.generate_boulder(pos) - minetest.chat_send_player(name, "Moss stone boulder placed.") elseif param == "fossil" then mcl_structures.generate_fossil(pos) - minetest.chat_send_player(name, "Fossil placed.") elseif param == "ice_spike_small" then mcl_structures.generate_ice_spike_small(pos) - minetest.chat_send_player(name, "Small ice spike placed.") elseif param == "ice_spike_large" then mcl_structures.generate_ice_spike_large(pos) - minetest.chat_send_player(name, "Large ice spike placed.") elseif param == "end_exit_portal" then mcl_structures.generate_end_exit_portal(pos) - minetest.chat_send_player(name, "End exit portal placed.") elseif param == "end_portal_shrine" then mcl_structures.generate_end_portal_shrine(pos) - minetest.chat_send_player(name, "End portal shrine placed.") elseif param == "" then - minetest.chat_send_player(name, "Error: No structure type given. Please use “/spawnstruct ”.") + message = S("Error: No structure type given. Please use “/spawnstruct ”.") errord = true else - minetest.chat_send_player(name, "Error: Unknown structure type. Please use “/spawnstruct ”.") + message = S("Error: Unknown structure type. Please use “/spawnstruct ”.") errord = true end + minetest.chat_send_player(name, message) if errord then - minetest.chat_send_player(name, "Use /help spawnstruct to see a list of avaiable types.") + minetest.chat_send_player(name, S("Use /help spawnstruct to see a list of avaiable types.")) end end }) diff --git a/mods/MAPGEN/mcl_structures/locale/mcl_structures.de.tr b/mods/MAPGEN/mcl_structures/locale/mcl_structures.de.tr new file mode 100644 index 00000000..e701b787 --- /dev/null +++ b/mods/MAPGEN/mcl_structures/locale/mcl_structures.de.tr @@ -0,0 +1,7 @@ +# textdomain: mcl_structures +Generate a pre-defined structure near your position.=Erzeugt ein vordefiniertes Gebäude in Ihrer Nähe. +Structure placed.=Gebäude platziert. +Village built. WARNING: Villages are experimental and might have bugs.=Dorf gebaut. ACHTUNG: Dörfer sind experimentell und können fehlerhaft sein. +Error: No structure type given. Please use “/spawnstruct ”.=Fehler: Kein Gebäudetyp angegeben. Bitte benutzen Sie „/spawnstruct “. +Error: Unknown structure type. Please use “/spawnstruct ”.=Fehler: Unbekannter Gebäudetyp. Bitte benutzen Sie „/spawnstruct “. +Use /help spawnstruct to see a list of avaiable types.=Benutzen Sie „/help spawnstruct“, um eine Liste der vorhandenen Typen zu sehen. diff --git a/mods/MAPGEN/mcl_structures/locale/template.txt b/mods/MAPGEN/mcl_structures/locale/template.txt new file mode 100644 index 00000000..76f85c4c --- /dev/null +++ b/mods/MAPGEN/mcl_structures/locale/template.txt @@ -0,0 +1,7 @@ +# textdomain: mcl_structures +Generate a pre-defined structure near your position.= +Structure placed.= +Village built. WARNING: Villages are experimental and might have bugs.= +Error: No structure type given. Please use “/spawnstruct ”.= +Error: Unknown structure type. Please use “/spawnstruct ”.= +Use /help spawnstruct to see a list of avaiable types.= From b72afa7e62fa459f314fd3aa2b4550f200967676 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Thu, 14 Mar 2019 02:32:35 +0100 Subject: [PATCH 143/737] German translation: Player and Misc --- .../locale/mcl_doc_basics.de.tr | 437 +----------------- .../mcl_commands/locale/mcl_commands.de.tr | 20 + mods/MISC/mcl_privs/locale/mcl_privs.de.tr | 2 + mods/MISC/mcl_wip/description.txt | 2 +- mods/MISC/mcl_wip/init.lua | 2 + mods/MISC/mcl_wip/locale/mcl_wip.de.tr | 3 + mods/MISC/mcl_wip/locale/template.txt | 1 + mods/PLAYER/mcl_hunger/locale/de.txt | 1 - .../PLAYER/mcl_hunger/locale/mcl_hunger.de.tr | 8 + mods/PLAYER/mcl_hunger/locale/pt.txt | 1 - mods/PLAYER/mcl_hunger/locale/template.txt | 9 +- .../locale/mcl_playerplus.de.tr | 3 + mods/PLAYER/mcl_skins/init.lua | 2 +- mods/PLAYER/mcl_skins/locale/fr.po | 51 -- mods/PLAYER/mcl_skins/locale/it.po | 52 --- mods/PLAYER/mcl_skins/locale/mcl_skins.de.tr | 13 + mods/PLAYER/mcl_skins/locale/mcl_skins.fr.tr | 16 + mods/PLAYER/mcl_skins/locale/mcl_skins.ms.tr | 16 + mods/PLAYER/mcl_skins/locale/ms.po | 51 -- mods/PLAYER/mcl_skins/locale/template.pot | 50 -- mods/PLAYER/mcl_skins/locale/template.txt | 13 + mods/PLAYER/mcl_spawn/locale/mcl_spawn.de.tr | 4 + 22 files changed, 114 insertions(+), 643 deletions(-) create mode 100644 mods/MISC/mcl_commands/locale/mcl_commands.de.tr create mode 100644 mods/MISC/mcl_privs/locale/mcl_privs.de.tr create mode 100644 mods/MISC/mcl_wip/locale/mcl_wip.de.tr delete mode 100644 mods/PLAYER/mcl_hunger/locale/de.txt create mode 100644 mods/PLAYER/mcl_hunger/locale/mcl_hunger.de.tr delete mode 100644 mods/PLAYER/mcl_hunger/locale/pt.txt create mode 100644 mods/PLAYER/mcl_playerplus/locale/mcl_playerplus.de.tr delete mode 100644 mods/PLAYER/mcl_skins/locale/fr.po delete mode 100644 mods/PLAYER/mcl_skins/locale/it.po create mode 100644 mods/PLAYER/mcl_skins/locale/mcl_skins.de.tr create mode 100644 mods/PLAYER/mcl_skins/locale/mcl_skins.fr.tr create mode 100644 mods/PLAYER/mcl_skins/locale/mcl_skins.ms.tr delete mode 100644 mods/PLAYER/mcl_skins/locale/ms.po delete mode 100644 mods/PLAYER/mcl_skins/locale/template.pot create mode 100644 mods/PLAYER/mcl_skins/locale/template.txt create mode 100644 mods/PLAYER/mcl_spawn/locale/mcl_spawn.de.tr diff --git a/mods/HELP/mcl_doc_basics/locale/mcl_doc_basics.de.tr b/mods/HELP/mcl_doc_basics/locale/mcl_doc_basics.de.tr index 42ea11ec..8a17951d 100644 --- a/mods/HELP/mcl_doc_basics/locale/mcl_doc_basics.de.tr +++ b/mods/HELP/mcl_doc_basics/locale/mcl_doc_basics.de.tr @@ -1,4 +1,7 @@ # textdomain: mcl_doc_basics +# UNFINISHED translation! +# TODO: Add the missing strings from template.txt and complete the translation + Basics=Grundlagen Everything you need to know about MineClone 2 to get started with playing=Alles, was Sie über MineClone 2 wissen sollten, um zu spielen Advanced usage=Fortgeschrittenes @@ -29,437 +32,3 @@ How to play:=Spielanleitung • Different tools break different kinds of blocks. Try them out!=• Verschiedene Werkzeuge können verschiedene Blöcke brechen. Probieren Sie einfach! • Read entries in this help to learn the rest=• Lesen Sie Einträge in dieser Hilfe, um den Rest zu lernen • Continue playing as you wish. There's no goal. Have fun!=• Spielen Sie weiter, so wie sie wollen. Es gibt kein Ziel. Viel Spaß! -Minetest= -Minetest is a free software game engine for games based on voxel gameplay, inspired by InfiniMiner, Minecraft, and the like. Minetest was originally created by Perttu Ahola (alias “celeron55”).= -The player is thrown into a huge world made out of cubes or blocks. These cubes usually make the landscape they blocks can be removed and placed almost entirely freely. Using the collected items, new tools and other items can be crafted. Games in Minetest can, however, be much more complex than this.= -A core feature of Minetest is the built-in modding capability. Mods modify existing gameplay. They can be as simple as adding a few decorative blocks or be very complex by e.g. introducing completely new gameplay concepts, generating a completely different kind of world, and many other things.= -Minetest can be played alone or online together with multiple players. Online play will work out of the box with any mods, with no need for additional software as they are entirely provided by the server.= -Minetest is usually bundled with a simple default game, named “Minetest Game” (shown in images 1 and 2). You probably already have it. Other games for Minetest can be downloaded from the official Minetest forums .= -Minetest as well as Minetest Game are both unfinished at the moment, so please forgive us when not everything works out perfectly.= -Sneaking= -Sneaking makes you walk slower and prevents you from falling off the edge of a block.= -To sneak, hold down the sneak key (default: [Shift]). When you release it, you stop sneaking. Careful: When you release the sneak key at a ledge, you might fall!= -• Sneak: [Shift]= -Sneaking only works when you stand on solid ground, are not in a liquid and don't climb.= -If you jump while holding the sneak key, you also jump slightly higher than usual.= -Sneaking might be disabled by mods. In this case, you still walk slower by sneaking, but you will no longer be stopped at ledges.= -Controls= -These are the default controls:= -Basic movement:= -• Moving the mouse around: Look around= -• W: Move forwards= -• A: Move to the left= -• D: Move to the right= -• S: Move backwards= -• E: Sprint= -While standing on solid ground:= -• Space: Jump= -• Shift: Sneak= -While on a ladder, swimming in a liquid or fly mode is active= -• Space: Move up= -• Shift: Move down= -Extended movement (requires privileges):= -• J: Toggle fast mode, makes you run or fly fast (requires “fast” privilege)= -• K: Toggle fly mode, makes you move freely in all directions (requires “fly” privilege)= -• H: Toggle noclip mode, makes you go through walls in fly mode (requires “noclip” privilege)= -• E: Move even faster when in fast mode= -World interaction:= -• Left mouse button: Punch / mine blocks / take items= -• Right mouse button: Build or use pointed block= -• Shift+Right mouse button: Build= -• Roll mouse wheel: Select next/previous item in hotbar= -• 1-9: Select item in hotbar directly= -• Q: Drop item stack= -• Shift+Q: Drop 1 item= -• I: Show/hide inventory menu= -Inventory interaction:= -See the entry “Basics > Inventory”.= -Camera:= -• Z: Zoom (requires “zoom” privilege)= -• F7: Toggle camera mode= -• F8: Toggle cinematic mode= -Interface:= -• Esc: Open menu window (pauses in single-player mode) or close window= -• F1: Show/hide HUD= -• F2: Show/hide chat= -• F9: Toggle minimap (only works if have a map)= -• Shift+F9: Toggle minimap rotation mode= -• F10: Open/close console/chat log= -• F12: Take a screenshot= -Server interaction:= -• T: Open chat window (chat requires the “shout” privilege)= -• /: Start issuing a server command)= -Technical:= -• R: Toggle far view (disables all fog and allows viewing far away, can make game very slow)= -• +: Increase minimal viewing distance= -• -: Decrease minimal viewing distance= -• F3: Enable/disable fog= -• F5: Enable/disable debug screen which also shows your coordinates= -• F6: Only useful for developers. Enables/disables profiler= -• P: Only useful for developers. Writes current stack traces= -Players= -Players (actually: “player characters”) are the characters which users control.= -Players are living beings which occupy a space of about 1×2×1 cubes. They start with 20 health points (HP) and 10 breath points (BP).= -Players are capable of walking, sneaking, jumping, climbing, swimming, diving, mining, building, fighting and using tools and blocks.= -At a health of 0, the player dies and loses all items in the inventory. The player can just respawn in the world.= -Some blocks reduce breath. While being with the head in a block which causes drowning, the breath points are reduced by 1 for every 2 seconds. When all breath is gone, the player starts to suffer drowning damage. Breath is quickly restored in any other block.= -Damage can be disabled on any world. Without damage, players are immortal and health and breath are unimportant.= -In multi-player mode, the name of other players is written above their head.= -Items= -Items are things you can carry along and store in inventories. They can be used for crafting, smelting, building, mining, and more. Types of items include blocks, tools, weapons and items only used for crafting.= -An item stack is a collection of items of the same type which fits into a single item slot. Item stacks can be dropped on the ground. Items which drop into the same coordinates will form an item stack.= -Dropped item stacks will be collected automatically when you stand close to them.= -Tools= -Some items may serve as a tool when wielded. Any item which has some special use which can be directly used by its wielder is considered a tool.= -Mining tools are important to break all kinds of blocks. Weapons are another kind of tool. There are some other more specialized tools. Special actions of tools are usually done by right-click.= -When nothing is wielded, players use their hand which may act as tool and weapon. The hand is capable of punching and deals minimum damage.= -Many tools will wear off when using them and may eventually get destroyed. The damage is displayed in a damage bar below the tool icon. If no damage bar is shown, the tool is in mint condition. Tools may be repairable by crafting, see “Basics > Crafting”.= -Weapons= -Some items are usable as a melee weapon when wielded. Weapons share most of the properties of tools.= -Melee weapons deal damage by punching players and other animate objects. There are two ways to attack:= -• Single punch: Left-click once to deal a single punch= -• Quick punching: Hold down the left mouse button to deal quick repeated punches= -There are two core attributes of melee weapons:= -• Maximum damage: Damage which is dealt after a hit when the weapon was fully recovered)= -• Full punch interval: Time it takes for fully recovering from a punch= -A weapon only deals full damage when it has fully recovered from a previous punch. Otherwise, the weapon will deal only reduced damage. This means, quick punching is very fast, but also deals rather low damage. Note the full punch interval does not limit how fast you can attack.= -There is a rule which sometimes makes attacks impossible: Players, animate objects and weapons belong to damage groups. A weapon only deals damage to those who share at least one damage group with it. So if you're using the wrong weapon, you might not deal any damage at all.= -Pointing= -“Pointing” means looking at something in range with the crosshair. Pointing is needed for interaction, like mining, punching, using, etc. Pointable things include blocks, dropped items, players, computer enemies and objects.= -To point something, it must be in the pointing range (also just called “range”) of your wielded item. There's a default range when you are not wielding anything. A pointed thing will be outlined or highlighted (depending on your settings). Pointing is not possible with the 3rd person front camera.= -A few things can not be pointed. Most blocks are pointable. A few blocks, like air, can never be pointed. Other blocks, like liquids can only be pointed by special items.= -Camera= -You can change the camera mode by pressing [F7].= -There is also Cinematic Mode which can be toggled with [F8]. With Cinematic Mode enabled, the camera movements become more smooth. Some players don't like it, it is a matter of taste.= -By holding down [Z], you can zoom the view at your crosshair. You need the “zoom” privilege to do this.= -• Switch camera mode: [F7]= -• Toggle Cinematic Mode: [F8]= -• Zoom: [Z]= -Blocks= -The world of MineClone 2 is made entirely out of blocks (voxels, to be precise). Blocks can be added or removed with the correct tools.= -Blocks can have a wide range of different properties which determine mining times, behavior, looks, shape, and much more. Their properties include:= -• Collidable: Collidable blocks can not be passed through; players can walk on them. Non-collidable blocks can be passed through freely= -• Pointable: Pointable blocks show a wireframe or a halo box when pointed. But you will just point through non-pointable blocks. Liquids are usually non-pointable but they can be pointed at by some special tools= -• Mining properties: By which tools it can be mined, how fast and how much it wears off tools= -• Climbable: While you are at a climbable block, you won't fall and you can move up and down with the jump and sneak keys= -• Drowning damage: See the entry “Basics > Player”= -• Liquids: See the entry “Basics > Liquids”= -• Group memberships: Group memberships are used to determine mining properties, crafting, interactions between blocks and more= -Mining= -Mining (or digging) is the process of breaking blocks to remove them. To mine a block, point it and hold down the left mouse button until it breaks.= -Blocks require a mining tool to be mined. Different blocks are mined by different mining tools, and some blocks can not be mined by any tool. Blocks vary in hardness and tools vary in strength. Mining tools will wear off over time. The mining time and the tool wear depend on the block and the mining tool. The fastest way to find out how efficient your mining tools are is by just trying them out on various blocks. Any items you gather by mining will drop on the ground, ready to be collected.= -After mining, a block may leave a “drop” behind. This is a number of items you get after mining. Most commonly, you will get the block itself. There are other possibilities for a drop which depends on the block type. The following drops are possible:= -• Always drops itself (the usual case)= -• Always drops the same items= -• Drops items based on probability= -• Drops nothing= -Building= -Almost all blocks can be built (or placed). Building is very simple and has no delay.= -To build your wielded block, point at a block in the world and right-click. If this is not possible because the pointed block has a special right-click action, hold down the sneak key before right-clicking.= -Blocks can almost always be built at pointable blocks. One exception are blocks attached to the floor; these can only be built on the floor.= -Normally, blocks are built in front of the pointed side of the pointed block. A few blocks are different: When you try to build at them, they are replaced.= -Liquids= -Liquids are special dynamic blocks. Liquids like to spread and flow to their surrounding blocks. Players can swim and drown in them.= -Liquids usually come in two forms: In source form (S) and in flowing form (F).= -Liquid sources have the shape of a full cube. A liquid source will generate flowing liquids around it from time to time, and, if the liquid is renewable, it also generates liquid sources. A liquid source can sustain itself. A long it is left alone, a liquid source will normally keep its place and does not drain out.= -Flowing liquids take a sloped form. Flowing liquids spread around the world until they drain. A flowing liquid can not sustain itself and always comes from a liquid source, either directly or indirectly. Without a liquid source, a flowing liquid will eventually drain out and disappear.= -All liquids share the following properties:= -• All properties of blocks (including drowning damage= -• Renewability: Renewable liquids can create new sources= -• Flowing range: How many flowing liquids are created at maximum per liquid source, it determines how far the liquid will spread. Possible are ranges from 0 to 8. At 0, no flowing liquids will be created. Image 5 shows a liquid of flowing range 2= -• Viscosity: How slow players move through it and how slow the liquid spreads= -When those criteria are met, the open space is filled with a new liquid source of the same type (image 3).= -Swimming in a liquid is fairly straightforward: The usual direction keys for basic movement, the jump key for rising and the sneak key for sinking.= -The physics for swimming and diving in a liquid are:= -• The higher the viscosity, the slower you move= -• If you rest, you'll slowly sink= -• There is no fall damage for falling into a liquid as such= -• If you fall into a liquid, you will be slowed down on impact (but don't stop instantly). Your impact depth is determined by your speed and the liquid viscosity. For a safe high drop into a liquid, make sure there is enough liquid above the ground, otherwise you might hit the ground and take fall damage= -Liquids are often not pointable. But some special items are able to point all liquids.= -Crafting= -Crafting is the task of combining several items to form a new item.= -To craft something, you need one or more items, a crafting grid (C) and a crafting recipe. A crafting grid is like a normal inventory which can also be used for crafting. Items need to be put in a certain pattern into the crafting grid. Next to the crafting grid is an output slot (O). Here the result will appear when you placed items correctly. This is just a preview, not the actual item. Crafting grids can come in different sizes which limits the possible recipes you can craft.= -To complete the craft, take the result item from the output slot, which will consume items from the crafting grid and creates a new item. It is not possible to place items into the output slot.= -A description on how to craft an item is called a “crafting recipe”. These crafting recipes can be found in the crafting guide which you can access from the inventory menu.= -Crafting recipes consist of at least one input item and exactly one stack of output items. When performing a single craft, it will consume exactly one item from each stack of the crafting grid, unless the crafting recipe defines replacements.= -In some crafting recipes, some input items do not need to be a concrete item, instead they need to be a member of a group (see “Basics > Groups”). These recipes offer a bit more freedom in the input items. Images 6-8 show the same group-based recipe. Here, 8 items of the “stone” group are required, which is true for all of the shown items.= -Rarely, crafting recipes have replacements. This means, whenever you perform a craft, some items in the crafting grid will not be consumed, but instead will be replaced by another item.= -Cooking= -Cooking (or smelting) is a form of crafting which does not involve a crafting grid. Cooking is done with a furnace, an cookable item, a fuel item and time in order to yield a new item.= -Each fuel item has a burning time. This is the time a single item of the fuel keeps a furnace burning.= -Each cookable item requires time to be cooked. This time is specific to the item type and the item must be “on fire” for the whole cooking time to actually yield the result.= -Hotbar= -At the bottom of the screen you see some squares. This is called the “hotbar”. The hotbar allows you to quickly access the lowest row of items in the player inventory.= -You can change the selected item with the mouse wheel or the number keys.= -• Select previous item in hotbar: [Mouse wheel up]= -• Select next item in hotbar: [Mouse wheel down]= -• Select item in hotbar directly: [0]-[9]= -The selected item is also your wielded item.= -Minimap= -If you have a map item in any of your hotbar slots, you can use the minimap.= -Press [F9] to make a minimap appear on the top right. The minimap helps you to find your way around the world. Press it again to select different minimap modes and zoom levels. The minimap also shows the positions of other players.= -There are 2 minimap modes and 3 zoom levels.= -Surface mode (image 1) is a top-down view of the world, roughly resembling the colors of the blocks this world is made of. It only shows the topmost blocks, everything below is hidden, like a satellite photo. Surface mode is useful if you got lost.= -Radar mode (image 2) is more complicated. It displays the “denseness” of the area around you and changes with your height. Roughly, the more green an area is, the less “dense” it is. Black areas have many blocks. Use the radar to find caverns, hidden areas, walls and more. The rectangular shapes in image 2 clearly expose the position of a dungeon. Radar mode is only available in Creative Mode= -There are also two different rotation modes. In “square mode”, the rotation of the minimap is fixed. If you press [Shift]+[F9] to switch to “circle mode”, the minimap will instead rotate with your looking direction, so “up” is always your looking direction.= -In other games, the minimap may be disabled.= -• Toggle minimap mode: [F9]= -• Toggle minimap rotation mode: [Shift]+[F9]= -Inventories are used to store item stacks. There are other uses, such as crafting. An inventory consists of a rectangular grid of item slots. Each item slot can either be empty or hold one item stack. Item stacks can be moved freely between most slots.= -You have your own inventory which is called your “player inventory”, you can open it with the inventory key (default: [I]). The first inventory slots are also used as slots in your hotbar.= -Blocks can also have their own inventory, e.g. chests and furnaces.= -Inventory controls:= -Taking: You can take items from an occupied slot if the cursor holds nothing.= -• Left click: take entire item stack= -• Right click: take half from the item stack (rounded up)= -• Middle click: take 10 items from the item stack= -Putting: You can put items onto a slot if the cursor holds 1 or more items and the slot is either empty or contains an item stack of the same item type.= -• Left click: put entire item stack= -• Right click: put 1 item of the item stack= -• Middle click: put 10 items of the item stack= -Exchanging: You can exchange items if the cursor holds 1 or more items and the destination slot is occupied by a different item type.= -• Click: exchange item stacks= -Throwing away: If you hold an item stack and click with it somewhere outside the menu, the item stack gets thrown away into the environment.= -Quick transfer: You can quickly transfer an item stack to/from the player inventory to/from another item's inventory slot like a furnace, chest, or any other item with an inventory slot when that item's inventory is accessed. The target inventory is generally the most relevant inventory in this context.= -• Sneak+Left click: Automatically transfer item stack= -Online help= -You may want to check out these online resources related to MineClone 2.= -MineClone 2 download and forum discussion: = -Here you find the most recent version of MineClone 2 and can discuss it.= -Bug tracker: = -Report bugs here.= -Minetest links:= -Official homepage of Minetest: = -The main place to find the most recent version of Minetest, the engine used by MineClone 2.= -Community wiki: = -A community-based documentation website for Minetest. Anyone with an account can edit it.= -Minetest forums: = -A web-based discussion platform where you can discuss everything related to Minetest. This is also a place where player-made mods and games are published and discussed. The discussions are mainly in English, but there is also space for discussion in other languages.= -Chat: = -A generic Internet Relay Chat channel for everything related to Minetest where people can meet to discuss in real-time. If you do not understand IRC, see the Community Wiki for help.= -Groups= -Items, players and objects (animate and inanimate) can be members of any number of groups. Groups serve multiple purposes:= -• Crafting recipes: Slots in a crafting recipe may not require a specific item, but instead an item which is a member of a particular group, or multiple groups= -• Digging times: Diggable blocks belong to groups which are used to determine digging times. Mining tools are capable of digging blocks belonging to certain groups= -• Block behavior: Blocks may show a special behaviour and interact with other blocks when they belong to a particular group= -• Damage and armor: Objects and players have armor groups, weapons have damage groups. These groups determine damage. See also: “Basics > Weapons”= -• Other uses= -In the item help, many important groups are usually mentioned and explained.= -Glossary= -This is a list of commonly used terms:= -Controls:= -• Wielding: Holding an item in hand= -• Pointing: Looking with the crosshair at something in range= -• Dropping: Throwing an item or item stack to the ground= -• Punching: Attacking with left-click, is also used on blocks= -• Sneaking: Walking slowly while (usually) avoiding to fall over edges= -• Climbing: Moving up or down a climbable block= -Blocks:= -• Block: Cubes that the worlds are made of= -• Mining/digging: Using a mining tool to break a block= -• Building/placing: Putting a block somewhere= -• Drop: Items you get after mining a block= -• Using a block: Right-clicking a block to access its special function= -Items:= -• Item: A single thing that players can possess= -• Item stack: A collection of items of the same kind= -• Maximum stack size: Maximum amount of items in an item stack= -• Slot / inventory slot: Can hold one item stack= -• Inventory: Provides several inventory slots for storage= -• Player inventory: The main inventory of a player= -• Tool: An item which you can use to do special things with when wielding= -• Range: How far away things can be to be pointed by an item= -• Mining tool: A tool which allows to break blocks= -• Craftitem: An item which is (primarily or only) used for crafting= -Gameplay:= -• “heart”: A single health symbol, indicates 2 HP= -• “bubble”: A single breath symbol, indicates 1 BP= -• HP: Hit point (equals a half “heart”)= -• BP: Breath point, indicates breath when diving= -• Mob: Computer-controlled enemy= -• Crafting: Combining multiple items to create new ones= -• Crafting guide: A helper which shows available crafting recipes= -• Spawning: Appearing in the world= -• Respawning: Appearing again in the world after death= -• Group: Puts similar things together, often affects gameplay= -• noclip: Allows to fly through walls= -Interface= -• Hotbar: Inventory slots at the bottom= -• Statbar: Indicator made out of half-symbols, used for health and breath= -• Minimap: The map or radar at the top right= -• Crosshair: Seen in the middle, used to point at things= -Online multiplayer:= -• PvP: Player vs Player. If active, players can deal damage to each other= -• Griefing: Destroying the buildings of other players against their will= -• Protection: Mechanism to own areas of the world, which only allows the owners to modify blocks inside= -Technical terms:= -• Minetest: This game engine= -• MineClone 2: What you play right now= -• Minetest Game: A game for Minetest by the Minetest developers= -• Game: A complete playing experience to be used in Minetest; such as a game or sandbox or similar= -• Mod: A single subsystem which adds or modifies functionality; is the basic building block of games and can be used to further enhance or modify them= -• Privilege: Allows a player to do something= -• Node: Other word for “block”= -Settings= -There is a large variety of settings to configure Minetest. Pretty much every aspect can be changed that way.= -These are a few of the most important gameplay settings:= -• Damage enabled (enable_damage): Enables the health and breath attributes for all players. If disabled, players are immortal= -• Creative Mode (creative_mode): Enables sandbox-style gameplay focusing on creativity rather than a challenging gameplay. Changes include: Instant digging, easy access to almost all items, tools never wear off, etc.= -• PvP (enable_pvp): Short for “Player vs Player”. If enabled, players can deal damage to each other= -For a full list of all available settings, use the “Advanced settings” dialog in the main menu.= -Movement modes= -If you have the required privileges, you can use up to three special movement modes. Using these may be considered cheating.= -Fast mode:= -• Description: Allows you to move much faster. Hold down the the “Use” key [E] to move faster. In the client configuration, you can further customize fast mode.= -• Default key: [J]= -• Required privilege: fast= -Fly mode:= -• Description: Gravity doesn't affect you and you can move freely in all directions. Use the jump key to rise and the sneak key to sink.= -• Default key: [K]= -• Required privilege: fly= -Noclip mode:= -• Description: Allows you to move through walls. Only works when fly mode is enabled, too.= -• Default key: [H]= -• Required privilege: noclip= -Console= -With [F10] you can open and close the console. The main use of the console is to show the chat log and enter chat messages or server commands.= -Using the chat or server command key also opens the console, but it is smaller and will be closed after you sent a message.= -Use the chat to communicate with other players. This requires you to have the “shout” privilege.= -Just type in the message and hit [Enter]. Public chat messages can not begin with “/”.= -You can send private messages: Say “/msg ” in chat to send “” which can only be seen by .= -There are some special controls for the console:= -• [F10] Open/close console= -• [Enter]: Send message or command= -• [Tab]: Try to auto-complete a partially-entered player name= -• [Ctrl]+[Left]: Move cursor to the beginning of the previous word= -• [Ctrl]+[Right]: Move cursor to the beginning of the next word= -• [Ctrl]+[Backspace]: Delete previous word= -• [Ctrl]+[Delete]: Delete next word= -• [Ctrl]+[U]: Delete all text before the cursor= -• [Ctrl]+[K]: Delete all text after the cursor= -• [Page up]: Scroll up= -• [Page down]: Scroll down= -There is also an input history. Minetest saves your previous console inputs which you can quickly access later:= -• [Up]: Go to previous entry in history= -• [Down]: Go to next entry in history= -Server commands= -Server commands (also called “chat commands”) are little helpers for advanced users. You don't need to use these commands when playing. But they might come in handy to perform some more technical tasks. Server commands work both in multi-player and single-player mode.= -Server commands can be entered by players using the chat to perform a special server action. There are a few commands which can be issued by everyone, but some commands only work if you have certain privileges granted on the server. There is a small set of basic commands which are always available, other commands can be added by mods.= -To issue a command, simply type it like a chat message or press Minetest's command key (default: [/]). All commands have to begin with “/”, for example “/mods”. The Minetest command key does the same as the chat key, except that the slash is already entered.= -Commands may or may not give a response in the chat log, but errors will generally be shown in the chat. Try it for yourselves: Close this window and type in the “/mods” command. This will give you the list of available mods on this server.= -“/help all” is a very important command: You get a list of all available commands on the server, a short explanation and the allowed parameters. This command is also important because the available commands often differ per server.= -Commands are followed by zero or more parameters.= -In the command reference, you see some placeholders which you need to replace with an actual value. Here's an explanation:= -• Text in greater-than and lower-than signs (e.g. “”): Placeholder for a parameter= -• Anything in square brackets (e.g. “[text]”) is optional and can be omitted= -• Pipe or slash (e.g. “text1 | text2 | text3”): Alternation. One of multiple texts must be used (e.g. “text2”)= -• Parenthesis: (e.g. “(word1 word2) | word3”): Groups multiple words together, used for alternations= -• Everything else is to be read as literal text= -Here are some examples to illustrate the command syntax:= -• /mods: No parameters. Just enter “/mods”= -• /me : 1 parameter. You have to enter “/me ” followed by any text, e.g. “/me orders pizza”= -• /give : Two parameters. Example: “/give Player default:apple”= -• /help [all|privs|]: Valid inputs are “/help”, “/help all”, “/help privs”, or “/help ” followed by a command name, like “/help time”= -• /spawnentity [,,]: Valid inputs include “/spawnentity boats:boat” and “/spawnentity boats:boat 0,0,0”= -Some final remarks:= -• For /give and /giveme, you need an itemstring. This is an internally used unique item identifier which you may find in the item help if you have the “give” or “debug” privilege= -• For /spawnentity you need an entity name, which is another identifier= -Privileges= -Each player has a set of privileges, which differs from server to server. Your privileges determine what you can and can't do. Privileges can be granted and revoked from other players by any player who has the privilege called “privs”.= -On a multiplayer server with the default configuration, new players start with the privileges called “interact” and “shout”. The “interact” privilege is required for the most basic gameplay actions such as building, mining, using, etc. The “shout” privilege allows to chat.= -There is a small set of core privileges which you'll find on every server, other privileges might be added by mods.= -To view your own privileges, issue the server command “/privs”.= -Here are a few basic privilege-related commands:= -• /privs: Lists your privileges= -• /privs : Lists the privileges of = -• /help privs: Shows a list and description about all privileges= -Players with the “privs” privilege can modify privileges at will:= -• /grant : Grant to = -• /revoke : Revoke from = -In single-player mode, you can use “/grant singleplayer all” to unlock all abilities (which is often considered cheating).= -Light= -As the world is entirely block-based, so is the light in the world. Each block has its own brightness. The brightness of a block is expressed in a “light level” which ranges from 0 (total darkness) to 15 (as bright as the sun).= -There are two types of light: Sunlight and artificial light.= -Artificial light is emitted by luminous blocks. Artificial light has a light level from 1-14.= -Sunlight is the brightest light and always goes perfectly straight down from the sky at each time of the day. blocks. At night, the sunlight will become moonlight instead, which still provides a small amount of light. The light level of sunlight is 15.= -Blocks have 3 levels of transparency:= -• Transparent: Sunlight goes through limitless, artificial light goes through with losses= -• Semi-transparent: Sunlight and artificial light go through with losses= -• Opaque: No light passes through= -Artificial light will lose one level of brightness for each transparent or semi-transparent block it passes through, until only darkness remains (image 1).= -Sunlight will preserve its brightness as long it only passes fully transparent blocks. When it passes through a semi-transparent block, it turns to artificial light. Image 2 shows the difference.= -Note that “transparency” here only means that the block is able to carry brightness from its neighboring blocks. It is possible for a block to be transparent to light but you can't see trough the other side.= -Coordinates= -The world is a large cube. And because of this, a position in the world can be easily expressed with Cartesian coordinates. That is, for each position in the world, there are 3 values X, Y and Z.= -Like this: (5, 45, -12)= -This refers to the position where X@=5, Y@=45 and Z@=-12. The 3 letters are called “axes”: Y is for the height. X and Z are for the horizontal position.= -The values for X, Y and Z work like this:= -• If you go up, Y increases= -• If you go down, Y decreases= -• If you follow the sun, X increases= -• If you go to the reverse direction, X decreases= -• Follow the sun, then go right: Z increases= -• Follow the sun, then go left: Z decreases= -• The side length of a full cube is 1= -You can view your current position in the debug screen (open with [F5]). This is considered cheating in some games.= -Creative Mode= -Enabling Creative Mode in MineClone 2 applies the following changes:= -• You keep the things you've placed= -• Creative inventory is available to obtain most items easily= -• Hand breaks all default blocks instantly= -• Greatly increased hand pointing range= -• Mined blocks don't drop items= -• Items don't get used up= -• Tools don't wear off= -• You can eat food whenever you want= -• You can always use the minimap (including radar mode)= -Damage is not affected by Creative Mode, it needs to be disabled seperately.= -Mobs= -Mobs are the living beings in the world. This includes animals and monsters.= -Mobs appear randomly throughout the world. This is called “spawning”. Each mob kind appears on particular block types at a given light level. The height also plays a role. Peaceful mobs tend to spawn at daylight while hostile ones prefer darkness. Most mobs can spawn on any solid block but some blocks only spawn on particular blocks (like grass blocks).= -Like players, mobs have hit points and sometimes armor points, too (which means you need better weapons to deal any damage at all). Also like players, hostile mobs can attack directly or at a distance. Mobs may drop random items after they die.= -Most animals roam the world aimlessly while most hostile mobs hunt players. Animals can be fed, tamed and bred.= -Animals= -Animals are peaceful beings which roam the world aimlessly. You can feed, tame and breed them.= -Feeding:= -Each animal has its own taste for food and doesn't just accept any food. To feed, hold an item in your hand and rightclick the animal.= -Animals are attraced to the food they like and follow you as long you hold the food item in hand.= -Feeding an animal has three uses: Taming, healing and breeding.= -Feeding heals animals instantly, depending on the quality of the food item.= -Taming:= -A few animals can be tamed. You can generally do more things with tamed animals and use other items on them. For example, tame horses can be saddled and tame wolves fight on your side.= -Breeding:= -When you have fed an animal up to its maximum health, then feed it again, you will activate “Love Mode” and many hearts appear around the animal.= -Two animals of the same species will start to breed if they are in Love Mode and close to each other. Soon a baby animal will pop up.= -Baby animals:= -Baby animals are just like their adult couterparts, but they can't be fed, tamed or bred and don't drop anything when they die. They grow to adults after a short time.= -Hunger= -Hunger affects your health and your ability to sprint. Hunger is not in effect when damage is disabled.= -Core hunger rules:= -• You start with 20/20 hunger points (more points @= less hungry)= -• Actions like combat, jumping, sprinting, etc. decrease hunger points= -• Food restores hunger points= -• If your hunger bar decreases, you're hungry= -• At 18-20 hunger points, you regenerate 1 HP every 4 seconds= -• At 6 hunger points or less, you can't sprint= -• At 0 hunger points, you lose 1 HP every 4 seconds (down to 1 HP)= -• Poisonous food decreases your health= -Details:= -You have 0-20 hunger points, indicated by 20 drumstick half-icons above the hotbar. You also have an invisible attribute: Saturation.= -Hunger points reflect how full you are while saturation points reflect how long it takes until you're hungry again.= -Each food item increases both your hunger level as well your saturation.= -Food with a high saturation boost has the advantage that it will take longer until you get hungry again.= -A few food items might induce food poisoning by chance. When you're poisoned, the health and hunger symbols turn sickly green. Food poisoning drains your health by 1 HP per second, down to 1 HP. Food poisoning also drains your saturation. Food poisoning goes away after a while or when you drink milk.= -You start with 5 saturation points. The maximum saturation is equal to your current hunger level. So with 20 hunger points your maximum saturation is 20. What this means is that food items which restore many saturation points are more effective the more hunger points you have. This is because at low hunger levels, a lot of the saturation boost will be lost due to the low saturation cap.= -If your saturation reaches 0, you're hungry and start to lose hunger points. Whenever you see the hunger bar decrease, it is a good time to eat.= -Saturation decreases by doing things which exhaust you (highest exhaustion first):= -• Regenerating 1 HP= -• Suffering food poisoning= -• Sprint-jumping= -• Sprinting= -• Attacking= -• Taking damage= -• Swimming= -• Jumping= -• Mining a block= -Other actions, like walking, do not exaust you.= diff --git a/mods/MISC/mcl_commands/locale/mcl_commands.de.tr b/mods/MISC/mcl_commands/locale/mcl_commands.de.tr new file mode 100644 index 00000000..a29371fa --- /dev/null +++ b/mods/MISC/mcl_commands/locale/mcl_commands.de.tr @@ -0,0 +1,20 @@ +# textdomain: mcl_commands +Players can't be killed right now, damage has been disabled.=Spieler können jetzt nicht getötet werden, der Schaden wurde deaktiviert. +Player @1 does not exist.=Spieler @1 existiert nicht. +You are already dead=Sie sind schon tot +@1 is already dead=@1 ist schon tot +@1 committed suicide.=@1 beging Selbstmord. +@1 was killed by @2.=@1 wurde von @2 getötet. +[]=[] +Kill player or yourself=Spieler oder sich selbst töten +Can use /say=Kann „/say“ benutzen += +Send a message to every player=Nachricht an alle Spieler senden +Invalid usage, see /help say.=Falsche Benutzung, siehe „/help say“. +,, =,, +Set node at given position=Node (Block) an der gegebenen Position platzieren +Invalid node=Unültiger Node +@1 spawned.=@1 gespawnt. +Invalid parameters (see /help setblock)=Ungültige Parameter (siehe „/help setblock”) +List bans=Bannliste anzeigen +Ban list: @1=Bannliste: @1 diff --git a/mods/MISC/mcl_privs/locale/mcl_privs.de.tr b/mods/MISC/mcl_privs/locale/mcl_privs.de.tr new file mode 100644 index 00000000..c5b79976 --- /dev/null +++ b/mods/MISC/mcl_privs/locale/mcl_privs.de.tr @@ -0,0 +1,2 @@ +# textdomain: mcl_privs +Can place and use advanced blocks like mob spawners, command blocks and barriers.=Kann fortgeschrittene Blöcke wie Mobspawner, Befehlsblöcke und Barrieren platzieren und benutzen. diff --git a/mods/MISC/mcl_wip/description.txt b/mods/MISC/mcl_wip/description.txt index 581de998..d90115ac 100644 --- a/mods/MISC/mcl_wip/description.txt +++ b/mods/MISC/mcl_wip/description.txt @@ -1 +1 @@ -Development mod for MineClone 2 which add a “WIP” comment to items which are considered to be very unfinished. +Development mod for MineClone 2 which add a “WIP” (Work In Progress) comment to items which are considered to be very unfinished. diff --git a/mods/MISC/mcl_wip/init.lua b/mods/MISC/mcl_wip/init.lua index 640cc376..0b042e21 100644 --- a/mods/MISC/mcl_wip/init.lua +++ b/mods/MISC/mcl_wip/init.lua @@ -1,3 +1,5 @@ +-- Mod to mark WIP (Work In Progress) content + local S = minetest.get_translator("mcl_wip") local wip_items = { diff --git a/mods/MISC/mcl_wip/locale/mcl_wip.de.tr b/mods/MISC/mcl_wip/locale/mcl_wip.de.tr new file mode 100644 index 00000000..9cf3b6f0 --- /dev/null +++ b/mods/MISC/mcl_wip/locale/mcl_wip.de.tr @@ -0,0 +1,3 @@ +# textdomain: mcl_wip +(WIP)=(in Arbeit) +(Temporary)=(temporär) diff --git a/mods/MISC/mcl_wip/locale/template.txt b/mods/MISC/mcl_wip/locale/template.txt index ab7fadde..b7427364 100644 --- a/mods/MISC/mcl_wip/locale/template.txt +++ b/mods/MISC/mcl_wip/locale/template.txt @@ -1,3 +1,4 @@ # textdomain: mcl_wip +# WIP means “Work in Progress” (WIP)= (Temporary)= diff --git a/mods/PLAYER/mcl_hunger/locale/de.txt b/mods/PLAYER/mcl_hunger/locale/de.txt deleted file mode 100644 index 3a06d93f..00000000 --- a/mods/PLAYER/mcl_hunger/locale/de.txt +++ /dev/null @@ -1 +0,0 @@ -Satiation = Sättigung diff --git a/mods/PLAYER/mcl_hunger/locale/mcl_hunger.de.tr b/mods/PLAYER/mcl_hunger/locale/mcl_hunger.de.tr new file mode 100644 index 00000000..7a04e091 --- /dev/null +++ b/mods/PLAYER/mcl_hunger/locale/mcl_hunger.de.tr @@ -0,0 +1,8 @@ +# textdomain: mcl_hunger +@1 succumbed to the poison.=@1 erlag dem Gift. +Food=Nahrung +Saturation=Sättigung +%s: %.1f/%d=%s: %.1f +Exhaust.=Erschöpf. +%s: %d/%d=%s: %d/%d +@1 starved to death.=%1 verhungerte. diff --git a/mods/PLAYER/mcl_hunger/locale/pt.txt b/mods/PLAYER/mcl_hunger/locale/pt.txt deleted file mode 100644 index 44fe4521..00000000 --- a/mods/PLAYER/mcl_hunger/locale/pt.txt +++ /dev/null @@ -1 +0,0 @@ -Satiation = Saciedade diff --git a/mods/PLAYER/mcl_hunger/locale/template.txt b/mods/PLAYER/mcl_hunger/locale/template.txt index 37a578dc..d745ab08 100644 --- a/mods/PLAYER/mcl_hunger/locale/template.txt +++ b/mods/PLAYER/mcl_hunger/locale/template.txt @@ -1 +1,8 @@ -Satiation +# textdomain: mcl_hunger +@1 succumbed to the poison.= +Food= +Saturation= +%s: %.1f/%d= +Exhaust.= +%s: %d/%d= +@1 starved to death.= diff --git a/mods/PLAYER/mcl_playerplus/locale/mcl_playerplus.de.tr b/mods/PLAYER/mcl_playerplus/locale/mcl_playerplus.de.tr new file mode 100644 index 00000000..44d486d0 --- /dev/null +++ b/mods/PLAYER/mcl_playerplus/locale/mcl_playerplus.de.tr @@ -0,0 +1,3 @@ +# textdomain: mcl_playerplus +@1 suffocated to death.=@1 erstickte zu Tode. +@1 was prickled to death by a cactus.=@1 wurde von einem Kaktus zu Tode gepiekst. diff --git a/mods/PLAYER/mcl_skins/init.lua b/mods/PLAYER/mcl_skins/init.lua index fac543e3..401ba160 100644 --- a/mods/PLAYER/mcl_skins/init.lua +++ b/mods/PLAYER/mcl_skins/init.lua @@ -157,7 +157,7 @@ end -- command to set player skin (usually for custom skins) minetest.register_chatcommand("setskin", { - params = "[] []", + params = S("[] []"), description = S("Select player skin of yourself or another player"), privs = {}, func = function(name, param) diff --git a/mods/PLAYER/mcl_skins/locale/fr.po b/mods/PLAYER/mcl_skins/locale/fr.po deleted file mode 100644 index 30d8e36e..00000000 --- a/mods/PLAYER/mcl_skins/locale/fr.po +++ /dev/null @@ -1,51 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# -msgid "" -msgstr "" -"Project-Id-Version: \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-07-29 07:11+0200\n" -"PO-Revision-Date: 2017-07-29 07:17+0200\n" -"Last-Translator: fat115 \n" -"Language-Team: \n" -"Language: fr\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 1.8.12\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" - -#: init.lua -msgid "Select Player Skin:" -msgstr "Sélectionner l'apparence du joueur :" - -#: init.lua -msgid "Name: " -msgstr "Nom : " - -#: init.lua -msgid "Author: " -msgstr "Auteur : " - -#: init.lua -msgid "Admin command to set player skin" -msgstr "Commande admin pour définir l'apparence du joueur" - -#: init.lua -msgid "'s skin set to" -msgstr ", apparence définie pour" - -#: init.lua -msgid "Set player skin" -msgstr "Définir l'apparence du joueur" - -#: init.lua -msgid "Close" -msgstr "Fermer" - -#: init.lua -msgid "[MOD] Simple Skins loaded" -msgstr "[MOD] Simple Skins chargé" diff --git a/mods/PLAYER/mcl_skins/locale/it.po b/mods/PLAYER/mcl_skins/locale/it.po deleted file mode 100644 index d4701316..00000000 --- a/mods/PLAYER/mcl_skins/locale/it.po +++ /dev/null @@ -1,52 +0,0 @@ -# simple_skin . -# Copyright (C) 2018 -# This file is distributed under the same license as the PACKAGE package. -# Stefano Peris , 2018. -# Github: -# -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-02-21 07:29+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: Stefano Peris \n" -"Language-Team: \n" -"Language: it\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 1.8.12\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" - -#: init.lua -msgid "Select Player Skin:" -msgstr "Seleziona la skin del giocatore" - -#: init.lua -msgid "Name: " -msgstr "Nome" - -#: init.lua -msgid "Author: " -msgstr "Autore" - -#: init.lua -msgid "Admin command to set player skin" -msgstr "Comando di admin per impostare la skin del giocatore" - -#: init.lua -msgid "'s skin set to" -msgstr ", la skin è impostata su" - -#: init.lua -msgid "Set player skin" -msgstr "Imposta la skin del giocatore" - -#: init.lua -msgid "Close" -msgstr "Chiudi" - -#: init.lua -msgid "[MOD] Simple Skins loaded" -msgstr "[MOD] Skins semplici caricate" diff --git a/mods/PLAYER/mcl_skins/locale/mcl_skins.de.tr b/mods/PLAYER/mcl_skins/locale/mcl_skins.de.tr new file mode 100644 index 00000000..8f9b488d --- /dev/null +++ b/mods/PLAYER/mcl_skins/locale/mcl_skins.de.tr @@ -0,0 +1,13 @@ +# textdomain: mcl_skins +[] []=[] [] +Select player skin of yourself or another player=Spieleraussehen von Ihnen oder einem anderen Spieler auswählen +Insufficient or wrong parameters=Unzureichende oder falsche Parameter +Player @1 not online!=Spieler @1 ist nicht online! +You need the “server” privilege to change the skin of other players!=Sie brauchen das „server“-Privileg, um das Aussehen anderer Spieler zu ändern! +Invalid skin number! Valid numbers: 0 to @1=Ungültige Aussehens-Nummer! Gültige Nummern: 0 bis @1 +Your skin has been set to: @1=Ihr Aussehen wurde geändert auf: @1 +Your skin has been set to: @1 (@2)=Ihr Aussehen wurde geändert auf: @1 (@2) +Skin of @1 set to: @2 (@3)=Aussehen von @1 gesetzt auf: @2 (@3) +Select player skin:=Spieleraussehen wählen: +@1 (@2)=@1 (@2) +Name: @1=Name: @1 diff --git a/mods/PLAYER/mcl_skins/locale/mcl_skins.fr.tr b/mods/PLAYER/mcl_skins/locale/mcl_skins.fr.tr new file mode 100644 index 00000000..fe321cfb --- /dev/null +++ b/mods/PLAYER/mcl_skins/locale/mcl_skins.fr.tr @@ -0,0 +1,16 @@ +# textdomain: mcl_skins +# UNFINISHED translation! +# TODO: Remove the # sign from the translations below and add the missing translations. + +#[] []= +#Select player skin of yourself or another player= +#Insufficient or wrong parameters= +#Player @1 not online!= +#You need the “server” privilege to change the skin of other players!= +#Invalid skin number! Valid numbers: 0 to @1= +#Your skin has been set to: @1= +#Your skin has been set to: @1 (@2)= +#Skin of @1 set to: @2 (@3)= +Select player skin:=Sélectionner l'apparence du joueur : +#@1 (@2)= +Name: @1=Nom : @1 diff --git a/mods/PLAYER/mcl_skins/locale/mcl_skins.ms.tr b/mods/PLAYER/mcl_skins/locale/mcl_skins.ms.tr new file mode 100644 index 00000000..58946f60 --- /dev/null +++ b/mods/PLAYER/mcl_skins/locale/mcl_skins.ms.tr @@ -0,0 +1,16 @@ +# textdomain: mcl_skins +# UNFINISHED translation! +# TODO: Remove the # sign from the translations below and add the missing translations. + +[] []= +Select player skin of yourself or another player= +Insufficient or wrong parameters= +Player @1 not online!= +You need the “server” privilege to change the skin of other players!= +Invalid skin number! Valid numbers: 0 to @1= +Your skin has been set to: @1= +Your skin has been set to: @1 (@2)= +Skin of @1 set to: @2 (@3)= +Select player skin:=Pilih Kulit Pemain: +@1 (@2)= +Name: @1=Nama: @1 diff --git a/mods/PLAYER/mcl_skins/locale/ms.po b/mods/PLAYER/mcl_skins/locale/ms.po deleted file mode 100644 index bba5982d..00000000 --- a/mods/PLAYER/mcl_skins/locale/ms.po +++ /dev/null @@ -1,51 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# -msgid "" -msgstr "" -"Project-Id-Version: \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-07-29 07:11+0200\n" -"PO-Revision-Date: 2018-02-14 01:23+0800\n" -"Language-Team: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 2.0.6\n" -"Last-Translator: MuhdNurHidayat (MNH48) \n" -"Plural-Forms: nplurals=1; plural=0;\n" -"Language: ms\n" - -#: init.lua -msgid "Select Player Skin:" -msgstr "Pilih Kulit Pemain:" - -#: init.lua -msgid "Name: " -msgstr "Nama: " - -#: init.lua -msgid "Author: " -msgstr "Pencipta: " - -#: init.lua -msgid "Admin command to set player skin" -msgstr "Perintah pentadbir untuk menetapkan kulit pemain" - -#: init.lua -msgid "'s skin set to" -msgstr " telah ditukarkan kulitnya kepada" - -#: init.lua -msgid "Set player skin" -msgstr "Tetapkan kulit pemain" - -#: init.lua -msgid "Close" -msgstr "Tutup" - -#: init.lua -msgid "[MOD] Simple Skins loaded" -msgstr "[MODS] Simple Skins telah dimuatkan" diff --git a/mods/PLAYER/mcl_skins/locale/template.pot b/mods/PLAYER/mcl_skins/locale/template.pot deleted file mode 100644 index 36282e43..00000000 --- a/mods/PLAYER/mcl_skins/locale/template.pot +++ /dev/null @@ -1,50 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-07-29 07:11+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"Language: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=CHARSET\n" -"Content-Transfer-Encoding: 8bit\n" - -#: init.lua -msgid "Select Player Skin:" -msgstr "" - -#: init.lua -msgid "Name: " -msgstr "" - -#: init.lua -msgid "Author: " -msgstr "" - -#: init.lua -msgid "Admin command to set player skin" -msgstr "" - -#: init.lua -msgid "'s skin set to" -msgstr "" - -#: init.lua -msgid "Set player skin" -msgstr "" - -#: init.lua -msgid "Close" -msgstr "" - -#: init.lua -msgid "[MOD] Simple Skins loaded" -msgstr "" diff --git a/mods/PLAYER/mcl_skins/locale/template.txt b/mods/PLAYER/mcl_skins/locale/template.txt new file mode 100644 index 00000000..c683fa4e --- /dev/null +++ b/mods/PLAYER/mcl_skins/locale/template.txt @@ -0,0 +1,13 @@ +# textdomain: mcl_skins +[] []= +Select player skin of yourself or another player= +Insufficient or wrong parameters= +Player @1 not online!= +You need the “server” privilege to change the skin of other players!= +Invalid skin number! Valid numbers: 0 to @1= +Your skin has been set to: @1= +Your skin has been set to: @1 (@2)= +Skin of @1 set to: @2 (@3)= +Select player skin:= +@1 (@2)= +Name: @1= diff --git a/mods/PLAYER/mcl_spawn/locale/mcl_spawn.de.tr b/mods/PLAYER/mcl_spawn/locale/mcl_spawn.de.tr new file mode 100644 index 00000000..e30a7165 --- /dev/null +++ b/mods/PLAYER/mcl_spawn/locale/mcl_spawn.de.tr @@ -0,0 +1,4 @@ +# textdomain: mcl_spawn +New respawn position set!=Neue Wiedereinstiegsposition gesetzt! +Respawn position cleared!=Wiedereinstiegsposition gelöscht! +Your spawn bed was missing or blocked.=Ihr Startbett fehlte oder war blockiert. From 7be98bfce0f5ba035df8ea916075edeb85673cf8 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Thu, 14 Mar 2019 04:47:56 +0100 Subject: [PATCH 144/737] German translation: Anvils, banners --- mods/ITEMS/mcl_anvils/locale/mcl_anvils.de.tr | 13 +++ mods/ITEMS/mcl_banners/init.lua | 33 +++---- .../mcl_banners/locale/mcl_banners.de.tr | 76 +++++++++++++++ mods/ITEMS/mcl_banners/locale/template.txt | 96 +++++++++++-------- mods/ITEMS/mcl_banners/patterncraft.lua | 86 +++++++++-------- 5 files changed, 206 insertions(+), 98 deletions(-) create mode 100644 mods/ITEMS/mcl_anvils/locale/mcl_anvils.de.tr create mode 100644 mods/ITEMS/mcl_banners/locale/mcl_banners.de.tr diff --git a/mods/ITEMS/mcl_anvils/locale/mcl_anvils.de.tr b/mods/ITEMS/mcl_anvils/locale/mcl_anvils.de.tr new file mode 100644 index 00000000..0142414c --- /dev/null +++ b/mods/ITEMS/mcl_anvils/locale/mcl_anvils.de.tr @@ -0,0 +1,13 @@ +# textdomain: mcl_anvils +Set Name=Name setzen +Anvil=Amboss +The anvil allows you to repair tools and armor, and to give names to items. It has a limited durability, however. Don't let it fall on your head, it could be quite painful!=Der Amboss ermöglicht es, Werkzeuge und Rüstung zu reparieren und Gegenstände zu benennen. Er hat jedoch eine begrenzte Lebensdauer. Lassen Sie ihn nicht auf Ihren Kopf fallen, das könnte ziemlich schmerzhaft sein! +To use an anvil, rightclick it. An anvil has 2 input slots (on the left) and one output slot.=Um einen Amboss zu benutzen, rechtsklicken Sie auf ihn. Ein Amboss hat 2 Eingabeplätze (links) und einen Ausgabeplatz (rechts). +To rename items, put an item stack in one of the item slots while keeping the other input slot empty. Type in a name, hit enter or “Set Name”, then take the renamed item from the output slot.=Um Gegenstände umzubenennen, platzieren Sie einen Gegenstand in einen der Eingangsplätze und lassen Sie den anderen frei. Geben Sie einen Namen ein und drücken Sie die Eingabetaste oder „Name setzen”, dann nehmen Sie den umbenannten Gegenstand an sich. +There are two possibilities to repair tools (and armor):=Es gibt zwei Möglichkeiten, Werkzeuge (und Rüstung) zu reparieren: +• Tool + Tool: Place two tools of the same type in the input slots. The “health” of the repaired tool is the sum of the “health” of both input tools, plus a 12% bonus.=• Werkzeug + Werkzeug: Platzieren sie zwei gleiche Werkzeuge in die Eingangsplätze. Der Zustand des reparierten Werkzeugs ist die Summe des Zustands beider Eingangswerkzeuge, plus einem Bonus von 12%. +• Tool + Material: Some tools can also be repaired by combining them with an item that it's made of. For example, iron pickaxes can be repaired with iron ingots. This repairs the tool by 25%.=• Werkzeug + Material: Einige Werkzeuge können auch repariert werden, indem man sie mit einem Gegenstand, aus dem sie gemacht worden sind, kombiniert. Zum Beispiel können Eisenspitzhacken mit Eisenbarren repariert werden. Dadurch wird das Werkzeug um 25% repariert. +Armor counts as a tool. It is possible to repair and rename a tool in a single step.=Rüstung zählt als Werkzeug. Es ist möglich, ein Werkzeug in einem Arbeitsschritt zu reparieren und zu benennen. +The anvil has limited durability and 3 damage levels: undamaged, slightly damaged and very damaged. Each time you repair or rename something, there is a 12% chance the anvil gets damaged. Anvils also have a chance of being damaged when they fall by more than 1 block. If a very damaged anvil is damaged again, it is destroyed.=Der Amboss hat begrenze Lebensdauer und 3 Schadensstufen: Kein Schaden, leicht beschädigt, und stark beschädigt. Jedes mal, wenn Sie etwas reparieren oder umbenennen, gibt es eine 12%-ige Chance, dass der Amboss Schaden nimmt. Ambosse können auch beschädigt werden, wenn sie um mehr als 1 Block fallen. Wenn ein sehr beschädigter Amboss erneut beschädigt wird, wird er zerstört. +Slightly Damaged Anvil=Leicht beschädigter Amboss +Very Damaged Anvil=Stark beschädigter Amboss diff --git a/mods/ITEMS/mcl_banners/init.lua b/mods/ITEMS/mcl_banners/init.lua index e908db9d..fc871511 100644 --- a/mods/ITEMS/mcl_banners/init.lua +++ b/mods/ITEMS/mcl_banners/init.lua @@ -1,4 +1,5 @@ local S = minetest.get_translator("mcl_banners") +local N = function(s) return s end local node_sounds if minetest.get_modpath("mcl_sounds") then @@ -16,22 +17,22 @@ mcl_banners = {} mcl_banners.colors = { -- Format: -- [ID] = { banner description, wool, unified dyes color group, overlay color, dye, color name for emblazonings } - ["unicolor_white"] = {"white", S("White Banner"), "mcl_wool:white", "#FFFFFF", "mcl_dye:white", "White" }, - ["unicolor_darkgrey"] = {"grey", S("Grey Banner"), "mcl_wool:grey", "#303030", "mcl_dye:dark_grey", "Grey" }, - ["unicolor_grey"] = {"silver", S("Light Grey Banner"), "mcl_wool:silver", "#5B5B5B", "mcl_dye:grey", "Light Grey" }, - ["unicolor_black"] = {"black", S("Black Banner"), "mcl_wool:black", "#000000", "mcl_dye:black", "Black" }, - ["unicolor_red"] = {"red", S("Red Banner"), "mcl_wool:red", "#BC0000", "mcl_dye:red", "Red" }, - ["unicolor_yellow"] = {"yellow", S("Yellow Banner"), "mcl_wool:yellow", "#E6CD00", "mcl_dye:yellow", "Yellow" }, - ["unicolor_dark_green"] = {"green", S("Green Banner"), "mcl_wool:green", "#006000", "mcl_dye:dark_green", "Green" }, - ["unicolor_cyan"] = {"cyan", S("Cyan Banner"), "mcl_wool:cyan", "#00ACAC", "mcl_dye:cyan", "Cyan" }, - ["unicolor_blue"] = {"blue", S("Blue Banner"), "mcl_wool:blue", "#0000AC", "mcl_dye:blue", "Blue" }, - ["unicolor_red_violet"] = {"magenta", S("Magenta Banner"), "mcl_wool:magenta", "#AC007C", "mcl_dye:magenta", "Magenta"}, - ["unicolor_orange"] = {"orange", S("Orange Banner"), "mcl_wool:orange", "#E67300", "mcl_dye:orange", "Orange" }, - ["unicolor_violet"] = {"purple", S("Purple Banner"), "mcl_wool:purple", "#6400AC", "mcl_dye:violet", "Violet" }, - ["unicolor_brown"] = {"brown", S("Brown Banner"), "mcl_wool:brown", "#603000", "mcl_dye:brown", "Brown" }, - ["unicolor_pink"] = {"pink", S("Pink Banner"), "mcl_wool:pink", "#DE557C", "mcl_dye:pink", "Pink" }, - ["unicolor_lime"] = {"lime", S("Lime Banner"), "mcl_wool:lime", "#30AC00", "mcl_dye:green", "Lime" }, - ["unicolor_light_blue"] = {"light_blue", S("Light Blue Banner"), "mcl_wool:light_blue", "#4040CF", "mcl_dye:lightblue", "Light Blue" }, + ["unicolor_white"] = {"white", S("White Banner"), "mcl_wool:white", "#FFFFFF", "mcl_dye:white", N("White") }, + ["unicolor_darkgrey"] = {"grey", S("Grey Banner"), "mcl_wool:grey", "#303030", "mcl_dye:dark_grey", N("Grey") }, + ["unicolor_grey"] = {"silver", S("Light Grey Banner"), "mcl_wool:silver", "#5B5B5B", "mcl_dye:grey", N("Light Grey") }, + ["unicolor_black"] = {"black", S("Black Banner"), "mcl_wool:black", "#000000", "mcl_dye:black", N("Black") }, + ["unicolor_red"] = {"red", S("Red Banner"), "mcl_wool:red", "#BC0000", "mcl_dye:red", N("Red") }, + ["unicolor_yellow"] = {"yellow", S("Yellow Banner"), "mcl_wool:yellow", "#E6CD00", "mcl_dye:yellow", N("Yellow") }, + ["unicolor_dark_green"] = {"green", S("Green Banner"), "mcl_wool:green", "#006000", "mcl_dye:dark_green", N("Green") }, + ["unicolor_cyan"] = {"cyan", S("Cyan Banner"), "mcl_wool:cyan", "#00ACAC", "mcl_dye:cyan", N("Cyan") }, + ["unicolor_blue"] = {"blue", S("Blue Banner"), "mcl_wool:blue", "#0000AC", "mcl_dye:blue", N("Blue") }, + ["unicolor_red_violet"] = {"magenta", S("Magenta Banner"), "mcl_wool:magenta", "#AC007C", "mcl_dye:magenta", N("Magenta")}, + ["unicolor_orange"] = {"orange", S("Orange Banner"), "mcl_wool:orange", "#E67300", "mcl_dye:orange", N("Orange") }, + ["unicolor_violet"] = {"purple", S("Purple Banner"), "mcl_wool:purple", "#6400AC", "mcl_dye:violet", N("Violet") }, + ["unicolor_brown"] = {"brown", S("Brown Banner"), "mcl_wool:brown", "#603000", "mcl_dye:brown", N("Brown") }, + ["unicolor_pink"] = {"pink", S("Pink Banner"), "mcl_wool:pink", "#DE557C", "mcl_dye:pink", N("Pink") }, + ["unicolor_lime"] = {"lime", S("Lime Banner"), "mcl_wool:lime", "#30AC00", "mcl_dye:green", N("Lime") }, + ["unicolor_light_blue"] = {"light_blue", S("Light Blue Banner"), "mcl_wool:light_blue", "#4040CF", "mcl_dye:lightblue", N("Light Blue") }, } local colors_reverse = {} diff --git a/mods/ITEMS/mcl_banners/locale/mcl_banners.de.tr b/mods/ITEMS/mcl_banners/locale/mcl_banners.de.tr new file mode 100644 index 00000000..6e8812c8 --- /dev/null +++ b/mods/ITEMS/mcl_banners/locale/mcl_banners.de.tr @@ -0,0 +1,76 @@ +# textdomain: mcl_banners +White Banner=Weißes Banner +White=weiß +Grey Banner=Graues Banner +Grey=grau +Light Grey Banner=Hellgraues Banner +Light Grey=hellgrau +Black Banner=Schwarzes Banner +Black=schwarz +Red Banner=Rotes Banner +Red=rot +Yellow Banner=Gelbes Banner +Yellow=gelb +Green Banner=Grünes Banner +Green=grün +Cyan Banner=Türkises Banner +Cyan=türkis +Blue Banner=Blaues Banner +Blue=blau +Magenta Banner=Magenta Banner +Magenta=magenta +Orange Banner=Orange Banner +Orange=orange +Purple Banner=Violettes Banner +Purple=violett +Brown Banner=Braunes Banner +Brown=braun +Pink Banner=Rosanes Banner +Pink=rosa +Lime Banner=Lindgrünes Banner +Lime=lindgrün +Light Blue Banner=Hellblaues Banner +Light Blue=hellblau +Banners are tall colorful decorative blocks. They can be placed on the floor and at walls. Banners can be emblazoned with a variety of patterns using a lot of dye in crafting.=Banner sind hohe farbige dekorative Blöcke. Sie können auf dem Boden und an Wände platziert werden. Banner können mit einer Vielzahl von Mustern mit Hilfe von Farbstoffen in der Fertigung bemalt werden. +Use crafting to draw a pattern on top of the banner. Emblazoned banners can be emblazoned again to combine various patterns. You can draw up to 12 layers on a banner that way. If the banner includes a gradient, only 3 layers are possible.=Benutzen Sie die Fertigung, um ein Muster auf einem Banner zu malen. Bemalte Banner können erneut bemalt werden, um verschiedene Muster zu ergeben. Sie können bis zu 12 Schichten auf einen Banner malen. Wenn ein Banner einen Farbverlauf hat, sind nur 3 Schichten möglich. +You can copy the pattern of a banner by placing two banners of the same color in the crafting grid—one needs to be emblazoned, the other one must be clean. Finally, you can use a banner on a cauldron with water to wash off its top-most layer.=Sie können ein Muster eines Banners kopieren, indem Sie zwei Banner der selben Grundfarbe in das Fertigungsgitter platzieren: Das eine muss bemalt sein, das andere leer. Außerdem können Sie ein Banner an einem Kessel mit Wasser benutzen, um seine oberste Schicht abzuwaschen. +@1 Bordure=Bord (@1) +@1 Bricks=Ziegel (@1) +@1 Roundel=Kugel (@1) +@1 Creeper Charge=Creeper-Figur (@1) +@1 Saltire=Andreaskreuz (@1) +@1 Bordure Indented=Gewellter Bord (@1) +@1 Per Bend Inverted=Schräglinke umgekehrte Teilung (@1) +@1 Per Bend Sinister Inverted=Schrägrechte umgekehrte Teilung (@1) +@1 Per Bend=Schräglinke Teilung (@1) +@1 Per Bend Sinister=Schrägrechte Teilung (@1) +@1 Flower Charge=Blumenfigur (@1) +@1 Gradient=Farbverlauf (@1) +@1 Base Gradient=Fußfarbverlauf (@1) +@1 Per Fess Inverted=Umgekehrte Teilung (@1) +@1 Per Fess=Teilung (@1) +@1 Per Pale=Spaltung (@1) +@1 Per Pale Inverted=Umgekehrte Spaltung (@1) +@1 Thing Charge=Dingsfigur (@1) +@1 Lozenge=Raute (@1) +@1 Skull Charge=Totenkopffigur (@1) +@1 Paly=Pfähle (@1) +@1 Base Dexter Canton=Rechtes Untereck (@1) +@1 Base Sinister Canton=Linkes Untereck (@1) +@1 Chief Dexter Canton=Rechtes Obereck (@1) +@1 Chief Sinister Canton=Linkes Obereck (@1) +@1 Cross=Kreuz (@1) +@1 Base=Fuß (@1) +@1 Pale=Pfahl (@1) +@1 Bend Sinister=Schräglinksbalken (@1) +@1 Bend=Schrägbalken (@1) +@1 Pale Dexter=Rechte Flanke (@1) +@1 Fess=Balken (@1) +@1 Pale Sinister=Linke Flanke (@1) +@1 Chief=Haupt (@1) +@1 Chevron=Sparren (@1) +@1 Chevron Inverted=Gegensparren (@1) +@1 Base Indented=Gezackter Fuß (@1) +@1 Chief Indented=Gezacktes Haupt (@1) +And one additional layer=Und eine zusätzliche Schicht +And @1 additional layers=Und @1 zusätzliche Schichten diff --git a/mods/ITEMS/mcl_banners/locale/template.txt b/mods/ITEMS/mcl_banners/locale/template.txt index 868ae20b..e69629d9 100644 --- a/mods/ITEMS/mcl_banners/locale/template.txt +++ b/mods/ITEMS/mcl_banners/locale/template.txt @@ -1,60 +1,76 @@ # textdomain: mcl_banners White Banner= +White= Grey Banner= +Grey= Light Grey Banner= +Light Grey= Black Banner= +Black= Red Banner= +Red= Yellow Banner= +Yellow= Green Banner= +Green= Cyan Banner= +Cyan= Blue Banner= +Blue= Magenta Banner= +Magenta= Orange Banner= +Orange= Purple Banner= +Violet= Brown Banner= +Brown= Pink Banner= +Pink= Lime Banner= +Lime= Light Blue Banner= +Light Blue= Banners are tall colorful decorative blocks. They can be placed on the floor and at walls. Banners can be emblazoned with a variety of patterns using a lot of dye in crafting.= Use crafting to draw a pattern on top of the banner. Emblazoned banners can be emblazoned again to combine various patterns. You can draw up to 12 layers on a banner that way. If the banner includes a gradient, only 3 layers are possible.= You can copy the pattern of a banner by placing two banners of the same color in the crafting grid—one needs to be emblazoned, the other one must be clean. Finally, you can use a banner on a cauldron with water to wash off its top-most layer.= -%s Bordure= -%s Bricks= -%s Roundel= -%s Creeper Charge= -%s Saltire= -%s Bordure Indented= -%s Per Bend Inverted= -%s Per Bend Sinister Inverted= -%s Per Bend= -%s Per Bend Sinister= -%s Flower Charge= -%s Gradient= -%s Base Gradient= -%s Per Fess Inverted= -%s Per Fess= -%s Per Pale= -%s Per Pale Inverted= -%s Thing Charge= -%s Lozenge= -%s Skull Charge= -%s Paly= -%s Base Dexter Canton= -%s Base Sinister Canton= -%s Chief Dexter Canton= -%s Chief Sinister Canton= -%s Cross= -%s Base= -%s Pale= -%s Bend Sinister= -%s Bend= -%s Pale Dexter= -%s Fess= -%s Pale Sinister= -%s Chief= -%s Chevron= -%s Chevron Inverted= -%s Base Indented= -%s Chief Indented= -And one addional layer= -And %d addional layers= +@1 Bordure= +@1 Bricks= +@1 Roundel= +@1 Creeper Charge= +@1 Saltire= +@1 Bordure Indented= +@1 Per Bend Inverted= +@1 Per Bend Sinister Inverted= +@1 Per Bend= +@1 Per Bend Sinister= +@1 Flower Charge= +@1 Gradient= +@1 Base Gradient= +@1 Per Fess Inverted= +@1 Per Fess= +@1 Per Pale= +@1 Per Pale Inverted= +@1 Thing Charge= +@1 Lozenge= +@1 Skull Charge= +@1 Paly= +@1 Base Dexter Canton= +@1 Base Sinister Canton= +@1 Chief Dexter Canton= +@1 Chief Sinister Canton= +@1 Cross= +@1 Base= +@1 Pale= +@1 Bend Sinister= +@1 Bend= +@1 Pale Dexter= +@1 Fess= +@1 Pale Sinister= +@1 Chief= +@1 Chevron= +@1 Chevron Inverted= +@1 Base Indented= +@1 Chief Indented= +And one additional layer= +And @1 additional layer(s)= diff --git a/mods/ITEMS/mcl_banners/patterncraft.lua b/mods/ITEMS/mcl_banners/patterncraft.lua index 5518f883..3f161267 100644 --- a/mods/ITEMS/mcl_banners/patterncraft.lua +++ b/mods/ITEMS/mcl_banners/patterncraft.lua @@ -1,4 +1,5 @@ local S = minetest.get_translator("mcl_banners") +local N = function(s) return s end -- Pattern crafting. This file contains the code for crafting all the -- emblazonings you can put on the banners. It's quite complicated; @@ -19,99 +20,99 @@ local d = "group:dye" -- dye local e = "" -- empty slot (one of them must contain the banner) local patterns = { ["border"] = { - name = S("%s Bordure"), + name = N("@1 Bordure"), { d, d, d }, { d, e, d }, { d, d, d }, }, ["bricks"] = { - name = S("%s Bricks"), + name = N("@1 Bricks"), type = "shapeless", { e, "mcl_core:brick_block", d }, }, ["circle"] = { - name = S("%s Roundel"), + name = N("@1 Roundel"), { e, e, e }, { e, d, e }, { e, e, e }, }, ["creeper"] = { - name = S("%s Creeper Charge"), + name = N("@1 Creeper Charge"), type = "shapeless", { e, "mcl_heads:creeper", d }, }, ["cross"] = { - name = S("%s Saltire"), + name = N("@1 Saltire"), { d, e, d }, { e, d, e }, { d, e, d }, }, ["curly_border"] = { - name = S("%s Bordure Indented"), + name = N("@1 Bordure Indented"), type = "shapeless", { e, "mcl_core:vine", d }, }, ["diagonal_up_left"] = { - name = S("%s Per Bend Inverted"), + name = N("@1 Per Bend Inverted"), { e, e, e }, { d, e, e }, { d, d, e }, }, ["diagonal_up_right"] = { - name = S("%s Per Bend Sinister Inverted"), + name = N("@1 Per Bend Sinister Inverted"), { e, e, e }, { e, e, d }, { e, d, d }, }, ["diagonal_right"] = { - name = S("%s Per Bend"), + name = N("@1 Per Bend"), { e, d, d }, { e, e, d }, { e, e, e }, }, ["diagonal_left"] = { - name = S("%s Per Bend Sinister"), + name = N("@1 Per Bend Sinister"), { d, d, e }, { d, e, e }, { e, e, e }, }, ["flower"] = { - name = S("%s Flower Charge"), + name = N("@1 Flower Charge"), type = "shapeless", { e, "mcl_flowers:oxeye_daisy", d }, }, ["gradient"] = { - name = S("%s Gradient"), + name = N("@1 Gradient"), { d, e, d }, { e, d, e }, { e, d, e }, }, ["gradient_up"] = { - name = S("%s Base Gradient"), + name = N("@1 Base Gradient"), { e, d, e }, { e, d, e }, { d, e, d }, }, ["half_horizontal_bottom"] = { - name = S("%s Per Fess Inverted"), + name = N("@1 Per Fess Inverted"), { e, e, e }, { d, d, d }, { d, d, d }, }, ["half_horizontal"] = { - name = S("%s Per Fess"), + name = N("@1 Per Fess"), { d, d, d }, { d, d, d }, { e, e, e }, }, ["half_vertical"] = { - name = S("%s Per Pale"), + name = N("@1 Per Pale"), { d, d, e }, { d, d, e }, { d, d, e }, }, ["half_vertical_right"] = { - name = S("%s Per Pale Inverted"), + name = N("@1 Per Pale Inverted"), { e, d, d }, { e, d, d }, { e, d, d }, @@ -119,126 +120,126 @@ local patterns = { ["thing"] = { -- Symbol used for the “Thing”: U+1F65D 🙝 - name = S("%s Thing Charge"), + name = N("@1 Thing Charge"), type = "shapeless", -- TODO: Replace with enchanted golden apple { e, "mcl_core:apple_gold", d }, }, ["rhombus"] = { - name = S("%s Lozenge"), + name = N("@1 Lozenge"), { e, d, e }, { d, e, d }, { e, d, e }, }, ["skull"] = { - name = S("%s Skull Charge"), + name = N("@1 Skull Charge"), type = "shapeless", { e, "mcl_heads:wither_skeleton", d }, }, ["small_stripes"] = { - name = S("%s Paly"), + name = N("@1 Paly"), { d, e, d }, { d, e, d }, { e, e, e }, }, ["square_bottom_left"] = { - name = S("%s Base Dexter Canton"), + name = N("@1 Base Dexter Canton"), { e, e, e }, { e, e, e }, { d, e, e }, }, ["square_bottom_right"] = { - name = S("%s Base Sinister Canton"), + name = N("@1 Base Sinister Canton"), { e, e, e }, { e, e, e }, { e, e, d }, }, ["square_top_left"] = { - name = S("%s Chief Dexter Canton"), + name = N("@1 Chief Dexter Canton"), { d, e, e }, { e, e, e }, { e, e, e }, }, ["square_top_right"] = { - name = S("%s Chief Sinister Canton"), + name = N("@1 Chief Sinister Canton"), { e, e, d }, { e, e, e }, { e, e, e }, }, ["straight_cross"] = { - name = S("%s Cross"), + name = N("@1 Cross"), { e, d, e }, { d, d, d }, { e, d, e }, }, ["stripe_bottom"] = { - name = S("%s Base"), + name = N("@1 Base"), { e, e, e }, { e, e, e }, { d, d, d }, }, ["stripe_center"] = { - name = S("%s Pale"), + name = N("@1 Pale"), { e, d, e }, { e, d, e }, { e, d, e }, }, ["stripe_downleft"] = { - name = S("%s Bend Sinister"), + name = N("@1 Bend Sinister"), { e, e, d }, { e, d, e }, { d, e, e }, }, ["stripe_downright"] = { - name = S("%s Bend"), + name = N("@1 Bend"), { d, e, e }, { e, d, e }, { e, e, d }, }, ["stripe_left"] = { - name = S("%s Pale Dexter"), + name = N("@1 Pale Dexter"), { d, e, e }, { d, e, e }, { d, e, e }, }, ["stripe_middle"] = { - name = S("%s Fess"), + name = N("@1 Fess"), { e, e, e }, { d, d, d }, { e, e, e }, }, ["stripe_right"] = { - name = S("%s Pale Sinister"), + name = N("@1 Pale Sinister"), { e, e, d }, { e, e, d }, { e, e, d }, }, ["stripe_top"] = { - name = S("%s Chief"), + name = N("@1 Chief"), { d, d, d }, { e, e, e }, { e, e, e }, }, ["triangle_bottom"] = { - name = S("%s Chevron"), + name = N("@1 Chevron"), { e, e, e }, { e, d, e }, { d, e, d }, }, ["triangle_top"] = { - name = S("%s Chevron Inverted"), + name = N("@1 Chevron Inverted"), { d, e, d }, { e, d, e }, { e, e, e }, }, ["triangles_bottom"] = { - name = S("%s Base Indented"), + name = N("@1 Base Indented"), { e, e, e }, { d, e, d }, { e, d, e }, }, ["triangles_top"] = { - name = S("%s Chief Indented"), + name = N("@1 Chief Indented"), { e, d, e }, { d, e, d }, { e, e, e }, @@ -267,14 +268,15 @@ mcl_banners.make_advanced_banner_description = function(description, layers) -- Layer text line. local color = mcl_banners.colors[layers[l].color][6] local pattern_name = patterns[layers[l].pattern].name - -- The pattern name is a format string (e.g. “%s Base”) - table.insert(layerstrings, string.format(pattern_name, color)) + -- The pattern name is a format string + -- (e.g. “@1 Base” → “Yellow Base”) + table.insert(layerstrings, S(pattern_name, S(color))) end -- Warn about missing information if #layers == max_layer_lines + 1 then - table.insert(layerstrings, S("And one addional layer")) + table.insert(layerstrings, S("And one additional layer")) elseif #layers > max_layer_lines + 1 then - table.insert(layerstrings, string.format(S("And %d addional layers"), #layers - max_layer_lines)) + table.insert(layerstrings, S("And @1 additional layers", #layers - max_layer_lines)) end -- Final string concatenations: Just a list of strings From e01ed8ab2413191444165edd479fee8f76711bd4 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Thu, 14 Mar 2019 06:20:05 +0100 Subject: [PATCH 145/737] German translation: mcl_beds to mcl_chests --- mods/ITEMS/mcl_beds/api.lua | 8 ++--- mods/ITEMS/mcl_beds/locale/mcl_beds.de.tr | 32 +++++++++++++++++++ mods/ITEMS/mcl_beds/locale/template.txt | 4 +-- mods/ITEMS/mcl_books/init.lua | 2 +- mods/ITEMS/mcl_books/locale/mcl_books.de.tr | 25 +++++++++++++++ mods/ITEMS/mcl_books/locale/template.txt | 2 ++ mods/ITEMS/mcl_bows/locale/mcl_bows.de.tr | 11 +++++++ mods/ITEMS/mcl_buckets/init.lua | 8 ++--- .../mcl_buckets/locale/mcl_buckets.de.tr | 13 ++++++++ mods/ITEMS/mcl_buckets/locale/template.txt | 8 ++--- mods/ITEMS/mcl_cake/locale/mcl_cake.de.tr | 10 ++++++ mods/ITEMS/mcl_cauldrons/init.lua | 4 +-- .../mcl_cauldrons/locale/mcl_cauldrons.de.tr | 10 ++++++ mods/ITEMS/mcl_chests/init.lua | 8 +++-- mods/ITEMS/mcl_chests/locale/mcl_chests.de.tr | 28 ++++++++++++++++ mods/ITEMS/mcl_chests/locale/template.txt | 3 +- 16 files changed, 154 insertions(+), 22 deletions(-) create mode 100644 mods/ITEMS/mcl_beds/locale/mcl_beds.de.tr create mode 100644 mods/ITEMS/mcl_books/locale/mcl_books.de.tr create mode 100644 mods/ITEMS/mcl_bows/locale/mcl_bows.de.tr create mode 100644 mods/ITEMS/mcl_buckets/locale/mcl_buckets.de.tr create mode 100644 mods/ITEMS/mcl_cake/locale/mcl_cake.de.tr create mode 100644 mods/ITEMS/mcl_cauldrons/locale/mcl_cauldrons.de.tr create mode 100644 mods/ITEMS/mcl_chests/locale/mcl_chests.de.tr diff --git a/mods/ITEMS/mcl_beds/api.lua b/mods/ITEMS/mcl_beds/api.lua index 6c94121b..7d76b76e 100644 --- a/mods/ITEMS/mcl_beds/api.lua +++ b/mods/ITEMS/mcl_beds/api.lua @@ -35,13 +35,13 @@ end local beddesc = S("Beds allow you to sleep at night and make the time pass faster.") local beduse = S("To use a bed, stand close to it and right-click the bed to sleep in it. Sleeping only works when the sun sets, at night or during a thunderstorm. The bed must also be clear of any danger.") -if minetest.settings:get_bool("enable_bed_respawn") == false then - beddesc = beddesc .. "\n" .. S("In local folklore, legends are told of other worlds where setting the start point for your next life would be possible. But this world is not one of them.") +if true or minetest.settings:get_bool("enable_bed_respawn") == false then + beddesc = beddesc .. "\n" .. S("You have heard of other worlds in which a bed would set the start point for your next life. But this world is not one of them.") else beddesc = beddesc .. "\n" .. S("By using a bed, you set the starting point for your next life. If you die, you will start your next life at this bed, unless it is obstructed or destroyed.") end -if minetest.settings:get_bool("enable_bed_night_skip") == false then - beddesc = beddesc .. "\n" .. S("In this strange world, going to bed won't skip the night, but you can skip thunderstorms.") +if true or minetest.settings:get_bool("enable_bed_night_skip") == false then + beddesc = beddesc .. "\n" .. S("In this world, going to bed won't skip the night, but it will skip thunderstorms.") else beddesc = beddesc .. "\n" .. S("Sleeping allows you to skip the night. The night is skipped when all players in this world went to sleep. The night is skipped after sleeping for a few seconds. Thunderstorms can be skipped in the same manner.") end diff --git a/mods/ITEMS/mcl_beds/locale/mcl_beds.de.tr b/mods/ITEMS/mcl_beds/locale/mcl_beds.de.tr new file mode 100644 index 00000000..c496249b --- /dev/null +++ b/mods/ITEMS/mcl_beds/locale/mcl_beds.de.tr @@ -0,0 +1,32 @@ +# textdomain: mcl_beds +Beds allow you to sleep at night and make the time pass faster.=Mit Betten können Sie in der Nacht schlafen und die Zeit schneller verstreichen lassen. +To use a bed, stand close to it and right-click the bed to sleep in it. Sleeping only works when the sun sets, at night or during a thunderstorm. The bed must also be clear of any danger.=Um ein Bett zu benutzen, stellen Sie sich direkt davor und rechtsklicken Sie darauf, um darin zu schlafen. Schlafen funktioniert nur, wenn die Sonne untergeht, in der Nacht oder während eines Gewittersturms. Das Bett muss außerdem fern von Gefahren sein. +You have heard of other worlds in which a bed would set the start point for your next life. But this world is not one of them.=Sie hörten von anderen Welten, in denen ein Bett den Startpunkt für Ihr nächstes Leben setzen würde. Aber diese Welt ist keine solche. +By using a bed, you set the starting point for your next life. If you die, you will start your next life at this bed, unless it is obstructed or destroyed.=Indem Sie ein Bett benutzen, setzen Sie den Startpunkt Ihres nächsten Lebens. Wenn Sie sterben, werden Sie Ihr nächstes Leben auf diesem Bett beginnen, es sei denn, es ist blockiert oder zerstört. +In this world, going to bed won't skip the night, but it will skip thunderstorms.=In dieser Welt können mit dem Bett Nächte nicht übersprungen werden, nur Gewitterstürme. +Sleeping allows you to skip the night. The night is skipped when all players in this world went to sleep. The night is skipped after sleeping for a few seconds. Thunderstorms can be skipped in the same manner.=Mit Schlaf können Sie die Nacht überspringen. Die Nacht wird übersprungen, wenn alle Spieler in dieser Welt sich schlafen gelegt haben. Die Nacht wird dann nach ein paar Sekunden übersprungen. Gewitterstürme werden auf die gleiche Weise übersprungen. +Red Bed=Rotes Bett +Blue Bed=Blaues Bett +Cyan Bed=Türkises Bett +Grey Bed=Graues Bett +Light Grey Bed=Hellgraues Bett +Black Bed=Schwarzes Bett +Yellow Bed=Gelbes Bett +Green Bed=Grünes Bett +Magenta Bed=Magenta Bett +Orange Bed=Orange Bett +Purple Bed=Violettes Bett +Brown Bed=Braunes Bett +Pink Bed=Rosanes Bett +Lime Bed=Lindgrünes Bett +Light Blue Bed=Hellblaues Bett +White Bed=Weißes Bett +You can't sleep, the bed's too far away!=Sie können nicht schlafen, das Bett ist zu weit weg! +This bed is already occupied!=Dieses Bett ist schon belegt! +You have to stop moving before going to bed!=Sie müssen anhalten, bevor Sie zu Bett gehen! +You can't sleep now, monsters are nearby!=Sie können jetzt nicht schlafen, Monster sind in der Nähe! +You can't sleep, the bed is obstructed!=Sie können nicht schlafen, das Bett ist blockiert! +It's too dangerous to sleep here!=Es ist zu gefährlich, hier zu schlafen! +New respawn position set! But you can only sleep at night or during a thunderstorm.=Neue Wiedereinstiegsposition gesetzt! Aber Sie können nur nachts oder während eines Gewittersturms schlafen. +You can only sleep at night or during a thunderstorm.=Sie können nur nachts oder während eines Gewittersturms schlafen. +New respawn position set!=Neue Wiedereinstiegsposition gesetzt! diff --git a/mods/ITEMS/mcl_beds/locale/template.txt b/mods/ITEMS/mcl_beds/locale/template.txt index 191489e3..13901c19 100644 --- a/mods/ITEMS/mcl_beds/locale/template.txt +++ b/mods/ITEMS/mcl_beds/locale/template.txt @@ -1,9 +1,9 @@ # textdomain: mcl_beds Beds allow you to sleep at night and make the time pass faster.= To use a bed, stand close to it and right-click the bed to sleep in it. Sleeping only works when the sun sets, at night or during a thunderstorm. The bed must also be clear of any danger.= -In local folklore, legends are told of other worlds where setting the start point for your next life would be possible. But this world is not one of them.= +You have heard of other worlds in which a bed would set the start point for your next life. But this world is not one of them. By using a bed, you set the starting point for your next life. If you die, you will start your next life at this bed, unless it is obstructed or destroyed.= -In this strange world, going to bed won't skip the night, but you can skip thunderstorms.= +In this world, going to bed won't skip the night, but it will skip thunderstorms.= Sleeping allows you to skip the night. The night is skipped when all players in this world went to sleep. The night is skipped after sleeping for a few seconds. Thunderstorms can be skipped in the same manner.= Red Bed= Blue Bed= diff --git a/mods/ITEMS/mcl_books/init.lua b/mods/ITEMS/mcl_books/init.lua index 2c8d4afc..645033b8 100644 --- a/mods/ITEMS/mcl_books/init.lua +++ b/mods/ITEMS/mcl_books/init.lua @@ -109,7 +109,7 @@ end -- Book and Quill minetest.register_craftitem("mcl_books:writable_book", { - description = "Book and Quill", + description = S("Book and Quill"), _doc_items_longdesc = S("This item can be used to write down some notes."), _doc_items_usagehelp = S("Hold it in the hand, then rightclick to read the current notes and edit then. You can edit the text as often as you like. You can also sign the book which turns it into a written book which you can stack, but it can't be edited anymore.").."\n".. S("A book can hold up to 4500 characters. The title length is limited to 64 characters."), diff --git a/mods/ITEMS/mcl_books/locale/mcl_books.de.tr b/mods/ITEMS/mcl_books/locale/mcl_books.de.tr new file mode 100644 index 00000000..261c099a --- /dev/null +++ b/mods/ITEMS/mcl_books/locale/mcl_books.de.tr @@ -0,0 +1,25 @@ +# textdomain: mcl_books +Book=Buch +Books are used to make bookshelves and book and quills.=Bücher werden zur Herstellung von Bücherregalen und Büchern mit Federkiel gebraucht. +“@1”=„@1“ +Copy of “@1”=Kopie von „@1“ +Copy of Copy of “@1”=Kopie von Kopie von „@1“ +Tattered Book=Zerfleddertes Buch +by @1=von @1 +Sign=Signieren +Done=Fertig +This item can be used to write down some notes.=Dies kann benutzt werden, um ein paar Notizen aufzuschreiben. +Hold it in the hand, then rightclick to read the current notes and edit then. You can edit the text as often as you like. You can also sign the book which turns it into a written book which you can stack, but it can't be edited anymore.=Halten Sie es in der Hand, dann rechtsklicken Sie, um die Notizen zu sehen zu zu ändern. Sie können den Text beliebig ändern. Sie können das Buch auch signieren und in ein geschriebenes Buch verwandeln, das gestapelt, aber nicht mehr geändert werden kann. +A book can hold up to 4500 characters. The title length is limited to 64 characters.=Ein Buch kann bis zu 4500 Zeichen enthalten. Die Titellänge ist begrenzt auf 64 Zeichen. +Enter book title:=Buchtitel eingeben: +Note: The book will no longer@nbe editable after signing.=Anmerkung: Das Buch kann nach@nder Signierung nicht länger@nbearbeitet werden. +Sign and Close=Signieren und schließen +Cancel=Abbrechen +Nameless Book=Namenloses Buch +Written Book=Geschriebenes Buch +Written books contain some text written by someone. They can be read and copied, but not edited.=Geschriebene Bücher enthalten etwas Text, den jemand geschrieben hat. Sie können gelesen und kopiert, aber nicht geändert werden. +Hold it in your hand, then rightclick to read the book.=Halten Sie es in Ihrer Hand und rechtsklicken Sie, um das Buch zu lesen. +To copy the text of the written book, place it into the crafting grid together with a book and quill (or multiple of those) and craft. The written book will not be consumed. Copies of copies can not be copied.=Um den Text zu kopieren, platzieren Sie es ins Fertigungsgitter mit einem Buch mit Federkiel (oder mehreren) und fertigen Sie die Kopie an. Das geschriebene Buch bleibt. Kopien von Kopien können nicht kopiert werden. +Bookshelf=Bücherregal +Bookshelves are used for decoration.=Bücherregale werden zur Dekoration benutzt. +Book and Quill=Buch und Federkiel diff --git a/mods/ITEMS/mcl_books/locale/template.txt b/mods/ITEMS/mcl_books/locale/template.txt index 1d7ee963..acf614cd 100644 --- a/mods/ITEMS/mcl_books/locale/template.txt +++ b/mods/ITEMS/mcl_books/locale/template.txt @@ -6,6 +6,7 @@ Copy of “@1”= Copy of Copy of “@1”= Tattered Book= by @1= +# as in “to sign a book” Sign= Done= This item can be used to write down some notes.= @@ -23,3 +24,4 @@ Hold it in your hand, then rightclick to read the book.= To copy the text of the written book, place it into the crafting grid together with a book and quill (or multiple of those) and craft. The written book will not be consumed. Copies of copies can not be copied.= Bookshelf= Bookshelves are used for decoration.= +Book and Quill= diff --git a/mods/ITEMS/mcl_bows/locale/mcl_bows.de.tr b/mods/ITEMS/mcl_bows/locale/mcl_bows.de.tr new file mode 100644 index 00000000..4ca45c0e --- /dev/null +++ b/mods/ITEMS/mcl_bows/locale/mcl_bows.de.tr @@ -0,0 +1,11 @@ +# textdomain: mcl_bows +Arrow=Pfeil +Arrows are ammunition for bows and dispensers.=Pfeile sind Munition für Bögen und Werfer. +An arrow fired from a bow has a regular damage of 1-9. At full charge, there's a 20% chance of a critical hit dealing 10 damage instead. An arrow fired from a dispenser always deals 3 damage.=Ein Bogen von einem Pfeil richtet regulär 1-9 Schaden an. Mit voller Zugkraft gibt es eine 20%-ige Chance auf einen kritischen Treffer mit 10 Schaden. Ein Pfeil aus einem Werfer richtet immer 3 Schaden an. +Arrows might get stuck on solid blocks and can be retrieved again. They are also capable of pushing wooden buttons.=Pfeile können in festen Blöcken stecken bleiben und wieder aufgesammelt werden. Sie können auf Holzknöpfe drücken. +To use arrows as ammunition for a bow, just put them anywhere in your inventory, they will be used up automatically. To use arrows as ammunition for a dispenser, place them in the dispenser's inventory. To retrieve an arrow that sticks in a block, simply walk close to it.=Um Pfeile als Munition für dne Bogen zu benutzen, platzieren Sie sie einfach irgendwo im Inventar, sie werden automatisch benutzt. Um Pfeile als Munition für Werfer zu benutzen, platzieren Sie sie ins Inventar eines Werferr. Um einen steckengebliebenen Pfeil aufzusammeln, gehen Sie einfach zu ihm hin. +Bow=Bogen +Bows are ranged weapons to shoot arrows at your foes.=Bogen sind Fernwaffen, um Pfeile auf Ihre Feinde zu schießen. +The speed and damage of the arrow increases the longer you charge. The regular damage of the arrow is between 1 and 9. At full charge, there's also a 20% of a critical hit, dealing 10 damage instead.=Die Geschwindigkeit und der Schaden des Bogens erhöht sich, je länger sie den Bogen spannen. Der reguläre Schaden des Pfeiles ist zwischen 1 und 9. Ist der Bogen voll gespannt, gibt es eine 20%-ig Change für einen kritischen Treffer, der 10 Schaden anrichtet. +To use the bow, you first need to have at least one arrow anywhere in your inventory (unless in Creative Mode). Hold down the right mouse button to charge, release to shoot.=Um den Bogen zu benutzen, muss sich im Inventar mindestens ein Pfeil befinden (außer im Kreativmodus). Halten sie die rechte Maustaste gedrückt zum Spannen, lassen Sie sie los zum Schießen. +Bow=Bogen diff --git a/mods/ITEMS/mcl_buckets/init.lua b/mods/ITEMS/mcl_buckets/init.lua index e17a9863..9b25c21a 100644 --- a/mods/ITEMS/mcl_buckets/init.lua +++ b/mods/ITEMS/mcl_buckets/init.lua @@ -186,7 +186,7 @@ end minetest.register_craftitem("mcl_buckets:bucket_empty", { description = S("Empty Bucket"), _doc_items_longdesc = S("A bucket can be used to collect and release liquids."), - _doc_items_usagehelp = S("Punch a liquid source to collect the liquid. With the filled bucket, you can right-click somewhere to empty the bucket which will create a liquid source at the position you've clicked at."), + _doc_items_usagehelp = S("Punch a liquid source to collect it. You can then use the filled bucket to place the liquid somewhere else."), inventory_image = "bucket.png", stack_max = 16, @@ -306,7 +306,7 @@ if mod_mcl_core then "bucket_lava.png", S("Lava Bucket"), S("A bucket can be used to collect and release liquids. This one is filled with hot lava, safely contained inside. Use with caution."), - S("Choose a place where you want to empty the bucket, then get in a safe spot somewhere above it. Be prepared to run away when something goes wrong as the lava will soon start to flow after placing. To empty the bucket (which places a lava source), right-click on your chosen place.") + S("Get in a safe distance and place the bucket to empty it and create a lava source at this spot. Don't burn yourself!") ) -- Water bucket @@ -317,7 +317,7 @@ if mod_mcl_core then "bucket_water.png", S("Water Bucket"), S("A bucket can be used to collect and release liquids. This one is filled with water."), - S("Right-click on any block to empty the bucket and put a water source on this spot."), + S("Place it to empty the bucket and create a water source."), function(pos, placer) -- Check protection local placer_name = "" @@ -359,7 +359,7 @@ if mod_mclx_core then "bucket_river_water.png", S("River Water Bucket"), S("A bucket can be used to collect and release liquids. This one is filled with river water."), - S("Right-click on any block to empty the bucket and put a river water source on this spot."), + S("Place it to empty the bucket and create a river water source."), function(pos, placer) -- Check protection local placer_name = "" diff --git a/mods/ITEMS/mcl_buckets/locale/mcl_buckets.de.tr b/mods/ITEMS/mcl_buckets/locale/mcl_buckets.de.tr new file mode 100644 index 00000000..26bb4ca4 --- /dev/null +++ b/mods/ITEMS/mcl_buckets/locale/mcl_buckets.de.tr @@ -0,0 +1,13 @@ +# textdomain: mcl_buckets +Empty Bucket=Leerer Eimer +A bucket can be used to collect and release liquids.=Ein Eimer kann benutzt werden, um Flüssigkeiten aufzusammeln und wieder freizulassen. +Punch a liquid source to collect it. You can then use the filled bucket to place the liquid somewhere else.=Hauen Sie auf eine Flüssigkeitsquelle, um sie aufzusammeln. Sie können den vollen Eimer dann benutzen, um die Flüssigkeit woanders zu platzieren. +Lava Bucket=Lavaeimer +A bucket can be used to collect and release liquids. This one is filled with hot lava, safely contained inside. Use with caution.=Ein Eimer kann benutzt werden, um Flüssigkeiten aufzusammeln und wieder freizulassen. Dieser hier ist voller heißer Lava, die sicher in ihm verstaut ist. Mit Vorsicht zu handhaben. +Get in a safe distance and place the bucket to empty it and create a lava source at this spot. Don't burn yourself!=Gehen Sie zu einer sicheren Stelle und platzieren Sie den Eimer, um ihn zu leeren und eine Lavaquelle an dieser Stelle zu erzeugen. Verbrennen Sie sich nicht! +Water Bucket=Wassereimer +A bucket can be used to collect and release liquids. This one is filled with water.=Ein Eimer kann benutzt werden, um Flüssigkeiten aufzusammeln und wieder freizulassen. Dieser hier ist mit Wasser gefüllt. +Place it to empty the bucket and create a water source.=Platzieren Sie ihn, um den Eimer zu leeren und eine Wasserquelle zu erzeugen. +River Water Bucket=Flusswassereimer +A bucket can be used to collect and release liquids. This one is filled with river water.=Ein Eimer kann benutzt werden, um Flüssigkeiten aufzusammeln und wieder freizulassen. Dieser hier ist mit Flusswasser gefüllt. +Place it to empty the bucket and create a river water source.=Platzieren Sie ihn, um den Eimer zu leeren und eine Flusswasserquelle zu erzeugen. diff --git a/mods/ITEMS/mcl_buckets/locale/template.txt b/mods/ITEMS/mcl_buckets/locale/template.txt index f9a23d40..6ad479fe 100644 --- a/mods/ITEMS/mcl_buckets/locale/template.txt +++ b/mods/ITEMS/mcl_buckets/locale/template.txt @@ -1,13 +1,13 @@ # textdomain: mcl_buckets Empty Bucket= A bucket can be used to collect and release liquids.= -Punch a liquid source to collect the liquid. With the filled bucket, you can right-click somewhere to empty the bucket which will create a liquid source at the position you've clicked at.= +Punch a liquid source to collect it. You can then use the filled bucket to place the liquid somewhere else.= Lava Bucket= A bucket can be used to collect and release liquids. This one is filled with hot lava, safely contained inside. Use with caution.= -Choose a place where you want to empty the bucket, then get in a safe spot somewhere above it. Be prepared to run away when something goes wrong as the lava will soon start to flow after placing. To empty the bucket (which places a lava source), right-click on your chosen place.= +Get in a safe distance and place the bucket to empty it and create a lava source at this spot. Don't burn yourself!= Water Bucket= A bucket can be used to collect and release liquids. This one is filled with water.= -Right-click on any block to empty the bucket and put a water source on this spot.= +Place it to empty the bucket and create a water source.= River Water Bucket= A bucket can be used to collect and release liquids. This one is filled with river water.= -Right-click on any block to empty the bucket and put a river water source on this spot.= +Place it to empty the bucket and create a river water source.= diff --git a/mods/ITEMS/mcl_cake/locale/mcl_cake.de.tr b/mods/ITEMS/mcl_cake/locale/mcl_cake.de.tr new file mode 100644 index 00000000..204f0d4a --- /dev/null +++ b/mods/ITEMS/mcl_cake/locale/mcl_cake.de.tr @@ -0,0 +1,10 @@ +# textdomain: mcl_cake +Cake=Kuchen +Cakes can be placed and eaten to restore hunger points. A cake has 7 slices. Each slice restores 2 hunger points and 0.4 saturation points. Cakes will be destroyed when dug or when the block below them is broken.=Kuchen können platziert und gegessen werden, um Hungerpunkte wiederherzustellen. Ein Kuchen hat 7 Stücke. Jedes Stück stellt 2 Hungerpunkte und 0,4 Sättigungspunkte wieder her. Kuchen werden zerstört, wenn sie abgebaut werden oder der Block unter ihnen bricht. +Place the cake anywhere, then rightclick it to eat a single slice. You can't eat from the cake when your hunger bar is full.=Platzieren Sie ihn irgendwo, dann rechtsklicken Sie auf ihn, um ein Stück zu essen. Sie können nicht vom Kuchen naschen, wenn ihre Hungerleiste voll ist. +Cake (6 Slices Left)=Kuchen (6 Stücke übrig) +Cake (5 Slices Left)=Kuchen (5 Stücke übrig) +Cake (4 Slices Left)=Kuchen (4 Stücke übrig) +Cake (3 Slices Left)=Kuchen (3 Stücke übrig) +Cake (2 Slices Left)=Kuchen (2 Stücke übrig) +Cake (1 Slice Left)=Kuchen (1 Stück übrig) diff --git a/mods/ITEMS/mcl_cauldrons/init.lua b/mods/ITEMS/mcl_cauldrons/init.lua index aee2a314..68c507ce 100644 --- a/mods/ITEMS/mcl_cauldrons/init.lua +++ b/mods/ITEMS/mcl_cauldrons/init.lua @@ -45,8 +45,8 @@ end -- Empty cauldron minetest.register_node("mcl_cauldrons:cauldron", { description = S("Cauldron"), - _doc_items_longdesc = S("Cauldrons are used to store water and slowly fill up under rain. They can also be used to wash off banners."), - _doc_items_usagehelp = S("Place a water pucket into the cauldron to fill it with water. Place an empty bucket on a full cauldron to retrieve the water. Place a water bottle into the cauldron to fill the cauldron to one third with water. Place a glass bottle in a cauldron with water to retrieve one third of the water. Use an emblazoned banner on a cauldron with water to wash off its top layer."), + _doc_items_longdesc = S("Cauldrons are used to store water and slowly fill up under rain."), + _doc_items_usagehelp = S("Place a water pucket into the cauldron to fill it with water. Place an empty bucket on a full cauldron to retrieve the water. Place a water bottle into the cauldron to fill the cauldron to one third with water. Place a glass bottle in a cauldron with water to retrieve one third of the water."), wield_image = "mcl_cauldrons_cauldron.png", inventory_image = "mcl_cauldrons_cauldron.png", drawtype = "nodebox", diff --git a/mods/ITEMS/mcl_cauldrons/locale/mcl_cauldrons.de.tr b/mods/ITEMS/mcl_cauldrons/locale/mcl_cauldrons.de.tr new file mode 100644 index 00000000..0e3a4c41 --- /dev/null +++ b/mods/ITEMS/mcl_cauldrons/locale/mcl_cauldrons.de.tr @@ -0,0 +1,10 @@ +# textdomain: mcl_cauldron +Cauldron=Kessel +Cauldrons are used to store water and slowly fill up under rain.=Kessel werden benutzt, um Wasser zu lagern, im Regen werden sie langsam aufgefüllt. +Place a water pucket into the cauldron to fill it with water. Place an empty bucket on a full cauldron to retrieve the water. Place a water bottle into the cauldron to fill the cauldron to one third with water. Place a glass bottle in a cauldron with water to retrieve one third of the water.=Platzieren Sie einen Wassereinmer in den Kessel, um ihn mit Wasser zu füllen. Platzieren Sie einen leeren Eimer auf einen vollen Kessel, um das Wasser aufzusammeln. Platzieren Sie eine Wasserflasche in den Kessel, um ihn zu einem Drittel mit Wasser zu füllen. +Cauldron (1/3 Water)=Kessel (1/3 Wasser) +Cauldron (2/3 Water)=Kessel (2/3 Wasser) +Cauldron (3/3 Water)=Kessel (3/3 Wasser) +Cauldron (1/3 River Water)=Kessel (1/3 Wasser) +Cauldron (2/3 River Water)=Kessel (2/3 Flusswasser) +Cauldron (3/3 River Water)=Kessel (3/3 Flusswasser) diff --git a/mods/ITEMS/mcl_chests/init.lua b/mods/ITEMS/mcl_chests/init.lua index 6f3c0ceb..a63ed08b 100644 --- a/mods/ITEMS/mcl_chests/init.lua +++ b/mods/ITEMS/mcl_chests/init.lua @@ -480,10 +480,12 @@ end -- END OF register_chest FUNCTION BODY end +local chestusage = S("To access its inventory, rightclick it. When broken, the items will drop out.") + register_chest("chest", S("Chest"), S("Chests are containers which provide 27 inventory slots. Chests can be turned into large chests with double the capacity by placing two chests next to each other."), - S("To access the chest's inventory, rightclick the chest. When broken, the items of the chest will drop out."), + chestusage, { small = {"default_chest_top.png", "mcl_chests_chest_bottom.png", "mcl_chests_chest_right.png", "mcl_chests_chest_left.png", @@ -513,7 +515,7 @@ local traptiles = { register_chest("trapped_chest", S("Trapped Chest"), S("A trapped chest is a container which provides 27 inventory slots. When it is opened, it sends a redstone signal to its adjacent blocks as long it stays open. Trapped chests can be turned into large trapped chests with double the capacity by placing two trapped chests next to each other."), - S("To access the inventory of a trapped chest, rightclick it. When broken, the items will drop out."), + chestusage, traptiles, nil, {receptor = { @@ -725,7 +727,7 @@ for color, desc in pairs(boxtypes) do minetest.register_node("mcl_chests:"..color.."_shulker_box", { description = desc, _doc_items_longdesc = S("A shulker box is a portable container which provides 27 inventory slots for any item except shulker boxes. Shulker boxes keep their inventory when broken, so shulker boxes as well as their contents can be taken as a single item. Shulker boxes come in many different colors."), - _doc_items_usagehelp = S("To access the inventory of a shulker box, place and right-click it. To take a shulker box and its contents with you, just break and collect it, the items will not fall out. Place the shulker box again to be able to retrieve its contents."), + _doc_items_usagehelp = S("To access the inventory of a shulker box, place and right-click it. To take a shulker box and its contents with you, just break and collect it, the items will not fall out."), tiles = { "mcl_chests_"..color.."_shulker_box_top.png", -- top "[combine:16x16:-32,-28="..mob_texture, -- bottom diff --git a/mods/ITEMS/mcl_chests/locale/mcl_chests.de.tr b/mods/ITEMS/mcl_chests/locale/mcl_chests.de.tr new file mode 100644 index 00000000..06bc376d --- /dev/null +++ b/mods/ITEMS/mcl_chests/locale/mcl_chests.de.tr @@ -0,0 +1,28 @@ +# textdomain: mcl_chests +Chest=Truhe +Chests are containers which provide 27 inventory slots. Chests can be turned into large chests with double the capacity by placing two chests next to each other.=Truhen sind Behälter, die 27 Inventarplätze Platz bieten. Truhen verwandeln sich in große Truhen mit der doppelten Kapazität, wenn zwei Truhen nebeneinander platziert werden. +To access its inventory, rightclick it. When broken, the items will drop out.=Um auf das Inventar zuzugreifen, rechtsklicken Sie darauf. Wenn abgebaut, wird der Inhalt hinausfallen. +Trapped Chest=Mechanismustruhe +A trapped chest is a container which provides 27 inventory slots. When it is opened, it sends a redstone signal to its adjacent blocks as long it stays open. Trapped chests can be turned into large trapped chests with double the capacity by placing two trapped chests next to each other.= +Mechanismustruhen sind Behälter, die 27 Inventarplätze Platz bieten. Wenn sie geöffnet wird, sendet sie ein Redstone-Signal zu benachbarten Blöcken, solange sie geöffnet bleibt. Mechanismustruhen verwandeln sich in große Mechanismustruhen mit der doppelten Kapazität, wenn zwei Mechanismustruhen nebeneinander platziert werden. +Ender Chest=Endertruhe +Ender chests grant you access to a single personal interdimensional inventory with 27 slots. This inventory is the same no matter from which ender chest you access it from. If you put one item into one ender chest, you will find it in all other ender chests. Each player will only see their own items, but not the items of other players.=Endertruhen gewähren Ihnen Zugriff zu einem einzigartigen persönlichem interdimensionalem Inventar mit 27 Plätzen. Dieses Inventar ist das gleiche, egal, welche Endertruhe sie benutzen. Wenn Sie einen Gegenstand in eine Endertruhe platzieren, werden Sie sie in allen anderen Endertruhen vorhinden. Jeder Spieler wird nur seine eigenen Gegenstände sehen, aber nicht die der anderen Spieler. +Rightclick the ender chest to access your personal interdimensional inventory.=Rechtsklicken Sie die Endertruhe, um auf Ihr persönliches interdimensionales Inventar zuzugreifen. +White Shulker Box=Weiße Shulkerkiste +Light Grey Shulker Box=Hellgraue Shulkerkiste +Orange Shulker Box=Orange Shulkerkiste +Cyan Shulker Box=Türkise Shulkerkiste +Magenta Shulker Box=Magenta Shulkerkiste +Purple Shulker Box=Violette Shulkerkiste +Light Blue Shulker Box=Hellblaue Shulkerkiste +Blue Shulker Box=Blaue Shulkerkiste +Yellow Shulker Box=Gelbe Shulkerkiste +Brown Shulker Box=Braune Shulkerkiste +Lime Shulker Box=Lindgrüne Shulkerkiste +Green Shulker Box=Grüne Shulkerkiste +Pink Shulker Box=Rosane Shulkerkiste +Red Shulker Box=Rote Shulkerkiste +Grey Shulker Box=Graue Shulkerkiste +Black Shulker Box=Schwarze Shulkerkiste +A shulker box is a portable container which provides 27 inventory slots for any item except shulker boxes. Shulker boxes keep their inventory when broken, so shulker boxes as well as their contents can be taken as a single item. Shulker boxes come in many different colors.=Eine Shulkerkiste ist ein tragbarer Behälter der 27 Inventarplätze für alle Gegenstände außer Shulkerkisten bietet. Shulkerkisten behalten ihr Inventar, wenn sie abgebaut werden, also können Shulkerkisten so wie ihr Inhalt als einzelne Gegenstände mitgenommen werden. Shulkerkisten gibt es in vielen verschiedenen Farben. +To access the inventory of a shulker box, place and right-click it. To take a shulker box and its contents with you, just break and collect it, the items will not fall out.=Um auf das Inventar einer Shulkerkiste zuzugreifen, platzieren Sie sie und rechtsklicken sie auf ihr. Um eine Shulkerkiste und ihren Inhalt mitzunehmen, bauen Sie sie einfach ab und sammeln Sie sie auf, der Inhalt will nicht hinausfallen. diff --git a/mods/ITEMS/mcl_chests/locale/template.txt b/mods/ITEMS/mcl_chests/locale/template.txt index 682795bc..e4d8c013 100644 --- a/mods/ITEMS/mcl_chests/locale/template.txt +++ b/mods/ITEMS/mcl_chests/locale/template.txt @@ -1,10 +1,9 @@ # textdomain: mcl_chests Chest= Chests are containers which provide 27 inventory slots. Chests can be turned into large chests with double the capacity by placing two chests next to each other.= -To access the chest's inventory, rightclick the chest. When broken, the items of the chest will drop out.= +To access its inventory, rightclick it. When broken, the items will drop out.= Trapped Chest= A trapped chest is a container which provides 27 inventory slots. When it is opened, it sends a redstone signal to its adjacent blocks as long it stays open. Trapped chests can be turned into large trapped chests with double the capacity by placing two trapped chests next to each other.= -To access the inventory of a trapped chest, rightclick it. When broken, the items will drop out.= Ender Chest= Ender chests grant you access to a single personal interdimensional inventory with 27 slots. This inventory is the same no matter from which ender chest you access it from. If you put one item into one ender chest, you will find it in all other ender chests. Each player will only see their own items, but not the items of other players.= Rightclick the ender chest to access your personal interdimensional inventory.= From 2cde0476c7d987b352e87d3e690c702691304ded Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Thu, 14 Mar 2019 07:06:45 +0100 Subject: [PATCH 146/737] German translation: mcl_clock to mcl_end but ... no mcl_colorblocks --- mods/ITEMS/mcl_clock/locale/mcl_clock.de.tr | 4 +++ .../ITEMS/mcl_colorblocks/locale/template.txt | 0 .../mcl_compass/locale/mcl_compass.de.tr | 3 +++ .../locale/mcl_crafting_table.de.tr | 4 +++ mods/ITEMS/mcl_doors/locale/mcl_doors.de.tr | 23 +++++++++++++++++ mods/ITEMS/mcl_dye/locale/mcl_dye.de.tr | 25 +++++++++++++++++++ mods/ITEMS/mcl_end/locale/mcl_end.de.tr | 23 +++++++++++++++++ 7 files changed, 82 insertions(+) create mode 100644 mods/ITEMS/mcl_clock/locale/mcl_clock.de.tr delete mode 100644 mods/ITEMS/mcl_colorblocks/locale/template.txt create mode 100644 mods/ITEMS/mcl_compass/locale/mcl_compass.de.tr create mode 100644 mods/ITEMS/mcl_crafting_table/locale/mcl_crafting_table.de.tr create mode 100644 mods/ITEMS/mcl_doors/locale/mcl_doors.de.tr create mode 100644 mods/ITEMS/mcl_dye/locale/mcl_dye.de.tr create mode 100644 mods/ITEMS/mcl_end/locale/mcl_end.de.tr diff --git a/mods/ITEMS/mcl_clock/locale/mcl_clock.de.tr b/mods/ITEMS/mcl_clock/locale/mcl_clock.de.tr new file mode 100644 index 00000000..f80daa41 --- /dev/null +++ b/mods/ITEMS/mcl_clock/locale/mcl_clock.de.tr @@ -0,0 +1,4 @@ +# textdomain: mcl_clock +Clocks are tools which shows the current time of day in the Overworld.=Uhren sind Werkzeuge, die die Tageszeit in der Oberwelt anzeigen. +The clock contains a rotating disc with a sun symbol (yellow disc) and moon symbol and a little “pointer” which shows the current time of day by estimating the real position of the sun and the moon in the sky. Noon is represented by the sun symbol and midnight is represented by the moon symbol.=Die Uhr enthält eine rotierende Scheibe mit einem Sonnensymbol (gelbe Scheibe) und einem Mondsymbol, und sie hat einem kleinen „Pfeil“, der die jetzige Tageszeit anzeigt, indem die reale Position von Sonne und Mond im Himmel abgeschätzt wird. Die Sonne repräsentiert die Mittagszeit und der Mond repräsentiert Mitternacht. +Clock=Uhr diff --git a/mods/ITEMS/mcl_colorblocks/locale/template.txt b/mods/ITEMS/mcl_colorblocks/locale/template.txt deleted file mode 100644 index e69de29b..00000000 diff --git a/mods/ITEMS/mcl_compass/locale/mcl_compass.de.tr b/mods/ITEMS/mcl_compass/locale/mcl_compass.de.tr new file mode 100644 index 00000000..e20b0e52 --- /dev/null +++ b/mods/ITEMS/mcl_compass/locale/mcl_compass.de.tr @@ -0,0 +1,3 @@ +# textdomain: mcl_compass +Compasses are tools which point to the world origin (X@=0, Z@=0) or the spawn point in the Overworld.=Kompasse sind Werkzeuge, die zum Ursprungspunkt der Welt (X@=0, Z@=0) oder den Einstiegspunkt der Welt zeigen. +Compass=Kompass diff --git a/mods/ITEMS/mcl_crafting_table/locale/mcl_crafting_table.de.tr b/mods/ITEMS/mcl_crafting_table/locale/mcl_crafting_table.de.tr new file mode 100644 index 00000000..5831b881 --- /dev/null +++ b/mods/ITEMS/mcl_crafting_table/locale/mcl_crafting_table.de.tr @@ -0,0 +1,4 @@ +# textdomain: mcl_crafting_table +Crafting Table=Werkbank +A crafting table is a block which grants you access to a 3×3 crafting grid which allows you to perform advanced crafts.=Die Werkbank ist ein Block, mit dem Sie Zugriff auf ein 3×3-Fertigungsgitter erhalten, wodurch sie fortgeschrittene Dinge herstellen können. +Rightclick the crafting table to access the 3×3 crafting grid.=Rechtsklicken Sie auf die Werkbank, um auf das 3×3-Fertigungsgitter zuzugreifen. diff --git a/mods/ITEMS/mcl_doors/locale/mcl_doors.de.tr b/mods/ITEMS/mcl_doors/locale/mcl_doors.de.tr new file mode 100644 index 00000000..dfa0a3ab --- /dev/null +++ b/mods/ITEMS/mcl_doors/locale/mcl_doors.de.tr @@ -0,0 +1,23 @@ +# textdomain: mcl_doors +Wooden doors are 2-block high barriers which can be opened or closed by hand and by a redstone signal.=Holztüren sind 2-Block hohe Barrieren, die von Hand oder mit einem Redstone-Signal geöffnet oder geschlossen werden können. +To open or close a wooden door, rightclick it or supply its lower half with a redstone signal.=Um die Holztür zu öffnen oder zu schließen, rechtsklicken Sie sie oder versorgen Sie sie mit einem Redstone-Signal. +Oak Door=Eichentür +Acacia Door=Akazientür +Birch Door=Birkentür +Dark Oak Door=Dunkeleichentür +Jungle Door=Dschungeltür +Spruce Door=Fichtentür +Iron Door=Eisentür +Iron doors are 2-block high barriers which can only be opened or closed by a redstone signal, but not by hand.=Eisentüren sind 2-Block hohe Barrieren, die nur von einem Redstone-Signal geöffnet oder geschlossen werden können. +To open or close an iron door, supply its lower half with a redstone signal.=Um eine Eisentür zu öffnen oder zu schließen, versorgen Sie die untere Hälfte mit einem Redstone-Signal. +Oak Trapdoor=Eichenfalltür +Acacia Trapdoor=Akazienfalltür +Birch Trapdoor=Birkenfalltür +Spruce Trapdoor=Fichtenfalltür +Dark Oak Trapdoor=Dunkeleichenfalltür +Jungle Trapdoor=Dschungelfalltür +Wooden trapdoors are horizontal barriers which can be opened and closed by hand or a redstone signal. They occupy the upper or lower part of a block, depending on how they have been placed. When open, they can be climbed like a ladder.=Holzfalltüren sind horizontale Barrieren, die von Hand oder mit einem Redstone-Signal geöffnet oder geschlossen werden können. Sie belegen den oberen oder unteren Teil eines Blocks, je nach dem, wie sie platziert wurden. Wenn geöffnet, können sie wie eine Leiter erklommen werden. +To open or close the trapdoor, rightclick it or send a redstone signal to it.=Um die Falltür zu öffnen oder zu schließen, rechtsklicken Sie sie oder schicken Sie ein Redstone-Signal zu ihr. +Iron Trapdoor=Eisenfalltür. +Iron trapdoors are horizontal barriers which can only be opened and closed by redstone signals, but not by hand. They occupy the upper or lower part of a block, depending on how they have been placed. When open, they can be climbed like a ladder.=Eisenfalltüren sind horizontale Barrieren, die nur mit einem Redstone-Signal geöffnet oder geschlossen werden können, nicht von Hand. Sie belegen den oberen oder unteren Teil eines Blocks, je nach dem, wie sie platziert wurden. Wenn geöffnet, können sie wie eine Leiter erklommen werden. + diff --git a/mods/ITEMS/mcl_dye/locale/mcl_dye.de.tr b/mods/ITEMS/mcl_dye/locale/mcl_dye.de.tr new file mode 100644 index 00000000..a846d4e6 --- /dev/null +++ b/mods/ITEMS/mcl_dye/locale/mcl_dye.de.tr @@ -0,0 +1,25 @@ +# textdomain: mcl_dye +Bone Meal=Knochenmehl +Light Grey Dye=Hellgrauer Farbstoff +Grey Dye=Grauer Farbstoff +Ink Sac=Tintensack +Purple Dye=Violetter Farbstoff +Lapis Lazuli=Lapislazuli +Light Blue Dye=Hellblauer Farbstoff +Cyan Dye=Türkiser Farbstoff +Cactus Green=Kaktusgrün +Lime Dye=Lindgrüner Farbstoff +Dandelion Yellow=Löwenzahngelb +Cocoa Beans=Kakaobohnen +Orange Dye=Orange Farbstoff +Rose Red=Rosenrot +Magenta Dye=Magenta Farbstoff +Pink Dye=Rosaner Farbstoff +This item is a dye which is used for dyeing and crafting.=Dieser Gegenstand ist ein Farbstoff, der zum Einfärben und in der Herstellung benutzt werden kann. +Rightclick on a sheep to dye its wool. Other things are dyed by crafting.=Rechtsklicken Sie auf ein Schaf, um seine Wolle zu färben. Andere Dinge werden mit der Fertigung eingefärbt. +Bone Meal=Knochenmehl +Bone meal is a white dye and also useful as a fertilizer to speed up the growth of many plants.=Knochenmehl ist ein weißer Farbstoff und auch nützlich als Dünger, um das Wachstum vieler Pflanzen zu beschleunigen. +Rightclick a sheep to turn its wool white. Rightclick a plant to speed up its growth. Note that not all plants can be fertilized like this. When you rightclick a grass block, tall grass and flowers will grow all over the place.=Rechtsklicken Sie auf ein Schaf, um die Wolle weiß einzufärben. Rechtsklicken Sie auf eine Pflanze, um ihr Wachstum zu beschleunigen. Beachten Sie, dass nicht alle Pflanzen darauf ansprechen. Benutzen Sie es auf einem Grasblock, wächst viel hohes Gras und vielleicht auch ein paar Blumen. +Cocoa beans are a brown dye and can be used to plant cocoas.=Kakaobohnen sind ein brauner Farbstoff und werden benutzt, um Kakao anzupflanzen. +Rightclick a sheep to turn its wool brown. Rightclick on the side of a jungle tree trunk (Jungle Wood) to plant a young cocoa.=Rechtsklicken Sie auf ein Schaf, um die Wolle braun einzufärben. Rechtsklicken Sie an die Seite eines Dschungelbaumstamms (Dschungelholz), um eine junge Kakaoschote zu pflanzen. +Cocoa Beans=Kakaobohnen diff --git a/mods/ITEMS/mcl_end/locale/mcl_end.de.tr b/mods/ITEMS/mcl_end/locale/mcl_end.de.tr new file mode 100644 index 00000000..7577559a --- /dev/null +++ b/mods/ITEMS/mcl_end/locale/mcl_end.de.tr @@ -0,0 +1,23 @@ +# textdomain: mcl_end +End Stone=Endstein +End Stone Bricks=Endsteinziegel +Purpur Block=Purpurblock +Purpur Pillar=Purpursäule +End Rod=Endstab +End rods are decorative light sources.=Endstäbe sind dekorative Lichtquellen. +Dragon Egg=Drachenei. +A dragon egg is a decorative item which can be placed.=Ein Drahenei ist ein dekorativer, platzierbarer Gegenstand. +Chorus Flower=Chorusblume +A chorus flower is the living part of a chorus plant. It can grow into a tall chorus plant, step by step. When it grows, it may die on old age eventually. It also dies when it is unable to grow.=Eine Chorusblume ist der lebendige Teil einer Choruspflanze. Sie kann zu einer großen Choruspflanze heranwachsen, Schritt für Schritt. Wenn sie wächst, wird sie irgendwann am Alter absterben. Sie stirbt auch ab, wenn sie nicht weiterwachsen kann. +Place it and wait for it to grow. It can only be placed on top of end stone, on top of a chorus plant stem, or at the side of exactly one chorus plant stem.=Platzieren Sie sie und warten Sie darauf, dass sie wächst. Sie kann nur auf Endstein, auf einen anderen Choruspflanzenstängel oder an der Seite von genau einem Choruspflanzenstängel platziert werden. +Dead Chorus Flower=Tote Chorusblume +This is a part of a chorus plant. It doesn't grow. Chorus flowers die of old age or when they are unable to grow. A dead chorus flower can be harvested to obtain a fresh chorus flower which is able to grow again.=Dies ist ein Teil einer Choruspflanze. Er wächst nicht. Choruspflanzen werden mit der Zeit alt und sterben ab, sie sterben auch ab, wenn sie nicht weiterwachsen können. Eine tote Chorusblume kann geerntet werden, um eine frische neue Choruspflanze zu erhalten, die wieder wachsen kann. +Chorus Plant Stem=Choruspflanzenstängel +A chorus plant stem is the part of a chorus plant which holds the whole plant together. It needs end stone as its soil. Stems are grown from chorus flowers.=Ein Choruspflanzenstängel ist der Teil einer Choruspflanze, der die gesamte Pflanze zusammenhält. Sie braucht Endstein als Unterground. Stängel wachsen aus Chorusblumen. +Chorus Fruit=Chorusfrucht +A chorus fruit is an edible fruit from the chorus plant which is home to the End. Eating it teleports you to the top of a random solid block nearby, provided you won't end up inside a liquid, solid or harmful blocks. Teleportation might fail if there are very few or no places to teleport to.=Eine Chorusfrucht ist eine essbare Frucht von der Choruspflanze, die im Ende beheimatet ist. Wenn man sie isst, wird man auf einen zufälligen festen Block in der Nähe teleportiert, solange man nicht in eine Flüssigkeit, einen festen oder gefährlichen Block landen würde. Die Teleportation könnte fehlschlagen, wenn es sehr wenige oder keine Orte gibt, zu denen sie einen hinteleportieren könnte. +Popped Chorus Fruit=Aufgeploppte Chorusfrucht +Eye of Ender=Enderauge +This item is used to locate End portal shrines in the Overworld and to activate End portals.=Dieser Gegenstand wird benutzt, um Endportalschreine in der Oberwelt zu finden und Endportale zu aktivieren. +Use the attack key to release the eye of ender. It will rise and fly in the horizontal direction of the closest end portal shrine. If you're very close, the eye of ender will take the direct path to the End portal shrine instead. After a few seconds, it stops. It may drop as an item, but there's a 20% chance it shatters.=Benutzen Sie die Angriffstaste, um das Enderauge loszulassen. Er wird aufsteigen und in einer horizontalen Richtung zum nächsten Endportalschrein fliegen. Wenn Sie sehr nah dran sind, wird das Enderauge stattdessen den direkten Weg zum Endportalschrein nehmen. Nach ein paar Sekunden hält er an. Es könnte als Gegenstand wieder herunterfalle, aber er wird mit einer 20%-Chance zerbrechen. +To activate an End portal, eyes of ender need to be placed into each block of an intact End portal frame.=Um ein Endportal zu aktivieren, müssen Enderaugen in jeden Block eines intakten Endportalrahmens platziert werden. From 1740ccc2b275237e6a52d8e4ae5c439113d99883 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Thu, 14 Mar 2019 07:25:14 +0100 Subject: [PATCH 147/737] Fix translation file error in mcl_chests --- mods/ITEMS/mcl_chests/locale/mcl_chests.de.tr | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_chests/locale/mcl_chests.de.tr b/mods/ITEMS/mcl_chests/locale/mcl_chests.de.tr index 06bc376d..63f8dd4c 100644 --- a/mods/ITEMS/mcl_chests/locale/mcl_chests.de.tr +++ b/mods/ITEMS/mcl_chests/locale/mcl_chests.de.tr @@ -3,8 +3,7 @@ Chest=Truhe Chests are containers which provide 27 inventory slots. Chests can be turned into large chests with double the capacity by placing two chests next to each other.=Truhen sind Behälter, die 27 Inventarplätze Platz bieten. Truhen verwandeln sich in große Truhen mit der doppelten Kapazität, wenn zwei Truhen nebeneinander platziert werden. To access its inventory, rightclick it. When broken, the items will drop out.=Um auf das Inventar zuzugreifen, rechtsklicken Sie darauf. Wenn abgebaut, wird der Inhalt hinausfallen. Trapped Chest=Mechanismustruhe -A trapped chest is a container which provides 27 inventory slots. When it is opened, it sends a redstone signal to its adjacent blocks as long it stays open. Trapped chests can be turned into large trapped chests with double the capacity by placing two trapped chests next to each other.= -Mechanismustruhen sind Behälter, die 27 Inventarplätze Platz bieten. Wenn sie geöffnet wird, sendet sie ein Redstone-Signal zu benachbarten Blöcken, solange sie geöffnet bleibt. Mechanismustruhen verwandeln sich in große Mechanismustruhen mit der doppelten Kapazität, wenn zwei Mechanismustruhen nebeneinander platziert werden. +A trapped chest is a container which provides 27 inventory slots. When it is opened, it sends a redstone signal to its adjacent blocks as long it stays open. Trapped chests can be turned into large trapped chests with double the capacity by placing two trapped chests next to each other.=Mechanismustruhen sind Behälter, die 27 Inventarplätze Platz bieten. Wenn sie geöffnet wird, sendet sie ein Redstone-Signal zu benachbarten Blöcken, solange sie geöffnet bleibt. Mechanismustruhen verwandeln sich in große Mechanismustruhen mit der doppelten Kapazität, wenn zwei Mechanismustruhen nebeneinander platziert werden. Ender Chest=Endertruhe Ender chests grant you access to a single personal interdimensional inventory with 27 slots. This inventory is the same no matter from which ender chest you access it from. If you put one item into one ender chest, you will find it in all other ender chests. Each player will only see their own items, but not the items of other players.=Endertruhen gewähren Ihnen Zugriff zu einem einzigartigen persönlichem interdimensionalem Inventar mit 27 Plätzen. Dieses Inventar ist das gleiche, egal, welche Endertruhe sie benutzen. Wenn Sie einen Gegenstand in eine Endertruhe platzieren, werden Sie sie in allen anderen Endertruhen vorhinden. Jeder Spieler wird nur seine eigenen Gegenstände sehen, aber nicht die der anderen Spieler. Rightclick the ender chest to access your personal interdimensional inventory.=Rechtsklicken Sie die Endertruhe, um auf Ihr persönliches interdimensionales Inventar zuzugreifen. From 28c0c9d1963765174ddf465abf174c5a4f9f394f Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Thu, 14 Mar 2019 08:13:54 +0100 Subject: [PATCH 148/737] Workaround for concrete powder hardening ABM crash --- mods/ITEMS/mcl_colorblocks/init.lua | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_colorblocks/init.lua b/mods/ITEMS/mcl_colorblocks/init.lua index 18faee84..8a3f971d 100644 --- a/mods/ITEMS/mcl_colorblocks/init.lua +++ b/mods/ITEMS/mcl_colorblocks/init.lua @@ -169,7 +169,12 @@ minetest.register_abm({ neighbors = {"group:water"}, action = function(pos, node) local harden_to = minetest.registered_nodes[node.name]._mcl_colorblocks_harden_to - minetest.swap_node(pos, { name = harden_to, param = node.param, param2 = node.param2 }) + -- It should be impossible for harden_to to be nil, but a Minetest bug might call + -- the ABM on the new concrete node, which isn't part of this ABM! + if harden_to then + node.name = harden_to + minetest.set_node(pos, node) + end end, }) From 41842c73c6a0a02ecb5135cf583195349367a9dd Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Thu, 14 Mar 2019 08:33:28 +0100 Subject: [PATCH 149/737] Fix translations in mcl_death_messages not working --- mods/HUD/mcl_death_messages/init.lua | 119 +++++++++--------- .../locale/mcl_death_messages.de.tr | 104 +++++++-------- .../mcl_death_messages/locale/template.txt | 104 +++++++-------- 3 files changed, 164 insertions(+), 163 deletions(-) diff --git a/mods/HUD/mcl_death_messages/init.lua b/mods/HUD/mcl_death_messages/init.lua index f0f6285c..90943ecb 100644 --- a/mods/HUD/mcl_death_messages/init.lua +++ b/mods/HUD/mcl_death_messages/init.lua @@ -1,100 +1,101 @@ local S = minetest.get_translator("mcl_death_messages") +local N = function(s) return s end mcl_death_messages = {} -- Death messages local msgs = { ["arrow"] = { - S("%s was fatally hit by an arrow."), - S("%s has been killed with an arrow."), + N("@1 was fatally hit by an arrow."), + N("@1 has been killed with an arrow."), }, ["arrow_name"] = { - S("%s was shot by an arrow from %s."), + N("@1 was shot by an arrow from %s."), }, ["drown"] = { - S("%s forgot to breathe."), - S("%s drowned."), - S("%s ran out of oxygen."), + N("@1 forgot to breathe."), + N("@1 drowned."), + N("@1 ran out of oxygen."), }, ["murder"] = { - S("%s was killed by %s."), + N("@1 was killed by %s."), }, ["mob_kill"] = { - S("%s was killed by a mob."), + N("@1 was killed by a mob."), }, ["blaze_fireball"] = { - S("%s was burned to death by a blaze's fireball."), - S("%s was killed by a fireball from a blaze."), + N("@1 was burned to death by a blaze's fireball."), + N("@1 was killed by a fireball from a blaze."), }, ["fire_charge"] = { - S("%s was burned by a fire charge."), + N("@1 was burned by a fire charge."), }, ["ghast_fireball"] = { - S("A ghast scared %s to death."), - S("%s has been fireballed by a ghast."), + N("A ghast scared @1 to death."), + N("@1 has been fireballed by a ghast."), }, ["fall"] = { - S("%s fell from a high cliff."), - S("%s took fatal fall damage."), - S("%s fell victim to gravity."), + N("@1 fell from a high cliff."), + N("@1 took fatal fall damage."), + N("@1 fell victim to gravity."), }, ["other"] = { - S("%s died."), + N("@1 died."), } } local mobkills = { - ["mobs_mc:zombie"] = S("%s was killed by a zombie."), - ["mobs_mc:baby_zombie"] = S("%s was killed by a baby zombie."), - ["mobs_mc:blaze"] = S("%s was killed by a blaze."), - ["mobs_mc:slime"] = S("%s was killed by a slime."), - ["mobs_mc:witch"] = S("%s was killed by a witch."), - ["mobs_mc:magma_cube_tiny"] = S("%s was killed by a magma cube."), - ["mobs_mc:magma_cube_small"] = S("%s was killed by a magma cube."), - ["mobs_mc:magma_cube_big"] = S("%s was killed by a magma cube."), - ["mobs_mc:wolf"] = S("%s was killed by a wolf."), - ["mobs_mc:cat"] = S("%s was killed by a cat."), - ["mobs_mc:ocelot"] = S("%s was killed by an ocelot."), - ["mobs_mc:ender_dragon"] = S("%s was killed by an ender dragon."), - ["mobs_mc:wither"] = S("%s was killed by a wither."), - ["mobs_mc:enderman"] = S("%s was killed by an enderman."), - ["mobs_mc:endermite"] = S("%s was killed by an endermite."), - ["mobs_mc:ghast"] = S("%s was killed by a ghast."), - ["mobs_mc:guardian_elder"] = S("%s was killed by an elder guardian."), - ["mobs_mc:guardian"] = S("%s was killed by a guardian."), - ["mobs_mc:iron_golem"] = S("%s was killed by an iron golem."), - ["mobs_mc:polar_bear"] = S("%s was killed by a polar_bear."), - ["mobs_mc:killer_bunny"] = S("%s was killed by a killer bunny."), - ["mobs_mc:shulker"] = S("%s was killed by a shulker."), - ["mobs_mc:silverfish"] = S("%s was killed by a silverfish."), - ["mobs_mc:skeleton"] = S("%s was killed by a skeleton."), - ["mobs_mc:stray"] = S("%s was killed by a stray."), - ["mobs_mc:slime_tiny"] = S("%s was killed by a slime."), - ["mobs_mc:slime_small"] = S("%s was killed by a slime."), - ["mobs_mc:slime_big"] = S("%s was killed by a slime."), - ["mobs_mc:spider"] = S("%s was killed by a spider."), - ["mobs_mc:cave_spider"] = S("%s was killed by a cave spider."), - ["mobs_mc:vex"] = S("%s was killed by a vex."), - ["mobs_mc:evoker"] = S("%s was killed by an evoker."), - ["mobs_mc:illusioner"] = S("%s was killed by an illusioner."), - ["mobs_mc:vindicator"] = S("%s was killed by a vindicator."), - ["mobs_mc:villager_zombie"] = S("%s was killed by a zombie villager."), - ["mobs_mc:husk"] = S("%s was killed by a husk."), - ["mobs_mc:baby_husk"] = S("%s was killed by a baby husk."), - ["mobs_mc:pigman"] = S("%s was killed by a zombie pigman."), - ["mobs_mc:baby_pigman"] = S("%s was killed by a baby zombie pigman."), + ["mobs_mc:zombie"] = N("@1 was killed by a zombie."), + ["mobs_mc:baby_zombie"] = N("@1 was killed by a baby zombie."), + ["mobs_mc:blaze"] = N("@1 was killed by a blaze."), + ["mobs_mc:slime"] = N("@1 was killed by a slime."), + ["mobs_mc:witch"] = N("@1 was killed by a witch."), + ["mobs_mc:magma_cube_tiny"] = N("@1 was killed by a magma cube."), + ["mobs_mc:magma_cube_small"] = N("@1 was killed by a magma cube."), + ["mobs_mc:magma_cube_big"] = N("@1 was killed by a magma cube."), + ["mobs_mc:wolf"] = N("@1 was killed by a wolf."), + ["mobs_mc:cat"] = N("@1 was killed by a cat."), + ["mobs_mc:ocelot"] = N("@1 was killed by an ocelot."), + ["mobs_mc:ender_dragon"] = N("@1 was killed by an ender dragon."), + ["mobs_mc:wither"] = N("@1 was killed by a wither."), + ["mobs_mc:enderman"] = N("@1 was killed by an enderman."), + ["mobs_mc:endermite"] = N("@1 was killed by an endermite."), + ["mobs_mc:ghast"] = N("@1 was killed by a ghast."), + ["mobs_mc:guardian_elder"] = N("@1 was killed by an elder guardian."), + ["mobs_mc:guardian"] = N("@1 was killed by a guardian."), + ["mobs_mc:iron_golem"] = N("@1 was killed by an iron golem."), + ["mobs_mc:polar_bear"] = N("@1 was killed by a polar_bear."), + ["mobs_mc:killer_bunny"] = N("@1 was killed by a killer bunny."), + ["mobs_mc:shulker"] = N("@1 was killed by a shulker."), + ["mobs_mc:silverfish"] = N("@1 was killed by a silverfish."), + ["mobs_mc:skeleton"] = N("@1 was killed by a skeleton."), + ["mobs_mc:stray"] = N("@1 was killed by a stray."), + ["mobs_mc:slime_tiny"] = N("@1 was killed by a slime."), + ["mobs_mc:slime_small"] = N("@1 was killed by a slime."), + ["mobs_mc:slime_big"] = N("@1 was killed by a slime."), + ["mobs_mc:spider"] = N("@1 was killed by a spider."), + ["mobs_mc:cave_spider"] = N("@1 was killed by a cave spider."), + ["mobs_mc:vex"] = N("@1 was killed by a vex."), + ["mobs_mc:evoker"] = N("@1 was killed by an evoker."), + ["mobs_mc:illusioner"] = N("@1 was killed by an illusioner."), + ["mobs_mc:vindicator"] = N("@1 was killed by a vindicator."), + ["mobs_mc:villager_zombie"] = N("@1 was killed by a zombie villager."), + ["mobs_mc:husk"] = N("@1 was killed by a husk."), + ["mobs_mc:baby_husk"] = N("@1 was killed by a baby husk."), + ["mobs_mc:pigman"] = N("@1 was killed by a zombie pigman."), + ["mobs_mc:baby_pigman"] = N("@1 was killed by a baby zombie pigman."), } -- Select death message local dmsg = function(mtype, ...) local r = math.random(1, #msgs[mtype]) - return string.format(msgs[mtype][r], ...) + return S(msgs[mtype][r], ...) end -- Select death message for death by mob local mmsg = function(mtype, ...) if mobkills[mtype] then - return string.format(mobkills[mtype], ...) + return S(mobkills[mtype], ...) else return dmsg("mob_kill", ...) end @@ -139,7 +140,7 @@ minetest.register_on_dieplayer(function(player, reason) else field_msg = field end - msg = string.format(field_msg, name) + msg = S(field_msg, name) end elseif reason.type == "drown" then msg = dmsg("drown", name) diff --git a/mods/HUD/mcl_death_messages/locale/mcl_death_messages.de.tr b/mods/HUD/mcl_death_messages/locale/mcl_death_messages.de.tr index 4a65a08c..11b0eb3d 100644 --- a/mods/HUD/mcl_death_messages/locale/mcl_death_messages.de.tr +++ b/mods/HUD/mcl_death_messages/locale/mcl_death_messages.de.tr @@ -1,53 +1,53 @@ # textdomain: mcl_death_messages -%s was fatally hit by an arrow.=%s wurde tödlich von einem Pfeil getroffen. -%s has been killed with an arrow.=%s wurde mit einem Pfeil getötet. -%s was shot by an arrow from %s.=%s wurde mit einem Pfeil von %s abgeschossen. -%s forgot to breathe.=%s vergaß, zu atmen. -%s drowned.=%s ertrank. -%s ran out of oxygen.=%s ging die Luft aus. -%s was killed by %s.=%s wurde von %s getötet. -%s was killed by a mob.=%s wurde von einem Mob getötet. -%s was burned to death by a blaze's fireball.=%s wurde von einem Feuerball einer Lohe zu Tode verbrannt. -%s was killed by a fireball from a blaze.=%s wurde von einem Feuerball einer Lohe getötet. -%s was burned by a fire charge.=%s wurde von einer Feuerkugel verbrannt. -A ghast scared %s to death.=Ein Ghast hat %s zu Tode erschrocken. -%s has been fireballed by a ghast.=%s wurde von einem Ghast mit einer Feuerkugel abgeschossen. -%s fell from a high cliff.=%s stürzte von einer hohen Klippe. -%s took fatal fall damage.=%s nahm tödlichen Fallschaden. -%s fell victim to gravity.=%s fiel der Schwerkraft zum Opfer. -%s died.=%s starb. -%s was killed by a zombie.=%s wurde von einem Zombie getötet. -%s was killed by a baby zombie.=%s wurde von einem Zombiebaby getötet. -%s was killed by a blaze.=%s wurde von einer Lohe getötet. -%s was killed by a slime.=%s wurde von einem Schleim getötet. -%s was killed by a witch.=%s wurde von einer Hexe getötet. -%s was killed by a magma cube.=%s wurde von einem Magmakubus getötet. -%s was killed by a wolf.=%s wurde von einem Wolf getötet. -%s was killed by a cat.=%s wurde von einer Katze getötet. -%s was killed by an ocelot.=%s wurde von einem Ozelot getötet. -%s was killed by an ender dragon.=%s wurde von einem Enderdrachen getötet. -%s was killed by a wither.=%s wurde von einem Wither getötet. -%s was killed by an enderman.=%s wurde von einem Enderman getötet. -%s was killed by an endermite.=%s wurde von einer Endermilbe getötet. -%s was killed by a ghast.=%s wurde von einem Ghast getötet. -%s was killed by an elder guardian.=%s wurde von einem Großen Wächter getötet. -%s was killed by a guardian.=%s wurde von einem Wächter getötet. -%s was killed by an iron golem.=%s wurde von einem Eisengolem getötet. -%s was killed by a polar_bear.=%s wurde von einem Eisbären getötet. -%s was killed by a killer bunny.=%s wurde von einem Killerkaninchen getötet. -%s was killed by a shulker.=%s wurde von einem Shulker getötet. -%s was killed by a silverfish.=%s wurde von einem Silberfischchen getötet. -%s was killed by a skeleton.=%s wurde von einem Skelett getötet. -%s was killed by a stray.=%s wurde von einem Eiswanderer getötet. -%s was killed by a slime.=%s wurde von einem Schleim getötet. -%s was killed by a spider.=%s wurde von einer Spinne getötet. -%s was killed by a cave spider.=%s wurde von einer Höhlenspinne getötet. -%s was killed by a vex.=%s wurde von einem Plagegeist getötet. -%s was killed by an evoker.=%s wurde von einem Magier getötet. -%s was killed by an illusioner.=%s wurde von einem Illusionisten getötet. -%s was killed by a vindicator.=%s wurde von einem Diener getötet. -%s was killed by a zombie villager.=%s wurde von einem Dorfbewohnerzombie getötet. -%s was killed by a husk.=%s wurde von einem Wüstenzombie getötet. -%s was killed by a baby husk.=%s wurde von einem Wüstenzombiebaby getötet. -%s was killed by a zombie pigman.=%s wurde von einem Schweinezombie getötet. -%s was killed by a baby zombie pigman.=%s wurde von einem Schweinezombiebaby getötet. +@1 was fatally hit by an arrow.=@1 wurde tödlich von einem Pfeil getroffen. +@1 has been killed with an arrow.=@1 wurde mit einem Pfeil getötet. +@1 was shot by an arrow from @1.=@1 wurde mit einem Pfeil von @1 abgeschossen. +@1 forgot to breathe.=@1 vergaß, zu atmen. +@1 drowned.=@1 ertrank. +@1 ran out of oxygen.=@1 ging die Luft aus. +@1 was killed by @1.=@1 wurde von @1 getötet. +@1 was killed by a mob.=@1 wurde von einem Mob getötet. +@1 was burned to death by a blaze's fireball.=@1 wurde von einem Feuerball einer Lohe zu Tode verbrannt. +@1 was killed by a fireball from a blaze.=@1 wurde von einem Feuerball einer Lohe getötet. +@1 was burned by a fire charge.=@1 wurde von einer Feuerkugel verbrannt. +A ghast scared @1 to death.=Ein Ghast hat @1 zu Tode erschrocken. +@1 has been fireballed by a ghast.=@1 wurde von einem Ghast mit einer Feuerkugel abgeschossen. +@1 fell from a high cliff.=@1 stürzte von einer hohen Klippe. +@1 took fatal fall damage.=@1 nahm tödlichen Fallschaden. +@1 fell victim to gravity.=@1 fiel der Schwerkraft zum Opfer. +@1 died.=@1 starb. +@1 was killed by a zombie.=@1 wurde von einem Zombie getötet. +@1 was killed by a baby zombie.=@1 wurde von einem Zombiebaby getötet. +@1 was killed by a blaze.=@1 wurde von einer Lohe getötet. +@1 was killed by a slime.=@1 wurde von einem Schleim getötet. +@1 was killed by a witch.=@1 wurde von einer Hexe getötet. +@1 was killed by a magma cube.=@1 wurde von einem Magmakubus getötet. +@1 was killed by a wolf.=@1 wurde von einem Wolf getötet. +@1 was killed by a cat.=@1 wurde von einer Katze getötet. +@1 was killed by an ocelot.=@1 wurde von einem Ozelot getötet. +@1 was killed by an ender dragon.=@1 wurde von einem Enderdrachen getötet. +@1 was killed by a wither.=@1 wurde von einem Wither getötet. +@1 was killed by an enderman.=@1 wurde von einem Enderman getötet. +@1 was killed by an endermite.=@1 wurde von einer Endermilbe getötet. +@1 was killed by a ghast.=@1 wurde von einem Ghast getötet. +@1 was killed by an elder guardian.=@1 wurde von einem Großen Wächter getötet. +@1 was killed by a guardian.=@1 wurde von einem Wächter getötet. +@1 was killed by an iron golem.=@1 wurde von einem Eisengolem getötet. +@1 was killed by a polar_bear.=@1 wurde von einem Eisbären getötet. +@1 was killed by a killer bunny.=@1 wurde von einem Killerkaninchen getötet. +@1 was killed by a shulker.=@1 wurde von einem Shulker getötet. +@1 was killed by a silverfish.=@1 wurde von einem Silberfischchen getötet. +@1 was killed by a skeleton.=@1 wurde von einem Skelett getötet. +@1 was killed by a stray.=@1 wurde von einem Eiswanderer getötet. +@1 was killed by a slime.=@1 wurde von einem Schleim getötet. +@1 was killed by a spider.=@1 wurde von einer Spinne getötet. +@1 was killed by a cave spider.=@1 wurde von einer Höhlenspinne getötet. +@1 was killed by a vex.=@1 wurde von einem Plagegeist getötet. +@1 was killed by an evoker.=@1 wurde von einem Magier getötet. +@1 was killed by an illusioner.=@1 wurde von einem Illusionisten getötet. +@1 was killed by a vindicator.=@1 wurde von einem Diener getötet. +@1 was killed by a zombie villager.=@1 wurde von einem Dorfbewohnerzombie getötet. +@1 was killed by a husk.=@1 wurde von einem Wüstenzombie getötet. +@1 was killed by a baby husk.=@1 wurde von einem Wüstenzombiebaby getötet. +@1 was killed by a zombie pigman.=@1 wurde von einem Schweinezombie getötet. +@1 was killed by a baby zombie pigman.=@1 wurde von einem Schweinezombiebaby getötet. diff --git a/mods/HUD/mcl_death_messages/locale/template.txt b/mods/HUD/mcl_death_messages/locale/template.txt index 654b4c66..ce809b35 100644 --- a/mods/HUD/mcl_death_messages/locale/template.txt +++ b/mods/HUD/mcl_death_messages/locale/template.txt @@ -1,53 +1,53 @@ # textdomain: mcl_death_messages -%s was fatally hit by an arrow.= -%s has been killed with an arrow.= -%s was shot by an arrow from %s.= -%s forgot to breathe.= -%s drowned.= -%s ran out of oxygen.= -%s was killed by %s.= -%s was killed by a mob.= -%s was burned to death by a blaze's fireball.= -%s was killed by a fireball from a blaze.= -%s was burned by a fire charge.= -A ghast scared %s to death.= -%s has been fireballed by a ghast.= -%s fell from a high cliff.= -%s took fatal fall damage.= -%s fell victim to gravity.= -%s died.= -%s was killed by a zombie.= -%s was killed by a baby zombie.= -%s was killed by a blaze.= -%s was killed by a slime.= -%s was killed by a witch.= -%s was killed by a magma cube.= -%s was killed by a wolf.= -%s was killed by a cat.= -%s was killed by an ocelot.= -%s was killed by an ender dragon.= -%s was killed by a wither.= -%s was killed by an enderman.= -%s was killed by an endermite.= -%s was killed by a ghast.= -%s was killed by an elder guardian.= -%s was killed by a guardian.= -%s was killed by an iron golem.= -%s was killed by a polar_bear.= -%s was killed by a killer bunny.= -%s was killed by a shulker.= -%s was killed by a silverfish.= -%s was killed by a skeleton.= -%s was killed by a stray.= -%s was killed by a slime.= -%s was killed by a spider.= -%s was killed by a cave spider.= -%s was killed by a vex.= -%s was killed by an evoker.= -%s was killed by an illusioner.= -%s was killed by a vindicator.= -%s was killed by a zombie villager.= -%s was killed by a husk.= -%s was killed by a baby husk.= -%s was killed by a zombie pigman.= -%s was killed by a baby zombie pigman.= +@1 was fatally hit by an arrow.= +@1 has been killed with an arrow.= +@1 was shot by an arrow from @1.= +@1 forgot to breathe.= +@1 drowned.= +@1 ran out of oxygen.= +@1 was killed by @1.= +@1 was killed by a mob.= +@1 was burned to death by a blaze's fireball.= +@1 was killed by a fireball from a blaze.= +@1 was burned by a fire charge.= +A ghast scared @1 to death.= +@1 has been fireballed by a ghast.= +@1 fell from a high cliff.= +@1 took fatal fall damage.= +@1 fell victim to gravity.= +@1 died.= +@1 was killed by a zombie.= +@1 was killed by a baby zombie.= +@1 was killed by a blaze.= +@1 was killed by a slime.= +@1 was killed by a witch.= +@1 was killed by a magma cube.= +@1 was killed by a wolf.= +@1 was killed by a cat.= +@1 was killed by an ocelot.= +@1 was killed by an ender dragon.= +@1 was killed by a wither.= +@1 was killed by an enderman.= +@1 was killed by an endermite.= +@1 was killed by a ghast.= +@1 was killed by an elder guardian.= +@1 was killed by a guardian.= +@1 was killed by an iron golem.= +@1 was killed by a polar_bear.= +@1 was killed by a killer bunny.= +@1 was killed by a shulker.= +@1 was killed by a silverfish.= +@1 was killed by a skeleton.= +@1 was killed by a stray.= +@1 was killed by a slime.= +@1 was killed by a spider.= +@1 was killed by a cave spider.= +@1 was killed by a vex.= +@1 was killed by an evoker.= +@1 was killed by an illusioner.= +@1 was killed by a vindicator.= +@1 was killed by a zombie villager.= +@1 was killed by a husk.= +@1 was killed by a baby husk.= +@1 was killed by a zombie pigman.= +@1 was killed by a baby zombie pigman.= From 0c8db3e556944222b830d60e9edc61c411c24c4b Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Thu, 14 Mar 2019 12:08:11 +0100 Subject: [PATCH 150/737] Fix crash in craftguide when player leaves --- mods/HELP/mcl_craftguide/init.lua | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/mods/HELP/mcl_craftguide/init.lua b/mods/HELP/mcl_craftguide/init.lua index 37087de0..9fed7642 100644 --- a/mods/HELP/mcl_craftguide/init.lua +++ b/mods/HELP/mcl_craftguide/init.lua @@ -969,16 +969,6 @@ end M.register_on_mods_loaded(get_init_items) -M.register_on_joinplayer(function(player) - local name = player:get_player_name() - init_data(name) -end) - -M.register_on_leaveplayer(function(player) - local name = player:get_player_name() - player_data[name] = nil -end) - -- TODO: Remove sfinv support if sfinv_only then sfinv.register_page("craftguide:craftguide", { @@ -1106,6 +1096,8 @@ if progressive_mode then mcl_craftguide.add_recipe_filter("Default progressive filter", progressive_filter) M.register_on_joinplayer(function(player) + local name = player:get_player_name() + init_data(name) local meta = player:get_meta() local name = player:get_player_name() local data = player_data[name] @@ -1121,7 +1113,11 @@ if progressive_mode then meta:set_string("inv_items", serialize(data.inv_items)) end - M.register_on_leaveplayer(save_meta) + M.register_on_leaveplayer(function(player) + save_meta(player) + local name = player:get_player_name() + player_data[name] = nil + end) M.register_on_shutdown(function() local players = M.get_connected_players() @@ -1130,6 +1126,16 @@ if progressive_mode then save_meta(player) end end) +else + M.register_on_joinplayer(function(player) + local name = player:get_player_name() + init_data(name) + end) + + M.register_on_leaveplayer(function(player) + local name = player:get_player_name() + player_data[name] = nil + end) end function mcl_craftguide.show(name) From daeb04485e6e103fb4e4e39899c8eda0ab417b8c Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Thu, 14 Mar 2019 23:37:03 +0100 Subject: [PATCH 151/737] Version 0.51.0 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 8345b5f4..fe71d6d4 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ An unofficial Minecraft-like game for Minetest. Forked from MineClone by daredevils. Developed by Wuzzy and contributors. Not developed or endorsed by Mojang AB. -Version: 0.50.1 +Version: 0.51.0 ### Gameplay You start in a randomly-generated world made entirely of cubes. You can explore From 702755b99e8ba94faaeb2a4743e5563dfbefa058 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Fri, 15 Mar 2019 00:10:07 +0100 Subject: [PATCH 152/737] Fix crash in mcl_dye when converting unicolor --- mods/ITEMS/mcl_dye/init.lua | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_dye/init.lua b/mods/ITEMS/mcl_dye/init.lua index 90e98ac4..e90f5187 100644 --- a/mods/ITEMS/mcl_dye/init.lua +++ b/mods/ITEMS/mcl_dye/init.lua @@ -93,7 +93,12 @@ end -- Takes an unicolor group name (e.g. “unicolor_white”) and returns a corresponding dye name (if it exists), nil otherwise. mcl_dye.unicolor_to_dye = function(unicolor_group) - return "mcl_dye:" .. dyelocal.unicolor_to_dye_id[unicolor_group] + local color = dyelocal.unicolor_to_dye_id[unicolor_group] + if color then + return "mcl_dye:" .. color + else + return nil + end end -- Define items From a51bcff1b9ffa8bced8a590f1a0dd11752449bb0 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Fri, 15 Mar 2019 00:26:06 +0100 Subject: [PATCH 153/737] Fix crash if breeding sheep that spawned as child --- mods/ENTITIES/mobs_mc/sheep.lua | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/mods/ENTITIES/mobs_mc/sheep.lua b/mods/ENTITIES/mobs_mc/sheep.lua index c734cfe2..bf321bcc 100644 --- a/mods/ENTITIES/mobs_mc/sheep.lua +++ b/mods/ENTITIES/mobs_mc/sheep.lua @@ -30,6 +30,9 @@ if minetest.get_modpath("mcl_wool") ~= nil then end local sheep_texture = function(color_group) + if not color_group then + color_group = "unicolor_white" + end return { "mobs_mc_sheep_fur.png^[colorize:"..colors[color_group][2], "mobs_mc_sheep.png", @@ -227,6 +230,7 @@ mobs:register_mob("mobs_mc:sheep", { local groups = minetest.registered_items[new_dye].groups for k, v in pairs(groups) do if string.sub(k, 1, 9) == "unicolor_" then + ent_c.color = k ent_c.base_texture = sheep_texture(k) mixed = true break @@ -238,11 +242,12 @@ mobs:register_mob("mobs_mc:sheep", { if not mixed then -- Choose color randomly from one of the parents local p = math.random(1, 2) - if p == 1 then - ent_c.base_texture = sheep_texture(color1) + if p == 1 and color1 then + ent_c.color = color1 else - ent_c.base_texture = sheep_texture(color2) + ent_c.color = color2 end + ent_c.base_texture = sheep_texture(ent_c.color) end child:set_properties({textures = ent_c.base_texture}) ent_c.initial_color_set = true From 62e11868276c9ffbf2119712dd8b7685843bf81b Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Fri, 15 Mar 2019 00:27:17 +0100 Subject: [PATCH 154/737] Version 0.51.1 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index fe71d6d4..037f2b18 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ An unofficial Minecraft-like game for Minetest. Forked from MineClone by daredevils. Developed by Wuzzy and contributors. Not developed or endorsed by Mojang AB. -Version: 0.51.0 +Version: 0.51.1 ### Gameplay You start in a randomly-generated world made entirely of cubes. You can explore From 93e34d1d0310ac8e24bef10917b4e57621f9f7f8 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Fri, 15 Mar 2019 02:05:10 +0100 Subject: [PATCH 155/737] Make mcl_colorblocks translatable --- mods/ITEMS/mcl_colorblocks/init.lua | 62 +++++++++++++++-------------- 1 file changed, 33 insertions(+), 29 deletions(-) diff --git a/mods/ITEMS/mcl_colorblocks/init.lua b/mods/ITEMS/mcl_colorblocks/init.lua index 8a3f971d..a4471fe4 100644 --- a/mods/ITEMS/mcl_colorblocks/init.lua +++ b/mods/ITEMS/mcl_colorblocks/init.lua @@ -1,34 +1,35 @@ local init = os.clock() +local S = minetest.get_translator("mcl_colorblocks") local block = {} block.dyes = { - {"white", "White", "white"}, - {"grey", "Grey", "dark_grey"}, - {"silver", "Light Grey", "grey"}, - {"black", "Black", "black"}, - {"red", "Red", "red"}, - {"yellow", "Yellow", "yellow"}, - {"green", "Green", "dark_green"}, - {"cyan", "Cyan", "cyan"}, - {"blue", "Blue", "blue"}, - {"magenta", "Magenta", "magenta"}, - {"orange", "Orange", "orange"}, - {"purple", "Purple", "violet"}, - {"brown", "Brown", "brown"}, - {"pink", "Pink", "pink"}, - {"lime", "Lime", "green"}, - {"light_blue", "Light Blue", "lightblue"}, + {"white", S("White Terracotta"), S("White Glazed Terracotta"), S("White Concrete Powder"), S("White Concrete"), "white"}, + {"grey", S("Grey Terracotta"), S("Grey Glazed Terracotta"), S("Grey Concrete Powder"), S("Grey Concrete"), "dark_grey"}, + {"silver", S("Light Grey Terracotta"), S("Light Grey Glazed Terracotta"), S("Light Grey Concrete Powder"), S("Light Grey Concrete"), "grey"}, + {"black", S("Black Terracotta"), S("Black Glazed Terracotta"), S("Black Concrete Powder"), S("Black Concrete"), "black"}, + {"red", S("Red Terracotta"), S("Red Glazed Terracotta"), S("Red Concrete Powder"), S("Red Concrete"), "red"}, + {"yellow", S("Yellow Terracotta"), S("Yellow Glazed Terracotta"), S("Yellow Concrete Powder"), S("Yellow Concrete"), "yellow"}, + {"green", S("Green Terracotta"), S("Green Glazed Terracotta"), S("Green Concrete Powder"), S("Green Concrete"), "dark_green"}, + {"cyan", S("Cyan Terracotta"), S("Cyan Glazed Terracotta"), S("Cyan Concrete Powder"), S("Cyan Concrete"), "cyan"}, + {"blue", S("Blue Terracotta"), S("Blue Glazed Terracotta"), S("Blue Concrete Powder"), S("Blue Concrete"), "blue"}, + {"magenta", S("Magenta Terracotta"), S("Magenta Glazed Terracotta"), S("Magenta Concrete Powder"), S("Magenta Concrete"), "magenta"}, + {"orange", S("Orange Terracotta"), S("Orange Glazed Terracotta"), S("Orange Concrete Powder"), S("Orange Concrete"), "orange"}, + {"purple", S("Purple Terracotta"), S("Purple Glazed Terracotta"), S("Purple Concrete Powder"), S("Purple Concrete"), "violet"}, + {"brown", S("Brown Terracotta"), S("Brown Glazed Terracotta"), S("Brown Concrete Powder"), S("Brown Concrete"), "brown"}, + {"pink", S("Pink Terracotta"), S("Pink Glazed Terracotta"), S("Pink Concrete Powder"), S("Pink Concrete"), "pink"}, + {"lime", S("Lime Terracotta"), S("Lime Glazed Terracotta"), S("Lime Concrete Powder"), S("Lime Concrete"), "green"}, + {"light_blue", S("Light Blue Terracotta"), S("Light Blue Glazed Terracotta"), S("Light Blue Concrete Powder"), S("Light Blue Concrete"), "lightblue"}, } -local hc_desc = "Terracotta is a basic building material. It comes in many different colors." -local gt_desc = "Glazed terracotta is a decorative block with a complex pattern. It can be rotated by placing it in different directions." -local cp_desc = "Concrete powder is used for creating concrete, but it can also be used as decoration itself. It comes in different colors. Concrete powder turns into concrete of the same color when it comes in contact with water." -local conc_desc = "Concrete is a decorative block which comes in many different colors. It is notable for having a very strong and clean color.", +local hc_desc = S("Terracotta is a basic building material. It comes in many different colors.") +local gt_desc = S("Glazed terracotta is a decorative block with a complex pattern. It can be rotated by placing it in different directions.") +local cp_desc = S("Concrete powder is used for creating concrete, but it can also be used as decoration itself. It comes in different colors. Concrete powder turns into concrete of the same color when it comes in contact with water.") +local c_desc = S("Concrete is a decorative block which comes in many different colors. It is notable for having a very strong and clean color.") minetest.register_node("mcl_colorblocks:hardened_clay", { - description = "Terracotta", - _doc_items_longdesc = "Terracotta is a basic building material.", + description = S("Terracotta"), + _doc_items_longdesc = S("Terracotta is a basic building material which comes in many different colors. This particular block is uncolored."), tiles = {"hardened_clay.png"}, stack_max = 64, groups = {pickaxey=1, hardened_clay=1,building_block=1, material_stone=1}, @@ -51,11 +52,14 @@ end for _, row in ipairs(block.dyes) do local name = row[1] - local desc = row[2] - local craft_color_group = row[3] + local sdesc_hc = row[2] + local sdesc_gt = row[3] + local sdesc_cp = row[4] + local sdesc_c = row[5] + local craft_color_group = row[6] -- Node Definition minetest.register_node("mcl_colorblocks:hardened_clay_"..name, { - description = desc.." Terracotta", + description = sdesc_hc, _doc_items_longdesc = hc_desc, tiles = {"hardened_clay_stained_"..name..".png"}, groups = {pickaxey=1, hardened_clay=1,building_block=1, material_stone=1}, @@ -66,7 +70,7 @@ for _, row in ipairs(block.dyes) do }) minetest.register_node("mcl_colorblocks:concrete_powder_"..name, { - description = desc.." Concrete Powder", + description = sdesc_cp, _doc_items_longdesc = cp_desc, tiles = {"mcl_colorblocks_concrete_powder_"..name..".png"}, groups = {handy=1,shovely=1, concrete_powder=1,building_block=1,falling_node=1, material_sand=1}, @@ -104,8 +108,8 @@ for _, row in ipairs(block.dyes) do }) minetest.register_node("mcl_colorblocks:concrete_"..name, { - description = desc.." Concrete", - _doc_items_longdesc = conc_desc, + description = sdesc_c, + _doc_items_longdesc = c_desc, tiles = {"mcl_colorblocks_concrete_"..name..".png"}, groups = {handy=1,pickaxey=1, concrete=1,building_block=1, material_stone=1}, stack_max = 64, @@ -118,7 +122,7 @@ for _, row in ipairs(block.dyes) do local tex = "mcl_colorblocks_glazed_terracotta_"..name..".png" local texes = { tex, tex, tex.."^[transformR180", tex, tex.."^[transformR270", tex.."^[transformR90" } minetest.register_node("mcl_colorblocks:glazed_terracotta_"..name, { - description = desc.." Glazed Terracotta", + description = sdesc_gt, _doc_items_longdesc = gt_desc, tiles = texes, groups = {handy=1,pickaxey=1, glazed_terracotta=1,building_block=1, material_stone=1}, From a5fb218afe7848ed2c9b730cdebe26b97bec8ea5 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Fri, 15 Mar 2019 02:26:59 +0100 Subject: [PATCH 156/737] German translation: mcl_colorblocks --- .../locale/mcl_colorblocks.de.tr | 71 +++++++++++++++++++ .../ITEMS/mcl_colorblocks/locale/template.txt | 71 +++++++++++++++++++ 2 files changed, 142 insertions(+) create mode 100644 mods/ITEMS/mcl_colorblocks/locale/mcl_colorblocks.de.tr create mode 100644 mods/ITEMS/mcl_colorblocks/locale/template.txt diff --git a/mods/ITEMS/mcl_colorblocks/locale/mcl_colorblocks.de.tr b/mods/ITEMS/mcl_colorblocks/locale/mcl_colorblocks.de.tr new file mode 100644 index 00000000..1c66d6b5 --- /dev/null +++ b/mods/ITEMS/mcl_colorblocks/locale/mcl_colorblocks.de.tr @@ -0,0 +1,71 @@ +# textdomain: mcl_colorblocks +White Terracotta=Weiße Terrakotta +White Glazed Terracotta=Weiße glasierte Terrakotta +White Concrete Powder=Weißes Betonpulver +White Concrete=Weißer Beton +Grey Terracotta=Graue Terrakotta +Grey Glazed Terracotta=Graue glasierte Terrakotta +Grey Concrete Powder=Graues Betonpulver +Grey Concrete=Grauer Beton +Light Grey Terracotta=Hellgraue Terrakotta +Light Grey Glazed Terracotta=Hellgraue glasierte Terrakotta +Light Grey Concrete Powder=Hellgraues Betonpulver +Light Grey Concrete=Hellgrauer Beton +Black Terracotta=Schwarze Terrakotta +Black Glazed Terracotta=Schwarze glasierte Terrakotta +Black Concrete Powder=Schwarzes Betonpulver +Black Concrete=Schwarzer Beton +Red Terracotta=Rote Terrakotta +Red Glazed Terracotta=Rote glasierte Terrakotta +Red Concrete Powder=Rotes Betonpulver +Red Concrete=Roter Beton +Yellow Terracotta=Gelbe Terrakotta +Yellow Glazed Terracotta=Gelbe glasierte Terrakotta +Yellow Concrete Powder=Gelbes Betonpulver +Yellow Concrete=Gelber Beton +Green Terracotta=Grüne Terrakotta +Green Glazed Terracotta=Grüne glasierte Terrakotta +Green Concrete Powder=Grünes Betonpulver +Green Concrete=Grüner Beton +Cyan Terracotta=Türkise Terrakotta +Cyan Glazed Terracotta=Türkise glasierte Terrakotta +Cyan Concrete Powder=Türkises Betonpulver +Cyan Concrete=Türkiser Beton +Blue Terracotta=Blaue Terrakotta +Blue Glazed Terracotta=Blaue glasierte Terrakotta +Blue Concrete Powder=Blaues Betonpulver +Blue Concrete=Blauer Beton +Magenta Terracotta=Magenta Terrakotta +Magenta Glazed Terracotta=Magenta glasierte Terrakotta +Magenta Concrete Powder=Magenta Betonpulver +Magenta Concrete=Magenta Beton +Orange Terracotta=Orange Terrakotta +Orange Glazed Terracotta=Orange glasierte Terrakotta +Orange Concrete Powder=Orange Betonpulver +Orange Concrete=Orange Beton +Purple Terracotta=Violette Terrakotta +Purple Glazed Terracotta=Violette glasierte Terrakotta +Purple Concrete Powder=Violettes Betonpulver +Purple Concrete=Violetter Beton +Brown Terracotta=Braune Terrakotta +Brown Glazed Terracotta=Braune glasierte Terrakotta +Brown Concrete Powder=Braunes Betonpulver +Brown Concrete=Brauner Beton +Pink Terracotta=Rosane Terrakotta +Pink Glazed Terracotta=Rosane glasierte Terrakotta +Pink Concrete Powder=Rosanes Betonpulver +Pink Concrete=Rosaner Beton +Lime Terracotta=Lindgrüne Terrakotta +Lime Glazed Terracotta=Lindgrüne glasierte Terrakotta +Lime Concrete Powder=Lindgrünes Betonpulver +Lime Concrete=Lindgrüner Beton +Light Blue Terracotta=Hellbaue Terrakotta +Light Blue Glazed Terracotta=Hellblaue glasierte Terrakotta +Light Blue Concrete Powder=Hellblaues Betonpulver +Light Blue Concrete=Hellblauer Beton +Terracotta is a basic building material. It comes in many different colors.=Terrakotta ist ein Baumaterial. Es gibt es in vielen verschiedenen Farben. +Glazed terracotta is a decorative block with a complex pattern. It can be rotated by placing it in different directions.=Glasierte Terrakotta ist ein dekorativer Block mit einem komplexen Muster. Sie kann rotiert werden, indem man sie in verschiedene Richtungen platziert. +Concrete powder is used for creating concrete, but it can also be used as decoration itself. It comes in different colors. Concrete powder turns into concrete of the same color when it comes in contact with water.=Betonpulver wird benutzt, um Beton herzustellen, aber es kann auch selbst als Dekoration benutzt werden. Es kommt in verschiedenen Farben daher. Betonpulver verwandelt sich in Beton der selben Farbe, wenn es mit Wasser in Berührung kommt. +Concrete is a decorative block which comes in many different colors. It is notable for having a very strong and clean color.=Beton ist ein dekorativer Block, der in verschiedenen Farben daherkommt. Er hat eine besonders kräftige und klare Farbe. +Terracotta=Terrakotta +Terracotta is a basic building material which comes in many different colors. This particular block is uncolored.=Terrakotta ist ein Baumaterial, welches in vielen verschiedenen Farben vorkommt. Dieser Block ist farblos. diff --git a/mods/ITEMS/mcl_colorblocks/locale/template.txt b/mods/ITEMS/mcl_colorblocks/locale/template.txt new file mode 100644 index 00000000..2736a54b --- /dev/null +++ b/mods/ITEMS/mcl_colorblocks/locale/template.txt @@ -0,0 +1,71 @@ +# textdomain: mcl_colorblocks +White Terracotta= +White Glazed Terracotta= +White Concrete Powder= +White Concrete= +Grey Terracotta= +Grey Glazed Terracotta= +Grey Concrete Powder= +Grey Concrete= +Light Grey Terracotta= +Light Grey Glazed Terracotta= +Light Grey Concrete Powder= +Light Grey Concrete= +Black Terracotta= +Black Glazed Terracotta= +Black Concrete Powder= +Black Concrete= +Red Terracotta= +Red Glazed Terracotta= +Red Concrete Powder= +Red Concrete= +Yellow Terracotta= +Yellow Glazed Terracotta= +Yellow Concrete Powder= +Yellow Concrete= +Green Terracotta= +Green Glazed Terracotta= +Green Concrete Powder= +Green Concrete= +Cyan Terracotta= +Cyan Glazed Terracotta= +Cyan Concrete Powder= +Cyan Concrete= +Blue Terracotta= +Blue Glazed Terracotta= +Blue Concrete Powder= +Blue Concrete= +Magenta Terracotta= +Magenta Glazed Terracotta= +Magenta Concrete Powder= +Magenta Concrete= +Orange Terracotta= +Orange Glazed Terracotta= +Orange Concrete Powder= +Orange Concrete= +Purple Terracotta= +Purple Glazed Terracotta= +Purple Concrete Powder= +Purple Concrete= +Brown Terracotta= +Brown Glazed Terracotta= +Brown Concrete Powder= +Brown Concrete= +Pink Terracotta= +Pink Glazed Terracotta= +Pink Concrete Powder= +Pink Concrete= +Lime Terracotta= +Lime Glazed Terracotta= +Lime Concrete Powder= +Lime Concrete= +Light Blue Terracotta= +Light Blue Glazed Terracotta= +Light Blue Concrete Powder= +Light Blue Concrete= +Terracotta is a basic building material. It comes in many different colors.= +Glazed terracotta is a decorative block with a complex pattern. It can be rotated by placing it in different directions.= +Concrete powder is used for creating concrete, but it can also be used as decoration itself. It comes in different colors. Concrete powder turns into concrete of the same color when it comes in contact with water.= +Concrete is a decorative block which comes in many different colors. It is notable for having a very strong and clean color.= +Terracotta= +Terracotta is a basic building material which comes in many different colors. This particular block is uncolored.= From 53eabf37373a4aa30701881a78182f67f4894076 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Fri, 15 Mar 2019 03:41:24 +0100 Subject: [PATCH 157/737] German translation: mcl_farming --- mods/ITEMS/mcl_farming/carrots.lua | 2 +- .../mcl_farming/locale/mcl_farming.de.tr | 91 +++++++++++++++++++ mods/ITEMS/mcl_farming/locale/template.txt | 16 ++-- mods/ITEMS/mcl_farming/melon.lua | 4 +- mods/ITEMS/mcl_farming/potatoes.lua | 2 +- mods/ITEMS/mcl_farming/pumpkin.lua | 4 +- mods/ITEMS/mcl_farming/soil.lua | 2 +- 7 files changed, 105 insertions(+), 16 deletions(-) create mode 100644 mods/ITEMS/mcl_farming/locale/mcl_farming.de.tr diff --git a/mods/ITEMS/mcl_farming/carrots.lua b/mods/ITEMS/mcl_farming/carrots.lua index d8c759ff..341bbeb0 100644 --- a/mods/ITEMS/mcl_farming/carrots.lua +++ b/mods/ITEMS/mcl_farming/carrots.lua @@ -17,7 +17,7 @@ for i=1, 7 do if i == 1 then create = true name = S("Premature Carrot Plant") - longdesc = S("Carrot plants are plants which grow on farmland under sunlight in 8 stages, of which only 4 are actually visible. On hydrated farmland, they grow a bit faster. They can be harvested at any time but will only yield a profit when mature.") + longdesc = S("Carrot plants are plants which grow on farmland under sunlight in 8 stages, but only 4 stages can be visually told apart. On hydrated farmland, they grow a bit faster. They can be harvested at any time but will only yield a profit when mature.") else create = false end diff --git a/mods/ITEMS/mcl_farming/locale/mcl_farming.de.tr b/mods/ITEMS/mcl_farming/locale/mcl_farming.de.tr new file mode 100644 index 00000000..4d05bf80 --- /dev/null +++ b/mods/ITEMS/mcl_farming/locale/mcl_farming.de.tr @@ -0,0 +1,91 @@ +# textdomain: mcl_farming +Beetroot Seeds=Rote-Beete-Samen +Grows into a beetroot plant. Chickens like beetroot seeds.=Wachsen zu Rote Beete heran. Hühner mögen Rote-Beete-Samen. +Place the beetroot seeds on farmland (which can be created with a hoe) to plant a beetroot plant. They grow in sunlight and grow faster on hydrated farmland. Rightclick an animal to feed it beetroot seeds.=Platzieren Sie die Rote-Beete-Samen auf Ackerboden (der mit einer Hacke gemacht werden kann), um Rote Beete zu pflanzen. Sie wächst im Sonnenlicht und wächst auf bewässertem Ackerboden schneller. Rechtsklicken Sie auf ein Tier, um es mit Rote-Beete-Samen zu füttern. +Premature Beetroot Plant (Stage 1)=Junge Rote Beete (1. Stufe) +Beetroot plants are plants which grow on farmland under sunlight in 4 stages. On hydrated farmland, they grow a bit faster. They can be harvested at any time but will only yield a profit when mature.=Rote Beete ist eine Pflanze, die auf Ackerboden im Sonnenlicht in 4 Stufen wächst. Auf bewässertem Ackerboden wächst sie etwas schneller. Sie kann jederzeit abgeerntet werden, aber wird nur einen Ertrag abwerfen, wenn sie ausgewachsen ist. +Premature Beetroot Plant=Junge Rote Beete +Premature Beetroot Plant (Stage 2)=Junge Rote Beete (2. Stufe) +Premature Beetroot Plant (Stage 3)=Junge Rote Beete (3. Stufe) +Mature Beetroot Plant=Ausgewachsene Rote Beete +A mature beetroot plant is a farming plant which is ready to be harvested for a beetroot and some beetroot seeds. It won't grow any further.=Eine ausgewachsene Rote Beete ist eine erntereife Pflanze, die für eine Rote-Beete-Rübe und ein paar Rote-Beete-Samen abgeerntet werden kann. Sie wächst nicht weiter. +Beetroot=Rote-Beete-Rübe +Beetroots are both used as food item and a dye ingredient. Pigs like beetroots, too.=Rote-Beete-Rüben sind eine Speise und nützlich zur Herstellung von Farbstoffen. Schweine mögen sie auch. +Hold it in your hand and right-click to eat it. Rightclick an animal to feed it.=Halten Sie es in der Hand und rechtsklicken Sie, um es zu essen. Rechtsklicken Sie auf ein Tier, um es zu füttern. +Beetroot Soup=Rote-Beete-Suppe +Beetroot soup is a food item.=Rote-Beete-Suppe ist ein Lebensmittel +Premature Carrot Plant=Junge Karottenpflanze +Carrot plants are plants which grow on farmland under sunlight in 8 stages, but only 4 stages can be visually told apart. On hydrated farmland, they grow a bit faster. They can be harvested at any time but will only yield a profit when mature.=Karottenpflanzen sind Pflanzen, die auf Ackerboden im Sonnenlicht in 8 Stufen wachsen, aber es gibt nur 4 sichtbar unterscheidbare Stufen. Auf bewässertem Ackerboden wachsen sie etwas schneller. Sie können jederzeit abgeerntet werden, aber werden nur einen Ertrag abwerfen, wenn sie ausgewachsen sind. +Premature Carrot Plant (Stage @1)=Junge Karottenpflanze (@1. Stufe) +Mature Carrot Plant=Ausgewachsene Karottenpflanze +Mature carrot plants are ready to be harvested for carrots. They won't grow any further.=Ausgewachsene Karottenpflanze können für Karotten abgeerntet werden. Sie werden nicht weiter wachsen. +Carrot=Karotte +Carrots can be eaten and planted. Pigs and rabbits like carrots.=Karotten können gegessen und gepflanzt werden. Schweine und Kaninchen mögen Karotten. +Hold it in your hand and rightclick to eat it. Place it on top of farmland to plant the carrot. It grows in sunlight and grows faster on hydrated farmland. Rightclick an animal to feed it.=Halten Sie es in ihrer Hand und rechtsklicken Sie, um es zu essen. Platzieren Sie sie auf Ackerboden, um sie einzupflanzen. Sie wächst im Sonnenlicht und wächst auf bewässertem Ackerboden schneller. Rechtsklicken Sie auf ein Tier, um es zu füttern. +Golden Carrot=Goldene Karotte +A golden carrot is a precious food item which can be eaten. It is really, really filling!=Eine goldene Karotte ist ein kostbares Lebensmittel. Es ist sehr, sehr sättigend! +Hoes are essential tools for growing crops. They are used to create farmland in order to plant seeds on it. Hoes can also be used as very weak weapons in a pinch.=Hacken sind unerlässliche Werkzeuge für die Zucht von Feldpflanzen. Sie können benutzt werden, um einen Ackerboden zu machen, auf dem Samen gepflanzt werden können. Hacken können zur Not auch als sehr schwache Waffen benutzt werden. +Use the hoe on a cultivatable block (by rightclicking it) to turn it into farmland. Dirt, grass blocks and grass paths are cultivatable blocks. Using a hoe on coarse dirt turns it into dirt.=Benutzen Sie die Hacke auf einen beackerbaren Block (indem Sie ihn rechtsklicken), um ihn zu Ackerboden in verwandeln. Erde, Grasblöcke und Graspfade können beackert werden. Grobe Erde wird zu Erde. +Wood Hoe=Holzhacke +Stone Hoe=Steinhacke +Iron Hoe=Eisenhacke +Golden Hoe=Goldhacke +Diamond Hoe=Diamanthacke +Melon Seeds=Melonensamen +Place the melon seeds on farmland (which can be created with a hoe) to plant a melon stem. Melon stems grow in sunlight and grow faster on hydrated farmland. When mature, the stem will attempt to grow a melon at the side. Rightclick an animal to feed it melon seeds.=Platzieren Sie die Melonensamen auf Ackerboden (der mit einer Hacke gemacht werden kann), um einen Melonenstängel zu pflanzen. Melonenstängel wachsen im Sonnenlicht und wachen auf bewässertem Ackerboden schneller. Ausgewachsen wird der Melonenstängel versuchen, an der Seite eine Melone wachsen zu lassen. Rechtsklicken Sie auf ein Tier, um es mit Melonensamen zu füttern. +Melon=Melone +Grows into a melon stem which in turn is able to grow melons. Chickens like melon seeds.=Wächst zu einem Melonenstängel heran, aus dem wiederum Melonen wachsen können. Hühner mögen Melonensamen. +A melon is a block which can be grown from melon stems, which in turn are grown from melon seeds. It can be harvested for melon slices.=Eine Melone ist ein Block, der von Melonenstängeln wächst, der wiederum aus Melonensamen wächst. Er kann für Melonenstücke abgeerntet werden. +Premature Melon Stem=Junger Melonenstängel +Melon stems grow on farmland in 8 stages. On hydrated farmland, the growth is a bit quicker. Mature melon stems are able to grow melons.=Melonenstängel wachsen auf Ackerboden in 8 Stufen. Auf bewässertem Ackerboden ist das Wachstum etwas schneller. Aus ausgewachsenen Melonenstängeln können Melonen wachsen. +Premature Melon Stem (Stage @1)=Junger Melonenstängel (@1. Stufe) +Mature Melon Stem=Ausgewachsener Melonenstängel +A mature melon stem attempts to grow a melon at one of its four adjacent blocks. A melon can only grow on top of farmland, dirt, or a grass block. When a melon is next to a melon stem, the melon stem immediately bends and connects to the melon. While connected, a melon stem can't grow another melon. As soon all melons around the stem have been removed, it loses the connection and is ready to grow another melon.=Ein ausgewachsener Melonenstängel versucht, auf einem seiner vier benachbarten Blöcke eine Melone wachsen zu lassen. Eine Melone kann nur auf Ackerboden, Erde oder einem Grasblock wachsen. Wenn sich eine Melone neben einem Melonenstängel befindet, verbiegt sich der Melonenstängel und verbindet sich mit der Melone. Solange der Stängel verbunden ist, kann aus ihm keine neue Melone wachsen. Wenn alle Melonen um den Melonenstängel entfernt wurden, verliert er die Verbindung und aus ihm kann eine weitere Melone wachsen. +Melon Slice=Melonenstück +This is a food item which can be eaten.=Ein essbares Lebensmittel. +Premature Potato Plant=Junge Kartoffelpflanze +Potato plants are plants which grow on farmland under sunlight in 8 stages, but only 4 stages can be visually told apart. On hydrated farmland, they grow a bit faster. They can be harvested at any time but will only yield a profit when mature.=Kartoffelpflanzen sind Pflanzen, die auf Ackerboden im Sonnenlicht in 8 Stufen wachsen, aber es gibt nur 4 sichtbar unterscheidbare Stufen. Auf bewässertem Ackerboden wachsen sie etwas schneller. Sie können jederzeit abgeerntet werden, aber werden nur einen Ertrag abwerfen, wenn sie ausgewachsen sind. +Premature Potato Plant (Stage @1)=Junge Kartoffelpflanze (@1. Stufe) +Mature Potato Plant=Ausgewachsene Kartoffelpflanze +Mature potato plants are ready to be harvested for potatoes. They won't grow any further.=Ausgewachsene Kartoffelpflanzen können für Kartoffeln abgeerntet werden. Sie wachsen nicht weiter. +Potato=Kartoffel +Potatoes are food items which can be eaten, cooked in the furnace and planted. Pigs like potatoes.=Kartoffeln sind essbare Lebensmittel, können im Ofen gebacken und eingepflanzt werden. Schweine mögen Kartoffeln. +Hold it in your hand and rightclick to eat it. Place it on top of farmland to plant it. It grows in sunlight and grows faster on hydrated farmland. Rightclick an animal to feed it.=Halten Sie sie in der Hand und rechtsklicken Sie zum Essen. Platzieren Sie sie auf Ackerboden, um sie zu pflanzen. Sie wächst im Sonnenlicht und wächst auf bewässertem Ackerboden schneller. Rechtsklicken Sie auf ein Tier, um es zu füttern. +Baked Potato=Ofenkartoffel +Baked potatoes are food items which are more filling than the unbaked ones.=Ofenkartoffeln sind Lebensmittel, die etwas nahrhafter als rohe Kartoffeln sind. +Poisonous Potato=Giftige Kartoffel +This potato doesn't look too healthy. You can eat it to restore hunger points, but there's a 60% chance it will poison you briefly.=Diese Kartoffel sieht nicht gerade gesund aus. Sie kann gegessen werden, um Hungerpunkte zu erhalten, aber es gibt eine Chance von 60%, dass das Sie kurz vergiften wird. +Pumpkin Seeds=Kürbissamen +Grows into a pumpkin stem which in turn is able to grow pumpkins. Chickens like pumpkin seeds.=Wächst zu einem Kürbisstängel heran, aus dem wiederum Kürbisse wachsen können. Hühner mögen Kürbissamen. +Place the pumpkin seeds on farmland (which can be created with a hoe) to plant a pumpkin stem. Pumpkin stems grow in sunlight and grow faster on hydrated farmland. When mature, the stem attempts to grow a pumpkin next to it. Rightclick an animal to feed it pumpkin seeds.=Platzieren Sie die Kürbissamen auf Ackerboden (der mit einer Hacke gemacht werden kann), um einen Kürbisstängel zu pflanzen. Kürbisstängel wachsen im Sonnenlicht und wachsen auf bewässertem Ackerboden schneller. Ausgewachsen wird der Kürbisstängel versuchen, einen Kürbis an einem benachbartem Feld wachsen zu lassen. Rechtsklicken Sie auf ein Tier, um es mit Kürbissamen zu füttern. +Premature Pumpkin Stem=Junger Kürbisstängel +Pumpkin stems grow on farmland in 8 stages. On hydrated farmland, the growth is a bit quicker. Mature pumpkin stems are able to grow pumpkins.=Kürbisstängel wachsen auf Ackerboden in 8 Stufen. Auf bewässertem Ackerboden ist das Wachstum etwas schneller. Aus ausgewachsenen Kürbisstängeln können Kürbisse wachsen. +Premature Pumpkin Stem (Stage @1)=Junger Kürbisstängel (@1. Stufe) +Mature Pumpkin Stem=Ausgewachsener Kürbisstängel +A mature pumpkin stem attempts to grow a pumpkin at one of its four adjacent blocks. A pumpkin can only grow on top of farmland, dirt or a grass block. When a pumpkin is next to a pumpkin stem, the pumpkin stem immediately bends and connects to the pumpkin. A connected pumpkin stem can't grow another pumpkin. As soon all pumpkins around the stem have been removed, it loses the connection and is ready to grow another pumpkin.=Ein ausgewachsener Kürbisstängel versucht, auf einem seiner vier benachbarten Blöcke einen Kürbis wachsen zu lassen. Ein Kürbis kann nur auf Ackerboden, Erde oder einem Grasblock wachsen. Wenn sich ein Kürbis neben einem Kürbisstängel befindet, verbiegt sich der Kürbisstängel und verbindet sich mit dem Kürbis. Solange der Stängel verbunden ist, kann aus ihm kein neuer Kürbis wachsen. Wenn alle Kürbisse um den Kürbisstängel entfernt wurden, verliert er die Verbindung und aus ihm kann ein weiterer Kürbis wachsen. +Faceless Pumpkin=Gesichtsloser Kürbis +A faceless pumpkin is a decorative block. It can be carved with shears to obtain pumpkin seeds.=Ein gesichtsloser Kürbis ist ein dekorativer Block. Mit einer Schere kann man in ihm ein Muster schnitzen, um Kürbissamen zu erhalten. +Pumpkin=Kürbis +A pumpkin can be worn as a helmet for fun, but it doesn't offer any protection. Pumpkins grow from pumpkin stems, which in turn grow from pumpkin seeds.=Einen Kürbis kann zum Spaß als Helm getragen werden, aber er bietet keinen Schutz. Kürbisse wachsen aus Kürbisstängeln, welche wiederum aus Kürbissamen wachsen. +Jack o'Lantern=Halloweenkürbis +A jack o'lantern is a traditional Halloween decoration made from a pumpkin. It glows brightly.=Ein Halloweenkürbis ist eine traditionelle Dekoration für Halloween. Er leuchtet hell. +Pumpkin Pie=Kürbiskuchen +A pumpkin pie is a tasty food item which can be eaten.=Ein Kürbiskuchen ist ein leckeres essbares Lebensmittel. +Farmland=Ackerboden +Farmland is used for farming, a necessary surface to plant crops. It is created when a hoe is used on dirt or a similar block. Plants are able to grow on farmland, but slowly. Farmland will become hydrated farmland (on which plants grow faster) when it rains or a water source is nearby. This block will turn back to dirt when a solid block appears above it or a piston arm extends above it.=Ackerboden wird für den Ackerbau genutzt, ein unerlässlicher Boden zum Anbau von Nutzpflanzen. Er wird erstellt, wenn eine Hacke auf Erde oder einem ähnlichen Block benutzt wird. Pflanzen können auf Ackerboden wachsen, aber nur langsam. Ackerboden wird zu bewässertem Ackerboden (auf dem Pflanzen schneller wachsen), wenn es regnet oder sich eine Wasserquelle in der Nähe befindet. Dieser Block wird sich zurück zu Erde verwandeln, wenn über ihn ein fester Block auftaucht oder sich über ihn ein Kolbenarm ausbreitet. +Hydrated Farmland=Bewässerter Ackerboden +Hydrated farmland is used in farming, this is where you can plant and grow some plants. It is created when farmland is under rain or near water. Without water, this block will dry out eventually. This block will turn back to dirt when a solid block appears above it or a piston arm extends above it.=Bewässerter Ackerboden wird für den Ackerbau benutzt, auf ihm kann man Nutzpflanzen züchten. Er entsteht, wenn sich Ackerboden unter Regen oder in der Nähe von Wasser befindet. Ohne Wasser wird dieser Block irgendwann austrocknen. Dieser Block verwandelt sich zurück zu Erde, wenn über ihm ein fester Block auftaucht, oder ein Kolbenarm sich über ihn bewegt. +Wheat Seeds=Weizensamen +Grows into a wheat plant. Chickens like wheat seeds.=Wachsen zu einer Weizenpflanze heran +Place the wheat seeds on farmland (which can be created with a hoe) to plant a wheat plant. They grow in sunlight and grow faster on hydrated farmland. Rightclick an animal to feed it wheat seeds.=Platzieren Sie die Weizensamen auf Ackerboden (welcher mit einer Hacke gemacht werden kann), um eine Weizenpflanze zu pflanzen. Sie wächst im Sonnenlicht und wächst schneller auf bewässertem Ackerboden. Rechtsklicken Sie auf ein Tier, um es mit Weizensamen zu füttern. +Premature Wheat Plant=Junge Weizenpflanze +Premature wheat plants grow on farmland under sunlight in 8 stages. On hydrated farmland, they grow faster. They can be harvested at any time but will only yield a profit when mature.=Junge Weizenpflanzen wachsen auf Ackerboden im Sonnenlicht in 8 Stufen. Auf bewässertem Ackerboden wachsen sie schneller. Sie können jederzeit abgeerntet werden, aber werden nur ertragreich sein, wenn sie ausgewachsen sind. +Premature Wheat Plant (Stage @1)=Junge Weizenpflanze (@1. Stufe) +Mature Wheat Plant=Ausgewachsene Weizenpflanze +Mature wheat plants are ready to be harvested for wheat and wheat seeds. They won't grow any further.=Ausgewachsene Weizenpflanzen können für Weizen und Weizensamen abgeerntet werden. Sie wachsen nicht weiter. +Wheat=Weizen +Wheat is used in crafting. Some animals like wheat.=Weizen wird in der Herstellung gebraucht. Einige Tiere mögen Weizen. +Cookie=Keks +Bread=Brot +Hay Bale=Heuballen +Hay bales are decorative blocks made from wheat.=Heuballen sind dekorative Blöcke, die aus Weizen gemacht sind. diff --git a/mods/ITEMS/mcl_farming/locale/template.txt b/mods/ITEMS/mcl_farming/locale/template.txt index 36ac6733..089fd506 100644 --- a/mods/ITEMS/mcl_farming/locale/template.txt +++ b/mods/ITEMS/mcl_farming/locale/template.txt @@ -15,7 +15,7 @@ Hold it in your hand and right-click to eat it. Rightclick an animal to feed it. Beetroot Soup= Beetroot soup is a food item.= Premature Carrot Plant= -Carrot plants are plants which grow on farmland under sunlight in 8 stages, of which only 4 are actually visible. On hydrated farmland, they grow a bit faster. They can be harvested at any time but will only yield a profit when mature.= +Carrot plants are plants which grow on farmland under sunlight in 8 stages, but only 4 stages can be visually told apart. On hydrated farmland, they grow a bit faster. They can be harvested at any time but will only yield a profit when mature.= Premature Carrot Plant (Stage @1)= Mature Carrot Plant= Mature carrot plants are ready to be harvested for carrots. They won't grow any further.= @@ -32,8 +32,8 @@ Iron Hoe= Golden Hoe= Diamond Hoe= Melon Seeds= -Grows into a melon. Chickens like melon seeds.= -Place the melon seeds on farmland (which can be created with a hoe) to plant a melon stem. Melons grow in sunlight and grow faster on hydrated farmland. Rightclick an animal to feed it melon seeds.= +Grows into a melon stem which in turn is able to grow melons. Chickens like melon seeds.= +Place the melon seeds on farmland (which can be created with a hoe) to plant a melon stem. Melon stems grow in sunlight and grow faster on hydrated farmland. When mature, the stem will attempt to grow a melon at the side. Rightclick an animal to feed it melon seeds.= Melon= A melon is a block which can be grown from melon stems, which in turn are grown from melon seeds. It can be harvested for melon slices.= Premature Melon Stem= @@ -44,7 +44,7 @@ A mature melon stem attempts to grow a melon at one of its four adjacent blocks. Melon Slice= This is a food item which can be eaten.= Premature Potato Plant= -Potato plants are plants which grow on farmland under sunlight in 8 stages, of which only 4 are actually visible. On hydrated farmland, they grow a bit faster. They can be harvested at any time but will only yield a profit when mature.= +Potato plants are plants which grow on farmland under sunlight in 8 stages, but only 4 stages can be visually told apart. On hydrated farmland, they grow a bit faster. They can be harvested at any time but will only yield a profit when mature.= Premature Potato Plant (Stage @1)= Mature Potato Plant= Mature potato plants are ready to be harvested for potatoes. They won't grow any further.= @@ -56,8 +56,8 @@ Baked potatoes are food items which are more filling than the unbaked ones.= Poisonous Potato= This potato doesn't look too healthy. You can eat it to restore hunger points, but there's a 60% chance it will poison you briefly.= Pumpkin Seeds= -Grows into a pumpkin. Chickens like pumpkin seeds.= -Place the pumpkin seeds on farmland (which can be created with a hoe) to plant a pumpkin stem. Pumpkins grow in sunlight and grow faster on hydrated farmland. Rightclick an animal to feed it pumpkin seeds.= +Grows into a pumpkin stem which in turn is able to grow pumpkins. Chickens like pumpkin seeds.= +Place the pumpkin seeds on farmland (which can be created with a hoe) to plant a pumpkin stem. Pumpkin stems grow in sunlight and grow faster on hydrated farmland. When mature, the stem attempts to grow a pumpkin next to it. Rightclick an animal to feed it pumpkin seeds.= Premature Pumpkin Stem= Pumpkin stems grow on farmland in 8 stages. On hydrated farmland, the growth is a bit quicker. Mature pumpkin stems are able to grow pumpkins.= Premature Pumpkin Stem (Stage @1)= @@ -74,7 +74,7 @@ A pumpkin pie is a tasty food item which can be eaten.= Farmland= Farmland is used for farming, a necessary surface to plant crops. It is created when a hoe is used on dirt or a similar block. Plants are able to grow on farmland, but slowly. Farmland will become hydrated farmland (on which plants grow faster) when it rains or a water source is nearby. This block will turn back to dirt when a solid block appears above it or a piston arm extends above it.= Hydrated Farmland= -Hydrated farmland is used in farming, this is where you can plant and grow some plants. It is created when farmlands is under rain or near water. Without water, this block will dry out eventually. This block will turn back to dirt when a solid block appears above it or a piston arm extends above it.= +Hydrated farmland is used in farming, this is where you can plant and grow some plants. It is created when farmland is under rain or near water. Without water, this block will dry out eventually. This block will turn back to dirt when a solid block appears above it or a piston arm extends above it.= Wheat Seeds= Grows into a wheat plant. Chickens like wheat seeds.= Place the wheat seeds on farmland (which can be created with a hoe) to plant a wheat plant. They grow in sunlight and grow faster on hydrated farmland. Rightclick an animal to feed it wheat seeds.= @@ -86,8 +86,6 @@ Mature wheat plants are ready to be harvested for wheat and wheat seeds. They wo Wheat= Wheat is used in crafting. Some animals like wheat.= Cookie= -This is a food item which can be eaten.= Bread= -This is a food item which can be eaten.= Hay Bale= Hay bales are decorative blocks made from wheat.= diff --git a/mods/ITEMS/mcl_farming/melon.lua b/mods/ITEMS/mcl_farming/melon.lua index fab74474..809cc01c 100644 --- a/mods/ITEMS/mcl_farming/melon.lua +++ b/mods/ITEMS/mcl_farming/melon.lua @@ -3,8 +3,8 @@ local S = minetest.get_translator("mcl_farming") -- Seeds minetest.register_craftitem("mcl_farming:melon_seeds", { description = S("Melon Seeds"), - _doc_items_longdesc = S("Grows into a melon. Chickens like melon seeds."), - _doc_items_usagehelp = S("Place the melon seeds on farmland (which can be created with a hoe) to plant a melon stem. Melons grow in sunlight and grow faster on hydrated farmland. Rightclick an animal to feed it melon seeds."), + _doc_items_longdesc = S("Grows into a melon stem which in turn grows melons. Chickens like melon seeds."), + _doc_items_usagehelp = S("Place the melon seeds on farmland (which can be created with a hoe) to plant a melon stem. Melon stems grow in sunlight and grow faster on hydrated farmland. When mature, the stem will attempt to grow a melon at the side. Rightclick an animal to feed it melon seeds."), stack_max = 64, groups = { craftitem=1 }, inventory_image = "mcl_farming_melon_seeds.png", diff --git a/mods/ITEMS/mcl_farming/potatoes.lua b/mods/ITEMS/mcl_farming/potatoes.lua index 7c795b47..0ffbd1fa 100644 --- a/mods/ITEMS/mcl_farming/potatoes.lua +++ b/mods/ITEMS/mcl_farming/potatoes.lua @@ -19,7 +19,7 @@ for i=1, 7 do if i==1 then create = true name = S("Premature Potato Plant") - longdesc = S("Potato plants are plants which grow on farmland under sunlight in 8 stages, of which only 4 are actually visible. On hydrated farmland, they grow a bit faster. They can be harvested at any time but will only yield a profit when mature.") + longdesc = S("Potato plants are plants which grow on farmland under sunlight in 8 stages, but only 4 stages can be visually told apart. On hydrated farmland, they grow a bit faster. They can be harvested at any time but will only yield a profit when mature.") else create = false if minetest.get_modpath("doc") then diff --git a/mods/ITEMS/mcl_farming/pumpkin.lua b/mods/ITEMS/mcl_farming/pumpkin.lua index 128f3614..acab756f 100644 --- a/mods/ITEMS/mcl_farming/pumpkin.lua +++ b/mods/ITEMS/mcl_farming/pumpkin.lua @@ -3,8 +3,8 @@ local S = minetest.get_translator("mcl_farming") -- Seeds minetest.register_craftitem("mcl_farming:pumpkin_seeds", { description = S("Pumpkin Seeds"), - _doc_items_longdesc = S("Grows into a pumpkin. Chickens like pumpkin seeds."), - _doc_items_usagehelp = S("Place the pumpkin seeds on farmland (which can be created with a hoe) to plant a pumpkin stem. Pumpkins grow in sunlight and grow faster on hydrated farmland. Rightclick an animal to feed it pumpkin seeds."), + _doc_items_longdesc = S("Grows into a pumpkin stem which in turn grows pumpkins. Chickens like pumpkin seeds."), + _doc_items_usagehelp = S("Place the pumpkin seeds on farmland (which can be created with a hoe) to plant a pumpkin stem. Pumpkin stems grow in sunlight and grow faster on hydrated farmland. When mature, the stem attempts to grow a pumpkin next to it. Rightclick an animal to feed it pumpkin seeds."), stack_max = 64, inventory_image = "mcl_farming_pumpkin_seeds.png", groups = { craftitem=1 }, diff --git a/mods/ITEMS/mcl_farming/soil.lua b/mods/ITEMS/mcl_farming/soil.lua index d8e591ec..012a9659 100644 --- a/mods/ITEMS/mcl_farming/soil.lua +++ b/mods/ITEMS/mcl_farming/soil.lua @@ -27,7 +27,7 @@ minetest.register_node("mcl_farming:soil", { minetest.register_node("mcl_farming:soil_wet", { tiles = {"mcl_farming_farmland_wet.png", "default_dirt.png"}, description = S("Hydrated Farmland"), - _doc_items_longdesc = S("Hydrated farmland is used in farming, this is where you can plant and grow some plants. It is created when farmlands is under rain or near water. Without water, this block will dry out eventually. This block will turn back to dirt when a solid block appears above it or a piston arm extends above it."), + _doc_items_longdesc = S("Hydrated farmland is used in farming, this is where you can plant and grow some plants. It is created when farmland is under rain or near water. Without water, this block will dry out eventually. This block will turn back to dirt when a solid block appears above it or a piston arm extends above it."), drop = "mcl_core:dirt", drawtype = "nodebox", paramtype = "light", From e7648517750aaaf3d2e8941be797cdd93b44b558 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Fri, 15 Mar 2019 03:47:16 +0100 Subject: [PATCH 158/737] =?UTF-8?q?German=20translation:=20Dunkeleiche=20?= =?UTF-8?q?=E2=86=92=20Schwarzeiche?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mods/ITEMS/mcl_core/locale/mcl_core.de.tr | 16 ++++++++-------- mods/ITEMS/mcl_doors/locale/mcl_doors.de.tr | 4 ++-- mods/ITEMS/mcl_fences/locale/mcl_fences.de.tr | 16 ++++++++++++++++ 3 files changed, 26 insertions(+), 10 deletions(-) create mode 100644 mods/ITEMS/mcl_fences/locale/mcl_fences.de.tr diff --git a/mods/ITEMS/mcl_core/locale/mcl_core.de.tr b/mods/ITEMS/mcl_core/locale/mcl_core.de.tr index 8657503a..477d64e5 100644 --- a/mods/ITEMS/mcl_core/locale/mcl_core.de.tr +++ b/mods/ITEMS/mcl_core/locale/mcl_core.de.tr @@ -75,13 +75,13 @@ Cut Sandstone=Geschliffener Sandstein Cut red sandstone is a decorative building block.=Geschliffener roter Sandstein ist ein dekorativer Block zum Bauen. Cut sandstone is a decorative building block.=Geschliffener Sandstein ist ein dekorativer Block zum Bauen. Cyan Stained Glass=Türkises Glas -Dark Oak Bark=Dunkeleichenrinde -Dark Oak Leaves=Dunkeleichenblätter -Dark Oak Sapling=Dunkeleichensetzling -Dark Oak Wood=Dunkeleichenholz -Dark Oak Wood Planks=Dunkeleichenholzplanken -Dark oak leaves are grown from dark oak trees.=Dunkeleichenblätter wachsen an Dunkeleichen. -Dark oak saplings can grow into dark oaks, but only in groups. A lonely dark oak sapling won't grow. A group of four dark oak saplings grows into a dark oak after some time when they are placed on soil (such as dirt) in a 2×2 square and exposed to light.=Dunkeleichensetzlinge können zu Dunkeleichen heranwachsen, aber nur in Gruppen. Ein einsamer Dunkeleichensetzling wird nicht wachsen. Eine Gruppe aus vier Dunkeleichensetzlingen werden nach etwas Zeit zu einer Dunkeleiche heranwachen, wenn sie auf einem Erdboden (wie Erde) in einem 2×2-Quadrat platziert wurden und genügend Licht ausgesetzt sind. +Dark Oak Bark=Schwarzeichenrinde +Dark Oak Leaves=Schwarzeichenblätter +Dark Oak Sapling=Schwarzeichensetzling +Dark Oak Wood=Schwarzeichenholz +Dark Oak Wood Planks=Schwarzeichenholzplanken +Dark oak leaves are grown from dark oak trees.=Schwarzeichenblätter wachsen an Schwarzeichen. +Dark oak saplings can grow into dark oaks, but only in groups. A lonely dark oak sapling won't grow. A group of four dark oak saplings grows into a dark oak after some time when they are placed on soil (such as dirt) in a 2×2 square and exposed to light.=Schwarzeichensetzlinge können zu Schwarzeichen heranwachsen, aber nur in Gruppen. Ein einsamer Schwarzeichensetzling wird nicht wachsen. Eine Gruppe aus vier Schwarzeichensetzlingen werden nach etwas Zeit zu einer Schwarzeiche heranwachen, wenn sie auf einem Erdboden (wie Erde) in einem 2×2-Quadrat platziert wurden und genügend Licht ausgesetzt sind. Dead Bush=Toter Busch Dead bushes are unremarkable plants often found in dry areas. They can be harvested for sticks.=Tote Büsche sind uninteressante Pflanzen, die oft in trockenen Gebieten vorkommen. Diamond=Diamant @@ -210,7 +210,7 @@ Sugar canes are a plant which has some uses in crafting. Sugar canes will slowly Sugar canes can only be placed top of other sugar canes and on top of blocks on which they would grow.=Zuckerrohr kann nur auf Zuckerrohr platziert werden und auf Blöcken, auf denen Zuckerrohr wachsen würde. Sugar comes from sugar canes and is used to make sweet foods.=Zucker kommt von Zuckerrohr und wird benutzt, um süße Lebensmittel zu machen. The trunk of a birch tree.=Der Baumstamm einer Birke. -The trunk of a dark oak tree.=Der Baumstamm einer Dunkeleiche. +The trunk of a dark oak tree.=Der Baumstamm einer Schwarzeiche. The trunk of a jungle tree.=Der Baumstamm eines Dschungelbaums. The trunk of a spruce tree.=Der Baumstamm einer Fichte. The trunk of an acacia.=Der Baumstamm einer Akazie. diff --git a/mods/ITEMS/mcl_doors/locale/mcl_doors.de.tr b/mods/ITEMS/mcl_doors/locale/mcl_doors.de.tr index dfa0a3ab..b4676022 100644 --- a/mods/ITEMS/mcl_doors/locale/mcl_doors.de.tr +++ b/mods/ITEMS/mcl_doors/locale/mcl_doors.de.tr @@ -4,7 +4,7 @@ To open or close a wooden door, rightclick it or supply its lower half with a re Oak Door=Eichentür Acacia Door=Akazientür Birch Door=Birkentür -Dark Oak Door=Dunkeleichentür +Dark Oak Door=Schwarzeichentür Jungle Door=Dschungeltür Spruce Door=Fichtentür Iron Door=Eisentür @@ -14,7 +14,7 @@ Oak Trapdoor=Eichenfalltür Acacia Trapdoor=Akazienfalltür Birch Trapdoor=Birkenfalltür Spruce Trapdoor=Fichtenfalltür -Dark Oak Trapdoor=Dunkeleichenfalltür +Dark Oak Trapdoor=Schwarzeichenfalltür Jungle Trapdoor=Dschungelfalltür Wooden trapdoors are horizontal barriers which can be opened and closed by hand or a redstone signal. They occupy the upper or lower part of a block, depending on how they have been placed. When open, they can be climbed like a ladder.=Holzfalltüren sind horizontale Barrieren, die von Hand oder mit einem Redstone-Signal geöffnet oder geschlossen werden können. Sie belegen den oberen oder unteren Teil eines Blocks, je nach dem, wie sie platziert wurden. Wenn geöffnet, können sie wie eine Leiter erklommen werden. To open or close the trapdoor, rightclick it or send a redstone signal to it.=Um die Falltür zu öffnen oder zu schließen, rechtsklicken Sie sie oder schicken Sie ein Redstone-Signal zu ihr. diff --git a/mods/ITEMS/mcl_fences/locale/mcl_fences.de.tr b/mods/ITEMS/mcl_fences/locale/mcl_fences.de.tr new file mode 100644 index 00000000..1b77e8a3 --- /dev/null +++ b/mods/ITEMS/mcl_fences/locale/mcl_fences.de.tr @@ -0,0 +1,16 @@ +# textdomain: mcl_fences +Fences are structures which block the way. Fences will connect to each other and solid blocks. They cannot be jumped over with a simple jump.=Zäune sind Gebäude, die den Weg blockieren. Sie verbinden sich gegenseitig und anderen festen Blöcken. Man kann sie nicht mit normalen Sprüngen überspringen. +Fence gates can be opened or closed and can't be jumped over. Fences will connect nicely to fence gates.=Zauntore können geöffnet und geschlossen werden und können nicht übersprungen werden. Zäune werden sich gut mit Zauntoren verbinden. +Right-click the fence gate to open or close it.=Rechtsklicken Sie auf ein Zauntor, um es zu öffnen oder zu schließen. +Oak Fence=Eichenzaun +Oak Fence Gate=Eichenzauntor +Spruce Fence=Fichtenzaun +Spruce Fence Gate=Fichtenzauntor +Birch Fence=Birkenzaun +Birch Fence Gate=Birkenzauntor +Jungle Fence=Dschungelzaun +Jungle Fence Gate=Dschungelzauntor +Dark Oak Fence=Schwarzeichenzaun +Dark Oak Fence Gate=Schwarzeichenzauntor +Acacia Fence=Akazienzaun +Acacia Fence Gate=Akazienzauntor From f5c1e19781c8cb721efb5d7b528a5c8eb6f9dd37 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Fri, 15 Mar 2019 04:25:54 +0100 Subject: [PATCH 159/737] Add help for disabled fire and translate --- mods/ITEMS/mcl_fire/init.lua | 43 +++++++++++++++-------- mods/ITEMS/mcl_fire/locale/mcl_fire.de.tr | 16 +++++++++ mods/ITEMS/mcl_fire/locale/template.txt | 3 +- settingtypes.txt | 10 +++--- 4 files changed, 51 insertions(+), 21 deletions(-) create mode 100644 mods/ITEMS/mcl_fire/locale/mcl_fire.de.tr diff --git a/mods/ITEMS/mcl_fire/init.lua b/mods/ITEMS/mcl_fire/init.lua index 0ffaf775..fa064621 100644 --- a/mods/ITEMS/mcl_fire/init.lua +++ b/mods/ITEMS/mcl_fire/init.lua @@ -10,8 +10,34 @@ local S = minetest.get_translator("mcl_fire") -- Flame nodes -local fire_help = S("Fire is a damaging and destructive but short-lived kind of block. It will destroy and spread towards near flammable blocks, but fire will disappear when there is nothing to burn left. It will be extinguished by nearby water and rain. Fire can be destroyed safely by punching it, but it is hurtful if you stand directly in it. If a fire is started above netherrack or a magma block, it will immediately turn into an eternal fire.") -local eternal_fire_help = S("Eternal fire is a damaging and destructive block. It will create fire around it when flammable blocks are nearby. Eternal fire can be extinguished by punches and nearby water blocks. Other than (normal) fire, eternal fire does not get extinguished on its own and also continues to burn under rain. Punching eternal fire is safe, but it hurts if you stand inside.") +-- Fire settings + +-- When enabled, fire destroys other blocks. +local fire_enabled = minetest.settings:get_bool("enable_fire") +if fire_enabled == nil then + -- New setting not specified, check for old setting. + -- If old setting is also not specified, 'not nil' is true. + fire_enabled = not minetest.settings:get_bool("disable_fire") +end + +-- Enable sound +local flame_sound = minetest.settings:get_bool("flame_sound") +if flame_sound == nil then + -- Enable if no setting present + flame_sound = true +end + + +-- Help texts +local fire_help +if fire_enabled then + fire_help = S("Fire is a damaging and destructive but short-lived kind of block. It will destroy and spread towards near flammable blocks, but fire will disappear when there is nothing to burn left. It will be extinguished by nearby water and rain. Fire can be destroyed safely by punching it, but it is hurtful if you stand directly in it. If a fire is started above netherrack or a magma block, it will immediately turn into an eternal fire.") +else + fire_help = S("Fire is a damaging but non-destructive short-lived kind of block. It will disappear when there is flammable block around. Fire does neither spread nor destroy blocks, at least not in this world. It will be extinguished by nearby water and rain. Fire can be destroyed safely by punching it, but it is hurtful if you stand directly in it. If a fire is started above netherrack or a magma block, it will immediately turn into an eternal fire.") +end + +local eternal_fire_help = S("Eternal fire is a damaging block that might create more fire. It will create fire around it when flammable blocks are nearby. Eternal fire can be extinguished by punches and nearby water blocks. Other than (normal) fire, eternal fire does not get extinguished on its own and also continues to burn under rain. Punching eternal fire is safe, but it hurts if you stand inside.") + local fire_death_messages = { S("%s has been cooked crisp."), S("%s felt the burn."), @@ -191,12 +217,6 @@ minetest.override_item("mcl_core:lava_source", { -- Sound -- -local flame_sound = minetest.settings:get_bool("flame_sound") -if flame_sound == nil then - -- Enable if no setting present - flame_sound = true -end - if flame_sound then local handles = {} @@ -327,13 +347,6 @@ minetest.register_abm({ -- Enable the following ABMs according to 'enable fire' setting -local fire_enabled = minetest.settings:get_bool("enable_fire") -if fire_enabled == nil then - -- New setting not specified, check for old setting. - -- If old setting is also not specified, 'not nil' is true. - fire_enabled = not minetest.settings:get_bool("disable_fire") -end - if not fire_enabled then -- Remove fire only if fire disabled diff --git a/mods/ITEMS/mcl_fire/locale/mcl_fire.de.tr b/mods/ITEMS/mcl_fire/locale/mcl_fire.de.tr new file mode 100644 index 00000000..29adafc9 --- /dev/null +++ b/mods/ITEMS/mcl_fire/locale/mcl_fire.de.tr @@ -0,0 +1,16 @@ +# textdomain: mcl_fire +Fire Charge=Feuerkugel +Fire charges are primarily projectiles which can be launched from dispensers, they will fly in a straight line and burst into a fire on impact. Alternatively, they can be used to ignite fires directly.=Feuerkugeln sind hauptsächlich Projektile, die von Werfern geworfen werden können, sie werden in einer geraden Linie fliegen und gehen beim Einschlag in Flammen auf. Alternativ können sie benutzt werden, um direkt ein Feuer zu entfachen. +Put the fire charge into a dispenser and supply it with redstone power to launch it. To ignite a fire directly, simply place the fire charge on the ground, which uses it up.=Legen Sie die Feuerkugel in den Werfer und versorgen Sie ihn mit Redstone-Energie, um sie abzufeuern. Um ein Feuer zu entfachen, platzieren Sie die Feuerkugel auf den Boden, was die Kugel verbraucht. +Flint and Steel=Feuerzeug +Flint and steel is a tool to start fires and ignite blocks.=Ein Feuerzeug ist ein Werkzeug, um Feuer zu entfachen und Blöcke anzuzünden. +Rightclick the surface of a block to attempt to light a fire in front of it or ignite the block. A few blocks have an unique reaction when ignited.=Rechtsklicken Sie auf die Oberfläche eines Blocks, um zu versuchen, ein Feuer auf ihm zu entfachen, oder den Block selbst anzuzünden. Ein paar Blocke reagieren besonders, wenn sie angezündet werden. +Fire is a damaging and destructive but short-lived kind of block. It will destroy and spread towards near flammable blocks, but fire will disappear when there is nothing to burn left. It will be extinguished by nearby water and rain. Fire can be destroyed safely by punching it, but it is hurtful if you stand directly in it. If a fire is started above netherrack or a magma block, it will immediately turn into an eternal fire.=Feuer ist ein schädlicher und destruktiver aber kurzlebiger Block. Es wird sich zu entzündlichen Blöcken ausbreiten und sie zerstören, aber Feuer wird verschwinden, wenn es nichts brennbares mehr gibt. Es wird von Wasser und Regen gelöscht. Feuer kann sicher mit einem Schlag zerstört werden, aber es tut weh, wenn man direkt in ihm steht. Wird ein Feuer über Netherrack oder einem Magmablock entfacht, wird er sich sofort zu einem ewigen Feuer verwandeln. +Fire is a damaging but non-destructive short-lived kind of block. It will disappear when there is flammable block around. Fire does neither spread nor destroy blocks, at least not in this world. It will be extinguished by nearby water and rain. Fire can be destroyed safely by punching it, but it is hurtful if you stand directly in it. If a fire is started above netherrack or a magma block, it will immediately turn into an eternal fire.=Feuer ist ein schädlicher aber nicht-destruktiver kurzlebiger Block. Es wird verschwinden, wenn keine entzündlichen Blöcke da sind. Feuer breitet sich nicht aus und zerstört keine Blöcke, zumindest nicht in dieser Welt. Es wird von Wasser und Regen gelöscht. Feuer kann sicher mit einem Schlag zerstört werden, aber es tut weh, wenn man direkt in ihm steht. Wird ein Feuer über Netherrack oder einem Magmablock entfacht, wird er sich sofort zu einem ewigen Feuer verwandeln. +Eternal fire is a damaging block that might create more fire. It will create fire around it when flammable blocks are nearby. Eternal fire can be extinguished by punches and nearby water blocks. Other than (normal) fire, eternal fire does not get extinguished on its own and also continues to burn under rain. Punching eternal fire is safe, but it hurts if you stand inside.=Ewiges Feuer ist ein schädlicher Block, der mehr Feuer machen kann. Er wird um sich Feuer machen, wenn entflammbare Blöcke in der Nähe sind. Ewiges Feuer kann von Schlägen und Wasserblöcken in der Nähe gelöscht werden. Anders als (normales) Feuer geht ein ewiges Fuer nicht von alleine aus, auf nicht unter Regen. Es ist sicher, ein ewiges Feuer zu schlagen, aber es tut weh, wenn man direkt in einem steht. +%s has been cooked crisp.=%s wurde knusprig gebraten. +%s felt the burn.=%s ist völlig verbrannt. +%s died in the flames.=%s starb in den Flammen. +%s died in a fire.=%s starb in einem Feuer. +Fire=Feuer +Eternal Fire=Ewiges Feuer diff --git a/mods/ITEMS/mcl_fire/locale/template.txt b/mods/ITEMS/mcl_fire/locale/template.txt index d691bf22..bda1a892 100644 --- a/mods/ITEMS/mcl_fire/locale/template.txt +++ b/mods/ITEMS/mcl_fire/locale/template.txt @@ -6,7 +6,8 @@ Flint and Steel= Flint and steel is a tool to start fires and ignite blocks.= Rightclick the surface of a block to attempt to light a fire in front of it or ignite the block. A few blocks have an unique reaction when ignited.= Fire is a damaging and destructive but short-lived kind of block. It will destroy and spread towards near flammable blocks, but fire will disappear when there is nothing to burn left. It will be extinguished by nearby water and rain. Fire can be destroyed safely by punching it, but it is hurtful if you stand directly in it. If a fire is started above netherrack or a magma block, it will immediately turn into an eternal fire.= -Eternal fire is a damaging and destructive block. It will create fire around it when flammable blocks are nearby. Eternal fire can be extinguished by punches and nearby water blocks. Other than (normal) fire, eternal fire does not get extinguished on its own and also continues to burn under rain. Punching eternal fire is safe, but it hurts if you stand inside.= +Fire is a damaging but non-destructive short-lived kind of block. It will disappear when there is flammable block around. Fire does neither spread nor destroy blocks, at least not in this world. It will be extinguished by nearby water and rain. Fire can be destroyed safely by punching it, but it is hurtful if you stand directly in it. If a fire is started above netherrack or a magma block, it will immediately turn into an eternal fire.= +Eternal fire is a damaging block that might create more fire. It will create fire around it when flammable blocks are nearby. Eternal fire can be extinguished by punches and nearby water blocks. Other than (normal) fire, eternal fire does not get extinguished on its own and also continues to burn under rain. Punching eternal fire is safe, but it hurts if you stand inside.= %s has been cooked crisp.= %s felt the burn.= %s died in the flames.= diff --git a/settingtypes.txt b/settingtypes.txt index ae31f930..d39f3379 100644 --- a/settingtypes.txt +++ b/settingtypes.txt @@ -11,11 +11,11 @@ # per-player Creative Mode. creative_mode (Creative mode) bool false -# Fire spreads and flammable nodes will be ignited by nearby fire. -# Spreading fire may cause severe destruction. -# Spreading fire blocks will disappear when fire is disabled, but -# eternal fire is unaffected. -enable_fire (Fire) bool true +# Fire spreads and flammable blocks might be destroyed by nearby fire. +# Destructive fire may cause severe destruction. +# Fire blocks will be non-destructive when this setting is disabled, but they +# still deal damage to creatures. Eternal fire is unaffected. +enable_fire (Destructive fire) bool true # If enabled, the weather will change naturally over time. mcl_doWeatherCycle (Change weather) bool true From 86e5eb748f1adc168043a831edfb1f6905d96c0d Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Fri, 15 Mar 2019 04:36:17 +0100 Subject: [PATCH 160/737] More fire fixes --- mods/ITEMS/mcl_fire/init.lua | 4 ++-- mods/ITEMS/mcl_fire/locale/mcl_fire.de.tr | 2 +- mods/ITEMS/mcl_fire/locale/template.txt | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/mods/ITEMS/mcl_fire/init.lua b/mods/ITEMS/mcl_fire/init.lua index fa064621..73c2e973 100644 --- a/mods/ITEMS/mcl_fire/init.lua +++ b/mods/ITEMS/mcl_fire/init.lua @@ -33,7 +33,7 @@ local fire_help if fire_enabled then fire_help = S("Fire is a damaging and destructive but short-lived kind of block. It will destroy and spread towards near flammable blocks, but fire will disappear when there is nothing to burn left. It will be extinguished by nearby water and rain. Fire can be destroyed safely by punching it, but it is hurtful if you stand directly in it. If a fire is started above netherrack or a magma block, it will immediately turn into an eternal fire.") else - fire_help = S("Fire is a damaging but non-destructive short-lived kind of block. It will disappear when there is flammable block around. Fire does neither spread nor destroy blocks, at least not in this world. It will be extinguished by nearby water and rain. Fire can be destroyed safely by punching it, but it is hurtful if you stand directly in it. If a fire is started above netherrack or a magma block, it will immediately turn into an eternal fire.") + fire_help = S("Fire is a damaging but non-destructive short-lived kind of block. It will disappear when there is no flammable block around. Fire does not destroy blocks, at least not in this world. It will be extinguished by nearby water and rain. Fire can be destroyed safely by punching it, but it is hurtful if you stand directly in it. If a fire is started above netherrack or a magma block, it will immediately turn into an eternal fire.") end local eternal_fire_help = S("Eternal fire is a damaging block that might create more fire. It will create fire around it when flammable blocks are nearby. Eternal fire can be extinguished by punches and nearby water blocks. Other than (normal) fire, eternal fire does not get extinguished on its own and also continues to burn under rain. Punching eternal fire is safe, but it hurts if you stand inside.") @@ -354,7 +354,7 @@ if not fire_enabled then label = "Remove disabled fire", nodenames = {"mcl_fire:fire"}, interval = 7, - chance = 1, + chance = 3, catch_up = false, action = minetest.remove_node, }) diff --git a/mods/ITEMS/mcl_fire/locale/mcl_fire.de.tr b/mods/ITEMS/mcl_fire/locale/mcl_fire.de.tr index 29adafc9..1d50cc91 100644 --- a/mods/ITEMS/mcl_fire/locale/mcl_fire.de.tr +++ b/mods/ITEMS/mcl_fire/locale/mcl_fire.de.tr @@ -6,7 +6,7 @@ Flint and Steel=Feuerzeug Flint and steel is a tool to start fires and ignite blocks.=Ein Feuerzeug ist ein Werkzeug, um Feuer zu entfachen und Blöcke anzuzünden. Rightclick the surface of a block to attempt to light a fire in front of it or ignite the block. A few blocks have an unique reaction when ignited.=Rechtsklicken Sie auf die Oberfläche eines Blocks, um zu versuchen, ein Feuer auf ihm zu entfachen, oder den Block selbst anzuzünden. Ein paar Blocke reagieren besonders, wenn sie angezündet werden. Fire is a damaging and destructive but short-lived kind of block. It will destroy and spread towards near flammable blocks, but fire will disappear when there is nothing to burn left. It will be extinguished by nearby water and rain. Fire can be destroyed safely by punching it, but it is hurtful if you stand directly in it. If a fire is started above netherrack or a magma block, it will immediately turn into an eternal fire.=Feuer ist ein schädlicher und destruktiver aber kurzlebiger Block. Es wird sich zu entzündlichen Blöcken ausbreiten und sie zerstören, aber Feuer wird verschwinden, wenn es nichts brennbares mehr gibt. Es wird von Wasser und Regen gelöscht. Feuer kann sicher mit einem Schlag zerstört werden, aber es tut weh, wenn man direkt in ihm steht. Wird ein Feuer über Netherrack oder einem Magmablock entfacht, wird er sich sofort zu einem ewigen Feuer verwandeln. -Fire is a damaging but non-destructive short-lived kind of block. It will disappear when there is flammable block around. Fire does neither spread nor destroy blocks, at least not in this world. It will be extinguished by nearby water and rain. Fire can be destroyed safely by punching it, but it is hurtful if you stand directly in it. If a fire is started above netherrack or a magma block, it will immediately turn into an eternal fire.=Feuer ist ein schädlicher aber nicht-destruktiver kurzlebiger Block. Es wird verschwinden, wenn keine entzündlichen Blöcke da sind. Feuer breitet sich nicht aus und zerstört keine Blöcke, zumindest nicht in dieser Welt. Es wird von Wasser und Regen gelöscht. Feuer kann sicher mit einem Schlag zerstört werden, aber es tut weh, wenn man direkt in ihm steht. Wird ein Feuer über Netherrack oder einem Magmablock entfacht, wird er sich sofort zu einem ewigen Feuer verwandeln. +Fire is a damaging but non-destructive short-lived kind of block. It will disappear when there is no flammable block around. Fire does not destroy blocks, at least not in this world. It will be extinguished by nearby water and rain. Fire can be destroyed safely by punching it, but it is hurtful if you stand directly in it. If a fire is started above netherrack or a magma block, it will immediately turn into an eternal fire.=Feuer ist ein schädlicher aber nicht-destruktiver kurzlebiger Block. Es wird verschwinden, wenn sich keine entzündlichen Blöcke in der Nähe befinden. Feuer breitet sich nicht aus und zerstört keine Blöcke, zumindest nicht in dieser Welt. Es wird von Wasser und Regen gelöscht. Feuer kann sicher mit einem Schlag zerstört werden, aber es tut weh, wenn man direkt in ihm steht. Wird ein Feuer über Netherrack oder einem Magmablock entfacht, wird er sich sofort zu einem ewigen Feuer verwandeln. Eternal fire is a damaging block that might create more fire. It will create fire around it when flammable blocks are nearby. Eternal fire can be extinguished by punches and nearby water blocks. Other than (normal) fire, eternal fire does not get extinguished on its own and also continues to burn under rain. Punching eternal fire is safe, but it hurts if you stand inside.=Ewiges Feuer ist ein schädlicher Block, der mehr Feuer machen kann. Er wird um sich Feuer machen, wenn entflammbare Blöcke in der Nähe sind. Ewiges Feuer kann von Schlägen und Wasserblöcken in der Nähe gelöscht werden. Anders als (normales) Feuer geht ein ewiges Fuer nicht von alleine aus, auf nicht unter Regen. Es ist sicher, ein ewiges Feuer zu schlagen, aber es tut weh, wenn man direkt in einem steht. %s has been cooked crisp.=%s wurde knusprig gebraten. %s felt the burn.=%s ist völlig verbrannt. diff --git a/mods/ITEMS/mcl_fire/locale/template.txt b/mods/ITEMS/mcl_fire/locale/template.txt index bda1a892..b7fdd996 100644 --- a/mods/ITEMS/mcl_fire/locale/template.txt +++ b/mods/ITEMS/mcl_fire/locale/template.txt @@ -6,7 +6,7 @@ Flint and Steel= Flint and steel is a tool to start fires and ignite blocks.= Rightclick the surface of a block to attempt to light a fire in front of it or ignite the block. A few blocks have an unique reaction when ignited.= Fire is a damaging and destructive but short-lived kind of block. It will destroy and spread towards near flammable blocks, but fire will disappear when there is nothing to burn left. It will be extinguished by nearby water and rain. Fire can be destroyed safely by punching it, but it is hurtful if you stand directly in it. If a fire is started above netherrack or a magma block, it will immediately turn into an eternal fire.= -Fire is a damaging but non-destructive short-lived kind of block. It will disappear when there is flammable block around. Fire does neither spread nor destroy blocks, at least not in this world. It will be extinguished by nearby water and rain. Fire can be destroyed safely by punching it, but it is hurtful if you stand directly in it. If a fire is started above netherrack or a magma block, it will immediately turn into an eternal fire.= +Fire is a damaging but non-destructive short-lived kind of block. It will disappear when there is no flammable block around. Fire does not destroy blocks, at least not in this world. It will be extinguished by nearby water and rain. Fire can be destroyed safely by punching it, but it is hurtful if you stand directly in it. If a fire is started above netherrack or a magma block, it will immediately turn into an eternal fire.= Eternal fire is a damaging block that might create more fire. It will create fire around it when flammable blocks are nearby. Eternal fire can be extinguished by punches and nearby water blocks. Other than (normal) fire, eternal fire does not get extinguished on its own and also continues to burn under rain. Punching eternal fire is safe, but it hurts if you stand inside.= %s has been cooked crisp.= %s felt the burn.= From 77ab44217afdecacb05e5f409a38e8f69670d819 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Fri, 15 Mar 2019 06:12:03 +0100 Subject: [PATCH 161/737] German transl.: mcl_fishing to mcl_maps + fixes --- .../mcl_banners/locale/mcl_banners.de.tr | 2 +- mods/ITEMS/mcl_beds/locale/mcl_beds.de.tr | 2 +- mods/ITEMS/mcl_chests/locale/mcl_chests.de.tr | 2 +- .../locale/mcl_colorblocks.de.tr | 8 ++--- mods/ITEMS/mcl_dye/locale/mcl_dye.de.tr | 2 +- .../mcl_fishing/locale/mcl_fishing.de.tr | 16 +++++++++ mods/ITEMS/mcl_flowerpots/init.lua | 6 ++-- .../locale/mcl_flowerpots.de.tr | 25 ++++++++++++++ mods/ITEMS/mcl_flowerpots/locale/template.txt | 5 +-- mods/ITEMS/mcl_flowers/init.lua | 4 +-- .../mcl_flowers/locale/mcl_flowers.de.tr | 33 +++++++++++++++++++ mods/ITEMS/mcl_flowers/locale/template.txt | 4 +-- mods/ITEMS/mcl_furnaces/init.lua | 4 ++- .../mcl_furnaces/locale/mcl_furnaces.de.tr | 6 ++++ mods/ITEMS/mcl_furnaces/locale/template.txt | 3 +- mods/ITEMS/mcl_heads/init.lua | 4 +-- mods/ITEMS/mcl_heads/locale/mcl_heads.de.tr | 11 +++++++ mods/ITEMS/mcl_heads/locale/template.txt | 4 +-- mods/ITEMS/mcl_hoppers/init.lua | 14 ++++---- .../mcl_hoppers/locale/mcl_hoppers.de.tr | 12 +++++++ mods/ITEMS/mcl_hoppers/locale/template.txt | 10 ++++-- mods/ITEMS/mcl_itemframes/init.lua | 2 +- .../locale/mcl_itemframes.de.tr | 5 +++ mods/ITEMS/mcl_itemframes/locale/template.txt | 2 +- mods/ITEMS/mcl_jukebox/init.lua | 2 +- .../mcl_jukebox/locale/mcl_jukebox.de.tr | 9 +++++ mods/ITEMS/mcl_jukebox/locale/template.txt | 2 +- mods/ITEMS/mcl_maps/init.lua | 3 +- mods/ITEMS/mcl_maps/locale/mcl_maps.de.tr | 8 +++++ mods/ITEMS/mcl_maps/locale/template.txt | 3 +- 30 files changed, 174 insertions(+), 39 deletions(-) create mode 100644 mods/ITEMS/mcl_fishing/locale/mcl_fishing.de.tr create mode 100644 mods/ITEMS/mcl_flowerpots/locale/mcl_flowerpots.de.tr create mode 100644 mods/ITEMS/mcl_flowers/locale/mcl_flowers.de.tr create mode 100644 mods/ITEMS/mcl_furnaces/locale/mcl_furnaces.de.tr create mode 100644 mods/ITEMS/mcl_heads/locale/mcl_heads.de.tr create mode 100644 mods/ITEMS/mcl_hoppers/locale/mcl_hoppers.de.tr create mode 100644 mods/ITEMS/mcl_itemframes/locale/mcl_itemframes.de.tr create mode 100644 mods/ITEMS/mcl_jukebox/locale/mcl_jukebox.de.tr create mode 100644 mods/ITEMS/mcl_maps/locale/mcl_maps.de.tr diff --git a/mods/ITEMS/mcl_banners/locale/mcl_banners.de.tr b/mods/ITEMS/mcl_banners/locale/mcl_banners.de.tr index 6e8812c8..958192ba 100644 --- a/mods/ITEMS/mcl_banners/locale/mcl_banners.de.tr +++ b/mods/ITEMS/mcl_banners/locale/mcl_banners.de.tr @@ -25,7 +25,7 @@ Purple Banner=Violettes Banner Purple=violett Brown Banner=Braunes Banner Brown=braun -Pink Banner=Rosanes Banner +Pink Banner=Rosa Banner Pink=rosa Lime Banner=Lindgrünes Banner Lime=lindgrün diff --git a/mods/ITEMS/mcl_beds/locale/mcl_beds.de.tr b/mods/ITEMS/mcl_beds/locale/mcl_beds.de.tr index c496249b..1404bbf8 100644 --- a/mods/ITEMS/mcl_beds/locale/mcl_beds.de.tr +++ b/mods/ITEMS/mcl_beds/locale/mcl_beds.de.tr @@ -17,7 +17,7 @@ Magenta Bed=Magenta Bett Orange Bed=Orange Bett Purple Bed=Violettes Bett Brown Bed=Braunes Bett -Pink Bed=Rosanes Bett +Pink Bed=Rosa Bett Lime Bed=Lindgrünes Bett Light Blue Bed=Hellblaues Bett White Bed=Weißes Bett diff --git a/mods/ITEMS/mcl_chests/locale/mcl_chests.de.tr b/mods/ITEMS/mcl_chests/locale/mcl_chests.de.tr index 63f8dd4c..d6f5f4c4 100644 --- a/mods/ITEMS/mcl_chests/locale/mcl_chests.de.tr +++ b/mods/ITEMS/mcl_chests/locale/mcl_chests.de.tr @@ -19,7 +19,7 @@ Yellow Shulker Box=Gelbe Shulkerkiste Brown Shulker Box=Braune Shulkerkiste Lime Shulker Box=Lindgrüne Shulkerkiste Green Shulker Box=Grüne Shulkerkiste -Pink Shulker Box=Rosane Shulkerkiste +Pink Shulker Box=Rosa Shulkerkiste Red Shulker Box=Rote Shulkerkiste Grey Shulker Box=Graue Shulkerkiste Black Shulker Box=Schwarze Shulkerkiste diff --git a/mods/ITEMS/mcl_colorblocks/locale/mcl_colorblocks.de.tr b/mods/ITEMS/mcl_colorblocks/locale/mcl_colorblocks.de.tr index 1c66d6b5..372bd346 100644 --- a/mods/ITEMS/mcl_colorblocks/locale/mcl_colorblocks.de.tr +++ b/mods/ITEMS/mcl_colorblocks/locale/mcl_colorblocks.de.tr @@ -51,10 +51,10 @@ Brown Terracotta=Braune Terrakotta Brown Glazed Terracotta=Braune glasierte Terrakotta Brown Concrete Powder=Braunes Betonpulver Brown Concrete=Brauner Beton -Pink Terracotta=Rosane Terrakotta -Pink Glazed Terracotta=Rosane glasierte Terrakotta -Pink Concrete Powder=Rosanes Betonpulver -Pink Concrete=Rosaner Beton +Pink Terracotta=Rosa Terrakotta +Pink Glazed Terracotta=Rosa glasierte Terrakotta +Pink Concrete Powder=Rosa Betonpulver +Pink Concrete=Rosa Beton Lime Terracotta=Lindgrüne Terrakotta Lime Glazed Terracotta=Lindgrüne glasierte Terrakotta Lime Concrete Powder=Lindgrünes Betonpulver diff --git a/mods/ITEMS/mcl_dye/locale/mcl_dye.de.tr b/mods/ITEMS/mcl_dye/locale/mcl_dye.de.tr index a846d4e6..55ec038f 100644 --- a/mods/ITEMS/mcl_dye/locale/mcl_dye.de.tr +++ b/mods/ITEMS/mcl_dye/locale/mcl_dye.de.tr @@ -14,7 +14,7 @@ Cocoa Beans=Kakaobohnen Orange Dye=Orange Farbstoff Rose Red=Rosenrot Magenta Dye=Magenta Farbstoff -Pink Dye=Rosaner Farbstoff +Pink Dye=Rosa Farbstoff This item is a dye which is used for dyeing and crafting.=Dieser Gegenstand ist ein Farbstoff, der zum Einfärben und in der Herstellung benutzt werden kann. Rightclick on a sheep to dye its wool. Other things are dyed by crafting.=Rechtsklicken Sie auf ein Schaf, um seine Wolle zu färben. Andere Dinge werden mit der Fertigung eingefärbt. Bone Meal=Knochenmehl diff --git a/mods/ITEMS/mcl_fishing/locale/mcl_fishing.de.tr b/mods/ITEMS/mcl_fishing/locale/mcl_fishing.de.tr new file mode 100644 index 00000000..32500e0b --- /dev/null +++ b/mods/ITEMS/mcl_fishing/locale/mcl_fishing.de.tr @@ -0,0 +1,16 @@ +# textdomain: mcl_fishing +Fishing Rod=Angel +Fishing rods can be used to catch fish.=Mit Angeln fängt man Fische. +Rightclick a water source to try to go fishing. Who knows what you're going to catch?=Rechtsklicken sie auf eine Wasserquelle, um zu angeln. Wer weiß, was Sie wohl fangen werfen? +Raw Fish=Roher Fisch +Raw fish is obtained by fishing and is a food item which can be eaten safely. Cooking it improves its nutritional value.=Rohen Fisch kann man mit Angeln fangen. Er ist ein Lebensmittel, den man sicher verzehren kann. Er kann gekocht werden, um seinen Nährwert zu erhöhen. +Cooked Fish=Gekochter Fisch +Mmh, fish! This is a healthy food item.=Mhh, Fisch! Ein gesundes Lebensmittel. +Raw Salmon=Roher Lachs +Raw salmon is obtained by fishing and is a food item which can be eaten safely. Cooking it improves its nutritional value.=Lohen Lachs erhält man beim Angeln. Er ist ein Lebensmittel, der sicher verzehrt werden kann. +Cooked Salmon=Gekochter Lachs +This is a healthy food item which can be eaten.=Ein gesundes essbares Lebensmittel. +Clownfish=Clownfisch +Clownfish may be obtained by fishing (and luck) and is a food item which can be eaten safely.=Einen Clownfisch kann man beim Angeln mit etwas Glück fangen. Er ist ein Lebensmittel, der sicher verzehrt werden kann. +Pufferfish=Kugelfisch +Pufferfish are a common species of fish and can be obtained by fishing. They can technically be eaten, but they are very bad for humans. Eating a pufferfish only restores 1 hunger point and will poison you very badly (which drains your health non-fatally) and causes serious food poisoning (which increases your hunger).=Kugelfische sind eine verbreitete Fischart, die geangelt werden können. Sie können theoretisch gegessen werden, aber sie sind sehr schlecht für Menschen. Es gibt nur 1 Hungerpunkt und es wird Sie schwer vergiften (was Ihre Gesundheit verringert, aber nicht bis zum Tod) und Ihr Hungerpegel wird aufgrund der schweren Lebensmittelvergiftung stark ansteigen. diff --git a/mods/ITEMS/mcl_flowerpots/init.lua b/mods/ITEMS/mcl_flowerpots/init.lua index d0d74da8..3131abd1 100644 --- a/mods/ITEMS/mcl_flowerpots/init.lua +++ b/mods/ITEMS/mcl_flowerpots/init.lua @@ -2,7 +2,7 @@ local S = minetest.get_translator("mcl_flowerpots") local flowers = { {"dandelion", "mcl_flowers:dandelion", S("Dandelion Flower Pot")}, - {"poppy", "mcl_flowers:poppy", S("Poppy Floer Pot")}, + {"poppy", "mcl_flowers:poppy", S("Poppy Flower Pot")}, {"blue_orchid", "mcl_flowers:blue_orchid", S("Blue Orchid Flower Pot")}, {"allium", "mcl_flowers:allium", S("Allium Flower Pot")}, {"azure_bluet", "mcl_flowers:azure_bluet", S("Azure Bluet Flower Pot")}, @@ -24,13 +24,13 @@ local flowers = { } local cubes = { - {"cactus", "mcl_core:cactus", "Cactus Flower Pot"}, + {"cactus", "mcl_core:cactus", S("Cactus Flower Pot")}, } minetest.register_node("mcl_flowerpots:flower_pot", { description = S("Flower Pot"), _doc_items_longdesc = S("Flower pots are decorative blocks in which flowers and other small plants can be placed."), - _doc_items_usagehelp = S("Rightclick an empty flower pot while you wield a plant to place the plant. Flower pots can hold small flowers (not higher than 1 block), saplings, ferns, dead bushes, mushrooms and cacti. Rightclick a potted plant to retrieve the plant."), + _doc_items_usagehelp = S("Just place a plant on the flower pot. Flower pots can hold small flowers (not higher than 1 block), saplings, ferns, dead bushes, mushrooms and cacti. Rightclick a potted plant to retrieve the plant."), drawtype = "mesh", mesh = "flowerpot.obj", tiles = { diff --git a/mods/ITEMS/mcl_flowerpots/locale/mcl_flowerpots.de.tr b/mods/ITEMS/mcl_flowerpots/locale/mcl_flowerpots.de.tr new file mode 100644 index 00000000..321725ab --- /dev/null +++ b/mods/ITEMS/mcl_flowerpots/locale/mcl_flowerpots.de.tr @@ -0,0 +1,25 @@ +# textdomain: mcl_flowerpots +Dandelion Flower Pot=Blumentopf mit Löwenzahn +Poppy Floer Pot=Blumentopf mit Mohn +Blue Orchid Flower Pot=Blumentopf mit blauer Orchidee +Allium Flower Pot=Blumentopf mit Sternlauch +Azure Bluet Flower Pot=Blumentopf mit Porzellansternchen +Red Tulip Flower Pot=Blumentopf mit roter Tulpe +Pink Tulip Flower Pot=Blumentopf mit rosa Tulpe +White Tulip Flower Pot=Blumentopf mit weißer Tulpe +Orange Tulip Flower Pot=Blumentopf mit orange Tulpe +Oxeye Daisy Flower Pot=Bluemtopf mit Margerite +Brown Mushroom Flower Pot=Blumentopf mit braunem Pilz +Red Mushroom Flower Pot=Blumentopf mit rotem Pilz +Oak Sapling Flower Pot=Blumentopf mit Eichensetzling +Acacia Sapling Flower Pot=Blumentopf mit Akaziensetzling +Jungle Sapling Flower Pot=Blumentopf mit Dschungelsetzling +Dark Oak Sapling Flower Pot=Blumentopf mit Schwarzeichensetzling +Spruce Sapling Flower Pot=Blumentopf mit Fichtensetzling +Birch Sapling Flower Pot=Blumentopf mit Birkensetzling +Dead Bush Flower Pot=Blumentopf mit totem Busch +Fern Flower Pot=Blumentopf mit Farn +Cactus Flower Pot=Blumentopf mit Kaktus +Flower Pot=Blumentopf +Flower pots are decorative blocks in which flowers and other small plants can be placed.=Blumentöpfe sind dekorative Blöcke, in die Blumen und andere kleine Pflanzen platziert werden können. +Just place a plant on the flower pot. Flower pots can hold small flowers (not higher than 1 block), saplings, ferns, dead bushes, mushrooms and cacti. Rightclick a potted plant to retrieve the plant.=Platzieren Sie einfach eine Pflanze auf den Blumentopf. Blumentöpfe können kleine Blumen (nicht höher als 1 Block), Setzlinge, Farne, tote Büsche, Pilze und Kakteen halten. Rechtsklicken Sie auf eine Topfpflanze, um sie zurück zu erhalten. diff --git a/mods/ITEMS/mcl_flowerpots/locale/template.txt b/mods/ITEMS/mcl_flowerpots/locale/template.txt index 75c6b7a2..c68a07e7 100644 --- a/mods/ITEMS/mcl_flowerpots/locale/template.txt +++ b/mods/ITEMS/mcl_flowerpots/locale/template.txt @@ -1,6 +1,6 @@ # textdomain: mcl_flowerpots Dandelion Flower Pot= -Poppy Floer Pot= +Poppy Flower Pot= Blue Orchid Flower Pot= Allium Flower Pot= Azure Bluet Flower Pot= @@ -19,6 +19,7 @@ Spruce Sapling Flower Pot= Birch Sapling Flower Pot= Dead Bush Flower Pot= Fern Flower Pot= +Cactus Flower Pot= Flower Pot= Flower pots are decorative blocks in which flowers and other small plants can be placed.= -Rightclick an empty flower pot while you wield a plant to place the plant. Flower pots can hold small flowers (not higher than 1 block), saplings, ferns, dead bushes, mushrooms and cacti. Rightclick a potted plant to retrieve the plant.= +Just place a plant on the flower pot. Flower pots can hold small flowers (not higher than 1 block), saplings, ferns, dead bushes, mushrooms and cacti. Rightclick a potted plant to retrieve the plant.= diff --git a/mods/ITEMS/mcl_flowers/init.lua b/mods/ITEMS/mcl_flowers/init.lua index 8fb8dc80..c2708500 100644 --- a/mods/ITEMS/mcl_flowers/init.lua +++ b/mods/ITEMS/mcl_flowers/init.lua @@ -92,7 +92,7 @@ local wheat_seed_drop = { local def_tallgrass = { description = S("Tall Grass"), drawtype = "plantlike", - _doc_items_longdesc = S("Tall grass is a small plant which often occours on the surface of grasslands. It can be harvested for wheat seeds. By using bone meal, tall grass can be turned into double tallgrass which is two blocks high."), + _doc_items_longdesc = S("Tall grass is a small plant which often occurs on the surface of grasslands. It can be harvested for wheat seeds. By using bone meal, tall grass can be turned into double tallgrass which is two blocks high."), _doc_items_usagehelp = plant_usage_help, _doc_items_hidden = false, waving = 1, @@ -125,7 +125,7 @@ minetest.register_node("mcl_flowers:tallgrass", def_tallgrass) -- The fern is very similar to tall grass, so we can copy a lot from it. local def_fern = table.copy(def_tallgrass) def_fern.description = S("Fern") -def_fern._doc_items_longdesc = S("Ferns are small plants which occour naturally in grasslands. They can be harvested for wheat seeds. By using bone meal, a fern can be turned into a large fern which is two blocks high.") +def_fern._doc_items_longdesc = S("Ferns are small plants which occur naturally in jungles and taigas. They can be harvested for wheat seeds. By using bone meal, a fern can be turned into a large fern which is two blocks high.") def_fern.tiles = { "mcl_flowers_fern.png" } def_fern.inventory_image = "mcl_flowers_fern_inv.png" def_fern.wield_image = "mcl_flowers_fern_inv.png" diff --git a/mods/ITEMS/mcl_flowers/locale/mcl_flowers.de.tr b/mods/ITEMS/mcl_flowers/locale/mcl_flowers.de.tr new file mode 100644 index 00000000..2a4424b8 --- /dev/null +++ b/mods/ITEMS/mcl_flowers/locale/mcl_flowers.de.tr @@ -0,0 +1,33 @@ +# textdomain: mcl_flowers +This is a small flower. Small flowers are mainly used for dye production and can also be potted.=Dies ist eine kleine Blume. Kleine Blumen werden hauptsächlich in der Farbenproduktion benutzt, können aber auch in Blumentöpfen platziert werden. +It can only be placed on a block on which it would also survive.=Diese Pflanze kann nur auf einem Block platziert werden, auf dem sie auch überleben würde. +Poppy=Mohn +Dandelion=Löwenzahn +Oxeye Daisy=Margerite +Orange Tulip=Orange Tulpe +Pink Tulip=Rosa Tulpe +Red Tulip=Rote Tulpe +White Tulip=Weiße Tulpe +Allium=Sternlauch +Azure Bluet=Porzellansternchen +Blue Orchid=Blaue Orchidee +Tall Grass=Hohes Gras +Tall grass is a small plant which often occurs on the surface of grasslands. It can be harvested for wheat seeds. By using bone meal, tall grass can be turned into double tallgrass which is two blocks high.=Hohes Gras ist eine kleine Pflanze, die oft auf Wiesenflächen wächst. Es kann für Weizensamen abgeerntet werden. Mit Knochenmehl wird sich hohes Gras zu doppelhohem Gras verwandeln. +Fern=Farn +Ferns are small plants which occur naturally in jungles and taigas. They can be harvested for wheat seeds. By using bone meal, a fern can be turned into a large fern which is two blocks high.= +Farne sind kleine Pflanzen, die oft in Dschungeln und Taigas vorkommen. Sie können für Weizensamen abgeerntet werden. Mit Knochenmehl wird sich ein Farn zu einem großen Farn, der zwei Blöcke hoch ist, verwandeln. +(Top Part)=(Oberseite) +Peony=Pfingstrose +A peony is a large plant which occupies two blocks. It is mainly used in dye protection.=Eine Pfingstrose ist eine große Pflanze, die zwei Blöcke hoch ist. Sie wird hauptsächlich für die Farbenproduktion gebraucht. +Rose Bush=Rosenbusch +A rose bush is a large plant which occupies two blocks. It is safe to touch it. Rose bushes are mainly used in dye protection.=Ein Rosenbusch ist eine große Pflanze, die zwei Blöcke hoch ist. Es ist sicher, durch ihn hindurch zu gehen. Er wird hauptsächlich für die Farbenproduktion gebraucht. +Lilac=Flieder +A lilac is a large plant which occupies two blocks. It is mainly used in dye production.=Ein Flieder ist eine große Pflanze, die zwei Blöcke hoch ist. Er wird hauptsächlich für die Farbenproduktion gebraucht. +Sunflower=Sonnenblume +A sunflower is a large plant which occupies two blocks. It is mainly used in dye production.=Eine Sonnenblume ist eine große Pflanze, die zwei Blöcke hoch ist. Sie wird hauptsächlich für die Farbenproduktion gebraucht. +Double tallgrass a variant of tall grass and occupies two blocks. It can be harvested for wheat seeds.=Doppelhohes Gras ist eine Variante von hohem Gras und nimmt zwei Blöcke an Platz ein. Er kann für Weizensamen abgeerntet werden. +Large fern is a variant of fern and occupies two blocks. It can be harvested for wheat seeds.=Ein großer Farn ist eine Variante von Farn und nimmt zwei Blöcke an Platz ein. Er kann für Weizensamen abgeerntet werden. +Double Tallgrass=Doppelhohes Gras +Large Fern=Großer Farn +Lily Pad=Seerosenblatt +A lily pad is a flat plant block which can be walked on. They can be placed on water sources, ice and frosted ice.=Ein Seerosenblatt ist eine flache Pflanze, die eine stabile begehbare Oberfläche sind. Sie können auf Wasserquellen, auf Eis und brüchigem Eis platziert werden. diff --git a/mods/ITEMS/mcl_flowers/locale/template.txt b/mods/ITEMS/mcl_flowers/locale/template.txt index f89e74cd..dcf76279 100644 --- a/mods/ITEMS/mcl_flowers/locale/template.txt +++ b/mods/ITEMS/mcl_flowers/locale/template.txt @@ -12,9 +12,9 @@ Allium= Azure Bluet= Blue Orchid= Tall Grass= -Tall grass is a small plant which often occours on the surface of grasslands. It can be harvested for wheat seeds. By using bone meal, tall grass can be turned into double tallgrass which is two blocks high.= +Tall grass is a small plant which often occurs on the surface of grasslands. It can be harvested for wheat seeds. By using bone meal, tall grass can be turned into double tallgrass which is two blocks high.= Fern= -Ferns are small plants which occour naturally in grasslands. They can be harvested for wheat seeds. By using bone meal, a fern can be turned into a large fern which is two blocks high.= +Ferns are small plants which occur naturally in jungles and taigas. They can be harvested for wheat seeds. By using bone meal, a fern can be turned into a large fern which is two blocks high.= (Top Part)= Peony= A peony is a large plant which occupies two blocks. It is mainly used in dye protection.= diff --git a/mods/ITEMS/mcl_furnaces/init.lua b/mods/ITEMS/mcl_furnaces/init.lua index 3e1b9c3b..d96bdf88 100644 --- a/mods/ITEMS/mcl_furnaces/init.lua +++ b/mods/ITEMS/mcl_furnaces/init.lua @@ -292,7 +292,9 @@ end minetest.register_node("mcl_furnaces:furnace", { description = S("Furnace"), _doc_items_longdesc = S("Furnaces cook or smelt several items, using a furnace fuel, into something else."), - _doc_items_usagehelp = S("Right-click the furnace to view it. Place a furnace fuel in the lower slot and the source material in the upper slot. The furnace will slowly use its fuel to smelt the item. The result will be placed into the output slot at the right side."), + _doc_items_usagehelp = + S("Use the furnace to open the furnace menu. Place a furnace fuel in the lower slot and the source material in the upper slot. The furnace will slowly use its fuel to smelt the item. The result will be placed into the output slot at the right side.").."\n".. + S("Use the recipe book to see what you can smelt, what you can use as fuel and how long it will burn."), _doc_items_hidden = false, tiles = { "default_furnace_top.png", "default_furnace_bottom.png", diff --git a/mods/ITEMS/mcl_furnaces/locale/mcl_furnaces.de.tr b/mods/ITEMS/mcl_furnaces/locale/mcl_furnaces.de.tr new file mode 100644 index 00000000..34ea30b8 --- /dev/null +++ b/mods/ITEMS/mcl_furnaces/locale/mcl_furnaces.de.tr @@ -0,0 +1,6 @@ +# textdomain: mcl_furnaces +Furnace=Ofen +Furnaces cook or smelt several items, using a furnace fuel, into something else.=Ofen kochen oder schmelzen diverse Gegenstände, unter Zuhilfenahme eines Brennstoffs, zu etwas anderem. +Use the furnace to open the furnace menu. Place a furnace fuel in the lower slot and the source material in the upper slot. The furnace will slowly use its fuel to smelt the item. The result will be placed into the output slot at the right side.=Benutzen Sie den Ofen, um das Ofenmenü zu öffnen. Platzieren Sie einen Brennstoff in den unteren Platz und das Quellmaterial in den oberen Platz. Der Ofen wird langsam seinen Brennstoff benutzen, um den Gegenstand zu schmelzen. Das Ergebnis landet im Ausgabeplatz rechts. +Use the recipe book to see what you can smelt, what you can use as fuel and how long it will burn.=Benutzen Sie das Rezeptbuch, um zu sehen, was Sie schmelzen können und was Sie als Brennstoff benutzen können und wie lange dieser brennt. +Burning Furnace=Aktiver Ofen diff --git a/mods/ITEMS/mcl_furnaces/locale/template.txt b/mods/ITEMS/mcl_furnaces/locale/template.txt index bdea900a..fee08e5a 100644 --- a/mods/ITEMS/mcl_furnaces/locale/template.txt +++ b/mods/ITEMS/mcl_furnaces/locale/template.txt @@ -1,5 +1,6 @@ # textdomain: mcl_furnaces Furnace= Furnaces cook or smelt several items, using a furnace fuel, into something else.= -Right-click the furnace to view it. Place a furnace fuel in the lower slot and the source material in the upper slot. The furnace will slowly use its fuel to smelt the item. The result will be placed into the output slot at the right side.= +Use the furnace to open the furnace menu. Place a furnace fuel in the lower slot and the source material in the upper slot. The furnace will slowly use its fuel to smelt the item. The result will be placed into the output slot at the right side.= +Use the recipe book to see what you can smelt, what you can use as fuel and how long it will burn.= Burning Furnace= diff --git a/mods/ITEMS/mcl_heads/init.lua b/mods/ITEMS/mcl_heads/init.lua index 90114a0f..ba365440 100644 --- a/mods/ITEMS/mcl_heads/init.lua +++ b/mods/ITEMS/mcl_heads/init.lua @@ -54,5 +54,5 @@ addhead("zombie", "mcl_heads_zombie_node.png", S("Zombie Head"), S("A zombie hea addhead("creeper", "mcl_heads_creeper_node.png", S("Creeper Head"), S("A creeper head is a small decorative block which resembles the head of a creeper. It can also be worn as a helmet for fun, but does not offer any protection.")) -- Original Minecraft name: “Head” addhead("steve", "mcl_heads_steve_node.png", S("Human Head"), S("A human head is a small decorative block which resembles the head of a human (i.e. a player character). It can also be worn as a helmet for fun, but does not offer any protection.")) -addhead("skeleton", "mcl_heads_skeleton_node.png", S("Skeleton Skull"), S("A skeleton skull is a small decorative block which resembles the head of a skeleton. It can also be worn as a helmet for fun, but does not offer any protection.")) -addhead("wither_skeleton", "mcl_heads_wither_skeleton_node.png", S("Wither Skeleton Skull"), S("A wither skeleton skull is a small decorative block which resembles the head of a wither skeleton. It can also be worn as a helmet for fun, but does not offer any protection.")) +addhead("skeleton", "mcl_heads_skeleton_node.png", S("Skeleton Skull"), S("A skeleton skull is a small decorative block which resembles the skull of a skeleton. It can also be worn as a helmet for fun, but does not offer any protection.")) +addhead("wither_skeleton", "mcl_heads_wither_skeleton_node.png", S("Wither Skeleton Skull"), S("A wither skeleton skull is a small decorative block which resembles the skull of a wither skeleton. It can also be worn as a helmet for fun, but does not offer any protection.")) diff --git a/mods/ITEMS/mcl_heads/locale/mcl_heads.de.tr b/mods/ITEMS/mcl_heads/locale/mcl_heads.de.tr new file mode 100644 index 00000000..2c5491dd --- /dev/null +++ b/mods/ITEMS/mcl_heads/locale/mcl_heads.de.tr @@ -0,0 +1,11 @@ +# textdomain: mcl_heads +Zombie Head=Zombiekopf +A zombie head is a small decorative block which resembles the head of a zombie. It can also be worn as a helmet for fun, but does not offer any protection.=Ein Zombiekopf ist ein kleiner dekorativer Block, der so wie ein Kopf eines Zombies aussieht. Er kann auch als Helm zum Spaß getragen werden, aber er bietet keinerlei Schutz. +Creeper Head=Creeper-Kopf +A creeper head is a small decorative block which resembles the head of a creeper. It can also be worn as a helmet for fun, but does not offer any protection.= +Ein Creeper-Kopf ist ein kleiner dekorativer Block, der so wie ein Kopf eines Creepers aussieht. Er kann auch als Helm zum Spaß getragen werden, aber er bietet keinerlei Schutz. +Human Head=A human head is a small decorative block which resembles the head of a human (i.e. a player character). It can also be worn as a helmet for fun, but does not offer any protection.=Ein Menschenkopf ist ein kleiner dekorativer Block, der so wie der Kopf eines Menschen (das heißt, einer Spielerfigur) aussieht. Er kann auch als Helm zum Spaß getragen werden, aber er bietet keinerlei Schutz. +Skeleton Skull=Skelettschädel +A skeleton skull is a small decorative block which resembles the skull of a skeleton. It can also be worn as a helmet for fun, but does not offer any protection.=Ein Skelettschädel ist ein kleiner dekorativer Block, der so wie ein Schädel eines Skeletts aussieht. Er kann auch als Helm zum Spaß getragen werden, aber er bietet keinerlei Schutz. +Wither Skeleton Skull=Witherskelettschädel +A wither skeleton skull is a small decorative block which resembles the skull of a wither skeleton. It can also be worn as a helmet for fun, but does not offer any protection.=Ein Witherskelettschädel ist ein kleiner dekorativer Block, der so wie ein Schädel eines Witherskeletts aussieht. Er kann auch als Helm zum Spaß getragen werden, aber er bietet keinerlei Schutz. diff --git a/mods/ITEMS/mcl_heads/locale/template.txt b/mods/ITEMS/mcl_heads/locale/template.txt index 213fbf5c..7ff69df4 100644 --- a/mods/ITEMS/mcl_heads/locale/template.txt +++ b/mods/ITEMS/mcl_heads/locale/template.txt @@ -6,6 +6,6 @@ A creeper head is a small decorative block which resembles the head of a creeper Human Head= A human head is a small decorative block which resembles the head of a human (i.e. a player character). It can also be worn as a helmet for fun, but does not offer any protection.= Skeleton Skull= -A skeleton skull is a small decorative block which resembles the head of a skeleton. It can also be worn as a helmet for fun, but does not offer any protection.= +A skeleton skull is a small decorative block which resembles the skull of a skeleton. It can also be worn as a helmet for fun, but does not offer any protection.= Wither Skeleton Skull= -A wither skeleton skull is a small decorative block which resembles the head of a wither skeleton. It can also be worn as a helmet for fun, but does not offer any protection.= +A wither skeleton skull is a small decorative block which resembles the skull of a wither skeleton. It can also be worn as a helmet for fun, but does not offer any protection.= diff --git a/mods/ITEMS/mcl_hoppers/init.lua b/mods/ITEMS/mcl_hoppers/init.lua index 64588ead..f46a7884 100644 --- a/mods/ITEMS/mcl_hoppers/init.lua +++ b/mods/ITEMS/mcl_hoppers/init.lua @@ -123,15 +123,15 @@ local def_hopper = { -- Enabled downwards hopper local def_hopper_enabled = table.copy(def_hopper) def_hopper_enabled.description = S("Hopper") -def_hopper_enabled._doc_items_longdesc = S("Hoppers are containers with 5 inventory slots. They collect dropped items from above, take items from a container above and attempts to put its items it into an adjacent container. Hoppers can go either downwards or sideways. Hoppers interact with chests, droppers, dispensers, shulker boxes, furnaces and hoppers.").."\n\n".. +def_hopper_enabled._doc_items_longdesc = S("Hoppers are containers with 5 inventory slots. They collect dropped items from above, take items from a container above and attempt to put its items it into an adjacent container. Hoppers can go either downwards or sideways. Hoppers interact with chests, droppers, dispensers, shulker boxes, furnaces and hoppers.").."\n\n".. -S([[Hoppers interact with containers the following way: -• Furnaces: Hoppers from above will put items into the source slot. Hoppers from below take items from the output slot. They also take items from the fuel slot when they can't be used as a fuel. Sideway hoppers put items into the fuel slot -• Ender chests: Hoppers don't interact with ender chests -• Other containers: Hoppers interact with them normally]]).."\n\n".. +S("Hoppers interact with containers the following way:").."\n".. +S("• Furnaces: Hoppers from above will put items into the source slot. Hoppers from below take items from the output slot. They also take items from the fuel slot when they can't be used as a fuel. Sideway hoppers that point to the furnace put items into the fuel slot").."\n".. +S("• Ender chests: No interaction.").."\n".. +S("• Other containers: Normal interaction.").."\n\n".. -S("Hoppers can be disabled by supplying them with redstone power. Disabled hoppers don't move items.") -def_hopper_enabled._doc_items_usagehelp = S("To place a hopper vertically, place it on the floor or a ceiling. To place it sideways, place it at the side of a block. Remember you can place at usable blocks (such as chests) with sneak + right-click. The hopper will keep its orientation when the blocks around it are changed. To access the hopper's inventory, rightclick it.") +S("Hoppers can be disabled when supplied with redstone power. Disabled hoppers don't move items.") +def_hopper_enabled._doc_items_usagehelp = S("To place a hopper vertically, place it on the floor or a ceiling. To place it sideways, place it at the side of a block. Use the hopper to access its inventory.") def_hopper_enabled.on_place = function(itemstack, placer, pointed_thing) local upos = pointed_thing.under local apos = pointed_thing.above diff --git a/mods/ITEMS/mcl_hoppers/locale/mcl_hoppers.de.tr b/mods/ITEMS/mcl_hoppers/locale/mcl_hoppers.de.tr new file mode 100644 index 00000000..2a373db5 --- /dev/null +++ b/mods/ITEMS/mcl_hoppers/locale/mcl_hoppers.de.tr @@ -0,0 +1,12 @@ +# textdomain: mcl_hoppers +Hopper=Trichter +Hoppers are containers with 5 inventory slots. They collect dropped items from above, take items from a container above and attempt to put its items it into an adjacent container. Hoppers can go either downwards or sideways. Hoppers interact with chests, droppers, dispensers, shulker boxes, furnaces and hoppers.=Trichter sind Behälter mit 5 Inventarplätzen. Sie sammeln fallengelassene Gegenstände oberhalb auf, nehmen sich Gegenstände von einem Behälter oberhalb auf und versuchen, ihren Inhalt in einen benachbarten Behälter zu befördern. Trichter können entweder nach unten oder zur Seite zeigen. Trichter interagieren mit Truhen, Spendern, Werfern, Shulkerkisten, Öfen und Trichtern. +Hoppers interact with containers the following way:=Trichter interagieren mit Behältern auf diese Weise: +• Furnaces: Hoppers from above will put items into the source slot. Hoppers from below take items from the output slot. They also take items from the fuel slot when they can't be used as a fuel. Sideway hoppers that point to the furnace put items into the fuel slot=• Öfen: Trichter von oberhalb werden Gegenstände in den Quellplatz befördern. Trichter von unterhalb werden Gegenstände aus dem Ausgabeplatz nehmen. Sie werden Gegenstände auch aus dem Brennstoffplatz nehmen, wenn sie als Brennstoff ungeeignet sind. Seitwärtstrichter, die zum Ofen zeigen, befördern Gegenstände in den Brennstoffplatz. +• Ender chests: No interaction.=• Endertruhen: Keine Interaktion. +• Other containers: Normal interaction.=• Andere Behälter: Normale Interaktion. +Hoppers can be disabled when supplied with redstone power. Disabled hoppers don't move items.=Trichter können deaktiviert werden, wenn sie mit Redstone-Energie versorgt werden. Deaktivierte Trichter bewegen keine Gegenstände. +To place a hopper vertically, place it on the floor or a ceiling. To place it sideways, place it at the side of a block. Use the hopper to access its inventory.=Um einen Trichter vertikal zu platzieren, platzieren Sie ihn auf den Boden oder an die Decke. Um ihn seitwärts zu platzieren, platzieren Sie in an die Seite eines Blocks. Der Trichter wird seine Ausrichtung behalten. Benutzen Sie den Trichter, um auf sein Inventar zuzugreifen. +Disabled Hopper=Deaktivierter Trichter +Side Hopper=Seitwärtstrichter +Disabled Side Hopper=Deaktivierter Seitwärtstrichter diff --git a/mods/ITEMS/mcl_hoppers/locale/template.txt b/mods/ITEMS/mcl_hoppers/locale/template.txt index 080193b6..8aea0920 100644 --- a/mods/ITEMS/mcl_hoppers/locale/template.txt +++ b/mods/ITEMS/mcl_hoppers/locale/template.txt @@ -1,8 +1,12 @@ # textdomain: mcl_hoppers Hopper= -Hoppers are containers with 5 inventory slots. They collect dropped items from above, take items from a container above and attempts to put its items it into an adjacent container. Hoppers can go either downwards or sideways. Hoppers interact with chests, droppers, dispensers, shulker boxes, furnaces and hoppers.= -Hoppers can be disabled by supplying them with redstone power. Disabled hoppers don't move items.= -To place a hopper vertically, place it on the floor or a ceiling. To place it sideways, place it at the side of a block. Remember you can place at usable blocks (such as chests) with sneak + right-click. The hopper will keep its orientation when the blocks around it are changed. To access the hopper's inventory, rightclick it.= +Hoppers are containers with 5 inventory slots. They collect dropped items from above, take items from a container above and attempt to put its items it into an adjacent container. Hoppers can go either downwards or sideways. Hoppers interact with chests, droppers, dispensers, shulker boxes, furnaces and hoppers.= +Hoppers interact with containers the following way:= +• Furnaces: Hoppers from above will put items into the source slot. Hoppers from below take items from the output slot. They also take items from the fuel slot when they can't be used as a fuel. Sideway hoppers that point to the furnace put items into the fuel slot= +• Ender chests: No interaction.= +• Other containers: Normal interaction.= +Hoppers can be disabled when supplied with redstone power. Disabled hoppers don't move items.= +To place a hopper vertically, place it on the floor or a ceiling. To place it sideways, place it at the side of a block. Use the hopper to access its inventory.= Disabled Hopper= Side Hopper= Disabled Side Hopper= diff --git a/mods/ITEMS/mcl_itemframes/init.lua b/mods/ITEMS/mcl_itemframes/init.lua index e4e3f5cb..e844e95d 100644 --- a/mods/ITEMS/mcl_itemframes/init.lua +++ b/mods/ITEMS/mcl_itemframes/init.lua @@ -104,7 +104,7 @@ end minetest.register_node("mcl_itemframes:item_frame",{ description = S("Item Frame"), _doc_items_longdesc = S("Item frames are decorative blocks in which items can be placed."), - _doc_items_usagehelp = S("Hold any item in your hand and right-click the item frame to place the item into the frame. Rightclick the item frame again to retrieve the item."), + _doc_items_usagehelp = S("Just place any item on the item frame. Use the item frame again to retrieve the item."), drawtype = "mesh", is_ground_content = false, mesh = "mcl_itemframes_itemframe1facedir.obj", diff --git a/mods/ITEMS/mcl_itemframes/locale/mcl_itemframes.de.tr b/mods/ITEMS/mcl_itemframes/locale/mcl_itemframes.de.tr new file mode 100644 index 00000000..81a3f75b --- /dev/null +++ b/mods/ITEMS/mcl_itemframes/locale/mcl_itemframes.de.tr @@ -0,0 +1,5 @@ +# textdomain: mcl_itemframes +Item Frame=Rahmen +Item frames are decorative blocks in which items can be placed.=Rahmen sind dekorative Blöcke, in denen man Gegenstände platzieren kann. +Just place any item on the item frame. Use the item frame again to retrieve the item.=Platzieren Sie einfach einen beliebigen Gegenstand in den Rahmen. Benutzen Sie den Rahmen erneut, um den Gegenstand zurück zu erhalten. + diff --git a/mods/ITEMS/mcl_itemframes/locale/template.txt b/mods/ITEMS/mcl_itemframes/locale/template.txt index 8a3ea6b9..55ff580f 100644 --- a/mods/ITEMS/mcl_itemframes/locale/template.txt +++ b/mods/ITEMS/mcl_itemframes/locale/template.txt @@ -1,4 +1,4 @@ # textdomain: mcl_itemframes Item Frame= Item frames are decorative blocks in which items can be placed.= -Hold any item in your hand and right-click the item frame to place the item into the frame. Rightclick the item frame again to retrieve the item.= +Just place any item on the item frame. Use the item frame again to retrieve the item.= diff --git a/mods/ITEMS/mcl_jukebox/init.lua b/mods/ITEMS/mcl_jukebox/init.lua index 3b3b918b..e714c79d 100644 --- a/mods/ITEMS/mcl_jukebox/init.lua +++ b/mods/ITEMS/mcl_jukebox/init.lua @@ -31,7 +31,7 @@ for r=1, records do doc = true entryname = S("Music Disc") longdesc = S("A music disc holds a single music track which can be used in a jukebox to play music.") - usagehelp = S("Rightclick an empty jukebox with the music disc in your hand to play the music. Rightclick the jukebox again to retrieve the music disc. The music can only be heard by you, not by other players.") + usagehelp = S("Place a music dict into an empty jukebox to play the music. Use the jukebox again to retrieve the music disc. The music can only be heard by you, not by other players.") end minetest.register_craftitem("mcl_jukebox:record_"..r, { description = diff --git a/mods/ITEMS/mcl_jukebox/locale/mcl_jukebox.de.tr b/mods/ITEMS/mcl_jukebox/locale/mcl_jukebox.de.tr new file mode 100644 index 00000000..9655e500 --- /dev/null +++ b/mods/ITEMS/mcl_jukebox/locale/mcl_jukebox.de.tr @@ -0,0 +1,9 @@ +# textdomain: mcl_jukebox +Music Disc=Musikplatte +A music disc holds a single music track which can be used in a jukebox to play music.=Eine Musikplatte enthält eine einzelnes Musikstück, die in einer Musikbox benutzt werden kann, um Musik zu spielen. +Place a music dict into an empty jukebox to play the music. Use the jukebox again to retrieve the music disc. The music can only be heard by you, not by other players.=Platzieren Sie eine Musikplatte in eine leere Musikbox, um die Musik abzuspielen. Benutzen Sie die Musikbox erneut, um die Musikplatte zu erhalten. Die Musik kann nur von Ihnen gehört werden, nicht von anderen Spielern. +Music Disc=Musikplatte +@1—@2=@1 – @2 +Jukebox=Musikbox +Jukeboxes play music when they're supplied with a music disc.=Musikboxen spielen Musik, wenn man ihnen eine Musikplatte gibt. +Place a music disc into an empty jukebox to insert the music disc and play music. If the jukebox already has a music disc, you will retrieve this music disc first. The music can only be heard by you, not by other players.=Platzieren Sie eine Musikplatte in eine leere Musikbox, um die Musikplatte einzulegen und Musik zu spielen. Wenn die Musikbox schon eine Musikplatte hat, werden Sie zuerst diese Musikplatte erhalten. Die Musik kann nur von Ihnen gehört werden, aber nicht von anderen Spielern. diff --git a/mods/ITEMS/mcl_jukebox/locale/template.txt b/mods/ITEMS/mcl_jukebox/locale/template.txt index b2ad0d94..b2923e90 100644 --- a/mods/ITEMS/mcl_jukebox/locale/template.txt +++ b/mods/ITEMS/mcl_jukebox/locale/template.txt @@ -1,7 +1,7 @@ # textdomain: mcl_jukebox Music Disc= A music disc holds a single music track which can be used in a jukebox to play music.= -Rightclick an empty jukebox with the music disc in your hand to play the music. Rightclick the jukebox again to retrieve the music disc. The music can only be heard by you, not by other players.= +Place a music dict into an empty jukebox to play the music. Use the jukebox again to retrieve the music disc. The music can only be heard by you, not by other players.= Music Disc= @1—@2= Jukebox= diff --git a/mods/ITEMS/mcl_maps/init.lua b/mods/ITEMS/mcl_maps/init.lua index e48ae58a..ceca739b 100644 --- a/mods/ITEMS/mcl_maps/init.lua +++ b/mods/ITEMS/mcl_maps/init.lua @@ -35,7 +35,8 @@ minetest.register_craftitem("mcl_maps:empty_map", { minetest.register_craftitem("mcl_maps:filled_map", { description = S("Map"), _doc_items_longdesc = S("Maps show your surroundings as you explore the world."), - _doc_items_usagehelp = S("Hold the map in any of the hotbar slots. This allows you to access the minimap by pressing the minimap key ([F9] by default).\nIn Creative Mode, you don't need this item; the minimap is always available."), + _doc_items_usagehelp = S("Hold the map in any of the hotbar slots. This allows you to access the minimap by pressing the minimap key (see controls settings).").."\n".. + S("In Creative Mode, you don't need this item; the minimap is always available."), groups = { tool = 1 }, inventory_image = "mcl_maps_map_filled.png^(mcl_maps_map_filled_markings.png^[colorize:#000000)", stack_max = 1, diff --git a/mods/ITEMS/mcl_maps/locale/mcl_maps.de.tr b/mods/ITEMS/mcl_maps/locale/mcl_maps.de.tr new file mode 100644 index 00000000..3e7071e6 --- /dev/null +++ b/mods/ITEMS/mcl_maps/locale/mcl_maps.de.tr @@ -0,0 +1,8 @@ +# textdomain: mcl_maps +Empty Map=Leere Karte +Empty maps are not useful as maps, but they can be stacked and turned to maps which can be used.=Leere Karten sind als Karten nicht nützlich, aber sie können gestapelt werden und zu benutzbaren Karten umgewandelt werden. +Rightclick to start using the map (which can't be stacked anymore).=Rechtsklick, um zu beginnen, die Karte zu benutzen. Sie kann dann nicht mehr gestapelt werden. +Map=Karte +Maps show your surroundings as you explore the world.=Karten zeigen Ihre Umgebung, während Sie die Welt erkunden. +Hold the map in any of the hotbar slots. This allows you to access the minimap by pressing the minimap key (see controls settings).=Halten Sie die Karte in einen beliebigen Platz in der Schnellleiste. Damit können Sie jetzt die Übersichtskarte aktivieren, indem Sie die Taste zum Umschalten der Karte drücken (siehe Tastenbelegung). +In Creative Mode, you don't need this item; the minimap is always available.=Im Kreativmodus brauchen Sie diesen Gegenstand nicht; die Übersichtskarte ist immer verfügbar. diff --git a/mods/ITEMS/mcl_maps/locale/template.txt b/mods/ITEMS/mcl_maps/locale/template.txt index 8fb561e8..1db127f4 100644 --- a/mods/ITEMS/mcl_maps/locale/template.txt +++ b/mods/ITEMS/mcl_maps/locale/template.txt @@ -4,4 +4,5 @@ Empty maps are not useful as maps, but they can be stacked and turned to maps wh Rightclick to start using the map (which can't be stacked anymore).= Map= Maps show your surroundings as you explore the world.= -Hold the map in any of the hotbar slots. This allows you to access the minimap by pressing the minimap key ([F9] by default).@nIn Creative Mode, you don't need this item; the minimap is always available.= +Hold the map in any of the hotbar slots. This allows you to access the minimap by pressing the minimap key (see controls settings).= +In Creative Mode, you don't need this item; the minimap is always available.= From 81ca79e85c095494662ff01d30ff43d34dedb479 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Fri, 15 Mar 2019 06:48:12 +0100 Subject: [PATCH 162/737] Open-source command blocks ;-) --- .../REDSTONE/mesecons_commandblock/init.lua | 54 ++++++++++++------- 1 file changed, 36 insertions(+), 18 deletions(-) diff --git a/mods/ITEMS/REDSTONE/mesecons_commandblock/init.lua b/mods/ITEMS/REDSTONE/mesecons_commandblock/init.lua index 0b2cbaac..dc143167 100644 --- a/mods/ITEMS/REDSTONE/mesecons_commandblock/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons_commandblock/init.lua @@ -1,4 +1,5 @@ local S = minetest.get_translator("mesecons_commandblock") +local F = minetest.formspec_escape local function construct(pos) local meta = minetest.get_meta(pos) @@ -128,19 +129,18 @@ local function commandblock_action_off(pos, node) end local on_rightclick = function(pos, node, player, itemstack, pointed_thing) - -- Only allow access in Creative Mode + local can_edit = true + -- Only allow write access in Creative Mode if not minetest.settings:get_bool("creative_mode") then - return + can_edit = false end local pname = player:get_player_name() if minetest.is_protected(pos, pname) then - minetest.record_protection_violation(pos, pname) - return + can_edit = false end local privs = minetest.get_player_privs(pname) if not privs.maphack then - minetest.chat_send_player(pname, "Access denied. You need the “maphack” privilege to edit command blocks.") - return + can_edit = false end local meta = minetest.get_meta(pos) @@ -148,16 +148,31 @@ local on_rightclick = function(pos, node, player, itemstack, pointed_thing) local commander = meta:get_string("commander") local commanderstr if commander == "" or commander == nil then - commanderstr = "Error: No commander! Block must be replaced." + commanderstr = S("Error: No commander! Block must be replaced.") else - commanderstr = "Commander: "..commander + commanderstr = S("Commander: @1", commander) + end + local textrea_name, submit, textarea + -- If editing is not allowed, only allow read-only access. + -- Player can still view the contents of the command block. + if can_edit then + textarea_name = "commands" + submit = "button_exit[3.3,4.5;2,1;submit;"..F(S("Submit")).."]" + else + textarea_name = "" + submit = "" + end + if commands == "" then + textarea = "label[0.5,0.5;"..F(S("No commands.")).."]" + else + textarea = "textarea[0.5,0.5;8.5,4;"..textarea_name..";"..F(S("Commands:"))..";"..F(commands).."]" end local formspec = "invsize[9,5;]" .. - "textarea[0.5,0.5;8.5,4;commands;Commands;"..commands.."]" .. - "button_exit[3.3,4.5;2,1;submit;Submit]" .. + textarea .. + submit .. "image_button[8,4.5;1,1;doc_button_icon_lores.png;doc;]" .. - "label[0,4;"..minetest.formspec_escape(commanderstr).."]" .. - "tooltip[doc;Help]" + "tooltip[doc;"..F(S("Help")).."]" .. + "label[0,4;"..F(commanderstr).."]" minetest.show_formspec(pname, "commandblock_"..pos.x.."_"..pos.y.."_"..pos.z, formspec) end @@ -176,7 +191,7 @@ local on_place = function(itemstack, placer, pointed_thing) local privs = minetest.get_player_privs(placer:get_player_name()) if not privs.maphack then - minetest.chat_send_player(placer:get_player_name(), "Placement denied. You need the “maphack” privilege to place command blocks.") + minetest.chat_send_player(placer:get_player_name(), S("Placement denied. You need the “maphack” privilege to place command blocks.")) return itemstack end @@ -189,9 +204,12 @@ minetest.register_node("mesecons_commandblock:commandblock_off", { _doc_items_longdesc = S("Command blocks are mighty redstone components which are able to alter reality itself. In other words, they cause the server to execute server commands when they are supplied with redstone power."), _doc_items_usagehelp = -S("To use an already existing command block, just supply it with redstone power and see what happens. This will execute the commands once. To execute the commands again, turn the redstone power off and on again.").."\n\n".. +S("Everyone can activate a command block and look at its commands, but not everyone can edit and place them.").."\n\n".. -S("To place a command block and change the commands, you need to be in Creative Mode and must have the “maphack” privilege. A new command block does not have any commands and does nothing. Rightclick the command block (in Creative Mode!) to edit its commands. Read the help entry “Advanced topics > Server Commands” to understand how they work. Each line contains a single command. You enter them like you would in the console, but without the leading slash. The commands will be executed from top to bottom.").."\n\n".. +S("To view the commands in a command block, use it. To activate the command block, just supply it with redstone power. This will execute the commands once. To execute the commands again, turn the redstone power off and on again.").. +"\n\n".. + +S("To be able to place a command block and change the commands, you need to be in Creative Mode and must have the “maphack” privilege. A new command block does not have any commands and does nothing. Use the command block (in Creative Mode!) to edit its commands. Read the help entry “Advanced topics > Server Commands” to understand how they work. Each line contains a single command. You enter them like you would in the console, but without the leading slash. The commands will be executed from top to bottom.").."\n\n".. S("All commands will be executed on behalf of the player who placed the command block, as if the player typed in the commands. This player is said to be the “commander” of the block.").."\n\n".. @@ -250,7 +268,7 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) end local privs = minetest.get_player_privs(player:get_player_name()) if not privs.maphack then - minetest.chat_send_player(player:get_player_name(), "Access denied. You need the “maphack” privilege to edit command blocks.") + minetest.chat_send_player(player:get_player_name(), S("Access denied. You need the “maphack” privilege to edit command blocks.")) return end @@ -263,7 +281,7 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) local pos = {x=tonumber(x), y=tonumber(y), z=tonumber(z)} local meta = minetest.get_meta(pos) if not minetest.settings:get_bool("creative_mode") then - minetest.chat_send_player(player:get_player_name(), "Editing the command block has failed! You can only change the command block in Creative Mode!") + minetest.chat_send_player(player:get_player_name(), S("Editing the command block has failed! You can only change the command block in Creative Mode!")) return end local check, error_message = check_commands(fields.commands, player:get_player_name()) @@ -275,7 +293,7 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) meta:set_string("commands", fields.commands) end else - minetest.chat_send_player(player:get_player_name(), "Editing the command block has failed! The command block is gone.") + minetest.chat_send_player(player:get_player_name(), S("Editing the command block has failed! The command block is gone.")) end end end) From 661e10e99298365fa6486efe3e3ac4bbc2f0554b Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Fri, 15 Mar 2019 07:10:18 +0100 Subject: [PATCH 163/737] Fix crash when dying cuz fire, lava or magmablock --- mods/ITEMS/mcl_core/locale/mcl_core.de.tr | 8 ++++---- mods/ITEMS/mcl_core/locale/template.tr | 8 ++++---- mods/ITEMS/mcl_core/nodes_liquid.lua | 9 +++++---- mods/ITEMS/mcl_fire/init.lua | 9 +++++---- mods/ITEMS/mcl_fire/locale/mcl_fire.de.tr | 8 ++++---- mods/ITEMS/mcl_fire/locale/template.txt | 8 ++++---- mods/ITEMS/mcl_nether/init.lua | 2 +- mods/ITEMS/mcl_nether/locale/template.txt | 1 + 8 files changed, 28 insertions(+), 25 deletions(-) diff --git a/mods/ITEMS/mcl_core/locale/mcl_core.de.tr b/mods/ITEMS/mcl_core/locale/mcl_core.de.tr index 477d64e5..1a49c670 100644 --- a/mods/ITEMS/mcl_core/locale/mcl_core.de.tr +++ b/mods/ITEMS/mcl_core/locale/mcl_core.de.tr @@ -1,8 +1,8 @@ # textdomain: mcl_core -%s could not survive in lava.=%s konnte nicht in Lava überleben. -%s died in lava.=%s starb in Lava. -%s melted in lava.=%s schmolz in der Lava. -%s took a bath in a hot lava tub.=%s nahm ein Bad in einer heißen Lavawanne. +@1 could not survive in lava.=@1 konnte nicht in Lava überleben. +@1 died in lava.=@1 starb in Lava. +@1 melted in lava.=@1 schmolz in der Lava. +@1 took a bath in a hot lava tub.=@1 nahm ein Bad in einer heißen Lavawanne. A block of diamond is mostly a shiny decorative block but also useful as a compact storage of diamonds.=Ein Diamantblock ist hauptsächlich ein glänzender Dekorationsblock, aber er ist auch nützlich zur kompakten Aufbewahrung von Diamanten. A block of emerald is mostly a shiny decorative block but also useful as a compact storage of emeralds.=Ein Smaragdblock ist hauptsächlich ein glänzender Dekorationsblock, aber er ist auch nützlich zur kompakten Aufbewahrung von Smaragden. A block of gold is mostly a shiny decorative block but also useful as a compact storage of gold ingots.=Ein Goldblock ist hauptsächlich ein glänzender Dekorationsblock, aber er ist auch nützlich zur kompakten Aufbewahrung von Goldbarren. diff --git a/mods/ITEMS/mcl_core/locale/template.tr b/mods/ITEMS/mcl_core/locale/template.tr index 6bb6474a..b68ee8a4 100644 --- a/mods/ITEMS/mcl_core/locale/template.tr +++ b/mods/ITEMS/mcl_core/locale/template.tr @@ -1,8 +1,8 @@ # textdomain: mcl_core -%s could not survive in lava.= -%s died in lava.= -%s melted in lava.= -%s took a bath in a hot lava tub.= +@1 could not survive in lava.= +@1 died in lava.= +@1 melted in lava.= +@1 took a bath in a hot lava tub.= A block of diamond is mostly a shiny decorative block but also useful as a compact storage of diamonds.= A block of emerald is mostly a shiny decorative block but also useful as a compact storage of emeralds.= A block of gold is mostly a shiny decorative block but also useful as a compact storage of gold ingots.= diff --git a/mods/ITEMS/mcl_core/nodes_liquid.lua b/mods/ITEMS/mcl_core/nodes_liquid.lua index 2fdcb1ba..cdcae4b9 100644 --- a/mods/ITEMS/mcl_core/nodes_liquid.lua +++ b/mods/ITEMS/mcl_core/nodes_liquid.lua @@ -1,16 +1,17 @@ -- Liquids: Water and lava local S = minetest.get_translator("mcl_core") +local N = function(s) return s end local WATER_ALPHA = 179 local WATER_VISC = 1 local LAVA_VISC = 7 local lava_death_messages = { - S("%s melted in lava."), - S("%s took a bath in a hot lava tub."), - S("%s died in lava."), - S("%s could not survive in lava."), + N("@1 melted in lava."), + N("@1 took a bath in a hot lava tub."), + N("@1 died in lava."), + N("@1 could not survive in lava."), } minetest.register_node("mcl_core:water_flowing", { diff --git a/mods/ITEMS/mcl_fire/init.lua b/mods/ITEMS/mcl_fire/init.lua index 73c2e973..bbf1e4cd 100644 --- a/mods/ITEMS/mcl_fire/init.lua +++ b/mods/ITEMS/mcl_fire/init.lua @@ -3,6 +3,7 @@ mcl_fire = {} local S = minetest.get_translator("mcl_fire") +local N = function(s) return s end -- -- Items @@ -39,10 +40,10 @@ end local eternal_fire_help = S("Eternal fire is a damaging block that might create more fire. It will create fire around it when flammable blocks are nearby. Eternal fire can be extinguished by punches and nearby water blocks. Other than (normal) fire, eternal fire does not get extinguished on its own and also continues to burn under rain. Punching eternal fire is safe, but it hurts if you stand inside.") local fire_death_messages = { - S("%s has been cooked crisp."), - S("%s felt the burn."), - S("%s died in the flames."), - S("%s died in a fire."), + N("@1 has been cooked crisp."), + N("@1 felt the burn."), + N("@1 died in the flames."), + N("@1 died in a fire."), } minetest.register_node("mcl_fire:fire", { diff --git a/mods/ITEMS/mcl_fire/locale/mcl_fire.de.tr b/mods/ITEMS/mcl_fire/locale/mcl_fire.de.tr index 1d50cc91..6185ad46 100644 --- a/mods/ITEMS/mcl_fire/locale/mcl_fire.de.tr +++ b/mods/ITEMS/mcl_fire/locale/mcl_fire.de.tr @@ -8,9 +8,9 @@ Rightclick the surface of a block to attempt to light a fire in front of it or i Fire is a damaging and destructive but short-lived kind of block. It will destroy and spread towards near flammable blocks, but fire will disappear when there is nothing to burn left. It will be extinguished by nearby water and rain. Fire can be destroyed safely by punching it, but it is hurtful if you stand directly in it. If a fire is started above netherrack or a magma block, it will immediately turn into an eternal fire.=Feuer ist ein schädlicher und destruktiver aber kurzlebiger Block. Es wird sich zu entzündlichen Blöcken ausbreiten und sie zerstören, aber Feuer wird verschwinden, wenn es nichts brennbares mehr gibt. Es wird von Wasser und Regen gelöscht. Feuer kann sicher mit einem Schlag zerstört werden, aber es tut weh, wenn man direkt in ihm steht. Wird ein Feuer über Netherrack oder einem Magmablock entfacht, wird er sich sofort zu einem ewigen Feuer verwandeln. Fire is a damaging but non-destructive short-lived kind of block. It will disappear when there is no flammable block around. Fire does not destroy blocks, at least not in this world. It will be extinguished by nearby water and rain. Fire can be destroyed safely by punching it, but it is hurtful if you stand directly in it. If a fire is started above netherrack or a magma block, it will immediately turn into an eternal fire.=Feuer ist ein schädlicher aber nicht-destruktiver kurzlebiger Block. Es wird verschwinden, wenn sich keine entzündlichen Blöcke in der Nähe befinden. Feuer breitet sich nicht aus und zerstört keine Blöcke, zumindest nicht in dieser Welt. Es wird von Wasser und Regen gelöscht. Feuer kann sicher mit einem Schlag zerstört werden, aber es tut weh, wenn man direkt in ihm steht. Wird ein Feuer über Netherrack oder einem Magmablock entfacht, wird er sich sofort zu einem ewigen Feuer verwandeln. Eternal fire is a damaging block that might create more fire. It will create fire around it when flammable blocks are nearby. Eternal fire can be extinguished by punches and nearby water blocks. Other than (normal) fire, eternal fire does not get extinguished on its own and also continues to burn under rain. Punching eternal fire is safe, but it hurts if you stand inside.=Ewiges Feuer ist ein schädlicher Block, der mehr Feuer machen kann. Er wird um sich Feuer machen, wenn entflammbare Blöcke in der Nähe sind. Ewiges Feuer kann von Schlägen und Wasserblöcken in der Nähe gelöscht werden. Anders als (normales) Feuer geht ein ewiges Fuer nicht von alleine aus, auf nicht unter Regen. Es ist sicher, ein ewiges Feuer zu schlagen, aber es tut weh, wenn man direkt in einem steht. -%s has been cooked crisp.=%s wurde knusprig gebraten. -%s felt the burn.=%s ist völlig verbrannt. -%s died in the flames.=%s starb in den Flammen. -%s died in a fire.=%s starb in einem Feuer. +@1 has been cooked crisp.=@1 wurde knusprig gebraten. +@1 felt the burn.=@1 ist völlig verbrannt. +@1 died in the flames.=@1 starb in den Flammen. +@1 died in a fire.=@1 starb in einem Feuer. Fire=Feuer Eternal Fire=Ewiges Feuer diff --git a/mods/ITEMS/mcl_fire/locale/template.txt b/mods/ITEMS/mcl_fire/locale/template.txt index b7fdd996..035834a3 100644 --- a/mods/ITEMS/mcl_fire/locale/template.txt +++ b/mods/ITEMS/mcl_fire/locale/template.txt @@ -8,9 +8,9 @@ Rightclick the surface of a block to attempt to light a fire in front of it or i Fire is a damaging and destructive but short-lived kind of block. It will destroy and spread towards near flammable blocks, but fire will disappear when there is nothing to burn left. It will be extinguished by nearby water and rain. Fire can be destroyed safely by punching it, but it is hurtful if you stand directly in it. If a fire is started above netherrack or a magma block, it will immediately turn into an eternal fire.= Fire is a damaging but non-destructive short-lived kind of block. It will disappear when there is no flammable block around. Fire does not destroy blocks, at least not in this world. It will be extinguished by nearby water and rain. Fire can be destroyed safely by punching it, but it is hurtful if you stand directly in it. If a fire is started above netherrack or a magma block, it will immediately turn into an eternal fire.= Eternal fire is a damaging block that might create more fire. It will create fire around it when flammable blocks are nearby. Eternal fire can be extinguished by punches and nearby water blocks. Other than (normal) fire, eternal fire does not get extinguished on its own and also continues to burn under rain. Punching eternal fire is safe, but it hurts if you stand inside.= -%s has been cooked crisp.= -%s felt the burn.= -%s died in the flames.= -%s died in a fire.= +@1 has been cooked crisp.= +@1 felt the burn.= +@1 died in the flames.= +@1 died in a fire.= Fire= Eternal Fire= diff --git a/mods/ITEMS/mcl_nether/init.lua b/mods/ITEMS/mcl_nether/init.lua index d12b5a41..116fe789 100644 --- a/mods/ITEMS/mcl_nether/init.lua +++ b/mods/ITEMS/mcl_nether/init.lua @@ -94,7 +94,7 @@ minetest.register_node("mcl_nether:magma", { -- Hurt players standing on top of this block if player:get_hp() > 0 then if mod_death_messages then - mcl_death_messages.player_damage(player, string.format("%s stood too long on a magma block.", player:get_player_name())) + mcl_death_messages.player_damage(player, S("@1 stood too long on a magma block.", player:get_player_name())) end player:set_hp(player:get_hp() - 1) end diff --git a/mods/ITEMS/mcl_nether/locale/template.txt b/mods/ITEMS/mcl_nether/locale/template.txt index 215bd511..de932847 100644 --- a/mods/ITEMS/mcl_nether/locale/template.txt +++ b/mods/ITEMS/mcl_nether/locale/template.txt @@ -25,3 +25,4 @@ Nether Brick= Nether bricks are the main crafting ingredient for crafting nether brick blocks and nether fences.= Nether Lava Source= Flowing Nether Lava= +@1 stood too long on a magma block.= From f5cd9e3b98f38817f0a831aa6206cc784aea040c Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Fri, 15 Mar 2019 07:12:10 +0100 Subject: [PATCH 164/737] Fix malformed translations --- mods/ITEMS/mcl_flowers/locale/mcl_flowers.de.tr | 3 +-- mods/ITEMS/mcl_heads/locale/mcl_heads.de.tr | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/mods/ITEMS/mcl_flowers/locale/mcl_flowers.de.tr b/mods/ITEMS/mcl_flowers/locale/mcl_flowers.de.tr index 2a4424b8..58634ad1 100644 --- a/mods/ITEMS/mcl_flowers/locale/mcl_flowers.de.tr +++ b/mods/ITEMS/mcl_flowers/locale/mcl_flowers.de.tr @@ -14,8 +14,7 @@ Blue Orchid=Blaue Orchidee Tall Grass=Hohes Gras Tall grass is a small plant which often occurs on the surface of grasslands. It can be harvested for wheat seeds. By using bone meal, tall grass can be turned into double tallgrass which is two blocks high.=Hohes Gras ist eine kleine Pflanze, die oft auf Wiesenflächen wächst. Es kann für Weizensamen abgeerntet werden. Mit Knochenmehl wird sich hohes Gras zu doppelhohem Gras verwandeln. Fern=Farn -Ferns are small plants which occur naturally in jungles and taigas. They can be harvested for wheat seeds. By using bone meal, a fern can be turned into a large fern which is two blocks high.= -Farne sind kleine Pflanzen, die oft in Dschungeln und Taigas vorkommen. Sie können für Weizensamen abgeerntet werden. Mit Knochenmehl wird sich ein Farn zu einem großen Farn, der zwei Blöcke hoch ist, verwandeln. +Ferns are small plants which occur naturally in jungles and taigas. They can be harvested for wheat seeds. By using bone meal, a fern can be turned into a large fern which is two blocks high.=Farne sind kleine Pflanzen, die oft in Dschungeln und Taigas vorkommen. Sie können für Weizensamen abgeerntet werden. Mit Knochenmehl wird sich ein Farn zu einem großen Farn, der zwei Blöcke hoch ist, verwandeln. (Top Part)=(Oberseite) Peony=Pfingstrose A peony is a large plant which occupies two blocks. It is mainly used in dye protection.=Eine Pfingstrose ist eine große Pflanze, die zwei Blöcke hoch ist. Sie wird hauptsächlich für die Farbenproduktion gebraucht. diff --git a/mods/ITEMS/mcl_heads/locale/mcl_heads.de.tr b/mods/ITEMS/mcl_heads/locale/mcl_heads.de.tr index 2c5491dd..0237e139 100644 --- a/mods/ITEMS/mcl_heads/locale/mcl_heads.de.tr +++ b/mods/ITEMS/mcl_heads/locale/mcl_heads.de.tr @@ -2,8 +2,7 @@ Zombie Head=Zombiekopf A zombie head is a small decorative block which resembles the head of a zombie. It can also be worn as a helmet for fun, but does not offer any protection.=Ein Zombiekopf ist ein kleiner dekorativer Block, der so wie ein Kopf eines Zombies aussieht. Er kann auch als Helm zum Spaß getragen werden, aber er bietet keinerlei Schutz. Creeper Head=Creeper-Kopf -A creeper head is a small decorative block which resembles the head of a creeper. It can also be worn as a helmet for fun, but does not offer any protection.= -Ein Creeper-Kopf ist ein kleiner dekorativer Block, der so wie ein Kopf eines Creepers aussieht. Er kann auch als Helm zum Spaß getragen werden, aber er bietet keinerlei Schutz. +A creeper head is a small decorative block which resembles the head of a creeper. It can also be worn as a helmet for fun, but does not offer any protection.=Ein Creeper-Kopf ist ein kleiner dekorativer Block, der so wie ein Kopf eines Creepers aussieht. Er kann auch als Helm zum Spaß getragen werden, aber er bietet keinerlei Schutz. Human Head=A human head is a small decorative block which resembles the head of a human (i.e. a player character). It can also be worn as a helmet for fun, but does not offer any protection.=Ein Menschenkopf ist ein kleiner dekorativer Block, der so wie der Kopf eines Menschen (das heißt, einer Spielerfigur) aussieht. Er kann auch als Helm zum Spaß getragen werden, aber er bietet keinerlei Schutz. Skeleton Skull=Skelettschädel A skeleton skull is a small decorative block which resembles the skull of a skeleton. It can also be worn as a helmet for fun, but does not offer any protection.=Ein Skelettschädel ist ein kleiner dekorativer Block, der so wie ein Schädel eines Skeletts aussieht. Er kann auch als Helm zum Spaß getragen werden, aber er bietet keinerlei Schutz. From 3f85e1c0da464bd67cd872dad33fe3fb29463a68 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Fri, 15 Mar 2019 07:23:36 +0100 Subject: [PATCH 165/737] Fix lava/fire/magmablock death message not transl. --- mods/HUD/mcl_death_messages/init.lua | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/mods/HUD/mcl_death_messages/init.lua b/mods/HUD/mcl_death_messages/init.lua index 90943ecb..dc294e8d 100644 --- a/mods/HUD/mcl_death_messages/init.lua +++ b/mods/HUD/mcl_death_messages/init.lua @@ -140,7 +140,15 @@ minetest.register_on_dieplayer(function(player, reason) else field_msg = field end - msg = S(field_msg, name) + local textdomain + if highest_damage_def.mod_origin then + textdomain = highest_damage_def.mod_origin + else + textdomain = "mcl_death_messages" + end + -- We assume the textdomain of the death message in the node definition + -- equals the modname. + msg = minetest.translate(textdomain, field_msg, name) end elseif reason.type == "drown" then msg = dmsg("drown", name) From 1c27cbe4f6fce8e272366ced27be15bc6a6159af Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Fri, 15 Mar 2019 09:50:32 +0100 Subject: [PATCH 166/737] German translation: mcl_mobitems to mcl_potions --- .../ENTITIES/mcl_boats/locale/mcl_boats.de.tr | 2 +- mods/ENTITIES/mobs_mc/locale/mobs_mc.de.tr | 2 +- mods/ITEMS/mcl_core/locale/mcl_core.de.tr | 11 ++-- mods/ITEMS/mcl_core/locale/template.tr | 1 + mods/ITEMS/mcl_doors/locale/mcl_doors.de.tr | 2 +- mods/ITEMS/mcl_heads/locale/mcl_heads.de.tr | 3 +- mods/ITEMS/mcl_mobitems/init.lua | 2 +- .../mcl_mobitems/locale/mcl_mobitems.de.tr | 60 +++++++++++++++++++ mods/ITEMS/mcl_mobitems/locale/template.txt | 2 +- mods/ITEMS/mcl_mobspawners/init.lua | 2 +- .../locale/mcl_mobspawners.de.tr | 4 ++ .../ITEMS/mcl_mobspawners/locale/template.txt | 2 +- mods/ITEMS/mcl_monster_eggs/init.lua | 2 +- .../locale/mcl_monster_eggs.de.tr | 8 +++ .../mcl_monster_eggs/locale/template.txt | 2 +- .../mcl_mushrooms/locale/mcl_mushrooms.de.tr | 21 +++++++ mods/ITEMS/mcl_mushrooms/locale/template.txt | 2 +- mods/ITEMS/mcl_mushrooms/small.lua | 2 +- mods/ITEMS/mcl_nether/locale/mcl_nether.de.tr | 36 +++++++++++ mods/ITEMS/mcl_nether/locale/template.txt | 10 +++- mods/ITEMS/mcl_nether/nether_wart.lua | 18 +++--- mods/ITEMS/mcl_ocean/locale/mcl_ocean.de.tr | 9 +++ .../mcl_portals/locale/mcl_portals.de.tr | 14 +++++ .../mcl_potions/locale/mcl_potions.de.tr | 20 +++++++ 24 files changed, 211 insertions(+), 26 deletions(-) create mode 100644 mods/ITEMS/mcl_mobitems/locale/mcl_mobitems.de.tr create mode 100644 mods/ITEMS/mcl_mobspawners/locale/mcl_mobspawners.de.tr create mode 100644 mods/ITEMS/mcl_monster_eggs/locale/mcl_monster_eggs.de.tr create mode 100644 mods/ITEMS/mcl_mushrooms/locale/mcl_mushrooms.de.tr create mode 100644 mods/ITEMS/mcl_nether/locale/mcl_nether.de.tr create mode 100644 mods/ITEMS/mcl_ocean/locale/mcl_ocean.de.tr create mode 100644 mods/ITEMS/mcl_portals/locale/mcl_portals.de.tr create mode 100644 mods/ITEMS/mcl_potions/locale/mcl_potions.de.tr diff --git a/mods/ENTITIES/mcl_boats/locale/mcl_boats.de.tr b/mods/ENTITIES/mcl_boats/locale/mcl_boats.de.tr index d18b3526..3c97cf5e 100644 --- a/mods/ENTITIES/mcl_boats/locale/mcl_boats.de.tr +++ b/mods/ENTITIES/mcl_boats/locale/mcl_boats.de.tr @@ -3,7 +3,7 @@ Acacia Boat=Akazienboot Birch Boat=Birkenboot Boat=Boot Boats are used to travel on the surface of water.=Boote werden benutzt, um sich auf der Wasseroberfläche zu bewegen. -Dark Oak Boat=Dunkeleichenboot +Dark Oak Boat=Schwarzeichenboot Jungle Boat=Dschungelboot Oak Boat=Eichenboot Rightclick on a water source to place the boat. Rightclick the boat to enter it. Use [Left] and [Right] to steer, [Forwards] to speed up and [Backwards] to slow down or move backwards. Rightclick the boat again to leave it, punch the boat to make it drop as an item.=Rechtsklicken Sie auf eine Wasserquelle, um das Boot zu platzieren. Rechtsklicken Sie auf das Boot, um es zu betreten. Mit [Links] und [Rechts] lenken, mit [Vorwärts] und [Rückwärts] Geschwindigkeit regeln oder rückwärts fahren. Rechtsklicken Sie erneut auf das Boot, um es zu verlassen, schlagen Sie das Boot, um es als Gegenstand fallen zu lassen. diff --git a/mods/ENTITIES/mobs_mc/locale/mobs_mc.de.tr b/mods/ENTITIES/mobs_mc/locale/mobs_mc.de.tr index 97ce2d4c..c5b6e73c 100644 --- a/mods/ENTITIES/mobs_mc/locale/mobs_mc.de.tr +++ b/mods/ENTITIES/mobs_mc/locale/mobs_mc.de.tr @@ -29,7 +29,7 @@ Polar Bear=Eisbär Rabbit=Kaninchen Killer Bunny=Killerkaninchen Sheep=Schaf -Shulker=Shulber +Shulker=Shulker Silverfish=Silberfischchen Skeleton=Skelett Stray=Eiswanderer diff --git a/mods/ITEMS/mcl_core/locale/mcl_core.de.tr b/mods/ITEMS/mcl_core/locale/mcl_core.de.tr index 1a49c670..54d1f416 100644 --- a/mods/ITEMS/mcl_core/locale/mcl_core.de.tr +++ b/mods/ITEMS/mcl_core/locale/mcl_core.de.tr @@ -53,6 +53,7 @@ Brown Stained Glass=Braunes Glas Cactus=Kaktus Charcoal=Holzkohle Charcoal is an alternative furnace fuel created by cooking wood in a furnace. It has the same burning time as coal and also shares many of its crafting recipes, but it can not be used to create coal blocks.=Holzkohle ist ein alternativer Brennstoff. Er entsteht, wenn Holz im Ofen verkohlt wird. Er brennt genau so lange wie Kohle und hat fast identische Herstellungsrezepte, aber es können keine Kohleblöcke damit gemacht werden. +Chiseled Stone Bricks=Gemeißelte Steinziegel Chiseled Red Sandstone=Gemeißelter roter Sandstein Chiseled Sandstone=Gemeißelter Sandstein Chiseled Stone Bricks=Gemeißelte Steinziegel @@ -69,7 +70,7 @@ Coarse dirt acts as a soil for some plants and is similar to dirt, but it will n Cobblestone=Kopfsteinpflaster Cobweb=Spinnennetz Cobwebs can be walked through, but significantly slow you down.=Spinnennetze können passiert werden, aber sie verlangsamen Sie beträchtlich. -Cracked Stone Bricks=Brüchige Steinziegel +Cracked Stone Bricks=Rissige Steinziegel Cut Red Sandstone=Geschliffener roter Sandstein Cut Sandstone=Geschliffener Sandstein Cut red sandstone is a decorative building block.=Geschliffener roter Sandstein ist ein dekorativer Block zum Bauen. @@ -186,10 +187,10 @@ Sandstone=Sandstein Sandstone is compressed sand and is a rather soft kind of stone.=Sandstein ist komprimierter Sand und ein relativ weiches Gestein. Slime Block=Schleimblock Slime blocks are very bouncy and prevent fall damage.=Schleimblöcke sind sehr sprunghaft und verhindern Fallschaden. -Smooth Red Sandstone=Weicher roter Sandstein -Smooth Sandstone=Weicher Sandstein -Smooth red sandstone is a decorative building block.=Weicher roter Sandstein ist ein decorativer Block zum Bauen. -Smooth sandstone is compressed sand and is a rather soft kind of stone.=Weicher Sandstein ist komprimierter Sand und ein relativ weiches Gestein. +Smooth Red Sandstone=Glatter roter Sandstein +Smooth Sandstone=Glatter Sandstein +Smooth red sandstone is a decorative building block.=Glatter roter Sandstein ist ein decorativer Block zum Bauen. +Smooth sandstone is compressed sand and is a rather soft kind of stone.=Glatter Sandstein ist komprimierter Sand und ein relativ weiches Gestein. Snow=Schnee Some coal contained in stone, it is very common and can be found inside stone in medium to large clusters at nearly every height.=Etwas Kohle im Stein, es kommt sehr häufig vor und kann in mittelgroßen bis großen Ansammlungen im Stein bei fast jeder Höhe gefunden werden. Some iron contained in stone, it is prety common and can be found below sea level.=Etwas Eisen umschlossen von Stein, es ist recht verbreitet und kann unter der Meeresoberfläche gefunden werden. diff --git a/mods/ITEMS/mcl_core/locale/template.tr b/mods/ITEMS/mcl_core/locale/template.tr index b68ee8a4..8976d3cf 100644 --- a/mods/ITEMS/mcl_core/locale/template.tr +++ b/mods/ITEMS/mcl_core/locale/template.tr @@ -53,6 +53,7 @@ Brown Stained Glass= Cactus= Charcoal= Charcoal is an alternative furnace fuel created by cooking wood in a furnace. It has the same burning time as coal and also shares many of its crafting recipes, but it can not be used to create coal blocks.= +Chiseled Stone Bricks= Chiseled Red Sandstone= Chiseled Sandstone= Chiseled Stone Bricks= diff --git a/mods/ITEMS/mcl_doors/locale/mcl_doors.de.tr b/mods/ITEMS/mcl_doors/locale/mcl_doors.de.tr index b4676022..6b9273b7 100644 --- a/mods/ITEMS/mcl_doors/locale/mcl_doors.de.tr +++ b/mods/ITEMS/mcl_doors/locale/mcl_doors.de.tr @@ -18,6 +18,6 @@ Dark Oak Trapdoor=Schwarzeichenfalltür Jungle Trapdoor=Dschungelfalltür Wooden trapdoors are horizontal barriers which can be opened and closed by hand or a redstone signal. They occupy the upper or lower part of a block, depending on how they have been placed. When open, they can be climbed like a ladder.=Holzfalltüren sind horizontale Barrieren, die von Hand oder mit einem Redstone-Signal geöffnet oder geschlossen werden können. Sie belegen den oberen oder unteren Teil eines Blocks, je nach dem, wie sie platziert wurden. Wenn geöffnet, können sie wie eine Leiter erklommen werden. To open or close the trapdoor, rightclick it or send a redstone signal to it.=Um die Falltür zu öffnen oder zu schließen, rechtsklicken Sie sie oder schicken Sie ein Redstone-Signal zu ihr. -Iron Trapdoor=Eisenfalltür. +Iron Trapdoor=Eisenfalltür Iron trapdoors are horizontal barriers which can only be opened and closed by redstone signals, but not by hand. They occupy the upper or lower part of a block, depending on how they have been placed. When open, they can be climbed like a ladder.=Eisenfalltüren sind horizontale Barrieren, die nur mit einem Redstone-Signal geöffnet oder geschlossen werden können, nicht von Hand. Sie belegen den oberen oder unteren Teil eines Blocks, je nach dem, wie sie platziert wurden. Wenn geöffnet, können sie wie eine Leiter erklommen werden. diff --git a/mods/ITEMS/mcl_heads/locale/mcl_heads.de.tr b/mods/ITEMS/mcl_heads/locale/mcl_heads.de.tr index 0237e139..0adb187d 100644 --- a/mods/ITEMS/mcl_heads/locale/mcl_heads.de.tr +++ b/mods/ITEMS/mcl_heads/locale/mcl_heads.de.tr @@ -3,7 +3,8 @@ Zombie Head=Zombiekopf A zombie head is a small decorative block which resembles the head of a zombie. It can also be worn as a helmet for fun, but does not offer any protection.=Ein Zombiekopf ist ein kleiner dekorativer Block, der so wie ein Kopf eines Zombies aussieht. Er kann auch als Helm zum Spaß getragen werden, aber er bietet keinerlei Schutz. Creeper Head=Creeper-Kopf A creeper head is a small decorative block which resembles the head of a creeper. It can also be worn as a helmet for fun, but does not offer any protection.=Ein Creeper-Kopf ist ein kleiner dekorativer Block, der so wie ein Kopf eines Creepers aussieht. Er kann auch als Helm zum Spaß getragen werden, aber er bietet keinerlei Schutz. -Human Head=A human head is a small decorative block which resembles the head of a human (i.e. a player character). It can also be worn as a helmet for fun, but does not offer any protection.=Ein Menschenkopf ist ein kleiner dekorativer Block, der so wie der Kopf eines Menschen (das heißt, einer Spielerfigur) aussieht. Er kann auch als Helm zum Spaß getragen werden, aber er bietet keinerlei Schutz. +Human Head=Menschenkopf +A human head is a small decorative block which resembles the head of a human (i.e. a player character). It can also be worn as a helmet for fun, but does not offer any protection.=Ein Menschenkopf ist ein kleiner dekorativer Block, der so wie der Kopf eines Menschen (das heißt, einer Spielerfigur) aussieht. Er kann auch als Helm zum Spaß getragen werden, aber er bietet keinerlei Schutz. Skeleton Skull=Skelettschädel A skeleton skull is a small decorative block which resembles the skull of a skeleton. It can also be worn as a helmet for fun, but does not offer any protection.=Ein Skelettschädel ist ein kleiner dekorativer Block, der so wie ein Schädel eines Skeletts aussieht. Er kann auch als Helm zum Spaß getragen werden, aber er bietet keinerlei Schutz. Wither Skeleton Skull=Witherskelettschädel diff --git a/mods/ITEMS/mcl_mobitems/init.lua b/mods/ITEMS/mcl_mobitems/init.lua index 27acbb61..27c2a538 100644 --- a/mods/ITEMS/mcl_mobitems/init.lua +++ b/mods/ITEMS/mcl_mobitems/init.lua @@ -146,7 +146,7 @@ end -- TODO: Clear *all* status effects minetest.register_craftitem("mcl_mobitems:milk_bucket", { description = S("Milk"), - _doc_items_longdesc = S("Milk is very refreshing and can be obtained by using a bucket on a cow. Drinking it will cure all forms of poisoning (in later versions: all status effects), but restores no hunger points."), + _doc_items_longdesc = S("Milk is very refreshing and can be obtained by using a bucket on a cow. Drinking it will cure all forms of poisoning, but restores no hunger points."), _doc_items_usagehelp = "Rightclick to drink the milk.", inventory_image = "mcl_mobitems_bucket_milk.png", wield_image = "mcl_mobitems_bucket_milk.png", diff --git a/mods/ITEMS/mcl_mobitems/locale/mcl_mobitems.de.tr b/mods/ITEMS/mcl_mobitems/locale/mcl_mobitems.de.tr new file mode 100644 index 00000000..15f82652 --- /dev/null +++ b/mods/ITEMS/mcl_mobitems/locale/mcl_mobitems.de.tr @@ -0,0 +1,60 @@ +# textdomain: mcl_mobitems +Rotten Flesh=Gammelfleisch +Yuck! This piece of flesh clearly has seen better days. If you're really desperate, you can eat it to restore a few hunger points, but there's a 80% chance it causes food poisoning, which increases your hunger for a while.=Igitt! Dieses Stück Fleisch hat wohl bessere Tage gesehen. Wenn Sie es essen, werden Sie sofort vergiftet und erleiden einen Schaden von 4 Trefferpunkten. Aber gezähmte Wölfe können es problemlos fressen. +Raw Mutton=Rohes Hammelfleisch +Raw mutton is the flesh from a sheep and can be eaten safely. Cooking it will greatly increase its nutritional value.=Rohes Hammelfleisch ist das Fleisch eines Schafes und ein Lebensmittel, welches bedenkenlos verzehrt werden kann. Es kann gebraten werden, um seinen Nährwert deutlich zu erhöhen. +Cooked Mutton=Gebratenes Hammelfleisch +Cooked mutton is the cooked flesh from a sheep and is used as food.=Gebratenes Hammelfleisch ist das gebratene Fleisch eines Schafs und dient als Lebensmittel. +Raw Beef=Rohes Rindfleisch +Raw beef is the flesh from cows and can be eaten safely. Cooking it will greatly increase its nutritional value.=Rohes Rindfleisch ist das Fleisch von Kühen und kann problemlos gegessen werden. Es kann gegart werden, um den Nährwert deutlich zu erhöhen. +Steak=Steak +Steak is cooked beef from cows and can be eaten.=Steak ist gebratenes Rindfleisch und kann gegessen werden. +Raw Chicken=Rohes Hühnchen +Raw chicken is a food item which is not safe to consume. You can eat it to restore a few hunger points, but there's a 30% chance to suffer from food poisoning, which increases your hunger rate for a while. Cooking raw chicken will make it safe to eat and increases its nutritional value.=Rohes Hühnchen ist ein Lebensmittel, das nicht sicher für den Verzehr ist. Sie können es essen, um ein paar Hungerpunkte zu erhalten, aber mit einer Wahrscheinlichkeit von 30% erleiden Sie eine Lebensmittelvergiftung, die Ihre Hungerrate für eine Weile erhöht. Braten Sie ein rohes Hühnchen, um es sicher zuzubereiten und den Nährwert zu erhöhen. +Cooked Chicken=Gebratenes Hühnchen +A cooked chicken is a healthy food item which can be eaten.=Ein gebratenes Hühnchen ist ein gesundes essbares Lebensmittel. +Raw Porkchop=Rohes Schweinefleisch +A raw porkchop is the flesh from a pig and can be eaten safely. Cooking it will greatly increase its nutritional value.=Ein rohes Stück Schweinefleisch kann bedenkenlos gegessen werden. Man kann es braten, um seinen Nährwert stark zu erhöhen. +Cooked Porkchop=Gebratenes Schweinefleisch +Cooked porkchop is the cooked flesh of a pig and is used as food.=Ein gebratenes Stück Schweinefleisch ist ein gutes Lebensmittel. +Raw Rabbit=Rohes Kaninchen +Raw rabbit is a food item from a dead rabbit. It can be eaten safely. Cooking it will increase its nutritional value.=Rohes Kaninchenfleisch ist ein Lebensmittel, welches bedenkenlos verzehrt werden kann. Es kann gebraten werden, um seinen Nährwert zu erhöhen. +Cooked Rabbit=Gebratenes Kaninchen +This is a food item which can be eaten.=Dies ist ein essbares Lebensmittel. +Milk=Milch +Milk is very refreshing and can be obtained by using a bucket on a cow. Drinking it will cure all forms of poisoning, but restores no hunger points.=Milch ist sehr erfrischend und wird erhalten, wenn ein Eimer an einer Kuh benutzt wird. Wenn es getrunken wird, werden alle Vergiftungserscheinungen kuriert, aber es werden keine Hungerpunkte wiederhergestellt. +Spider Eye=Spinnenauge +Spider eyes are used mainly in crafting. If you're really desperate, you can eat a spider eye, but it will poison you briefly.=Spinnenaugen werden hauptsächlich in der Fertigung benutzt. Wenn Sie wirklich verzweifelt sind, können sie es essen, aber das wird Sie kurz vergiften. +Bone=Knochen +Bones can be used to tame wolves so they will protect you. They are also useful as a crafting ingredient.=Knochen können benutzt werden, um Wölfe zu zähmen, damit sie einen beschützen. Sie außerdem nützlich in der Fertigung. +String=Faden +Strings are used in crafting.=Fäden sind nützlich in der Fertigung. +Blaze Rod=Lohenrute +This is a crafting component dropped from dead blazes.=Dies ist eine Fertigungskomponente, die von toten Lohen abgeworfen wird. +Blaze Powder=Lohenstaub +This item is mainly used for crafting.=Dieser Gegenstand wird hauptsächlich in der Fertigung benutzt. +Magma Cream=Magmacreme +Magma cream is a crafting component.=Magmacreme ist eine Fertigungskomponente. +Ghast Tear=Ghast-Träne +Place this item in an item frame as decoration.=Platzieren Sie diesen Gegenstand in einem Rahmel als Deko. +Nether Star=Nether-Stern +A nether star is dropped when the Wither dies. Place it in an item frame to show the world how hardcore you are! Or just as decoration.=Ein Netherstern wird abgeworfen, wenn der Wither stirbt. Platzieren Sie ihn in einen Rahmen, um der Welt zu zeigen, wie großartig Sie sind! +Leather=Leder +Leather is a versatile crafting component.=Leder ist eine vielseitige Fertigungskomponente. +Feather=Feder +Feathers are used in crafting and are dropped from chickens.=Federn werden in der Fertigung benutzt und werden von Hühnern abgeworfen. +Rabbit Hide=Kaninchenfell +Rabbit hide is used to create leather.=Kaninchenfell wird zur Herstellung von Leder benutzt. +Rabbit's Foot=Hasenpfote +Must be your lucky day! Place this item in an item frame for decoration.=Muss wohl Ihr Glückstag sein! Platzieren Sie diesen Gegenstand in einen Rahmen zur Dekoration. +Saddle=Sattel +Saddles can be put on some animals in order to mount them.=Sattel können auf einigen Tieren platziert werden, um sich aufzusatteln. +Rabbit Stew=Kaninchenragout +Rabbit stew is a very nutricious food item.=Kaninchenragout ist ein sehr nahrhaftes Lebensmittel. +Shulker Shell=Shulkerschale +Shulker shells are used in crafting. They are dropped from dead shulkers.=Shulkerschalen werden für die Fertigung verwendet. Sie werden von toten Shulkern fallen gelassen. +Slimeball=Schleimkugel +Slimeballs are used in crafting. They are dropped from slimes.=Schleimkugeln werden in der Fertigung verwendet. Sie werden von Schleimen fallen gelassen. +Gunpowder=Schießpulver +Carrot on a Stick=Karottenrute +A carrot on a stick can be used on saddled pigs to ride them.=Eine Karottenrute kann auf gesattelten Schweinen angewendet werden, um sie zu reiten. diff --git a/mods/ITEMS/mcl_mobitems/locale/template.txt b/mods/ITEMS/mcl_mobitems/locale/template.txt index 21249726..aa28e6b0 100644 --- a/mods/ITEMS/mcl_mobitems/locale/template.txt +++ b/mods/ITEMS/mcl_mobitems/locale/template.txt @@ -22,7 +22,7 @@ Raw rabbit is a food item from a dead rabbit. It can be eaten safely. Cooking it Cooked Rabbit= This is a food item which can be eaten.= Milk= -Milk is very refreshing and can be obtained by using a bucket on a cow. Drinking it will cure all forms of poisoning (in later versions: all status effects), but restores no hunger points.= +Milk is very refreshing and can be obtained by using a bucket on a cow. Drinking it will cure all forms of poisoning, but restores no hunger points.= Spider Eye= Spider eyes are used mainly in crafting. If you're really desperate, you can eat a spider eye, but it will poison you briefly.= Bone= diff --git a/mods/ITEMS/mcl_mobspawners/init.lua b/mods/ITEMS/mcl_mobspawners/init.lua index 70d4cdad..632e4fa7 100644 --- a/mods/ITEMS/mcl_mobspawners/init.lua +++ b/mods/ITEMS/mcl_mobspawners/init.lua @@ -267,7 +267,7 @@ minetest.register_node("mcl_mobspawners:spawner", { walkable = true, description = S("Mob Spawner"), _doc_items_longdesc = S("A mob spawner regularily causes mobs to appear around it while a player is nearby. Some mob spawners are disabled while in light."), - _doc_items_usagehelp = S("If you have a spawn egg, you use it to change the mob to spawn. Just place the item on the mob spawner. Player-set mob spawners always spawn mobs regardless of the light level."), + _doc_items_usagehelp = S("If you have a spawn egg, you can use it to change the mob to spawn. Just place the item on the mob spawner. Player-set mob spawners always spawn mobs regardless of the light level."), groups = {pickaxey=1, material_stone=1, deco_block=1}, is_ground_content = false, drop = "", diff --git a/mods/ITEMS/mcl_mobspawners/locale/mcl_mobspawners.de.tr b/mods/ITEMS/mcl_mobspawners/locale/mcl_mobspawners.de.tr new file mode 100644 index 00000000..84a849ed --- /dev/null +++ b/mods/ITEMS/mcl_mobspawners/locale/mcl_mobspawners.de.tr @@ -0,0 +1,4 @@ +# textdomain: mcl_mobspawners +Mob Spawner=Mobspawner +A mob spawner regularily causes mobs to appear around it while a player is nearby. Some mob spawners are disabled while in light.=Ein Mobspawner lässt regelmäßig Mobs um ihn herum auftauchen, wenn sich ein Spieler in der Nähe befindet. Einige Mobspawner werden inaktiv, wenn sie sich im Licht befinden. +If you have a spawn egg, you can use it to change the mob to spawn. Just place the item on the mob spawner. Player-set mob spawners always spawn mobs regardless of the light level.=Wenn Sie ein Spawn-Ei haben, können Sie es benutzen, um den Mobtyp, der erzeugt wird, zu ändern. Platzieren Sie den Gegenstand einfach auf dem Mobspawner. Von Spielern manipulierte Mobspawner erzeugen immer Mobs, unabhängig von der Helligkeit. diff --git a/mods/ITEMS/mcl_mobspawners/locale/template.txt b/mods/ITEMS/mcl_mobspawners/locale/template.txt index f6948377..6a660585 100644 --- a/mods/ITEMS/mcl_mobspawners/locale/template.txt +++ b/mods/ITEMS/mcl_mobspawners/locale/template.txt @@ -1,4 +1,4 @@ # textdomain: mcl_mobspawners Mob Spawner= A mob spawner regularily causes mobs to appear around it while a player is nearby. Some mob spawners are disabled while in light.= -If you have a spawn egg, you use it to change the mob to spawn. Just place the item on the mob spawner. Player-set mob spawners always spawn mobs regardless of the light level.= +If you have a spawn egg, you can use it to change the mob to spawn. Just place the item on the mob spawner. Player-set mob spawners always spawn mobs regardless of the light level.= diff --git a/mods/ITEMS/mcl_monster_eggs/init.lua b/mods/ITEMS/mcl_monster_eggs/init.lua index e693db00..1f7244cb 100644 --- a/mods/ITEMS/mcl_monster_eggs/init.lua +++ b/mods/ITEMS/mcl_monster_eggs/init.lua @@ -1,7 +1,7 @@ -- Monster eggs! -- Blocks which spawn silverfish when destroyed. -local S = minetest.get_translator("mcl_mobspawners") +local S = minetest.get_translator("mcl_monster_eggs") local spawn_silverfish = function(pos, oldnode, oldmetadata, digger) if not minetest.settings:get_bool("creative_mode") then diff --git a/mods/ITEMS/mcl_monster_eggs/locale/mcl_monster_eggs.de.tr b/mods/ITEMS/mcl_monster_eggs/locale/mcl_monster_eggs.de.tr new file mode 100644 index 00000000..61145497 --- /dev/null +++ b/mods/ITEMS/mcl_monster_eggs/locale/mcl_monster_eggs.de.tr @@ -0,0 +1,8 @@ +# textdomain: mcl_monster_eggs +An infested block is a block from which a silverfish will pop out when it is broken. It looks identical to its normal counterpart.=Ein verseuchter Block ist ein Block, aus dem ein Silberfischchen hinausfallen wird, wenn er zerbrochen wird. Er sieht identisch zu seinem normalen Pendant aus. +Infested Stone=Verseuchter Stein +Infested Cobblestone=Verseuchtes Kopfsteinpflaster +Infested Stone Bricks=Verseuchte Steinziegel +Infested Cracked Stone Bricks=Verseuchte rissige Steinziegel +Infested Mossy Stone Bricks=Verseuchte moosige Steinziegel +Infested Chiseled Stone Bricks=Verseuchte gemeißelte Steinziegel diff --git a/mods/ITEMS/mcl_monster_eggs/locale/template.txt b/mods/ITEMS/mcl_monster_eggs/locale/template.txt index 7e8b0c0c..ce40fa8b 100644 --- a/mods/ITEMS/mcl_monster_eggs/locale/template.txt +++ b/mods/ITEMS/mcl_monster_eggs/locale/template.txt @@ -1,4 +1,4 @@ -# textdomain: mcl_mobspawners +# textdomain: mcl_monster_eggs An infested block is a block from which a silverfish will pop out when it is broken. It looks identical to its normal counterpart.= Infested Stone= Infested Cobblestone= diff --git a/mods/ITEMS/mcl_mushrooms/locale/mcl_mushrooms.de.tr b/mods/ITEMS/mcl_mushrooms/locale/mcl_mushrooms.de.tr new file mode 100644 index 00000000..442b46fc --- /dev/null +++ b/mods/ITEMS/mcl_mushrooms/locale/mcl_mushrooms.de.tr @@ -0,0 +1,21 @@ +# textdomain: mcl_mushrooms +This decorative block is like a huge mushroom stem, but with the stem texture on all sides.=Dieser dekorative Block ist wie ein Riesenpilzstängel, aber mit der Stängeltextur auf allen Seiten. +Huge red mushroom blocks are the cap parts of huge red mushrooms. It consists of a red skin and can have pores on each of its sides.=Rote Riesenpilzblöcke sind die Kappenteile von roten Riesenpilzen. Sie bestehen aus einer roten Haut und können Poren an jede ihrer Seiten haben. +The stem part of a huge red mushroom.=Der Stängelteil eines roten Riesenpilzes. +Huge Red Mushroom Block=Roter Riesenpilzblock +Huge Red Mushroom Stem=Roter Riesenpilzstängel +Huge Red Mushroom All-Faces Stem=Roter allseitiger Riesenpilzstängel +Huge brown mushroom blocks are the cap parts of huge red mushrooms. It consists of a brown skin and can have pores on each of its sides.=Braune Riesenpilzblöcke sind die Kappenteile von braunen Riesenpilzen. Sie bestehen aus einer braunen Haut und können Poren an jede ihrer Seiten haben. +The stem part of a huge brown mushroom.=Der Stängelteil eines braunen Riesenpilzes. +Huge Brown Mushroom Block=Brauner Riesenpilzblock +Huge Brown Mushroom Stem=Brauner Riesenpilzstängel +Huge Brown Mushroom All-Faces Stem=Brauner allseitiger Riesenpilzstängel +Brown mushrooms are fungi which grow and spread in darkness, but are sensitive to light. They are inedible as such, but they can be used to craft food items.=Braune Pilze wachsen und breiten sich in der Dunkelheit aus, aber sie sind Lichtempfindlich. Als solche sind sie ungenießbar, aber sie können benutzt werden, um Lebensmittel herzustellen. +Red mushrooms are fungi which grow and spread in darkness, but are sensitive to light. They are inedible as such, but they can be used to craft food items.=Rote Pilze wachsen und breiten sich in der Dunkelheit aus, aber sie sind Lichtempfindlich. Als solche sind sie ungenießbar, aber sie können benutzt werden, um Lebensmittel herzustellen. +A single mushroom of this species will slowly spread over time towards a random solid opaque block with a light level of 12 or lower in a 3×3×3 cube around the mushroom. It stops spreading when there are 5 or more mushrooms of the same species within an area of 9×3×9 blocks around the mushroom.=Ein einzelner Pilz dieser Art wird sich im Laufe der Zeit zu einem zufälligen festem undurchsichtigem Block mit einer Lichtstärke von 12 oder weniger in einem 3×3×3-Würfel um den Pilz hin ausbreiten. Er wird sich nicht weiter ausbreiten, wenn sich 5 oder mehr Pilze der gleichen Art innerhalb eines Bereichs von 9×3×9 Blöcken um den Pilz befinden. +Mushrooms will eventually uproot at a light level of 12 or higher. On mycelium or podzol, they survive and spread at any light level.=Pilze werden sich bei einer Lichtstärke von mindestens 12 irgendwann selbst entwurzeln. Auf Myzel oder Podsol überleben sie und breiten sich bei jeder Lichtstärke aus. +This mushroom can be placed on mycelium and podzol at any light level. It can also be placed on blocks which are both solid and opaque, as long as the light level at daytime is not higher than 12.=Diser Pilz kann auf Myzel und Podsol in jeder Lichtstärke platziert werden. Er kann auch auf Blöcken platziert werden, die sowohl fest als auch undurchsichtig sind, solange die Lichtstärke des Tageslichts nicht höher als 12 ist. +Brown Mushroom=Brauner Pilz +Red Mushroom=Roter Pilz +Mushroom Stew=Pilzsuppe +Mushroom stew is a healthy soup which can be consumed to restore some hunger points.=Pilzsuppe ist eine gesunde Suppe, die für ein paar Hungerpunkte konsumiert werden kann. diff --git a/mods/ITEMS/mcl_mushrooms/locale/template.txt b/mods/ITEMS/mcl_mushrooms/locale/template.txt index 77e0156e..2c4c3ba6 100644 --- a/mods/ITEMS/mcl_mushrooms/locale/template.txt +++ b/mods/ITEMS/mcl_mushrooms/locale/template.txt @@ -14,7 +14,7 @@ Brown mushrooms are fungi which grow and spread in darkness, but are sensitive t Red mushrooms are fungi which grow and spread in darkness, but are sensitive to light. They are inedible as such, but they can be used to craft food items.= A single mushroom of this species will slowly spread over time towards a random solid opaque block with a light level of 12 or lower in a 3×3×3 cube around the mushroom. It stops spreading when there are 5 or more mushrooms of the same species within an area of 9×3×9 blocks around the mushroom.= Mushrooms will eventually uproot at a light level of 12 or higher. On mycelium or podzol, they survive and spread at any light level.= -This mushroom can be placed on mycelium and podzol at any light level. They can also be placed on blocks which are both solid and opaque, as long as the light level at daytime is not higher than 12.= +This mushroom can be placed on mycelium and podzol at any light level. It can also be placed on blocks which are both solid and opaque, as long as the light level at daytime is not higher than 12.= Brown Mushroom= Red Mushroom= Mushroom Stew= diff --git a/mods/ITEMS/mcl_mushrooms/small.lua b/mods/ITEMS/mcl_mushrooms/small.lua index 7b446604..75bdeeec 100644 --- a/mods/ITEMS/mcl_mushrooms/small.lua +++ b/mods/ITEMS/mcl_mushrooms/small.lua @@ -23,7 +23,7 @@ local longdesc_intro_red = S("Red mushrooms are fungi which grow and spread in d local longdesc_append = S("A single mushroom of this species will slowly spread over time towards a random solid opaque block with a light level of 12 or lower in a 3×3×3 cube around the mushroom. It stops spreading when there are 5 or more mushrooms of the same species within an area of 9×3×9 blocks around the mushroom.").."\n".. S("Mushrooms will eventually uproot at a light level of 12 or higher. On mycelium or podzol, they survive and spread at any light level.") -local usagehelp = S("This mushroom can be placed on mycelium and podzol at any light level. They can also be placed on blocks which are both solid and opaque, as long as the light level at daytime is not higher than 12.") +local usagehelp = S("This mushroom can be placed on mycelium and podzol at any light level. It can also be placed on blocks which are both solid and opaque, as long as the light level at daytime is not higher than 12.") minetest.register_node("mcl_mushrooms:mushroom_brown", { description = S("Brown Mushroom"), diff --git a/mods/ITEMS/mcl_nether/locale/mcl_nether.de.tr b/mods/ITEMS/mcl_nether/locale/mcl_nether.de.tr new file mode 100644 index 00000000..c114f8f3 --- /dev/null +++ b/mods/ITEMS/mcl_nether/locale/mcl_nether.de.tr @@ -0,0 +1,36 @@ +# textdomain: mcl_nether +Glowstone=Leuchtstein +Glowstone is a naturally-glowing block which is home to the Nether.=Leuchtstein ist ein Block aus dem Nether. Er leuchtet von Natur aus hell. +Nether Quartz Ore=Nether-Quarzerz +Nether quartz ore is an ore containing nether quartz. It is commonly found around netherrack in the Nether.=Nether-Quarzerz ist ein Erz, das Nethererz enthält. Es wird oft zwischen Netherrack im Nether gefunden. +Netherrack=Netherrack +Netherrack is a stone-like block home to the Nether. Starting a fire on this block will create an eternal fire.=Netherrack ist ein gesteinsartiger Block aus dem Nether. Auf diesem Block wird ein Feuer immer ein ewiges Feuer sein. +Magma Block=Magmablock +Magma blocks are hot solid blocks which hurt anyone standing on it, unless they have fire resistance. Starting a fire on this block will create an eternal fire.=Magmablöcke sind heiße feste Blöcke, die jeden, der auf ihm steht, verletzen, es sei denn, sie sind gegen Feuer immun. Auf diesem Block wird ein Feuer immer ein ewiges Feuer sein. +Soul Sand=Seelensand +Soul sand is a block from the Nether. One can only slowly walk on soul sand. The slowing effect is amplified when the soul sand is on top of ice, packed ice or a slime block.=Seelensand ist ein Block aus dem Nether. Man kann auf ihm nur langsam gehen. Die Verlangsamung ist verstärkt, wenn sich der Seelensand auf Eis, Packeis oder einem Schleimblock befindet. +Nether Brick Block=Netherziegelblock +Red Nether Brick Block=Roter Netherziegelblock +Nether Wart Block=Netherwurzblock +A nether wart block is a purely decorative block made from nether wart.=Ein Netherwurzblock ist ein rein dekorativer Block aus Netherwurz. +Block of Quartz=Quarzblock +Chiseled Quartz Block=Gemeißelter Quarzblock +Pillar Quartz Block=Quarzsäulenblock +Smooth Quartz=Glatter Quarz +Glowstone Dust=Leuchtsteinstaub +Glowstone dust is the dust which comes out of broken glowstones. It is mainly used in crafting.=Leuchtsteinstaub ist das Staub aus zerbrochenen Leuchtsteinen. +Nether Quartz=Netherquarz +Nether quartz is a versatile crafting ingredient.=Netherquarz ist eine vielseitige Fertigungskomponente. +Nether Brick=Netherziegel +Nether bricks are the main crafting ingredient for crafting nether brick blocks and nether fences.=Netherziegel werden hauptsächlich zur Fertigung von Netherziegelblöcken und Netherzäunen benutzt. +Nether Lava Source=Netherlavaquelle +Flowing Nether Lava=Fließende Netherlava +@1 stood too long on a magma block.=@1 stand zu lange auf einem Magmablock. +Premature Nether Wart (Stage 1)=Junger Netherwurz (1. Stufe) +A premature nether wart has just recently been planted on soul sand. Nether wart slowly grows on soul sand in 4 stages (the second and third stages look identical). Although nether wart is home to the Nether, it grows in any dimension.=Ein junger Netherwurz wurde erst kürzlich auf Seelensand gepflanzt. Netherwurz wächst langsam auf Seelensand in 4 Stufen (die 2. und 3. Stufe sehen identisch aus). Obwohl Netherwurz im Nether beheimatet ist, wächst er in jeder Dimension. +Premature Nether Wart (Stage 2)=Junger Netherwurz (2. Stufe) +Premature Nether Wart (Stage 3)=Junger Netherwurz (3. Stufe) +Mature Nether Wart=Ausgewachsener Netherwurz +The mature nether wart is a plant from the Nether and reached its full size and won't grow any further. It is ready to be harvested for its items.=Der ausgewachsene Netherwurz ist eine Pflanze aus dem Nether. Er hat seine volle Größe erreicht, ist erntereif und wächst nicht weiter. +Nether Wart=Netherwurz +Nether warts are plants home to the Nether. They can be planted on soul sand and grow in 4 stages.=Netherwurze sind Pflanzen, die im Nether beheimatet sind. Sie können auf Seelensand gepflanzt werden und wachsen in 4 Stufen. diff --git a/mods/ITEMS/mcl_nether/locale/template.txt b/mods/ITEMS/mcl_nether/locale/template.txt index de932847..7ad879fd 100644 --- a/mods/ITEMS/mcl_nether/locale/template.txt +++ b/mods/ITEMS/mcl_nether/locale/template.txt @@ -7,6 +7,7 @@ Netherrack= Netherrack is a stone-like block home to the Nether. Starting a fire on this block will create an eternal fire.= Magma Block= Magma blocks are hot solid blocks which hurt anyone standing on it, unless they have fire resistance. Starting a fire on this block will create an eternal fire.= +@1 stood too long on a magma block.= Soul Sand= Soul sand is a block from the Nether. One can only slowly walk on soul sand. The slowing effect is amplified when the soul sand is on top of ice, packed ice or a slime block.= Nether Brick Block= @@ -25,4 +26,11 @@ Nether Brick= Nether bricks are the main crafting ingredient for crafting nether brick blocks and nether fences.= Nether Lava Source= Flowing Nether Lava= -@1 stood too long on a magma block.= +Premature Nether Wart (Stage 1)= +A premature nether wart has just recently been planted on soul sand. Nether wart slowly grows on soul sand in 4 stages (the second and third stages look identical). Although nether wart is home to the Nether, it grows in any dimension.= +Premature Nether Wart (Stage 2)= +Premature Nether Wart (Stage 3)= +Mature Nether Wart= +The mature nether wart is a plant from the Nether and reached its full size and won't grow any further. It is ready to be harvested for its items.= +Nether Wart= +Nether warts are plants home to the Nether. They can be planted on soul sand and grow in 4 stages.= diff --git a/mods/ITEMS/mcl_nether/nether_wart.lua b/mods/ITEMS/mcl_nether/nether_wart.lua index fbe6653a..6e9b21c9 100644 --- a/mods/ITEMS/mcl_nether/nether_wart.lua +++ b/mods/ITEMS/mcl_nether/nether_wart.lua @@ -1,6 +1,8 @@ +local S = minetest.get_translator("mcl_nether") + minetest.register_node("mcl_nether:nether_wart_0", { - description = "Premature Nether Wart (Stage 1)", - _doc_items_longdesc = "A premature nether wart has just recently been planted on soul sand. Nether wart slowly grows on soul sand in 4 stages (the second and third stages look identical). Although nether wart is home to the Nether, it grows in any dimension.", + description = S("Premature Nether Wart (Stage 1)"), + _doc_items_longdesc = S("A premature nether wart has just recently been planted on soul sand. Nether wart slowly grows on soul sand in 4 stages (the second and third stages look identical). Although nether wart is home to the Nether, it grows in any dimension."), paramtype = "light", paramtype2 = "meshoptions", place_param2 = 3, @@ -21,7 +23,7 @@ minetest.register_node("mcl_nether:nether_wart_0", { }) minetest.register_node("mcl_nether:nether_wart_1", { - description = "Premature Nether Wart (Stage 2)", + description = S("Premature Nether Wart (Stage 2)"), _doc_items_create_entry = false, paramtype = "light", paramtype2 = "meshoptions", @@ -43,7 +45,7 @@ minetest.register_node("mcl_nether:nether_wart_1", { }) minetest.register_node("mcl_nether:nether_wart_2", { - description = "Premature Nether Wart (Stage 3)", + description = S("Premature Nether Wart (Stage 3)"), _doc_items_create_entry = false, paramtype = "light", paramtype2 = "meshoptions", @@ -65,8 +67,8 @@ minetest.register_node("mcl_nether:nether_wart_2", { }) minetest.register_node("mcl_nether:nether_wart", { - description = "Mature Nether Wart", - _doc_items_longdesc = "The mature nether wart is a plant from the Nether and reached its full size and won't grow any further. It is ready to be harvested for its items.", + description = S("Mature Nether Wart"), + _doc_items_longdesc = S("The mature nether wart is a plant from the Nether and reached its full size and won't grow any further. It is ready to be harvested for its items."), paramtype = "light", paramtype2 = "meshoptions", place_param2 = 3, @@ -94,8 +96,8 @@ minetest.register_node("mcl_nether:nether_wart", { }) minetest.register_craftitem("mcl_nether:nether_wart_item", { - description = "Nether Wart", - _doc_items_longdesc = "Nether warts are plants home to the Nether. They can be planted on soul sand and grow in 3 stages.", + description = S("Nether Wart"), + _doc_items_longdesc = S("Nether warts are plants home to the Nether. They can be planted on soul sand and grow in 4 stages."), _doc_items_usagehelp = "Place this item on soul sand to plant it and watch it grow.", inventory_image = "mcl_nether_nether_wart.png", wield_image = "mcl_nether_nether_wart.png", diff --git a/mods/ITEMS/mcl_ocean/locale/mcl_ocean.de.tr b/mods/ITEMS/mcl_ocean/locale/mcl_ocean.de.tr new file mode 100644 index 00000000..02cdd777 --- /dev/null +++ b/mods/ITEMS/mcl_ocean/locale/mcl_ocean.de.tr @@ -0,0 +1,9 @@ +# textdomain: mcl_ocean +Sea Lantern=Seelaterne +Sea lanterns are decorative light sources which look great underwater but can be placed anywhere.=Seelaternen sind dekorative Lichtquellen, die im Wasser schick aussehen, aber sie können überall platziert werden. +Prismarine=Prismarin +Prismarine is used as a building block. It slowly changes its color.=Prismarin wird aus Baumaterial benutzt. Er verändert langsam seine Farbe. +Prismarine Bricks=Prismarinziegel +Dark Prismarine=Dunkelprismarin +Prismarine Crystals=Prismarinkristalle +Prismarine Shard=Prismarinsplitter diff --git a/mods/ITEMS/mcl_portals/locale/mcl_portals.de.tr b/mods/ITEMS/mcl_portals/locale/mcl_portals.de.tr new file mode 100644 index 00000000..23774062 --- /dev/null +++ b/mods/ITEMS/mcl_portals/locale/mcl_portals.de.tr @@ -0,0 +1,14 @@ +# textdomain: mcl_portals +End Portal=Endportal +An End portal teleports creatures and objects to the mysterious End dimension (and back!).=Ein Endportal teleportiert Kreaturen und Objekte zur mysteriösen Ende-Dimension (und wieder zurück!). +Hop into the portal to teleport. Entering an End portal in the Overworld teleports you to a fixed position in the End dimension and creates a 5×5 obsidian platform at your destination. End portals in the End will lead back to your spawn point in the Overworld.=Springen Sie ins Portal, um sich zu teleportieren. Von der Oberwelt aus werden Sie zu einer festen Position im Ende hin teleportiert. Eine 5×5-Obsidianplattform wird am Zielort erzeugt. Im Ende werden Sie zurück zu Ihrem Startpunkt in der Oberwelt teleportiert. +End Portal Frame=Endportalrahmen +End portal frames are used in the construction of End portals. Each block has a socket for an eye of ender.=Endportalrahmen werden in der Konstruktion von Endportalen benutzt. Jeder Block hat einen Sockel für ein Enderauge. +To create an End portal, you need 12 end portal frames and 12 eyes of ender. The end portal frames have to be arranged around a horizontal 3×3 area with each block facing inward. Any other arrangement will fail.=Um ein Endportal zu pauen, brauchen sie 12 Endportalrahmen und 12 Enderaugen. Die Endportalrahmenblöcke muss um ein horizontales Feld von 3×3 platziert sein, wobei jeder von ihnen nach innen zeigt. Jede andere Anordnung wird nicht funktionieren. +Place an eye of ender into each block. The end portal appears in the middle after placing the final eye.=Platzieren Sie ein Enderauge in jeden Block. Das Endportal wird sich in der Mitte öffnen, wenn das letzte Auge platziert wurde. +End Portal Frame with Eye of Ender=Endportalrahmen mit Enderauge +Nether Portal=Netherportal +A Nether portal teleports creatures and objects to the hot and dangerous Nether dimension (and back!). Enter at your own risk!=Ein Netherportal teleportiert Kreaturen und Objekte zur heißen und gefährlichen Nether-Dimension (und zurück!). Betreten auf eigene Gefahr! +Stand in the portal for a moment to activate the teleportation. Entering a Nether portal for the first time will also create a new portal in the other dimension. If a Nether portal has been built in the Nether, it will lead to the Overworld. A Nether portal is destroyed if the any of the obsidian which surrounds it is destroyed, or if it was caught in an explosion.=Stellen Sie sich ins Portal für einen Moment, um sich zu teleportieren. Beim ersten Mal wird auch ein Portal in der anderen Dimension erschaffen. Wenn ein Netherportal im Nether gebaut wird, wird es zurück zur Oberwelt führen. Ein Netherportal wird zerstört, wenn das Obsidian, das ihn umgibt, zerstört wird, oder, wenn es einer Explosion ausgesetzt war. +Obsidian is also used as the frame of Nether portals.=Obsidian wird auch als Rahmen von Netherportalen benutzt. +To open a Nether portal, place an upright frame of obsidian with a width of 4 blocks and a height of 5 blocks, leaving only air in the center. After placing this frame, light a fire in the obsidian frame. Nether portals only work in the Overworld and the Nether.=Um ein Netherportal zu öffnen, platzieren Sie einen aufrechten Rahmen aus Obsidian mit einer Breite von 4 Blöcken und einer Höhe von 5 Blöcken, nur mit Luft in der Mitte. Nachdem Sie den Rahmen gebaut haben, entfachen Sie ein Feuer im Obsidianrahmen. Netherportale funktionieren nur in der Oberwelt und im Nether. diff --git a/mods/ITEMS/mcl_potions/locale/mcl_potions.de.tr b/mods/ITEMS/mcl_potions/locale/mcl_potions.de.tr new file mode 100644 index 00000000..efe6688c --- /dev/null +++ b/mods/ITEMS/mcl_potions/locale/mcl_potions.de.tr @@ -0,0 +1,20 @@ +# textdomain: mcl_potions +Put this item in an item frame for decoration. It's useless otherwise.=Platizeren Sie diesen Gegenstand in einen Rahmen als Deko. Ansonsten ist er nutzlos. +Fermented Spider Eye=Fermentiertes Spinnenauge +Glass Bottle=Glasflasche +A glass bottle is used as a container for liquids and can be used to collect water directly.=Eine Glasflasche wird als Behälter von Flüssigkeiten benutzt und kann Wasser direkt aufsammeln. +To collect water, it on a cauldron with water (which removes a level of water) or any water source (which removes no water).=Um Wasser aufzusammen, benutzen Sie sie an einem Kessel mit Wasser (was etwas Wasser entfernt) oder einer Wasserquelle (was kein Wasser entfernt). +Water Bottle=Wasserflasche +Water bottles can be used to fill cauldrons. Drinking water has no effect.=Wasserflaschen können benutzt werden, um Kessel aufzufüllen. Trinken hat keine Wirkung. +Rightclick to drink. Rightclick a cauldron to pour the water into the cauldron.=Rechtsklicken zum Trinken. Auf einem Kessel rechtsklicken, um das Wasser in den Kessen zu schütten. +River Water Bottle=Flusswasserflasche +River water bottles can be used to fill cauldrons. Drinking it has no effect.=Flusswasserflaschen können benutzt werden, um Kessel aufzufüllen. Trinken hat keine Wirkung. +Awkward Potion=Seltsamer Trank +This potion has an awkward taste and is used for brewing more potions. Drinking it has no effect.=Dieser Trank schmeckt komisch. Er wird zum Brauen von Tränken benutzt. Trinken hat keine Wirkung. +Mundane Potion=Klarer Trank +This potion has a clean taste and is used for brewing more potions. Drinking it has no effect.=Dieser Trank hat einen klaren Geschmack und wird zum Brauen von Tränken benutzt. Trinken hat keine Wirkung. +Thick Potion=Bitterer Trank +This potion has a bitter taste and is used for brewing more potions. Drinking it has no effect.=Dieser Trank hat einen bitteren Geschmack und wird zum Brauen von Tränken benutzt. Trinken hat keine Wirkung. +Glistering Melon=Glitzermelone +This shiny melon is full of tiny gold nuggets and would be nice in an item frame. It isn't edible and not useful for anything else.=Diese glänzende Melone ist voller winziger Goldnuggets und sähe ganz nett in einem Rahmen aus. Er ist nicht essbar und auch sonst zu nichts zu gebrauchen. +Dragon's Breath=Drachenatem From c12a4b795ea358d7ec288b6aaddbf56ae4072966 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Fri, 15 Mar 2019 09:52:13 +0100 Subject: [PATCH 167/737] =?UTF-8?q?Make=20=E2=80=9Cnow=20playing=E2=80=9D?= =?UTF-8?q?=20translatable?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mods/ITEMS/mcl_jukebox/init.lua | 2 +- mods/ITEMS/mcl_jukebox/locale/mcl_jukebox.de.tr | 1 + mods/ITEMS/mcl_jukebox/locale/template.txt | 1 + 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_jukebox/init.lua b/mods/ITEMS/mcl_jukebox/init.lua index e714c79d..fb495e78 100644 --- a/mods/ITEMS/mcl_jukebox/init.lua +++ b/mods/ITEMS/mcl_jukebox/init.lua @@ -50,7 +50,7 @@ end local function now_playing(player, track_id) local playername = player:get_player_name() local hud = active_huds[playername] - local text = "Now playing: " .. recorddata[track_id][2] .. "—" .. recorddata[track_id][1] + local text = S("Now playing: @1—@2", recorddata[track_id][2], recorddata[track_id][1]) if not hud_sequence_numbers[playername] then hud_sequence_numbers[playername] = 1 diff --git a/mods/ITEMS/mcl_jukebox/locale/mcl_jukebox.de.tr b/mods/ITEMS/mcl_jukebox/locale/mcl_jukebox.de.tr index 9655e500..60dea78d 100644 --- a/mods/ITEMS/mcl_jukebox/locale/mcl_jukebox.de.tr +++ b/mods/ITEMS/mcl_jukebox/locale/mcl_jukebox.de.tr @@ -7,3 +7,4 @@ Music Disc=Musikplatte Jukebox=Musikbox Jukeboxes play music when they're supplied with a music disc.=Musikboxen spielen Musik, wenn man ihnen eine Musikplatte gibt. Place a music disc into an empty jukebox to insert the music disc and play music. If the jukebox already has a music disc, you will retrieve this music disc first. The music can only be heard by you, not by other players.=Platzieren Sie eine Musikplatte in eine leere Musikbox, um die Musikplatte einzulegen und Musik zu spielen. Wenn die Musikbox schon eine Musikplatte hat, werden Sie zuerst diese Musikplatte erhalten. Die Musik kann nur von Ihnen gehört werden, aber nicht von anderen Spielern. +Now playing: @1—@2=Sie hören: @1 – @2 diff --git a/mods/ITEMS/mcl_jukebox/locale/template.txt b/mods/ITEMS/mcl_jukebox/locale/template.txt index b2923e90..5b46ce08 100644 --- a/mods/ITEMS/mcl_jukebox/locale/template.txt +++ b/mods/ITEMS/mcl_jukebox/locale/template.txt @@ -7,3 +7,4 @@ Music Disc= Jukebox= Jukeboxes play music when they're supplied with a music disc.= Place a music disc into an empty jukebox to insert the music disc and play music. If the jukebox already has a music disc, you will retrieve this music disc first. The music can only be heard by you, not by other players.= +Now playing: @1—@2= From 9385458632139e75675fb65a33fe6ccbf373e2d9 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sat, 16 Mar 2019 00:07:44 +0100 Subject: [PATCH 168/737] German translation: mcl_signs to xpanes --- mods/ITEMS/mcl_core/locale/mcl_core.de.tr | 32 +++--- mods/ITEMS/mcl_signs/init.lua | 2 +- mods/ITEMS/mcl_signs/locale/mcl_signs.de.tr | 4 + mods/ITEMS/mcl_signs/locale/template.txt | 2 +- mods/ITEMS/mcl_sponges/locale/template.txt | 14 +-- mods/ITEMS/mcl_stairs/api.lua | 2 +- mods/ITEMS/mcl_stairs/locale/mcl_stairs.de.tr | 101 ++++++++++++++++++ mods/ITEMS/mcl_stairs/locale/template.txt | 2 +- mods/ITEMS/mcl_throwing/init.lua | 6 +- .../mcl_throwing/locale/mcl_throwing.de.tr | 9 ++ mods/ITEMS/mcl_throwing/locale/template.txt | 6 +- mods/ITEMS/mcl_tnt/init.lua | 4 +- mods/ITEMS/mcl_tnt/locale/mcl_tnt.de.tr | 5 + mods/ITEMS/mcl_tnt/locale/template.txt | 4 +- mods/ITEMS/mcl_tools/init.lua | 6 +- mods/ITEMS/mcl_tools/locale/mcl_tools.de.tr | 31 ++++++ mods/ITEMS/mcl_tools/locale/template.txt | 6 +- .../mcl_torches/locale/mcl_torches.de.tr | 3 + mods/ITEMS/mcl_totems/locale/template.txt | 0 mods/ITEMS/mcl_walls/locale/mcl_walls.de.tr | 16 +++ mods/ITEMS/mcl_wool/locale/mcl_wool.de.tr | 35 ++++++ .../mclx_fences/locale/mclx_fences.de.tr | 4 + .../mclx_stairs/locale/mclx_stairs.de.tr | 31 ++++++ .../3d_armor/locale/3d_armor.de.tr | 23 ++++ .../minetest-3d_armor/3d_armor_stand/init.lua | 2 +- .../locale/3d_armor_stand.de.tr | 4 + .../3d_armor_stand/locale/template.txt | 2 +- mods/ITEMS/xpanes/locale/xpanes.de.tr | 21 ++++ 28 files changed, 334 insertions(+), 43 deletions(-) create mode 100644 mods/ITEMS/mcl_signs/locale/mcl_signs.de.tr create mode 100644 mods/ITEMS/mcl_stairs/locale/mcl_stairs.de.tr create mode 100644 mods/ITEMS/mcl_throwing/locale/mcl_throwing.de.tr create mode 100644 mods/ITEMS/mcl_tnt/locale/mcl_tnt.de.tr create mode 100644 mods/ITEMS/mcl_tools/locale/mcl_tools.de.tr create mode 100644 mods/ITEMS/mcl_torches/locale/mcl_torches.de.tr delete mode 100644 mods/ITEMS/mcl_totems/locale/template.txt create mode 100644 mods/ITEMS/mcl_walls/locale/mcl_walls.de.tr create mode 100644 mods/ITEMS/mcl_wool/locale/mcl_wool.de.tr create mode 100644 mods/ITEMS/mclx_fences/locale/mclx_fences.de.tr create mode 100644 mods/ITEMS/mclx_stairs/locale/mclx_stairs.de.tr create mode 100644 mods/ITEMS/minetest-3d_armor/3d_armor/locale/3d_armor.de.tr create mode 100644 mods/ITEMS/minetest-3d_armor/3d_armor_stand/locale/3d_armor_stand.de.tr create mode 100644 mods/ITEMS/xpanes/locale/xpanes.de.tr diff --git a/mods/ITEMS/mcl_core/locale/mcl_core.de.tr b/mods/ITEMS/mcl_core/locale/mcl_core.de.tr index 54d1f416..b2c77e44 100644 --- a/mods/ITEMS/mcl_core/locale/mcl_core.de.tr +++ b/mods/ITEMS/mcl_core/locale/mcl_core.de.tr @@ -33,14 +33,14 @@ Birch Sapling=Birkensetzling Birch Wood=Birkenholz Birch Wood Planks=Birkenholzplanken Birch leaves are grown from birch trees.=Birkenblätter wachsen an Birken. -Black Stained Glass=Schwarzes Glas +Black Stained Glass=Schwarzes Buntglas Block of Coal=Kohleblock Block of Diamond=Diamantblock Block of Emerald=Smaragdblock Block of Gold=Goldblock Block of Iron=Eisenblock Blocks of coal are useful as a compact storage of coal and very useful as a furnace fuel. A block of coal is as efficient as 10 coal.=Kohleblöcke sind für eine kompakte Aufbewahrung von Kohle nützlich und sehr nützlich als Ofenbrennstoff. Ein Kohleblock ist so effizient wie 10 mal Kohle. -Blue Stained Glass=Blaues Glas +Blue Stained Glass=Blaues Buntglas Bone Block=Knockenblock Bone blocks are decorative blocks and a compact storage of bone meal.=Knochenblöcke sind Deko-Blöcke und geeignet zur kompakten Aufbewahrung von Knochenmehl. Bowl=Schale @@ -49,7 +49,7 @@ Brick=Ziegel Brick Block=Ziegelblock Brick blocks are a good building material for building solid houses and can take quite a punch.=Ziegelblöcke sind ein gutes Baumaterial für den Bau stabiler Gebäude und halten einiges aus. Bricks are used to craft brick blocks.=Ziegel werden zur Herstellung von Ziegelblöcken benötigt. -Brown Stained Glass=Braunes Glas +Brown Stained Glass=Braunes Buntglas Cactus=Kaktus Charcoal=Holzkohle Charcoal is an alternative furnace fuel created by cooking wood in a furnace. It has the same burning time as coal and also shares many of its crafting recipes, but it can not be used to create coal blocks.=Holzkohle ist ein alternativer Brennstoff. Er entsteht, wenn Holz im Ofen verkohlt wird. Er brennt genau so lange wie Kohle und hat fast identische Herstellungsrezepte, aber es können keine Kohleblöcke damit gemacht werden. @@ -75,7 +75,7 @@ Cut Red Sandstone=Geschliffener roter Sandstein Cut Sandstone=Geschliffener Sandstein Cut red sandstone is a decorative building block.=Geschliffener roter Sandstein ist ein dekorativer Block zum Bauen. Cut sandstone is a decorative building block.=Geschliffener Sandstein ist ein dekorativer Block zum Bauen. -Cyan Stained Glass=Türkises Glas +Cyan Stained Glass=Türkises Buntglas Dark Oak Bark=Schwarzeichenrinde Dark Oak Leaves=Schwarzeichenblätter Dark Oak Sapling=Schwarzeichensetzling @@ -115,8 +115,8 @@ Grass Block=Grasblock Grass Path=Graspfad Grass paths are a decorative variant of grass blocks. Their top has a different color and they are a bit lower than grass blocks, making them useful to build footpaths. Grass paths can be created with a shovel. A grass path turns into dirt when it is below a solid block.=Graspfade sind eine dekorative Variante von Grasblöcken. Ihre Oberseite hat eine andere Farbe und sie sind etwas niedriger als Grasblöcke, wodurch sie nützlich sind, um Fußwege zu errichten. Graspfade werden mit einer Schaufel errichtet. Ein Grasphad verwandelt sich in Erde, wenn er sich unter einem festen Block befindet. Gravel=Kies -Green Stained Glass=Grünes Glas -Grey Stained Glass=Graues Glas +Green Stained Glass=Grünes Buntglas +Grey Stained Glass=Graues Buntglas Ice=Eis Ice is a translucent solid block usually found in cold areas. It melts near block light sources at a light level of 12 or higher. When it melts or is broken while resting on top of another block, it will turn into a water source.=Eis ist ein durchscheinender fester Block, der oft in kalten Gebieten gefunden werden kann. Er schmitzt in der nähe von Block-Lichtquellen bei einer Helligkeit von 12 oder höher. Wenn es schmilzt oder abgeaut wird, und darunter ein anderer Block war, wird er sich in eine Wasserquelle verwandeln. In the End dimension, starting a fire on this block will create an eternal fire.=In der Ende-Dimension wird Feuer auf diesem Block ewig brennen. @@ -136,11 +136,11 @@ Lapis Lazuli Ore=Lapislazulierz Lapis lazuli ore is the ore of lapis lazuli. It can be rarely found in clusters near the bottom of the world.=Lapislazulierz ist das Erz von Lapislazuli. Es kann relativ selten in Ansammlungen in der Nähe des Weltbodens gefunden werden. Lava Source=Lavaquelle Lava is hot and rather dangerous. Don't touch it, it will hurt you a lot and it is hard to get out.=Lava ist heiß und ziemlich gefährlich. Berühren Sie sie nicht, es wird Sie verletzen und es ist schwierig, ihr zu entkommen. -Light Blue Stained Glass=Hellblaues Glas -Light Grey Stained Glass=Hellgraues Glas -Lime Stained Glass=Lindgrünes Glas +Light Blue Stained Glass=Hellblaues Buntglas +Light Grey Stained Glass=Hellgraues Buntglas +Lime Stained Glass=Lindgrünes Buntglas Lit Redstone Ore=Leuchtendes Redstoneerz -Magenta Stained Glass=Magenta Glas +Magenta Stained Glass=Magenta Buntglas Molten gold. It is used to craft armor, tools, and whatnot.=Geschmolzenes Gold. Es wird benutzt, um Rüstungen, Werkzeuge, und anderes herzustellen. Molten iron. It is used to craft armor, tools, and whatnot.=Geschmolzenes Eisen. Es wird benutzt, um Rüstungen, Werkzeuge, und vieles mehr herzustellen. @@ -157,12 +157,12 @@ Oak leaves are grown from oak trees.=Eichenblätter wachsen von Eichen. Obsidian=Obsidian Obsidian is an extremely hard mineral with an enourmous blast-resistance. Obsidian is formed when water meets lava.=Obsidian ist ein extrem hartes Mineral mit einem enormen Sprengwiderstand. One of the most common blocks in the world, almost the entire underground consists of stone. It sometimes contains ores. Stone may be created when water meets lava.=Eines der häufigsten Blöcke der Welt, fast der ganze Untergrund besteht aus stein. Er enthält manchmal Erze. Stein kann entstehen, wenn Wasser auf Lava trifft. -Orange Stained Glass=Orange Glas +Orange Stained Glass=Orange Buntglas Packed Ice=Packeis Packed ice is a compressed form of ice. It is opaque and solid.=Packeis ist eine kompakte Eisform. Es ist undurchsichtig und fest. Paper=Papier Paper is used to craft books and maps.=Papier wird benutzt, um Bücher und Karten herzustellen. -Pink Stained Glass=Rosa Glas +Pink Stained Glass=Rosa Buntglas Podzol=Podsol Podzol is a type of dirt found in taiga forests. Only a few plants are able to survive on it.=Podsol ist eine Art Erde, die man in Taigawäldern finden kann. Nur wenige Pflanzen können hierauf wachsen. Polished Andesite=Polierter Andesit @@ -172,11 +172,11 @@ Polished Stone=Polierter Stein Polished andesite is a decorative building block made from andesite.=Polierter Andesit ist ein dekorativer Block zum Bauen, der aus Andesit gemacht wurde. Polished diorite is a decorative building block made from diorite.=Polierter Diorit ist ein dekorativer Block zum Bauen, der aus Diorit gemacht wurde. Polished granite is a decorative building block made from granite.=Polierter Granit ist ein dekorativer Block zum Bauen, der aus Granit gemacht wurde. -Purple Stained Glass=Violettes Glas +Purple Stained Glass=Violettes Buntglas Realm Barrier=Reichsbarriere Red Sand=Roter Sand Red Sandstone=Roter Sandstein -Red Stained Glass=Rotes Glas +Red Stained Glass=Rotes Buntglas Red sand is found in large quantities in mesa biomes.=Roter Sand kommt in großen Mengen bei Tafelbergbiomen vor. Red sandstone is compressed red sand and is a rather soft kind of stone.=Roter Sandstein ist komprimierter roter Sand und ein relativ weiches Gestein. Redstone Ore=Redstone-Erz @@ -235,6 +235,6 @@ When placed on soil (such as dirt) and exposed to light, a spruce sapling will g When placed on soil (such as dirt) and exposed to light, an acacia sapling will grow into an acacia after some time.=Wird er auf einem Nährboden (wie Erde) platziert und ist er dem Licht ausgesetzt, wird ein Akaziensetzling langsam zu einer Akazie nach etwas Zeit heranwachsen. When placed on soil (such as dirt) and exposed to light, an oak sapling will grow into an oak after some time.=Wird er auf einem Nährboden (wie Erde) platziert und ist er dem Licht ausgesetzt, wird ein Eichensetzling langsam zu einer Eiche nach etwas Zeit heranwachsen. When you hold a barrier in hand, you reveal all placed barriers in a short distance around you.=Wenn Sie eine Barriere in der Hand halten, legen Sie alle Barrieren in Ihrer Nähe offen. -White Stained Glass=Weißes Glas -Yellow Stained Glass=Gelbes Glas +White Stained Glass=Weißes Buntglas +Yellow Stained Glass=Gelbes Buntglas “Coal” refers to coal lumps obtained by digging coal ore which can be found underground. Coal is your standard furnace fuel, but it can also be used to make torches, coal blocks and a few other things.=„Kohle“ meint Kohleklumpen, die herausfallen, wenn Kohleerz gegraben wird, was im Untergrund gefunden werden kann. Kohle ist der klassische Brennstoff für den Ofen, aber er kann auch benutzt werden, um Fackeln, Kohleblöcke und einige andere Dinge herzustellen. diff --git a/mods/ITEMS/mcl_signs/init.lua b/mods/ITEMS/mcl_signs/init.lua index 2fada201..8ae79a52 100644 --- a/mods/ITEMS/mcl_signs/init.lua +++ b/mods/ITEMS/mcl_signs/init.lua @@ -253,7 +253,7 @@ end minetest.register_node("mcl_signs:wall_sign", { description = S("Sign"), _doc_items_longdesc = S("Signs can be written and come in two variants: Wall sign and sign on a sign post. Signs can be placed on the top and the sides of other blocks, but not below them."), - _doc_items_usagehelp = S("Place the sign at the side to build a wall sign, place it on top of another block to build a sign with a sign post.\nAfter placing the sign, you can write something on it. You have 4 lines of text with up to 15 characters for each line; anything beyond these limits is lost. The text can not be changed once it has been written; you have to break and place the sign again."), + _doc_items_usagehelp = S("After placing the sign, you can write something on it. You have 4 lines of text with up to 15 characters for each line; anything beyond these limits is lost. Not all characters are supported. The text can not be changed once it has been written; you have to break and place the sign again."), inventory_image = "default_sign.png", walkable = false, is_ground_content = false, diff --git a/mods/ITEMS/mcl_signs/locale/mcl_signs.de.tr b/mods/ITEMS/mcl_signs/locale/mcl_signs.de.tr new file mode 100644 index 00000000..27f06a9f --- /dev/null +++ b/mods/ITEMS/mcl_signs/locale/mcl_signs.de.tr @@ -0,0 +1,4 @@ +# textdomain: mcl_signs +Sign=Schild +Signs can be written and come in two variants: Wall sign and sign on a sign post. Signs can be placed on the top and the sides of other blocks, but not below them.=Schilder können beschrieben werden und kommen in zwei Varianten: Wandschild und stehendes Schild. Sie können auf und an den Seiten von anderen Blöclen platziert werden, aber nicht unter ihnen. +After placing the sign, you can write something on it. You have 4 lines of text with up to 15 characters for each line; anything beyond these limits is lost. Not all characters are supported. The text can not be changed once it has been written; you have to break and place the sign again.=Nachdem das Schild platziert wurde, kann man etwas darauf schreiben. 4 Zeilen mit je 15 Zeichen pro Zeile sind verfügbar, alles darüber geht verloren. Es werden nicht alle Zeichen unterstützt. Der Text kann nicht geändert werden, sobald er geschrieben wurde; man muss das Schild erneut platzieren. diff --git a/mods/ITEMS/mcl_signs/locale/template.txt b/mods/ITEMS/mcl_signs/locale/template.txt index ae920e30..2cf0ef99 100644 --- a/mods/ITEMS/mcl_signs/locale/template.txt +++ b/mods/ITEMS/mcl_signs/locale/template.txt @@ -1,4 +1,4 @@ # textdomain: mcl_signs Sign= Signs can be written and come in two variants: Wall sign and sign on a sign post. Signs can be placed on the top and the sides of other blocks, but not below them.= -Place the sign at the side to build a wall sign, place it on top of another block to build a sign with a sign post.@nAfter placing the sign, you can write something on it. You have 4 lines of text with up to 15 characters for each line; anything beyond these limits is lost. The text can not be changed once it has been written; you have to break and place the sign again.= +After placing the sign, you can write something on it. You have 4 lines of text with up to 15 characters for each line; anything beyond these limits is lost. Not all characters are supported. The text can not be changed once it has been written; you have to break and place the sign again.= diff --git a/mods/ITEMS/mcl_sponges/locale/template.txt b/mods/ITEMS/mcl_sponges/locale/template.txt index 2de97226..d226e8d1 100644 --- a/mods/ITEMS/mcl_sponges/locale/template.txt +++ b/mods/ITEMS/mcl_sponges/locale/template.txt @@ -1,8 +1,8 @@ # textdomain: mcl_sponges -Sponge= -Sponges are blocks which remove water around them when they are placed or come in contact with water, turning it into a wet sponge.= -Waterlogged Sponge= -A waterlogged sponge can be dried in the furnace to turn it into (dry) sponge. When there's an empty bucket in the fuel slot of a furnace, the water will pour into the bucket.= -Riverwaterlogged Sponge= -This is a sponge soaking wet with river water. It can be dried in the furnace to turn it into (dry) sponge. When there's an empty bucket in the fuel slot of the furnace, the river water will pour into the bucket.= -A sponge becomes riverwaterlogged (instead of waterlogged) if it sucks up more river water than (normal) water.= +Sponge=Schwamm +Sponges are blocks which remove water around them when they are placed or come in contact with water, turning it into a wet sponge.=Schwämme sind Blöcke, die Wasser um sie herum entfernen, wenn sie platziert wurden oder in Berührung mit Wasser kommen, was sie in einen nassen Schwamm verwandelt. +Waterlogged Sponge=Wassergetränkter Schwamm +A waterlogged sponge can be dried in the furnace to turn it into (dry) sponge. When there's an empty bucket in the fuel slot of a furnace, the water will pour into the bucket.=Ein wassergetränkter Schwamm kann in einem Ofen getrocknet werden, um ihn zu einem (trockenem) Schwamm zu verwandeln. Wenn es einen leeren Eimer im Brennstoffplatz des Ofens gibt, wird das Wasser in den Eimer fließen. +Riverwaterlogged Sponge=Flusswassergetränkter Schwamm +This is a sponge soaking wet with river water. It can be dried in the furnace to turn it into (dry) sponge. When there's an empty bucket in the fuel slot of the furnace, the river water will pour into the bucket.=Dies ist ein Schwamm, der triefend nass und voller Flusswasser ist. Er kann in einem Ofen getrocknet werden, um ihn zu einem (trockenem) Schwamm zu verwandeln. Wenn es einen leeren Eimer im Brennstoffplatz des Ofens gibt, wird das Flusswasser in den Eimer fließen. +A sponge becomes riverwaterlogged (instead of waterlogged) if it sucks up more river water than (normal) water.=Ein Schwamm wird flusswassergetränkt (statt wassergetränkt), wenn er mehr Flusswasser als (normales) Wasser aufsaugt. diff --git a/mods/ITEMS/mcl_stairs/api.lua b/mods/ITEMS/mcl_stairs/api.lua index 05912126..5c892f61 100644 --- a/mods/ITEMS/mcl_stairs/api.lua +++ b/mods/ITEMS/mcl_stairs/api.lua @@ -102,7 +102,7 @@ function mcl_stairs.register_stair(subname, recipeitem, groups, images, descript minetest.register_node(":mcl_stairs:stair_" .. subname, { description = description, - _doc_items_longdesc = S("Stairs are useful to reach higher places by walking over them; jumping is not required. Placing stairs in a corner pattern will create corner stairs. Stairs placed on the bottom or at the upper half of the side of a block will be placed upside down."), + _doc_items_longdesc = S("Stairs are useful to reach higher places by walking over them; jumping is not required. Placing stairs in a corner pattern will create corner stairs. Stairs placed on the ceiling or at the upper half of the side of a block will be placed upside down."), drawtype = "mesh", mesh = "stairs_stair.obj", tiles = images, diff --git a/mods/ITEMS/mcl_stairs/locale/mcl_stairs.de.tr b/mods/ITEMS/mcl_stairs/locale/mcl_stairs.de.tr new file mode 100644 index 00000000..495aa577 --- /dev/null +++ b/mods/ITEMS/mcl_stairs/locale/mcl_stairs.de.tr @@ -0,0 +1,101 @@ +# textdomain: mcl_stairs +Stairs are useful to reach higher places by walking over them; jumping is not required. Placing stairs in a corner pattern will create corner stairs. Stairs placed on the ceiling or at the upper half of the side of a block will be placed upside down.=Treppen sind nützlich, um auf höheres Gelände nur mit Gehen zu kommen, man muss nicht springen. Wenn Treppen in einem Eckmuster platziert werden, werden Ecktreppen erzeugt. Treppen, die an die Decke oder der oberen Hälfte eines Blocks platziert werden, werden verkehrt herum platziert. +Double @1=@1 (doppelt) +Slabs are half as high as their full block counterparts and occupy either the lower or upper part of a block, depending on how it was placed. Slabs can be easily stepped on without needing to jump. When a slab is placed on another slab of the same type, a double slab is created.=Eine Platte ist halb so hoch wie ihr Vollblock-Gegenstück und belegt entweder den unteren oder unteren Teil eines Blocks, je nach dem, wie er platziert wurde. Platten können leicht betreten werden, ohne springen zu müssen. Wird eine Platte auf einer anderen gleichen Platte platziert, ergibt das eine Doppelplatte. +Upper @1=@1 (oben) +Double slabs are full blocks which are created by placing two slabs of the same kind on each other.=Doppelplatten sind ganze Blöcke, die entstehen, wenn zwei gleiche Platten aufeinander gestapelt werden. +Oak Wood Stairs=Eichenholztreppe +Oak Wood Slab=Eichenholzplatte +Double Oak Wood Slab=Doppeleichenholzplatte +Jungle Wood Stairs=Dschungelholztreppe +Jungle Wood Slab=Dschungelholzplatte +Double Jungle Wood Slab=Doppeldschungelholzplatte +Acacia Wood Stairs=Akazienholztreppe +Acacia Wood Slab=Akazienholzplatte +Double Acacia Wood Slab=Doppelakazienholzplatte +Spruce Wood Stairs=Fichtenholztreppe +Spruce Wood Slab=Fichtenholzplatte +Double Spruce Wood Slab=Doppelfichtenholzplatte +Birch Wood Stairs=Birkenholztreppe +Birch Wood Slab=Birkenholzplatte +Double Birch Wood Slab=Doppelbirkenholzplatte +Dark Oak Wood Stairs=Schwarzeichenholzstreppe +Dark Oak Wood Slab=Schwarzeichenholzplatte +Double Dark Oak Wood Slab=Doppelschwarzeichenholzplatte +Stone Stairs=Steintreppe +Stone Slab=Steinplatte +Double Stone Slab=Doppelsteinplatte +Polished Stone Slab=Polierte Steinplatte +Double Polished Stone Slab=Doppelte polierte Steinplatte +Andesite Stairs=Andesittreppe +Andesite Slab=Andesitplatte +Double Andesite Slab=Doppelandesitplatte +Granite Stairs=Granittreppe +Granite Slab=Granitplatte +Double Granite Slab=Doppelgranitplatte +Diorite Stairs=Diorittreppe +Diorite Slab=Dioritplatte +Double Diorite Slab=Doppeldioritplatte +Cobblestone Stairs=Kopfsteinpflastertreppe +Cobblestone Slab=Kopfsteinpflasterplatte +Double Cobblestone Slab=Doppelkopfsteinpflasterplatte +Moss Stone Stairs=Moossteintreppe +Moss Stone Slab=Moossteinplatte +Double Moss Stone Slab=Doppelmoossteinplatte +Brick Stairs=Ziegeltreppe +Brick Slab=Ziegelplatte +Double Brick Slab=Doppelziegelplatte +Sandstone Stairs=Sandsteintreppe +Sandstone Slab=Sandsteinplatte +Double Sandstone Slab=Doppelsandsteinplatte +Smooth Sandstone Stairs=Glatte Sandsteintreppe +Smooth Sandstone Slab=Glatte Sandsteinplatte +Double Smooth Sandstone Slab=Doppelte glatte Sandsteinplatte +Red Sandstone Stairs=Rote Sandsteintreppe +Red Sandstone Slab=Rote Sandsteinplatte +Double Red Sandstone Slab=Doppelte rote Sandsteinplatte +Smooth Red Sandstone Stairs=Glatte rote Sandsteintreppe +Smooth Red Sandstone Slab=Glatte rote Sandsteinplatte +Double Smooth Red Sandstone Slab=Doppelte glatte rote Sandsteinplatte +Stone Bricks Stairs=Steinziegeltreppe +Stone Bricks Slab=Steinziegelplatte +Double Stone Bricks Slab=Doppelsteinziegelplatte +Quartz Stairs=Quarztreppe +Quartz Slab=Quarzplatte +Double Quartz Slab=Doppelquarzplatte +Smooth Quartz Stairs=Glatte Quarztreppe +Smooth Quartz Slab=Glatte Quarzplatte +Double Smooth Quartz Slab=Doppelte glatte Quarzplatte +Nether Brick Stairs=Netherziegeltreppe +Nether Brick Slab=Netherziegelplatte +Double Nether Brick Slab=Doppelte Netherziegelplatte +Red Nether Brick Stairs=Rote Netherbricktreppe +Red Nether Brick Slab=Rote Netherbrickplatte +Double Red Nether Brick Slab=Doppelte rote Netherbricktreppe +End Stone Brick Stairs=Endsteinziegeltreppe +End Stone Brick Slab=Endsteinziegelplatte +Double End Stone Brick Slab=Doppelte Endsteinziegelplatte +Purpur Stairs=Purpurtreppe +Purpur Slab=Purpurplatte +Double Purpur Slab=Doppelte Purpurplatte +Prismarine Stairs=Prismarintreppe +Prismarine Slab=Prismarinplatte +Double Prismarine Slab=Doppelte Prismarinplatte +Prismarine Brick Stairs=Prismarinziegeltreppe +Prismarine Brick Slab=Prismarinziegelplatte +Double Prismarine Brick Slab=Doppelte Prismarinziegelplatte +Dark Prismarine Stairs=Dunkelprismarintreppe +Dark Prismarine Slab=Dunkelprismarinplatte +Double Dark Prismarine Slab=Doppeldunkelprismarinplatte +Polished Andesite Slab=Polierte Andesitplatte +Double Polished Andesite Slab=Doppelte polierte Andesitplatte +Polished Andesite Stairs=Polierte Andesittreppe +Polished Granite Slab=Polierte Granitplatte +Double Polished Granite Slab=Doppelte polierte Granitplatte +Polished Granite Stairs=Polierte Granittreppe +Polished Diorite Slab=Polierte Dioritplatte +Double Polished Diorite Slab=Doppelte polierte Dioritplatte +Polished Diorite Stairs=Polierte Diorittreppe +Mossy Stone Brick Stairs=Moosige Steinziegeltreppe +Mossy Stone Brick Slab=Moosige Steinziegelplatte +Double Mossy Stone Brick Slab=Doppelte Steinziegelplatte diff --git a/mods/ITEMS/mcl_stairs/locale/template.txt b/mods/ITEMS/mcl_stairs/locale/template.txt index 7a0e15db..bec58b3a 100644 --- a/mods/ITEMS/mcl_stairs/locale/template.txt +++ b/mods/ITEMS/mcl_stairs/locale/template.txt @@ -1,5 +1,5 @@ # textdomain: mcl_stairs -Stairs are useful to reach higher places by walking over them; jumping is not required. Placing stairs in a corner pattern will create corner stairs. Stairs placed on the bottom or at the upper half of the side of a block will be placed upside down.= +Stairs are useful to reach higher places by walking over them; jumping is not required. Placing stairs in a corner pattern will create corner stairs. Stairs placed on the ceiling or at the upper half of the side of a block will be placed upside down.= Double @1= Slabs are half as high as their full block counterparts and occupy either the lower or upper part of a block, depending on how it was placed. Slabs can be easily stepped on without needing to jump. When a slab is placed on another slab of the same type, a double slab is created.= Upper @1= diff --git a/mods/ITEMS/mcl_throwing/init.lua b/mods/ITEMS/mcl_throwing/init.lua index 8d3915c3..d7e23660 100644 --- a/mods/ITEMS/mcl_throwing/init.lua +++ b/mods/ITEMS/mcl_throwing/init.lua @@ -296,7 +296,7 @@ minetest.register_entity("mcl_throwing:snowball_entity", snowball_ENTITY) minetest.register_entity("mcl_throwing:egg_entity", egg_ENTITY) minetest.register_entity("mcl_throwing:ender_pearl_entity", pearl_ENTITY) -local how_to_throw = S("Hold it in your and and leftclick to throw.") +local how_to_throw = S("Use the punch key to throw.") -- Snowball minetest.register_craftitem("mcl_throwing:snowball", { @@ -313,7 +313,7 @@ minetest.register_craftitem("mcl_throwing:snowball", { -- Egg minetest.register_craftitem("mcl_throwing:egg", { description = S("Egg"), - _doc_items_longdesc = S("Eggs can be thrown or launched from a dispenser and breaks on impact. There is a small chance that 1 or even 4 chickens will pop out of the egg when it hits the ground."), + _doc_items_longdesc = S("Eggs can be thrown or launched from a dispenser and breaks on impact. There is a small chance that 1 or even 4 chicks will pop out of the egg."), _doc_items_usagehelp = how_to_throw, inventory_image = "mcl_throwing_egg.png", stack_max = 16, @@ -325,7 +325,7 @@ minetest.register_craftitem("mcl_throwing:egg", { -- Ender Pearl minetest.register_craftitem("mcl_throwing:ender_pearl", { description = S("Ender Pearl"), - _doc_items_longdesc = S("An ender pearl is an item which can be used for teleportation at the cost of health. It can be thrown and teleport the thrower to its impact location when it hits a solid block, a plant or vines. Each teleportation hurts the user by 5 hit points."), + _doc_items_longdesc = S("An ender pearl is an item which can be used for teleportation at the cost of health. It can be thrown and teleport the thrower to its impact location when it hits a solid block or a plant. Each teleportation hurts the user by 5 hit points."), _doc_items_usagehelp = how_to_throw, wield_image = "mcl_throwing_ender_pearl.png", inventory_image = "mcl_throwing_ender_pearl.png", diff --git a/mods/ITEMS/mcl_throwing/locale/mcl_throwing.de.tr b/mods/ITEMS/mcl_throwing/locale/mcl_throwing.de.tr new file mode 100644 index 00000000..04eb6be2 --- /dev/null +++ b/mods/ITEMS/mcl_throwing/locale/mcl_throwing.de.tr @@ -0,0 +1,9 @@ +# textdomain: mcl_throwing +@1 used the ender pearl too often.=@1 benutzte die Enderperle zu oft. +Use the punch key to throw.=Benutzen Sie die Schlagtaste zum Werfen. +Snowball=Schneeball +Snowballs can be thrown or launched from a dispenser for fun. Hitting something with a snowball does nothing.=Schneebälle können geworfen werden oder zum Spaß aus einem Werfer abgefeuert werden. Bei einem Treffer mit einem Schneeball passiert nichts. +Egg=Ei +Eggs can be thrown or launched from a dispenser and breaks on impact. There is a small chance that 1 or even 4 chicks will pop out of the egg.=Eier können geworfen werden oder aus einem Werfer abgefeuert werden. Sie zerbrechen beim Einschlag. Mit etwas Glück werden aus dem Ei eines oder sogar 4 Küken hinausfallen. +Ender Pearl=Enderperle +An ender pearl is an item which can be used for teleportation at the cost of health. It can be thrown and teleport the thrower to its impact location when it hits a solid block or a plant. Each teleportation hurts the user by 5 hit points.=Eine Enderperle ist eine Gegenstand, der zur Teleportation benutzt werden kann auf Kosten der Gesundheit. Sie kann geworfen werden und teleportiert den Werfer zur Einschlagsstelle, wenn sie einen Block oder eine Pflanze trifft. Jede Teleportation verletzt den Werfer um 5 Trefferpunkte. diff --git a/mods/ITEMS/mcl_throwing/locale/template.txt b/mods/ITEMS/mcl_throwing/locale/template.txt index 126b3ff0..c6c9313f 100644 --- a/mods/ITEMS/mcl_throwing/locale/template.txt +++ b/mods/ITEMS/mcl_throwing/locale/template.txt @@ -1,9 +1,9 @@ # textdomain: mcl_throwing @1 used the ender pearl too often.= -Hold it in your and and leftclick to throw.= +Use the punch key to throw.= Snowball= Snowballs can be thrown or launched from a dispenser for fun. Hitting something with a snowball does nothing.= Egg= -Eggs can be thrown or launched from a dispenser and breaks on impact. There is a small chance that 1 or even 4 chickens will pop out of the egg when it hits the ground.= +Eggs can be thrown or launched from a dispenser and breaks on impact. There is a small chance that 1 or even 4 chicks will pop out of the egg.= Ender Pearl= -An ender pearl is an item which can be used for teleportation at the cost of health. It can be thrown and teleport the thrower to its impact location when it hits a solid block, a plant or vines. Each teleportation hurts the user by 5 hit points.= +An ender pearl is an item which can be used for teleportation at the cost of health. It can be thrown and teleport the thrower to its impact location when it hits a solid block or a plant. Each teleportation hurts the user by 5 hit points.= diff --git a/mods/ITEMS/mcl_tnt/init.lua b/mods/ITEMS/mcl_tnt/init.lua index f18f64b5..738d6b08 100644 --- a/mods/ITEMS/mcl_tnt/init.lua +++ b/mods/ITEMS/mcl_tnt/init.lua @@ -63,8 +63,8 @@ minetest.register_node("mcl_tnt:tnt", { description = S("TNT"), paramtype = "light", sunlight_propagates = true, - _doc_items_longdesc = S("An explosive device. When it explodes, it will hurt living beings, destroy blocks around it, throw blocks affected by gravity all over the place and light fires. A single TNT has an explosion radius of @1. With a small chance, blocks may drop as an item (as if being mined) rather than being destroyed. TNT can be ignited by tools, explosions, fire, lava and redstone signals.", TNT_RANGE), - _doc_items_usagehelp = S("Place the TNT on the ground and ignite it with one of the methods above. Quickly get in safe distance quickly. The TNT will start to be affected by gravity and explodes in 4 seconds."), + _doc_items_longdesc = S("An explosive device. When it explodes, it will hurt living beings and destroy blocks around it. TNT has an explosion radius of @1. With a small chance, blocks may drop as an item (as if being mined) rather than being destroyed. TNT can be ignited by tools, explosions, fire, lava and redstone signals.", TNT_RANGE), + _doc_items_usagehelp = S("Place the TNT and ignite it with one of the methods above. Quickly get in safe distance. The TNT will start to be affected by gravity and explodes in 4 seconds."), groups = { dig_immediate = 3, tnt = 1, enderman_takable=1 }, mesecons = {effector = { action_on = tnt.ignite, diff --git a/mods/ITEMS/mcl_tnt/locale/mcl_tnt.de.tr b/mods/ITEMS/mcl_tnt/locale/mcl_tnt.de.tr new file mode 100644 index 00000000..51a8ffab --- /dev/null +++ b/mods/ITEMS/mcl_tnt/locale/mcl_tnt.de.tr @@ -0,0 +1,5 @@ +# textdomain: mcl_tnt +@1 was caught in an explosion.=@1 wurde Opfer einer Explosion. +TNT=TNT +An explosive device. When it explodes, it will hurt living beings and destroy blocks around it. TNT has an explosion radius of @1. With a small chance, blocks may drop as an item (as if being mined) rather than being destroyed. TNT can be ignited by tools, explosions, fire, lava and redstone signals.=Ein Sprengstoff. Wenn er explodiert, wird er Lebewesen verletzen und Blöcke in der Nähe zerstören. TNT hat einen Explosionsradius von @1. Mit einer geringen Wahrscheinlichkeit werden Blöcke als Gegenstand abfallen (als ob sie abgebaut worden wären), anstatt völlig zerstört zu werden. +Place the TNT and ignite it with one of the methods above. Quickly get in safe distance. The TNT will start to be affected by gravity and explodes in 4 seconds.=Platizeren sie das TNT und zünden Sie es mit einer der obigen Methoden ab. Begeben Sie sich rasch in eine sichere Entfernung. Das TNT wird anfangen, von der Schwerkraft beeinflusst zu sein und explodiert in 4 Sekunden. diff --git a/mods/ITEMS/mcl_tnt/locale/template.txt b/mods/ITEMS/mcl_tnt/locale/template.txt index c50fea38..fc3ae612 100644 --- a/mods/ITEMS/mcl_tnt/locale/template.txt +++ b/mods/ITEMS/mcl_tnt/locale/template.txt @@ -1,5 +1,5 @@ # textdomain: mcl_tnt @1 was caught in an explosion.= TNT= -An explosive device. When it explodes, it will hurt living beings, destroy blocks around it, throw blocks affected by gravity all over the place and light fires. A single TNT has an explosion radius of @1. With a small chance, blocks may drop as an item (as if being mined) rather than being destroyed. TNT can be ignited by tools, explosions, fire, lava and redstone signals.= -Place the TNT on the ground and ignite it with one of the methods above. Quickly get in safe distance quickly. The TNT will start to be affected by gravity and explodes in 4 seconds.= +An explosive device. When it explodes, it will hurt living beings and destroy blocks around it. TNT has an explosion radius of @1. With a small chance, blocks may drop as an item (as if being mined) rather than being destroyed. TNT can be ignited by tools, explosions, fire, lava and redstone signals. +Place the TNT and ignite it with one of the methods above. Quickly get in safe distance. The TNT will start to be affected by gravity and explodes in 4 seconds.= diff --git a/mods/ITEMS/mcl_tools/init.lua b/mods/ITEMS/mcl_tools/init.lua index 1a39ff8c..0a568cb7 100644 --- a/mods/ITEMS/mcl_tools/init.lua +++ b/mods/ITEMS/mcl_tools/init.lua @@ -37,7 +37,9 @@ else end minetest.register_item(":", { type = "none", - _doc_items_longdesc = S("You use your bare hand whenever you are not wielding any item. With your hand you can mine the weakest blocks and deal minor damage by punching. Using the hand is often a last resort, as proper mining tools and weapons are better than the hand. When you are wielding an item which is not a mining tool or a weapon, it will behave as if it were the hand when you start mining or punching. In Creative Mode, the hand is able to break all blocks instantly."), + _doc_items_longdesc = S("You use your bare hand whenever you are not wielding any item. With your hand you can mine most blocks, but this is the slowest method and only the weakest blocks will yield their useful drop. The hand also deals minor damage by punching. Using the hand is often a last resort, as proper mining tools and weapons are much better.").."\n".. + S("When you are wielding an item which is not a mining tool or a weapon, it will behave as if it were the hand when you start mining or punching.").."\n".. + S("In Creative Mode, the hand is able to break all blocks instantly."), wield_image = "wieldhand.png", wield_scale = {x=1.0,y=1.0,z=2.0}, -- According to Minecraft Wiki, the exact range is 3.975. @@ -57,7 +59,7 @@ local axe_longdesc = S("An axe is your tool of choice to cut down trees, wood-ba local sword_longdesc = S("Swords are great in melee combat, as they are fast, deal high damage and can endure countless battles. Swords can also be used to cut down a few particular blocks, such as cobwebs.") local shovel_longdesc = S("Shovels are tools for digging coarse blocks, such as dirt, sand and gravel. They can also be used to turn grass blocks to grass paths. Shovels can be used as weapons, but they are very weak.") local shovel_use = S("To turn a grass block into a grass path, hold the shovel in your hand, then use (rightclick) the top or side of a grass block. This only works when there's air above the grass block.") -local shears_longdesc = S("Shears are tools to shear sheep, carve pumpkins and to mine a few block types. Shears are a special mining tool and can be used to obtain the original item from a grass, leaves and similar blocks.") +local shears_longdesc = S("Shears are tools to shear sheep and to mine a few block types. Shears are a special mining tool and can be used to obtain the original item from grass, leaves and similar blocks that require cutting.") local shears_use = "To shear a sheep and obtain its wool, rightclick it. To carve a face into a pumpkin and obtain 4 pumpkin seeds, rightclick it on one of its sides. Mining works are usual, but the drops are different for a few blocks." -- Picks diff --git a/mods/ITEMS/mcl_tools/locale/mcl_tools.de.tr b/mods/ITEMS/mcl_tools/locale/mcl_tools.de.tr new file mode 100644 index 00000000..adb73a23 --- /dev/null +++ b/mods/ITEMS/mcl_tools/locale/mcl_tools.de.tr @@ -0,0 +1,31 @@ +# textdomain: mcl_tools +You use your bare hand whenever you are not wielding any item. With your hand you can mine most blocks, but this is the slowest method and only the weakest blocks will yield their useful drop. The hand also deals minor damage by punching. Using the hand is often a last resort, as proper mining tools and weapons are much better.=Sie benutzen Ihre nackte Hand, wenn Sie keinen Gegenstand halten. Mit Ihrer Hand können Sie die meisten Blöcke abbauen, aber dies ist die langsamste Methode und nur aus den schwächsten Blöcken werden ihren brauchbaren Gegenstände hinausfallen. Die Hand richtet auch geringfügigen Schaden mit Schlägen an. Die Hand ist oft die letzte Wahl, da richtige Grabewerkzeuge und Waffen viel besser sind. +When you are wielding an item which is not a mining tool or a weapon, it will behave as if it were the hand when you start mining or punching.=Wenn Sie einen Gegenstand tragen, der kein Grabewerkzeug oder eine Waffe ist, wird sie sich verhalten, als ob Sie die Hand benutzen würden, wenn Sie etwas abbauen oder schlagen. +In Creative Mode, the hand is able to break all blocks instantly.=Im Kreativmodus kann die Hand alle Blöcke sofort zerstören. +Pickaxes are mining tools to mine hard blocks, such as stone. A pickaxe can also be used as weapon, but it is rather inefficient.=Spitzhacken sind Grabewerkzeuge, um harte Blöcke wie Stein abzubauen. Eine Spitzhacke kann auch als Waffe benutzt werden, aber das ist recht ineffizient. +An axe is your tool of choice to cut down trees, wood-based blocks and other blocks. Axes deal a lot of damage as well, but they are rather slow.=Eine Axt ist das Werkzeug zum Abbauen von Bäumen, holzbasieren Blöcken und anderen Blöcken. Äxte richten auch viel Schaden an, aber sie sind ziemlich langsam. +Swords are great in melee combat, as they are fast, deal high damage and can endure countless battles. Swords can also be used to cut down a few particular blocks, such as cobwebs.=Schwerter sind großartig im Nahkampf, da sie schnell sind, hohen Schaden anrichten und viele Schlachten schlagen können. Schwerter können auch benutzt werden, um bestimmte Blöcke abzuschneiden, so wie Spinnenweben. +Shovels are tools for digging coarse blocks, such as dirt, sand and gravel. They can also be used to turn grass blocks to grass paths. Shovels can be used as weapons, but they are very weak.=Schaufeln sind Werkzeuge zum Ausgraben von groben Blöcken, wie Erde, Sand und Kies. Sie können auch benutzt werden, um Grasblöcke zu Graspfaden zu verwandeln. Schaufeln können als Waffen benutzt werden, aber sie sind sehr schwach. +To turn a grass block into a grass path, hold the shovel in your hand, then use (rightclick) the top or side of a grass block. This only works when there's air above the grass block.=Um einen Grasblock in einen Graspfad zu verwandeln, benutzen Sie sie auf der Oberseite oder einer Seite eines Grasblocks. Das funktioniert nur, wenn sich Luft über dem Grasblock befindet. +Shears are tools to shear sheep and to mine a few block types. Shears are a special mining tool and can be used to obtain the original item from grass, leaves and similar blocks that require cutting.=Eine Schere ist ein Werkzeug, um Schafe zu scheren und ein paar Blocktypen abzubauen. Sie ist ein besonderes Grabewerkzeug, das benutzt werden kann, um den ursprünglichen Gegenstand von Gras, Blättern und ähnlichen Blöcken, die abgeschnitten werden müssen, zu erhalten. +Wooden Pickaxe=Holzspitzhacke +Stone Pickaxe=Steinspitzhacke +Iron Pickaxe=Eisenspitzhacke +Golden Pickaxe=Goldspitzhacke +Diamond Pickaxe=Diamantspitzhacke +Wooden Shovel=Holzschaufel +Stone Shovel=Steinschaufel +Iron Shovel=Eisenschaufel +Golden Shovel=Goldschaufel +Diamond Shovel=Diamantschaufel +Wooden Axe=Holzaxt +Stone Axe=Steinaxt +Iron Axe=Eisenaxt +Golden Axe=Goldaxt +Diamond Axe=Diamantaxt +Wooden Sword=Holzschwert +Stone Sword=Steinschwert +Iron Sword=Eisenschwert +Golden Sword=Goldschwert +Diamond Sword=Diamantschwert +Shears=Schere diff --git a/mods/ITEMS/mcl_tools/locale/template.txt b/mods/ITEMS/mcl_tools/locale/template.txt index 8d90e42c..8e3fa90e 100644 --- a/mods/ITEMS/mcl_tools/locale/template.txt +++ b/mods/ITEMS/mcl_tools/locale/template.txt @@ -1,11 +1,13 @@ # textdomain: mcl_tools -You use your bare hand whenever you are not wielding any item. With your hand you can mine the weakest blocks and deal minor damage by punching. Using the hand is often a last resort, as proper mining tools and weapons are better than the hand. When you are wielding an item which is not a mining tool or a weapon, it will behave as if it were the hand when you start mining or punching. In Creative Mode, the hand is able to break all blocks instantly.= +You use your bare hand whenever you are not wielding any item. With your hand you can mine most blocks, but this is the slowest method and only the weakest blocks will yield their useful drop. The hand also deals minor damage by punching. Using the hand is often a last resort, as proper mining tools and weapons are much better.= +When you are wielding an item which is not a mining tool or a weapon, it will behave as if it were the hand when you start mining or punching.= +In Creative Mode, the hand is able to break all blocks instantly.= Pickaxes are mining tools to mine hard blocks, such as stone. A pickaxe can also be used as weapon, but it is rather inefficient.= An axe is your tool of choice to cut down trees, wood-based blocks and other blocks. Axes deal a lot of damage as well, but they are rather slow.= Swords are great in melee combat, as they are fast, deal high damage and can endure countless battles. Swords can also be used to cut down a few particular blocks, such as cobwebs.= Shovels are tools for digging coarse blocks, such as dirt, sand and gravel. They can also be used to turn grass blocks to grass paths. Shovels can be used as weapons, but they are very weak.= To turn a grass block into a grass path, hold the shovel in your hand, then use (rightclick) the top or side of a grass block. This only works when there's air above the grass block.= -Shears are tools to shear sheep, carve pumpkins and to mine a few block types. Shears are a special mining tool and can be used to obtain the original item from a grass, leaves and similar blocks.= +Shears are tools to shear sheep and to mine a few block types. Shears are a special mining tool and can be used to obtain the original item from grass, leaves and similar blocks that require cutting.= Wooden Pickaxe= Stone Pickaxe= Iron Pickaxe= diff --git a/mods/ITEMS/mcl_torches/locale/mcl_torches.de.tr b/mods/ITEMS/mcl_torches/locale/mcl_torches.de.tr new file mode 100644 index 00000000..224106ab --- /dev/null +++ b/mods/ITEMS/mcl_torches/locale/mcl_torches.de.tr @@ -0,0 +1,3 @@ +# textdomain: mcl_torches +Torch=Fackel +Torches are light sources which can be placed at the side or on the top of most blocks.=Fackeln sind Lichtquellen, die an der Seite oder der Oberseite der meisten Blöcke platziert werden können. diff --git a/mods/ITEMS/mcl_totems/locale/template.txt b/mods/ITEMS/mcl_totems/locale/template.txt deleted file mode 100644 index e69de29b..00000000 diff --git a/mods/ITEMS/mcl_walls/locale/mcl_walls.de.tr b/mods/ITEMS/mcl_walls/locale/mcl_walls.de.tr new file mode 100644 index 00000000..d4e7a640 --- /dev/null +++ b/mods/ITEMS/mcl_walls/locale/mcl_walls.de.tr @@ -0,0 +1,16 @@ +# textdomain: mcl_walls +A piece of wall. It cannot be jumped over with a simple jump. When multiple of these are placed to next to each other, they will automatically build a nice wall structure.=Ein Stück Mauer. Mit einem einfachen Sprung kann es nicht übersprungen werden. Wenn mehrere von diesen Blöcken nebeneinander platziert werden, werden sie automatisch ein nettes Mauerbauwerk ergeben. +Cobblestone Wall=Kopfsteinpflastermauer +Mossy Cobblestone Wall=Moosige Kopfsteinpflastermauer +Andesite Wall=Andesitmauer +Granite Wall=Granitmauer +Diorite Wall=Dioritmauer +Brick Wall=Ziegelmauer +Sandstone Wall=Sandsteinmauer +Red Sandstone Wall=Rote Sandsteinmauer +Stone Brick Wall=Steinziegelmauer +Mossy Stone Brick Wall=Moosige Steinziegelmauer +Prismarine Wall=Prismarinmauer +End Stone Brick Wall=Endsteinziegelmauer +Nether Brick Wall=Netherziegelmauer +Red Nether Brick Wall=Rote Netherziegelmauer diff --git a/mods/ITEMS/mcl_wool/locale/mcl_wool.de.tr b/mods/ITEMS/mcl_wool/locale/mcl_wool.de.tr new file mode 100644 index 00000000..de758d1e --- /dev/null +++ b/mods/ITEMS/mcl_wool/locale/mcl_wool.de.tr @@ -0,0 +1,35 @@ +# textdomain: mcl_wool +White Wool=Weiße Wolle +White Carpet=Weißer Teppich +Grey Wool=Graue Wolle +Grey Carpet=Grauer Teppich +Light Grey Wool=Hellgraue Wolle +Light Grey Carpet=Hellgrauer Teppich +Black Wool=Schwarze Wolle +Black Carpet=Schwarzer Teppich +Red Wool=Rote Wolle +Red Carpet=Roter Teppich +Yellow Wool=Gelbe Wolle +Yellow Carpet=Gelber Teppich +Green Wool=Grüne Wolle +Green Carpet=Grüner Teppich +Cyan Wool=Türkise Wolle +Cyan Carpet=Türkiser Teppich +Blue Wool=Blaue Wolle +Blue Carpet=Blauer Teppich +Magenta Wool=Magenta Wolle +Magenta Carpet=Magenta Teppich +Orange Wool=Orange Wolle +Orange Carpet=Orange Teppich +Purple Wool=Violette Wolle +Purple Carpet=Violetter Teppich +Brown Wool=Braune Wolle +Brown Carpet=Brauner Teppich +Pink Wool=Rosa Wolle +Pink Carpet=Rosa Teppich +Lime Wool=Lindgrüne Wolle +Lime Carpet=Lindgrüner Teppich +Light Blue Wool=Hellblaue Wolle +Light Blue Carpet=Hellblauer Teppich +Wool is a decorative block which comes in many different colors.=Wolle ist ein dekorativer Block, den es in vielen verschiedenen Farben gibt. +Carpets are thin floor covers which come in many different colors.=Teppiche sind dünne Bodenbeläge, die es in vielen verschiedenen Farben gibt. diff --git a/mods/ITEMS/mclx_fences/locale/mclx_fences.de.tr b/mods/ITEMS/mclx_fences/locale/mclx_fences.de.tr new file mode 100644 index 00000000..9aab0264 --- /dev/null +++ b/mods/ITEMS/mclx_fences/locale/mclx_fences.de.tr @@ -0,0 +1,4 @@ +# textdomain: mclx_fences +Red Nether Brick Fence=Roter Netherziegelzaun +Red Nether Brick Fence Gate=Rotes Netherziegelzauntor +Nether Brick Fence Gate=Netherziegelzauntor diff --git a/mods/ITEMS/mclx_stairs/locale/mclx_stairs.de.tr b/mods/ITEMS/mclx_stairs/locale/mclx_stairs.de.tr new file mode 100644 index 00000000..b2c11ed6 --- /dev/null +++ b/mods/ITEMS/mclx_stairs/locale/mclx_stairs.de.tr @@ -0,0 +1,31 @@ +# textdomain: mclx_stairs +Oak Bark Stairs=Eichenrindentreppe +Oak Bark Slab=Eichenrindenplatte +Double Oak Bark Slab=Doppeleichenrindenplatte +Acacia Bark Stairs=Akazienrindentreppe +Acacia Bark Slab=Akazienrindenplatte +Double Acacia Bark Slab=Doppelakazienrindenplatte +Spruce Bark Stairs=Fichtenrindentreppe +Spruce Bark Slab=Fichtenrindenplatte +Double Spruce Bark Slab=Doppelfichtenrindenplatte +Birch Bark Stairs=Birkenrindentreppe +Birch Bark Slab=Birkenrindenplatte +Double Birch Bark Slab=Doppelbirkenrindenplatte +Jungle Bark Stairs=Dschungelrindentreppe +Jungle Bark Slab=Dschungelrindenplatte +Double Jungle Bark Slab=Doppelschungelbirkenplatte +Dark Oak Bark Stairs=Schwarzeichenrindentreppe +Dark Oak Bark Slab=Schwarzeichenrindenplatte +Double Dark Oak Bark Slab=Doppelschwarzeichenrindenplatte +Lapis Lazuli Slab=Lapislazuliplatte +Double Lapis Lazuli Slab=Doppellapislazuliplatte +Lapis Lazuli Stairs=Lapislazulitreppe +Slab of Gold=Goldplatte +Double Slab of Gold=Doppelgoldplatte +Stairs of Gold=Goldtreppe +Slab of Iron=Eisenplatte +Double Slab of Iron=Doppeleisenplatte +Stairs of Iron=Eisentreppe +Cracked Stone Brick Stairs=Rissige Steinziegeltreppe +Cracked Stone Brick Slab=Rissige Steinziegelplatte +Double Cracked Stone Brick Slab=Doppelte rissige Steinziegelplatte diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor/locale/3d_armor.de.tr b/mods/ITEMS/minetest-3d_armor/3d_armor/locale/3d_armor.de.tr new file mode 100644 index 00000000..12c7c09e --- /dev/null +++ b/mods/ITEMS/minetest-3d_armor/3d_armor/locale/3d_armor.de.tr @@ -0,0 +1,23 @@ +# textdomain: 3d_armor +This is a piece of equippable armor which reduces the amount of damage you receive.=Dies ist ein Teil einer tragbaren Rüstung, die die Menge an Schaden, den Sie erleiden, reduziert. +To equip it, put it on the corresponding armor slot in your inventory menu.=Um es zu tragen, legen Sie es in den passenden Rüstungsplatz in ihrem Inventarmenü. +Leather Cap=Lederkappe +Iron Helmet=Eisenhelm +Golden Helmet=Goldhelm +Diamond Helmet=Diamanthelm +Chain Helmet=Kettenhelm +Leather Tunic=Ledertunika +Iron Chestplate=Eisenbrustpanzer +Golden Chestplate=Goldbrustpanzer +Diamond Chestplate=Diamantbrustpanzer +Chain Chestplate=Kettenbrustpanzer +Leather Pants=Lederhose +Iron Leggings=Eisenbeinlinge +Golden Leggings=Goldbeinlinge +Diamond Leggings=Diamantbeinlinge +Chain Leggings=Kettenbeinlinge +Leather Boots=Lederstiefel +Iron Boots=Eisenstiefel +Golden Boots=Goldstiefel +Diamond Boots=Diamantstiefel +Chain Boots=Kettenstiefel diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor_stand/init.lua b/mods/ITEMS/minetest-3d_armor/3d_armor_stand/init.lua index 332970b3..c2282f2c 100644 --- a/mods/ITEMS/minetest-3d_armor/3d_armor_stand/init.lua +++ b/mods/ITEMS/minetest-3d_armor/3d_armor_stand/init.lua @@ -92,7 +92,7 @@ end minetest.register_node("3d_armor_stand:armor_stand", { description = S("Armor Stand"), _doc_items_longdesc = S("An armor stand is a decorative object which can display different pieces of armor. Anything which players can wear as armor can also be put on an armor stand."), - _doc_items_usagehelp = S("Hold an armor item in your hand and rightclick the armor stand to put it on the armor stand. To take a piece of armor from the armor stand, select your hand and rightclick the armor stand. You'll retrieve the first armor item from above."), + _doc_items_usagehelp = S("Just place an armor item on the armor stand. To take the top piece of armor from the armor stand, select your hand and use the place key on the armor stand."), drawtype = "mesh", mesh = "3d_armor_stand.obj", inventory_image = "3d_armor_stand_item.png", diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor_stand/locale/3d_armor_stand.de.tr b/mods/ITEMS/minetest-3d_armor/3d_armor_stand/locale/3d_armor_stand.de.tr new file mode 100644 index 00000000..b947719b --- /dev/null +++ b/mods/ITEMS/minetest-3d_armor/3d_armor_stand/locale/3d_armor_stand.de.tr @@ -0,0 +1,4 @@ +# textdomain: 3d_armor_stand +Armor Stand=Rüstungsständer +An armor stand is a decorative object which can display different pieces of armor. Anything which players can wear as armor can also be put on an armor stand.=Ein Rüstungsständer ist ein dekoratives Objekt, welches verschiedene Teile einer Rüstung präsentiert. Alles, was Spieler als Rüstung tragen kann, kann auch an einem Rüstungsständer platziert werden. +Just place an armor item on the armor stand. To take the top piece of armor from the armor stand, select your hand and use the place key on the armor stand.=Platzieren Sie einfach einen Rüstungsgegenstand auf den Rüstungsständer. Um das oberte Rüstungsteil zu nehmen, wählen Sie Ihre Hand aus und benutzen Sie die Platzieren-Taste auf dem Rüstungsständer. diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor_stand/locale/template.txt b/mods/ITEMS/minetest-3d_armor/3d_armor_stand/locale/template.txt index d05dab07..9f7d0ca4 100644 --- a/mods/ITEMS/minetest-3d_armor/3d_armor_stand/locale/template.txt +++ b/mods/ITEMS/minetest-3d_armor/3d_armor_stand/locale/template.txt @@ -1,4 +1,4 @@ # textdomain: 3d_armor_stand Armor Stand= An armor stand is a decorative object which can display different pieces of armor. Anything which players can wear as armor can also be put on an armor stand.= -Hold an armor item in your hand and rightclick the armor stand to put it on the armor stand. To take a piece of armor from the armor stand, select your hand and rightclick the armor stand. You'll retrieve the first armor item from above.= +Just place an armor item on the armor stand. To take the top piece of armor from the armor stand, select your hand and use the place key on the armor stand.= diff --git a/mods/ITEMS/xpanes/locale/xpanes.de.tr b/mods/ITEMS/xpanes/locale/xpanes.de.tr new file mode 100644 index 00000000..7c3c430e --- /dev/null +++ b/mods/ITEMS/xpanes/locale/xpanes.de.tr @@ -0,0 +1,21 @@ +# textdomain: xpanes +Glass panes are thin layers of glass which neatly connect to their neighbors as you build them.=Glasscheiben sind dünne Glasschichten, die sich mit ihren Nachbarn automatisch verbinden. +Iron Bars=Eisenstangen +Iron bars neatly connect to their neighbors as you build them.=Eisenstangen verbinden sich mit den Nachbarn, wenn sie gebaut werden. +Glass Pane=Glasscheibe +Red Stained Glass Pane=Rot gefärbtes Buntglas +Green Stained Glass Pane=Grün gefärbtes Buntglas +Blue Stained Glass Pane=Blau gefärbtes Buntglas +Light Blue Stained Glass Pane=Hellblau gefärbtes Buntglas +Black Stained Glass Pane=Schwarz gefärbtes Buntglas +White Stained Glass Pane=Weiß gefärbtes Buntglas +Yellow Stained Glass Pane=Gelb gefärbtes Buntglas +Brown Stained Glass Pane=Braun gefärbtes Buntglas +Orange Stained Glass Pane=Orange gefärbtes Buntglas +Pink Stained Glass Pane=Rosa gefärbtes Buntglas +Grey Stained Glass Pane=Grau gefärbtes Buntglas +Lime Stained Glass Pane=Lindgrün gefärbtes Buntglas +Light Grey Stained Glass Pane=Hellgrau gefärbtes Buntglas +Magenta Stained Glass Pane=Magenta gefärbtes Buntglas +Purple Stained Glass Pane=Violett gefärbtes Buntglas +Cyan Stained Glass Pane=Türkis gefärbtes Buntglas From af4aa6c2ecd5882dbe6175805592dc99b9528109 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sat, 16 Mar 2019 00:21:17 +0100 Subject: [PATCH 169/737] Change German translation of Shulker --- mods/ENTITIES/mobs_mc/shulker.lua | 2 +- .../locale/mcl_death_messages.de.tr | 2 +- mods/ITEMS/mcl_chests/locale/mcl_chests.de.tr | 36 +++++++++---------- .../mcl_hoppers/locale/mcl_hoppers.de.tr | 2 +- .../mcl_mobitems/locale/mcl_mobitems.de.tr | 4 +-- 5 files changed, 23 insertions(+), 23 deletions(-) diff --git a/mods/ENTITIES/mobs_mc/shulker.lua b/mods/ENTITIES/mobs_mc/shulker.lua index 9eff2132..b3cd3c6e 100644 --- a/mods/ENTITIES/mobs_mc/shulker.lua +++ b/mods/ENTITIES/mobs_mc/shulker.lua @@ -78,7 +78,7 @@ mobs:register_arrow("mobs_mc:shulkerbullet", { }) -mobs:register_egg("mobs_mc:shulker", S("Shulker"), "mobs_mc_spawn_icon_shulker.png", 0) +mobs:register_egg("mobs_mc:shulker", S("Schulker"), "mobs_mc_spawn_icon_shulker.png", 0) mobs:spawn_specific("mobs_mc:shulker", mobs_mc.spawn.end_city, {"air"}, 0, minetest.LIGHT_MAX+1, 30, 5000, 2, mobs_mc.spawn_height.end_min, mobs_mc.spawn_height.end_max) diff --git a/mods/HUD/mcl_death_messages/locale/mcl_death_messages.de.tr b/mods/HUD/mcl_death_messages/locale/mcl_death_messages.de.tr index 11b0eb3d..665f6f68 100644 --- a/mods/HUD/mcl_death_messages/locale/mcl_death_messages.de.tr +++ b/mods/HUD/mcl_death_messages/locale/mcl_death_messages.de.tr @@ -35,7 +35,7 @@ A ghast scared @1 to death.=Ein Ghast hat @1 zu Tode erschrocken. @1 was killed by an iron golem.=@1 wurde von einem Eisengolem getötet. @1 was killed by a polar_bear.=@1 wurde von einem Eisbären getötet. @1 was killed by a killer bunny.=@1 wurde von einem Killerkaninchen getötet. -@1 was killed by a shulker.=@1 wurde von einem Shulker getötet. +@1 was killed by a shulker.=@1 wurde von einem Schulker getötet. @1 was killed by a silverfish.=@1 wurde von einem Silberfischchen getötet. @1 was killed by a skeleton.=@1 wurde von einem Skelett getötet. @1 was killed by a stray.=@1 wurde von einem Eiswanderer getötet. diff --git a/mods/ITEMS/mcl_chests/locale/mcl_chests.de.tr b/mods/ITEMS/mcl_chests/locale/mcl_chests.de.tr index d6f5f4c4..9bf54489 100644 --- a/mods/ITEMS/mcl_chests/locale/mcl_chests.de.tr +++ b/mods/ITEMS/mcl_chests/locale/mcl_chests.de.tr @@ -7,21 +7,21 @@ A trapped chest is a container which provides 27 inventory slots. When it is ope Ender Chest=Endertruhe Ender chests grant you access to a single personal interdimensional inventory with 27 slots. This inventory is the same no matter from which ender chest you access it from. If you put one item into one ender chest, you will find it in all other ender chests. Each player will only see their own items, but not the items of other players.=Endertruhen gewähren Ihnen Zugriff zu einem einzigartigen persönlichem interdimensionalem Inventar mit 27 Plätzen. Dieses Inventar ist das gleiche, egal, welche Endertruhe sie benutzen. Wenn Sie einen Gegenstand in eine Endertruhe platzieren, werden Sie sie in allen anderen Endertruhen vorhinden. Jeder Spieler wird nur seine eigenen Gegenstände sehen, aber nicht die der anderen Spieler. Rightclick the ender chest to access your personal interdimensional inventory.=Rechtsklicken Sie die Endertruhe, um auf Ihr persönliches interdimensionales Inventar zuzugreifen. -White Shulker Box=Weiße Shulkerkiste -Light Grey Shulker Box=Hellgraue Shulkerkiste -Orange Shulker Box=Orange Shulkerkiste -Cyan Shulker Box=Türkise Shulkerkiste -Magenta Shulker Box=Magenta Shulkerkiste -Purple Shulker Box=Violette Shulkerkiste -Light Blue Shulker Box=Hellblaue Shulkerkiste -Blue Shulker Box=Blaue Shulkerkiste -Yellow Shulker Box=Gelbe Shulkerkiste -Brown Shulker Box=Braune Shulkerkiste -Lime Shulker Box=Lindgrüne Shulkerkiste -Green Shulker Box=Grüne Shulkerkiste -Pink Shulker Box=Rosa Shulkerkiste -Red Shulker Box=Rote Shulkerkiste -Grey Shulker Box=Graue Shulkerkiste -Black Shulker Box=Schwarze Shulkerkiste -A shulker box is a portable container which provides 27 inventory slots for any item except shulker boxes. Shulker boxes keep their inventory when broken, so shulker boxes as well as their contents can be taken as a single item. Shulker boxes come in many different colors.=Eine Shulkerkiste ist ein tragbarer Behälter der 27 Inventarplätze für alle Gegenstände außer Shulkerkisten bietet. Shulkerkisten behalten ihr Inventar, wenn sie abgebaut werden, also können Shulkerkisten so wie ihr Inhalt als einzelne Gegenstände mitgenommen werden. Shulkerkisten gibt es in vielen verschiedenen Farben. -To access the inventory of a shulker box, place and right-click it. To take a shulker box and its contents with you, just break and collect it, the items will not fall out.=Um auf das Inventar einer Shulkerkiste zuzugreifen, platzieren Sie sie und rechtsklicken sie auf ihr. Um eine Shulkerkiste und ihren Inhalt mitzunehmen, bauen Sie sie einfach ab und sammeln Sie sie auf, der Inhalt will nicht hinausfallen. +White Shulker Box=Weiße Schulkerkiste +Light Grey Shulker Box=Hellgraue Schulkerkiste +Orange Shulker Box=Orange Schulkerkiste +Cyan Shulker Box=Türkise Schulkerkiste +Magenta Shulker Box=Magenta Schulkerkiste +Purple Shulker Box=Violette Schulkerkiste +Light Blue Shulker Box=Hellblaue Schulkerkiste +Blue Shulker Box=Blaue Schulkerkiste +Yellow Shulker Box=Gelbe Schulkerkiste +Brown Shulker Box=Braune Schulkerkiste +Lime Shulker Box=Lindgrüne Schulkerkiste +Green Shulker Box=Grüne Schulkerkiste +Pink Shulker Box=Rosa Schulkerkiste +Red Shulker Box=Rote Schulkerkiste +Grey Shulker Box=Graue Schulkerkiste +Black Shulker Box=Schwarze Schulkerkiste +A shulker box is a portable container which provides 27 inventory slots for any item except shulker boxes. Shulker boxes keep their inventory when broken, so shulker boxes as well as their contents can be taken as a single item. Shulker boxes come in many different colors.=Eine Schulkerkiste ist ein tragbarer Behälter der 27 Inventarplätze für alle Gegenstände außer Schulkerkisten bietet. Schulkerkisten behalten ihr Inventar, wenn sie abgebaut werden, also können Schulkerkisten so wie ihr Inhalt als einzelne Gegenstände mitgenommen werden. Schulkerkisten gibt es in vielen verschiedenen Farben. +To access the inventory of a shulker box, place and right-click it. To take a shulker box and its contents with you, just break and collect it, the items will not fall out.=Um auf das Inventar einer Schulkerkiste zuzugreifen, platzieren Sie sie und rechtsklicken sie auf ihr. Um eine Schulkerkiste und ihren Inhalt mitzunehmen, bauen Sie sie einfach ab und sammeln Sie sie auf, der Inhalt will nicht hinausfallen. diff --git a/mods/ITEMS/mcl_hoppers/locale/mcl_hoppers.de.tr b/mods/ITEMS/mcl_hoppers/locale/mcl_hoppers.de.tr index 2a373db5..f3e2d2ac 100644 --- a/mods/ITEMS/mcl_hoppers/locale/mcl_hoppers.de.tr +++ b/mods/ITEMS/mcl_hoppers/locale/mcl_hoppers.de.tr @@ -1,6 +1,6 @@ # textdomain: mcl_hoppers Hopper=Trichter -Hoppers are containers with 5 inventory slots. They collect dropped items from above, take items from a container above and attempt to put its items it into an adjacent container. Hoppers can go either downwards or sideways. Hoppers interact with chests, droppers, dispensers, shulker boxes, furnaces and hoppers.=Trichter sind Behälter mit 5 Inventarplätzen. Sie sammeln fallengelassene Gegenstände oberhalb auf, nehmen sich Gegenstände von einem Behälter oberhalb auf und versuchen, ihren Inhalt in einen benachbarten Behälter zu befördern. Trichter können entweder nach unten oder zur Seite zeigen. Trichter interagieren mit Truhen, Spendern, Werfern, Shulkerkisten, Öfen und Trichtern. +Hoppers are containers with 5 inventory slots. They collect dropped items from above, take items from a container above and attempt to put its items it into an adjacent container. Hoppers can go either downwards or sideways. Hoppers interact with chests, droppers, dispensers, shulker boxes, furnaces and hoppers.=Trichter sind Behälter mit 5 Inventarplätzen. Sie sammeln fallengelassene Gegenstände oberhalb auf, nehmen sich Gegenstände von einem Behälter oberhalb auf und versuchen, ihren Inhalt in einen benachbarten Behälter zu befördern. Trichter können entweder nach unten oder zur Seite zeigen. Trichter interagieren mit Truhen, Spendern, Werfern, Schulkerkisten, Öfen und Trichtern. Hoppers interact with containers the following way:=Trichter interagieren mit Behältern auf diese Weise: • Furnaces: Hoppers from above will put items into the source slot. Hoppers from below take items from the output slot. They also take items from the fuel slot when they can't be used as a fuel. Sideway hoppers that point to the furnace put items into the fuel slot=• Öfen: Trichter von oberhalb werden Gegenstände in den Quellplatz befördern. Trichter von unterhalb werden Gegenstände aus dem Ausgabeplatz nehmen. Sie werden Gegenstände auch aus dem Brennstoffplatz nehmen, wenn sie als Brennstoff ungeeignet sind. Seitwärtstrichter, die zum Ofen zeigen, befördern Gegenstände in den Brennstoffplatz. • Ender chests: No interaction.=• Endertruhen: Keine Interaktion. diff --git a/mods/ITEMS/mcl_mobitems/locale/mcl_mobitems.de.tr b/mods/ITEMS/mcl_mobitems/locale/mcl_mobitems.de.tr index 15f82652..95e91814 100644 --- a/mods/ITEMS/mcl_mobitems/locale/mcl_mobitems.de.tr +++ b/mods/ITEMS/mcl_mobitems/locale/mcl_mobitems.de.tr @@ -51,8 +51,8 @@ Saddle=Sattel Saddles can be put on some animals in order to mount them.=Sattel können auf einigen Tieren platziert werden, um sich aufzusatteln. Rabbit Stew=Kaninchenragout Rabbit stew is a very nutricious food item.=Kaninchenragout ist ein sehr nahrhaftes Lebensmittel. -Shulker Shell=Shulkerschale -Shulker shells are used in crafting. They are dropped from dead shulkers.=Shulkerschalen werden für die Fertigung verwendet. Sie werden von toten Shulkern fallen gelassen. +Shulker Shell=Schulkerschale +Shulker shells are used in crafting. They are dropped from dead shulkers.=Schulkerschalen werden für die Fertigung verwendet. Sie werden von toten Schulkern fallen gelassen. Slimeball=Schleimkugel Slimeballs are used in crafting. They are dropped from slimes.=Schleimkugeln werden in der Fertigung verwendet. Sie werden von Schleimen fallen gelassen. Gunpowder=Schießpulver From 03db150175918797a714825e4b4d993c7a6b297f Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sat, 16 Mar 2019 00:27:05 +0100 Subject: [PATCH 170/737] Add missing fence translation --- mods/ITEMS/mcl_fences/init.lua | 2 +- mods/ITEMS/mcl_fences/locale/mcl_fences.de.tr | 1 + mods/ITEMS/mcl_fences/locale/template.txt | 1 + 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_fences/init.lua b/mods/ITEMS/mcl_fences/init.lua index 1e2539fa..c46997e7 100644 --- a/mods/ITEMS/mcl_fences/init.lua +++ b/mods/ITEMS/mcl_fences/init.lua @@ -290,7 +290,7 @@ end -- Nether Brick Fence (without fence gate!) -mcl_fences.register_fence("nether_brick_fence", "Nether Brick Fence", "mcl_fences_fence_nether_brick.png", {pickaxey=1, deco_block=1, fence_nether_brick=1}, 2, 30, {"group:fence_nether_brick"}, mcl_sounds.node_sound_stone_defaults()) +mcl_fences.register_fence("nether_brick_fence", S("Nether Brick Fence"), "mcl_fences_fence_nether_brick.png", {pickaxey=1, deco_block=1, fence_nether_brick=1}, 2, 30, {"group:fence_nether_brick"}, mcl_sounds.node_sound_stone_defaults()) minetest.register_craft({ output = 'mcl_fences:nether_brick_fence 6', diff --git a/mods/ITEMS/mcl_fences/locale/mcl_fences.de.tr b/mods/ITEMS/mcl_fences/locale/mcl_fences.de.tr index 1b77e8a3..a55eaebf 100644 --- a/mods/ITEMS/mcl_fences/locale/mcl_fences.de.tr +++ b/mods/ITEMS/mcl_fences/locale/mcl_fences.de.tr @@ -14,3 +14,4 @@ Dark Oak Fence=Schwarzeichenzaun Dark Oak Fence Gate=Schwarzeichenzauntor Acacia Fence=Akazienzaun Acacia Fence Gate=Akazienzauntor +Nether Brick Fence=Netherziegelzaun diff --git a/mods/ITEMS/mcl_fences/locale/template.txt b/mods/ITEMS/mcl_fences/locale/template.txt index 9eaee4e4..3a5c14ae 100644 --- a/mods/ITEMS/mcl_fences/locale/template.txt +++ b/mods/ITEMS/mcl_fences/locale/template.txt @@ -14,3 +14,4 @@ Dark Oak Fence= Dark Oak Fence Gate= Acacia Fence= Acacia Fence Gate= +Nether Brick Fence= From d45d53e455ced5e3ecb8b169e6c6bb51274cc502 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sat, 16 Mar 2019 02:00:48 +0100 Subject: [PATCH 171/737] German translation: Redstone --- mods/ITEMS/REDSTONE/mcl_comparators/init.lua | 2 +- .../locale/mcl_comparators.de.tr | 9 ++++++ .../mcl_comparators/locale/template.txt | 2 +- mods/ITEMS/REDSTONE/mcl_dispensers/init.lua | 32 +++++++++---------- .../locale/mcl_dispensers.de.tr | 22 +++++++++++++ .../mcl_dispensers/locale/template.txt | 17 +++++++++- mods/ITEMS/REDSTONE/mcl_droppers/init.lua | 2 +- .../mcl_droppers/locale/mcl_droppers.de.tr | 6 ++++ .../REDSTONE/mcl_droppers/locale/template.txt | 2 +- mods/ITEMS/REDSTONE/mcl_observers/init.lua | 3 +- .../mcl_observers/locale/mcl_observers.de.tr | 4 +++ .../mcl_observers/locale/template.txt | 2 +- mods/ITEMS/REDSTONE/mesecons_button/init.lua | 25 ++++++++------- .../locale/mesecons_button.de.tr | 11 +++++++ .../mesecons_button/locale/template.txt | 11 +++++++ .../REDSTONE/mesecons_commandblock/init.lua | 10 +++--- .../locale/mesecons_commandblock.de.tr | 28 ++++++++++++++++ .../mesecons_commandblock/locale/template.txt | 22 ++++++++++--- mods/ITEMS/REDSTONE/mesecons_delayer/init.lua | 2 +- .../locale/mesecons_delayer.de.tr | 9 ++++++ .../mesecons_delayer/locale/template.txt | 2 +- .../REDSTONE/mesecons_lightstone/init.lua | 6 ++-- .../locale/mesecons_lightstone.de.tr | 3 ++ .../mesecons_lightstone/locale/template.txt | 3 ++ .../locale/mesecons_noteblock.de.tr | 10 ++++++ .../mesecons_noteblock/locale/template.txt | 2 +- mods/ITEMS/REDSTONE/mesecons_pistons/init.lua | 2 +- .../locale/mesecons_pistons.de.tr | 6 ++++ .../mesecons_pistons/locale/template.txt | 2 +- .../locale/mesecons_pressureplates.de.tr | 12 +++++++ .../REDSTONE/mesecons_solarpanel/init.lua | 4 +-- .../locale/mesecons_solarpanel.de.tr | 7 ++++ .../mesecons_solarpanel/locale/template.txt | 2 ++ mods/ITEMS/REDSTONE/mesecons_torch/init.lua | 6 +--- .../locale/mesecons_torch.de.tr | 6 ++++ .../mesecons_torch/locale/template.txt | 6 +--- .../REDSTONE/mesecons_walllever/init.lua | 2 +- .../locale/mesecons_walllever.de.tr | 4 +++ .../mesecons_walllever/locale/template.txt | 2 +- mods/ITEMS/REDSTONE/mesecons_wires/init.lua | 2 +- .../locale/mesecons_wires.de.tr | 10 ++++++ 41 files changed, 254 insertions(+), 66 deletions(-) create mode 100644 mods/ITEMS/REDSTONE/mcl_comparators/locale/mcl_comparators.de.tr create mode 100644 mods/ITEMS/REDSTONE/mcl_dispensers/locale/mcl_dispensers.de.tr create mode 100644 mods/ITEMS/REDSTONE/mcl_droppers/locale/mcl_droppers.de.tr create mode 100644 mods/ITEMS/REDSTONE/mcl_observers/locale/mcl_observers.de.tr create mode 100644 mods/ITEMS/REDSTONE/mesecons_button/locale/mesecons_button.de.tr create mode 100644 mods/ITEMS/REDSTONE/mesecons_commandblock/locale/mesecons_commandblock.de.tr create mode 100644 mods/ITEMS/REDSTONE/mesecons_delayer/locale/mesecons_delayer.de.tr create mode 100644 mods/ITEMS/REDSTONE/mesecons_lightstone/locale/mesecons_lightstone.de.tr create mode 100644 mods/ITEMS/REDSTONE/mesecons_noteblock/locale/mesecons_noteblock.de.tr create mode 100644 mods/ITEMS/REDSTONE/mesecons_pistons/locale/mesecons_pistons.de.tr create mode 100644 mods/ITEMS/REDSTONE/mesecons_pressureplates/locale/mesecons_pressureplates.de.tr create mode 100644 mods/ITEMS/REDSTONE/mesecons_solarpanel/locale/mesecons_solarpanel.de.tr create mode 100644 mods/ITEMS/REDSTONE/mesecons_torch/locale/mesecons_torch.de.tr create mode 100644 mods/ITEMS/REDSTONE/mesecons_walllever/locale/mesecons_walllever.de.tr create mode 100644 mods/ITEMS/REDSTONE/mesecons_wires/locale/mesecons_wires.de.tr diff --git a/mods/ITEMS/REDSTONE/mcl_comparators/init.lua b/mods/ITEMS/REDSTONE/mcl_comparators/init.lua index bbd7410e..f85586b5 100644 --- a/mods/ITEMS/REDSTONE/mcl_comparators/init.lua +++ b/mods/ITEMS/REDSTONE/mcl_comparators/init.lua @@ -230,7 +230,7 @@ for _, state in pairs{mesecon.state.on, mesecon.state.off} do usagehelp = S("A redstone comparator has 1 main input, 2 side inputs and 1 output. The output is in arrow direction, the main input is in the opposite direction. The other 2 sides are the side inputs.").."\n".. S("The main input can powered in 2 ways: First, it can be powered directly by redstone power like any other component. Second, it is powered if, and only if a container (like a chest) is placed in front of it and the container contains at least one item.").."\n".. - S("The side inputs are only powered by normal redstone power. The redstone can operate in two modes: Transmission mode and subtraction mode. It starts in transmission mode and the mode can be changed by a rightclick.").."\n\n".. + S("The side inputs are only powered by normal redstone power. The redstone comparator can operate in two modes: Transmission mode and subtraction mode. It starts in transmission mode and the mode can be changed by using the block.").."\n\n".. S("Transmission mode:\nThe front torch is unlit and lowered. The output is powered if, and only if the main input is powered. The two side inputs are ignored.").."\n".. S("Subtraction mode:\nThe front torch is lit. The output is powered if, and only if the main input is powered and none of the side inputs is powered.") else diff --git a/mods/ITEMS/REDSTONE/mcl_comparators/locale/mcl_comparators.de.tr b/mods/ITEMS/REDSTONE/mcl_comparators/locale/mcl_comparators.de.tr new file mode 100644 index 00000000..2e378ef7 --- /dev/null +++ b/mods/ITEMS/REDSTONE/mcl_comparators/locale/mcl_comparators.de.tr @@ -0,0 +1,9 @@ +# textdomain: mcl_comparators +Redstone comparators are multi-purpose redstone components.=Redstonekomparatoren sind Redstonekomponenten mit vielen Verwendungszwecken. +They can transmit a redstone signal, detect whether a block contains any items and compare multiple signals.=Sie können ein Redstonesignal übertragen, erkennen, ob ein Block Gegenstände enthält und mehrere Signale vergleichen. +A redstone comparator has 1 main input, 2 side inputs and 1 output. The output is in arrow direction, the main input is in the opposite direction. The other 2 sides are the side inputs.=Ein Redstonekomparator hat 1 Haupteingang, 2 Seiteneingänge und 1 Ausgang. Der Ausgang ist in Pfeilrichtung, der Haupteingang ist in der gegenüberliegenden Richtung. Die anderen 2 Seiten sind die Seiteneingänge. +The main input can powered in 2 ways: First, it can be powered directly by redstone power like any other component. Second, it is powered if, and only if a container (like a chest) is placed in front of it and the container contains at least one item.=Der Haupteingang kann auf 2 Weisen versorgt werden: Erstens, kann er direkt von Redstoneenergie wie bei jeder anderen Komponente versorgt werden. Zweitens wird er versorgt, wenn, und nur wenn ein Behälter (wie eine Truhe) vor dem Komporator platziert wurde und der Behälter mindestens einen Gegenstand enthält. +The side inputs are only powered by normal redstone power. The redstone can operate in two modes: Transmission mode and subtraction mode. It starts in transmission mode and the mode can be changed by using the block.=Die Seiteneingänge akzeptieren nur normale Redstoneenergie. Der Redstonekomparator kann in zwei Modi agieren: Übertragungsmodus und Subtraktionsmodus. Er fängt im Übertragungsmodus an. Der Modus wird beim Benutzen des Blocks geändert. +Transmission mode:@nThe front torch is unlit and lowered. The output is powered if, and only if the main input is powered. The two side inputs are ignored.=Übertragungsmodus:@nDie vordere Fackel ist eingefahren und leuchtet nicht auf. Die Ausgabe gibt ein Signal, wenn, nur nur wenn der Haupteingang bestromt wird. Die zwei Seiteneingänge werden ignoriert. +Subtraction mode:@nThe front torch is lit. The output is powered if, and only if the main input is powered and none of the side inputs is powered.=Subtraktionsmodus:@nDie vordere Fackel leuchtet auf. Die Ausgabe gibt ein Signal wenn, nur nur wenn der Haupteingang versorgt wird und keiner der Seiteneingänge bestromt ist. +Redstone Comparator=Redstonekomparator diff --git a/mods/ITEMS/REDSTONE/mcl_comparators/locale/template.txt b/mods/ITEMS/REDSTONE/mcl_comparators/locale/template.txt index 7934a4cb..0f7cb9ab 100644 --- a/mods/ITEMS/REDSTONE/mcl_comparators/locale/template.txt +++ b/mods/ITEMS/REDSTONE/mcl_comparators/locale/template.txt @@ -3,7 +3,7 @@ Redstone comparators are multi-purpose redstone components.= They can transmit a redstone signal, detect whether a block contains any items and compare multiple signals.= A redstone comparator has 1 main input, 2 side inputs and 1 output. The output is in arrow direction, the main input is in the opposite direction. The other 2 sides are the side inputs.= The main input can powered in 2 ways: First, it can be powered directly by redstone power like any other component. Second, it is powered if, and only if a container (like a chest) is placed in front of it and the container contains at least one item.= -The side inputs are only powered by normal redstone power. The redstone can operate in two modes: Transmission mode and subtraction mode. It starts in transmission mode and the mode can be changed by a rightclick.= +The side inputs are only powered by normal redstone power. The redstone comparator can operate in two modes: Transmission mode and subtraction mode. It starts in transmission mode and the mode can be changed by using the block.= Transmission mode:@nThe front torch is unlit and lowered. The output is powered if, and only if the main input is powered. The two side inputs are ignored.= Subtraction mode:@nThe front torch is lit. The output is powered if, and only if the main input is powered and none of the side inputs is powered.= Redstone Comparator= diff --git a/mods/ITEMS/REDSTONE/mcl_dispensers/init.lua b/mods/ITEMS/REDSTONE/mcl_dispensers/init.lua index d24fc858..02c6884d 100644 --- a/mods/ITEMS/REDSTONE/mcl_dispensers/init.lua +++ b/mods/ITEMS/REDSTONE/mcl_dispensers/init.lua @@ -284,25 +284,25 @@ local dispenserdef = { local horizontal_def = table.copy(dispenserdef) horizontal_def.description = S("Dispenser") horizontal_def._doc_items_longdesc = S("A dispenser is a block which acts as a redstone component which, when powered with redstone power, dispenses an item. It has a container with 9 inventory slots.") -horizontal_def._doc_items_usagehelp = S("Place the dispenser in one of 6 possible directions. The “hole” is where items will fly out of the dispenser. Rightclick the dispenser to access its inventory. Insert the items you wish to dispense. Supply the dispenser with redstone energy once to dispense a single random item.").."\n\n".. +horizontal_def._doc_items_usagehelp = S("Place the dispenser in one of 6 possible directions. The “hole” is where items will fly out of the dispenser. Use the dispenser to access its inventory. Insert the items you wish to dispense. Supply the dispenser with redstone energy once to dispense a random item.").."\n\n".. S("The dispenser will do different things, depending on the dispensed item:").."\n\n".. -S([[• Arrows: Are launched -• Eggs and snowballs: Are thrown -• Fire charges: Are fired in a straight line -• Armor: Will be equipped to players and armor stands -• Boats: Are placed on water or are dropped -• Minecart: Are placed on rails or are dropped -• Bone meal: Is applied on the block it is facint -• Empty buckets: Are used to collect a liquid source -• Filled buckets: Are used to place a liquid source -• Heads, pumpkins: Equipped to players and armor stands, or placed as a block -• Shulker boxes: Are placed as a block -• TNT: Is placed and ignited -• Flint and steel: Is used to ignite a fire in air and to ignite TNT -• Spawn eggs: Will summon the mob they contain -• Other items: Are simply dropped]]) +S("• Arrows: Are launched").."\n".. +S("• Eggs and snowballs: Are thrown").."\n".. +S("• Fire charges: Are fired in a straight line").."\n".. +S("• Armor: Will be equipped to players and armor stands").."\n".. +S("• Boats: Are placed on water or are dropped").."\n".. +S("• Minecart: Are placed on rails or are dropped").."\n".. +S("• Bone meal: Is applied on the block it is facing").."\n".. +S("• Empty buckets: Are used to collect a liquid source").."\n".. +S("• Filled buckets: Are used to place a liquid source").."\n".. +S("• Heads, pumpkins: Equipped to players and armor stands, or placed as a block").."\n".. +S("• Shulker boxes: Are placed as a block").."\n".. +S("• TNT: Is placed and ignited").."\n".. +S("• Flint and steel: Is used to ignite a fire in air and to ignite TNT").."\n".. +S("• Spawn eggs: Will summon the mob they contain").."\n".. +S("• Other items: Are simply dropped") horizontal_def.after_place_node = function(pos, placer, itemstack, pointed_thing) setup_dispenser(pos) diff --git a/mods/ITEMS/REDSTONE/mcl_dispensers/locale/mcl_dispensers.de.tr b/mods/ITEMS/REDSTONE/mcl_dispensers/locale/mcl_dispensers.de.tr new file mode 100644 index 00000000..936a1810 --- /dev/null +++ b/mods/ITEMS/REDSTONE/mcl_dispensers/locale/mcl_dispensers.de.tr @@ -0,0 +1,22 @@ +# textdomain: mcl_dispensers +Dispenser=Werfer +A dispenser is a block which acts as a redstone component which, when powered with redstone power, dispenses an item. It has a container with 9 inventory slots.=Ein Werfer ist eine Block, der als eine Redstonekomponente fungiert die, wenn sie mit Redstoneenergie versorgt ist, einen Gegenstand auswirft. Er hat einen Behälter mit 9 Inventarplätzen. +Place the dispenser in one of 6 possible directions. The “hole” is where items will fly out of the dispenser. Use the dispenser to access its inventory. Insert the items you wish to dispense. Supply the dispenser with redstone energy once to dispense a random item.=Platzieren Sie den Werfer in einer von 6 möglichen Richtungen. Das „Loch“ ist die Stelle, aus der Gegenstände aus dem Werfer fliegen. Benutzen Sie den Werfer, um auf das Inventar zuzugreifen. +The dispenser will do different things, depending on the dispensed item:=Der Werfer wird, abhängig vom geworfenem Gegenstand, unterschiedliche Dinge tun: +• Arrows: Are launched=• Pfeile: Werden gefeuert +• Eggs and snowballs: Are thrown=• Eier und Schneebälle: Werden geworfen +• Fire charges: Are fired in a straight line=• Feuerkugeln: Werden schnurgerade abgefeuert +• Armor: Will be equipped to players and armor stands=• Rüstung: Spieler und Rüstungsständer werden ausgerüstet +• Boats: Are placed on water or are dropped=• Werden auf Wasser platziert oder abgeworfen +• Minecart: Are placed on rails or are dropped=• Werden auf Schienen platziert oder abgeworfen +• Bone meal: Is applied on the block it is facing=• Knochenmehl: Wird auf den Block, auf den er zeigt, angewandt +• Empty buckets: Are used to collect a liquid source=• Leere Eimer: Sammeln Flüssigkeitsquelle auf +• Filled buckets: Are used to place a liquid source=• Volle Eimer: Platzieren eine Flüssigkeitsquelle +• Heads, pumpkins: Equipped to players and armor stands, or placed as a block=• Köpfe, Kürbisse: Spieler und Rüstungsständer werden ausgerüstet, oder wird als Block platziert +• Shulker boxes: Are placed as a block=Schulkerkisten: Werden als Block platziert +• TNT: Is placed and ignited=• TNT: Wird platzierd unt angezündet +• Flint and steel: Is used to ignite a fire in air and to ignite TNT=• Endzündet ein Feuer in der Luft und zündet TNT an +• Spawn eggs: Will summon the mob they contain=• Spawn-Eier: Beschwören einen Mob +• Other items: Are simply dropped=• Andere Gegenstände: Werden fallen gelassen +Downwards-Facing Dispenser=Nach unten zeigender Werfer +Upwards-Facing Dispenser=Nach oben zeigender Werfer diff --git a/mods/ITEMS/REDSTONE/mcl_dispensers/locale/template.txt b/mods/ITEMS/REDSTONE/mcl_dispensers/locale/template.txt index a7a7fb0e..f8262a81 100644 --- a/mods/ITEMS/REDSTONE/mcl_dispensers/locale/template.txt +++ b/mods/ITEMS/REDSTONE/mcl_dispensers/locale/template.txt @@ -1,7 +1,22 @@ # textdomain: mcl_dispensers Dispenser= A dispenser is a block which acts as a redstone component which, when powered with redstone power, dispenses an item. It has a container with 9 inventory slots.= -Place the dispenser in one of 6 possible directions. The “hole” is where items will fly out of the dispenser. Rightclick the dispenser to access its inventory. Insert the items you wish to dispense. Supply the dispenser with redstone energy once to dispense a single random item.= +Place the dispenser in one of 6 possible directions. The “hole” is where items will fly out of the dispenser. Use the dispenser to access its inventory. Insert the items you wish to dispense. Supply the dispenser with redstone energy once to dispense a random item.= The dispenser will do different things, depending on the dispensed item:= +• Arrows: Are launched= +• Eggs and snowballs: Are thrown= +• Fire charges: Are fired in a straight line= +• Armor: Will be equipped to players and armor stands= +• Boats: Are placed on water or are dropped= +• Minecart: Are placed on rails or are dropped= +• Bone meal: Is applied on the block it is facing= +• Empty buckets: Are used to collect a liquid source= +• Filled buckets: Are used to place a liquid source= +• Heads, pumpkins: Equipped to players and armor stands, or placed as a block= +• Shulker boxes: Are placed as a block= +• TNT: Is placed and ignited= +• Flint and steel: Is used to ignite a fire in air and to ignite TNT= +• Spawn eggs: Will summon the mob they contain= +• Other items: Are simply dropped= Downwards-Facing Dispenser= Upwards-Facing Dispenser= diff --git a/mods/ITEMS/REDSTONE/mcl_droppers/init.lua b/mods/ITEMS/REDSTONE/mcl_droppers/init.lua index e53313aa..2ac5aa32 100644 --- a/mods/ITEMS/REDSTONE/mcl_droppers/init.lua +++ b/mods/ITEMS/REDSTONE/mcl_droppers/init.lua @@ -148,7 +148,7 @@ local dropperdef = { local horizontal_def = table.copy(dropperdef) horizontal_def.description = S("Dropper") horizontal_def._doc_items_longdesc = S("A dropper is a redstone component and a container with 9 inventory slots which, when supplied with redstone power, drops an item or puts it into a container in front of it.") -horizontal_def._doc_items_usagehelp = S("Droppers can be placed in 6 possible directions, items will be dropped out of the hole. Rightclick the dropper to access its inventory. Supply it with redstone energy once to make the dropper drop or transfer a random item.") +horizontal_def._doc_items_usagehelp = S("Droppers can be placed in 6 possible directions, items will be dropped out of the hole. Use the dropper to access its inventory. Supply it with redstone energy once to make the dropper drop or transfer a random item.") horizontal_def.after_place_node = function(pos, placer, itemstack, pointed_thing) setup_dropper(pos) orientate_dropper(pos, placer) diff --git a/mods/ITEMS/REDSTONE/mcl_droppers/locale/mcl_droppers.de.tr b/mods/ITEMS/REDSTONE/mcl_droppers/locale/mcl_droppers.de.tr new file mode 100644 index 00000000..717bb580 --- /dev/null +++ b/mods/ITEMS/REDSTONE/mcl_droppers/locale/mcl_droppers.de.tr @@ -0,0 +1,6 @@ +# textdomain: mcl_droppers +Dropper=Spender +A dropper is a redstone component and a container with 9 inventory slots which, when supplied with redstone power, drops an item or puts it into a container in front of it.=Ein Spender ist eine Redstonekomponente und ein Behälter mit 9 Inventarplätzen. Er wird, wenn mit Redstoneenergie versorgt, einen Gegenstand abwerfen oder in einen Behälter, auf den er zeigt, ablegen. +Droppers can be placed in 6 possible directions, items will be dropped out of the hole. Use the dropper to access its inventory. Supply it with redstone energy once to make the dropper drop or transfer a random item.=Spender können in 6 mögliche Richtungen platziert werden, Gegenstände fallen aus dem Loch hinaus. Benutzen Sie den Spender, um auf sein Inventar zuzugreifen. Versorgen Sie ihn mit Redstoneenergie, um den Spender einen Gegenstand abwerfen oder in einen Behälter ablegen zu lassen. +Downwards-Facing Dropper=Nach unten zeigender Spender +Upwards-Facing Dropper=Nach oben zeigender Spender diff --git a/mods/ITEMS/REDSTONE/mcl_droppers/locale/template.txt b/mods/ITEMS/REDSTONE/mcl_droppers/locale/template.txt index 312e96cb..b805c580 100644 --- a/mods/ITEMS/REDSTONE/mcl_droppers/locale/template.txt +++ b/mods/ITEMS/REDSTONE/mcl_droppers/locale/template.txt @@ -1,6 +1,6 @@ # textdomain: mcl_droppers Dropper= A dropper is a redstone component and a container with 9 inventory slots which, when supplied with redstone power, drops an item or puts it into a container in front of it.= -Droppers can be placed in 6 possible directions, items will be dropped out of the hole. Rightclick the dropper to access its inventory. Supply it with redstone energy once to make the dropper drop or transfer a random item.= +Droppers can be placed in 6 possible directions, items will be dropped out of the hole. Use the dropper to access its inventory. Supply it with redstone energy once to make the dropper drop or transfer a random item.= Downwards-Facing Dropper= Upwards-Facing Dropper= diff --git a/mods/ITEMS/REDSTONE/mcl_observers/init.lua b/mods/ITEMS/REDSTONE/mcl_observers/init.lua index af230d80..802e2450 100644 --- a/mods/ITEMS/REDSTONE/mcl_observers/init.lua +++ b/mods/ITEMS/REDSTONE/mcl_observers/init.lua @@ -88,7 +88,8 @@ mesecon.register_node("mcl_observers:observer", { description = S("Observer"), _doc_items_longdesc = S("An observer is a redstone component which observes the block in front of it and sends a very short redstone pulse whenever this block changes."), - _doc_items_usagehelp = S("Place the observer directly in front of the block you want to observe with the “face” looking at the block. The arrow shows you the side of the output, which is at the opposite side of the “face”. The arrow points to it. You need to place your redstone wire or any other component you want to power here."), + _doc_items_usagehelp = S("Place the observer directly in front of the block you want to observe with the “face” looking at the block. The arrow points to the side of the output, which is at the opposite side of the “face”. You can place your redstone dust or any other component here."), + groups = {pickaxey=1, material_stone=1, not_opaque=1, }, tiles = { "mcl_observers_observer_top.png^[transformR180", "default_furnace_bottom.png", diff --git a/mods/ITEMS/REDSTONE/mcl_observers/locale/mcl_observers.de.tr b/mods/ITEMS/REDSTONE/mcl_observers/locale/mcl_observers.de.tr new file mode 100644 index 00000000..ef23ad49 --- /dev/null +++ b/mods/ITEMS/REDSTONE/mcl_observers/locale/mcl_observers.de.tr @@ -0,0 +1,4 @@ +# textdomain: mcl_observers +Observer=Wächter +An observer is a redstone component which observes the block in front of it and sends a very short redstone pulse whenever this block changes.=Ein Wächter ist eine Redstonekomponente, die den Block vor ihm beobachtet und einen sehr kurzen Redstoneimpuls sendet, wenn sich dieser Block ändert. +Place the observer directly in front of the block you want to observe with the “face” looking at the block. The arrow points to the side of the output, which is at the opposite side of the “face”. You can place your redstone dust or any other component here.=Platzieren Sie den Wächter direkt vor dem Block, den Sie beobachten wollen, so dass das „Gesicht“ zum Block schaut. Der Pfeil zeigt auf die Seite des Signalausgangs, der sich gegenüber vom „Gesicht“ befindet. Hier können Sie Ihren Restonestaub oder eine beliebige andere Komponente platzieren. diff --git a/mods/ITEMS/REDSTONE/mcl_observers/locale/template.txt b/mods/ITEMS/REDSTONE/mcl_observers/locale/template.txt index 6f8259f8..40dbfd71 100644 --- a/mods/ITEMS/REDSTONE/mcl_observers/locale/template.txt +++ b/mods/ITEMS/REDSTONE/mcl_observers/locale/template.txt @@ -1,4 +1,4 @@ # textdomain: mcl_observers Observer= An observer is a redstone component which observes the block in front of it and sends a very short redstone pulse whenever this block changes.= -Place the observer directly in front of the block you want to observe with the “face” looking at the block. The arrow shows you the side of the output, which is at the opposite side of the “face”. The arrow points to it. You need to place your redstone wire or any other component you want to power here.= +Place the observer directly in front of the block you want to observe with the “face” looking at the block. The arrow points to the side of the output, which is at the opposite side of the “face”. You can place your redstone dust or any other component here.= diff --git a/mods/ITEMS/REDSTONE/mesecons_button/init.lua b/mods/ITEMS/REDSTONE/mesecons_button/init.lua index 3e34670e..9f659983 100644 --- a/mods/ITEMS/REDSTONE/mesecons_button/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons_button/init.lua @@ -1,6 +1,7 @@ -- WALL BUTTON --- A button that when pressed emits power for 1 second --- and then turns off again +-- A button that when pressed emits power for a short moment and then turns off again + +local S = minetest.get_translator("mesecons_button") local button_get_output_rules = mesecon.rules.wallmounted_get @@ -78,7 +79,7 @@ local on_button_place = function(itemstack, placer, pointed_thing) return itemstack end -local buttonuse = "Rightclick the button to push it." +local buttonuse = S("Use the button to push it.") mesecon.register_button = function(basename, description, texture, recipeitem, sounds, plusgroups, button_timer, push_by_arrow, longdesc) local groups_off = table.copy(plusgroups) @@ -191,22 +192,22 @@ end mesecon.register_button( "stone", - "Stone Button", + S("Stone Button"), "default_stone.png", "mcl_core:stone", mcl_sounds.node_sound_stone_defaults(), {material_stone=1,handy=1,pickaxey=1}, 1, false, - "A stone button is a redstone component made out of stone which can be pushed to provide redstone power. When pushed, it powers adjacent redstone components for 1 second. It can only be placed on solid opaque full cubes (like cobblestone).") + S("A stone button is a redstone component made out of stone which can be pushed to provide redstone power. When pushed, it powers adjacent redstone components for 1 second.")) local woods = { - { "wood", "mcl_core:wood", "default_wood.png", "Oak Button" }, - { "acaciawood", "mcl_core:acaciawood", "default_acacia_wood.png", "Acacia Button" }, - { "birchwood", "mcl_core:birchwood", "mcl_core_planks_birch.png", "Birch Button" }, - { "darkwood", "mcl_core:darkwood", "mcl_core_planks_big_oak.png", "Dark Oak Button" }, - { "sprucewood", "mcl_core:sprucewood", "mcl_core_planks_spruce.png", "Spruce Button" }, - { "junglewood", "mcl_core:junglewood", "default_junglewood.png", "Jungle Button" }, + { "wood", "mcl_core:wood", "default_wood.png", S("Oak Button") }, + { "acaciawood", "mcl_core:acaciawood", "default_acacia_wood.png", S("Acacia Button") }, + { "birchwood", "mcl_core:birchwood", "mcl_core_planks_birch.png", S("Birch Button") }, + { "darkwood", "mcl_core:darkwood", "mcl_core_planks_big_oak.png", S("Dark Oak Button") }, + { "sprucewood", "mcl_core:sprucewood", "mcl_core_planks_spruce.png", S("Spruce Button") }, + { "junglewood", "mcl_core:junglewood", "default_junglewood.png", S("Jungle Button") }, } for w=1, #woods do @@ -219,7 +220,7 @@ for w=1, #woods do {material_wood=1,handy=1,axey=1}, 1.5, true, - "A wooden button is a redstone component made out of wood which can be pushed to provide redstone power. When pushed, it powers adjacent redstone components for 1.5 seconds. It can only be placed on solid opaque full cubes (like cobblestone). Wooden buttons may also be pushed by arrows.") + S("A wooden button is a redstone component made out of wood which can be pushed to provide redstone power. When pushed, it powers adjacent redstone components for 1.5 seconds. Wooden buttons may also be pushed by arrows.")) minetest.register_craft({ type = "fuel", diff --git a/mods/ITEMS/REDSTONE/mesecons_button/locale/mesecons_button.de.tr b/mods/ITEMS/REDSTONE/mesecons_button/locale/mesecons_button.de.tr new file mode 100644 index 00000000..da25ab73 --- /dev/null +++ b/mods/ITEMS/REDSTONE/mesecons_button/locale/mesecons_button.de.tr @@ -0,0 +1,11 @@ +# textdomain: mesecons_button +Use the button to push it.=Benutzen Sie den Knopf, um ihn zu drücken. +Stone Button=Steinknopf +A stone button is a redstone component made out of stone which can be pushed to provide redstone power. When pushed, it powers adjacent redstone components for 1 second. =Ein Steinknopf ist eine Redstonekomponente aus Stein. Er kann gedrückt werden, um ein Redstonesignal zu senden. Im gedrückten Zustand versorgt er benachbarte Redstonekomponenten für 1 Sekunde mit Redstoneenergie. +Oak Button=Eichenknopf +Acacia Button=Akazienknopf +Birch Button=Birkenknopf +Dark Oak Button=Schwarzeichenknopf +Spruce Button=Fichtenknopf +Jungle Button=Dschungelknopf +A wooden button is a redstone component made out of wood which can be pushed to provide redstone power. When pushed, it powers adjacent redstone components for 1.5 seconds. Wooden buttons may also be pushed by arrows.=Ein Holzknopf ist eine Redstonekomponente aus Holz. Er kann gedrückt werden, um ein Redstonesignal zu senden. Im gedrückten Zustand versorgt er benachbarte Redstonekomponenten für 1,5 Sekunden mit Redstoneenergie. Holzknöpfe können auch von Pfeilen gedrückt werden. diff --git a/mods/ITEMS/REDSTONE/mesecons_button/locale/template.txt b/mods/ITEMS/REDSTONE/mesecons_button/locale/template.txt index e69de29b..5ae22b59 100644 --- a/mods/ITEMS/REDSTONE/mesecons_button/locale/template.txt +++ b/mods/ITEMS/REDSTONE/mesecons_button/locale/template.txt @@ -0,0 +1,11 @@ +# textdomain: mesecons_button +Use the button to push it.= +Stone Button= +A stone button is a redstone component made out of stone which can be pushed to provide redstone power. When pushed, it powers adjacent redstone components for 1 second.= +Oak Button= +Acacia Button= +Birch Button= +Dark Oak Button= +Spruce Button= +Jungle Button= +A wooden button is a redstone component made out of wood which can be pushed to provide redstone power. When pushed, it powers adjacent redstone components for 1.5 seconds. Wooden buttons may also be pushed by arrows.= diff --git a/mods/ITEMS/REDSTONE/mesecons_commandblock/init.lua b/mods/ITEMS/REDSTONE/mesecons_commandblock/init.lua index dc143167..281b97b1 100644 --- a/mods/ITEMS/REDSTONE/mesecons_commandblock/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons_commandblock/init.lua @@ -74,9 +74,9 @@ local function check_commands(commands, player_name) local cmddef = minetest.chatcommands[cmd] if not cmddef then -- Invalid chat command - local msg = "Error: The command “"..cmd.."” does not exist; your command block has not been changed. Use the “help” chat command for a list of available commands." + local msg = S("Error: The command “@1” does not exist; your command block has not been changed. Use the “help” chat command for a list of available commands.", cmd) if string.sub(cmd, 1, 1) == "/" then - msg = msg .. " Hint: Try to remove the trailing slash." + msg = S("Error: The command “@1” does not exist; your command block has not been changed. Use the “help” chat command for a list of available commands. Hint: Try to remove the leading slash.", cmd) end return false, minetest.colorize("#FF0000", msg) end @@ -85,7 +85,7 @@ local function check_commands(commands, player_name) for cmd_priv, _ in pairs(cmddef.privs) do if player_privs[cmd_priv] ~= true then - local msg = "Error: You have insufficient privileges to use the command “"..cmd.."” (missing privilege: "..cmd_priv..")! The command block has not been changed." + local msg = S("Error: You have insufficient privileges to use the command “@1” (missing privilege: @2)! The command block has not been changed.", cmd, cmd_priv) return false, minetest.colorize("#FF0000", msg) end end @@ -209,11 +209,11 @@ S("Everyone can activate a command block and look at its commands, but not every S("To view the commands in a command block, use it. To activate the command block, just supply it with redstone power. This will execute the commands once. To execute the commands again, turn the redstone power off and on again.").. "\n\n".. -S("To be able to place a command block and change the commands, you need to be in Creative Mode and must have the “maphack” privilege. A new command block does not have any commands and does nothing. Use the command block (in Creative Mode!) to edit its commands. Read the help entry “Advanced topics > Server Commands” to understand how they work. Each line contains a single command. You enter them like you would in the console, but without the leading slash. The commands will be executed from top to bottom.").."\n\n".. +S("To be able to place a command block and change the commands, you need to be in Creative Mode and must have the “maphack” privilege. A new command block does not have any commands and does nothing. Use the command block (in Creative Mode!) to edit its commands. Read the help entry “Advanced topics > Server Commands” to understand how commands work. Each line contains a single command. You enter them like you would in the console, but without the leading slash. The commands will be executed from top to bottom.").."\n\n".. S("All commands will be executed on behalf of the player who placed the command block, as if the player typed in the commands. This player is said to be the “commander” of the block.").."\n\n".. -S("Command blocks support placeholders, insert one of these placerholders and they will be replaced by a player name:").."\n".. +S("Command blocks support placeholders, insert one of these placeholders and they will be replaced by some other text:").."\n".. S("• “@c”: commander of this command block").."\n".. S("• “@n” or “@p”: nearest player from the command block").."\n".. S("• “@f” farthest player from the command block").."\n".. diff --git a/mods/ITEMS/REDSTONE/mesecons_commandblock/locale/mesecons_commandblock.de.tr b/mods/ITEMS/REDSTONE/mesecons_commandblock/locale/mesecons_commandblock.de.tr new file mode 100644 index 00000000..4517be9c --- /dev/null +++ b/mods/ITEMS/REDSTONE/mesecons_commandblock/locale/mesecons_commandblock.de.tr @@ -0,0 +1,28 @@ +# textdomain: mesecons_commandblock +Error: The command “@1” does not exist; your command block has not been changed. Use the “help” chat command for a list of available commands.=Fehler: Der Befehl „@1“ existiert nicht; Ihr Befehlsblock bleibt unverändert. Benutzen Sie den Chatbefehl „help“ für eine Liste der verfügbaren Befehle. +Error: The command “@1” does not exist; your command block has not been changed. Use the “help” chat command for a list of available commands. Hint: Try to remove the leading slash.=Fehler: Der Befehl „@1“ existiert nicht; Ihr Befehlsblock bleibt unverändert. Benutzen Sie den Chatbefehl „help“ für eine Liste der verfügbaren Befehle. Tipp: Versuchen Sie, den Schrägstrich am Anfang zu entfernen. +Error: You have insufficient privileges to use the command “@1” (missing privilege: @2)! The command block has not been changed.=Fehler: Sie haben nicht die ausreichenden Privilegien, um den Befehl „@1“ zu benutzen (fehlendes Privileg: @2)! Der Befehlsblock bleibt unverändert. +Error: No commander! Block must be replaced.=Fehler: Kein Kommandant! Block muss ersetzt werden. +Commander: @1=Kommandant: @1 +Submit=OK +No commands.=Keine Befehle. +Commands:=Befehle: +Help=Hilfe +Placement denied. You need the “maphack” privilege to place command blocks.=Platzierung fehlgeschlagen. Sie brauchen das „maphack“-Privileg, um Befehlsblöcke platzieren zu können. +Command Block=Befehlsblock +Command blocks are mighty redstone components which are able to alter reality itself. In other words, they cause the server to execute server commands when they are supplied with redstone power.=Befehlsblöcke sind mächtige Redstonekomponenten, die das Gefüge der Realität selbst verändern können. Mit anderen Worten, sie lassen den Server Serverbefehle ausführen, wenn sie mit Redstoneenergie versorgt werden. +Everyone can activate a command block and look at its commands, but not everyone can edit and place them.=Jeder kann einen Befehlsblock aktivieren und sich seine Befehle ansehen, aber nicht jeder kann sie bearbeiten und platzieren. +To view the commands in a command block, use it. To activate the command block, just supply it with redstone power. This will execute the commands once. To execute the commands again, turn the redstone power off and on again.=Um die Befehle in einem Befehlsblock zu betrachten, benutzen Sie ihn. Um ihn zu aktivieren, versorgen Sie ihn einfach mit Redstoneenergie. Das wird die Befehle einmalig ausführen. Um sie erneut auszuführen, schalten Sie die Redstoneenergie aus und wieder ein. +To be able to place a command block and change the commands, you need to be in Creative Mode and must have the “maphack” privilege. A new command block does not have any commands and does nothing. Use the command block (in Creative Mode!) to edit its commands. Read the help entry “Advanced topics > Server Commands” to understand how commands work. Each line contains a single command. You enter them like you would in the console, but without the leading slash. The commands will be executed from top to bottom.=Um einen Befehlsblock platzieren und die Befehle ändern zu können, müssen Sie im Kreativmodus sein und das „maphack“-Privileg habe. Ein neuer Befehlsblock hat keine Befehle und tut gar nichts. Benutzen Sie den Befehlsblock (im Kreativmodus!), um seine Befehle zu bearbeiten. Lesen Sie den Hilfeeintrag „Fortgeschrittenes > Serverbefehle“, um zu verstehen, wie Befehle funktionieren. Jede Zeile enthält einen einzigen Befehl. Sie geben Sie wie in der Konsole ein, aber ohne den Schrägstrich am Anfang. +All commands will be executed on behalf of the player who placed the command block, as if the player typed in the commands. This player is said to be the “commander” of the block.=Alle Befehle werden im Namen des Spielers, der den Befehlsblock platziert hat, ausgeführt, als ob der Spieler die Befehle eingegeben hätte. Diesen Spieler nennen wir den „Kommandanten“ des Blocks. +Command blocks support placeholders, insert one of these placeholders and they will be replaced by some other text:=Befehlsblöcke unterstützen Platzhalter, geben sie einen dieser Platzhalter ein und sie werden durch einen anderen Text ersetzt: +• “@c”: commander of this command block=• „@c“: Befehlshaber dieses Befehlsblocks +• “@n” or “@p”: nearest player from the command block=• „@n“ oder „@p“: Nächster Spieler am Befehlsblock +• “@f” farthest player from the command block=• Der vom Befehelsblock am weitesten entfernte Spieler +• “@r”: random player currently in the world=• „@r“: Zufälliger Spieler in der Welt +• “@@”: literal “@” sign=• Nur das „@“-Zeichen +Example 1:@n time 12000@nSets the game clock to 12:00=1. Beispiel:@n time 12000@nSetzt die Spieluhr auf 12:00 Uhr +Example 2:@n give @@n mcl_core:apple 5@n→ Gives the nearest player 5 apples=2. Beispiel:@n give @@n mcl_core:apple 5@n→ Gibt dem nächsten Spieler 5 Äpfel +Access denied. You need the “maphack” privilege to edit command blocks.=Zugriff verweigert. Sie brauchen das „maphack“-Privileg, um Befehlsblöcke zu bearbeiten. +Editing the command block has failed! You can only change the command block in Creative Mode!=Bearbeitung des Befehlsblocks fehlgeschlagen! Sie können den Befehlsblock nur im Kreativmodus ändern! +Editing the command block has failed! The command block is gone.=Bearbeiten des Befehlsblocks fehlgeschlagen! Der Befehlsblock ist verschwunden. diff --git a/mods/ITEMS/REDSTONE/mesecons_commandblock/locale/template.txt b/mods/ITEMS/REDSTONE/mesecons_commandblock/locale/template.txt index 27b496b6..c20f5f08 100644 --- a/mods/ITEMS/REDSTONE/mesecons_commandblock/locale/template.txt +++ b/mods/ITEMS/REDSTONE/mesecons_commandblock/locale/template.txt @@ -1,14 +1,28 @@ # textdomain: mesecons_commandblock +Error: The command “@1” does not exist; your command block has not been changed. Use the “help” chat command for a list of available commands.= +Error: The command “@1” does not exist; your command block has not been changed. Use the “help” chat command for a list of available commands. Hint: Try to remove the leading slash.= +Error: You have insufficient privileges to use the command “@1” (missing privilege: @2)! The command block has not been changed.= +Error: No commander! Block must be replaced.= +Commander: @1= +Submit= +No commands.= +Commands:= +Help= +Placement denied. You need the “maphack” privilege to place command blocks.= Command Block= Command blocks are mighty redstone components which are able to alter reality itself. In other words, they cause the server to execute server commands when they are supplied with redstone power.= -To use an already existing command block, just supply it with redstone power and see what happens. This will execute the commands once. To execute the commands again, turn the redstone power off and on again.= -To place a command block and change the commands, you need to be in Creative Mode and must have the “maphack” privilege. A new command block does not have any commands and does nothing. Rightclick the command block (in Creative Mode!) to edit its commands. Read the help entry “Advanced topics > Server Commands” to understand how they work. Each line contains a single command. You enter them like you would in the console, but without the leading slash. The commands will be executed from top to bottom.= +Everyone can activate a command block and look at its commands, but not everyone can edit and place them.= +To view the commands in a command block, use it. To activate the command block, just supply it with redstone power. This will execute the commands once. To execute the commands again, turn the redstone power off and on again.= +To be able to place a command block and change the commands, you need to be in Creative Mode and must have the “maphack” privilege. A new command block does not have any commands and does nothing. Use the command block (in Creative Mode!) to edit its commands. Read the help entry “Advanced topics > Server Commands” to understand how commands work. Each line contains a single command. You enter them like you would in the console, but without the leading slash. The commands will be executed from top to bottom.= All commands will be executed on behalf of the player who placed the command block, as if the player typed in the commands. This player is said to be the “commander” of the block.= -Command blocks support placeholders, insert one of these placerholders and they will be replaced by a player name:= +Command blocks support placeholders, insert one of these placeholders and they will be replaced by some other text:= • “@c”: commander of this command block= • “@n” or “@p”: nearest player from the command block= • “@f” farthest player from the command block= • “@r”: random player currently in the world= • “@@”: literal “@” sign= Example 1:@n time 12000@nSets the game clock to 12:00= -Example 2:@n give @n mcl_core:apple 5@n→ Gives the nearest player 5 apples= +Example 2:@n give @@n mcl_core:apple 5@n→ Gives the nearest player 5 apples= +Access denied. You need the “maphack” privilege to edit command blocks.= +Editing the command block has failed! You can only change the command block in Creative Mode!= +Editing the command block has failed! The command block is gone.= diff --git a/mods/ITEMS/REDSTONE/mesecons_delayer/init.lua b/mods/ITEMS/REDSTONE/mesecons_delayer/init.lua index 504314c1..01bd1901 100644 --- a/mods/ITEMS/REDSTONE/mesecons_delayer/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons_delayer/init.lua @@ -185,7 +185,7 @@ local help, longdesc, usagehelp, icon, on_construct if i == 1 then help = true longdesc = S("Redstone repeaters are versatile redstone components with multiple purposes: 1. They only allow signals to travel in one direction. 2. They delay the signal. 3. Optionally, they can lock their output in one state.") - usagehelp = S("To power a redstone repeater, send a signal in “arrow” direction (the input). The signal goes out on the opposite side (the output) with a delay. To change the delay, rightclick the redstone repeater. The delay is between 0.1 and 0.4 seconds long and can be changed in steps of 0.1 seconds. It is indicated by the position of the moving redstone torch.").."\n".. + usagehelp = S("To power a redstone repeater, send a signal in “arrow” direction (the input). The signal goes out on the opposite side (the output) with a delay. To change the delay, use the redstone repeater. The delay is between 0.1 and 0.4 seconds long and can be changed in steps of 0.1 seconds. It is indicated by the position of the moving redstone torch.").."\n".. S("To lock a repeater, send a signal from an adjacent repeater into one of its sides. While locked, the moving redstone torch disappears, the output doesn't change and the input signal is ignored.") icon = "mesecons_delayer_item.png" diff --git a/mods/ITEMS/REDSTONE/mesecons_delayer/locale/mesecons_delayer.de.tr b/mods/ITEMS/REDSTONE/mesecons_delayer/locale/mesecons_delayer.de.tr new file mode 100644 index 00000000..1f031c64 --- /dev/null +++ b/mods/ITEMS/REDSTONE/mesecons_delayer/locale/mesecons_delayer.de.tr @@ -0,0 +1,9 @@ +# textdomain: mesecons_delayer +Redstone repeaters are versatile redstone components with multiple purposes: 1. They only allow signals to travel in one direction. 2. They delay the signal. 3. Optionally, they can lock their output in one state.=Redstoneverstärker sind vielseitige Komponenten mit den folgenden Verwendungszwecken: 1.: Sie lassen Signale nur in eine Richtung durch. 2.: Sie verzögern das Signal. 3.: Sie können optional ihr Ausgangssignal sperren +To power a redstone repeater, send a signal in “arrow” direction (the input). The signal goes out on the opposite side (the output) with a delay. To change the delay, user the redstone repeater. The delay is between 0.1 and 0.4 seconds long and can be changed in steps of 0.1 seconds. It is indicated by the position of the moving redstone torch.=Um einen Redstoneverstärker zu versorgen, senden Sie ein Signal in „Pfeilrichtung“ (dem Eingang). Das Signal geht aus der gegenüberliegenden Seite (dem Ausgang) mit einer Verzögerung hinaus. Um die Verzögerung zu ändern, benutzen Sie den Redstoneverstärker. Die Verzögerung ist zwischen 0,1 bis 0,4 Sekunden lang und kann in Schritten von 0,1 Sekunden geändert werden. Das wird mit der Position der verschiebbaren Redstonefackel angezeigt. +To lock a repeater, send a signal from an adjacent repeater into one of its sides. While locked, the moving redstone torch disappears, the output doesn't change and the input signal is ignored.=Um einen Verstärker zu sperren, senden Sie ein Signal eines benachbarten Verstärkers in eines der Seiten. Im gesperrten Zustand verschwindet die verschiebbare Redstonefackel, die Ausgabe ändert sich nicht mehr und der Eingang wird ignoriert. +Redstone Repeater=Redstoneverstärker +Redstone Repeater (Powered)=Redstoneverstärker (bestromt) +Redstone Repeater (Locked)=Redstoneverstärker (gesperrt) +Redstone Repeater (Locked, Powered)=Redstoneverstärker (gesperrt, bestromt) + diff --git a/mods/ITEMS/REDSTONE/mesecons_delayer/locale/template.txt b/mods/ITEMS/REDSTONE/mesecons_delayer/locale/template.txt index daad51ad..596a5b38 100644 --- a/mods/ITEMS/REDSTONE/mesecons_delayer/locale/template.txt +++ b/mods/ITEMS/REDSTONE/mesecons_delayer/locale/template.txt @@ -1,6 +1,6 @@ # textdomain: mesecons_delayer Redstone repeaters are versatile redstone components with multiple purposes: 1. They only allow signals to travel in one direction. 2. They delay the signal. 3. Optionally, they can lock their output in one state.= -To power a redstone repeater, send a signal in “arrow” direction (the input). The signal goes out on the opposite side (the output) with a delay. To change the delay, rightclick the redstone repeater. The delay is between 0.1 and 0.4 seconds long and can be changed in steps of 0.1 seconds. It is indicated by the position of the moving redstone torch.= +To power a redstone repeater, send a signal in “arrow” direction (the input). The signal goes out on the opposite side (the output) with a delay. To change the delay, user the redstone repeater. The delay is between 0.1 and 0.4 seconds long and can be changed in steps of 0.1 seconds. It is indicated by the position of the moving redstone torch.= To lock a repeater, send a signal from an adjacent repeater into one of its sides. While locked, the moving redstone torch disappears, the output doesn't change and the input signal is ignored.= Redstone Repeater= Redstone Repeater (Powered)= diff --git a/mods/ITEMS/REDSTONE/mesecons_lightstone/init.lua b/mods/ITEMS/REDSTONE/mesecons_lightstone/init.lua index 14a72acc..97ef544a 100644 --- a/mods/ITEMS/REDSTONE/mesecons_lightstone/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons_lightstone/init.lua @@ -1,9 +1,11 @@ +local S = minetest.get_translator("mesecons_lightstone") + minetest.register_node("mesecons_lightstone:lightstone_off", { tiles = {"jeija_lightstone_gray_off.png"}, groups = {handy=1, mesecon_effector_off = 1, mesecon = 2}, is_ground_content = false, - description= "Redstone Lamp", - _doc_items_longdesc = "Redstone lamps are simple redstone components which glow brightly (light level 14) when they receive redstone power.", + description= S("Redstone Lamp"), + _doc_items_longdesc = S("Redstone lamps are simple redstone components which glow brightly (light level 14) when they receive redstone power."), sounds = mcl_sounds.node_sound_glass_defaults(), mesecons = {effector = { action_on = function (pos, node) diff --git a/mods/ITEMS/REDSTONE/mesecons_lightstone/locale/mesecons_lightstone.de.tr b/mods/ITEMS/REDSTONE/mesecons_lightstone/locale/mesecons_lightstone.de.tr new file mode 100644 index 00000000..dd39b80d --- /dev/null +++ b/mods/ITEMS/REDSTONE/mesecons_lightstone/locale/mesecons_lightstone.de.tr @@ -0,0 +1,3 @@ +# textdomain: mesecons_lightstone +Redstone Lamp=Redstonelampe +Redstone lamps are simple redstone components which glow brightly (light level 14) when they receive redstone power.=Redstonelampen sind einfache Redstonekomponenten, die hell aufleuchten (Helligkeitspegel von 14), wenn sie Redstoneenergie erhalten. diff --git a/mods/ITEMS/REDSTONE/mesecons_lightstone/locale/template.txt b/mods/ITEMS/REDSTONE/mesecons_lightstone/locale/template.txt index e69de29b..3261d768 100644 --- a/mods/ITEMS/REDSTONE/mesecons_lightstone/locale/template.txt +++ b/mods/ITEMS/REDSTONE/mesecons_lightstone/locale/template.txt @@ -0,0 +1,3 @@ +# textdomain: mesecons_lightstone +Redstone Lamp= +Redstone lamps are simple redstone components which glow brightly (light level 14) when they receive redstone power.= diff --git a/mods/ITEMS/REDSTONE/mesecons_noteblock/locale/mesecons_noteblock.de.tr b/mods/ITEMS/REDSTONE/mesecons_noteblock/locale/mesecons_noteblock.de.tr new file mode 100644 index 00000000..c107bd5d --- /dev/null +++ b/mods/ITEMS/REDSTONE/mesecons_noteblock/locale/mesecons_noteblock.de.tr @@ -0,0 +1,10 @@ +# textdomain: mesecons_noteblock +Note Block=Notenblock +A note block is a musical block which plays one of many musical notes and different intruments when it is punched or supplied with redstone power.=Ein Notenblock ist ein musikalischer Block, der eine von vielen Noten von verschiedenen Instrumenten spielt, wenn er geschlagen oder mit Redstoneenergie versorgt wird. +Use the note block to choose the next musical note (there are 24 half notes, or 2 octaves). The intrument played depends on the material of the block below the note block:=Benutzen Sie den Notenblock, um die nächste Note zu wählen (es gibt 24 halbe Noten bzw. 2 Oktaven). Das gespielte Intrument hängt vom Material des Blocks unter dem Notenblock ab: +• Glass: Sticks=• Glas: Stöcke +• Wood: Bass guitar=• Holz: Bassgitarre +• Stone: Bass drum=• Stein: Basstrommel +• Sand or gravel: Snare drum=• Sand oder Kies: Kleine Trommel +• Anything else: Piano=• Alles andere: Klavier +The note block will only play a note when it is below air, otherwise, it stays silent.=Der Notenblock wird nur eine Note spielen, wenn er sich unter Luft befindet, sonst bleibt er stumm. diff --git a/mods/ITEMS/REDSTONE/mesecons_noteblock/locale/template.txt b/mods/ITEMS/REDSTONE/mesecons_noteblock/locale/template.txt index ea26974b..95803f66 100644 --- a/mods/ITEMS/REDSTONE/mesecons_noteblock/locale/template.txt +++ b/mods/ITEMS/REDSTONE/mesecons_noteblock/locale/template.txt @@ -1,7 +1,7 @@ # textdomain: mesecons_noteblock Note Block= A note block is a musical block which plays one of many musical notes and different intruments when it is punched or supplied with redstone power.= -Rightclick the note block to choose the next musical note (there are 24 half notes, or 2 octaves). The intrument played depends on the material of the block below the note block:= +Use the note block to choose the next musical note (there are 24 half notes, or 2 octaves). The intrument played depends on the material of the block below the note block:= • Glass: Sticks= • Wood: Bass guitar= • Stone: Bass drum= diff --git a/mods/ITEMS/REDSTONE/mesecons_pistons/init.lua b/mods/ITEMS/REDSTONE/mesecons_pistons/init.lua index 9c818165..65b1e9be 100644 --- a/mods/ITEMS/REDSTONE/mesecons_pistons/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons_pistons/init.lua @@ -173,7 +173,7 @@ local pistonspec_normal = { piston_up = "mesecons_pistons:piston_up_normal_off", } -local usagehelp_piston = S("This block can have one of 6 possible orientations. On placement, the pusher will face you.") +local usagehelp_piston = S("This block can have one of 6 possible orientations.") local on_rotate if minetest.get_modpath("screwdriver") then diff --git a/mods/ITEMS/REDSTONE/mesecons_pistons/locale/mesecons_pistons.de.tr b/mods/ITEMS/REDSTONE/mesecons_pistons/locale/mesecons_pistons.de.tr new file mode 100644 index 00000000..cebf8461 --- /dev/null +++ b/mods/ITEMS/REDSTONE/mesecons_pistons/locale/mesecons_pistons.de.tr @@ -0,0 +1,6 @@ +# textdomain: mesecons_pistons +This block can have one of 6 possible orientations.=Dieser Block kann eine von 6 möglichen Richtungen annehmen. +Piston=Kolben +A piston is a redstone component with a pusher which pushes the block or blocks in front of it when it is supplied with redstone power. Not all blocks can be pushed, however.=Ein Kolben ist eine Redstonekomponente mit einem Schieber den Block oder die Blöcke vor ihm schieben wird, wenn er mit Redstoneenergie versorgt wird. Allerdings können nicht alle Blöcke können geschoben werden. +Sticky Piston=Klebriger Kolben +A sticky piston is a redstone component with a sticky pusher which can be extended and retracted. It extends when it is supplied with redstone power. When the pusher extends, it pushes the block or blocks in front of it. When it retracts, it pulls back the single block in front of it. Note that not all blocks can be pushed or pulled.=Ein klebriger Kolben ist eine Redstonekomponente mit einem klebrigen Schieber, der ein- und ausgefahren werden kann. Er fährt aus, wenn er mit Redstoneenergie versorgt wird. Wenn der Schieber ausgefahren wird, schiebt er den Block oder die Blöcke vor ihm. Wird er eingefahren, zieht er den Block vor ihm zu sich. Nicht alle Blöcke können geschoben oder gezogen werden. diff --git a/mods/ITEMS/REDSTONE/mesecons_pistons/locale/template.txt b/mods/ITEMS/REDSTONE/mesecons_pistons/locale/template.txt index 93a4de14..2cdd6512 100644 --- a/mods/ITEMS/REDSTONE/mesecons_pistons/locale/template.txt +++ b/mods/ITEMS/REDSTONE/mesecons_pistons/locale/template.txt @@ -1,5 +1,5 @@ # textdomain: mesecons_pistons -This block can have one of 6 possible orientations. On placement, the pusher will face you.= +This block can have one of 6 possible orientations.= Piston= A piston is a redstone component with a pusher which pushes the block or blocks in front of it when it is supplied with redstone power. Not all blocks can be pushed, however.= Sticky Piston= diff --git a/mods/ITEMS/REDSTONE/mesecons_pressureplates/locale/mesecons_pressureplates.de.tr b/mods/ITEMS/REDSTONE/mesecons_pressureplates/locale/mesecons_pressureplates.de.tr new file mode 100644 index 00000000..678e061c --- /dev/null +++ b/mods/ITEMS/REDSTONE/mesecons_pressureplates/locale/mesecons_pressureplates.de.tr @@ -0,0 +1,12 @@ +# textdomain: mesecons_pressureplates +A pressure plate is a redstone component which supplies its surrounding blocks with redstone power while someone or something rests on top of it.=Eine Druckplatte ist eine Redstonekomponente, die ihre benachbarten Blöcke mit Redstoneenergie versorgt, wenn sich jemand oder etwas auf ihr befindet. +Oak Pressure Plate=Eichendruckplatte +Acacia Pressure Plate=Akaziendruckplatte +Birch Pressure Plate=Birkendruckplatte +Dark Oak Pressure Plate=Schwarzeichendruckplatte +Spruce Pressure Plate=Fichtendruckplatte +Jungle Pressure Plate=Dschungeldruckplatte +A wooden pressure plate is a redstone component which supplies its surrounding blocks with redstone power while any movable object (including dropped items, players and mobs) rests on top of it.=Eine Holzdruckplatte ist eine Redstonekomponente, die ihre benachbarten Blöcke mit Redstoneenergie versorgt, solange sich ein beliebiges bewegliches Objekt (wie Gegenstände, Spieler und Mobs) auf ihm befindet. +Stone Pressure Plate=Steindruckplatte +A stone pressure plate is a redstone component which supplies its surrounding blocks with redstone power while a player or mob stands on top of it. It is not triggered by anything else.=Eine Steindruckplatte ist eine Redstonekomponente, die ihre benachbarten Blöcke mit Redstoneenergie versorgt, solange sich ein Spieler oder Mob auf ihm befindet. Sie wird von nichts anderem ausgelöst. + diff --git a/mods/ITEMS/REDSTONE/mesecons_solarpanel/init.lua b/mods/ITEMS/REDSTONE/mesecons_solarpanel/init.lua index d71f0cdd..fa29e05c 100644 --- a/mods/ITEMS/REDSTONE/mesecons_solarpanel/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons_solarpanel/init.lua @@ -60,7 +60,7 @@ minetest.register_node("mesecons_solarpanel:solar_panel_off", { groups = {handy=1,axey=1, material_wood=1}, description=S("Daylight Sensor"), _doc_items_longdesc = S("Daylight sensors are redstone components which provide redstone power when they are in sunlight and no power otherwise. They can also be inverted."), - _doc_items_usagehelp = "Rightclick the daylight sensor to turn it into an inverted daylight sensor, which supplies redstone energy when it is in moonlight.", + _doc_items_usagehelp = S("Use the daylight sensor to turn it into an inverted daylight sensor, which supplies redstone energy when it is in moonlight."), sounds = mcl_sounds.node_sound_glass_defaults(), mesecons = {receptor = { state = mesecon.state.off, @@ -178,7 +178,7 @@ minetest.register_node("mesecons_solarpanel:solar_panel_inverted_off", { groups = {handy=1,axey=1, not_in_creative_inventory=1, material_wood=1}, description=S("Inverted Daylight Sensor"), _doc_items_longdesc = S("An inverted daylight sensor is a variant of the daylight sensor. It is a redstone component which provides redstone power when it in moonlight and no power otherwise. It can turned back into an ordinary daylight sensor."), - _doc_items_usagehelp = "Rightclick the daylight sensor to turn it into a daylight sensor.", + _doc_items_usagehelp = S("Use the inverted daylight sensor to turn it into a daylight sensor."), sounds = mcl_sounds.node_sound_glass_defaults(), mesecons = {receptor = { state = mesecon.state.off, diff --git a/mods/ITEMS/REDSTONE/mesecons_solarpanel/locale/mesecons_solarpanel.de.tr b/mods/ITEMS/REDSTONE/mesecons_solarpanel/locale/mesecons_solarpanel.de.tr new file mode 100644 index 00000000..8b1a342c --- /dev/null +++ b/mods/ITEMS/REDSTONE/mesecons_solarpanel/locale/mesecons_solarpanel.de.tr @@ -0,0 +1,7 @@ +# textdomain: mesecons_solarpanel +Daylight Sensor=Tageslichtsensor +Daylight sensors are redstone components which provide redstone power when they are in sunlight and no power otherwise. They can also be inverted.=Tageslichtsensoren sind Redstonekomponenten, die Redstoneenergie liefern, wenn sie im Sonnenlicht stehen, sonst nicht. +Use the daylight sensor to turn it into an inverted daylight sensor, which supplies redstone energy when it is in moonlight.=Benutzen Sie den Tageslichtsensor, um ihn zu einen invertierten Tageslichtsensor umzuwandeln, der Redstoneenergie liefert, wenn er sich im Mondlicht befindet. +Inverted Daylight Sensor=Invertierter Tageslichtsensor +An inverted daylight sensor is a variant of the daylight sensor. It is a redstone component which provides redstone power when it in moonlight and no power otherwise. It can turned back into an ordinary daylight sensor.=Ein invertierter Tageslichtsensor ist eine Variante des Tageslichtsensors. Er ist eine Redstonekomponente, die Redstoneenergie liefert, wenn er sich im Mondlicht befindet, sonst nicht. Er kann zurück zu einem gewöhnlichen Tageslichtsensor umgewandelt werden. +Use the inverted daylight sensor to turn it into a daylight sensor.=Benutzen Sie den Tageslichtsensor, um ihn zu einem Tageslichtsensor umzuwandeln. diff --git a/mods/ITEMS/REDSTONE/mesecons_solarpanel/locale/template.txt b/mods/ITEMS/REDSTONE/mesecons_solarpanel/locale/template.txt index 15de4f82..4ad3b24c 100644 --- a/mods/ITEMS/REDSTONE/mesecons_solarpanel/locale/template.txt +++ b/mods/ITEMS/REDSTONE/mesecons_solarpanel/locale/template.txt @@ -1,5 +1,7 @@ # textdomain: mesecons_solarpanel Daylight Sensor= Daylight sensors are redstone components which provide redstone power when they are in sunlight and no power otherwise. They can also be inverted.= +Use the daylight sensor to turn it into an inverted daylight sensor, which supplies redstone energy when it is in moonlight.= Inverted Daylight Sensor= An inverted daylight sensor is a variant of the daylight sensor. It is a redstone component which provides redstone power when it in moonlight and no power otherwise. It can turned back into an ordinary daylight sensor.= +Use the inverted daylight sensor to turn it into a daylight sensor.= diff --git a/mods/ITEMS/REDSTONE/mesecons_torch/init.lua b/mods/ITEMS/REDSTONE/mesecons_torch/init.lua index 17b45e20..dabc292e 100644 --- a/mods/ITEMS/REDSTONE/mesecons_torch/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons_torch/init.lua @@ -168,11 +168,7 @@ mcl_torches.register_torch("mesecon_torch_overheated", "Redstone Torch (overheat mcl_torches.register_torch("mesecon_torch_on", S("Redstone Torch"), S("A redstone torch is a redstone component which can be used to invert a redstone signal. It supplies its surrounding blocks with redstone power, except for the block it is attached to. A redstone torch is normally lit, but it can also be turned off by powering the block it is attached to. While unlit, a redstone torch does not power anything."), - S("Redstone torches can generally be placed at the side and on the top of full solid opaque blocks. The following exceptions apply:").."\n".. -S("• Glass, fence, wall, hopper: Can only be placed on top").. -S("• Upside-down slab/stair: Can only be placed on top").. -S("• Soul sand, mob spawner: Placement possible").. -S("• Glowstone and pistons: No placement possible"), + S("Redstone torches can be placed at the side and on the top of full solid opaque blocks."), "jeija_torches_on.png", "mcl_torches_torch_floor.obj", "mcl_torches_torch_wall.obj", {"jeija_torches_on.png"}, diff --git a/mods/ITEMS/REDSTONE/mesecons_torch/locale/mesecons_torch.de.tr b/mods/ITEMS/REDSTONE/mesecons_torch/locale/mesecons_torch.de.tr new file mode 100644 index 00000000..2166ccdd --- /dev/null +++ b/mods/ITEMS/REDSTONE/mesecons_torch/locale/mesecons_torch.de.tr @@ -0,0 +1,6 @@ +# textdomain: mesecons_torch +Redstone Torch=Redstonefackel +A redstone torch is a redstone component which can be used to invert a redstone signal. It supplies its surrounding blocks with redstone power, except for the block it is attached to. A redstone torch is normally lit, but it can also be turned off by powering the block it is attached to. While unlit, a redstone torch does not power anything.=Eine Redstonefackel ist eine Redstonekomponente, die benutzt werden kann, um ein Redstonesignal zu invertieren. Sie versorgt die benachbarten Blöcke mit Redstoneenergie, ausgenommen den Block, an dem sie befestigt wurde. Eine Redstonefackel leuchtet normalerweise, aber sie kann auch ausgeschaltet werden, indem der Block, an dem sie befestigt ist, bestromt wird. Wenn sie aus ist, wird sie nichts mit Redstoneenergie versorgen. +Redstone torches can be placed at the side and on the top of full solid opaque blocks.=Redstonefackeln können an der Seite und auf der Oberseite der meisten undurchsichtigen ganzen Blöcke platziert werden. +Block of Redstone=Redstoneblock +A block of redstone permanently supplies redstone power to its surrounding blocks.=Ein Redstoneblock versorgt seine benachbarten Blöcke beständig mit Redstoneenergie. diff --git a/mods/ITEMS/REDSTONE/mesecons_torch/locale/template.txt b/mods/ITEMS/REDSTONE/mesecons_torch/locale/template.txt index b3e5b7be..fb5ba71f 100644 --- a/mods/ITEMS/REDSTONE/mesecons_torch/locale/template.txt +++ b/mods/ITEMS/REDSTONE/mesecons_torch/locale/template.txt @@ -1,10 +1,6 @@ # textdomain: mesecons_torch Redstone Torch= A redstone torch is a redstone component which can be used to invert a redstone signal. It supplies its surrounding blocks with redstone power, except for the block it is attached to. A redstone torch is normally lit, but it can also be turned off by powering the block it is attached to. While unlit, a redstone torch does not power anything.= -Redstone torches can generally be placed at the side and on the top of full solid opaque blocks. The following exceptions apply:= -• Glass, fence, wall, hopper: Can only be placed on top= -• Upside-down slab/stair: Can only be placed on top= -• Soul sand, mob spawner: Placement possible= -• Glowstone and pistons: No placement possible= +Redstone torches can be placed at the side and on the top of full solid opaque blocks.= Block of Redstone= A block of redstone permanently supplies redstone power to its surrounding blocks.= diff --git a/mods/ITEMS/REDSTONE/mesecons_walllever/init.lua b/mods/ITEMS/REDSTONE/mesecons_walllever/init.lua index 5f8dbd49..3c04f72a 100644 --- a/mods/ITEMS/REDSTONE/mesecons_walllever/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons_walllever/init.lua @@ -24,7 +24,7 @@ minetest.register_node("mesecons_walllever:wall_lever_off", { is_ground_content = false, description=S("Lever"), _doc_items_longdesc = S("A lever is a redstone component which can be flipped on and off. It supplies redstone power to adjacent blocks while it is in the “on” state."), - _doc_items_usagehelp = "Right-click the lever to flip it on or off.", + _doc_items_usagehelp = S("Use the lever to flip it on or off."), on_rightclick = function (pos, node) minetest.swap_node(pos, {name="mesecons_walllever:wall_lever_on", param2=node.param2}) mesecon.receptor_on(pos, lever_get_output_rules(node)) diff --git a/mods/ITEMS/REDSTONE/mesecons_walllever/locale/mesecons_walllever.de.tr b/mods/ITEMS/REDSTONE/mesecons_walllever/locale/mesecons_walllever.de.tr new file mode 100644 index 00000000..053f8191 --- /dev/null +++ b/mods/ITEMS/REDSTONE/mesecons_walllever/locale/mesecons_walllever.de.tr @@ -0,0 +1,4 @@ +# textdomain: mesecons_wallever +Lever=Hebel +A lever is a redstone component which can be flipped on and off. It supplies redstone power to adjacent blocks while it is in the “on” state.=Ein Hebel ist eine Redstonekomponente, die ein- und ausgeschaltet werden kann. Er versorgt seine benachbarten Blöcke mit Redstoneenergie, solange er sich im eingeschalteten Zustand befindet. +Use the lever to flip it on or off.=Benutzen Sie den Hebel, um ihn ein- oder auszuschalten. diff --git a/mods/ITEMS/REDSTONE/mesecons_walllever/locale/template.txt b/mods/ITEMS/REDSTONE/mesecons_walllever/locale/template.txt index afdabf1b..59988e90 100644 --- a/mods/ITEMS/REDSTONE/mesecons_walllever/locale/template.txt +++ b/mods/ITEMS/REDSTONE/mesecons_walllever/locale/template.txt @@ -1,4 +1,4 @@ # textdomain: mesecons_wallever Lever= A lever is a redstone component which can be flipped on and off. It supplies redstone power to adjacent blocks while it is in the “on” state.= -Lever= +Use the lever to flip it on or off.= diff --git a/mods/ITEMS/REDSTONE/mesecons_wires/init.lua b/mods/ITEMS/REDSTONE/mesecons_wires/init.lua index 49f048a1..106f3fb6 100644 --- a/mods/ITEMS/REDSTONE/mesecons_wires/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons_wires/init.lua @@ -228,7 +228,7 @@ local function register_wires() longdesc = S("Redstone is a versatile conductive mineral which transmits redstone power. It can be placed on the ground as a trail.").."\n".. S("A redstone trail can be in two states: Powered or not powered. A powered redstone trail will power (and thus activate) adjacent redstone components.").."\n".. S("Redstone power can be received from various redstone components, such as a block of redstone or a button. Redstone power is used to activate numerous mechanisms, such as redstone lamps or pistons.") - usagehelp = S("Place redstone on the ground to build a redstone trail. The trails will connect to each other automatically and it can also go over hills. An easy way to power a redstone trail is by placing a redstone torch.").."\n\n".. + usagehelp = S("Place redstone on the ground to build a redstone trail. The trails will connect to each other automatically and it can also go over hills.").."\n\n".. S("Read the help entries on the other redstone components to learn how redstone components interact.") img = "redstone_redstone_dust.png" diff --git a/mods/ITEMS/REDSTONE/mesecons_wires/locale/mesecons_wires.de.tr b/mods/ITEMS/REDSTONE/mesecons_wires/locale/mesecons_wires.de.tr new file mode 100644 index 00000000..0fa27836 --- /dev/null +++ b/mods/ITEMS/REDSTONE/mesecons_wires/locale/mesecons_wires.de.tr @@ -0,0 +1,10 @@ +# textdomain: mesecons_wires +Redstone is a versatile conductive mineral which transmits redstone power. It can be placed on the ground as a trail.=Redstone ist ein vielseitiges leitendes Mineral, der Redstoneenergie überträgt. Es kann auf dem Boden in Form einer Spur platziert werden. +A redstone trail can be in two states: Powered or not powered. A powered redstone trail will power (and thus activate) adjacent redstone components.=Eine Redstonespur kann einen von zwei Zuständen annehmen: Bestromt und unbestromt. Eine bestromte Redstonespur wird benachbarte Redstonekomponenten bestromen (und somit aktivieren). +Redstone power can be received from various redstone components, such as a block of redstone or a button. Redstone power is used to activate numerous mechanisms, such as redstone lamps or pistons.=Redstoneenergie kann von verschiedenen Redstonekomponenten erhalten werden, wie zum Beispiel einem Redstoneblock oder einem Knopf. Redstoneenergie wird benutzt, um verschiedene Mechanismen zu aktivieren, wie Redstonelampen oder Kolben. +Place redstone on the ground to build a redstone trail. The trails will connect to each other automatically and it can also go over hills.=Platzieren Sie Redstone auf dem Boden, um eine Redstonespur auszulegen. Die Spuren werden sich automatisch miteinander verbinden und sie können auch über Hügel gehen. +Read the help entries on the other redstone components to learn how redstone components interact.=Lesen Sie die Hilfeeinträge über andere Redstonekomponenten, um zu erfahren, wie sie interagieren. +Redstone=Redstone +Powered Redstone Spot (@1)=Bestromter Redstoneklecks (@1) +Redstone Trail (@1)=Redstonespur (@1) +Powered Redstone Trail (@1)=Bestromte Redstonespur (@1) From cf9e440019728520fe4daa9ebdb0efffc98584a3 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sat, 16 Mar 2019 02:38:36 +0100 Subject: [PATCH 172/737] Translation: Add support for a few missing items --- mods/ENTITIES/mcl_mobs/api.lua | 4 +- mods/ENTITIES/mcl_mobs/crafts.lua | 4 +- mods/ENTITIES/mcl_mobs/intllib.lua | 45 ------ mods/ENTITIES/mcl_mobs/locale/de_DE.po | 131 ----------------- mods/ENTITIES/mcl_mobs/locale/es.po | 128 ----------------- mods/ENTITIES/mcl_mobs/locale/fr.po | 129 ----------------- mods/ENTITIES/mcl_mobs/locale/it.po | 131 ----------------- mods/ENTITIES/mcl_mobs/locale/mcl_mobs.de.tr | 3 + mods/ENTITIES/mcl_mobs/locale/ms.po | 131 ----------------- mods/ENTITIES/mcl_mobs/locale/pt.po | 133 ------------------ mods/ENTITIES/mcl_mobs/locale/ru.po | 129 ----------------- mods/ENTITIES/mcl_mobs/locale/template.pot | 128 ----------------- mods/ENTITIES/mcl_mobs/locale/template.txt | 3 + mods/ENTITIES/mcl_mobs/locale/tr.po | 133 ------------------ mods/ITEMS/mcl_dye/locale/mcl_dye.de.tr | 2 +- .../mcl_sponges/locale/mcl_sponges.de.tr | 8 ++ mods/ITEMS/mcl_sponges/locale/template.txt | 14 +- mods/ITEMS/mclx_stairs/init.lua | 39 +++-- .../mclx_stairs/locale/mclx_stairs.de.tr | 48 +++++++ mods/ITEMS/mclx_stairs/locale/template.txt | 48 +++++++ mods/ITEMS/xpanes/locale/xpanes.de.tr | 32 ++--- 21 files changed, 156 insertions(+), 1267 deletions(-) delete mode 100644 mods/ENTITIES/mcl_mobs/intllib.lua delete mode 100644 mods/ENTITIES/mcl_mobs/locale/de_DE.po delete mode 100644 mods/ENTITIES/mcl_mobs/locale/es.po delete mode 100644 mods/ENTITIES/mcl_mobs/locale/fr.po delete mode 100644 mods/ENTITIES/mcl_mobs/locale/it.po delete mode 100644 mods/ENTITIES/mcl_mobs/locale/ms.po delete mode 100644 mods/ENTITIES/mcl_mobs/locale/pt.po delete mode 100644 mods/ENTITIES/mcl_mobs/locale/ru.po delete mode 100644 mods/ENTITIES/mcl_mobs/locale/template.pot delete mode 100644 mods/ENTITIES/mcl_mobs/locale/tr.po create mode 100644 mods/ITEMS/mcl_sponges/locale/mcl_sponges.de.tr diff --git a/mods/ENTITIES/mcl_mobs/api.lua b/mods/ENTITIES/mcl_mobs/api.lua index dfa34ec0..b7a8e22f 100644 --- a/mods/ENTITIES/mcl_mobs/api.lua +++ b/mods/ENTITIES/mcl_mobs/api.lua @@ -7,11 +7,9 @@ mobs.version = "20180531" -- don't rely too much on this, rarely updated, if eve local MAX_MOB_NAME_LENGTH = 30 --- Intllib +-- Localize local MP = minetest.get_modpath(minetest.get_current_modname()) local S = minetest.get_translator("mcl_mobs") -mobs.intllib = S - -- CMI support check local use_cmi = minetest.global_exists("cmi") diff --git a/mods/ENTITIES/mcl_mobs/crafts.lua b/mods/ENTITIES/mcl_mobs/crafts.lua index 41243bf5..e9e6abf9 100644 --- a/mods/ENTITIES/mcl_mobs/crafts.lua +++ b/mods/ENTITIES/mcl_mobs/crafts.lua @@ -1,11 +1,11 @@ -local S = mobs.intllib +local S = minetest.get_translator("mcl_mobs") -- name tag minetest.register_craftitem("mcl_mobs:nametag", { description = S("Name Tag"), _doc_items_longdesc = S("A name tag is an item to name a mob."), - _doc_items_usagehelp = S("Before you use the name tag, you need to set a name at an anvil. Now you can use the name tag to name a mob with a rightclick. This uses up the name tag."), + _doc_items_usagehelp = S("Before you use the name tag, you need to set a name at an anvil. Then you can use the name tag to name a mob. This uses up the name tag."), inventory_image = "mobs_nametag.png", wield_image = "mobs_nametag.png", stack_max = 64, diff --git a/mods/ENTITIES/mcl_mobs/intllib.lua b/mods/ENTITIES/mcl_mobs/intllib.lua deleted file mode 100644 index 6669d720..00000000 --- a/mods/ENTITIES/mcl_mobs/intllib.lua +++ /dev/null @@ -1,45 +0,0 @@ - --- Fallback functions for when `intllib` is not installed. --- Code released under Unlicense . - --- Get the latest version of this file at: --- https://raw.githubusercontent.com/minetest-mods/intllib/master/lib/intllib.lua - -local function format(str, ...) - local args = { ... } - local function repl(escape, open, num, close) - if escape == "" then - local replacement = tostring(args[tonumber(num)]) - if open == "" then - replacement = replacement..close - end - return replacement - else - return "@"..open..num..close - end - end - return (str:gsub("(@?)@(%(?)(%d+)(%)?)", repl)) -end - -local gettext, ngettext -if minetest.get_modpath("intllib") then - if intllib.make_gettext_pair then - -- New method using gettext. - gettext, ngettext = intllib.make_gettext_pair() - else - -- Old method using text files. - gettext = intllib.Getter() - end -end - --- Fill in missing functions. - -gettext = gettext or function(msgid, ...) - return format(msgid, ...) -end - -ngettext = ngettext or function(msgid, msgid_plural, n, ...) - return format(n==1 and msgid or msgid_plural, ...) -end - -return gettext, ngettext diff --git a/mods/ENTITIES/mcl_mobs/locale/de_DE.po b/mods/ENTITIES/mcl_mobs/locale/de_DE.po deleted file mode 100644 index 210990d8..00000000 --- a/mods/ENTITIES/mcl_mobs/locale/de_DE.po +++ /dev/null @@ -1,131 +0,0 @@ -# Mobs Redo translation. -# Copyright (C) 2017 TenPlus1 -# This file is distributed under the same license as the mobs package. -# Wuzzy , 2017 -# -msgid "" -msgstr "" -"Project-Id-Version: mobs\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-07-02 16:48+0200\n" -"PO-Revision-Date: 2017-07-02 14:27+0200\n" -"Last-Translator: Wuzzy \n" -"Language-Team: \n" -"Language: de_DE\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 2.0.2\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -#: api.lua -msgid "** Peaceful Mode Active - No Monsters Will Spawn" -msgstr "" - -#: api.lua -msgid "Mob has been protected!" -msgstr "Kreatur wurde geschützt!" - -#: api.lua -msgid "@1 (Tamed)" -msgstr "@1 (Gezähmt)" - -#: api.lua -msgid "Not tamed!" -msgstr "Nicht gezähmt!" - -#: api.lua -msgid "@1 is owner!" -msgstr "@1 ist der Besitzer!" - -#: api.lua -msgid "Missed!" -msgstr "Daneben!" - -#: api.lua -msgid "Already protected!" -msgstr "Bereits geschützt!" - -#: api.lua -msgid "@1 at full health (@2)" -msgstr "@1 bei voller Gesundheit (@2)" - -#: api.lua -msgid "@1 has been tamed!" -msgstr "@1 wurde gezähmt!" - -#: api.lua -msgid "Enter name:" -msgstr "Namen eingeben:" - -#: api.lua -msgid "Rename" -msgstr "Umbenennen" - -#: crafts.lua -msgid "Name Tag" -msgstr "Namensschild" - -#: crafts.lua -msgid "Leather" -msgstr "Leder" - -#: crafts.lua -msgid "Raw Meat" -msgstr "Rohes Fleisch" - -#: crafts.lua -msgid "Meat" -msgstr "Fleisch" - -#: crafts.lua -msgid "Lasso (right-click animal to put in inventory)" -msgstr "Lasso (Rechtsklick auf Tier, um es zu nehmen)" - -#: crafts.lua -msgid "Net (right-click animal to put in inventory)" -msgstr "Netz (Rechtsklick auf Tier, um es zu nehmen)" - -#: crafts.lua -msgid "Steel Shears (right-click to shear)" -msgstr "Stahlschere (Rechtsklick zum Scheren)" - -#: crafts.lua -msgid "Mob Protection Rune" -msgstr "Kreaturschutzrune" - -#: crafts.lua -msgid "Saddle" -msgstr "Sattel" - -#: crafts.lua -msgid "Mob Fence" -msgstr "Kreaturen Zaun" - -#: spawner.lua -msgid "Mob Spawner" -msgstr "Kreaturenspawner" - -#: spawner.lua -msgid "Mob MinLight MaxLight Amount PlayerDist" -msgstr "Kreatur MinLicht MaxLicht Menge SpielerEntfng" - -#: spawner.lua -msgid "Spawner Not Active (enter settings)" -msgstr "Nicht aktiv (Einstellungen eingeben)" - -#: spawner.lua -msgid "Spawner Active (@1)" -msgstr "Spawner aktiv (@1)" - -#: spawner.lua -msgid "Mob Spawner settings failed!" -msgstr "Kreaturenspawner-Einstellungen gescheitert!" - -#: spawner.lua -msgid "" -"Syntax: “name min_light[0-14] max_light[0-14] max_mobs_in_area[0 to disable] " -"distance[1-20] y_offset[-10 to 10]”" -msgstr "" -"Syntax: „name min_licht[0-14] max_licht[0-14] max_mobs_im_gebiet[0 zum " -"Deaktivieren] distanz[1-20] y_versatz[-10 bis 10]“" diff --git a/mods/ENTITIES/mcl_mobs/locale/es.po b/mods/ENTITIES/mcl_mobs/locale/es.po deleted file mode 100644 index 849db667..00000000 --- a/mods/ENTITIES/mcl_mobs/locale/es.po +++ /dev/null @@ -1,128 +0,0 @@ -# Mobs Redo translation. -# Copyright (C) 2017 TenPlus1 -# This file is distributed under the same license as the mobs package. -# Wuzzy , 2017 -# -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-07-16 16:48+0200\n" -"PO-Revision-Date: 2017-07-16 16:48+0200\n" -"Last-Translator: Aleks \n" -"Language-Team: \n" -"Language: es\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#: api.lua -msgid "** Peaceful Mode Active - No Monsters Will Spawn" -msgstr "" - -#: api.lua -msgid "Mob has been protected!" -msgstr "El mob ha sido protegido!" - -#: api.lua -msgid "@1 (Tamed)" -msgstr "@1 (Domesticado)" - -#: api.lua -msgid "Not tamed!" -msgstr "No domesticado!" - -#: api.lua -msgid "@1 is owner!" -msgstr "@1 es el dueño!" - -#: api.lua -msgid "Missed!" -msgstr "Perdido!" - -#: api.lua -msgid "Already protected!" -msgstr "Ya está protegido!" - -#: api.lua -msgid "@1 at full health (@2)" -msgstr "@1 con salud llena (@2)" - -#: api.lua -msgid "@1 has been tamed!" -msgstr "@1 ha sido domesticado!" - -#: api.lua -msgid "Enter name:" -msgstr "Ingrese nombre:" - -#: api.lua -msgid "Rename" -msgstr "Renombrar" - -#: crafts.lua -msgid "Name Tag" -msgstr "Nombrar etiqueta" - -#: crafts.lua -msgid "Leather" -msgstr "Cuero" - -#: crafts.lua -msgid "Raw Meat" -msgstr "Carne cruda" - -#: crafts.lua -msgid "Meat" -msgstr "Carne" - -#: crafts.lua -msgid "Lasso (right-click animal to put in inventory)" -msgstr "Lazo (click derecho en animal para colocar en inventario)" - -#: crafts.lua -msgid "Net (right-click animal to put in inventory)" -msgstr "Red (click derecho en animal para colocar en inventario)" - -#: crafts.lua -msgid "Steel Shears (right-click to shear)" -msgstr "Tijera de acero (click derecho para esquilar)" - -#: crafts.lua -msgid "Mob Protection Rune" -msgstr "Runa de protección de Mob" - -#: crafts.lua -msgid "Saddle" -msgstr "Montura" - -#: crafts.lua -msgid "Mob Fence" -msgstr "" - -#: spawner.lua -msgid "Mob Spawner" -msgstr "Generador de Mob" - -#: spawner.lua -msgid "Mob MinLight MaxLight Amount PlayerDist" -msgstr "Mob LuzMin LuzMax Cantidad DistJugador" - -#: spawner.lua -msgid "Spawner Not Active (enter settings)" -msgstr "Generador no activo (ingrese config)" - -#: spawner.lua -msgid "Spawner Active (@1)" -msgstr "Generador activo (@1)" - -#: spawner.lua -msgid "Mob Spawner settings failed!" -msgstr "Configuracion de generador de Mob falló!" - -#: spawner.lua -msgid "" -"Syntax: “name min_light[0-14] max_light[0-14] max_mobs_in_area[0 to disable] " -"distance[1-20] y_offset[-10 to 10]”" -msgstr "Sintaxis: “nombre luz_min[0-14] luz_max[0-14] max_mobs_en_area[0 para deshabilitar] " -"distancia[1-20] compensacion[-10 a 10]”" diff --git a/mods/ENTITIES/mcl_mobs/locale/fr.po b/mods/ENTITIES/mcl_mobs/locale/fr.po deleted file mode 100644 index 25b920cd..00000000 --- a/mods/ENTITIES/mcl_mobs/locale/fr.po +++ /dev/null @@ -1,129 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# -msgid "" -msgstr "" -"Project-Id-Version: \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-07-29 09:13+0200\n" -"PO-Revision-Date: 2017-07-29 09:20+0200\n" -"Language-Team: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 1.8.12\n" -"Last-Translator: fat115 \n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" -"Language: fr\n" - -#: api.lua -msgid "** Peaceful Mode Active - No Monsters Will Spawn" -msgstr "** Mode pacifique activé - Aucun monstre ne sera généré" - -#: api.lua -msgid "Mob has been protected!" -msgstr "L'animal a été protégé !" - -#: api.lua -msgid "@1 (Tamed)" -msgstr "@1 (apprivoisé)" - -#: api.lua -msgid "Not tamed!" -msgstr "Non-apprivoisé !" - -#: api.lua -msgid "@1 is owner!" -msgstr "Appartient à @1 !" - -#: api.lua -msgid "Missed!" -msgstr "Raté !" - -#: api.lua -msgid "Already protected!" -msgstr "Déjà protégé !" - -#: api.lua -msgid "@1 at full health (@2)" -msgstr "@1 est en pleine forme (@2) " - -#: api.lua -msgid "@1 has been tamed!" -msgstr "@1 a été apprivoisé ! " - -#: api.lua -msgid "Enter name:" -msgstr "Saisissez un nom :" - -#: api.lua -msgid "Rename" -msgstr "Renommer" - -#: crafts.lua -msgid "Name Tag" -msgstr "Étiquette pour collier" - -#: crafts.lua -msgid "Leather" -msgstr "Cuir" - -#: crafts.lua -msgid "Raw Meat" -msgstr "Viande crue" - -#: crafts.lua -msgid "Meat" -msgstr "Viande" - -#: crafts.lua -msgid "Lasso (right-click animal to put in inventory)" -msgstr "Lasso (clic droit sur l'animal pour le mettre dans l'inventaire)" - -#: crafts.lua -msgid "Net (right-click animal to put in inventory)" -msgstr "Filet (clic droit sur l'animal pour le mettre dans l'inventaire)" - -#: crafts.lua -msgid "Steel Shears (right-click to shear)" -msgstr "Ciseaux à laine (clic droit pour tondre)" - -#: crafts.lua -msgid "Mob Protection Rune" -msgstr "Rune de protection des animaux" - -#: crafts.lua -msgid "Saddle" -msgstr "Selle" - -#: crafts.lua -msgid "Mob Fence" -msgstr "Clôture à animaux" - -#: spawner.lua -msgid "Mob Spawner" -msgstr "Générateur de mob" - -#: spawner.lua -msgid "Mob MinLight MaxLight Amount PlayerDist" -msgstr "Mob MinLumière MaxLumière Quantité DistanceJoueur" - -#: spawner.lua -msgid "Spawner Not Active (enter settings)" -msgstr "Générateur non actif (entrez les paramètres)" - -#: spawner.lua -msgid "Spawner Active (@1)" -msgstr "Générateur actif (@1)" - -#: spawner.lua -msgid "Mob Spawner settings failed!" -msgstr "Echec des paramètres du générateur" - -#: spawner.lua -msgid "" -"Syntax: “name min_light[0-14] max_light[0-14] max_mobs_in_area[0 to disable] " -"distance[1-20] y_offset[-10 to 10]”" -msgstr "Syntaxe : “nom min_lumière[0-14] max_lumière[0-14] max_mobs_dans_zone[0 pour désactiver] distance[1-20] décalage_y[-10 à 10]“" diff --git a/mods/ENTITIES/mcl_mobs/locale/it.po b/mods/ENTITIES/mcl_mobs/locale/it.po deleted file mode 100644 index a439f6de..00000000 --- a/mods/ENTITIES/mcl_mobs/locale/it.po +++ /dev/null @@ -1,131 +0,0 @@ -# ITALIAN LOCALE FILE FOR THE MOBS REDO MODULE -# Copyright (c) 2014 Krupnov Pavel and 2016 TenPlus1 -# This file is distributed under the same license as the MOBS REDO package. -# Hamlet , 2017. -# -msgid "" -msgstr "" -"Project-Id-Version: Italian locale file for the Mobs Redo module\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-07-02 16:48+0200\n" -"PO-Revision-Date: 2017-08-18 12:18+0100\n" -"Last-Translator: H4mlet \n" -"Language-Team: \n" -"Language: it\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 1.6.10\n" - -#: api.lua -msgid "** Peaceful Mode Active - No Monsters Will Spawn" -msgstr "" - -#: api.lua -msgid "Mob has been protected!" -msgstr "Il mob è stato protetto!" - -#: api.lua -msgid "@1 (Tamed)" -msgstr "@1 (Addomesticat*)" - -#: api.lua -msgid "Not tamed!" -msgstr "Non addomesticat*!" - -#: api.lua -msgid "@1 is owner!" -msgstr "Proprietari* @1!" - -#: api.lua -msgid "Missed!" -msgstr "Mancat*!" - -#: api.lua -msgid "Already protected!" -msgstr "Già protett*!" - -#: api.lua -msgid "@1 at full health (@2)" -msgstr "@1 in piena salute (@2)" - -#: api.lua -msgid "@1 has been tamed!" -msgstr "@1 è stat* addomesticat*!" - -#: api.lua -msgid "Enter name:" -msgstr "Inserire il nome:" - -#: api.lua -msgid "Rename" -msgstr "Rinominare" - -#: crafts.lua -msgid "Name Tag" -msgstr "Targhetta" - -#: crafts.lua -msgid "Leather" -msgstr "Pelle" - -#: crafts.lua -msgid "Raw Meat" -msgstr "Carne cruda" - -#: crafts.lua -msgid "Meat" -msgstr "Carne" - -#: crafts.lua -msgid "Lasso (right-click animal to put in inventory)" -msgstr "Lazo (click di destro per mettere l'animale nell'inventario)" - -#: crafts.lua -msgid "Net (right-click animal to put in inventory)" -msgstr "Rete (click destro per mettere l'animale nell'inventario)" - -#: crafts.lua -msgid "Steel Shears (right-click to shear)" -msgstr "Cesoie d'acciaio (click destro per tosare)" - -#: crafts.lua -msgid "Mob Protection Rune" -msgstr "Runa di protezione per mob" - -#: crafts.lua -msgid "Saddle" -msgstr "Sella" - -#: crafts.lua -msgid "Mob Fence" -msgstr "" - -#: spawner.lua -msgid "Mob Spawner" -msgstr "Generatore di mob" - -#: spawner.lua -msgid "Mob MinLight MaxLight Amount PlayerDist" -msgstr "Mob LuceMin LuceMax Ammontare DistGiocat." - -#: spawner.lua -msgid "Spawner Not Active (enter settings)" -msgstr "Generatore inattivo (inserire le impostazioni)" - -#: spawner.lua -msgid "Spawner Active (@1)" -msgstr "Generatore attivo (@1)" - -#: spawner.lua -msgid "Mob Spawner settings failed!" -msgstr "Impostazioni del generatore di mob fallite!" - -#: spawner.lua -msgid "" -"Syntax: “name min_light[0-14] max_light[0-14] max_mobs_in_area[0 to disable] " -"distance[1-20] y_offset[-10 to 10]”" -msgstr "" -"Sintassi: “name min_light[0-14] max_light[0-14] max_mobs_in_area[0 per " -"disabilitare] distance[1-20] y_offset[-10 to 10]”" diff --git a/mods/ENTITIES/mcl_mobs/locale/mcl_mobs.de.tr b/mods/ENTITIES/mcl_mobs/locale/mcl_mobs.de.tr index b5f4d702..f423547b 100644 --- a/mods/ENTITIES/mcl_mobs/locale/mcl_mobs.de.tr +++ b/mods/ENTITIES/mcl_mobs/locale/mcl_mobs.de.tr @@ -3,3 +3,6 @@ Peaceful mode active! No monsters will spawn.=Friedlicher Modus aktiv! Es werden This allows you to place a single mob.=Damit kann man eine Mob platzieren. Just place it where you want the mob to appear. Animals will spawn tamed, unless you hold down the sneak key while placing. If you place this on a mob spawner, you change the mob it spawns.=Platzieren Sie dies einfach dort, wo der Mob auftauchen soll. Tiere werden zahm erscheinen, außer, wenn Sie beim Platzieren die Schlichtaste drücken. Platzieren Sie dies auf einem Mobspawner, um den Mob im Mobspawner zu wechseln. You need the “maphack” privilege to change the mob spawner.=Sie brauchen das „maphack“-Privileg, um den Mobspawner ändern zu können. +Name Tag=Namensschild +A name tag is an item to name a mob.=Ein Namensschild ist ein Gegenstand, um einen Mob zu benennen. +Before you use the name tag, you need to set a name at an anvil. Then you can use the name tag to name a mob. This uses up the name tag.=Bevor Sie ein Namensschild benutzen können, müssen Sie ihn an einem Amboss benennen. Dann können können Sie das Namensschild benutztn, um einen Mob zu benennen. Das wird das Namensschild verbrauchen. diff --git a/mods/ENTITIES/mcl_mobs/locale/ms.po b/mods/ENTITIES/mcl_mobs/locale/ms.po deleted file mode 100644 index a2a31f3f..00000000 --- a/mods/ENTITIES/mcl_mobs/locale/ms.po +++ /dev/null @@ -1,131 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# -msgid "" -msgstr "" -"Project-Id-Version: \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-02-05 23:40+0800\n" -"PO-Revision-Date: 2018-02-05 23:51+0800\n" -"Language-Team: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 2.0.6\n" -"Last-Translator: MuhdNurHidayat (MNH48) \n" -"Plural-Forms: nplurals=1; plural=0;\n" -"Language: ms\n" - -#: api.lua -msgid "** Peaceful Mode Active - No Monsters Will Spawn" -msgstr "** Mod Aman Diaktifkan - Tiada Raksasa Akan Muncul" - -#: api.lua -msgid "Mob has been protected!" -msgstr "Mob telah pun dilindungi!" - -#: api.lua -msgid "@1 (Tamed)" -msgstr "@1 (Jinak)" - -#: api.lua -msgid "Not tamed!" -msgstr "Belum dijinakkan!" - -#: api.lua -msgid "@1 is owner!" -msgstr "Ini hak milik @1!" - -#: api.lua -msgid "Missed!" -msgstr "Terlepas!" - -#: api.lua -msgid "Already protected!" -msgstr "Telah dilindungi!" - -#: api.lua -msgid "@1 at full health (@2)" -msgstr "Mata kesihatan @1 telah penuh (@2)" - -#: api.lua -msgid "@1 has been tamed!" -msgstr "@1 telah dijinakkan!" - -#: api.lua -msgid "Enter name:" -msgstr "Masukkan nama:" - -#: api.lua -msgid "Rename" -msgstr "Namakan semula" - -#: crafts.lua -msgid "Name Tag" -msgstr "Tanda Nama" - -#: crafts.lua -msgid "Leather" -msgstr "Kulit" - -#: crafts.lua -msgid "Raw Meat" -msgstr "Daging Mentah" - -#: crafts.lua -msgid "Meat" -msgstr "Daging Bakar" - -#: crafts.lua -msgid "Lasso (right-click animal to put in inventory)" -msgstr "Tanjul (klik-kanan haiwan untuk masukkan ke inventori)" - -#: crafts.lua -msgid "Net (right-click animal to put in inventory)" -msgstr "Jaring (klik-kanan haiwan untuk masukkan ke inventori)" - -#: crafts.lua -msgid "Steel Shears (right-click to shear)" -msgstr "Ketam Keluli (klik-kanan untuk mengetam bulu biri-biri)" - -#: crafts.lua -msgid "Mob Protection Rune" -msgstr "Rune Perlindungan Mob" - -#: crafts.lua -msgid "Saddle" -msgstr "Pelana" - -#: crafts.lua -msgid "Mob Fence" -msgstr "Pagar Mob" - -#: spawner.lua -msgid "Mob Spawner" -msgstr "Pewujud Mob" - -#: spawner.lua -msgid "Mob MinLight MaxLight Amount PlayerDist" -msgstr "Mob CahayaMin CahayaMax Amaun JarakPemain" - -#: spawner.lua -msgid "Spawner Not Active (enter settings)" -msgstr "Pewujud Mob Tidak Aktif (masukkan tetapan)" - -#: spawner.lua -msgid "Spawner Active (@1)" -msgstr "Pewujud Mob Aktif (@1)" - -#: spawner.lua -msgid "Mob Spawner settings failed!" -msgstr "Penetapan Pewujud Mob gagal!" - -#: spawner.lua -msgid "" -"Syntax: “name min_light[0-14] max_light[0-14] max_mobs_in_area[0 to disable] " -"distance[1-20] y_offset[-10 to 10]”" -msgstr "" -"Sintaks: \"nama cahaya_minimum[0-14] cahaya_maksimum[0-14] " -"amaun_mob_maksimum[0 untuk lumpuhkan] jarak[1-20] ketinggian[-10 hingga 10]\"" diff --git a/mods/ENTITIES/mcl_mobs/locale/pt.po b/mods/ENTITIES/mcl_mobs/locale/pt.po deleted file mode 100644 index b52afd62..00000000 --- a/mods/ENTITIES/mcl_mobs/locale/pt.po +++ /dev/null @@ -1,133 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# -msgid "" -msgstr "" -"Project-Id-Version: mobs\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-07-02 16:48+0200\n" -"PO-Revision-Date: 2017-07-02 14:55+0200\n" -"Last-Translator: Wuzzy \n" -"Language-Team: \n" -"Language: pt\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 2.0.2\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -#: api.lua -msgid "** Peaceful Mode Active - No Monsters Will Spawn" -msgstr "" - -#: api.lua -msgid "Mob has been protected!" -msgstr "" - -#: api.lua -msgid "@1 (Tamed)" -msgstr "" - -#: api.lua -msgid "Not tamed!" -msgstr "Indomesticado!" - -#: api.lua -msgid "@1 is owner!" -msgstr "Dono @1!" - -#: api.lua -msgid "Missed!" -msgstr "Faltou!" - -#: api.lua -msgid "Already protected!" -msgstr "" - -#: api.lua -msgid "@1 at full health (@2)" -msgstr "@1 em plena saude (@2)" - -#: api.lua -msgid "@1 has been tamed!" -msgstr "@1 foi domesticado!" - -#: api.lua -msgid "Enter name:" -msgstr "Insira um nome:" - -#: api.lua -msgid "Rename" -msgstr "Renomear" - -#: crafts.lua -msgid "Name Tag" -msgstr "Etiqueta" - -#: crafts.lua -msgid "Leather" -msgstr "Couro" - -#: crafts.lua -msgid "Raw Meat" -msgstr "Carne crua" - -#: crafts.lua -msgid "Meat" -msgstr "Carne" - -#: crafts.lua -#, fuzzy -msgid "Lasso (right-click animal to put in inventory)" -msgstr "Laço (clique-direito no animal para por no inventario)" - -#: crafts.lua -msgid "Net (right-click animal to put in inventory)" -msgstr "Net (clique-direito no animal para por no inventario)" - -#: crafts.lua -msgid "Steel Shears (right-click to shear)" -msgstr "Tesoura de Aço (clique-direito para tosquiar)" - -#: crafts.lua -msgid "Mob Protection Rune" -msgstr "" - -#: crafts.lua -msgid "Saddle" -msgstr "" - -#: crafts.lua -msgid "Mob Fence" -msgstr "" - -#: spawner.lua -msgid "Mob Spawner" -msgstr "Spawnador de Mob" - -#: spawner.lua -msgid "Mob MinLight MaxLight Amount PlayerDist" -msgstr "Mob LuzMinima LuzMaxima Valor DistJogador" - -#: spawner.lua -msgid "Spawner Not Active (enter settings)" -msgstr "Spawnador Inativo (configurar)" - -#: spawner.lua -msgid "Spawner Active (@1)" -msgstr "Spawnador Ativo (@1)" - -#: spawner.lua -msgid "Mob Spawner settings failed!" -msgstr "Configuraçao de Spawnador do Mob falhou!" - -#: spawner.lua -#, fuzzy -msgid "" -"Syntax: “name min_light[0-14] max_light[0-14] max_mobs_in_area[0 to disable] " -"distance[1-20] y_offset[-10 to 10]”" -msgstr "" -"> nome luz_min[0-14] luz_max[0-14] max_mobs_na_area[0 para desabilitar] " -"distancia[1-20] y_offset[-10 a 10]" diff --git a/mods/ENTITIES/mcl_mobs/locale/ru.po b/mods/ENTITIES/mcl_mobs/locale/ru.po deleted file mode 100644 index 6cde7ef9..00000000 --- a/mods/ENTITIES/mcl_mobs/locale/ru.po +++ /dev/null @@ -1,129 +0,0 @@ -# Russian translation for the mobs_redo mod. -# Copyright (C) 2018 TenPlus1 -# This file is distributed under the same license as the mobs_redo package. -# Oleg720 , 2017. -# CodeXP , 2018. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-08-13 15:47+0200\n" -"PO-Revision-Date: 2018-03-23 22:22+0100\n" -"Last-Translator: CodeXP \n" -"Language-Team: \n" -"Language: ru\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#: api.lua -msgid "** Peaceful Mode Active - No Monsters Will Spawn" -msgstr "** Мирный модус активирован - монстры не спаунятся" - -#: api.lua -msgid "Mob has been protected!" -msgstr "Моб защищен!" - -#: api.lua -msgid "@1 (Tamed)" -msgstr "@1 (Прирученный)" - -#: api.lua -msgid "Not tamed!" -msgstr "Не прирученный" - -#: api.lua -msgid "@1 is owner!" -msgstr "@1 владелец" - -#: api.lua -msgid "Missed!" -msgstr "Промазал!" - -#: api.lua -msgid "Already protected!" -msgstr "Уже защищен!" - -#: api.lua -msgid "@1 at full health (@2)" -msgstr "@1 при полном здоровье (@2)" - -#: api.lua -msgid "@1 has been tamed!" -msgstr "@1 приручен" - -#: api.lua -msgid "Enter name:" -msgstr "Введите имя:" - -#: api.lua -msgid "Rename" -msgstr "Переименовать" - -#: crafts.lua -msgid "Name Tag" -msgstr "Новый тэг" - -#: crafts.lua -msgid "Leather" -msgstr "Кожа" - -#: crafts.lua -msgid "Raw Meat" -msgstr "Сырое мясо" - -#: crafts.lua -msgid "Meat" -msgstr "Мясо" - -#: crafts.lua -msgid "Lasso (right-click animal to put in inventory)" -msgstr "Лассо (Правый клик - положить животное в инвентарь)" - -#: crafts.lua -msgid "Net (right-click animal to put in inventory)" -msgstr "Сеть (Правый клик - положить животное в инвентарь)" - -#: crafts.lua -msgid "Steel Shears (right-click to shear)" -msgstr "Ножницы (Правый клик - подстричь)" - -#: crafts.lua -msgid "Mob Protection Rune" -msgstr "Защитная руна мобов" - -#: crafts.lua -msgid "Saddle" -msgstr "Седло" - -#: crafts.lua -msgid "Mob Fence" -msgstr "Забор от мобов" - -#: spawner.lua -msgid "Mob Spawner" -msgstr "Спаунер моба" - -#: spawner.lua -msgid "Mob MinLight MaxLight Amount PlayerDist" -msgstr "" - -#: spawner.lua -msgid "Spawner Not Active (enter settings)" -msgstr "Спаунер не активен (введите настройки)" - -#: spawner.lua -msgid "Spawner Active (@1)" -msgstr "Активные спаунер (@1)" - -#: spawner.lua -msgid "Mob Spawner settings failed!" -msgstr "Настройки спаунера моба провалились" - -#: spawner.lua -msgid "" -"Syntax: “name min_light[0-14] max_light[0-14] max_mobs_in_area[0 to disable] " -"distance[1-20] y_offset[-10 to 10]”" -msgstr "" diff --git a/mods/ENTITIES/mcl_mobs/locale/template.pot b/mods/ENTITIES/mcl_mobs/locale/template.pot deleted file mode 100644 index af31440e..00000000 --- a/mods/ENTITIES/mcl_mobs/locale/template.pot +++ /dev/null @@ -1,128 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-07-02 16:48+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"Language: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#: api.lua -msgid "** Peaceful Mode Active - No Monsters Will Spawn" -msgstr "" - -#: api.lua -msgid "Mob has been protected!" -msgstr "" - -#: api.lua -msgid "@1 (Tamed)" -msgstr "" - -#: api.lua -msgid "Not tamed!" -msgstr "" - -#: api.lua -msgid "@1 is owner!" -msgstr "" - -#: api.lua -msgid "Missed!" -msgstr "" - -#: api.lua -msgid "Already protected!" -msgstr "" - -#: api.lua -msgid "@1 at full health (@2)" -msgstr "" - -#: api.lua -msgid "@1 has been tamed!" -msgstr "" - -#: api.lua -msgid "Enter name:" -msgstr "" - -#: api.lua -msgid "Rename" -msgstr "" - -#: crafts.lua -msgid "Name Tag" -msgstr "" - -#: crafts.lua -msgid "Leather" -msgstr "" - -#: crafts.lua -msgid "Raw Meat" -msgstr "" - -#: crafts.lua -msgid "Meat" -msgstr "" - -#: crafts.lua -msgid "Lasso (right-click animal to put in inventory)" -msgstr "" - -#: crafts.lua -msgid "Net (right-click animal to put in inventory)" -msgstr "" - -#: crafts.lua -msgid "Steel Shears (right-click to shear)" -msgstr "" - -#: crafts.lua -msgid "Mob Protection Rune" -msgstr "" - -#: crafts.lua -msgid "Saddle" -msgstr "" - -#: crafts.lua -msgid "Mob Fence" -msgstr "" - -#: spawner.lua -msgid "Mob Spawner" -msgstr "" - -#: spawner.lua -msgid "Mob MinLight MaxLight Amount PlayerDist" -msgstr "" - -#: spawner.lua -msgid "Spawner Not Active (enter settings)" -msgstr "" - -#: spawner.lua -msgid "Spawner Active (@1)" -msgstr "" - -#: spawner.lua -msgid "Mob Spawner settings failed!" -msgstr "" - -#: spawner.lua -msgid "" -"Syntax: “name min_light[0-14] max_light[0-14] max_mobs_in_area[0 to disable] " -"distance[1-20] y_offset[-10 to 10]”" -msgstr "" diff --git a/mods/ENTITIES/mcl_mobs/locale/template.txt b/mods/ENTITIES/mcl_mobs/locale/template.txt index 66565375..db0c4d53 100644 --- a/mods/ENTITIES/mcl_mobs/locale/template.txt +++ b/mods/ENTITIES/mcl_mobs/locale/template.txt @@ -3,3 +3,6 @@ Peaceful mode active! No monsters will spawn.= This allows you to place a single mob.= Just place it where you want the mob to appear. Animals will spawn tamed, unless you hold down the sneak key while placing. If you place this on a mob spawner, you change the mob it spawns.= You need the “maphack” privilege to change the mob spawner.= +Name Tag= +A name tag is an item to name a mob.= +Before you use the name tag, you need to set a name at an anvil. Then you can use the name tag to name a mob. This uses up the name tag.= diff --git a/mods/ENTITIES/mcl_mobs/locale/tr.po b/mods/ENTITIES/mcl_mobs/locale/tr.po deleted file mode 100644 index 10688e20..00000000 --- a/mods/ENTITIES/mcl_mobs/locale/tr.po +++ /dev/null @@ -1,133 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# -msgid "" -msgstr "" -"Project-Id-Version: mobs\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-07-02 16:48+0200\n" -"PO-Revision-Date: 2017-07-02 14:56+0200\n" -"Last-Translator: Wuzzy \n" -"Language-Team: \n" -"Language: tr\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 2.0.2\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -#: api.lua -msgid "** Peaceful Mode Active - No Monsters Will Spawn" -msgstr "" - -#: api.lua -msgid "Mob has been protected!" -msgstr "" - -#: api.lua -msgid "@1 (Tamed)" -msgstr "" - -#: api.lua -msgid "Not tamed!" -msgstr "Evcil değil!" - -#: api.lua -msgid "@1 is owner!" -msgstr "Sahibi @1!" - -#: api.lua -msgid "Missed!" -msgstr "Kaçırdın!" - -#: api.lua -msgid "Already protected!" -msgstr "" - -#: api.lua -msgid "@1 at full health (@2)" -msgstr "@1 tam canında (@2)" - -#: api.lua -msgid "@1 has been tamed!" -msgstr "@1 tamamen evcilleştirilmiştir!" - -#: api.lua -msgid "Enter name:" -msgstr "İsim gir:" - -#: api.lua -msgid "Rename" -msgstr "Yeniden adlandır" - -#: crafts.lua -msgid "Name Tag" -msgstr "İsim etiketi" - -#: crafts.lua -msgid "Leather" -msgstr "Deri" - -#: crafts.lua -msgid "Raw Meat" -msgstr "Çiğ et" - -#: crafts.lua -msgid "Meat" -msgstr "Et" - -#: crafts.lua -#, fuzzy -msgid "Lasso (right-click animal to put in inventory)" -msgstr "Kement (hayvana sağ tıklayarak envantere koy)" - -#: crafts.lua -msgid "Net (right-click animal to put in inventory)" -msgstr "Ağ (hayvana sağ tıklayarak envantere koy)" - -#: crafts.lua -msgid "Steel Shears (right-click to shear)" -msgstr "Çelik makas (sağ tıklayarak kes)" - -#: crafts.lua -msgid "Mob Protection Rune" -msgstr "" - -#: crafts.lua -msgid "Saddle" -msgstr "" - -#: crafts.lua -msgid "Mob Fence" -msgstr "Canavar Yaratıcı" - -#: spawner.lua -msgid "Mob Spawner" -msgstr "Canavar Yaratıcı" - -#: spawner.lua -msgid "Mob MinLight MaxLight Amount PlayerDist" -msgstr "Mob MinIşık MaxIşık Miktar OyuncuMesafesi" - -#: spawner.lua -msgid "Spawner Not Active (enter settings)" -msgstr "Yaratıcı aktif değil (ayarlara gir)" - -#: spawner.lua -msgid "Spawner Active (@1)" -msgstr "Yaratıcı aktif (@1)" - -#: spawner.lua -msgid "Mob Spawner settings failed!" -msgstr "Yaratıcı ayarları uygulanamadı." - -#: spawner.lua -#, fuzzy -msgid "" -"Syntax: “name min_light[0-14] max_light[0-14] max_mobs_in_area[0 to disable] " -"distance[1-20] y_offset[-10 to 10]”" -msgstr "" -"> isim min_isik[0-14] max_isik[0-14] alandaki_max_canavar_sayisi[kapatmak " -"icin 0] mesafe[1-20] y_cikinti[-10 ve 10 arası]" diff --git a/mods/ITEMS/mcl_dye/locale/mcl_dye.de.tr b/mods/ITEMS/mcl_dye/locale/mcl_dye.de.tr index 55ec038f..c12da579 100644 --- a/mods/ITEMS/mcl_dye/locale/mcl_dye.de.tr +++ b/mods/ITEMS/mcl_dye/locale/mcl_dye.de.tr @@ -2,7 +2,7 @@ Bone Meal=Knochenmehl Light Grey Dye=Hellgrauer Farbstoff Grey Dye=Grauer Farbstoff -Ink Sac=Tintensack +Ink Sac=Tintenbeutel Purple Dye=Violetter Farbstoff Lapis Lazuli=Lapislazuli Light Blue Dye=Hellblauer Farbstoff diff --git a/mods/ITEMS/mcl_sponges/locale/mcl_sponges.de.tr b/mods/ITEMS/mcl_sponges/locale/mcl_sponges.de.tr new file mode 100644 index 00000000..d226e8d1 --- /dev/null +++ b/mods/ITEMS/mcl_sponges/locale/mcl_sponges.de.tr @@ -0,0 +1,8 @@ +# textdomain: mcl_sponges +Sponge=Schwamm +Sponges are blocks which remove water around them when they are placed or come in contact with water, turning it into a wet sponge.=Schwämme sind Blöcke, die Wasser um sie herum entfernen, wenn sie platziert wurden oder in Berührung mit Wasser kommen, was sie in einen nassen Schwamm verwandelt. +Waterlogged Sponge=Wassergetränkter Schwamm +A waterlogged sponge can be dried in the furnace to turn it into (dry) sponge. When there's an empty bucket in the fuel slot of a furnace, the water will pour into the bucket.=Ein wassergetränkter Schwamm kann in einem Ofen getrocknet werden, um ihn zu einem (trockenem) Schwamm zu verwandeln. Wenn es einen leeren Eimer im Brennstoffplatz des Ofens gibt, wird das Wasser in den Eimer fließen. +Riverwaterlogged Sponge=Flusswassergetränkter Schwamm +This is a sponge soaking wet with river water. It can be dried in the furnace to turn it into (dry) sponge. When there's an empty bucket in the fuel slot of the furnace, the river water will pour into the bucket.=Dies ist ein Schwamm, der triefend nass und voller Flusswasser ist. Er kann in einem Ofen getrocknet werden, um ihn zu einem (trockenem) Schwamm zu verwandeln. Wenn es einen leeren Eimer im Brennstoffplatz des Ofens gibt, wird das Flusswasser in den Eimer fließen. +A sponge becomes riverwaterlogged (instead of waterlogged) if it sucks up more river water than (normal) water.=Ein Schwamm wird flusswassergetränkt (statt wassergetränkt), wenn er mehr Flusswasser als (normales) Wasser aufsaugt. diff --git a/mods/ITEMS/mcl_sponges/locale/template.txt b/mods/ITEMS/mcl_sponges/locale/template.txt index d226e8d1..2de97226 100644 --- a/mods/ITEMS/mcl_sponges/locale/template.txt +++ b/mods/ITEMS/mcl_sponges/locale/template.txt @@ -1,8 +1,8 @@ # textdomain: mcl_sponges -Sponge=Schwamm -Sponges are blocks which remove water around them when they are placed or come in contact with water, turning it into a wet sponge.=Schwämme sind Blöcke, die Wasser um sie herum entfernen, wenn sie platziert wurden oder in Berührung mit Wasser kommen, was sie in einen nassen Schwamm verwandelt. -Waterlogged Sponge=Wassergetränkter Schwamm -A waterlogged sponge can be dried in the furnace to turn it into (dry) sponge. When there's an empty bucket in the fuel slot of a furnace, the water will pour into the bucket.=Ein wassergetränkter Schwamm kann in einem Ofen getrocknet werden, um ihn zu einem (trockenem) Schwamm zu verwandeln. Wenn es einen leeren Eimer im Brennstoffplatz des Ofens gibt, wird das Wasser in den Eimer fließen. -Riverwaterlogged Sponge=Flusswassergetränkter Schwamm -This is a sponge soaking wet with river water. It can be dried in the furnace to turn it into (dry) sponge. When there's an empty bucket in the fuel slot of the furnace, the river water will pour into the bucket.=Dies ist ein Schwamm, der triefend nass und voller Flusswasser ist. Er kann in einem Ofen getrocknet werden, um ihn zu einem (trockenem) Schwamm zu verwandeln. Wenn es einen leeren Eimer im Brennstoffplatz des Ofens gibt, wird das Flusswasser in den Eimer fließen. -A sponge becomes riverwaterlogged (instead of waterlogged) if it sucks up more river water than (normal) water.=Ein Schwamm wird flusswassergetränkt (statt wassergetränkt), wenn er mehr Flusswasser als (normales) Wasser aufsaugt. +Sponge= +Sponges are blocks which remove water around them when they are placed or come in contact with water, turning it into a wet sponge.= +Waterlogged Sponge= +A waterlogged sponge can be dried in the furnace to turn it into (dry) sponge. When there's an empty bucket in the fuel slot of a furnace, the water will pour into the bucket.= +Riverwaterlogged Sponge= +This is a sponge soaking wet with river water. It can be dried in the furnace to turn it into (dry) sponge. When there's an empty bucket in the fuel slot of the furnace, the river water will pour into the bucket.= +A sponge becomes riverwaterlogged (instead of waterlogged) if it sucks up more river water than (normal) water.= diff --git a/mods/ITEMS/mclx_stairs/init.lua b/mods/ITEMS/mclx_stairs/init.lua index 9bd64d59..70ffdc33 100644 --- a/mods/ITEMS/mclx_stairs/init.lua +++ b/mods/ITEMS/mclx_stairs/init.lua @@ -28,32 +28,31 @@ mcl_stairs.register_slab("stonebrickcracked", "mcl_core:stonebrickcracked", S("Cracked Stone Brick Slab"), mcl_sounds.node_sound_stone_defaults(), 2, S("Double Cracked Stone Brick Slab"), "mcl_core:stonebrickcracked") --- TODO: Localize local block = {} block.dyes = { - {"white", "White", "white"}, - {"grey", "Grey", "dark_grey"}, - {"silver", "Light Grey", "grey"}, - {"black", "Black", "black"}, - {"red", "Red", "red"}, - {"yellow", "Yellow", "yellow"}, - {"green", "Green", "dark_green"}, - {"cyan", "Cyan", "cyan"}, - {"blue", "Blue", "blue"}, - {"magenta", "Magenta", "magenta"}, - {"orange", "Orange", "orange"}, - {"purple", "Purple", "violet"}, - {"brown", "Brown", "brown"}, - {"pink", "Pink", "pink"}, - {"lime", "Lime", "green"}, - {"light_blue", "Light Blue", "lightblue"}, + {"white", S("White Concrete Stairs"), S("White Concrete Slab"), S("Double White Concrete Slab"), "white"}, + {"grey", S("Grey Concrete Stairs"), S("Grey Concrete Slab"), S("Double Grey Concrete Slab"), "dark_grey"}, + {"silver", S("Light Grey Concrete Stairs"), S("Light Grey Concrete Slab"), S("Double Light Grey Concrete Slab"), "grey"}, + {"black", S("Black Concrete Stairs"), S("Black Concrete Slab"), S("Double Black Concrete Slab"), "black"}, + {"red", S("Red Concrete Stairs"), S("Red Concrete Slab"), S("Double Red Concrete Slab"), "red"}, + {"yellow", S("Yellow Concrete Stairs"), S("Yellow Concrete Slab"), S("Double Yellow Concrete Slab"), "yellow"}, + {"green", S("Green Concrete Stairs"), S("Green Concrete Slab"), S("Double Green Concrete Slab"), "dark_green"}, + {"cyan", S("Cyan Concrete Stairs"), S("Cyan Concrete Slab"), S("Double Cyan Concrete Slab"), "cyan"}, + {"blue", S("Blue Concrete Stairs"), S("Blue Concrete Slab"), S("Double Blue Concrete Slab"), "blue"}, + {"magenta", S("Magenta Concrete Stairs"), S("Magenta Concrete Slab"), S("Double Magenta Concrete Slab"), "magenta"}, + {"orange", S("Orange Concrete Stairs"), S("Orange Concrete Slab"), S("Double Orange Concrete Slab"), "orange"}, + {"purple", S("Purple Concrete Stairs"), S("Purple Concrete Slab"), S("Double Purple Concrete Slab"), "violet"}, + {"brown", S("Brown Concrete Stairs"), S("Brown Concrete Slab"), S("Double Brown Concrete Slab"), "brown"}, + {"pink", S("Pink Concrete Stairs"), S("Pink Concrete Slab"), S("Double Pink Concrete Slab"), "pink"}, + {"lime", S("Lime Concrete Stairs"), S("Lime Concrete Slab"), S("Double Lime Concrete Slab"), "green"}, + {"light_blue", S("Light Blue Concrete Stairs"), S("Light Blue Concrete Slab"), S("Double Light Blue Concrete Slab"), "lightblue"}, } for i=1, #block.dyes do local c = block.dyes[i][1] mcl_stairs.register_stair_and_slab_simple("concrete_"..c, "mcl_colorblocks:concrete_"..c, - block.dyes[i][2].." Concrete Stairs", - block.dyes[i][2].." Concrete Slab", - "Double "..block.dyes[i][2].." Concrete Slab") + block.dyes[i][2], + block.dyes[i][3], + block.dyes[i][4]) end diff --git a/mods/ITEMS/mclx_stairs/locale/mclx_stairs.de.tr b/mods/ITEMS/mclx_stairs/locale/mclx_stairs.de.tr index b2c11ed6..a9973c77 100644 --- a/mods/ITEMS/mclx_stairs/locale/mclx_stairs.de.tr +++ b/mods/ITEMS/mclx_stairs/locale/mclx_stairs.de.tr @@ -29,3 +29,51 @@ Stairs of Iron=Eisentreppe Cracked Stone Brick Stairs=Rissige Steinziegeltreppe Cracked Stone Brick Slab=Rissige Steinziegelplatte Double Cracked Stone Brick Slab=Doppelte rissige Steinziegelplatte +White Concrete Stairs=Weiße Betontreppe +White Concrete Slab=Weiße Betonplatte +Double White Concrete Slab=Doppelte weiße Betonplatte +Grey Concrete Stairs=Graue Betontreppe +Grey Concrete Slab=Graue Betonplatte +Double Grey Concrete Slab=Doppelte graue Betonplatte +Light Grey Concrete Stairs=Hellgraue Betontreppe +Light Grey Concrete Slab=Hellgraue Betonplatte +Double Light Grey Concrete Slab=Doppelte hellgraue Betonplatte +Black Concrete Stairs=Schwarze Betontreppe +Black Concrete Slab=Schwarze Betonplatte +Double Black Concrete Slab=Doppelte schwarze Betonplatte +Red Concrete Stairs=Rote Betontreppe +Red Concrete Slab=Rote Betonplatte +Double Red Concrete Slab=Doppelte rote Betonplatte +Yellow Concrete Stairs=Gelbe Betontreppe +Yellow Concrete Slab=Gelbe Betonplatte +Double Yellow Concrete Slab=Doppelte gelbe Betonplatte +Green Concrete Stairs=Grüne Betontreppe +Green Concrete Slab=Grüne Betonplatte +Double Green Concrete Slab=Doppelte grüne Betonplatte +Cyan Concrete Stairs=Türkise Betontreppe +Cyan Concrete Slab=Türkise Betonplatte +Double Cyan Concrete Slab=Doppelte Türkise Betonplatte +Blue Concrete Stairs=Blaue Betontreppe +Blue Concrete Slab=Blaue Betonplatte +Double Blue Concrete Slab=Doppelte blaue Betonplatte +Magenta Concrete Stairs=Magenta Betontreppe +Magenta Concrete Slab=Magenta Betonplatte +Double Magenta Concrete Slab=Doppelte magenta Betonplatte +Orange Concrete Stairs=Orange Betontreppe +Orange Concrete Slab=Orange Betonplatte +Double Orange Concrete Slab=Doppelte orange Betonplatte +Purple Concrete Stairs=Violette Betontreppe +Purple Concrete Slab=Violette Betonplatte +Double Purple Concrete Slab=Doppelte violette Betonplatte +Brown Concrete Stairs=Braune Betontreppe +Brown Concrete Slab=Braune Betonplatte +Double Brown Concrete Slab=Doppelte braune Betonplatte +Pink Concrete Stairs=Rosa Betontreppe +Pink Concrete Slab=Rosa Betonplatte +Double Pink Concrete Slab=Doppelte rosa Betonplatte +Lime Concrete Stairs=Lindgrüne Betontreppe +Lime Concrete Slab=Lindgrüne Betonplatte +Double Lime Concrete Slab=Doppelte Betonplatte +Light Blue Concrete Stairs=Hellblaue Betontreppe +Light Blue Concrete Slab=Hellblaue Betonplatte +Double Light Blue Concrete Slab=Doppelte hellblaue Betonplatte diff --git a/mods/ITEMS/mclx_stairs/locale/template.txt b/mods/ITEMS/mclx_stairs/locale/template.txt index 8237d416..fcadd57e 100644 --- a/mods/ITEMS/mclx_stairs/locale/template.txt +++ b/mods/ITEMS/mclx_stairs/locale/template.txt @@ -29,3 +29,51 @@ Stairs of Iron= Cracked Stone Brick Stairs= Cracked Stone Brick Slab= Double Cracked Stone Brick Slab= +White Concrete Stairs= +White Concrete Slab= +Double White Concrete Slab= +Grey Concrete Stairs= +Grey Concrete Slab= +Double Grey Concrete Slab= +Light Grey Concrete Stairs= +Light Grey Concrete Slab= +Double Light Grey Concrete Slab= +Black Concrete Stairs= +Black Concrete Slab= +Double Black Concrete Slab= +Red Concrete Stairs= +Red Concrete Slab= +Double Red Concrete Slab= +Yellow Concrete Stairs= +Yellow Concrete Slab= +Double Yellow Concrete Slab= +Green Concrete Stairs= +Green Concrete Slab= +Double Green Concrete Slab= +Cyan Concrete Stairs= +Cyan Concrete Slab= +Double Cyan Concrete Slab= +Blue Concrete Stairs= +Blue Concrete Slab= +Double Blue Concrete Slab= +Magenta Concrete Stairs= +Magenta Concrete Slab= +Double Magenta Concrete Slab= +Orange Concrete Stairs= +Orange Concrete Slab= +Double Orange Concrete Slab= +Purple Concrete Stairs= +Purple Concrete Slab= +Double Purple Concrete Slab= +Brown Concrete Stairs= +Brown Concrete Slab= +Double Brown Concrete Slab= +Pink Concrete Stairs= +Pink Concrete Slab= +Double Pink Concrete Slab= +Lime Concrete Stairs= +Lime Concrete Slab= +Double Lime Concrete Slab= +Light Blue Concrete Stairs= +Light Blue Concrete Slab= +Double Light Blue Concrete Slab= diff --git a/mods/ITEMS/xpanes/locale/xpanes.de.tr b/mods/ITEMS/xpanes/locale/xpanes.de.tr index 7c3c430e..1a024e74 100644 --- a/mods/ITEMS/xpanes/locale/xpanes.de.tr +++ b/mods/ITEMS/xpanes/locale/xpanes.de.tr @@ -3,19 +3,19 @@ Glass panes are thin layers of glass which neatly connect to their neighbors as Iron Bars=Eisenstangen Iron bars neatly connect to their neighbors as you build them.=Eisenstangen verbinden sich mit den Nachbarn, wenn sie gebaut werden. Glass Pane=Glasscheibe -Red Stained Glass Pane=Rot gefärbtes Buntglas -Green Stained Glass Pane=Grün gefärbtes Buntglas -Blue Stained Glass Pane=Blau gefärbtes Buntglas -Light Blue Stained Glass Pane=Hellblau gefärbtes Buntglas -Black Stained Glass Pane=Schwarz gefärbtes Buntglas -White Stained Glass Pane=Weiß gefärbtes Buntglas -Yellow Stained Glass Pane=Gelb gefärbtes Buntglas -Brown Stained Glass Pane=Braun gefärbtes Buntglas -Orange Stained Glass Pane=Orange gefärbtes Buntglas -Pink Stained Glass Pane=Rosa gefärbtes Buntglas -Grey Stained Glass Pane=Grau gefärbtes Buntglas -Lime Stained Glass Pane=Lindgrün gefärbtes Buntglas -Light Grey Stained Glass Pane=Hellgrau gefärbtes Buntglas -Magenta Stained Glass Pane=Magenta gefärbtes Buntglas -Purple Stained Glass Pane=Violett gefärbtes Buntglas -Cyan Stained Glass Pane=Türkis gefärbtes Buntglas +Red Stained Glass Pane=Rote Buntglasscheibe +Green Stained Glass Pane=Grüne Buntglasscheibe +Blue Stained Glass Pane=Blaue Buntglasscheibe +Light Blue Stained Glass Pane=Hellblaue Buntglasscheibe +Black Stained Glass Pane=Schwarze Buntglasscheibe +White Stained Glass Pane=Weiße Buntglasscheibe +Yellow Stained Glass Pane=Gelbe Buntglasscheibe +Brown Stained Glass Pane=Braune Buntglasscheibe +Orange Stained Glass Pane=Orange Buntglasscheibe +Pink Stained Glass Pane=Rosa Buntglasscheibe +Grey Stained Glass Pane=Graue Buntglasscheibe +Lime Stained Glass Pane=Lindgrüne Buntglasscheibe +Light Grey Stained Glass Pane=Hellgraue Buntglasscheibe +Magenta Stained Glass Pane=Magenta Buntglasscheibe +Purple Stained Glass Pane=Violette Buntglasscheibe +Cyan Stained Glass Pane=Türkise Buntglasscheibe From 8ee1521f14bd85c65274f5a3340d835be66ed245 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sat, 16 Mar 2019 02:44:52 +0100 Subject: [PATCH 173/737] Translation: Add support for horse armor --- mods/ENTITIES/mobs_mc/1_items_default.lua | 12 ++++++------ mods/ENTITIES/mobs_mc/locale/mobs_mc.de.tr | 6 ++++++ mods/ENTITIES/mobs_mc/locale/template.txt | 6 ++++++ 3 files changed, 18 insertions(+), 6 deletions(-) diff --git a/mods/ENTITIES/mobs_mc/1_items_default.lua b/mods/ENTITIES/mobs_mc/1_items_default.lua index 3a58bd49..9a36256a 100644 --- a/mods/ENTITIES/mobs_mc/1_items_default.lua +++ b/mods/ENTITIES/mobs_mc/1_items_default.lua @@ -278,8 +278,8 @@ local horse_armor_use = "Rightclick a horse to put on the horse armor. Donkeys a -- TODO: Balance the horse armor strength, compare with MC armor strength if c("iron_horse_armor") then minetest.register_craftitem("mobs_mc:iron_horse_armor", { - description = "Iron Horse Armor", - _doc_items_longdesc = "Iron horse armor can be worn by horses to increase their protection from harm a bit.", + description = S("Iron Horse Armor"), + _doc_items_longdesc = S("Iron horse armor can be worn by horses to increase their protection from harm a bit."), _doc_items_usagehelp = horse_armor_use, inventory_image = "mobs_mc_iron_horse_armor.png", _horse_overlay_image = "mobs_mc_horse_armor_iron.png", @@ -289,8 +289,8 @@ if c("iron_horse_armor") then end if c("gold_horse_armor") then minetest.register_craftitem("mobs_mc:gold_horse_armor", { - description = "Golden Horse Armor", - _doc_items_longdesc = "Golden horse armor can be worn by horses to increase their protection from harm.", + description = S("Golden Horse Armor"), + _doc_items_longdesc = S("Golden horse armor can be worn by horses to increase their protection from harm."), _doc_items_usagehelp = horse_armor_use, inventory_image = "mobs_mc_gold_horse_armor.png", _horse_overlay_image = "mobs_mc_horse_armor_gold.png", @@ -300,8 +300,8 @@ if c("gold_horse_armor") then end if c("diamond_horse_armor") then minetest.register_craftitem("mobs_mc:diamond_horse_armor", { - description = "Diamond Horse Armor", - _doc_items_longdesc = "Diamond horse armor can be worn by horses to greatly increase their protection from harm.", + description = S("Diamond Horse Armor"), + _doc_items_longdesc = S("Diamond horse armor can be worn by horses to greatly increase their protection from harm."), _doc_items_usagehelp = horse_armor_use, inventory_image = "mobs_mc_diamond_horse_armor.png", _horse_overlay_image = "mobs_mc_horse_armor_diamond.png", diff --git a/mods/ENTITIES/mobs_mc/locale/mobs_mc.de.tr b/mods/ENTITIES/mobs_mc/locale/mobs_mc.de.tr index c5b6e73c..ce21cf81 100644 --- a/mods/ENTITIES/mobs_mc/locale/mobs_mc.de.tr +++ b/mods/ENTITIES/mobs_mc/locale/mobs_mc.de.tr @@ -52,3 +52,9 @@ Wolf=Wolf Husk=Wüstenzombie Zombie=Zombie Zombie Pigman=Schweinezombie +Iron Horse Armor=Eisenpferderüstung +Iron horse armor can be worn by horses to increase their protection from harm a bit.=Eine Eisenpferderüstung kann von Pferden getragen werden, um ihren Schutz vor Schaden etwas zu erhöhen. +Golden Horse Armor=Goldpferderüstung +Golden horse armor can be worn by horses to increase their protection from harm.=Eine Goldpferderüstung kann von Pferden getragen werden, um ihren Schutz vor Schaden zu erhöhen. +Diamond Horse Armor=Diamantpferderüstung +Diamond horse armor can be worn by horses to greatly increase their protection from harm.=Eine Diamantpferderüstung kann von Pferden getragen werden, um ihren Schutz vor Schaden beträchtlich zu erhöhen. diff --git a/mods/ENTITIES/mobs_mc/locale/template.txt b/mods/ENTITIES/mobs_mc/locale/template.txt index 0b80aef6..6b36cc8f 100644 --- a/mods/ENTITIES/mobs_mc/locale/template.txt +++ b/mods/ENTITIES/mobs_mc/locale/template.txt @@ -52,3 +52,9 @@ Wolf= Husk= Zombie= Zombie Pigman= +Iron Horse Armor= +Iron horse armor can be worn by horses to increase their protection from harm a bit.= +Golden Horse Armor= +Golden horse armor can be worn by horses to increase their protection from harm.= +Diamond Horse Armor= +Diamond horse armor can be worn by horses to greatly increase their protection from harm.= From 8cfcbea9cb6f0a7682f8fc370daa4cf56a60ed64 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sat, 16 Mar 2019 03:09:51 +0100 Subject: [PATCH 174/737] Fix commandblock crash if opening empty one --- mods/ITEMS/REDSTONE/mesecons_commandblock/init.lua | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/mods/ITEMS/REDSTONE/mesecons_commandblock/init.lua b/mods/ITEMS/REDSTONE/mesecons_commandblock/init.lua index 281b97b1..7cd7d6c5 100644 --- a/mods/ITEMS/REDSTONE/mesecons_commandblock/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons_commandblock/init.lua @@ -145,6 +145,9 @@ local on_rightclick = function(pos, node, player, itemstack, pointed_thing) local meta = minetest.get_meta(pos) local commands = meta:get_string("commands") + if not commands then + commands = "" + end local commander = meta:get_string("commander") local commanderstr if commander == "" or commander == nil then @@ -263,7 +266,7 @@ minetest.register_node("mesecons_commandblock:commandblock_on", { minetest.register_on_player_receive_fields(function(player, formname, fields) if string.sub(formname, 1, 13) == "commandblock_" then - if not fields.submit and not fields.key_enter and not fields.doc then + if (not fields.submit and not fields.key_enter and not fields.doc) or (not fields.commands) then return end local privs = minetest.get_player_privs(player:get_player_name()) From 7aaafdca03cea0bc42dc9f6256b3d6b3229071fb Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sat, 16 Mar 2019 03:18:16 +0100 Subject: [PATCH 175/737] Translate a few missing formspec elements --- mods/ITEMS/mcl_beds/functions.lua | 21 ++++++++++--------- mods/ITEMS/mcl_beds/locale/mcl_beds.de.tr | 7 +++++++ mods/ITEMS/mcl_beds/locale/template.txt | 7 +++++++ mods/ITEMS/mcl_crafting_table/init.lua | 2 +- .../locale/mcl_crafting_table.de.tr | 1 + .../mcl_crafting_table/locale/template.txt | 1 + mods/ITEMS/mcl_furnaces/init.lua | 4 ++-- .../mcl_furnaces/locale/mcl_furnaces.de.tr | 1 + mods/ITEMS/mcl_furnaces/locale/template.txt | 1 + 9 files changed, 32 insertions(+), 13 deletions(-) diff --git a/mods/ITEMS/mcl_beds/functions.lua b/mods/ITEMS/mcl_beds/functions.lua index 3a4877a6..73e1cebc 100644 --- a/mods/ITEMS/mcl_beds/functions.lua +++ b/mods/ITEMS/mcl_beds/functions.lua @@ -1,4 +1,5 @@ local S = minetest.get_translator("mcl_beds") +local F = minetest.formspec_escape local pi = math.pi local player_in_bed = 0 @@ -201,8 +202,8 @@ local function update_formspecs(finished) local form_n = "size[8,15;true]" local all_in_bed = ges == player_in_bed local night_skip = is_night_skip_enabled() - local button_leave = "button_exit[2,12;4,0.75;leave;Leave bed]" - local button_abort = "button_exit[2,12;4,0.75;leave;Abort sleep]" + local button_leave = "button_exit[2,12;4,0.75;leave;"..F(S("Leave bed")).."]" + local button_abort = "button_exit[2,12;4,0.75;leave;"..F(S("Abort sleep")).."]" local bg_presleep = "bgcolor[#00000080;true]" local bg_sleep = "bgcolor[#000000FF;true]" @@ -212,33 +213,33 @@ local function update_formspecs(finished) end return elseif not is_sp then - local text = string.format("Players in bed: %d/%d", player_in_bed, ges) + local text = S("Players in bed: @1/@2", player_in_bed, ges) if not night_skip then - text = text .. "\n" .. "Note: Night skip is disabled." + text = text .. "\n" .. S("Note: Night skip is disabled.") form_n = form_n .. bg_presleep form_n = form_n .. button_leave elseif all_in_bed then - text = text .. "\n" .. "You're sleeping." + text = text .. "\n" .. S("You're sleeping.") form_n = form_n .. bg_sleep form_n = form_n .. button_abort else - text = text .. "\n" .. "You will fall asleep when all players are in bed." + text = text .. "\n" .. S("You will fall asleep when all players are in bed.") form_n = form_n .. bg_presleep form_n = form_n .. button_leave end - form_n = form_n .. "label[2.2,7.5;"..minetest.formspec_escape(text).."]" + form_n = form_n .. "label[2.2,7.5;"..F(text).."]" else local text if night_skip then - text = "You're sleeping." + text = S("You're sleeping.") form_n = form_n .. bg_sleep form_n = form_n .. button_abort else - text = "You're in bed." .. "\n" .. "Note: Night skip is disabled." + text = S("You're in bed.") .. "\n" .. S("Note: Night skip is disabled.") form_n = form_n .. bg_presleep form_n = form_n .. button_leave end - form_n = form_n .. "label[2.2,7.5;"..minetest.formspec_escape(text).."]" + form_n = form_n .. "label[2.2,7.5;"..F(text).."]" end for name,_ in pairs(mcl_beds.player) do diff --git a/mods/ITEMS/mcl_beds/locale/mcl_beds.de.tr b/mods/ITEMS/mcl_beds/locale/mcl_beds.de.tr index 1404bbf8..bcf26fc3 100644 --- a/mods/ITEMS/mcl_beds/locale/mcl_beds.de.tr +++ b/mods/ITEMS/mcl_beds/locale/mcl_beds.de.tr @@ -30,3 +30,10 @@ It's too dangerous to sleep here!=Es ist zu gefährlich, hier zu schlafen! New respawn position set! But you can only sleep at night or during a thunderstorm.=Neue Wiedereinstiegsposition gesetzt! Aber Sie können nur nachts oder während eines Gewittersturms schlafen. You can only sleep at night or during a thunderstorm.=Sie können nur nachts oder während eines Gewittersturms schlafen. New respawn position set!=Neue Wiedereinstiegsposition gesetzt! +Leave bed=Bett verlassen +Abort sleep=Schlaf abbrechen +Players in bed: @1/@2=Spieler im Bett: @1/@2 +Note: Night skip is disabled.=Anmerkung: Überspringen der Nacht deaktiviert. +You're sleeping.=Sie schlafen. +You will fall asleep when all players are in bed.=Sie werden einschlafen, wenn alle Spieler im Bett sind. +You're in bed.=Sie sind im Bett. diff --git a/mods/ITEMS/mcl_beds/locale/template.txt b/mods/ITEMS/mcl_beds/locale/template.txt index 13901c19..0cba8424 100644 --- a/mods/ITEMS/mcl_beds/locale/template.txt +++ b/mods/ITEMS/mcl_beds/locale/template.txt @@ -30,3 +30,10 @@ It's too dangerous to sleep here!= New respawn position set! But you can only sleep at night or during a thunderstorm.= You can only sleep at night or during a thunderstorm.= New respawn position set!= +Leave bed= +Abort sleep= +Players in bed: @1/@2= +Note: Night skip is disabled.= +You're sleeping.= +You will fall asleep when all players are in bed.= +You're in bed.= diff --git a/mods/ITEMS/mcl_crafting_table/init.lua b/mods/ITEMS/mcl_crafting_table/init.lua index cfe867c2..8cc51ac9 100644 --- a/mods/ITEMS/mcl_crafting_table/init.lua +++ b/mods/ITEMS/mcl_crafting_table/init.lua @@ -22,7 +22,7 @@ minetest.register_node("mcl_crafting_table:crafting_table", { "list[current_player;craft;1.75,0.5;3,3;]".. "list[current_player;craftpreview;6.1,1.5;1,1;]".. "image_button[0.75,1.5;1,1;craftguide_book.png;__mcl_craftguide;]".. - "tooltip[__mcl_craftguide;Recipe book]".. + "tooltip[__mcl_craftguide;"..minetest.formspec_escape(S("Recipe book")).."]".. "listring[current_player;main]".. "listring[current_player;craft]" diff --git a/mods/ITEMS/mcl_crafting_table/locale/mcl_crafting_table.de.tr b/mods/ITEMS/mcl_crafting_table/locale/mcl_crafting_table.de.tr index 5831b881..3db0460b 100644 --- a/mods/ITEMS/mcl_crafting_table/locale/mcl_crafting_table.de.tr +++ b/mods/ITEMS/mcl_crafting_table/locale/mcl_crafting_table.de.tr @@ -2,3 +2,4 @@ Crafting Table=Werkbank A crafting table is a block which grants you access to a 3×3 crafting grid which allows you to perform advanced crafts.=Die Werkbank ist ein Block, mit dem Sie Zugriff auf ein 3×3-Fertigungsgitter erhalten, wodurch sie fortgeschrittene Dinge herstellen können. Rightclick the crafting table to access the 3×3 crafting grid.=Rechtsklicken Sie auf die Werkbank, um auf das 3×3-Fertigungsgitter zuzugreifen. +Recipe book=Fertigungsbuch diff --git a/mods/ITEMS/mcl_crafting_table/locale/template.txt b/mods/ITEMS/mcl_crafting_table/locale/template.txt index bd0e5879..f08bf3a7 100644 --- a/mods/ITEMS/mcl_crafting_table/locale/template.txt +++ b/mods/ITEMS/mcl_crafting_table/locale/template.txt @@ -2,3 +2,4 @@ Crafting Table= A crafting table is a block which grants you access to a 3×3 crafting grid which allows you to perform advanced crafts.= Rightclick the crafting table to access the 3×3 crafting grid.= +Recipe book= diff --git a/mods/ITEMS/mcl_furnaces/init.lua b/mods/ITEMS/mcl_furnaces/init.lua index d96bdf88..0d19a684 100644 --- a/mods/ITEMS/mcl_furnaces/init.lua +++ b/mods/ITEMS/mcl_furnaces/init.lua @@ -19,7 +19,7 @@ local function active_formspec(fuel_percent, item_percent) "image[4.1,1.5;1.5,1;gui_furnace_arrow_bg.png^[lowpart:".. (item_percent)..":gui_furnace_arrow_fg.png^[transformR270]".. "image_button[8,0;1,1;craftguide_book.png;craftguide;]".. - "tooltip[craftguide;Recipe book]".. + "tooltip[craftguide;"..minetest.formspec_escape(S("Recipe book")).."]".. "listring[current_name;dst]".. "listring[current_player;main]".. "listring[current_name;src]".. @@ -39,7 +39,7 @@ local inactive_formspec = "size[9,8.75]".. "image[2.75,1.5;1,1;default_furnace_fire_bg.png]".. "image[4.1,1.5;1.5,1;gui_furnace_arrow_bg.png^[transformR270]".. "image_button[8,0;1,1;craftguide_book.png;craftguide;]".. - "tooltip[craftguide;Recipe book]".. + "tooltip[craftguide;"..minetest.formspec_escape(S("Recipe book")).."]".. "listring[current_name;dst]".. "listring[current_player;main]".. "listring[current_name;src]".. diff --git a/mods/ITEMS/mcl_furnaces/locale/mcl_furnaces.de.tr b/mods/ITEMS/mcl_furnaces/locale/mcl_furnaces.de.tr index 34ea30b8..0480499c 100644 --- a/mods/ITEMS/mcl_furnaces/locale/mcl_furnaces.de.tr +++ b/mods/ITEMS/mcl_furnaces/locale/mcl_furnaces.de.tr @@ -4,3 +4,4 @@ Furnaces cook or smelt several items, using a furnace fuel, into something else. Use the furnace to open the furnace menu. Place a furnace fuel in the lower slot and the source material in the upper slot. The furnace will slowly use its fuel to smelt the item. The result will be placed into the output slot at the right side.=Benutzen Sie den Ofen, um das Ofenmenü zu öffnen. Platzieren Sie einen Brennstoff in den unteren Platz und das Quellmaterial in den oberen Platz. Der Ofen wird langsam seinen Brennstoff benutzen, um den Gegenstand zu schmelzen. Das Ergebnis landet im Ausgabeplatz rechts. Use the recipe book to see what you can smelt, what you can use as fuel and how long it will burn.=Benutzen Sie das Rezeptbuch, um zu sehen, was Sie schmelzen können und was Sie als Brennstoff benutzen können und wie lange dieser brennt. Burning Furnace=Aktiver Ofen +Recipe book=Fertigungsbuch diff --git a/mods/ITEMS/mcl_furnaces/locale/template.txt b/mods/ITEMS/mcl_furnaces/locale/template.txt index fee08e5a..7d75ec28 100644 --- a/mods/ITEMS/mcl_furnaces/locale/template.txt +++ b/mods/ITEMS/mcl_furnaces/locale/template.txt @@ -4,3 +4,4 @@ Furnaces cook or smelt several items, using a furnace fuel, into something else. Use the furnace to open the furnace menu. Place a furnace fuel in the lower slot and the source material in the upper slot. The furnace will slowly use its fuel to smelt the item. The result will be placed into the output slot at the right side.= Use the recipe book to see what you can smelt, what you can use as fuel and how long it will burn.= Burning Furnace= +Recipe book= From 522a2b9a733af5d89aa8f3959b10981497594803 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sat, 16 Mar 2019 03:19:54 +0100 Subject: [PATCH 176/737] Fix uneditable command block when empty --- mods/ITEMS/REDSTONE/mesecons_commandblock/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/REDSTONE/mesecons_commandblock/init.lua b/mods/ITEMS/REDSTONE/mesecons_commandblock/init.lua index 7cd7d6c5..e8749f02 100644 --- a/mods/ITEMS/REDSTONE/mesecons_commandblock/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons_commandblock/init.lua @@ -165,7 +165,7 @@ local on_rightclick = function(pos, node, player, itemstack, pointed_thing) textarea_name = "" submit = "" end - if commands == "" then + if not can_edit and commands == "" then textarea = "label[0.5,0.5;"..F(S("No commands.")).."]" else textarea = "textarea[0.5,0.5;8.5,4;"..textarea_name..";"..F(S("Commands:"))..";"..F(commands).."]" From 550fa39d8633349b5a8efcfb5ff8a59530e74d28 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sat, 16 Mar 2019 03:36:32 +0100 Subject: [PATCH 177/737] Make achievements translatable --- mods/HUD/awards/api.lua | 16 +++--- mods/HUD/awards/locale/awards.de.tr | 53 ++++++++++--------- mods/HUD/awards/locale/template.txt | 51 +++++++++--------- mods/HUD/awards/triggers.lua | 44 +++++++-------- mods/HUD/mcl_achievements/init.lua | 4 +- .../locale/mcl_achievements.de.tr | 14 ++--- mods/HUD/mcl_achievements/locale/template.txt | 2 +- 7 files changed, 93 insertions(+), 91 deletions(-) diff --git a/mods/HUD/awards/api.lua b/mods/HUD/awards/api.lua index d377f37c..b25a2aaa 100644 --- a/mods/HUD/awards/api.lua +++ b/mods/HUD/awards/api.lua @@ -274,9 +274,9 @@ function awards.unlock(name, award) elseif awards.show_mode == "chat" then local chat_announce if awdef.secret == true then - chat_announce = S("Secret achievement gotten: %s") + chat_announce = S("Secret achievement gotten: @1") else - chat_announce = S("Achievement gotten: %s") + chat_announce = S("Achievement gotten: @1") end -- use the chat console to send it minetest.chat_send_player(name, string.format(chat_announce, title)) @@ -386,12 +386,14 @@ function awards.getFormspec(name, to, sid) if def and def.title then title = def.title end - local status = "%s" + local status if item.got then - status = S("%s (got)") + status = S("@1 (got)", title) + else + status = title end formspec = formspec .. "label[1,2.75;" .. - string.format(status, minetest.formspec_escape(title)) .. + minetest.formspec_escape(status) .. "]" if def and def.icon then formspec = formspec .. "image[1,0;3,3;" .. def.icon .. "]" @@ -466,14 +468,14 @@ function awards.show_to(name, to, sid, text) minetest.chat_send_player(to, S("You have not gotten any awards.")) return end - minetest.chat_send_player(to, string.format(S("%s’s awards:"), name)) + minetest.chat_send_player(to, S("@1’s awards:"), name) for _, str in pairs(awards.players[name].unlocked) do local def = awards.def[str] if def then if def.title then if def.description then - minetest.chat_send_player(to, string.format(S("%s: %s"), def.title, def.description)) + minetest.chat_send_player(to, S("@1: @2", def.title, def.description)) else minetest.chat_send_player(to, def.title) end diff --git a/mods/HUD/awards/locale/awards.de.tr b/mods/HUD/awards/locale/awards.de.tr index 6fd3661a..49663d11 100644 --- a/mods/HUD/awards/locale/awards.de.tr +++ b/mods/HUD/awards/locale/awards.de.tr @@ -1,13 +1,14 @@ -%s: %s=%s: %s -%s (got)=%s (erhalten) -%s’s awards:=Auszeichnungen von %s: +# textdomain:awards +@1: @2=@1: @2 +@1 (got)=@1 (erhalten) +@1’s awards:=Auszeichnungen von @1: (Secret Award)=(Geheime Auszeichnung) Achievement gotten!=Auszeichnung erhalten! Achievement gotten:=Auszeichnung erhalten: -Achievement gotten: %s=Auszeichnung erhalten: %s +Achievement gotten: @1=Auszeichnung erhalten: @1 Secret achievement gotten!=Geheime Auszeichnung erhalten! Secret achievement gotten:=Geheime Auszeichnung erhalten: -Secret achievement gotten: %s=Geheime Auszeichnung erhalten: %s +Secret achievement gotten: @1=Geheime Auszeichnung erhalten: @1 Get this achievement to find out what it is.=Verdienen Sie sich diese Auszeichnung, um herauszufinden, was sie ist. You have not gotten any awards.=Sie haben noch keine Auszeichnungen. You've disabled awards. Type /awards enable to reenable.=Sie haben die Auszeichnungen deaktiviert. Geben Sie »/awards enable« ein, um sie wieder zu aktivieren. @@ -22,29 +23,29 @@ You have disabled your achievements.=Sie haben Ihre Auszeichnungen deaktiviert. You have enabled your achievements.=Sie haben Ihre Auszeichnungen aktiviert. [c|clear|disable|enable]=[c|clear|disable|enable] Awards=Auszeichnungen -%d/%d crafted=%d/%d gefertigt -%d/%d deaths=%d/%d Tode -%d/%d dug=%d/%d abgebaut -%d/%d game joins=%d/%d Spielen beigetreten -%d/%d lines of chat=%d/%d Chatzeilen -%d/%d placed=%d/%d platziert -Die %d times.=Sterben Sie %d mal. +@1/@2 crafted=@1/@2 gefertigt +@1/@2 deaths=@1/@2 Tode +@1/@2 dug=@1/@2 abgebaut +@1/@2 game joins=@1/@2 Spielen beigetreten +@1/@2 lines of chat=@1/@2 Chatzeilen +@1/@2 placed=@1/@2 platziert +Die @1 times.=Sterben Sie @1 mal. Die.=Sterben Sie. -Craft: %d×%s=Fertigen Sie an: %d×%s -Craft: %s=Fertigen Sie an: %s -Mine a block: %s=Bauen Sie einen Block ab: %s -Mine blocks: %d×%s=Bauen Sie Blöcke ab: %d×%s -Place a block: %s=Platzieren Sie einen Block: %s -Place blocks: %d×%s=Platzieren Sie Blöcke: %d×%s +Craft: @1×@2=Fertigen Sie an: @1×@2 +Craft: @1=Fertigen Sie an: @1 +Mine a block: @1=Bauen Sie einen Block ab: @1 +Mine blocks: @1×@2=Bauen Sie Blöcke ab: @1×@2 +Place a block: @1=Platzieren Sie einen Block: @1 +Place blocks: @1×@2=Platzieren Sie Blöcke: @1×@2 Join the game.=Treten Sie dem Spiel bei. -Join the game %d times.=Treten Sie dem Spiel %d mal bei. +Join the game @1 times.=Treten Sie dem Spiel @1 mal bei. Show details of an achievement=Details einer Auszeichnung anzeigen OK=OK Error: No awards available.=Fehler: Keine Auszeichnungen vorhanden. -Eat: %d×%s=Essen Sie: %d×%s -Eat: %s=Essen Sie: %s -%d/%d eaten=%d/%d gegessen -Place %d block(s).=Platzieren Sie %d Blöcke. -Dig %d block(s).=Bauen Sie %d Blöcke ab. -Eat %d item(s).=Essen Sie %d Dinge. -Craft %d item(s).=Fertigen Sie %d Gegenstände. +Eat: @1×@2=Essen Sie: @1×@2 +Eat: @1=Essen Sie: @1 +@1/@2 eaten=@1/@2 gegessen +Place @1 block(s).=Platzieren Sie @1 Blöcke. +Dig @1 block(s).=Bauen Sie @1 Blöcke ab. +Eat @1 item(s).=Essen Sie @1 Dinge. +Craft @1 item(s).=Fertigen Sie @1 Gegenstände. diff --git a/mods/HUD/awards/locale/template.txt b/mods/HUD/awards/locale/template.txt index c5ca6ab6..bcfb67ac 100644 --- a/mods/HUD/awards/locale/template.txt +++ b/mods/HUD/awards/locale/template.txt @@ -1,39 +1,40 @@ -%d/%d chat messages= -%d/%d crafted= -%d/%d deaths= -%d/%d dug= -%d/%d game joins= -%d/%d placed= -%s (got)= -%s: %s= -%s’s awards:= +# textdomain:awards +@1/@2 chat messages= +@1/@2 crafted= +@1/@2 deaths= +@1/@2 dug= +@1/@2 game joins= +@1/@2 placed= +@1 (got)= +@1: @1= +@1’s awards:= (Secret Award)= = = A Cat in a Pop-Tart?!= Achievement gotten!= Achievement gotten:= -Achievement gotten: %s= +Achievement gotten: @1= Achievement not found.= All your awards and statistics have been cleared. You can now start again.= Awards= -Craft: %d×%s= -Craft: %s= -Die %d times.= +Craft: @1×@2= +Craft: @1= +Die @1 times.= Die.= Get the achievements statistics for the given player or yourself= -Join the game %d times.= +Join the game @1 times.= Join the game.= List awards in chat (deprecated)= -Place a block: %s= -Place blocks: %d×%s= +Place a block: @1= +Place blocks: @1×@2= Secret Achievement gotten!= Secret Achievement gotten:= -Secret Achievement gotten: %s= +Secret Achievement gotten: @1= Show details of an achievement= Show, clear, disable or enable your achievements= Get this achievement to find out what it is.= -Write %d chat messages.= +Write @1 chat messages.= Write something in chat.= You have disabled your achievements.= You have enabled your achievements.= @@ -42,10 +43,10 @@ You've disabled awards. Type /awards enable to reenable.= [c|clear|disable|enable]= OK= Error: No awards available.= -Eat: %d×%s= -Eat: %s= -%d/%d eaten= -Place %d block(s).= -Dig %d block(s).= -Eat %d item(s).= -Craft %d item(s).= +Eat: @1×@2= +Eat: @1= +@1/@2 eaten= +Place @1 block(s).= +Dig @1 block(s).= +Eat @1 item(s).= +Craft @1 item(s).= diff --git a/mods/HUD/awards/triggers.lua b/mods/HUD/awards/triggers.lua index 42e126bd..318a4b28 100644 --- a/mods/HUD/awards/triggers.lua +++ b/mods/HUD/awards/triggers.lua @@ -32,7 +32,7 @@ awards.register_trigger("dig", function(def) end return { perc = itemcount / tmp.target, - label = string.format(S("%d/%d dug"), itemcount, tmp.target) + label = S("@1/@2 dug", itemcount, tmp.target) } end def.getDefaultDescription = function(self) @@ -42,12 +42,12 @@ awards.register_trigger("dig", function(def) nname = self.trigger.node end if self.trigger.target ~= 1 then - return string.format(S("Mine blocks: %d×%s"), self.trigger.target, nname) + return S("Mine blocks: @1×@2", self.trigger.target, nname) else - return string.format(S("Mine a block: %s"), nname) + return S("Mine a block: @1", nname) end else - return string.format(S("Mine %d block(s)."), self.trigger.target) + return S("Mine @1 block(s).", self.trigger.target) end end end) @@ -68,7 +68,7 @@ awards.register_trigger("place", function(def) end return { perc = itemcount / tmp.target, - label = string.format(S("%d/%d placed"), itemcount, tmp.target) + label = S("@1/@2 placed"), itemcount, tmp.target } end def.getDefaultDescription = function(self) @@ -78,12 +78,12 @@ awards.register_trigger("place", function(def) nname = self.trigger.node end if self.trigger.target ~= 1 then - return string.format(S("Place blocks: %d×%s"), self.trigger.target, nname) + return S("Place blocks: @1×@2", self.trigger.target, nname) else - return string.format(S("Place a block: %s"), nname) + return S("Place a block: @1", nname) end else - return string.format(S("Place %d block(s)."), self.trigger.target) + return S("Place @1 block(s).", self.trigger.target) end end end) @@ -104,7 +104,7 @@ awards.register_trigger("eat", function(def) end return { perc = itemcount / tmp.target, - label = string.format(S("%d/%d eaten"), itemcount, tmp.target) + label = S("@1/@2 eaten", itemcount, tmp.target) } end def.getDefaultDescription = function(self) @@ -114,12 +114,12 @@ awards.register_trigger("eat", function(def) iname = self.trigger.iode end if self.trigger.target ~= 1 then - return string.format(S("Eat: %d×%s"), self.trigger.target, iname) + return S("Eat: @1×@2", self.trigger.target, iname) else - return string.format(S("Eat: %s"), iname) + return S("Eat: @1", iname) end else - return string.format(S("Eat %d item(s)."), self.trigger.target) + return S("Eat @1 item(s).", self.trigger.target) end end end) @@ -134,12 +134,12 @@ awards.register_trigger("death", function(def) local itemcount = data.deaths or 0 return { perc = itemcount / tmp.target, - label = string.format(S("%d/%d deaths"), itemcount, tmp.target) + label = S("@1/@2 deaths", itemcount, tmp.target) } end def.getDefaultDescription = function(self) if self.trigger.target ~= 1 then - return string.format(S("Die %d times."), self.trigger.target) + return S("Die @1 times.", self.trigger.target) else return S("Die.") end @@ -156,12 +156,12 @@ awards.register_trigger("chat", function(def) local itemcount = data.chats or 0 return { perc = itemcount / tmp.target, - label = string.format(S("%d/%d chat messages"), itemcount, tmp.target) + label = S("@1/@2 chat messages", itemcount, tmp.target) } end def.getDefaultDescription = function(self) if self.trigger.target ~= 1 then - return string.format(S("Write %d chat messages."), self.trigger.target) + return S("Write @1 chat messages.", self.trigger.target) else return S("Write something in chat.") end @@ -178,12 +178,12 @@ awards.register_trigger("join", function(def) local itemcount = data.joins or 0 return { perc = itemcount / tmp.target, - label = string.format(S("%d/%d game joins"), itemcount, tmp.target) + label = S("@1/@2 game joins", itemcount, tmp.target) } end def.getDefaultDescription = function(self) if self.trigger.target ~= 1 then - return string.format(S("Join the game %d times."), self.trigger.target) + return S("Join the game @1 times.", self.trigger.target) else return S("Join the game.") end @@ -206,7 +206,7 @@ awards.register_trigger("craft", function(def) end return { perc = itemcount / tmp.target, - label = string.format(S("%d/%d crafted"), itemcount, tmp.target) + label = S("@1/@2 crafted", itemcount, tmp.target) } end def.getDefaultDescription = function(self) @@ -216,12 +216,12 @@ awards.register_trigger("craft", function(def) iname = self.trigger.item end if self.trigger.target ~= 1 then - return string.format(S("Craft: %d×%s"), self.trigger.target, iname) + return S("Craft: @1×@2", self.trigger.target, iname) else - return string.format(S("Craft: %s"), iname) + return S("Craft: @1", iname) end else - return string.format(S("Craft %d item(s)."), self.trigger.target) + return S("Craft @1 item(s).", self.trigger.target) end end end) diff --git a/mods/HUD/mcl_achievements/init.lua b/mods/HUD/mcl_achievements/init.lua index 8b4e1c48..cfeea18b 100644 --- a/mods/HUD/mcl_achievements/init.lua +++ b/mods/HUD/mcl_achievements/init.lua @@ -3,9 +3,7 @@ -- If true, activates achievements from other Minecraft editions (XBox, PS, etc.) local non_pc_achievements = false --- TODO: Enable translator when there's a translation --- local S = minetest.get_translator("mcl_achievements") -local S = function(s) return s end +local S = minetest.get_translator("mcl_achievements") -- Achievements from PC Edition diff --git a/mods/HUD/mcl_achievements/locale/mcl_achievements.de.tr b/mods/HUD/mcl_achievements/locale/mcl_achievements.de.tr index 28f98272..49c486e4 100644 --- a/mods/HUD/mcl_achievements/locale/mcl_achievements.de.tr +++ b/mods/HUD/mcl_achievements/locale/mcl_achievements.de.tr @@ -1,13 +1,13 @@ -# textdomain: mcl_achievements +# textdomain:mcl_achievements Aquire Hardware=Schmied Bake Bread=Brot backen Benchmarking=Tischler Cow Tipper=Kuhschubser -Craft a bookshelf.=Fertigen Sie ein Bücherregal -Craft a cake using wheat, sugar, milk and an egg.=Fertigen Sie einen Kuchen mit Weizen, Zucker, Milch und einem Ei. +Craft a bookshelf.=Fertigen Sie ein Bücherregal. +Craft a cake using wheat, sugar, milk and an egg.=Fertigen Sie einen Kuchen aus Weizen, Zucker, Milch und einem Ei. Craft a crafting table from 4 wooden planks.=Fertigen Sie eine Werkbank aus 4 Holzplanken. -Craft a stone pickaxe using sticks and cobblestone.=Fertigen Sie eine Steinspitzhacke mit Stöcken und Kopfsteinpflaster. -Craft a wooden sword using wooden planks and sticks on a crafting table.=Fertigen Sie ein Holzschwert mit Holzplanken und Stöcken an einer Werkbank. +Craft a stone pickaxe using sticks and cobblestone.=Fertigen Sie eine Steinspitzhacke aus Stöcken und Kopfsteinpflaster. +Craft a wooden sword using wooden planks and sticks on a crafting table.=Fertigen Sie ein Holzschwert aus Holzplanken und Stöcken an einer Werkbank. DIAMONDS!=DIAMANTEN! Delicious Fish=Leckerer Fisch Dispense With This=Ein Auge darauf werfen @@ -26,7 +26,7 @@ Mine emerald ore.=Bauen Sie Smaragderz ab. On A Rail=Auf der Schiene Pick up a blaze rod from the floor.=Sammeln Sie eine Lohenrute vom Boden auf. Pick up a diamond from the floor.=Sammeln Sie einen Diamanten vom Boden auf. -Pick up a wood item from the ground.@nHint: Punch a tree trunk until it pops out as an item.=Sammeln Sie ein Holz vom Boden auf.@nTipp: Hauen Sie einen Baumstamm, bis er als Gegenstand herausploppt. +Pick up a wood item from the ground.@nHint: Punch a tree trunk until it pops out as an item.=Sammeln Sie ein Stück Holz vom Boden auf.@nTipp: Hauen Sie einen Baumstamm, bis er als Gegenstand herausploppt. Pick up leather from the floor.@nHint: Cows and some other animals have a chance to drop leather, when killed.=Sammeln Sie Leder vom Boden auf.@nTipp: Kühe und einige andere Tiere werfen vielleicht Leder ab, wenn sie sterben. Place a dispenser.=Platzieren Sie einen Werfer Place a flower pot.=Platzieren Sie einen Blumentopf @@ -41,7 +41,7 @@ The Lie=Die Lüge Time to Farm!=Bauernzeit Time to Mine!=Zeit zum Graben! Time to Strike!=Zuschlagen! -Travel by minecart for at least 1000 meters from your starting point in a single ride.=Reisen Sie mit einer Lore für mindestens 1000 Meter vom Startpunkt in einer einzigen Fahrt. +Travel by minecart for at least 1000 meters from your starting point in a single ride.=Reisen Sie mit einer Lore für mindestens 1000 Meter vom Startpunkt aus in einer einzigen Fahrt. Use 8 cobblestones to craft a furnace.=Benutzen Sie 8 Kopfsteinpflaster, um einen Ofen zu fertigen. Use a crafting table to craft a wooden hoe from wooden planks and sticks.=Benutzen Sie eine Werkbank, um eine Holzhacke aus Holzplanken und Stöcken zu fertigen. Use a crafting table to craft a wooden pickaxe from wooden planks and sticks.=Benutzen Sie eine Werkbank, um eine Holzspitzhacke aus Holzplanken und Stöcken zu fertigen. diff --git a/mods/HUD/mcl_achievements/locale/template.txt b/mods/HUD/mcl_achievements/locale/template.txt index 3b630162..ecdba267 100644 --- a/mods/HUD/mcl_achievements/locale/template.txt +++ b/mods/HUD/mcl_achievements/locale/template.txt @@ -1,4 +1,4 @@ -# textdomain: mcl_achievements +# textdomain:mcl_achievements Aquire Hardware= Bake Bread= Benchmarking= From 805fa7628283e85459a5b4606166595f91d71b01 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sat, 16 Mar 2019 04:04:41 +0100 Subject: [PATCH 178/737] Inventory: Translate tab captions --- mods/HUD/mcl_inventory/creative.lua | 50 ++++++++++++------ .../textures/mcl_inventory_fnt_blocks.png | Bin 227 -> 0 bytes .../textures/mcl_inventory_fnt_brew.png | Bin 169 -> 0 bytes .../textures/mcl_inventory_fnt_combat.png | Bin 182 -> 0 bytes .../textures/mcl_inventory_fnt_deco.png | Bin 225 -> 0 bytes .../textures/mcl_inventory_fnt_food.png | Bin 225 -> 0 bytes .../textures/mcl_inventory_fnt_matr.png | Bin 200 -> 0 bytes .../textures/mcl_inventory_fnt_misc.png | Bin 215 -> 0 bytes .../textures/mcl_inventory_fnt_mobs.png | Bin 158 -> 0 bytes .../textures/mcl_inventory_fnt_nix.png | Bin 221 -> 0 bytes .../textures/mcl_inventory_fnt_rail.png | Bin 223 -> 0 bytes .../textures/mcl_inventory_fnt_redstone.png | Bin 174 -> 0 bytes .../textures/mcl_inventory_fnt_tools.png | Bin 174 -> 0 bytes 13 files changed, 33 insertions(+), 17 deletions(-) delete mode 100644 mods/HUD/mcl_inventory/textures/mcl_inventory_fnt_blocks.png delete mode 100644 mods/HUD/mcl_inventory/textures/mcl_inventory_fnt_brew.png delete mode 100644 mods/HUD/mcl_inventory/textures/mcl_inventory_fnt_combat.png delete mode 100644 mods/HUD/mcl_inventory/textures/mcl_inventory_fnt_deco.png delete mode 100644 mods/HUD/mcl_inventory/textures/mcl_inventory_fnt_food.png delete mode 100644 mods/HUD/mcl_inventory/textures/mcl_inventory_fnt_matr.png delete mode 100644 mods/HUD/mcl_inventory/textures/mcl_inventory_fnt_misc.png delete mode 100644 mods/HUD/mcl_inventory/textures/mcl_inventory_fnt_mobs.png delete mode 100644 mods/HUD/mcl_inventory/textures/mcl_inventory_fnt_nix.png delete mode 100644 mods/HUD/mcl_inventory/textures/mcl_inventory_fnt_rail.png delete mode 100644 mods/HUD/mcl_inventory/textures/mcl_inventory_fnt_redstone.png delete mode 100644 mods/HUD/mcl_inventory/textures/mcl_inventory_fnt_tools.png diff --git a/mods/HUD/mcl_inventory/creative.lua b/mods/HUD/mcl_inventory/creative.lua index 1df14238..f3074894 100644 --- a/mods/HUD/mcl_inventory/creative.lua +++ b/mods/HUD/mcl_inventory/creative.lua @@ -162,6 +162,7 @@ local noffset = {} -- numeric tab offset local offset = {} -- string offset: local boffset = {} -- local hoch = {} +local filtername = {} local bg = {} local noffset_x_start = -0.24 @@ -216,6 +217,21 @@ hoch["mobs"] = "^[transformfy" hoch["matr"] = "^[transformfy" hoch["inv"] = "^[transformfy" +filtername = {} +filtername["blocks"] = S("Building Blocks") +filtername["deco"] = S("Decoration Blocks") +filtername["redstone"] = S("Redstone") +filtername["rail"] = S("Transportation") +filtername["misc"] = S("Miscellaneous") +filtername["nix"] = S("Search Items") +filtername["food"] = S("Foodstuffs") +filtername["tools"] = S("Tools") +filtername["combat"] = S("Combat") +filtername["mobs"] = S("Mobs") +--filtername["brew"] = S("Brewing") -- TODO: add brew +filtername["matr"] = S("Materials") +filtername["inv"] = S("Survival Inventory") + local dark_bg = "crafting_creative_bg_dark.png" local function reset_menu_item_bg() @@ -375,9 +391,9 @@ mcl_inventory.set_creative_formspec = function(player, start_i, pagenum, inv_siz "image[" .. offset[this_tab] .. ";1.5,1.44;" .. bg_img .. hoch[this_tab].. "]" .. "image[" .. boffset[this_tab] .. ";1,1;crafting_creative_marker.png]" end - local fnt = "" - if name ~= "inv" then - fnt = "image[0,1;5,0.75;mcl_inventory_fnt_"..name..".png]" + local caption = "" + if name ~= "inv" and filtername[name] then + caption = "label[0,1.1;"..F(minetest.colorize("#313131", filtername[name])).."]" end formspec = "size[10,9.3]".. @@ -385,35 +401,35 @@ mcl_inventory.set_creative_formspec = function(player, start_i, pagenum, inv_siz "background[-0.19,-0.25;10.5,9.87;"..inv_bg.."]".. "label[-5,-5;"..name.."]".. tab(name, "blocks") .. - "tooltip[blocks;"..F(S("Building Blocks")).."]".. + "tooltip[blocks;"..F(filtername["blocks"]).."]".. tab(name, "deco") .. - "tooltip[deco;"..F(S("Decoration Blocks")).."]".. + "tooltip[deco;"..F(filtername["deco"]).."]".. tab(name, "redstone") .. - "tooltip[redstone;"..F(S("Redstone")).."]".. + "tooltip[redstone;"..F(filtername["redstone"]).."]".. tab(name, "rail") .. - "tooltip[rail;"..F(S("Transportation")).."]".. + "tooltip[rail;"..F(filtername["rail"]).."]".. tab(name, "misc") .. - "tooltip[misc;"..F(S("Miscellaneous")).."]".. + "tooltip[misc;"..F(filtername["misc"]).."]".. tab(name, "nix") .. - "tooltip[nix;"..F(S("Search Items")).."]".. - fnt.. + "tooltip[nix;"..F(filtername["nix"]).."]".. + caption.. "list[current_player;main;0,7;9,1;]".. main_list.. tab(name, "food") .. - "tooltip[food;"..F(S("Foodstuffs")).."]".. + "tooltip[food;"..F(filtername["food"]).."]".. tab(name, "tools") .. - "tooltip[tools;"..F(S("Tools")).."]".. + "tooltip[tools;"..F(filtername["tools"]).."]".. tab(name, "combat") .. - "tooltip[combat;"..F(S("Combat")).."]".. + "tooltip[combat;"..F(filtername["combat"]).."]".. tab(name, "mobs") .. - "tooltip[mobs;"..F(S("Mobs")).."]".. + "tooltip[mobs;"..F(filtername["mobs"]).."]".. -- TODO: Add brew --tab(name, "brew") .. - --"tooltip[brew;"..F(S("Brewing")).."]".. + --"tooltip[brew;"..F(filtername["brew"]).."]".. tab(name, "matr") .. - "tooltip[matr;"..F(S("Materials")).."]".. + "tooltip[matr;"..F(filtername["matr"]).."]".. tab(name, "inv") .. - "tooltip[inv;"..F(S("Survival Inventory")).."]".. + "tooltip[inv;"..F(filtername["inv"]).."]".. "list[detached:trash;main;9,7;1,1;]".. "image[9,7;1,1;crafting_creative_trash.png]".. listrings diff --git a/mods/HUD/mcl_inventory/textures/mcl_inventory_fnt_blocks.png b/mods/HUD/mcl_inventory/textures/mcl_inventory_fnt_blocks.png deleted file mode 100644 index 7bd45b455126cc04093930b34c13df42fc017c9d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 227 zcmeAS@N?(olHy`uVBq!ia0y~yU~Fe#U@&K5W?*2Lbv93jfq{WDz$e7@|NsAnhK4WN z%o2qA~E(JK=Cs^PU7i!uTO zPOoiH&HE8vJx||HbJ2soMGPSyTa~yLMZ|883EZObAl*+|WNpCKmmhgn3A?s8We0qi hTk9&K_@`YuV(y!T+c!G)F)%PNc)I$ztaD0e0svmAQBME> diff --git a/mods/HUD/mcl_inventory/textures/mcl_inventory_fnt_brew.png b/mods/HUD/mcl_inventory/textures/mcl_inventory_fnt_brew.png deleted file mode 100644 index 9664aebb0c22daf9228b39e27de7b67b24989e77..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 169 zcmeAS@N?(olHy`uVBq!ia0y~yU~Fe#U@&K7W?*2rn=A5%fq{W7z$e6&fq}u$&`{jh z@Bsq@17k^$UoeBivm0p)3=DyuE{-7;jBigjvNAXdIA1K;@V9&>-@nd>39XKJj4Uaak7^mt&rB@ga8XD<;ZLPH%Q%eg9+W3V~QI(cN#Nntf8|owuz2 zto28>y4XY`q(x8r$+Uo?)`P`Y?ye4S4Eh_o(d>WliU;3TMO?YKG{AAEO1w>%yhgM?@=Ps3bB;#K+BMNn=9jwPS-a{LZx!PT`HS<7cQG(9FnGH9xvX}%WQo;E43M1PQ0}-}|d!NJ<`R(k8&xnYW z>#C3PU;4=T#PYjWqOy5KKk^)%?d2oL5%q|-<+WhMWmD%A$@%r0S09l`6xeKNe7yJ1 zjA;^TEIceN2KP5zKP#eP=x4(p_-Wqj*#Vk{-ZJ8`4YhZkhn|#D{ipOSd+k>J6HS7( VsqNbT85kHCJYD@<);T3K0RW5yPF4T_ diff --git a/mods/HUD/mcl_inventory/textures/mcl_inventory_fnt_mobs.png b/mods/HUD/mcl_inventory/textures/mcl_inventory_fnt_mobs.png deleted file mode 100644 index 26308b6163c30b129c7c81cd56531138db75cbf1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 158 zcmeAS@N?(olHy`uVBq!ia0y~yU~Fe#U@&K7W?*2rn=A5%fq{W7z$e7@MVpzSp&{EI zF9!w&2F8*gzhDN3XE)Lq7#Q3cArulW>tT_k62660iBWG*yE|JNs3rji{RkH6b4`Yo<$JA3Lv$1N46=?n}E N44$rjF6*2UngHfYGxGod diff --git a/mods/HUD/mcl_inventory/textures/mcl_inventory_fnt_nix.png b/mods/HUD/mcl_inventory/textures/mcl_inventory_fnt_nix.png deleted file mode 100644 index 7ecf77613c0db20cd30c2cb6ed100664e05835df..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 221 zcmeAS@N?(olHy`uVBq!ia0y~yU~Fe#U@&K5W?*2Lbv93jfq{WDz$e7@|Ns9l+RO|M z4exeEU1DHhU@8gn3ua&_n|#)Sfq|jX)5S5Qg7NJYMz$tL0r!u3meXsN=NQkE(z;l4 z;Q!HgTVAv;jQ+KBN{|<8!2Cnfe~h>{dIa2mWEtbv^1^rDyeo554=~SSG3yjizms-K}`An-^mLY4>4?YX!)^y cO3*Im2sfs>lSW1k3=9kmp00i_>zopr0K+a;VgLXD diff --git a/mods/HUD/mcl_inventory/textures/mcl_inventory_fnt_rail.png b/mods/HUD/mcl_inventory/textures/mcl_inventory_fnt_rail.png deleted file mode 100644 index f52fd1bf3eeffcfba51e662317d22e70161ecaf8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 223 zcmeAS@N?(olHy`uVBq!ia0y~yU~Fe#U@&K5W?*2Lbv93jfq{WDz$e7@|NsAnhK4WN z%o2#V7d4<;rII@s~HM+p6ato$hZVl z>|FP{e3p;O%OuAi+zVG~hAgq`FKsdi_V^W-xHy30t9HrKgl}uYC*+8fx*h*vbFK6B euO0;k2FF^lA6>e)IT#oi7(8A5T-G@yGywqSVmj>r diff --git a/mods/HUD/mcl_inventory/textures/mcl_inventory_fnt_tools.png b/mods/HUD/mcl_inventory/textures/mcl_inventory_fnt_tools.png deleted file mode 100644 index 97f588fb020ef0b5a829caa133fa8b476039650a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 174 zcmeAS@N?(olHy`uVBq!ia0y~yU~Fe#U@&K5W?*2Lbv93jfq{WDz$e7@|NsAnhK4WN z%o2 Date: Sat, 16 Mar 2019 04:14:21 +0100 Subject: [PATCH 179/737] Translate villager professions --- mods/ENTITIES/mobs_mc/locale/mobs_mc.de.tr | 13 ++++++++++ mods/ENTITIES/mobs_mc/locale/template.txt | 13 ++++++++++ mods/ENTITIES/mobs_mc/villager.lua | 29 +++++++++++----------- 3 files changed, 41 insertions(+), 14 deletions(-) diff --git a/mods/ENTITIES/mobs_mc/locale/mobs_mc.de.tr b/mods/ENTITIES/mobs_mc/locale/mobs_mc.de.tr index ce21cf81..ecf058b4 100644 --- a/mods/ENTITIES/mobs_mc/locale/mobs_mc.de.tr +++ b/mods/ENTITIES/mobs_mc/locale/mobs_mc.de.tr @@ -58,3 +58,16 @@ Golden Horse Armor=Goldpferderüstung Golden horse armor can be worn by horses to increase their protection from harm.=Eine Goldpferderüstung kann von Pferden getragen werden, um ihren Schutz vor Schaden zu erhöhen. Diamond Horse Armor=Diamantpferderüstung Diamond horse armor can be worn by horses to greatly increase their protection from harm.=Eine Diamantpferderüstung kann von Pferden getragen werden, um ihren Schutz vor Schaden beträchtlich zu erhöhen. +Farmer=Bauer +Fisherman=Fischer +Fletcher=Pfeilmacher +Shepherd=Schäfer +Librarian=Bibliothekar +Cartographer=Kartograph +Armorer=Rüstungsschmied +Leatherworker=Lederarbeiter +Butcher=Metzger +Weapon Smith=Waffenschmied +Tool Smith=Werkzeugschmied +Cleric=Priester +Nitwit=Dorftrottel diff --git a/mods/ENTITIES/mobs_mc/locale/template.txt b/mods/ENTITIES/mobs_mc/locale/template.txt index 6b36cc8f..d2c7c239 100644 --- a/mods/ENTITIES/mobs_mc/locale/template.txt +++ b/mods/ENTITIES/mobs_mc/locale/template.txt @@ -58,3 +58,16 @@ Golden Horse Armor= Golden horse armor can be worn by horses to increase their protection from harm.= Diamond Horse Armor= Diamond horse armor can be worn by horses to greatly increase their protection from harm.= +Farmer= +Fisherman= +Fletcher= +Shepherd= +Librarian= +Cartographer= +Armorer= +Leatherworker= +Butcher= +Weapon Smith= +Tool Smith= +Cleric= +Nitwit= diff --git a/mods/ENTITIES/mobs_mc/villager.lua b/mods/ENTITIES/mobs_mc/villager.lua index 4357cebc..4c73524f 100644 --- a/mods/ENTITIES/mobs_mc/villager.lua +++ b/mods/ENTITIES/mobs_mc/villager.lua @@ -20,6 +20,7 @@ -- TODO: Farm stuff local S = minetest.get_translator("mobs_mc") +local N = function(s) return s end -- playername-indexed table containing the previously used tradenum local player_tradenum = {} @@ -61,7 +62,7 @@ end local professions = { farmer = { - name = "Farmer", + name = N("Farmer"), texture = "mobs_mc_villager_farmer.png", trades = { { @@ -91,7 +92,7 @@ local professions = { } }, fisherman = { - name = "Fisherman", + name = N("Fisherman"), texture = "mobs_mc_villager_farmer.png", trades = { { @@ -103,7 +104,7 @@ local professions = { }, }, fletcher = { - name = "Fletcher", + name = N("Fletcher"), texture = "mobs_mc_villager_farmer.png", trades = { { @@ -118,7 +119,7 @@ local professions = { } }, shepherd ={ - name = "Shepherd", + name = N("Shepherd"), texture = "mobs_mc_villager_farmer.png", trades = { { @@ -147,7 +148,7 @@ local professions = { }, }, librarian = { - name = "Librarian", + name = N("Librarian"), texture = "mobs_mc_villager_librarian.png", trades = { { @@ -176,7 +177,7 @@ local professions = { }, }, cartographer = { - name = "Cartographer", + name = N("Cartographer"), texture = "mobs_mc_villager_librarian.png", trades = { { @@ -197,7 +198,7 @@ local professions = { }, }, armorer = { - name = "Armorer", + name = N("Armorer"), texture = "mobs_mc_villager_smith.png", trades = { { @@ -225,7 +226,7 @@ local professions = { }, }, leatherworker = { - name = "Leatherworker", + name = N("Leatherworker"), texture = "mobs_mc_villager_butcher.png", trades = { { @@ -244,7 +245,7 @@ local professions = { }, }, butcher = { - name = "Butcher", + name = N("Butcher"), texture = "mobs_mc_villager_butcher.png", trades = { { @@ -260,7 +261,7 @@ local professions = { }, }, weapon_smith = { - name = "Weapon Smith", + name = N("Weapon Smith"), texture = "mobs_mc_villager_smith.png", trades = { { @@ -284,7 +285,7 @@ local professions = { }, }, tool_smith = { - name = "Tool Smith", + name = N("Tool Smith"), texture = "mobs_mc_villager_smith.png", trades = { { @@ -307,7 +308,7 @@ local professions = { }, }, cleric = { - name = "Cleric", + name = N("Cleric"), texture = "mobs_mc_villager_priest.png", trades = { { @@ -330,7 +331,7 @@ local professions = { }, }, nitwit = { - name = "Nitwit", + name = N("Nitwit"), texture = "mobs_mc_villager.png", -- No trades for nitwit trades = nil, @@ -490,7 +491,7 @@ local function show_trade_formspec(playername, trader, tradenum) .."background[-0.19,-0.25;9.41,9.49;mobs_mc_trading_formspec_bg.png]" ..disabled_img ..mcl_vars.inventory_header - .."label[4,0;"..minetest.formspec_escape(profession).."]" + .."label[4,0;"..minetest.formspec_escape(minetest.colorize("#313131", S(profession))).."]" .."list[current_player;main;0,4.5;9,3;9]" .."list[current_player;main;0,7.74;9,1;]" ..b_prev..b_next From 9cef74c03b6bdbcbd21e64b492de37689cb1cb8c Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sat, 16 Mar 2019 05:21:27 +0100 Subject: [PATCH 180/737] Replace GUI image texts with translatable labels --- mods/HUD/mcl_inventory/creative.lua | 2 +- mods/HUD/mcl_inventory/init.lua | 2 ++ .../mcl_inventory/locale/mcl_inventory.de.tr | 2 ++ mods/HUD/mcl_inventory/locale/template.txt | 2 ++ .../textures/crafting_formspec_bg.png | Bin 1999 -> 1803 bytes .../textures/crafting_formspec_bg2.png | Bin 1597 -> 1422 bytes .../textures/crafting_inventory_9_slots.png | Bin 1748 -> 1645 bytes mods/ITEMS/REDSTONE/mcl_dispensers/init.lua | 3 ++- .../locale/mcl_dispensers.de.tr | 1 + .../mcl_dispensers/locale/template.txt | 1 + .../textures/mcl_dispensers_fnt_dispenser.png | Bin 513 -> 0 bytes mods/ITEMS/REDSTONE/mcl_droppers/init.lua | 3 ++- .../mcl_droppers/locale/mcl_droppers.de.tr | 1 + .../REDSTONE/mcl_droppers/locale/template.txt | 1 + .../textures/mcl_droppers_fnt_dropper.png | Bin 491 -> 0 bytes mods/ITEMS/mcl_anvils/init.lua | 2 ++ mods/ITEMS/mcl_anvils/locale/mcl_anvils.de.tr | 2 ++ mods/ITEMS/mcl_anvils/locale/template.txt | 2 ++ .../textures/mcl_anvils_inventory.png | Bin 1920 -> 1584 bytes mods/ITEMS/mcl_chests/init.lua | 13 ++++++++++--- mods/ITEMS/mcl_chests/locale/mcl_chests.de.tr | 3 +++ mods/ITEMS/mcl_chests/locale/template.txt | 3 +++ .../textures/mcl_chests_fnt_chest.png | Bin 157 -> 0 bytes .../textures/mcl_chests_fnt_ender_chest.png | Bin 188 -> 0 bytes .../textures/mcl_chests_fnt_shulker_box.png | Bin 186 -> 0 bytes .../textures/mcl_chests_inventory_chest.png | Bin 2401 -> 1604 bytes .../mcl_chests_inventory_chest_large.png | Bin 2309 -> 1940 bytes mods/ITEMS/mcl_crafting_table/init.lua | 2 ++ .../locale/mcl_crafting_table.de.tr | 2 ++ .../mcl_crafting_table/locale/template.txt | 2 ++ .../textures/crafting_inventory_workbench.png | Bin 4251 -> 1605 bytes mods/ITEMS/mcl_furnaces/init.lua | 4 ++++ .../mcl_furnaces/locale/mcl_furnaces.de.tr | 1 + mods/ITEMS/mcl_furnaces/locale/template.txt | 1 + .../textures/crafting_inventory_furnace.png | Bin 2718 -> 1485 bytes mods/ITEMS/mcl_hoppers/init.lua | 2 ++ .../mcl_hoppers/locale/mcl_hoppers.de.tr | 1 + mods/ITEMS/mcl_hoppers/locale/template.txt | 1 + .../textures/mcl_hoppers_inventory.png | Bin 4853 -> 1363 bytes 39 files changed, 53 insertions(+), 6 deletions(-) delete mode 100644 mods/ITEMS/REDSTONE/mcl_dispensers/textures/mcl_dispensers_fnt_dispenser.png delete mode 100644 mods/ITEMS/REDSTONE/mcl_droppers/textures/mcl_droppers_fnt_dropper.png delete mode 100644 mods/ITEMS/mcl_chests/textures/mcl_chests_fnt_chest.png delete mode 100644 mods/ITEMS/mcl_chests/textures/mcl_chests_fnt_ender_chest.png delete mode 100644 mods/ITEMS/mcl_chests/textures/mcl_chests_fnt_shulker_box.png diff --git a/mods/HUD/mcl_inventory/creative.lua b/mods/HUD/mcl_inventory/creative.lua index f3074894..bcca4772 100644 --- a/mods/HUD/mcl_inventory/creative.lua +++ b/mods/HUD/mcl_inventory/creative.lua @@ -393,7 +393,7 @@ mcl_inventory.set_creative_formspec = function(player, start_i, pagenum, inv_siz end local caption = "" if name ~= "inv" and filtername[name] then - caption = "label[0,1.1;"..F(minetest.colorize("#313131", filtername[name])).."]" + caption = "label[0,1.2;"..F(minetest.colorize("#313131", filtername[name])).."]" end formspec = "size[10,9.3]".. diff --git a/mods/HUD/mcl_inventory/init.lua b/mods/HUD/mcl_inventory/init.lua index 2ca876bf..03227e85 100644 --- a/mods/HUD/mcl_inventory/init.lua +++ b/mods/HUD/mcl_inventory/init.lua @@ -99,8 +99,10 @@ local function set_inventory(player, armor_change_only) "list[detached:"..player_name.."_armor;armor;0,3;1,1;4]".. armor_slot_imgs.. -- craft and inventory + "label[0,4;"..F(minetest.colorize("#313131", S("Inventory"))).."]".. "list[current_player;main;0,4.5;9,3;9]".. "list[current_player;main;0,7.74;9,1;]".. + "label[4,0.5;"..F(minetest.colorize("#313131", S("Crafting"))).."]".. "list[current_player;craft;4,1;2,2]".. "list[current_player;craftpreview;7,1.5;1,1;]".. -- crafting guide button diff --git a/mods/HUD/mcl_inventory/locale/mcl_inventory.de.tr b/mods/HUD/mcl_inventory/locale/mcl_inventory.de.tr index e14220e7..2917e162 100644 --- a/mods/HUD/mcl_inventory/locale/mcl_inventory.de.tr +++ b/mods/HUD/mcl_inventory/locale/mcl_inventory.de.tr @@ -15,3 +15,5 @@ Combat=Kampf Mobs=Mobs Materials=Materialien Survival Inventory=Überlebensinventar +Crafting=Fertigen +Inventory=Inventar diff --git a/mods/HUD/mcl_inventory/locale/template.txt b/mods/HUD/mcl_inventory/locale/template.txt index 27920490..e0b729e0 100644 --- a/mods/HUD/mcl_inventory/locale/template.txt +++ b/mods/HUD/mcl_inventory/locale/template.txt @@ -15,3 +15,5 @@ Combat= Mobs= Materials= Survival Inventory= +Crafting= +Inventory= diff --git a/mods/HUD/mcl_inventory/textures/crafting_formspec_bg.png b/mods/HUD/mcl_inventory/textures/crafting_formspec_bg.png index 927d0d790118f2f5a7a0dd27e974c1ef76f7a7a7..8e6550236ac21a2fcfd36d1311de76dbe667ab46 100644 GIT binary patch literal 1803 zcmeAS@N?(olHy`uVBq!ia0y~yVD@8RU>0CuW?*1=#HC@%z`!6K;1lA?00#g6|G#kI z!j~^!GBPsU-Q5>2UOad1+}kVn2{AA*FqQ=Q1v5B2yOGAgz&6j*#WAFU@$KD>Yp*zn zv|U`t(yY;NlS?4!|)ZTfDF3iTFWVCfm3BzE0buQM+`C zxc=%%-_wetvVK|UE`9R<`I6(e@B7JTKeN!?KS%C;(DLu|?F(le;}ljee5B&{=!oZ> zBb}2iI)&8>z2w0{bFMk$%J;7m+&Nu%d0oui}R+9V%=)nYRVq;0ZA;iDs(j&s0jAr`G=dvwH8ae2iYkPH3hd^+wq z2c#&I_ezna?e)j|YV7TweX+Ny-23O}R{3v_3yaQxZ3C&HfWda8Q+WA7|78!3bY5=Q zKT~*l2G~}xiB{@ zb1Z(=_Y14rPhZ~{rMLVCv)Q9$zw)9_Rh3QGPg_>THw&x#-79~75jU(-#qUFos*wGD|mF|Wbs{#!cTVs{pQ$+&lXm{fBOK~3l@cszFe12KG-R| z{39sbQKO4gk<1Ek;H?rmW7}8KKy(fWYr@R3qMFiW-mC_d0D4&ZwyE= zI2Ay|L0m+9gX|7&gTysh6fO;BfFmEQ`IG<=$&C{^xn-FK)YOK*TXF%GML7C6!*^!l39j^EFTAqDYa=K>!Zcqq< z9eX5`_sTk1>Ec<}PjX+qcirIG5me2`=6nM==!pZ!@*-b|`@q(M5=DHo z@oit5p}HSRco{w0avbDWGJ@q~BiMVhAnpT&sv)TKk}Q6N+sj#|7gUoU|D0=~nTi_g zphPekTo8g20fc+^6ex%#rO&@Va+1Bj#_#M5VRe)^l`OvX7-TWds3XUXxT9sO)Qd?Q zKYsC>^W^v4qtKEamWt81AP)$ugVPBp$%D9)%a&!%vCv(=&3?-6vn$U$Jd#=YmgnWn kX+d1e|M;b52mU(cpY^>bZjr;1&!9@p)78&qol`;+01&!D8UO$Q literal 1999 zcmeAS@N?(olHy`uVBq!ia0y~yVD@8RU>0CuW?*1=#HC@%z`!6E;1lA?00#g6|G#kI z!j~^!GBPsU-Q5>2UOad1+|10(Pe0BJFfcGMmIV0)GdMiEk;cHl9`EVm7*fIb=B{Di zg)Y~Z(n^$3_0(&`)KC>CF`oczkIyc zqVUiW&p8&IlPwB`)C(V}_&qw}`PUl4^=o%2<`Fj+uGCTYdt3E*{lnNoWkJ6=7KK5} z{T?0Z6jm<;lOPc|LrC3kjzy<1h{Poe7GM5yONozZVT*h3{;K%*D|KsZG05KKuPlyQ_3?nEg_rNI zmisp8=9D6?P_VfnvtCC`Ixd(f;un3lW)4_QaOrg4_XjiOgbTfnb_Uz|&H2?o86@Ee zmVP-Q@Z?8r-boA`f!md3vQ{jV(%Y$C|x6fi;r)cxjUl`VU4q%-)c z|Fa{S((tfa9`^i5r!bl1v6oSEo*4$l`@P@acm4K#BN?6PkB^+JJv>=;j@0s97KK@J zUOhUpvhdN7llN`?<|rM1+U`;u@As3}?9<^nawk{L{`~aZ^x{uD+0^~!G=bu89rxoS zCreMyvG^IstL`_a=KW-0_1{7Tk5cZ-_|19q`dFv1`tQD?M=9|+esk_@Z-mA8${J~I zzd06HkAutr2PnCW<)1*2(s|iN?bT_`{RiFZW(cc)=Y6m3Cksljpri^izQn_%_)&?z zWxO6JPQa-TluTgGfhJOL{H|<=Bup$32#$IckO{98iAdU39bf~&x{hSZ2_G#eb+NFW zG8trkp^&=YBNe|nM?A&nEW3Q^V=O?=EhmI9k{ta zCw<%M)VeNHUy#*7jlp}?&-{Ax@wE=&<>7skEefMfTeNb5lSfeNU!sM&L93|GBNl*C~m(q9P*#@>M_`UP_BM=#MA!P?quoqLFp6Q&-Tqsoh=*cXQ%1+BpOAzl!=j0i}>g><%^P{K^|nX5y zBXcY)1wc+)cM>cHQey~;icZVIuBj28I`7^eIl1TlU5i2^zhj+~3#%?$6yEA|^#zNw zU)^_I04;35ent+>^f^Z$L03q<;DmZ9Ni|HUd$x6<(fe|9zd1dV3m>J-=@C|coH7R* zm{3O>K_o*A{H!;w=sfy&u0`dC6UA9cesf|bLp*G#?gxt-P;e|a_QMh$MGBzkL(wwF z0+bw{IDmY(Qw2ys3boArFjJ?-zds$b*eD>#lk*t0CjM`mEXSlZc|Bv>D}u8IVLMIsZUutZXC;S&Yk<9;B7Yp z0|R48kY6x^!?PP{3=FJiJzX3_Dj4713d|CAlsNG5CWe!SbRx1v?guUjlnXwKw3CYy;$uk?ivw@99{FTQkr#_!qUoBZb- z=?sqgWqIjGiRbdmr^{Z18_)jo%b@mh<*}7&zmIs%vA8=&>1B1%;{MD><;E|+e*FG* z+T&vHZ=I7ZruI*Mt`1Uiq;s;x+1|@~i)&{l9)A0N^7p-8OO6{IZhODazi9FXmN=7- z2C)#CTC1Zyr}(6|`M(oyGMP3xuVjk(d ztoc*kPhQBZB#}A&;=VH*9)A0N^7p-}UCA>O50~Fp-|1d3xsO?PatDhrG^T`=msiYK z2T^D@H_0uvjrX?tcaFkGpumTC;I8@Pi!3U(oflV0s)yabCwDz`dFcBuQc@nVKYm$; s%-d&Ey0EeJQg->lUlEm6T=y9}o=wbqFH$v$fq{X+)78&qol`;+04X_sk^lez diff --git a/mods/HUD/mcl_inventory/textures/crafting_inventory_9_slots.png b/mods/HUD/mcl_inventory/textures/crafting_inventory_9_slots.png index e58e0634fde87208de8969c99e5b66a2f6879150..145a1918b1ba317c95486acc7407b2aae82bb035 100644 GIT binary patch delta 658 zcmcb@`<7>d3Ws!nPlzi61H(ieiTc|s_X#mDFff(``2{mLJiC#`z`(}f>Eakt!T9#> zM&Bb20&N$Uwy*{=REsLOFqb$uaOWjP?bu|<=$Fr7^Jdc7{E5d69Ni+Ikln0VYtK-4m~^U#j8J^O^0zkb_Rcy_V^oBibV zEV_PQ-Y5GVn`0qaZ1n8N$r-}xesg*(3%e$s*paelpRoGReY-6Rg&>YD@%M{fWUx+h z{re*)o3r+3OB6qPG7F^I=vm5{&dG-A$$svWSF;374q=tFTrSbs<9+P4b>XDu>!(Gq-H{wl?AA|K9LiHvW3;)*rt)x8mm8ZOsojzf^!h T{p4Q;1_lOCS3j3^P6PPl#)UL)=6iiTcdUOz)q%`xzJ*7)yfuf*Bm1-AH3#U`z3IaSW+o ze0z6eudt)Y@rMgrSOXb~MHO5gOyT3mNQ|B#rnmpau2kI;JDHJ|B(mC0pP)NP-k&54=Bc5}w%~9@8sph&;7pq{+@P=!be9uzgvIZ z-4+-BzbgAk=j9s~ox;nfEBW1R5mxt`WASpn_1D$$_bp#sxqdf%jz!_4CDs4sPj5ZA z^!&yjm!EyJT;nfn`Ls`1-ESZJg}+BK z=Ag;3EK+{I-Y5GVn`0qaZ1n8N$r&JXc22&`?gp}OC(IX#wNCm&?Bn0%U9cycU@qUBmPqj}cPw#*8C zbmZkfuq!|TcqEhmO3(8?%eAkcIBq>}+GAN**7#JE}Fff!FFfhDIU|_JC!N4G1FlSew4FdxMQ%R6t zFatx`&D=#FHXOBbh~2^Z`XIAqg#tUjYIeqJm;C;~*^9r#CX2jF|2-uz+RXpkZti4T zko1!W3(r{fd=uW-_Ga$Cx25mv%>HN0dsCCRhMoV(gGLz}pV!X6*Z$l2ZtnI~=cLcZ zvnQvW-ym_VnZ4+P1E1WouZ~jn$G`uIsZF1MGv7uAW~b|^`=2-JZu@@k{_hl@DPQ+m zoqrU;FLwguq8oLxKPLSD8@oZyW~RsLz55#BP$~#D-%m?14AnVgS8q0jwl*(^HVa@DiIotLkumf a3@ojT3?UjWU%12vveDDk&t;ucLK6Ttmc14L diff --git a/mods/ITEMS/REDSTONE/mcl_droppers/init.lua b/mods/ITEMS/REDSTONE/mcl_droppers/init.lua index 2ac5aa32..157ce680 100644 --- a/mods/ITEMS/REDSTONE/mcl_droppers/init.lua +++ b/mods/ITEMS/REDSTONE/mcl_droppers/init.lua @@ -16,9 +16,10 @@ local setup_dropper = function(pos) local form = "size[9,8.75]".. "background[-0.19,-0.25;9.41,9.49;crafting_inventory_9_slots.png]".. mcl_vars.inventory_header.. - "image[3,-0.2;5,0.75;mcl_droppers_fnt_dropper.png]".. + "label[0,4.0;"..minetest.formspec_escape(minetest.colorize("#313131", S("Inventory"))).."]".. "list[current_player;main;0,4.5;9,3;9]".. "list[current_player;main;0,7.74;9,1;]".. + "label[3,0;"..minetest.formspec_escape(minetest.colorize("#313131", S("Dropper"))).."]".. "list[current_name;main;3,0.5;3,3;]".. "listring[current_name;main]".. "listring[current_player;main]" diff --git a/mods/ITEMS/REDSTONE/mcl_droppers/locale/mcl_droppers.de.tr b/mods/ITEMS/REDSTONE/mcl_droppers/locale/mcl_droppers.de.tr index 717bb580..526e48cd 100644 --- a/mods/ITEMS/REDSTONE/mcl_droppers/locale/mcl_droppers.de.tr +++ b/mods/ITEMS/REDSTONE/mcl_droppers/locale/mcl_droppers.de.tr @@ -4,3 +4,4 @@ A dropper is a redstone component and a container with 9 inventory slots which, Droppers can be placed in 6 possible directions, items will be dropped out of the hole. Use the dropper to access its inventory. Supply it with redstone energy once to make the dropper drop or transfer a random item.=Spender können in 6 mögliche Richtungen platziert werden, Gegenstände fallen aus dem Loch hinaus. Benutzen Sie den Spender, um auf sein Inventar zuzugreifen. Versorgen Sie ihn mit Redstoneenergie, um den Spender einen Gegenstand abwerfen oder in einen Behälter ablegen zu lassen. Downwards-Facing Dropper=Nach unten zeigender Spender Upwards-Facing Dropper=Nach oben zeigender Spender +Inventory=Inventar diff --git a/mods/ITEMS/REDSTONE/mcl_droppers/locale/template.txt b/mods/ITEMS/REDSTONE/mcl_droppers/locale/template.txt index b805c580..48e6cc79 100644 --- a/mods/ITEMS/REDSTONE/mcl_droppers/locale/template.txt +++ b/mods/ITEMS/REDSTONE/mcl_droppers/locale/template.txt @@ -4,3 +4,4 @@ A dropper is a redstone component and a container with 9 inventory slots which, Droppers can be placed in 6 possible directions, items will be dropped out of the hole. Use the dropper to access its inventory. Supply it with redstone energy once to make the dropper drop or transfer a random item.= Downwards-Facing Dropper= Upwards-Facing Dropper= +Inventory= diff --git a/mods/ITEMS/REDSTONE/mcl_droppers/textures/mcl_droppers_fnt_dropper.png b/mods/ITEMS/REDSTONE/mcl_droppers/textures/mcl_droppers_fnt_dropper.png deleted file mode 100644 index 1a15634fa06a2ce194c6a2e8a82b622b9167b90f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 491 zcmeAS@N?(olHy`uVBq!ia0y~yU~Fe#U@+%kU|?W4bmC?*0|Ns~x}&cn1H;CC?mvmF z3=9kk$sR$z3=CCj3=9n|3=F>*7#JE}Fff!FFfhDIU|_JC!N4G1FlSew4FdxMQ%R6t zFatx`+Q{p zeN6@etQRhRN&mU%-#Y)a*rbi?)b6wv&-2K1n>70+%StAY0~;Ri&{^HO@4N8a%cbwx z7p!_R!HG{Y>gxNM8>UEZWd1wBkx%l;goV9%cb*^l`!~tfIcuxkt^aGS*q6&2oltC+ zG1{_rcK>^!{^w=&8`Gct(l6!nu}_)c%x0N#V-A09f$iq{wAz_B>YHu`ER_#}XgKfv zr{Y`v#cRJj&;6791v2A=qVsC0`S;I%srtX?y>Mw--R}cmKt@b(Zacl5t9PI9oF~5z zE{6y)GcX+ZU&NgJTJ40imYoCx1A}UbYeY#(Vo9o1a#3nxNh*VpfuXssfswAEafqRX tm4UgHsfD(Ip_PGwvZUB)6b-rgDVb@NxHSa1tSbivlBcVm%Q~loCIEacwHyEd diff --git a/mods/ITEMS/mcl_anvils/init.lua b/mods/ITEMS/mcl_anvils/init.lua index 0eae2ce5..45e27182 100644 --- a/mods/ITEMS/mcl_anvils/init.lua +++ b/mods/ITEMS/mcl_anvils/init.lua @@ -18,11 +18,13 @@ local function get_anvil_formspec(set_name) return "size[9,8.75]".. "background[-0.19,-0.25;9.41,9.49;mcl_anvils_inventory.png]".. mcl_vars.inventory_header.. + "label[0,4.0;"..minetest.formspec_escape(minetest.colorize("#313131", S("Inventory"))).."]".. "list[current_player;main;0,4.5;9,3;9]".. "list[current_player;main;0,7.74;9,1;]".. "list[context;input;1,2.5;1,1;]".. "list[context;input;4,2.5;1,1;1]".. "list[context;output;8,2.5;1,1;]".. + "label[3,0.1;"..minetest.formspec_escape(minetest.colorize("#313131", S("Repair and Name"))).."]".. "field[3.25,1;4,1;name;;"..minetest.formspec_escape(set_name).."]".. "field_close_on_enter[name;false]".. "button[7,0.7;2,1;name_button;"..minetest.formspec_escape(S("Set Name")).."]".. diff --git a/mods/ITEMS/mcl_anvils/locale/mcl_anvils.de.tr b/mods/ITEMS/mcl_anvils/locale/mcl_anvils.de.tr index 0142414c..29010796 100644 --- a/mods/ITEMS/mcl_anvils/locale/mcl_anvils.de.tr +++ b/mods/ITEMS/mcl_anvils/locale/mcl_anvils.de.tr @@ -1,5 +1,7 @@ # textdomain: mcl_anvils Set Name=Name setzen +Repair and Name=Reparieren und benennen +Inventory=Inventar Anvil=Amboss The anvil allows you to repair tools and armor, and to give names to items. It has a limited durability, however. Don't let it fall on your head, it could be quite painful!=Der Amboss ermöglicht es, Werkzeuge und Rüstung zu reparieren und Gegenstände zu benennen. Er hat jedoch eine begrenzte Lebensdauer. Lassen Sie ihn nicht auf Ihren Kopf fallen, das könnte ziemlich schmerzhaft sein! To use an anvil, rightclick it. An anvil has 2 input slots (on the left) and one output slot.=Um einen Amboss zu benutzen, rechtsklicken Sie auf ihn. Ein Amboss hat 2 Eingabeplätze (links) und einen Ausgabeplatz (rechts). diff --git a/mods/ITEMS/mcl_anvils/locale/template.txt b/mods/ITEMS/mcl_anvils/locale/template.txt index 268f3480..c76b7174 100644 --- a/mods/ITEMS/mcl_anvils/locale/template.txt +++ b/mods/ITEMS/mcl_anvils/locale/template.txt @@ -1,5 +1,7 @@ # textdomain: mcl_anvils Set Name= +Repair and Name= +Inventory= Anvil= The anvil allows you to repair tools and armor, and to give names to items. It has a limited durability, however. Don't let it fall on your head, it could be quite painful!= To use an anvil, rightclick it. An anvil has 2 input slots (on the left) and one output slot.= diff --git a/mods/ITEMS/mcl_anvils/textures/mcl_anvils_inventory.png b/mods/ITEMS/mcl_anvils/textures/mcl_anvils_inventory.png index 24bc392f64e32e233ccb557c110bbdabb4a2cce3..df84b72510cae46c812328aa621cea9a6a09610d 100644 GIT binary patch literal 1584 zcmeAS@N?(olHy`uVBq!ia0y~yVD@8RU>0CuW?*1=#HC@%z`!6K;1lA?00#g6|G#kI z!j~^!GBPsU-Q5>2UOad1+}kVn2{AA*FqQ=Q1v5B2yOGAgzwSDt>d0c+RotoNQ4jq+a+)#qSX&_Xw&ih}$U)R}A9{se|<*b3ul8PPPCk2FZfB zAiIRs3z4~CtFgF*IER4@hdLYC>LZ?Wkhx#ZQ_ZK#lbx4m=v+=tsd@JM{^alXV)8qW z8QHoWOaE7`Zfn!KRlU$i!|z*4z?@IVPcE>yIoa{<=F2}f2Uw{$KT7duJL+jUm#1s8 zt)z(h(-Nq{DOVs03x$?@@jt(9TPhI}wfuAV{r^7GY=5>wba8@pz5F|K@+a$=!s^vV z%XgPW?fdm_d7kCV+MRcc|63MrQs3`4$LQF}ITkl3TNa*@P%nOz;{WW3rste9os(^6 z3NQasXtcb=?_cliYcMtPFg5XW&U6OfvnbS>UUf0<-f@o)XTI-Oua5F|z8H55#QQeI z-VY@}DUVA~^dO}<5EoZmzPxeaWa0eeYN`Kw&96txe7D@T{Oo7hgNP_5oB&95@2REp z9-lk@&E(CzYnLWGt~(A2fR&G-sjAS*tfc79^BePy)xSUcRqS|e-`mX3HSPtZ<{(fm zfEo$%I*1E$C$=oJylCa~9iKPa^6p-~)#S;J`x|Ya_6NU$W!gD?ymP_9^6`Fk@!q3_ z&y%Y^$tuz?Yu`GxGUnA+%QBmP^WJ3Y@`6|o=7FLRe~hj?`trtwmFG7;{`ma~C@QVw zt+%P)7X+0#AkBmVfsArv$=W%mmd4FbKK}Uq$$8f<1>8?Q{_Tmi6MBgUvK_C}w;5U$ zNF96i{r2NES7hzx#3eVF99=KJ@X6nrnMn literal 1920 zcmeAS@N?(olHy`uVBq!ia0y~yVD@8RU>0CuW?*1=#HC@%z`!6E;1lA?00#g6|G#kI z!j~^!GBPqUGc(=Y-4`!jJa_Kg$U=S<1_lPkk|4ie28U-i(ij-n1w36GLn;{G+zrgT zY#?*sVL?j~^Df~9T^@Uim|JeJD%G^cE_`48DtBQ~Tg+eX&37t4PkFE2xa#P}CVR!o z%;~6~oQDXd;7r0(}f#c$4+Q()?d=Nya9%X5mnpT3aK{r_W2%*>~Dg^!MO3ak75 zkNsFYe{9ED9eTIccY~KknzV*YSFMqEnj>O*yD}zG(iT%F{m`EM?XG=2#SN z>i5`xO*H=s^Lrr~GkH|N$ui=!5WS?!NR9v@jL*%jO)ygUso z5e1QG1xaW+7d|?&^3PTaIrYBl zC@2`R{>q$Q>iBZ9dyKsB`@{D>@P^kFP69ohm!s?&*?Jj(jf(XLLM^0K48u=j{ z4UyC?s1oX)6>;Z&=VW`ipYvy-#Wy4#{rJFvl3gTJZ1os5!VsQ1LaCobv^P$QxO1;_ za^?NI7*4g2R0sJ$Qr+(u+#e7hKvD=u@@8Vz<0F~>-tzCRzMc7{;E~Dyxeu$BSsvSQ hzw`2q*=2u^vAf)f&^_z5tr1j{db;|#taD0e0szn`hu#1H diff --git a/mods/ITEMS/mcl_chests/init.lua b/mods/ITEMS/mcl_chests/init.lua index a63ed08b..f04fb652 100644 --- a/mods/ITEMS/mcl_chests/init.lua +++ b/mods/ITEMS/mcl_chests/init.lua @@ -183,8 +183,9 @@ minetest.register_node("mcl_chests:"..basename, { "size[9,8.75]".. mcl_vars.inventory_header.. "background[-0.19,-0.25;9.41,10.48;mcl_chests_inventory_chest.png]".. - "image[0,-0.2;5,0.75;mcl_chests_fnt_chest.png]".. + "label[0,0;"..minetest.formspec_escape(minetest.colorize("#313131", S("Chest"))).."]".. "list[nodemeta:"..pos.x..","..pos.y..","..pos.z..";main;0,0.5;9,3;]".. + "label[0,4.0;"..minetest.formspec_escape(minetest.colorize("#313131", S("Inventory"))).."]".. "list[current_player;main;0,4.5;9,3;9]".. "list[current_player;main;0,7.74;9,1;]".. "listring[nodemeta:"..pos.x..","..pos.y..","..pos.z..";main]".. @@ -317,8 +318,10 @@ minetest.register_node("mcl_chests:"..basename.."_left", { "size[9,11.5]".. "background[-0.19,-0.25;9.41,12.5;mcl_chests_inventory_chest_large.png]".. mcl_vars.inventory_header.. + "label[0,0;"..minetest.formspec_escape(minetest.colorize("#313131", S("Large Chest"))).."]".. "list[nodemeta:"..pos.x..","..pos.y..","..pos.z..";main;0,0.5;9,3;]".. "list[nodemeta:"..pos_other.x..","..pos_other.y..","..pos_other.z..";main;0,3.5;9,3;]".. + "label[0,7;"..minetest.formspec_escape(minetest.colorize("#313131", S("Inventory"))).."]".. "list[current_player;main;0,7.5;9,3;9]".. "list[current_player;main;0,10.75;9,1;]".. -- BEGIN OF LISTRING WORKAROUND @@ -451,8 +454,10 @@ minetest.register_node("mcl_chests:"..basename.."_right", { "size[9,11.5]".. "background[-0.19,-0.25;9.41,12.5;mcl_chests_inventory_chest_large.png]".. mcl_vars.inventory_header.. + "label[0,0;"..minetest.formspec_escape(minetest.colorize("#313131", S("Large Chest"))).."]".. "list[nodemeta:"..pos_other.x..","..pos_other.y..","..pos_other.z..";main;0,0.5;9,3;]".. "list[nodemeta:"..pos.x..","..pos.y..","..pos.z..";main;0,3.5;9,3;]".. + "label[0,7;"..minetest.formspec_escape(minetest.colorize("#313131", S("Inventory"))).."]".. "list[current_player;main;0,7.5;9,3;9]".. "list[current_player;main;0,10.75;9,1;]".. -- BEGIN OF LISTRING WORKAROUND @@ -657,8 +662,9 @@ minetest.register_node("mcl_chests:ender_chest", { "size[9,8.75]".. mcl_vars.inventory_header.. "background[-0.19,-0.25;9.41,10.48;mcl_chests_inventory_chest.png]".. - "image[0,-0.2;5,0.75;mcl_chests_fnt_ender_chest.png]".. + "label[0,0;"..minetest.formspec_escape(minetest.colorize("#313131", S("Ender Chest"))).."]".. "list[current_player;enderchest;0,0.5;9,3;]".. + "label[0,4.0;"..minetest.formspec_escape(minetest.colorize("#313131", S("Inventory"))).."]".. "list[current_player;main;0,4.5;9,3;9]".. "list[current_player;main;0,7.74;9,1;]".. "listring[current_player;enderchest]".. @@ -752,8 +758,9 @@ for color, desc in pairs(boxtypes) do "size[9,8.75]".. mcl_vars.inventory_header.. "background[-0.19,-0.25;9.41,10.48;mcl_chests_inventory_chest.png]".. - "image[0,-0.2;5,0.75;mcl_chests_fnt_shulker_box.png]".. + "label[0,0;"..minetest.formspec_escape(minetest.colorize("#313131", S("Shulker Box"))).."]".. "list[current_name;main;0,0.5;9,3;]".. + "label[0,4.0;"..minetest.formspec_escape(minetest.colorize("#313131", S("Inventory"))).."]".. "list[current_player;main;0,4.5;9,3;9]".. "list[current_player;main;0,7.74;9,1;]".. "listring[current_name;main]".. diff --git a/mods/ITEMS/mcl_chests/locale/mcl_chests.de.tr b/mods/ITEMS/mcl_chests/locale/mcl_chests.de.tr index 9bf54489..972dc91a 100644 --- a/mods/ITEMS/mcl_chests/locale/mcl_chests.de.tr +++ b/mods/ITEMS/mcl_chests/locale/mcl_chests.de.tr @@ -25,3 +25,6 @@ Grey Shulker Box=Graue Schulkerkiste Black Shulker Box=Schwarze Schulkerkiste A shulker box is a portable container which provides 27 inventory slots for any item except shulker boxes. Shulker boxes keep their inventory when broken, so shulker boxes as well as their contents can be taken as a single item. Shulker boxes come in many different colors.=Eine Schulkerkiste ist ein tragbarer Behälter der 27 Inventarplätze für alle Gegenstände außer Schulkerkisten bietet. Schulkerkisten behalten ihr Inventar, wenn sie abgebaut werden, also können Schulkerkisten so wie ihr Inhalt als einzelne Gegenstände mitgenommen werden. Schulkerkisten gibt es in vielen verschiedenen Farben. To access the inventory of a shulker box, place and right-click it. To take a shulker box and its contents with you, just break and collect it, the items will not fall out.=Um auf das Inventar einer Schulkerkiste zuzugreifen, platzieren Sie sie und rechtsklicken sie auf ihr. Um eine Schulkerkiste und ihren Inhalt mitzunehmen, bauen Sie sie einfach ab und sammeln Sie sie auf, der Inhalt will nicht hinausfallen. +Shulker Box=Shulkerkiste +Large Chest=Große Truhe +Inventory=Inventar diff --git a/mods/ITEMS/mcl_chests/locale/template.txt b/mods/ITEMS/mcl_chests/locale/template.txt index e4d8c013..14254c14 100644 --- a/mods/ITEMS/mcl_chests/locale/template.txt +++ b/mods/ITEMS/mcl_chests/locale/template.txt @@ -25,3 +25,6 @@ Grey Shulker Box= Black Shulker Box= A shulker box is a portable container which provides 27 inventory slots for any item except shulker boxes. Shulker boxes keep their inventory when broken, so shulker boxes as well as their contents can be taken as a single item. Shulker boxes come in many different colors.= To access the inventory of a shulker box, place and right-click it. To take a shulker box and its contents with you, just break and collect it, the items will not fall out. Place the shulker box again to be able to retrieve its contents.= +Shulker Box= +Large Chest= +Inventory= diff --git a/mods/ITEMS/mcl_chests/textures/mcl_chests_fnt_chest.png b/mods/ITEMS/mcl_chests/textures/mcl_chests_fnt_chest.png deleted file mode 100644 index e57e7efbcbdf3d160499abcdcb43c09061d04ca7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 157 zcmeAS@N?(olHy`uVBq!ia0y~yU~Fe#U@&K7W?*2rn=A5%fq{W7z$e6&fq@}2Gc(D+ zp@@Njfw3gWFPOpM*^M*?1_oD87srqa#(ltm2s=iqfu2Rc9qNIy`#wQcAJIZKK7Z7M6n92f`9rJiYH~vi4kG(E`(oH$#-lgdC3=9kmp00i_>zopr0N}Ah5&!@I diff --git a/mods/ITEMS/mcl_chests/textures/mcl_chests_fnt_shulker_box.png b/mods/ITEMS/mcl_chests/textures/mcl_chests_fnt_shulker_box.png deleted file mode 100644 index aa2aad61b98991805dadc1a87ae66dda544b9146..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 186 zcmeAS@N?(olHy`uVBq!ia0y~yU~Fe#U@&K7W?*2rn=A5%fq{W7z$e6&fq@}2Gc(D+ zp@@Njfw3gWFPOpM*^M*?28JY07srqa#c$6`PZNGH%9tOJ zmEVwa``i8yMuR)&Go5}Yo-mo1B*;6D*<)$j89|u>mkEnGIUU_O?>j}c_Hz`s#0$1W qzmS=zw2Xbpsl7)GAMMPoX1pLPT=G%)bQ=Q$1B0ilpUXO@geCx1c0eTn diff --git a/mods/ITEMS/mcl_chests/textures/mcl_chests_inventory_chest.png b/mods/ITEMS/mcl_chests/textures/mcl_chests_inventory_chest.png index 01cac232137d43fcbc821bd542a6136b91e1bbda..eba521e90e1c4a9943b0c33f8ffc7d39fd83e640 100644 GIT binary patch literal 1604 zcmeAS@N?(olHy`uVBq!ia0y~yVD@8RU`}RXW?*2*-xD6iz`!6K;1lA?00#g6|G#kI z!j~^!GBPsU-Q5>2UOad1+}kVn2{AA*FqQ=Q1v5B2yOGAgzNl&K8y*8FRFJb-t%hn?z3%e}ObxyYE6jm=3 zQulkb#Qv>{-=ia*bB=UQwkQ-*FMNdHg4CdKL0X`SL9!sOir<_gp7I~}3cbB_H9g1X zx9!g5CoZm8wl6vP`x9A3kmMW-RI|~zl_tIBgJh$V0#j@&4v$h+R-8%nxZuO+{7FgicnQL9ti#-;5{9Wd)>MohHSw`=S z_x+ytMD`#g4nV<5WT4}4tKTCGr|$d-w9)9%ZC>CeE8U+=?aZocwMV-0ODt__24H%dYJa?Y&zk_wJ;%6Ex2(FaNYV zu(RytD=V`y|I7D+pJapu&)>MQdYAQk4n!P4^D-zT;7JrAODM%+3Fc3G&xb4y{JwEx z^{kbq`L4;^=eJjX>ibcRnzFE1@sB-VQS7c?J-zAs)xV2a&boS~Jm<~4J<90G4CG8A zT}?2+%WK~oU(L8uoAYK~TGrX%8VfGt@ev$)H6}VKF6RnCiacHY KT-G@yGywo5EXh#- literal 2401 zcmeAS@N?(olHy`uVBq!ia0y~yVD@8RU{2;>W?*1g<+CfAfq}s|z$e7jBL~F%|NsAm z3m3k8`I3>5;qLCfc=6)7bLVDeW->4^{Qv(yBO~L&g$wTP?sMnPUA%a)-XEVO3=9l{ zB|(0{AnE^LzyJY77H&oi3>;@XT^vIy7~kG*?7AH$&=z<%JF#Q?%is2y3@_j9GCHDg zWY(;#8QTt9GUR4{JI_?pv&HY1iRptanU|M~T@qfA`6~A{r^V~QkZ@s^7qwMSwp{jK z)A;*~&I;Q*x9yp}*q!GSI`Z=Tb`1qJbq7BM^$Efte1h`{3kVl6Jz*(gvTU5gVA(jw z!LMNsvXTkHNJ<#N%3w+$%1&_NRq{dqc?qY{`Dwc0abn^LcHURnnY zBdG6ovCMpa>hv_--F_4PZn*BeCi`vb>1oL@MMMN75lWy|L81c^5ZJ>SEg&4-{MPC! zX6Z+7dt>GJu2gC<>&iVjH#faz$-EAY9H@rarZdG)Q%_HeRX zglLPQNreQr5e$AvR5#2qQdoX%n!q&O>v3gsiym6_UTlik7E^h%l*zseqy&UvfdNat zD9)xN`K~m2QgV0Zq?CVg53E2A7I5@Co%a2_c>^>{TyGAaFDm>0{^i})?`!^Usr>(2 zVLDXm^tt*MbmGY^z9Suz%RHO%?;-ueB$?K1aguVa7zPG{YDfk0I(sJvzmKA%!d2HwP%pS2NpTHSu zNi4L)f)+HOl5gsC-RQEpn;wEnzUx(|r|BM#hbkhXSR+CS)GCro@}{0S=p|p~%}q}? zyk>EE3N;LxWbuauxJuA-e6|xD1i@xDZ@vn=j>^Be>FJNx#G6CBRS?&Zkp3o249@oM zxCJS@tLGleaMaQTmz1C?50nHz7*v#iFszg&#XXMu?kz56y8f~*f9-q*o8n)Evkx_t zFJHg@rAk7NyWjSP-z+tMUhLm(#a{6*<^8wg<#qr57$12XR(5mK)8+mB{qBAZ{e_Nx zuuMm8lvl|kYJgvV-ca9@zirLb7v#r&t+QvWc=qM>brH5b*0pth>WuO6{d1V!32&Hs hrM|qBZ$s-B@#}8uGBn;js0X!hJYD@<);T3K0RZMytB(Kx diff --git a/mods/ITEMS/mcl_chests/textures/mcl_chests_inventory_chest_large.png b/mods/ITEMS/mcl_chests/textures/mcl_chests_inventory_chest_large.png index bb7b96afb2520fb00d8cc89576e6b4e378d30db3..bace59eda855793581a07c3ea1d8e74f217f3cf6 100644 GIT binary patch literal 1940 zcmeAS@N?(olHy`uVBq!ia0y~yVD@8RVBut8W?*1oE^&Rqz`!6K;1lA?00#g6|G#kI z!j~^!GBPsU-Q5>2UOad1+}kVn2{AA*FqQ=Q1v5B2yOGAgz^?A;;uuoF`1abt&bwX$ zZ5Q`-C1fe>=$PIpRKe}KQe;Y#m~fY|L|T5%{X(X@95F!$e_s3lF2L7cx8!%!Y`Ojm zXRE6%_wL=gdwIp(;N8`;=H+J9S8uak{-dnQrRHeu<=^%H{nt8GS=#}=%llTk%xf)^AOHIPZ!MFP zzdw;*czW&;&pA-5{2qa{!nq)u=OAQ3T$n?MbeHC~I*5hy`Xn^UbKcDRqYU$gmF)7= z1y?P~-^_cpuex~uU5iR&StNIZ{EW;62MTd6g?bC(@RzGBj$S)&kskAZ-kr;W%#zRh z?oO_6fraq$$6I)|NImbn8+^As|J`d(;CAb-`QBb>i4^|f6E@v0m)u? z3YDD$P6$YbK~f4r792(pZ-Z<`;esLnTl9%U+dqD?v0AIz-<>CAj#ZieKS7wcU+%eV zbRlbwb(w$Z{k=Qy=glz&$?m#CYN7-0G`W&Ww}Uv@P11RsBQ(%uP{ zOy`zIu|@S3AAh&<-EQ;mw|k3^fn=v!Lkt6X8%wH1NeiSpyfZlGZ_ni8?^eFCl{K7D zcTD02%+T+A~zEAyZJT>c=bULq|nrW>2BtM`BRvZFER__22{YY=Ip zFp4dz`1mnsTofNW_U`4UKgvixq(xj59Xs~*{YhI{!+=*eZrIK}k4PJSrya82-MC?U zwf6h7y6ST`ZrH}ot7k#vJc9X>)I?O+wKo3TjUE4NcP>|EJ0&ZlFzsbGA2>tLp`r}%-7+ol}2;*v0HuN0400>77|qbBRp1tQ-J zI3;-e5{xCD?c2LM?>6hQJOU&12WEw#4G%$t6!~ ztIK|U%iZy9%DnHHJHBn%DQkAvd;4M2*ND$BK5iD-w&(adiU(z?Ry(5yFgOQ|Cg8Vs-96@bbaR@F#nNehIRe?`g!%A z^PVMNKK$4qeBY*;>2Gg`d(S!IImg2Hr>2Iz@ZOsF^ZVqa=TGSh7rTG{z46}KT1CG{ zDt`0kf7%@I@AKrD{-@S!E?eHd{7-E)SlixuzpD7c`t+Hff&>1>+lpMCe11jLCjU7{ zI)gv1yzt!LB6#2NCo_|@{(s4vcT)87&;QR$(~9PU6nHKTE_|*zzu=R)%g#sVCZ*f$ zY3Wn?=Di+j42L?P0^if8S58wOZcBbDZzC`g4xLM=E}gKt|rkyno?f z!J7@WufFdxzh*7TC%4W2oZ#d}W|2vZTuj+VC-bw~*<9KfcV@%Gf8S5q%?);5c(`r) z`^j*N3LkCBe<5IU#jO;K<~8ESi&Rm{cdfV`4Xb8KIwc zqu~GVl=i3i9Os->%Gq$?cEopY=zunE{#aS99H$Hr-omAXnQ7EJi3W_=3cx98?d2cVTTVI{L zH~7Pb#NSV36eoXVRGj>Pjcsx~qxxiiR$lq+qnfg>!9jHQ-DOMD6pOSQc3;KS!6A7h zvvRTkt8M+Z-8+9je4YDwwcflp!s>;OOl)oT)x4CN3rbPBDv*m04Ja2sr3e?P5 z^BbO}FWkQSZ1&slbN%+K@{{Gum*36)Z(2OR-rj%u{{O#XeZO^1 zwkXtkr}T6G$*J|vJI|+ovVQV^?(J#cb#JQsJ=#(?$HsnZ`g{wJDj{{h-)($t$?b20 z_g~+;@!rXT4;yNW`UEEHvsq70V3apqzV*?RzOOv&{I{3qeSbMe%1Fj4Xa2P3GKzlS z{*&VwdCe|I6?z@7YHMzP8@&B@i65^d zpX@gO)5U!P>Yz+D=SU~kL_JxM)n;-xi@ap!S_@EeK6v=s%G;3S%yWDBx<^;!CJQnv zif+k&kzi26Ox}>+5ReORwHN=V#xpS5*J&_j$+gd-3*W&8@E% k%%7dU#=hj~Ux|OLB3*jVPw~&b1S&f{UHx3vIVCg!09#zPZvX%Q diff --git a/mods/ITEMS/mcl_crafting_table/init.lua b/mods/ITEMS/mcl_crafting_table/init.lua index 8cc51ac9..2a02551e 100644 --- a/mods/ITEMS/mcl_crafting_table/init.lua +++ b/mods/ITEMS/mcl_crafting_table/init.lua @@ -17,8 +17,10 @@ minetest.register_node("mcl_crafting_table:crafting_table", { local form = "size[9,8.75]".. "background[-0.19,-0.25;9.41,9.49;crafting_formspec_bg.png^crafting_inventory_workbench.png]".. mcl_vars.inventory_header.. + "label[0,4;"..minetest.formspec_escape(minetest.colorize("#313131", S("Inventory"))).."]".. "list[current_player;main;0,4.5;9,3;9]".. "list[current_player;main;0,7.74;9,1;]".. + "label[1.75,0;"..minetest.formspec_escape(minetest.colorize("#313131", S("Crafting"))).."]".. "list[current_player;craft;1.75,0.5;3,3;]".. "list[current_player;craftpreview;6.1,1.5;1,1;]".. "image_button[0.75,1.5;1,1;craftguide_book.png;__mcl_craftguide;]".. diff --git a/mods/ITEMS/mcl_crafting_table/locale/mcl_crafting_table.de.tr b/mods/ITEMS/mcl_crafting_table/locale/mcl_crafting_table.de.tr index 3db0460b..08b1a29e 100644 --- a/mods/ITEMS/mcl_crafting_table/locale/mcl_crafting_table.de.tr +++ b/mods/ITEMS/mcl_crafting_table/locale/mcl_crafting_table.de.tr @@ -3,3 +3,5 @@ Crafting Table=Werkbank A crafting table is a block which grants you access to a 3×3 crafting grid which allows you to perform advanced crafts.=Die Werkbank ist ein Block, mit dem Sie Zugriff auf ein 3×3-Fertigungsgitter erhalten, wodurch sie fortgeschrittene Dinge herstellen können. Rightclick the crafting table to access the 3×3 crafting grid.=Rechtsklicken Sie auf die Werkbank, um auf das 3×3-Fertigungsgitter zuzugreifen. Recipe book=Fertigungsbuch +Inventory=Inventar +Crafting=Fertigen diff --git a/mods/ITEMS/mcl_crafting_table/locale/template.txt b/mods/ITEMS/mcl_crafting_table/locale/template.txt index f08bf3a7..76070997 100644 --- a/mods/ITEMS/mcl_crafting_table/locale/template.txt +++ b/mods/ITEMS/mcl_crafting_table/locale/template.txt @@ -3,3 +3,5 @@ Crafting Table= A crafting table is a block which grants you access to a 3×3 crafting grid which allows you to perform advanced crafts.= Rightclick the crafting table to access the 3×3 crafting grid.= Recipe book= +Crafting= +Inventory= diff --git a/mods/ITEMS/mcl_crafting_table/textures/crafting_inventory_workbench.png b/mods/ITEMS/mcl_crafting_table/textures/crafting_inventory_workbench.png index 0ee301844ac0a0c104a928d2149d687f0302895e..957fa56ba9f64ec58581f4c4e12cc257b40d5f2e 100644 GIT binary patch literal 1605 zcmeAS@N?(olHy`uVBq!ia0y~yVD@8RU>0CuW?*1=#HC@%z`!6K;1l9{;lc$528RFt z|6jOp;memV85tSw?(T~hFP=Mh?rG8KjtmS8j3q&S!3+-1Zlp0Vu-@==aSW+oe0yzU z?j0|Ywu_N=8kHCOv?2uFHSk&_FnZmQiB4F=BynQy4ra%VEVs3vA3DQzYxkUkKOfDO z{quxJ^S#|t6B)ip>-QC9R&tZS#o4{r%zV$g++<1p+)ML<>&mU3{F(H9_PhPH@KV|CMeQ$Ex$4%GL z=5C9*7~22Va}LNoFJFUw3M^d2@1(#m&i< zg+bqurAnVdr7{iF{jv^${bjk5d%13S$<<_N9K}Beg=yxhjD7zM)xSP8nHJ65XMgqK z|EHVYc*zsgGMhQx6E1Am3G|l_}lj<%ky=%Tk+X#Q-9Ba>zQ1?lomUpmZp_P@SI&aS@?FhZJHUE-o8Sd0RqK z&b)0g6Cck=uKv^~fK&)x&V7uM_;45{G1tO0`Rntib$3dw_FCI6XS+0^?!T9{f4;x7 m(F(RIxpNV>&s`4w#r4wDVPIg`rTe#+fq{V~-O<;Pfnj4m_n$;o z1_lO&WRD+M}%zvxJ*hKG+&Y>wj& zT5^wD`TR@S4WgS?OiD1cE#rR_aHRLNJ>&fAcb-q2AlvkCamc0B`t8+`w*7|t^4S@D zzVG?Kq^`k&w3{Bdi{f3glGBYhpUeCA<+W8dlij?toDDLCObYIE z7)}&En^O4Z*TUrMioMM8BgrGV@(GkuD znRLI(=l3qZyYhO4Twl$+!e_^2tL|>J^xON7J3?qS!atACXuiJ@dBHB-e`6<}w+aX*N`BQ?G)=Puts0DX^UlvbTk0!CDye zZ_LXO0BgCCT%BYGkuJY6Z-zHGML%G;E&Lgh3I8zP7A}S`WfH3&{eqb3mr(s^*AdPJ zaBvtN^L?XQ-)s2Kwwgoi5F|yW7koQX3eh&_*}<5_QoHqp+@YU zZ+k#`cHynuI#5#BueSZ+QzK|VsTWDd=_QZgJa}z0d&H!(@7_+EAvxpVGZu$)SvlKx zFW29k&X{mEH_M=Ka&`zrWVjZGF$Z0Gw*UxtifgOu@4+ zuX&EmP4z$Z~EDUu<~En_u(SSA`Y7kgH)h4a$G8`b5v7*y`(d*}1RpY+hDe?|<3-Z1J1d z^;aTqY^?sySQ86M&5)8rA>DM_?Yoz!-`xCR_IbO@Oe-p@YPTTOi;dNs z%R9FRIXEFD6vYhp#oc zFsIvWx#6)L^KE}h&o(^P4V6qwzn4COt9n=kQG2o*(#8T8H2Y*hl}A|e?z^_NGi|vU zy1#w-l`(iiDc!c3fkEQ&%kB1{3M;aIqg1j@|KBXe13LHTg`Z!2)0yEw^lszj?~{A} zgL3@Q-#^z^yf!>m5!d^%*1B4O;m6G-=Jso!pW$q1`_IT^=qj`M`-RO63=FCzt`Q|E zi6yC4$wjG&C8-QX28QOk2FAJumLUcvRz@aP#unNJhE@g!U-P$^plHa=PsvQH#I2#l Th^K>rfq}u()z4*}Q$iB}3y)Z` diff --git a/mods/ITEMS/mcl_furnaces/init.lua b/mods/ITEMS/mcl_furnaces/init.lua index 0d19a684..8b817312 100644 --- a/mods/ITEMS/mcl_furnaces/init.lua +++ b/mods/ITEMS/mcl_furnaces/init.lua @@ -9,8 +9,10 @@ local function active_formspec(fuel_percent, item_percent) return "size[9,8.75]".. "background[-0.19,-0.25;9.41,9.49;crafting_inventory_furnace.png]".. mcl_vars.inventory_header.. + "label[0,4;"..minetest.formspec_escape(minetest.colorize("#313131", S("Inventory"))).."]".. "list[current_player;main;0,4.5;9,3;9]".. "list[current_player;main;0,7.74;9,1;]".. + "label[2.75,0;"..minetest.formspec_escape(minetest.colorize("#313131", S("Furnace"))).."]".. "list[current_name;src;2.75,0.5;1,1;]".. "list[current_name;fuel;2.75,2.5;1,1;]".. "list[current_name;dst;5.75,1.5;1,1;]".. @@ -31,8 +33,10 @@ end local inactive_formspec = "size[9,8.75]".. "background[-0.19,-0.25;9.41,9.49;crafting_inventory_furnace.png]".. mcl_vars.inventory_header.. + "label[0,4;"..minetest.formspec_escape(minetest.colorize("#313131", S("Inventory"))).."]".. "list[current_player;main;0,4.5;9,3;9]".. "list[current_player;main;0,7.74;9,1;]".. + "label[2.75,0;"..minetest.formspec_escape(minetest.colorize("#313131", S("Furnace"))).."]".. "list[current_name;src;2.75,0.5;1,1;]".. "list[current_name;fuel;2.75,2.5;1,1;]".. "list[current_name;dst;5.75,1.5;1,1;]".. diff --git a/mods/ITEMS/mcl_furnaces/locale/mcl_furnaces.de.tr b/mods/ITEMS/mcl_furnaces/locale/mcl_furnaces.de.tr index 0480499c..90cc5017 100644 --- a/mods/ITEMS/mcl_furnaces/locale/mcl_furnaces.de.tr +++ b/mods/ITEMS/mcl_furnaces/locale/mcl_furnaces.de.tr @@ -5,3 +5,4 @@ Use the furnace to open the furnace menu. Place a furnace fuel in the lower slot Use the recipe book to see what you can smelt, what you can use as fuel and how long it will burn.=Benutzen Sie das Rezeptbuch, um zu sehen, was Sie schmelzen können und was Sie als Brennstoff benutzen können und wie lange dieser brennt. Burning Furnace=Aktiver Ofen Recipe book=Fertigungsbuch +Inventory=Inventar diff --git a/mods/ITEMS/mcl_furnaces/locale/template.txt b/mods/ITEMS/mcl_furnaces/locale/template.txt index 7d75ec28..a3922621 100644 --- a/mods/ITEMS/mcl_furnaces/locale/template.txt +++ b/mods/ITEMS/mcl_furnaces/locale/template.txt @@ -5,3 +5,4 @@ Use the furnace to open the furnace menu. Place a furnace fuel in the lower slot Use the recipe book to see what you can smelt, what you can use as fuel and how long it will burn.= Burning Furnace= Recipe book= +Inventory= diff --git a/mods/ITEMS/mcl_furnaces/textures/crafting_inventory_furnace.png b/mods/ITEMS/mcl_furnaces/textures/crafting_inventory_furnace.png index f8191ffd2272529bfe9e74bb1ade663c5f859e1d..688ae6ed6244ccb08a88006d1ff000ebc9d5870b 100644 GIT binary patch literal 1485 zcmeAS@N?(olHy`uVBq!ia0y~yVD@8RU>0CuW?*1=#HC@%z`!6K;1lA?00#g6|G#kI z!j~^!GBPsU-Q5>2UOad1+}kVn2{AA*FqQ=Q1v5B2yOGAgz?$Ic;uuoF`1bC`-YX6w z#~*HAci?@{q^Yj#%Nn?2mMRyii#&MXwXpf}Q;r+T$_~cWLdpH#ejok+=JIB>&jOXd zL=0o}R!%m*H|LmP$+u5s{tGvo$0T>y$2zC$-Jh#BGk@jhZ(n{^cF0{i`_ib*sz7MD z@?#ahM@Ky89O;~FQ7EKd_z1!66vp5Rslye6WIW>4TRn|BXRDdCYrX${xl5VnyY5WJ zP%f-q2s0a@`w`4+uwfuy&p85@1#!s=lfPGEE*|on^J>i37zwX<&OTF+{diA}V zCqQOna|p;PEH+zU#s==lvHP&w*Y8ot^?9PW)qtWG7LJ&KE~g8QRxGxH^bi?umt!s_ z-ATLi-}dJ_-=}7e%^n|q?|DxU$#Z_x4s^}yMaOcF{k=cA`qpNp$IBk~-=Dlk8RpYR zCgEEowo87m_up3?yz}givp+smPbz0YB!*7nk_rhibZYCI!r6uYzdxDxZOw@tFMmA# zuJWD(q#u-+EY6DRLR|a)UPzvCp0VAZc~4{yLUJDQ!Hg>*VGG|AcEZIoyH z?!!D#;NVXrSC3?_%P`C{e)oS~&G%(RvkM<@tp3y|ppMOa%p8Ly1>v`@Q&?U0>6C2C z$7YZJy+3LDHgaO&ZL%y}lH9ZIuEoY*U%#2mwTitzH_lns~>bU+e eZ?=79Rp))qWes^T0YZC0#j>ZXpUXO@geCw0uBo>G literal 2718 zcmeAS@N?(olHy`uVBq!ia0y~yVD@8RU>0CuW?*1=#HC@%z`($g?&#~tz_78O`%fY( z0|SFXvPY0F14ES>14Ba#1H&%{28M z$s@kK_w6sw-L7hRR&Efw8XS9M1!v}+OsR_nmzf`!yfP`Yy18hM+niZvb@>x+#M~%( z-g`N2j+^Q3%T3U914&p!CQdpip7zA#RjSN$yAv}XUCHqDvy!EM)O@-1^54hk+uHjs z{SBSJv=Evb+OG> z_Ve$@?%4gS{2li@I#vqei;|s}AAi1jxN`a1)$32ayaiQj==VGQ@0Xqbw_ZM7FZvp0 zLa_buPru&(o&WsLzaynbHXhI1&R#$7b;oOHS+cBJ?!Z_3gPML*L8hGed<8YVTx`5N zU6A+K_3jLYaY>pdp|}_1Bk~!3*E}y}ngTe~DWM4fn+Wx} diff --git a/mods/ITEMS/mcl_hoppers/init.lua b/mods/ITEMS/mcl_hoppers/init.lua index f46a7884..f798977b 100644 --- a/mods/ITEMS/mcl_hoppers/init.lua +++ b/mods/ITEMS/mcl_hoppers/init.lua @@ -8,7 +8,9 @@ local mcl_hoppers_formspec = "size[9,7]".. "background[-0.19,-0.25;9.41,10.48;mcl_hoppers_inventory.png]".. mcl_vars.inventory_header.. + "label[2,0;"..minetest.formspec_escape(minetest.colorize("#313131", S("Hopper"))).."]".. "list[current_name;main;2,0.5;5,1;]".. + "label[0,2;"..minetest.formspec_escape(minetest.colorize("#313131", S("Inventory"))).."]".. "list[current_player;main;0,2.5;9,3;9]".. "list[current_player;main;0,5.74;9,1;]".. "listring[current_name;main]".. diff --git a/mods/ITEMS/mcl_hoppers/locale/mcl_hoppers.de.tr b/mods/ITEMS/mcl_hoppers/locale/mcl_hoppers.de.tr index f3e2d2ac..cd752118 100644 --- a/mods/ITEMS/mcl_hoppers/locale/mcl_hoppers.de.tr +++ b/mods/ITEMS/mcl_hoppers/locale/mcl_hoppers.de.tr @@ -10,3 +10,4 @@ To place a hopper vertically, place it on the floor or a ceiling. To place it si Disabled Hopper=Deaktivierter Trichter Side Hopper=Seitwärtstrichter Disabled Side Hopper=Deaktivierter Seitwärtstrichter +Inventory=Inventar diff --git a/mods/ITEMS/mcl_hoppers/locale/template.txt b/mods/ITEMS/mcl_hoppers/locale/template.txt index 8aea0920..df66e4ce 100644 --- a/mods/ITEMS/mcl_hoppers/locale/template.txt +++ b/mods/ITEMS/mcl_hoppers/locale/template.txt @@ -10,3 +10,4 @@ To place a hopper vertically, place it on the floor or a ceiling. To place it si Disabled Hopper= Side Hopper= Disabled Side Hopper= +Inventory= diff --git a/mods/ITEMS/mcl_hoppers/textures/mcl_hoppers_inventory.png b/mods/ITEMS/mcl_hoppers/textures/mcl_hoppers_inventory.png index f44510466f4d25216cd07d0d4385e07e97491d82..409cdb2722100b8f43dc550814953ae99a9a555a 100644 GIT binary patch literal 1363 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 From 6fbd47cde66195a102c6baddb1c2c4e12a3046fd Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sat, 16 Mar 2019 05:29:28 +0100 Subject: [PATCH 181/737] Translate missing commands --- mods/MISC/mcl_commands/init.lua | 4 ++-- mods/MISC/mcl_commands/locale/mcl_commands.de.tr | 2 ++ mods/MISC/mcl_commands/locale/template.txt | 2 ++ 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/mods/MISC/mcl_commands/init.lua b/mods/MISC/mcl_commands/init.lua index 1444abd7..c77b3081 100644 --- a/mods/MISC/mcl_commands/init.lua +++ b/mods/MISC/mcl_commands/init.lua @@ -100,7 +100,7 @@ minetest.register_chatcommand("setblock", { }) minetest.register_chatcommand("list", { - description = "Show who is logged on", + description = S("Show who is logged on"), params = "", privs = {}, func = function(name) @@ -113,7 +113,7 @@ minetest.register_chatcommand("list", { }) minetest.register_chatcommand("seed", { - description = "Displays the world seed", + description = S("Displays the world seed"), params = "", privs = {}, func = function(name) diff --git a/mods/MISC/mcl_commands/locale/mcl_commands.de.tr b/mods/MISC/mcl_commands/locale/mcl_commands.de.tr index a29371fa..98f1e6a0 100644 --- a/mods/MISC/mcl_commands/locale/mcl_commands.de.tr +++ b/mods/MISC/mcl_commands/locale/mcl_commands.de.tr @@ -18,3 +18,5 @@ Invalid node=Unültiger Node Invalid parameters (see /help setblock)=Ungültige Parameter (siehe „/help setblock”) List bans=Bannliste anzeigen Ban list: @1=Bannliste: @1 +Show who is logged on=Anzeigen, wer eingeloggt ist +Displays the world seed=Den Seed der Welt anzeigen diff --git a/mods/MISC/mcl_commands/locale/template.txt b/mods/MISC/mcl_commands/locale/template.txt index d98db68a..fc979be6 100644 --- a/mods/MISC/mcl_commands/locale/template.txt +++ b/mods/MISC/mcl_commands/locale/template.txt @@ -18,3 +18,5 @@ Invalid node= Invalid parameters (see /help setblock)= List bans= Ban list: @1= +Show who is logged on= +Displays the world seed= From b0acd134cae1c1b43a45324d4e9096683746d646 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sat, 16 Mar 2019 06:43:59 +0100 Subject: [PATCH 182/737] Remove sand solidification code Minetest does this now --- mods/MAPGEN/mcl_mapgen_core/init.lua | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/mods/MAPGEN/mcl_mapgen_core/init.lua b/mods/MAPGEN/mcl_mapgen_core/init.lua index 18be851e..b537be2a 100644 --- a/mods/MAPGEN/mcl_mapgen_core/init.lua +++ b/mods/MAPGEN/mcl_mapgen_core/init.lua @@ -64,8 +64,6 @@ local c_dirt_with_grass = minetest.get_content_id("mcl_core:dirt_with_grass") local c_dirt_with_grass_snow = minetest.get_content_id("mcl_core:dirt_with_grass_snow") local c_sand = minetest.get_content_id("mcl_core:sand") local c_sandstone = minetest.get_content_id("mcl_core:sandstone") -local c_redsand = minetest.get_content_id("mcl_core:redsand") -local c_redsandstone = minetest.get_content_id("mcl_core:redsandstone") local c_void = minetest.get_content_id("mcl_core:void") local c_lava = minetest.get_content_id("mcl_core:lava_source") local c_water = minetest.get_content_id("mcl_core:water_source") @@ -1793,9 +1791,8 @@ minetest.register_on_generated(function(minp, maxp, seed) -- Non-v6 mapgens: -- Clear snowy grass blocks without snow above to ensure consistency. - -- Solidify floating sand to sandstone (both colors). else - local nodes = minetest.find_nodes_in_area(minp, maxp, {"mcl_core:dirt_with_grass_snow", "mcl_core:sand", "mcl_core:redsand"}) + local nodes = minetest.find_nodes_in_area(minp, maxp, {"mcl_core:dirt_with_grass_snow"}) for n=1, #nodes do local p_pos = area:index(nodes[n].x, nodes[n].y, nodes[n].z) local p_pos_above = area:index(nodes[n].x, nodes[n].y+1, nodes[n].z) @@ -1803,14 +1800,6 @@ minetest.register_on_generated(function(minp, maxp, seed) if data[p_pos] == c_dirt_with_grass_snow and p_pos_above and data[p_pos_above] ~= c_top_snow and data[p_pos_above] ~= c_snow_block then data[p_pos] = c_dirt_with_grass lvm_used = true - elseif p_pos_below and data[p_pos_below] == c_air or data[p_pos_below] == c_water then - if data[p_pos] == c_sand then - data[p_pos] = c_sandstone - lvm_used = true - elseif data[p_pos] == c_redsand then - data[p_pos] = c_redsandstone - lvm_used = true - end end end end From 49f447ba645dbfb49f64d3241f35f1d8c4dffb03 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sun, 17 Mar 2019 09:33:44 +0100 Subject: [PATCH 183/737] Fix missing depends in mcl_tnt --- mods/ITEMS/mcl_tnt/depends.txt | 1 + mods/ITEMS/mcl_tnt/init.lua | 12 ++++++++---- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/mods/ITEMS/mcl_tnt/depends.txt b/mods/ITEMS/mcl_tnt/depends.txt index f02d2b05..548dace5 100644 --- a/mods/ITEMS/mcl_tnt/depends.txt +++ b/mods/ITEMS/mcl_tnt/depends.txt @@ -2,3 +2,4 @@ mcl_sounds? mcl_mobitems? mcl_death_messages? doc_identifier? +mesecons? diff --git a/mods/ITEMS/mcl_tnt/init.lua b/mods/ITEMS/mcl_tnt/init.lua index 738d6b08..6fa0728f 100644 --- a/mods/ITEMS/mcl_tnt/init.lua +++ b/mods/ITEMS/mcl_tnt/init.lua @@ -54,6 +54,13 @@ local sounds if minetest.get_modpath("mcl_sounds") then sounds = mcl_sounds.node_sound_wood_defaults() end +local tnt_mesecons +if minetest.get_modpath("mesecons") then + tnt_mesecons = {effector = { + action_on = tnt.ignite, + rules = mesecon.rules.alldirs, + }} +end minetest.register_node("mcl_tnt:tnt", { tiles = {"default_tnt_top.png", "default_tnt_bottom.png", "default_tnt_side.png", "default_tnt_side.png", @@ -66,10 +73,7 @@ minetest.register_node("mcl_tnt:tnt", { _doc_items_longdesc = S("An explosive device. When it explodes, it will hurt living beings and destroy blocks around it. TNT has an explosion radius of @1. With a small chance, blocks may drop as an item (as if being mined) rather than being destroyed. TNT can be ignited by tools, explosions, fire, lava and redstone signals.", TNT_RANGE), _doc_items_usagehelp = S("Place the TNT and ignite it with one of the methods above. Quickly get in safe distance. The TNT will start to be affected by gravity and explodes in 4 seconds."), groups = { dig_immediate = 3, tnt = 1, enderman_takable=1 }, - mesecons = {effector = { - action_on = tnt.ignite, - rules = mesecon.rules.alldirs, - }}, + mesecons = tnt_mesecons, _on_ignite = function(player, pointed_thing) tnt.ignite(pointed_thing.under) return true From 058f46043f136e554913c73323656467df90177b Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 18 Mar 2019 12:05:33 +0100 Subject: [PATCH 184/737] Fix minor typo --- mods/ITEMS/mcl_end/locale/mcl_end.de.tr | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_end/locale/mcl_end.de.tr b/mods/ITEMS/mcl_end/locale/mcl_end.de.tr index 7577559a..08119ae7 100644 --- a/mods/ITEMS/mcl_end/locale/mcl_end.de.tr +++ b/mods/ITEMS/mcl_end/locale/mcl_end.de.tr @@ -5,7 +5,7 @@ Purpur Block=Purpurblock Purpur Pillar=Purpursäule End Rod=Endstab End rods are decorative light sources.=Endstäbe sind dekorative Lichtquellen. -Dragon Egg=Drachenei. +Dragon Egg=Drachenei A dragon egg is a decorative item which can be placed.=Ein Drahenei ist ein dekorativer, platzierbarer Gegenstand. Chorus Flower=Chorusblume A chorus flower is the living part of a chorus plant. It can grow into a tall chorus plant, step by step. When it grows, it may die on old age eventually. It also dies when it is unable to grow.=Eine Chorusblume ist der lebendige Teil einer Choruspflanze. Sie kann zu einer großen Choruspflanze heranwachsen, Schritt für Schritt. Wenn sie wächst, wird sie irgendwann am Alter absterben. Sie stirbt auch ab, wenn sie nicht weiterwachsen kann. From c3968209f6e98092ce6a6dca17367daea0f16ce7 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 18 Mar 2019 12:20:10 +0100 Subject: [PATCH 185/737] Add missing mcl_doc translations --- mods/HELP/mcl_doc/init.lua | 6 +++--- mods/HELP/mcl_doc/locale/mcl_doc.de.tr | 5 ++++- mods/HELP/mcl_doc/locale/template.txt | 3 +++ 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/mods/HELP/mcl_doc/init.lua b/mods/HELP/mcl_doc/init.lua index fc35f8e3..f5f2f88f 100644 --- a/mods/HELP/mcl_doc/init.lua +++ b/mods/HELP/mcl_doc/init.lua @@ -202,15 +202,15 @@ doc.sub.items.register_factoid("nodes", "mining", function(itemstring, def) tool_minable = true end if groups.shearsy or groups.shearsy_wool then - datastring = datastring .. "• Shears" .. "\n" + datastring = datastring .. S("• Shears") .. "\n" tool_minable = true end if groups.swordy or groups.swordy_cobweb then - datastring = datastring .. "• Sword" .. "\n" + datastring = datastring .. S("• Sword") .. "\n" tool_minable = true end if groups.handy then - datastring = datastring .. "• Hand" .. "\n" + datastring = datastring .. S("• Hand") .. "\n" tool_minable = true end diff --git a/mods/HELP/mcl_doc/locale/mcl_doc.de.tr b/mods/HELP/mcl_doc/locale/mcl_doc.de.tr index f0143cab..ff88f98a 100644 --- a/mods/HELP/mcl_doc/locale/mcl_doc.de.tr +++ b/mods/HELP/mcl_doc/locale/mcl_doc.de.tr @@ -38,7 +38,7 @@ Iron Axe=Eisenaxt Stone Axe=Steinaxt Golden Axe=Goldaxt Wooden Axe=Holzaxt -Diamond Shovel=Diamantschaufen +Diamond Shovel=Diamantschaufel Iron Shovel=Eisenschaufel Stone Shovel=Steinschaufel Golden Shovel=Goldschaufel @@ -52,3 +52,6 @@ This block drops itself when mined by shears.=Dieser Block wirft sich selbst ab, @1×@2=@1×@2 This blocks drops the following when mined by shears: @1=Dieser Block wird folgendes abwerfen, wenn er mit einer Schere abgebaut wird: @ , =, +• Shears=• Schere +• Sword=• Schwert +• Hand=• Hand diff --git a/mods/HELP/mcl_doc/locale/template.txt b/mods/HELP/mcl_doc/locale/template.txt index da297a3e..542d2940 100644 --- a/mods/HELP/mcl_doc/locale/template.txt +++ b/mods/HELP/mcl_doc/locale/template.txt @@ -52,3 +52,6 @@ This block drops itself when mined by shears.= @1×@2= This blocks drops the following when mined by shears: @1= , = +• Shears= +• Sword= +• Hand= From 2237aae6c360403d5b317eb1e30c3e8c075a0029 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 18 Mar 2019 13:20:17 +0100 Subject: [PATCH 186/737] Update all help mods --- mods/HELP/doc/doc/API.md | 4 - mods/HELP/doc/doc/depends.txt | 5 - mods/HELP/doc/doc/description.txt | 1 - mods/HELP/doc/doc/init.lua | 109 ++------ mods/HELP/doc/doc/locale/de.txt | 42 --- mods/HELP/doc/doc/locale/doc.de.tr | 51 ++++ mods/HELP/doc/doc/locale/doc.pt.tr | 43 +++ mods/HELP/doc/doc/locale/doc.pt_BR.tr | 43 +++ mods/HELP/doc/doc/locale/template.txt | 93 +++--- mods/HELP/doc/doc/mod.conf | 2 + mods/HELP/doc/doc_identifier/depends.txt | 5 - mods/HELP/doc/doc_identifier/description.txt | 1 - mods/HELP/doc/doc_identifier/init.lua | 33 +-- mods/HELP/doc/doc_identifier/locale/de.txt | 13 - .../locale/doc_identifier.de.tr | 17 ++ .../locale/doc_identifier.pt.tr | 14 + .../locale/doc_identifier.pt_BR.tr | 14 + .../doc/doc_identifier/locale/template.txt | 30 +- mods/HELP/doc/doc_identifier/mod.conf | 3 + .../doc_identifier_identifier_liquid.png | Bin 414 -> 275 bytes mods/HELP/doc/doc_items/depends.txt | 2 - mods/HELP/doc/doc_items/description.txt | 1 - mods/HELP/doc/doc_items/init.lua | 45 +-- mods/HELP/doc/doc_items/locale/de.txt | 140 ---------- .../HELP/doc/doc_items/locale/doc_items.de.tr | 142 ++++++++++ .../HELP/doc/doc_items/locale/doc_items.pt.tr | 141 ++++++++++ .../doc/doc_items/locale/doc_items.pt_BR.tr | 141 ++++++++++ mods/HELP/doc/doc_items/locale/template.txt | 264 +++++++++--------- mods/HELP/doc/doc_items/mod.conf | 2 + 29 files changed, 876 insertions(+), 525 deletions(-) delete mode 100644 mods/HELP/doc/doc/depends.txt delete mode 100644 mods/HELP/doc/doc/description.txt delete mode 100644 mods/HELP/doc/doc/locale/de.txt create mode 100644 mods/HELP/doc/doc/locale/doc.de.tr create mode 100644 mods/HELP/doc/doc/locale/doc.pt.tr create mode 100644 mods/HELP/doc/doc/locale/doc.pt_BR.tr delete mode 100644 mods/HELP/doc/doc_identifier/depends.txt delete mode 100644 mods/HELP/doc/doc_identifier/description.txt delete mode 100644 mods/HELP/doc/doc_identifier/locale/de.txt create mode 100644 mods/HELP/doc/doc_identifier/locale/doc_identifier.de.tr create mode 100644 mods/HELP/doc/doc_identifier/locale/doc_identifier.pt.tr create mode 100644 mods/HELP/doc/doc_identifier/locale/doc_identifier.pt_BR.tr delete mode 100644 mods/HELP/doc/doc_items/depends.txt delete mode 100644 mods/HELP/doc/doc_items/description.txt delete mode 100644 mods/HELP/doc/doc_items/locale/de.txt create mode 100644 mods/HELP/doc/doc_items/locale/doc_items.de.tr create mode 100644 mods/HELP/doc/doc_items/locale/doc_items.pt.tr create mode 100644 mods/HELP/doc/doc_items/locale/doc_items.pt_BR.tr diff --git a/mods/HELP/doc/doc/API.md b/mods/HELP/doc/doc/API.md index 784a6668..49afeb3a 100644 --- a/mods/HELP/doc/doc/API.md +++ b/mods/HELP/doc/doc/API.md @@ -454,10 +454,6 @@ viewed a category as well, both returned values are `nil`. This is a convenience function for creating a special formspec widget. It creates a widget in which you can insert scrollable multi-line text. -As of Minetest 0.4.14, this function is only provided because Minetest lacks -native support for such a widget. When Minetest supports such a widget natively, -this function may become just a simple wrapper. - #### Parameters * `data`: Text to be written inside the widget * `x`: Formspec X coordinate (optional) diff --git a/mods/HELP/doc/doc/depends.txt b/mods/HELP/doc/doc/depends.txt deleted file mode 100644 index 4907c641..00000000 --- a/mods/HELP/doc/doc/depends.txt +++ /dev/null @@ -1,5 +0,0 @@ -intllib? -unified_inventory? -sfinv_buttons? -central_message? -inventory_plus? diff --git a/mods/HELP/doc/doc/description.txt b/mods/HELP/doc/doc/description.txt deleted file mode 100644 index 808a218b..00000000 --- a/mods/HELP/doc/doc/description.txt +++ /dev/null @@ -1 +0,0 @@ -A simple in-game documentation system which enables mods to add help entries based on templates. diff --git a/mods/HELP/doc/doc/init.lua b/mods/HELP/doc/doc/init.lua index 7f4705ef..dcb4c785 100644 --- a/mods/HELP/doc/doc/init.lua +++ b/mods/HELP/doc/doc/init.lua @@ -1,16 +1,10 @@ --- Boilerplate to support localized strings if intllib mod is installed. -local S, F -if minetest.get_modpath("intllib") then - S = intllib.Getter() -else - S = function(s,a,...)a={a,...}return s:gsub("@(%d+)",function(n)return a[tonumber(n)]end)end -end -F = function(f) return minetest.formspec_escape(S(f)) end +local S = minetest.get_translator("doc") +local F = function(f) return minetest.formspec_escape(S(f)) end -- Compability for 0.4.14 or earlier local colorize -if core.colorize then - colorize = core.colorize +if minetest.colorize then + colorize = minetest.colorize else colorize = function(color, text) return text end end @@ -57,9 +51,6 @@ local CATEGORYFIELDSIZE = { HEIGHT = math.floor(doc.FORMSPEC.HEIGHT-1), } --- Maximum characters per line in the text widget -local TEXT_LINELENGTH = 80 - doc.data = {} doc.data.categories = {} doc.data.aliases = {} @@ -462,66 +453,9 @@ end -- Template function templates, to be used for build_formspec in doc.add_category doc.entry_builders = {} --- Inserts line breaks into a single paragraph and collapses all whitespace (including newlines) --- into spaces -local linebreaker_single = function(text, linelength) - if linelength == nil then - linelength = TEXT_LINELENGTH - end - local remain = linelength - local res = {} - local line = {} - local split = function(s) - local res = {} - for w in string.gmatch(s, "%S+") do - res[#res+1] = w - end - return res - end - - for _, word in ipairs(split(text)) do - if string.len(word) + 1 > remain then - table.insert(res, table.concat(line, " ")) - line = { word } - remain = linelength - string.len(word) - else - table.insert(line, word) - remain = remain - (string.len(word) + 1) - end - end - - table.insert(res, table.concat(line, " ")) - return table.concat(res, "\n") -end - --- Inserts automatic line breaks into an entire text and preserves existing newlines -local linebreaker = function(text, linelength) - local out = "" - for s in string.gmatch(text, "([^\n]*)") do - local l = linebreaker_single(s, linelength) - out = out .. l - if(string.len(l) == 0) then - out = out .. "\n" - end - end - -- Remove last newline - if string.len(out) >= 1 then - out = string.sub(out, 1, string.len(out) - 1) - end - return out -end - --- Inserts text suitable for a textlist (including automatic word-wrap) -local text_for_textlist = function(text, linelength) - text = linebreaker(text, linelength) - text = minetest.formspec_escape(text) - text = string.gsub(text, "\n", ",") - return text -end - -- Scrollable freeform text doc.entry_builders.text = function(data) - local formstring = doc.widgets.text(data, doc.FORMSPEC.ENTRY_START_X, doc.FORMSPEC.ENTRY_START_Y, doc.FORMSPEC.ENTRY_WIDTH - 0.2, doc.FORMSPEC.ENTRY_HEIGHT) + local formstring = doc.widgets.text(data, doc.FORMSPEC.ENTRY_START_X, doc.FORMSPEC.ENTRY_START_Y, doc.FORMSPEC.ENTRY_WIDTH - 0.4, doc.FORMSPEC.ENTRY_HEIGHT) return formstring end @@ -539,7 +473,7 @@ doc.entry_builders.text_and_gallery = function(data, playername) formstring = formstring .. doc.widgets.text(data.text, doc.FORMSPEC.ENTRY_START_X, doc.FORMSPEC.ENTRY_START_Y, - doc.FORMSPEC.ENTRY_WIDTH - 0.2, + doc.FORMSPEC.ENTRY_WIDTH - 0.4, doc.FORMSPEC.ENTRY_HEIGHT - stolen_height) return formstring @@ -547,12 +481,13 @@ end doc.widgets = {} -local text_id = 1 -- Scrollable freeform text doc.widgets.text = function(data, x, y, width, height) if x == nil then x = doc.FORMSPEC.ENTRY_START_X end + -- Offset to table[], which was used for this in a previous version + local xfix = x + 0.35 if y == nil then y = doc.FORMSPEC.ENTRY_START_Y end @@ -562,18 +497,13 @@ doc.widgets.text = function(data, x, y, width, height) if height == nil then height = doc.FORMSPEC.ENTRY_HEIGHT end - local baselength = TEXT_LINELENGTH - local widget_basewidth = doc.FORMSPEC.WIDTH - local linelength = math.max(20, math.floor(baselength * (width / widget_basewidth))) + -- Weird offset for textarea[] + local heightfix = height + 1 - local widget_id = "doc_widget_text"..text_id - text_id = text_id + 1 - -- TODO: Wait for Minetest to provide a native widget for scrollable read-only text with automatic line breaks. - -- Currently, all of this had to be hacked into this script manually by using/abusing the table widget - local formstring = "tablecolumns[text]".. - "tableoptions[background=#000000FF;highlight=#000000FF;border=false]".. - "table["..tostring(x)..","..tostring(y)..";"..tostring(width)..","..tostring(height)..";"..widget_id..";"..text_for_textlist(data, linelength).."]" - return formstring, widget_id + -- Also add background box + local formstring = "box["..tostring(x-0.175)..","..tostring(y)..";"..tostring(width)..","..tostring(height)..";#000000]" .. + "textarea["..tostring(xfix)..","..tostring(y)..";"..tostring(width)..","..tostring(heightfix)..";;;"..minetest.formspec_escape(data).."]" + return formstring end -- Image gallery @@ -731,12 +661,12 @@ function doc.formspec_core(tab) minetest.formspec_escape(S("Category list")) .. "," .. minetest.formspec_escape(S("Entry list")) .. "," .. minetest.formspec_escape(S("Entry")) .. ";" - ..tab..";true;true]" .. - "bgcolor[#343434FF]" + ..tab..";false;false]" + -- Let the Game decide on the style, such as background, etc. end function doc.formspec_main(playername) - local formstring = "label[0,0;"..minetest.formspec_escape(DOC_INTRO) .. "\n" + local formstring = "textarea[0.35,0;"..doc.FORMSPEC.WIDTH..",1;;;"..minetest.formspec_escape(DOC_INTRO) .. "\n" local notify_checkbox_x, notify_checkbox_y if doc.get_category_count() >= 1 then formstring = formstring .. F("Please select a category you wish to learn more about:").."]" @@ -806,7 +736,8 @@ function doc.formspec_error_no_categories() formstring = formstring .. minetest.formspec_escape( colorize(COLOR_ERROR, S("Error: No help available.")) .. "\n\n" .. -S("No categories have been registered, but they are required to provide help.\nThe Documentation System [doc] does not come with help contents on its own, it needs additional mods to add help content. Please make sure such mods are enabled on for this world, and try again.")) .. "\n\n" .. +S("No categories have been registered, but they are required to provide help.").."\n".. +S("The Documentation System [doc] does not come with help contents on its own, it needs additional mods to add help content. Please make sure such mods are enabled on for this world, and try again.")) .. "\n\n" .. S("Recommended mods: doc_basics, doc_items, doc_identifier, doc_encyclopedia.") formstring = formstring .. ";]button_exit[3,5;2,1;okay;"..F("OK").."]" return formstring @@ -941,7 +872,7 @@ function doc.formspec_category(id, playername) if total >= 1 then local revealed = doc.get_revealed_count(playername, id) if revealed == 0 then - formstring = formstring .. "label[0,0.5;"..F("Currently all entries in this category are hidden from you.\nUnlock new entries by progressing in the game.").."]" + formstring = formstring .. "label[0,0.5;"..minetest.formspec_escape(S("Currently all entries in this category are hidden from you.").."\n"..S("Unlock new entries by progressing in the game.")).."]" formstring = formstring .. "button[0,1.5;3,1;doc_button_goto_main;"..F("Go to category list").."]" else formstring = formstring .. "label[0,0.5;"..F("This category has the following entries:").."]" diff --git a/mods/HELP/doc/doc/locale/de.txt b/mods/HELP/doc/doc/locale/de.txt deleted file mode 100644 index 113307ed..00000000 --- a/mods/HELP/doc/doc/locale/de.txt +++ /dev/null @@ -1,42 +0,0 @@ -< = < -> = > -Access to the requested entry has been denied; this entry is secret. You may unlock access by progressing in the game. Figure out on your own how to unlock this entry. = Der Zugriff auf den angeforderten Eintrag wurde verweigert; dieser Eintrag ist geheim. Sie können durch weiteren Spielfortschritt den Zugriff freischalten. Finden Sie selbst heraus, wie Sie diesen Eintrag freischalten können. -All entries read. = Alle Einträge gelesen. -All help entries revealed! = Alle Hilfseinträge aufgedeckt! -All help entries are already revealed. = Alle Hilfseinträge sind schon aufgedeckt. -Allows you to reveal all hidden help entries with /help_reveal = Ermöglicht es Ihnen, alle verborgenen Hilfseinträge mit /help_reveal freizuschalten -Category list = Kategorienliste -Currently all entries in this category are hidden from you.\nUnlock new entries by progressing in the game. = Momentan sind alle Einträge in dieser Kategorie vor Ihnen verborgen.\nSchalten Sie neue Einträge frei, indem Sie im Spiel fortschreiten. -Help = Hilfe -Entry = Eintrag -Entry list = Eintragsliste -Error: Access denied. = Fehler: Zugriff verweigert. -Error: No help available. = Fehler: Keine Hilfe verfügbar. -Go to category list = Zur Kategorienliste -Go to entry list = Zur Eintragsliste -Help > (No Category) = Hilfe > (Keine Kategorie) -Help > @1 = Hilfe > @1 -Help > @1 > @2 = Hilfe > @1 > @2 -Help > @1 > (No Entry) = Hilfe > @1 > (Kein Eintrag) -Hidden entries: @1 = Verborgene Einträge: @1 -New entries: @1 = Neue Einträge: @1 -New help entry unlocked: @1 > @2 = Neuen Hilfseintrag freigeschaltet: @1 > @2 -No categories have been registered, but they are required to provide help.\nThe Documentation System [doc] does not come with help contents on its own, it needs additional mods to add help content. Please make sure such mods are enabled on for this world, and try again. = Es wurden keine Kategorien registriert, aber sie werden benötigt, um die Hilfe anbieten zu können.\nDas Dokumentationssystem [doc] bringt von sich aus keine eigenen Hilfsinhalte mit, es benötigt zusätzliche Mods, um sie hinzuzufügen. Bitte stellen Sie sicher, dass solche Mods für diese Welt aktiviert sind und versuchen Sie es erneut. -Number of entries: @1 = Anzahl der Einträge: @1 -OK = OK -Open a window providing help entries about Minetest and more = Ein Fenster mit Hilfseinträgen über Minetest und mehr öffnen -Please select a category you wish to learn more about: = Bitte wählen Sie eine Kategorie, über die Sie mehr erfahren möchten, aus: -Recommended mods: doc_basics, doc_items, doc_identifier, doc_encyclopedia. = Empfohlene Mods: doc_basics, doc_items, doc_identifier, doc_encyclopedia. -Reveal all hidden help entries to you = Alle für Sie verborgenen Hilfseinträge freischalten -Show entry = Eintrag zeigen -Show category = Kategorie zeigen -Show next entry = Nächsten Eintrag zeigen -Show previous entry = Vorherigen Eintrag zeigen -This category does not have any entries. = Diese Kategorie hat keine Einträge. -This category has the following entries: = Diese Kategorie hat die folgenden Einträge: -This category is empty. = Diese Kategorie ist leer. -This is the help. = Dies ist die Hilfe. -You haven't chosen a category yet. Please choose one in the category list first. = Sie haben noch keine Kategorie gewählt. Bitte wählen Sie zuerst eine Kategorie in der Kategorienliste aus. -You haven't chosen an entry yet. Please choose one in the entry list first. = Sie haben noch keinen Eintrag gewählt. Bitte wählen Sie zuerst einen Eintrag in der Eintragsliste aus. -Nameless entry (@1) = Namenloser Eintrag (@1) -Collection of help texts = Sammlung von Hilfstexten diff --git a/mods/HELP/doc/doc/locale/doc.de.tr b/mods/HELP/doc/doc/locale/doc.de.tr new file mode 100644 index 00000000..39fc7251 --- /dev/null +++ b/mods/HELP/doc/doc/locale/doc.de.tr @@ -0,0 +1,51 @@ +# textdomain:doc +<=< +>=> +Access to the requested entry has been denied; this entry is secret. You may unlock access by progressing in the game. Figure out on your own how to unlock this entry.=Der Zugriff auf den angeforderten Eintrag wurde verweigert; dieser Eintrag ist geheim. Sie können durch weiteren Spielfortschritt den Zugriff freischalten. Finden Sie selbst heraus, wie Sie diesen Eintrag freischalten können. +All entries read.=Alle Einträge gelesen. +All help entries revealed!=Alle Hilfseinträge aufgedeckt! +All help entries are already revealed.=Alle Hilfseinträge sind schon aufgedeckt. +Allows you to reveal all hidden help entries with /help_reveal=Ermöglicht es Ihnen, alle verborgenen Hilfseinträge mit /help_reveal freizuschalten +Category list=Kategorienliste +Currently all entries in this category are hidden from you.=Momentan sind alle Einträge in dieser Kategorie vor Ihnen verborgen. +Unlock new entries by progressing in the game.=Schalten Sie neue Einträge frei, indem Sie im Spiel fortschreiten. +Help=Hilfe +Entry=Eintrag +Entry list=Eintragsliste +Error: Access denied.=Fehler: Zugriff verweigert. +Error: No help available.=Fehler: Keine Hilfe verfügbar. +Go to category list=Zur Kategorienliste +Go to entry list=Zur Eintragsliste +Help > (No Category)=Hilfe > (Keine Kategorie) +Help > @1=Hilfe > @1 +Help > @1 > @2=Hilfe > @1 > @2 +Help > @1 > (No Entry)=Hilfe > @1 > (Kein Eintrag) +Hidden entries: @1=Verborgene Einträge: @1 +New entries: @1=Neue Einträge: @1 +New help entry unlocked: @1 > @2=Neuen Hilfseintrag freigeschaltet: @1 > @2 +No categories have been registered, but they are required to provide help.=Es wurden keine Kategorien registriert, aber sie werden benötigt, um die Hilfe anbieten zu können. +The Documentation System [doc] does not come with help contents on its own, it needs additional mods to add help content. Please make sure such mods are enabled on for this world, and try again.=Das Dokumentationssystem [doc] bringt von sich aus keine eigenen Hilfsinhalte mit, es benötigt zusätzliche Mods, um sie hinzuzufügen. Bitte stellen Sie sicher, dass solche Mods für diese Welt aktiviert sind und versuchen Sie es erneut. +Number of entries: @1=Anzahl der Einträge: @1 +OK=OK +Open a window providing help entries about Minetest and more=Ein Fenster mit Hilfseinträgen über Minetest und mehr öffnen +Please select a category you wish to learn more about:=Bitte wählen Sie eine Kategorie, über die Sie mehr erfahren möchten, aus: +Recommended mods: doc_basics, doc_items, doc_identifier, doc_encyclopedia.=Empfohlene Mods: doc_basics, doc_items, doc_identifier, doc_encyclopedia. +Reveal all hidden help entries to you=Alle für Sie verborgenen Hilfseinträge freischalten +Show entry=Eintrag zeigen +Show category=Kategorie zeigen +Show next entry=Nächsten Eintrag zeigen +Show previous entry=Vorherigen Eintrag zeigen +This category does not have any entries.=Diese Kategorie hat keine Einträge. +This category has the following entries:=Diese Kategorie hat die folgenden Einträge: +This category is empty.=Diese Kategorie ist leer. +This is the help.=Dies ist die Hilfe. +You haven't chosen a category yet. Please choose one in the category list first.=Sie haben noch keine Kategorie gewählt, Bitte wählen Sie zuerst eine aus. +You haven't chosen an entry yet. Please choose one in the entry list first.=Sie haben noch keinen Eintrag gewählt. Bitte wählen Sie zuerst einen aus. +Nameless entry (@1)=Namenloser Eintrag (@1) +Collection of help texts=Sammlung von Hilfstexten +Notify me when new help is available=Benachrichtigen, wenn neue Hilfe verfügbar ist +Play notification sound when new help is available=Toneffekt abspielen, wenn neue Hilfe verfügbar ist +Show previous image=Vorheriges Bild zeigen +Show previous gallery page=Vorherige Galerieseite zeigen +Show next image=Nächstes Bild zeigen +Show next gallery page=Nächste Galerieseite zeigen diff --git a/mods/HELP/doc/doc/locale/doc.pt.tr b/mods/HELP/doc/doc/locale/doc.pt.tr new file mode 100644 index 00000000..52d68363 --- /dev/null +++ b/mods/HELP/doc/doc/locale/doc.pt.tr @@ -0,0 +1,43 @@ +# textdomain:doc +<= +>= +Access to the requested entry has been denied; this entry is secret. You may unlock access by progressing in the game. Figure out on your own how to unlock this entry.=O acesso à entrada solicitada foi negado; essa entrada é secreta. Você pode desbloquear o acesso progredindo no jogo. Descobrir por conta própria como desbloquear essa entrada. +All entries read.=Todas as entradas lidas. +All help entries revealed!=Todas as entradas de ajuda reveladas! +All help entries are already revealed.=Todas as entradas de ajuda já foram reveladas. +Allows you to reveal all hidden help entries with /help_reveal=Permite revelar todas as entradas de ajuda ocultas com /help_reveal +Category list=Lista de Categorias +Currently all entries in this category are hidden from you.\\nUnlock new entries by progressing in the game.=Atualmente, todas as entradas nessa categoria estão ocultas a você.\\nDesbloqueie novas entradas progredindo no jogo. +Help=Ajuda +Entry=Entrada +Entry list=Lista de Entradas +Error: Access denied.=Erro: Acesso negado. +Error: No help available.=Erro: Nenhuma ajuda disponível. +Go to category list=Ver categorias +Go to entry list=Ir para a lista de entradas +Help > @1=Ajuda > @1 +Help > @1 > @2=Ajuda > @1 > @2 +Help > @1 > (No Entry)=Ajuda > @1 > (Nenhuma Entrada) +Help > (No Category)=Ajuda > (Nenhuma Categoria) +Hidden entries: @1=Entradas ocultas: @1 +Nameless entry (@1)=Entrada sem nome (@1) +New entries: @1=Novas entradas: (@1) +New help entry unlocked: @1 > @2=Nova entrada de ajuda desbloqueada: @1 > @2 +No categories have been registered, but they are required to provide help.\nThe Documentation System [doc] does not come with help contents on its own, it needs additional mods to add help content. Please make sure such mods are enabled on for this world, and try again.=Nenhuma categoria foi registrada, mas é necessário fornecer ajuda.\nO Sistema de Documentação [doc] não vem com o conteúdo de ajuda, ele precisa de mods adicionais para adicionar conteúdo de ajuda. Por favor, certifique-se de que os mods estão habilitados para este mundo e tente novamente. +Number of entries: @1=Número de entradas: @1 +OK=OK +Open a window providing help entries about Minetest and more=Abra uma janela fornecendo entradas de ajuda sobre o Minetest e mais +Please select a category you wish to learn more about:=Por favor, selecione uma categoria sobre a qual você deseja saber mais: +Recommended mods: doc_basics, doc_items, doc_identifier, doc_encyclopedia.=Mods recomendados: doc_basics, doc_items, doc_identifier, doc_encyclopedia. +Reveal all hidden help entries to you=Revela todas as entradas de ajuda ocultas para você +Show entry=Ver entrada +Show category=Ver categoria +Show next entry=Ver próxima entrada +Show previous entry=Ver entrada anterior +This category does not have any entries.=Essa categoria não possui entradas. +This category has the following entries:=Essa categoria tem as seguintes entradas: +This category is empty.=Essa categoria está vazia. +This is the help.=Essa é a ajuda. +You haven't chosen a category yet. Please choose one in the category list first.=Você ainda não escolheu uma categoria. Por favor, escolha uma na lista de categorias primeiro. +You haven't chosen an entry yet. Please choose one in the entry list first.=Você ainda não escolheu uma entrada. Por favor, escolha uma na lista de entrada primeiro. +Collection of help texts=Coleção de textos de ajuda diff --git a/mods/HELP/doc/doc/locale/doc.pt_BR.tr b/mods/HELP/doc/doc/locale/doc.pt_BR.tr new file mode 100644 index 00000000..52d68363 --- /dev/null +++ b/mods/HELP/doc/doc/locale/doc.pt_BR.tr @@ -0,0 +1,43 @@ +# textdomain:doc +<= +>= +Access to the requested entry has been denied; this entry is secret. You may unlock access by progressing in the game. Figure out on your own how to unlock this entry.=O acesso à entrada solicitada foi negado; essa entrada é secreta. Você pode desbloquear o acesso progredindo no jogo. Descobrir por conta própria como desbloquear essa entrada. +All entries read.=Todas as entradas lidas. +All help entries revealed!=Todas as entradas de ajuda reveladas! +All help entries are already revealed.=Todas as entradas de ajuda já foram reveladas. +Allows you to reveal all hidden help entries with /help_reveal=Permite revelar todas as entradas de ajuda ocultas com /help_reveal +Category list=Lista de Categorias +Currently all entries in this category are hidden from you.\\nUnlock new entries by progressing in the game.=Atualmente, todas as entradas nessa categoria estão ocultas a você.\\nDesbloqueie novas entradas progredindo no jogo. +Help=Ajuda +Entry=Entrada +Entry list=Lista de Entradas +Error: Access denied.=Erro: Acesso negado. +Error: No help available.=Erro: Nenhuma ajuda disponível. +Go to category list=Ver categorias +Go to entry list=Ir para a lista de entradas +Help > @1=Ajuda > @1 +Help > @1 > @2=Ajuda > @1 > @2 +Help > @1 > (No Entry)=Ajuda > @1 > (Nenhuma Entrada) +Help > (No Category)=Ajuda > (Nenhuma Categoria) +Hidden entries: @1=Entradas ocultas: @1 +Nameless entry (@1)=Entrada sem nome (@1) +New entries: @1=Novas entradas: (@1) +New help entry unlocked: @1 > @2=Nova entrada de ajuda desbloqueada: @1 > @2 +No categories have been registered, but they are required to provide help.\nThe Documentation System [doc] does not come with help contents on its own, it needs additional mods to add help content. Please make sure such mods are enabled on for this world, and try again.=Nenhuma categoria foi registrada, mas é necessário fornecer ajuda.\nO Sistema de Documentação [doc] não vem com o conteúdo de ajuda, ele precisa de mods adicionais para adicionar conteúdo de ajuda. Por favor, certifique-se de que os mods estão habilitados para este mundo e tente novamente. +Number of entries: @1=Número de entradas: @1 +OK=OK +Open a window providing help entries about Minetest and more=Abra uma janela fornecendo entradas de ajuda sobre o Minetest e mais +Please select a category you wish to learn more about:=Por favor, selecione uma categoria sobre a qual você deseja saber mais: +Recommended mods: doc_basics, doc_items, doc_identifier, doc_encyclopedia.=Mods recomendados: doc_basics, doc_items, doc_identifier, doc_encyclopedia. +Reveal all hidden help entries to you=Revela todas as entradas de ajuda ocultas para você +Show entry=Ver entrada +Show category=Ver categoria +Show next entry=Ver próxima entrada +Show previous entry=Ver entrada anterior +This category does not have any entries.=Essa categoria não possui entradas. +This category has the following entries:=Essa categoria tem as seguintes entradas: +This category is empty.=Essa categoria está vazia. +This is the help.=Essa é a ajuda. +You haven't chosen a category yet. Please choose one in the category list first.=Você ainda não escolheu uma categoria. Por favor, escolha uma na lista de categorias primeiro. +You haven't chosen an entry yet. Please choose one in the entry list first.=Você ainda não escolheu uma entrada. Por favor, escolha uma na lista de entrada primeiro. +Collection of help texts=Coleção de textos de ajuda diff --git a/mods/HELP/doc/doc/locale/template.txt b/mods/HELP/doc/doc/locale/template.txt index 7d852e9a..fdeecfdc 100644 --- a/mods/HELP/doc/doc/locale/template.txt +++ b/mods/HELP/doc/doc/locale/template.txt @@ -1,42 +1,51 @@ -< = -> = -Access to the requested entry has been denied; this entry is secret. You may unlock access by progressing in the game. Figure out on your own how to unlock this entry. = -All entries read. = -All help entries revealed! = -All help entries are already revealed. = -Allows you to reveal all hidden help entries with /help_reveal = -Category list = -Currently all entries in this category are hidden from you.\\nUnlock new entries by progressing in the game. = -Help = -Entry = -Entry list = -Error: Access denied. = -Error: No help available. = -Go to category list = -Go to entry list = -Help > @1 = -Help > @1 > @2 = -Help > @1 > (No Entry) = -Help > (No Category) = -Hidden entries: @1 = -Nameless entry (@1) = -New entries: @1 = -New help entry unlocked: @1 > @2 = -No categories have been registered, but they are required to provide help.\nThe Documentation System [doc] does not come with help contents on its own, it needs additional mods to add help content. Please make sure such mods are enabled on for this world, and try again. = -Number of entries: @1 = -OK = -Open a window providing help entries about Minetest and more = -Please select a category you wish to learn more about: = -Recommended mods: doc_basics, doc_items, doc_identifier, doc_encyclopedia. = -Reveal all hidden help entries to you = -Show entry = -Show category = -Show next entry = -Show previous entry = -This category does not have any entries. = -This category has the following entries: = -This category is empty. = -This is the help. = -You haven't chosen a category yet. Please choose one in the category list first. = -You haven't chosen an entry yet. Please choose one in the entry list first. = -Collection of help texts = +# textdomain:doc +<= +>= +Access to the requested entry has been denied; this entry is secret. You may unlock access by progressing in the game. Figure out on your own how to unlock this entry.= +All entries read.= +All help entries revealed!= +All help entries are already revealed.= +Allows you to reveal all hidden help entries with /help_reveal= +Category list= +Currently all entries in this category are hidden from you. +Unlock new entries by progressing in the game.= +Help= +Entry= +Entry list= +Error: Access denied.= +Error: No help available.= +Go to category list= +Go to entry list= +Help > @1= +Help > @1 > @2= +Help > @1 > (No Entry)= +Help > (No Category)= +Hidden entries: @1= +Nameless entry (@1)= +New entries: @1= +New help entry unlocked: @1 > @2= +No categories have been registered, but they are required to provide help.= +The Documentation System [doc] does not come with help contents on its own, it needs additional mods to add help content. Please make sure such mods are enabled on for this world, and try again.= +Number of entries: @1= +OK= +Open a window providing help entries about Minetest and more= +Please select a category you wish to learn more about:= +Recommended mods: doc_basics, doc_items, doc_identifier, doc_encyclopedia.= +Reveal all hidden help entries to you= +Show entry= +Show category= +Show next entry= +Show previous entry= +This category does not have any entries.= +This category has the following entries:= +This category is empty.= +This is the help.= +You haven't chosen a category yet. Please choose one in the category list first.= +You haven't chosen an entry yet. Please choose one in the entry list first.= +Collection of help texts= +Notify me when new help is available= +Play notification sound when new help is available= +Show previous image= +Show previous gallery page= +Show next image= +Show next gallery page= diff --git a/mods/HELP/doc/doc/mod.conf b/mods/HELP/doc/doc/mod.conf index 5e2f4308..302fd83d 100644 --- a/mods/HELP/doc/doc/mod.conf +++ b/mods/HELP/doc/doc/mod.conf @@ -1 +1,3 @@ name = doc +optional_depends = unified_inventory, sfinv_buttons, central_message, inventory_plus +description = A simple in-game documentation system which enables mods to add help entries based on templates. diff --git a/mods/HELP/doc/doc_identifier/depends.txt b/mods/HELP/doc/doc_identifier/depends.txt deleted file mode 100644 index b4a65e0d..00000000 --- a/mods/HELP/doc/doc_identifier/depends.txt +++ /dev/null @@ -1,5 +0,0 @@ -doc -doc_items -doc_basics? -mcl_core? -intllib? diff --git a/mods/HELP/doc/doc_identifier/description.txt b/mods/HELP/doc/doc_identifier/description.txt deleted file mode 100644 index 8294c740..00000000 --- a/mods/HELP/doc/doc_identifier/description.txt +++ /dev/null @@ -1 +0,0 @@ -Adds a tool which shows help entries about almost anything which it punches. diff --git a/mods/HELP/doc/doc_identifier/init.lua b/mods/HELP/doc/doc_identifier/init.lua index b326a395..2713d389 100644 --- a/mods/HELP/doc/doc_identifier/init.lua +++ b/mods/HELP/doc/doc_identifier/init.lua @@ -1,10 +1,4 @@ --- Boilerplate to support localized strings if intllib mod is installed. -local S -if minetest.get_modpath("intllib") then - S = intllib.Getter() -else - S = function(s) return s end -end +local S = minetest.get_translator("doc_identifier") local doc_identifier = {} @@ -28,7 +22,7 @@ doc_identifier.identify = function(itemstack, user, pointed_thing) elseif itype == "error_node" then message = S("No help entry for this block could be found.") elseif itype == "error_unknown" then - vsize = vsize + 3 + vsize = vsize + 2 local mod if param ~= nil then local colon = string.find(param, ":") @@ -36,20 +30,23 @@ doc_identifier.identify = function(itemstack, user, pointed_thing) mod = string.sub(param,1,colon-1) end end - message = S("Error: This node, item or object is undefined. This is always an error.\nThis can happen for the following reasons:\n• The mod which is required for it is not enabled\n• The author of the game or a mod has made a mistake") + message = S("Error: This node, item or object is undefined. This is always an error.").."\n".. + S("This can happen for the following reasons:").."\n".. + S("• The mod which is required for it is not enabled").."\n".. + S("• The author of the game or a mod has made a mistake") message = message .. "\n\n" if mod ~= nil then if minetest.get_modpath(mod) ~= nil then - message = message .. string.format(S("It appears to originate from the mod “%s”, which is enabled."), mod) + message = message .. S("It appears to originate from the mod “@1”, which is enabled.", mod) message = message .. "\n" else - message = message .. string.format(S("It appears to originate from the mod “%s”, which is not enabled!"), mod) + message = message .. S("It appears to originate from the mod “@1”, which is not enabled!", mod) message = message .. "\n" end end if param ~= nil then - message = message .. string.format(S("Its identifier is “%s”."), param) + message = message .. S("Its identifier is “@1”.", param) end elseif itype == "error_ignore" then message = S("This block cannot be identified because the world has not materialized at this point yet. Try again in a few seconds.") @@ -61,9 +58,9 @@ doc_identifier.identify = function(itemstack, user, pointed_thing) minetest.show_formspec( username, "doc_identifier:error_missing_item_info", - "size[12,"..vsize..";]" .. - "label[0,0.2;"..minetest.formspec_escape(message).."]" .. - "button_exit[4.5,"..(-0.5+vsize)..";3,1;okay;"..minetest.formspec_escape(S("OK")).."]" + "size[10,"..vsize..";]" .. + "textarea[0.5,0.2;10,"..(vsize-0.2)..";;;"..minetest.formspec_escape(message).."]" .. + "button_exit[3.75,"..(-0.5+vsize)..";3,1;okay;"..minetest.formspec_escape(S("OK")).."]" ) end if pointed_thing.type == "node" then @@ -165,11 +162,10 @@ end minetest.register_tool("doc_identifier:identifier_solid", { description = S("Lookup Tool"), _doc_items_longdesc = S("This useful little helper can be used to quickly learn more about about one's closer environment. It identifies and analyzes blocks, items and other things and it shows extensive information about the thing on which it is used."), - _doc_items_usagehelp = S("Punch any block, item or other thing about you wish to learn more about. This will open up the appropriate help entry. The tool comes in two modes which are changed by a rightclick. In liquid mode (blue) this tool points to liquids as well while in solid mode (red) this is not the case. Liquid mode is required if you want to identify a liquid."), + _doc_items_usagehelp = S("Punch any block, item or other thing about you wish to learn more about. This will open up the appropriate help entry. The tool comes in two modes which are changed by using. In liquid mode, this tool points to liquids as well while in solid mode this is not the case."), _doc_items_hidden = false, tool_capabilities = {}, range = 10, - groups = { disable_repair = 1 }, wield_image = "doc_identifier_identifier.png", inventory_image = "doc_identifier_identifier.png", liquids_pointable = false, @@ -182,7 +178,7 @@ minetest.register_tool("doc_identifier:identifier_liquid", { _doc_items_create_entry = false, tool_capabilities = {}, range = 10, - groups = { not_in_creative_inventory = 1, not_in_craft_guide = 1, disable_repair=1 }, + groups = { not_in_creative_inventory = 1, not_in_craft_guide = 1, disable_repair = 1 }, wield_image = "doc_identifier_identifier_liquid.png", inventory_image = "doc_identifier_identifier_liquid.png", liquids_pointable = true, @@ -191,7 +187,6 @@ minetest.register_tool("doc_identifier:identifier_liquid", { on_secondary_use = doc_identifier.solid_mode, }) ---- TODO: These crafting recipes are temporary. Add a different way to obtain the lookup tool minetest.register_craft({ output = "doc_identifier:identifier_solid", recipe = { {"group:stick", "group:stick" }, diff --git a/mods/HELP/doc/doc_identifier/locale/de.txt b/mods/HELP/doc/doc_identifier/locale/de.txt deleted file mode 100644 index 418bd83b..00000000 --- a/mods/HELP/doc/doc_identifier/locale/de.txt +++ /dev/null @@ -1,13 +0,0 @@ -Error: This node, item or object is undefined. This is always an error.\nThis can happen for the following reasons:\n• The mod which is required for it is not enabled\n• The author of the game or a mod has made a mistake = Fehler: Dieser Node, Gegenstand oder dieses Objekt ist nicht definiert.\nDas ist immer ein Fehler.\nDies kann aus folgenden Gründen passieren:\n• Die Mod, die dafür benötigt wird, ist nicht aktiv\n• Der Spiel-Autor oder ein Mod-Autor machte einen Fehler -It appears to originate from the mod “%s”, which is enabled. = Es scheint von der Mod »%s« zu stammen. Sie ist aktiv. -It appears to originate from the mod “%s”, which is not enabled! = Es scheint von der Mod »%s« zu stammen. Sie ist nicht aktiv! -Its identifier is “%s”. = Der Identifkator ist »%s«. -Lookup Tool = Nachschlagewerkzeug -No help entry for this block could be found. = Für diesen Block konnte kein Hilfseintrag gefunden werden. -No help entry for this item could be found. = Für diesen Gegenstand konnte kein Hilfseintrag gefunden werden. -No help entry for this object could be found. = Für dieses Objekt konnte kein Hilfseintrag gefunden werden. -OK = OK -Punch any block, item or other thing about you wish to learn more about. This will open up the appropriate help entry. The tool comes in two modes which are changed by a rightclick. In liquid mode (blue) this tool points to liquids as well while in solid mode (red) this is not the case. Liquid mode is required if you want to identify a liquid. = Schlagen Sie einen beliebigen Block, Gegenstand oder irgendwas, worüber Sie mehr erfahren wollen. Das wird den passenden Hilfseintrag öffnen. Das Werkzeug hat zwei Modi, welcher mit einem Rechtsklick gewechselt werden kann. Im Flüssigmodus (blau) zeigt das Werkzeug auch auf Flüssigkeiten. Im Festmodus (rot) ist das nicht der Fall. Der Flüssigmodis ist notwendig, wenn Sie eine Flüssigkeit identifizieren wollen. -This block cannot be identified because the world has not materialized at this point yet. Try again in a few seconds. = Dieser Block kann nicht identifiziert werden, weil sich die Welt an dieser Stelle noch nicht materialisiert hat. Versuch es in ein paar Sekunden erneut. -This is a player. = Dies ist ein Spieler. -This useful little helper can be used to quickly learn more about about one's closer environment. It identifies and analyzes blocks, items and other things and it shows extensive information about the thing on which it is used. = Dieser nützliche kleine Helfer kann benutzt werden, um schnell etwas über die nähere Umgebung zu erfahren. Er identifiziert und analysiert Blöcke, Gegenstände und andere Dinge und zeigt ausführliche Informationen über all das, worauf man ihn anwendet. diff --git a/mods/HELP/doc/doc_identifier/locale/doc_identifier.de.tr b/mods/HELP/doc/doc_identifier/locale/doc_identifier.de.tr new file mode 100644 index 00000000..beba2e75 --- /dev/null +++ b/mods/HELP/doc/doc_identifier/locale/doc_identifier.de.tr @@ -0,0 +1,17 @@ +# textdomain:doc_identifier +Error: This node, item or object is undefined. This is always an error.=Fehler: Dieser Node, Gegenstand oder dieses Objekt ist nicht definiert. Das ist immer ein Fehler. +This can happen for the following reasons:=Dies kann aus folgenden Gründen passieren: +• The mod which is required for it is not enabled=• Die Mod, die dafür benötigt wird, ist nicht aktiv +• The author of the game or a mod has made a mistake=• Der Spiel-Autor oder ein Mod-Autor machte einen Fehler +It appears to originate from the mod “@1”, which is enabled.=Es scheint von der Mod „@1“ zu stammen. Sie ist aktiv. +It appears to originate from the mod “@1”, which is not enabled!=Es scheint von der Mod „@1“ zu stammen. Sie ist nicht aktiv! +Its identifier is “@1”.=Der Identifikator ist „@1“. +Lookup Tool=Nachschlagewerkzeug +No help entry for this block could be found.=Für diesen Block konnte kein Hilfseintrag gefunden werden. +No help entry for this item could be found.=Für diesen Gegenstand konnte kein Hilfseintrag gefunden werden. +No help entry for this object could be found.=Für dieses Objekt konnte kein Hilfseintrag gefunden werden. +OK=OK +Punch any block, item or other thing about you wish to learn more about. This will open up the appropriate help entry. The tool comes in two modes which are changed by using. In liquid mode, this tool points to liquids as well while in solid mode this is not the case.=Schlagen Sie einen beliebigen Block, Gegenstand oder irgendwas, worüber Sie mehr erfahren wollen. Das wird den passenden Hilfseintrag öffnen. Das Werkzeug hat zwei Modi, welcher mit Benutzen gewechselt werden kann. Im Flüssigmodus zeigt das Werkzeug auch auf Flüssigkeiten. Im Festmodus ist das nicht der Fall. +This block cannot be identified because the world has not materialized at this point yet. Try again in a few seconds.=Dieser Block kann nicht identifiziert werden, weil sich die Welt an dieser Stelle noch nicht materialisiert hat. Versuchen Sie es in ein paar Sekunden erneut. +This is a player.=Dies ist ein Spieler. +This useful little helper can be used to quickly learn more about about one's closer environment. It identifies and analyzes blocks, items and other things and it shows extensive information about the thing on which it is used.=Dieser nützliche kleine Helfer kann benutzt werden, um schnell etwas über die nähere Umgebung zu erfahren. Er identifiziert und analysiert Blöcke, Gegenstände und andere Dinge und zeigt ausführliche Informationen über all das, worauf man ihn anwendet. diff --git a/mods/HELP/doc/doc_identifier/locale/doc_identifier.pt.tr b/mods/HELP/doc/doc_identifier/locale/doc_identifier.pt.tr new file mode 100644 index 00000000..cb013c94 --- /dev/null +++ b/mods/HELP/doc/doc_identifier/locale/doc_identifier.pt.tr @@ -0,0 +1,14 @@ +# textdomain:doc_identifier +Error: This node, item or object is undefined. This is always an error.\\nThis can happen for the following reasons:\\n• The mod which is required for it is not enabled\\n• The author of the game or a mod has made a mistake=Erro: Esse bloco, item ou objeto é indefinido. Isso é sempre um erro.\\n Isso pode ter acontecido pelas seguintes rasões:\\n• O mod o qual ele precisa não está habilitado\\n• O autor do jogo ou mod comoteu um erro +It appears to originate from the mod “%s”, which is enabled.=Parece originar do mod “%s”, que está habilitado. +It appears to originate from the mod “%s”, which is not enabled!=Parece originar do mod “%s”, que não está habilitado. +Its identifier is “%s”.=Seu identificador é “%s”. +Lookup tool=Ferramenta de Pesquisa +No help entry for this block could be found.=Nenhuma entrada de ajuda para esse bloco pode ser encontrada. +No help entry for this item could be found.=Nenhuma entrada de ajuda para esse item pode ser encontrada. +No help entry for this object could be found.=Nenhuma entrada de ajuda para esse objeto pode ser encontrada. +OK=OK +Punch any block, item or other thing about you wish to learn more about. This will open up the appropriate help entry. The tool comes in two modes which are changed by a rightclick. In liquid mode (blue) this tool points to liquids as well while in solid mode (red) this is not the case. Liquid mode is required if you want to identify a liquid.=Soque qualquer bloco, item ou outra coisa sobre a qual você deseja aprender mais. Isso abrirá a entrada de ajuda apropriada. A ferramenta vem em dois modos que são alterados por um clique direito. No modo líquido (azul), esta ferramenta também aponta para líquidos, enquanto no modo sólido (vermelho) não é esse o caso. O modo líquido é necessário se você quiser identificar um líquido. +This block cannot be identified because the world has not materialized at this point yet. Try again in a few seconds.=Este bloco não pode ser identificado porque o mundo ainda não se materializou neste momento. Tente novamente em alguns segundos. +This is a player.=Este é um jogador. +This useful little helper can be used to quickly learn more about about one's closer environment. It identifies and analyzes blocks, items and other things and it shows extensive information about the thing on which it is used.=Esse pequeno e útil ajudante pode ser usado para aprender rapidamente sobre as coisas em sua volta. Ele identifica e analisa blocos, itens e outras coisas e mostra informações abrangentes sobre a coisa na qual é usado. diff --git a/mods/HELP/doc/doc_identifier/locale/doc_identifier.pt_BR.tr b/mods/HELP/doc/doc_identifier/locale/doc_identifier.pt_BR.tr new file mode 100644 index 00000000..cb013c94 --- /dev/null +++ b/mods/HELP/doc/doc_identifier/locale/doc_identifier.pt_BR.tr @@ -0,0 +1,14 @@ +# textdomain:doc_identifier +Error: This node, item or object is undefined. This is always an error.\\nThis can happen for the following reasons:\\n• The mod which is required for it is not enabled\\n• The author of the game or a mod has made a mistake=Erro: Esse bloco, item ou objeto é indefinido. Isso é sempre um erro.\\n Isso pode ter acontecido pelas seguintes rasões:\\n• O mod o qual ele precisa não está habilitado\\n• O autor do jogo ou mod comoteu um erro +It appears to originate from the mod “%s”, which is enabled.=Parece originar do mod “%s”, que está habilitado. +It appears to originate from the mod “%s”, which is not enabled!=Parece originar do mod “%s”, que não está habilitado. +Its identifier is “%s”.=Seu identificador é “%s”. +Lookup tool=Ferramenta de Pesquisa +No help entry for this block could be found.=Nenhuma entrada de ajuda para esse bloco pode ser encontrada. +No help entry for this item could be found.=Nenhuma entrada de ajuda para esse item pode ser encontrada. +No help entry for this object could be found.=Nenhuma entrada de ajuda para esse objeto pode ser encontrada. +OK=OK +Punch any block, item or other thing about you wish to learn more about. This will open up the appropriate help entry. The tool comes in two modes which are changed by a rightclick. In liquid mode (blue) this tool points to liquids as well while in solid mode (red) this is not the case. Liquid mode is required if you want to identify a liquid.=Soque qualquer bloco, item ou outra coisa sobre a qual você deseja aprender mais. Isso abrirá a entrada de ajuda apropriada. A ferramenta vem em dois modos que são alterados por um clique direito. No modo líquido (azul), esta ferramenta também aponta para líquidos, enquanto no modo sólido (vermelho) não é esse o caso. O modo líquido é necessário se você quiser identificar um líquido. +This block cannot be identified because the world has not materialized at this point yet. Try again in a few seconds.=Este bloco não pode ser identificado porque o mundo ainda não se materializou neste momento. Tente novamente em alguns segundos. +This is a player.=Este é um jogador. +This useful little helper can be used to quickly learn more about about one's closer environment. It identifies and analyzes blocks, items and other things and it shows extensive information about the thing on which it is used.=Esse pequeno e útil ajudante pode ser usado para aprender rapidamente sobre as coisas em sua volta. Ele identifica e analisa blocos, itens e outras coisas e mostra informações abrangentes sobre a coisa na qual é usado. diff --git a/mods/HELP/doc/doc_identifier/locale/template.txt b/mods/HELP/doc/doc_identifier/locale/template.txt index b57c67f5..a35201af 100644 --- a/mods/HELP/doc/doc_identifier/locale/template.txt +++ b/mods/HELP/doc/doc_identifier/locale/template.txt @@ -1,13 +1,17 @@ -Error: This node, item or object is undefined. This is always an error.\\nThis can happen for the following reasons:\\n• The mod which is required for it is not enabled\\n• The author of the game or a mod has made a mistake = -It appears to originate from the mod “%s”, which is enabled. = -It appears to originate from the mod “%s”, which is not enabled! = -Its identifier is “%s”. = -Lookup Tool = -No help entry for this block could be found. = -No help entry for this item could be found. = -No help entry for this object could be found. = -OK = -Punch any block, item or other thing about you wish to learn more about. This will open up the appropriate help entry. The tool comes in two modes which are changed by a rightclick. In liquid mode (blue) this tool points to liquids as well while in solid mode (red) this is not the case. Liquid mode is required if you want to identify a liquid. = -This block cannot be identified because the world has not materialized at this point yet. Try again in a few seconds. = -This is a player. = -This useful little helper can be used to quickly learn more about about one's closer environment. It identifies and analyzes blocks, items and other things and it shows extensive information about the thing on which it is used. = +# textdomain:doc_identifier +Error: This node, item or object is undefined. This is always an error.= +This can happen for the following reasons:= +• The mod which is required for it is not enabled= +• The author of the game or a mod has made a mistake= +It appears to originate from the mod “@1”, which is enabled.= +It appears to originate from the mod “@1”, which is not enabled!= +Its identifier is “@1”.= +Lookup Tool= +No help entry for this block could be found.= +No help entry for this item could be found.= +No help entry for this object could be found.= +OK= +Punch any block, item or other thing about you wish to learn more about. This will open up the appropriate help entry. The tool comes in two modes which are changed by using. In liquid mode, this tool points to liquids as well while in solid mode this is not the case.= +This block cannot be identified because the world has not materialized at this point yet. Try again in a few seconds.= +This is a player.= +This useful little helper can be used to quickly learn more about about one's closer environment. It identifies and analyzes blocks, items and other things and it shows extensive information about the thing on which it is used.= diff --git a/mods/HELP/doc/doc_identifier/mod.conf b/mods/HELP/doc/doc_identifier/mod.conf index df963a0c..4a7626a4 100644 --- a/mods/HELP/doc/doc_identifier/mod.conf +++ b/mods/HELP/doc/doc_identifier/mod.conf @@ -1 +1,4 @@ name = doc_identifier +depends = doc, doc_items +optional_depends = doc_basics, mcl_core +description = Adds a tool which shows help entries about almost anything which it punches. diff --git a/mods/HELP/doc/doc_identifier/textures/doc_identifier_identifier_liquid.png b/mods/HELP/doc/doc_identifier/textures/doc_identifier_identifier_liquid.png index 9f3aef969a008d9c6c4c9dc3f204465b7c4b018d..d3689ec6b8024875dd369defc41bac297ac28a50 100644 GIT binary patch delta 258 zcmbQoJeg^NWIYoD1H*)g8D|PE^7e)k<=3l2Yor>AFVdQ&MBb@09smd{r~^~ delta 399 zcmbQtG>>_LWIY=L1B3kM|A`C?42;D=?oJHr&dI!FU|`@Z@Q5sCVBk9f!i-b3`J@>b z7}!fZeO=ifaIgr7sI{`s$zfn%H1KqB46!(Ub<$pMrb3xx_Sf&8OxzbRP3oe6u9Ay@ zudnY`X+OubKyT-I$826-#l4B$!I#hKUXw80+8V%8)m$Gk$>YzF$D87VCy2#ub2)tVWF(2^7NxCeeOcK2wdKhwxd(pS6K`-%oTY!_yxdyh8soob zYRfuimaxWtoN)GsXC7-q(;tsTrCtSrTVKxBE&j>jT0G%tuT<#q!~H@W7gLU`7yeku z`AUJO`L?*@QoR@M^`-U+qPacoMu#6-Fx%;W{2HFsCw_jmFZ1!gotDPST>Op)%+qn> zo%?#S!o|3$$JSlGbY#0}npmjhTuf7$3X~~K8 z9@^G7ZEGf6TVfGCb?IWxpR0YlKbuBc$xQ!ay_dOkU(v*)Ywfl(FfcH1c)I$ztaD0e F0sy&>s@VVl diff --git a/mods/HELP/doc/doc_items/depends.txt b/mods/HELP/doc/doc_items/depends.txt deleted file mode 100644 index 31aa3903..00000000 --- a/mods/HELP/doc/doc_items/depends.txt +++ /dev/null @@ -1,2 +0,0 @@ -doc -intllib? diff --git a/mods/HELP/doc/doc_items/description.txt b/mods/HELP/doc/doc_items/description.txt deleted file mode 100644 index 7291077e..00000000 --- a/mods/HELP/doc/doc_items/description.txt +++ /dev/null @@ -1 +0,0 @@ -Adds automatically generated help texts for items. diff --git a/mods/HELP/doc/doc_items/init.lua b/mods/HELP/doc/doc_items/init.lua index bdbba21a..7ad8d58b 100644 --- a/mods/HELP/doc/doc_items/init.lua +++ b/mods/HELP/doc/doc_items/init.lua @@ -1,10 +1,5 @@ --- Boilerplate to support localized strings if intllib mod is installed. -local S -if minetest.get_modpath("intllib") then - S = intllib.Getter() -else - S = function(s,a,...)a={a,...}return s:gsub("@(%d+)",function(n)return a[tonumber(n)]end)end -end +local S = minetest.get_translator("doc_items") +local N = function(s) return s end doc.sub.items = {} @@ -642,7 +637,7 @@ doc.add_category("nodes", { end end local fdap = data.def.groups.fall_damage_add_percent - if fdap ~= nil then + if fdap ~= nil and fdap ~= 0 then if fdap > 0 then datastring = datastring .. S("The fall damage on this block is increased by @1%.", fdap) .. "\n" elseif fdap <= -100 then @@ -664,9 +659,13 @@ doc.add_category("nodes", { datastring = datastring .. S("This block can be climbed.").."\n" end local bouncy = data.def.groups.bouncy - if bouncy ~= nil then + if bouncy ~= nil and bouncy ~= 0 then datastring = datastring .. S("This block will make you bounce off with an elasticity of @1%.", bouncy).."\n" end + local slippery = data.def.groups.slippery + if slippery ~= nil and slippery ~= 0 then + datastring = datastring .. S("This block is slippery.") .. "\n" + end datastring = datastring .. factoid_custom("nodes", "movement", data) datastring = newline2(datastring) end @@ -841,15 +840,15 @@ doc.add_category("nodes", { local dropstring = "" local dropstring_base = "" if max == nil then - dropstring_base = S("This block will drop the following items when mined: %s.") + dropstring_base = N("This block will drop the following items when mined: @1.") elseif max == 1 then if #data.def.drop.items == 1 then - dropstring_base = S("This block will drop the following when mined: %s.") + dropstring_base = N("This block will drop the following when mined: @1.") else - dropstring_base = S("This block will randomly drop one of the following when mined: %s.") + dropstring_base = N("This block will randomly drop one of the following when mined: @1.") end else - dropstring_base = S("This block will randomly drop up to %d drops of the following possible drops when mined: %s.") + dropstring_base = N("This block will randomly drop up to @1 drops of the following possible drops when mined: @2.") end -- Save calculated probabilities into a table for later output local probtables = {} @@ -932,7 +931,7 @@ doc.add_category("nodes", { -- Final list seperator dropstring_this = dropstring_this .. S(" and ") end - local desc = S(itemtable.desc) + local desc = itemtable.desc local count = itemtable.count if count ~= 1 then desc = S("@1×@2", count, desc) @@ -963,9 +962,9 @@ doc.add_category("nodes", { pcount = pcount + 1 end if max ~= nil and max > 1 then - datastring = datastring .. string.format(dropstring_base, max, dropstring) + datastring = datastring .. S(dropstring_base, max, dropstring) else - datastring = datastring .. string.format(dropstring_base, dropstring) + datastring = datastring .. S(dropstring_base, dropstring) end datastring = newline(datastring) end @@ -1369,6 +1368,18 @@ minetest.register_on_craft(function(itemstack, player, old_craft_grid, craft_inv end end) +minetest.register_on_player_inventory_action(function(player, action, inventory, inventory_info) + if player == nil then return end + local playername = player:get_player_name() + local itemstack + if action == "take" or action == "put" then + itemstack = inventory_info.stack + end + if itemstack ~= nil and playername ~= nil and playername ~= "" and (not itemstack:is_empty()) then + reveal_item(playername, itemstack:get_name()) + end +end) + minetest.register_on_item_eat(function(hp_change, replace_with_item, itemstack, user, pointed_thing) if user == nil then return end local playername = user:get_player_name() @@ -1402,4 +1413,4 @@ minetest.register_globalstep(function(dtime) end end) -minetest.after(0, gather_descs) +minetest.register_on_mods_loaded(gather_descs) diff --git a/mods/HELP/doc/doc_items/locale/de.txt b/mods/HELP/doc/doc_items/locale/de.txt deleted file mode 100644 index 8bc67ad7..00000000 --- a/mods/HELP/doc/doc_items/locale/de.txt +++ /dev/null @@ -1,140 +0,0 @@ -\sUsing it as fuel turns it into: @1. = \sWird dieser Gegenstand als Brennstoff verwendet, verwandelt er sich zu: @1. -@1 seconds = @1 Sekunden -# Item count times item name -@1×@2 = @1×@2 -# Itemname (25%) -@1 (@2%) = @1 (@2%) -# Itemname (<0.5%) -@1 (<0.5%) = @1 (<0,5%) -# Itemname (ca. 25%) -@1 (ca. @2%) = @1 (ca. @2%) -# List separator (e.g. “one, two, three”) -,\s = ,\s -# Final list separator (e.g. “One, two and three”) -\sand\s = \sund\s -1 second = 1 Sekunde -A transparent block, basically empty space. It is usually left behind after digging something. = Ein transparenter Block, praktisch leerer Raum. Er wird üblicherweise hinterlassen, nachdem man etwas ausgegraben hat. -Air = Luft -Blocks = Blöcke -Building another block at this block will place it inside and replace it. = Wird ein anderer Block an diesem Block gebaut, wird dieser andere Block seine Stelle einnehmen. -Building this block is completely silent. = Das Bauen dieses Blocks ist völlig lautlos. -Collidable: @1 = Kollidiert: @1 -Description: @1 = Beschreibung: @1 -Falling blocks can go through this block; they destroy it when doing so. = Fallende Blöcke können diesen Block durchdringen; sie zerstören ihn dabei. -Full punch interval: @1 s = Schlagintervall: @1 s -Hand = Hand -Hold it in your hand, then leftclick to eat it. = Halten Sie es in Ihrer Hand, dann klicken Sie mit der linken Maustaste, um es zu essen. -Hold it in your hand, then leftclick to eat it. But why would you want to do this? = Halten Sie es in Ihrer Hand, dann klicken Sie mit der linken Maustaste, um es zu essen. Aber warum sollten Sie das tun wollen? -Item reference of all wieldable tools and weapons = Gegenstandsreferenz aller tragbaren Werkzeugen und Waffen -Item reference of blocks and other things which are capable of occupying space = Gegenstandsreferenz aller Blöcke und anderen Dingen, die Raum belegen -Item reference of items which are neither blocks, tools or weapons (esp. crafting items) = Gegenstandsreferenz aller Gegenstände, welche weder Blöcke, Werkzeuge oder Waffen sind (insb. Fertigungsgegenstände) -Liquids can flow into this block and destroy it. = Flüssigkeiten können in diesen Block hereinfließen und ihn zerstören. -Maximum stack size: @1 = Maximale Stapelgröße: @1 -Mining level: @1 = Grabestufe: @1 -Mining ratings: = Grabewertungen: -• @1, rating @2: @3 s - @4 s = • @1, Wertung @2: @3 s - @4 s -• @1, rating @2: @3 s = • @1, Wertung @2: @3 s -Mining times: = Grabezeiten: -Mining this block is completely silent. = Das Abbauen dieses Blocks ist völlig lautlos. -Miscellaneous items = Sonstige Gegenstände -No = Nein -Pointable: No = Zeigbar: Nein -Pointable: Only by special items = Zeigbar: Nur von besonderen Gegenständen -Pointable: Yes = Zeigbar: Ja -Punches with this block don't work as usual; melee combat and mining are either not possible or work differently. = Schläge mit diesem Block funktionieren nicht auf die übliche Weise; Nahkampf und Graben sind damit entweder nicht möglich oder funktionieren auf andere Weise. -Punches with this item don't work as usual; melee combat and mining are either not possible or work differently. = Schläge mit diesem Gegenstand funktionieren nicht auf die übliche Weise; Nahkampf und Graben sind damit entweder nicht möglich oder funktionieren auf andere Weise. -Punches with this tool don't work as usual; melee combat and mining are either not possible or work differently. = Schläge mit diesem Werkzeug funktionieren nicht auf die übliche Weise; Nahkampf und Graben sind damit entweder nicht möglich oder funktionieren auf andere Weise. -Range: @1 = Reichweite: @1 -# Range: () -Range: @1 (@2) = Reichweite: @1 (@2) -Range: 4 = Reichweite: 4 -# Rating used for digging times -Rating @1 = Wertung @1 -Rating @1-@2 = Wertung @1-@2 -The fall damage on this block is increased by @1%. = Der Fallschaden auf diesem Block ist um @1% erhöht. -The fall damage on this block is reduced by @1%. = Der Fallschaden auf diesem Block ist um @1% reduziert. -This block allows light to propagate with a small loss of brightness, and sunlight can even go through losslessly. = Dieser Block ist lichtdurchlässig mit einen geringfügigen Helligkeitsverlust; Sonnenlicht passiert jedoch ohne Verlust. -This block allows light to propagate with a small loss of brightness. = Dieser Block ist lichtdurchlässig mit einen geringfügigen Helligkeitsverlust. -This block allows sunlight to propagate without loss in brightness. = Dieser Block ist vollkommen durchlässig für Sonnenlicht. -This block belongs to the @1 group. = Dieser Block gehört zur Gruppe »@1«. -This block belongs to these groups: @1. = Dieser Block gehört zu den folgenden Gruppen: @1. -This block can be climbed. = Dieser Block kann beklettert werden. -This block can be destroyed by any mining tool immediately. = Dieser Block kann von einem beliebigen Grabewerkzeug sofort zerstört werden. -This block can be destroyed by any mining tool in half a second. = Dieser Block kann von einem beliebigen Grabewerkzeug in einer halben Sekunde zerstört werden. -This block can be mined by any mining tool immediately. = Dieser Block kann von einem beliebigen Grabewerkzeug sofort abgebaut werden. -This block can be mined by any mining tool in half a second. = Dieser Block kann von einem beliebigen Grabewerkzeug in einer halben Sekunde abgebaut werden. -This block can be mined by mining tools which match any of the following mining ratings and its toughness level. = Dieser Block kann von Grabewerkzeugen abgebaut werden, falls sie auf eine der folgenden Grabewertungen sowie seinem Härtegrad passen. -This block can not be destroyed by ordinary mining tools. = Dieser Block kann nicht von Grabewerkzeugen zerstört werden. -This block can not be mined by ordinary mining tools. = Dieser Block kann nicht von gewöhnlichen Grabewerkzeugen abgebaut werden. -This block can serve as a smelting fuel with a burning time of @1. = Dieser Block kann als Brennstoff mit einer Brenndauer von @1 dienen. -This block causes a damage of @1 hit point per second. = Dieser Block richtet einen Schaden von @1 Trefferpunkt pro Sekunde an. -This block causes a damage of @1 hit points per second. = Dieser Block richtet einen Schaden von @1 Trefferpunkten pro Sekunde an. -This block connects to blocks of the @1 group. = Dieser Block verbindet sich mit Blöcken der Gruppe »@1«. -This block connects to blocks of the following groups: @1. = Dieser Block verbindet sich mit Blöcken der folgenden Gruppen: @1. -This block connects to these blocks: @1. = Dieser Block verbindet sich mit den folgenden Blöcken: @1. -This block connects to this block: @1. = Dieser Block verbindet sich mit diesem Block: @1. -This block decreases your breath and causes a drowning damage of @1 hit point every 2 seconds. = Dieser Block reduziert Ihren Atem und verursacht beim Ertrinken einen Schaden von @1 Trefferpunkt alle 2 Sekunden. -This block decreases your breath and causes a drowning damage of @1 hit points every 2 seconds. = Dieser Block reduziert Ihren Atem und verursacht beim Ertrinken einen Schaden von @1 Trefferpunkten alle 2 Sekunden. -This block glows faintly. It is barely noticable. = Dieser Block leuchtet schwach. Es ist kaum merklich. -This block is a light source with a light level of @1. = Dieser Block ist eine Lichtquelle mit einer Helligkeitsstufe von @1. -This block glows faintly with a light level of @1. = Dieser Block leuchtet schwach mit einer Helligkeitsstufe von @1. -This block is a building block for creating various buildings. = Dieser Block ist für den Bau diverser Gebäude vorgesehen. -This block is a liquid with these properties: = Dieser Block ist eine Flüssigkeit mit folgenden Eigenschaften: -This block is affected by gravity and can fall. = Dieser Block wird von der Schwerkraft beeinflusst und kann fallen. -This block is completely silent when mined or built. = Dieser Block kann vollkommen lautlos gebaut oder abgebaut werden. -This block is completely silent when walked on, mined or built. = Es ist vollkommen lautlos, wenn man auf diesen Block geht, ihn baut oder abbaut. -This block is destroyed when a falling block ends up inside it. = Dieser Block wird zerstört, wenn ein fallender Block in ihm landet. -This block negates all fall damage. = Auf diesem Block gibt es keinen Fallschaden. -This block points to liquids. = Mit diesem Block zeigt man auf Flüssigkeiten. -This block will drop as an item when a falling block ends up inside it. = Dieser Block wird sich als Gegenstand abwerfen, wenn ein fallender Block in ihn landet. -This block will drop as an item when it is not attached to a surrounding block. = Dieser Block wird sich als Gegenstand abwerfen, wenn er nicht an einen benachbarten Block befestigt ist. -This block will drop as an item when no collidable block is below it. = Dieser Block wird sich als Gegenstand abwerfen, wenn kein kollidierender Block unter ihn liegt. -This block will drop the following items when mined: %s. = Dieser Block wird nach dem Abbauen die folgenden Gegenstände abwerfen: %s. -This block will drop the following when mined: @1×@2. = Dieser Block wird nach dem Abbauen folgendes abwerfen: @1×@2. -This block will drop the following when mined: @1. = Dieser Block wird nach dem Abbauen folgendes abwerfen: @1. -This block will drop the following when mined: %s. = Dieser Block wird nach dem Abbauen folgendes abwerfen: %s. -This block will make you bounce off with an elasticity of @1%. = Dieser Block wird Sie mit einer Elastizität von @1% abprallen lassen. -This block will randomly drop one of the following when mined: %s. = Dieser Block wird nach dem Abbauen zufällig eines von den folgenden Dingen abwerfen: %s. -This block will randomly drop up to %d drops of the following possible drops when mined: %s. = Dieser Block nach dem Abbauen wird zufällig bis zu %d Abwürfe von den folgenden möglichen Abwürfen abwerfen: %s. -This block won't drop anything when mined. = Dieser Block wird nach dem Abbauen nichts abwerfen. -This is a decorational block. = Dieser Block dient zur Dekoration. -This is a melee weapon which deals damage by punching. = Dies ist eine Nahkampfwaffe, welche Schaden durch Schläge verursacht. -Maximum damage per hit: = Maximaler Schaden pro Treffer: -This item belongs to the @1 group. = Dieser Gegenstand gehört zur Gruppe »@1«. -This item belongs to these groups: @1. = Dieser Gegenstand gehört zu den folgenden Gruppen: @1. -This item can serve as a smelting fuel with a burning time of @1. = Dieser Gegenstand kann als Brennstoff mit einer Brenndauer von @1 dienen. -This item is primarily used for crafting other items. = Dieser Gegenstand wird primär für die Fertigung von anderen Gegenständen benutzt. -This item points to liquids. = Mit diesem Gegenstand zeigt man auf Flüssigkeiten. -This tool belongs to the @1 group. = Dieses Werkzeug gehört zur Gruppe »@1«. -This tool belongs to these groups: @1. = Dieses Werkzeug gehört zu den folgenden Gruppen: @1. -This tool can serve as a smelting fuel with a burning time of @1. = Dieses Werkzeug kann als Brennstoff mit einer Brenndauer von @1 dienen. -This tool is capable of mining. = Dies ist ein Grabewerkzeug. -Maximum toughness levels: = Maximale Härtegrade: -This tool points to liquids. = Mit diesem Werkzeug zeigt man auf Flüssigkeiten. -Tools and weapons = Werkzeuge und Waffen -Unknown Node = Unbekannter Node -Usage help: @1 = Benutzung: @1 -Walking on this block is completely silent. = Auf diesem Block sind Schritte lautlos. -Whenever you are not wielding any item, you use the hand which acts as a tool with its own capabilities. When you are wielding an item which is not a mining tool or a weapon it will behave as if it would be the hand. = Wenn Sie keinen Gegenstand halten, benutzen Sie die Hand, welches als ein Werkzeug mit seinen eigenen Fägihkeiten dient. Wenn Sie einen Gegenstand halten, der kein Grabewerkzeug oder eine Waffe ist, wird er sich verhalten als wäre er die Hand. -Yes = Ja -You can not jump while standing on this block. = Man kann von diesem Block nicht abspringen. -any level = beliebige Stufe -level 0 = Stufe 0 -level 0-@1 = Stufen 0-@1 -unknown = unbekannt -Unknown item (@1) = Unbekannter Gegenstand (@1) -• @1: @2 = • @1: @2 -• @1: @2 HP = • @1: @2 TP -• @1: @2, @3 = • @1: @2, @3 -• Flowing range: @1 = • Fließweite: @1 -• No flowing = • Kein Fließen -• Not renewable = • Nicht erneuerbar -• Renewable = • Erneuerbar -• Viscosity: @1 = • Zähflüssigkeit: @1 -Itemstring: "@1" = Itemstring: »@1« -Durability: @1 uses = Haltbarkeit: @1 Benutzungen -Durability: @1 = Haltbarkeit: @1 -Mining durability: = Grabehaltbarkeit: -• @1, level @2: @3 uses = • @1, Stufe @2: @3 Benutzungen -• @1, level @2: Unlimited = • @1, Stufe @2: Unbegrenzt -This block's rotation is affected by the way you place it: Place it on the floor or ceiling for a vertical orientation; place it at the side for a horizontal orientation. Sneaking while placing it leads to a perpendicular orientation instead. = Die Rotation dieses Blocks hängt davon ab, wie sie ihn platzieren: Platzieren Sie ihn auf den Boden oder an die Decke, um ihn vertikal aufzustellen; platzieren Sie in an der Seite für eine horizontale Ausrichtung. Wenn Sie während des Bauens schleichen, wird der Block stattdessen senkrecht zur üblichen Ausrichtung rotiert. diff --git a/mods/HELP/doc/doc_items/locale/doc_items.de.tr b/mods/HELP/doc/doc_items/locale/doc_items.de.tr new file mode 100644 index 00000000..b4a53a8a --- /dev/null +++ b/mods/HELP/doc/doc_items/locale/doc_items.de.tr @@ -0,0 +1,142 @@ +# textdomain:doc_items + Using it as fuel turns it into: @1.= Wird dieser Gegenstand als Brennstoff verwendet, verwandelt er sich zu: @1. +@1 seconds=@1 Sekunden +# Item count times item name +@1×@2=@1×@2 +# Itemname (25%) +@1 (@2%)=@1 (@2%) +# Itemname (<0.5%) +@1 (<0.5%)=@1 (<0,5%) +# Itemname (ca. 25%) +@1 (ca. @2%)=@1 (ca. @2%) +# List separator (e.g. “one, two, three”) +, =, +# Final list separator (e.g. “One, two and three”) + and = und +1 second=1 Sekunde +A transparent block, basically empty space. It is usually left behind after digging something.=Ein transparenter Block, praktisch leerer Raum. Er wird üblicherweise hinterlassen, nachdem man etwas ausgegraben hat. +Air=Luft +Blocks=Blöcke +Building another block at this block will place it inside and replace it.=Wird ein anderer Block an diesem Block gebaut, wird dieser andere Block seine Stelle einnehmen. +Building this block is completely silent.=Das Bauen dieses Blocks ist völlig lautlos. +Collidable: @1=Kollidiert: @1 +Description: @1=Beschreibung: @1 +Falling blocks can go through this block; they destroy it when doing so.=Fallende Blöcke können diesen Block durchdringen; sie zerstören ihn dabei. +Full punch interval: @1 s=Schlagintervall: @1 s +Hand=Hand +Hold it in your hand, then leftclick to eat it.=Halten Sie es in Ihrer Hand, dann klicken Sie mit der linken Maustaste, um es zu essen. +Hold it in your hand, then leftclick to eat it. But why would you want to do this?=Halten Sie es in Ihrer Hand, dann klicken Sie mit der linken Maustaste, um es zu essen. Aber warum sollten Sie das tun wollen? +Item reference of all wieldable tools and weapons=Gegenstandsreferenz aller tragbaren Werkzeugen und Waffen +Item reference of blocks and other things which are capable of occupying space=Gegenstandsreferenz aller Blöcke und anderen Dingen, die Raum belegen +Item reference of items which are neither blocks, tools or weapons (esp. crafting items)=Gegenstandsreferenz aller Gegenstände, welche weder Blöcke, Werkzeuge oder Waffen sind (insb. Fertigungsgegenstände) +Liquids can flow into this block and destroy it.=Flüssigkeiten können in diesen Block hereinfließen und ihn zerstören. +Maximum stack size: @1=Maximale Stapelgröße: @1 +Mining level: @1=Grabestufe: @1 +Mining ratings:=Grabewertungen: +• @1, rating @2: @3 s - @4 s=• @1, Wertung @2: @3 s - @4 s +• @1, rating @2: @3 s=• @1, Wertung @2: @3 s +Mining times:=Grabezeiten: +Mining this block is completely silent.=Das Abbauen dieses Blocks ist völlig lautlos. +Miscellaneous items=Sonstige Gegenstände +No=Nein +Pointable: No=Zeigbar: Nein +Pointable: Only by special items=Zeigbar: Nur von besonderen Gegenständen +Pointable: Yes=Zeigbar: Ja +Punches with this block don't work as usual; melee combat and mining are either not possible or work differently.=Schläge mit diesem Block funktionieren nicht auf die übliche Weise; Nahkampf und Graben sind damit entweder nicht möglich oder funktionieren auf andere Weise. +Punches with this item don't work as usual; melee combat and mining are either not possible or work differently.=Schläge mit diesem Gegenstand funktionieren nicht auf die übliche Weise; Nahkampf und Graben sind damit entweder nicht möglich oder funktionieren auf andere Weise. +Punches with this tool don't work as usual; melee combat and mining are either not possible or work differently.=Schläge mit diesem Werkzeug funktionieren nicht auf die übliche Weise; Nahkampf und Graben sind damit entweder nicht möglich oder funktionieren auf andere Weise. +Range: @1=Reichweite: @1 +# Range: () +Range: @1 (@2)=Reichweite: @1 (@2) +Range: 4=Reichweite: 4 +# Rating used for digging times +Rating @1=Wertung @1 +Rating @1-@2=Wertung @1-@2 +The fall damage on this block is increased by @1%.=Der Fallschaden auf diesem Block ist um @1% erhöht. +The fall damage on this block is reduced by @1%.=Der Fallschaden auf diesem Block ist um @1% reduziert. +This block allows light to propagate with a small loss of brightness, and sunlight can even go through losslessly.=Dieser Block ist lichtdurchlässig mit einen geringfügigen Helligkeitsverlust; Sonnenlicht passiert jedoch ohne Verlust. +This block allows light to propagate with a small loss of brightness.=Dieser Block ist lichtdurchlässig mit einen geringfügigen Helligkeitsverlust. +This block allows sunlight to propagate without loss in brightness.=Dieser Block ist vollkommen durchlässig für Sonnenlicht. +This block belongs to the @1 group.=Dieser Block gehört zur Gruppe „@1“. +This block belongs to these groups: @1.=Dieser Block gehört zu den folgenden Gruppen: @1. +This block can be climbed.=Dieser Block kann beklettert werden. +This block can be destroyed by any mining tool immediately.=Dieser Block kann von einem beliebigen Grabewerkzeug sofort zerstört werden. +This block can be destroyed by any mining tool in half a second.=Dieser Block kann von einem beliebigen Grabewerkzeug in einer halben Sekunde zerstört werden. +This block can be mined by any mining tool immediately.=Dieser Block kann von einem beliebigen Grabewerkzeug sofort abgebaut werden. +This block can be mined by any mining tool in half a second.=Dieser Block kann von einem beliebigen Grabewerkzeug in einer halben Sekunde abgebaut werden. +This block can be mined by mining tools which match any of the following mining ratings and its toughness level.=Dieser Block kann von Grabewerkzeugen abgebaut werden, falls sie auf eine der folgenden Grabewertungen sowie seinem Härtegrad passen. +This block can not be destroyed by ordinary mining tools.=Dieser Block kann nicht von Grabewerkzeugen zerstört werden. +This block can not be mined by ordinary mining tools.=Dieser Block kann nicht von gewöhnlichen Grabewerkzeugen abgebaut werden. +This block can serve as a smelting fuel with a burning time of @1.=Dieser Block kann als Brennstoff mit einer Brenndauer von @1 dienen. +This block causes a damage of @1 hit point per second.=Dieser Block richtet einen Schaden von @1 Trefferpunkt pro Sekunde an. +This block causes a damage of @1 hit points per second.=Dieser Block richtet einen Schaden von @1 Trefferpunkten pro Sekunde an. +This block connects to blocks of the @1 group.=Dieser Block verbindet sich mit Blöcken der Gruppe „@1“. +This block connects to blocks of the following groups: @1.=Dieser Block verbindet sich mit Blöcken der folgenden Gruppen: @1. +This block connects to these blocks: @1.=Dieser Block verbindet sich mit den folgenden Blöcken: @1. +This block connects to this block: @1.=Dieser Block verbindet sich mit diesem Block: @1. +This block decreases your breath and causes a drowning damage of @1 hit point every 2 seconds.=Dieser Block reduziert Ihren Atem und verursacht beim Ertrinken einen Schaden von @1 Trefferpunkt alle 2 Sekunden. +This block decreases your breath and causes a drowning damage of @1 hit points every 2 seconds.=Dieser Block reduziert Ihren Atem und verursacht beim Ertrinken einen Schaden von @1 Trefferpunkten alle 2 Sekunden. +This block glows faintly. It is barely noticable.=Dieser Block leuchtet schwach. Es ist kaum merklich. +This block is a light source with a light level of @1.=Dieser Block ist eine Lichtquelle mit einer Helligkeitsstufe von @1. +This block glows faintly with a light level of @1.=Dieser Block leuchtet schwach mit einer Helligkeitsstufe von @1. +This block is a building block for creating various buildings.=Dieser Block ist für den Bau diverser Gebäude vorgesehen. +This block is a liquid with these properties:=Dieser Block ist eine Flüssigkeit mit folgenden Eigenschaften: +This block is affected by gravity and can fall.=Dieser Block wird von der Schwerkraft beeinflusst und kann fallen. +This block is completely silent when mined or built.=Dieser Block kann vollkommen lautlos gebaut oder abgebaut werden. +This block is completely silent when walked on, mined or built.=Es ist vollkommen lautlos, wenn man auf diesen Block geht, ihn baut oder abbaut. +This block is destroyed when a falling block ends up inside it.=Dieser Block wird zerstört, wenn ein fallender Block in ihm landet. +This block negates all fall damage.=Auf diesem Block gibt es keinen Fallschaden. +This block points to liquids.=Mit diesem Block zeigt man auf Flüssigkeiten. +This block will drop as an item when a falling block ends up inside it.=Dieser Block wird sich als Gegenstand abwerfen, wenn ein fallender Block in ihn landet. +This block will drop as an item when it is not attached to a surrounding block.=Dieser Block wird sich als Gegenstand abwerfen, wenn er nicht an einen benachbarten Block befestigt ist. +This block will drop as an item when no collidable block is below it.=Dieser Block wird sich als Gegenstand abwerfen, wenn kein kollidierender Block unter ihn liegt. +This block will drop the following items when mined: @1.=Dieser Block wird nach dem Abbauen die folgenden Gegenstände abwerfen: @1. +This block will drop the following when mined: @1×@2.=Dieser Block wird nach dem Abbauen folgendes abwerfen: @1×@2. +This block will drop the following when mined: @1.=Dieser Block wird nach dem Abbauen folgendes abwerfen: @1. +This block will drop the following when mined: @1.=Dieser Block wird nach dem Abbauen folgendes abwerfen: @1. +This block will make you bounce off with an elasticity of @1%.=Dieser Block wird Sie mit einer Elastizität von @1% abprallen lassen. +This block will randomly drop one of the following when mined: @1.=Dieser Block wird nach dem Abbauen zufällig eines von den folgenden Dingen abwerfen: @1. +This block will randomly drop up to @1 drops of the following possible drops when mined: @2.=Dieser Block nach dem Abbauen wird zufällig bis zu @1 Abwürfe von den folgenden möglichen Abwürfen abwerfen: @2. +This block won't drop anything when mined.=Dieser Block wird nach dem Abbauen nichts abwerfen. +This is a decorational block.=Dieser Block dient zur Dekoration. +This is a melee weapon which deals damage by punching.=Dies ist eine Nahkampfwaffe, welche Schaden durch Schläge verursacht. +Maximum damage per hit:=Maximaler Schaden pro Treffer: +This item belongs to the @1 group.=Dieser Gegenstand gehört zur Gruppe „@1“. +This item belongs to these groups: @1.=Dieser Gegenstand gehört zu den folgenden Gruppen: @1. +This item can serve as a smelting fuel with a burning time of @1.=Dieser Gegenstand kann als Brennstoff mit einer Brenndauer von @1 dienen. +This item is primarily used for crafting other items.=Dieser Gegenstand wird primär für die Fertigung von anderen Gegenständen benutzt. +This item points to liquids.=Mit diesem Gegenstand zeigt man auf Flüssigkeiten. +This tool belongs to the @1 group.=Dieses Werkzeug gehört zur Gruppe „@1“. +This tool belongs to these groups: @1.=Dieses Werkzeug gehört zu den folgenden Gruppen: @1. +This tool can serve as a smelting fuel with a burning time of @1.=Dieses Werkzeug kann als Brennstoff mit einer Brenndauer von @1 dienen. +This tool is capable of mining.=Dies ist ein Grabewerkzeug. +Maximum toughness levels:=Maximale Härtegrade: +This tool points to liquids.=Mit diesem Werkzeug zeigt man auf Flüssigkeiten. +Tools and weapons=Werkzeuge und Waffen +Unknown Node=Unbekannter Node +Usage help: @1=Benutzung: @1 +Walking on this block is completely silent.=Auf diesem Block sind Schritte lautlos. +Whenever you are not wielding any item, you use the hand which acts as a tool with its own capabilities. When you are wielding an item which is not a mining tool or a weapon it will behave as if it would be the hand.=Wenn Sie keinen Gegenstand halten, benutzen Sie die Hand, welches als ein Werkzeug mit seinen eigenen Fägihkeiten dient. Wenn Sie einen Gegenstand halten, der kein Grabewerkzeug oder eine Waffe ist, wird er sich verhalten als wäre er die Hand. +Yes=Ja +You can not jump while standing on this block.=Man kann von diesem Block nicht abspringen. +any level=beliebige Stufe +level 0=Stufe 0 +level 0-@1=Stufen 0-@1 +unknown=unbekannt +Unknown item (@1)=Unbekannter Gegenstand (@1) +• @1: @2=• @1: @2 +• @1: @2 HP=• @1: @2 TP +• @1: @2, @3=• @1: @2, @3 +• Flowing range: @1=• Fließweite: @1 +• No flowing=• Kein Fließen +• Not renewable=• Nicht erneuerbar +• Renewable=• Erneuerbar +• Viscosity: @1=• Zähflüssigkeit: @1 +Itemstring: "@1"=Itemstring: „@1“ +Durability: @1 uses=Haltbarkeit: @1 Benutzungen +Durability: @1=Haltbarkeit: @1 +Mining durability:=Grabehaltbarkeit: +• @1, level @2: @3 uses=• @1, Stufe @2: @3 Benutzungen +• @1, level @2: Unlimited=• @1, Stufe @2: Unbegrenzt +This block's rotation is affected by the way you place it: Place it on the floor or ceiling for a vertical orientation; place it at the side for a horizontal orientation. Sneaking while placing it leads to a perpendicular orientation instead.=Die Rotation dieses Blocks hängt davon ab, wie sie ihn platzieren: Platzieren Sie ihn auf den Boden oder an die Decke, um ihn vertikal aufzustellen; platzieren Sie in an der Seite für eine horizontale Ausrichtung. Wenn Sie während des Bauens schleichen, wird der Block stattdessen senkrecht zur üblichen Ausrichtung rotiert. +Toughness level: @1=Härtegrad: @1 diff --git a/mods/HELP/doc/doc_items/locale/doc_items.pt.tr b/mods/HELP/doc/doc_items/locale/doc_items.pt.tr new file mode 100644 index 00000000..648e1456 --- /dev/null +++ b/mods/HELP/doc/doc_items/locale/doc_items.pt.tr @@ -0,0 +1,141 @@ +# textdomain:doc_items + Using it as fuel turns it into: @1.= Usar isso como combustivel o transforma em: @1. +@1 seconds=@1 segundos +# Item count times item name +%@1×@2=%@1×@2 +# Itemname (25%) +@1 (@2%)=@1 (@2%) +# Itemname (<0.5%) +@1 (<0.5%)=@1 (<0.5%) +# Itemname (ca. 25%) +@1 (ca. @2%)= +# List separator (e.g. “one, two, three”) +, =, +# Final list separator (e.g. “One, two and three”) + and = e +1 second=1 segundo +A transparent block, basically empty space. It is usually left behind after digging something.=Um bloco transparente, basicamente um vazio. Isso geralmente fica no lugar de um bloco removido. +Air=Ár +Blocks=Blocos +Building another block at this block will place it inside and replace it.=Construir outro bloco nesse bloco vai subistitui-lo. +Building this block is completely silent.=Construir esse bloco é completamente silencioso. +Collidable: @1=Coledível: @1 +Description: @1=Descrição: @1 +Falling blocks can go through this block; they destroy it when doing so.=Blocos caindo podem atravessar esse bloco destruindo-o. +Full punch interval: @1 s=Intervalo completo de golpe: @1 s +Hand=Mão +Hold it in your hand, then leftclick to eat it.=Segure-o na sua mão, depois clique com o botão esquerdo para comer. +Hold it in your hand, then leftclick to eat it. But why would you want to do this?=Segure-o na sua mão, depois clique com o botão esquerdo para comer. Mas por que você quer fazer isso? +Item reference of all wieldable tools and weapons=Referência de item de todas as ferramentas e armas que podem ser usadas +Item reference of blocks and other things which are capable of occupying space=Referência de item de blocos e outras coisas que são capazes de ocupar espaço +Item reference of items which are neither blocks, tools or weapons (esp. crafting items)=Referência de itens que não são blocos, ferramentas ou armas (especialmente itens de criação) +Liquids can flow into this block and destroy it.=Líquidos podem fluir por esse bloco destruindo-o. +Maximum stack size: @1=Tamanho máximo de empilhamento: @1 +Mining level: @1=Nível de mineração: @1 +Mining ratings:=Classificações de mineração: +• @1, rating @2: @3 s - @4 s= +• @1, rating @2: @3 s= +Mining times:=Tempos de mineração: +Mining this block is completely silent.=Minerar esse bloco é completamente silencioso. +Miscellaneous items=Itens variados +No=Não +Pointable: No=Apontável: Não +Pointable: Only by special items=Apontável: Apenas por itens especiais +Pointable: Yes=Apontável: Sim +Punches with this block don't work as usual; melee combat and mining are either not possible or work differently.=Socos com esse bloco não funcionam de forma comum; Combate corpo a corpo e mineração não são possíveis ou funcionam de forma diferente. +Punches with this item don't work as usual; melee combat and mining are either not possible or work differently.=Socos com esse item não funcionam de forma comum; Combate corpo a corpo e mineração não são possíveis ou funcionam de forma diferente. +Punches with this tool don't work as usual; melee combat and mining are either not possible or work differently.=Socos com essa ferramenta não funcionam de forma comum; Combate corpo a corpo e mineração não são possíveis ou funcionam de forma diferente. +Range: @1=Alcance: @1 +# Range: () +Range: @1 (@2)=Alcance: @1 (@2) +Range: 4=Range: 4 +# Rating used for digging times +Rating @1=Classificação @1 +# @1 is minimal rating, @2 is maximum rating +Rating @1-@2=Classificação @1-@2 +The fall damage on this block is increased by @1%.=O dano por queda nesse bloco é aumentado em @ 1%. +The fall damage on this block is reduced by @1%.=O dano por queda nesse bloco é reduzido em @ 1%. +This block allows light to propagate with a small loss of brightness, and sunlight can even go through losslessly.=Esse bloco permite que a luz se propague com uma pequena perda de brilho, e a luz solar pode até passar sem perdas. +This block allows light to propagate with a small loss of brightness.=Esse bloco permite que a luz se propague com uma pequena perda de brilho. +This block allows sunlight to propagate without loss in brightness.=Esse bloco permite que a luz solar se propague sem perda de brilho. +This block belongs to the @1 group.=Esse bloco pertence ao grupo @1. +This block belongs to these groups: @1.=Esse bloco pertence a estes grupos: @1. +This block can be climbed.=Esse bloco pode ser escalado. +This block can be destroyed by any mining tool immediately.=Esse bloco pode ser destruído de forma imediata por qualquer ferramenta de mineração. +This block can be destroyed by any mining tool in half a second.=Esse bloco pode ser destruído em meio segundo por qualquer ferramenta de mineração. +This block can be mined by any mining tool immediately.=Esse bloco pode ser extraído de forma imediata por qualquer ferramenta de mineração. +This block can be mined by any mining tool in half a second.=Esse bloco pode ser extraído em meio segundo por qualquer ferramenta de mineração. +This block can be mined by mining tools which match any of the following mining ratings and its toughness level.=Esse bloco pode ser extraído por ferramentas de mineração que correspondem a qualquer uma das seguintes classificações de mineração e seu nível de resistência. +This block can not be destroyed by ordinary mining tools.=Esse bloco não pode ser destruído por ferramentas de mineração comuns. +This block can not be mined by ordinary mining tools.=Esse bloco não pode ser extraído por ferramentas de mineração comuns. +This block can serve as a smelting fuel with a burning time of @1.=Esse bloco pode servir como combustível de fundição com um tempo de queima de @1. +This block causes a damage of @1 hit point per second.=Esse bloco causa um dano de @1 ponto de impacto por segundo. +This block causes a damage of @1 hit points per second.=Esse bloco causa um dano de @1 pontos de impacto por segundo. +This block connects to blocks of the @1 group.=Esse bloco se conecta a blocos do grupo @1. +This block connects to blocks of the following groups: @1.=Esse bloco se conecta a dos seguintes grupos: @1. +This block connects to these blocks: @1.=Esse bloco se conecta aos seguintes blocos: @1. +This block connects to this block: @1.=Esse bloco se conecta a esse bloco: @1. +This block decreases your breath and causes a drowning damage of @1 hit point every 2 seconds.=Esse bloco diminui a sua respiração e causa um dano por afogamento de @1 ponto de vida a cada 2 segundos. +This block decreases your breath and causes a drowning damage of @1 hit points every 2 seconds.=Esse bloco diminui a sua respiração e causa um dano por afogamento de @1 pontos de vida a cada 2 segundos. +This block is a light source with a light level of @1.=Esse bloco é uma fonte de luz com um nível de luz de @1. +This block glows faintly with a light level of @1.=Esse bloco tem um brilho fraco com um nível de luz de @ 1. +This block is a building block for creating various buildings.=Esse bloco é um bloco de construção para criar vários edifícios. +This block is a liquid with these properties:=Esse bloco é um líquido com as seguintes propriedades: +This block is affected by gravity and can fall.=Esse bloco é afetado pela gravidade e pode cair. +This block is completely silent when mined or built.=Esse bloco é completamente silencioso quando extraído ou construído. +This block is completely silent when walked on, mined or built.=Esse bloco é completamente silencioso quando pisado, extraído ou construído. +This block is destroyed when a falling block ends up inside it.=Esse bloco é destruído quando um bloco em queda acaba dentro dele. +This block negates all fall damage.=Esse bloco nega todos os danos por queda. +This block points to liquids.=Esse bloco pode ser apontado para líquidos. +This block will drop as an item when a falling block ends up inside it.=Esse bloco vai cair como um item quando um bloco caindo acaba dentro dele. +This block will drop as an item when it is not attached to a surrounding block.=Esse bloco irá cair como um item quando não estiver anexado a um bloco adjacente. +This block will drop as an item when no collidable block is below it.=Esse bloco irá cair como um item quando nenhum bloco colidível estiver abaixo dele. +This block will drop the following items when mined: %s.=Esse bloco soltará os seguintes itens quando minerados: %s. +This block will drop the following when mined: @1×@2.=Esse bloco irá deixar cair o seguinte quando extraído: @1×@2. +This block will drop the following when mined: @1.=Esse bloco irá deixar cair o seguinte quando extraído: @1. +This block will drop the following when mined: %s.=Esse bloco irá deixar cair o seguinte quando extraído: %s. +This block will make you bounce off with an elasticity of @1%.=Esse bloco fará você saltar com uma elasticidade de @1%. +This block will randomly drop one of the following when mined: %s.=Esse bloco irá deixar cair aleatoriamente um dos seguintes quando extraído: %s. +This block will randomly drop up to %d drops of the following possible drops when mined: %s.=Esse bloco irá cair aleatoriamente %d vezes das seguintes possíveis formas quando extraído: %s. +This block won't drop anything when mined.=Esse bloco não vai deixar cair nada quando extraído. +This is a decorational block.=Esse é um bloco decorativo. +This is a melee weapon which deals damage by punching.=Essa é uma arma corpo-a-corpo que causa dano ao socar. +Maximum damage per hit:=Dano máximo por acerto: +This item belongs to the @1 group.=Esse item pertence ao grupo @1. +This item belongs to these groups: @1.=Esse item pertence aos seguintes grupos: @1. +This item can serve as a smelting fuel with a burning time of @1.=Esse item pode servir como combustível de fundição com um tempo de queima de @1. +This item is primarily used for crafting other items.=Esse item é usado principalmente para criar outros itens. +This item points to liquids.=Esse item pode ser apontado para líquidos. +This tool belongs to the @1 group.=Essa ferramenta pertence ao grupo @1. +This tool belongs to these groups: @1.=Essa ferramenta pertence aos seguintes grupos: @1. +This tool can serve as a smelting fuel with a burning time of @1.=Essa ferramenta pode servir como combustível de fundição com um tempo de queima de @1. +This tool is capable of mining.=Essa ferramenta é capaz de minerar. +Maximum toughness levels:=Níveis máximos de dureza: +This tool points to liquids.=Essa ferramenta pode ser apontada para líquidos. +Tools and weapons=Ferramentas e armas +Unknown Node=Bloco Desconhecido +Usage help: @1=Como usar: @1 +Walking on this block is completely silent.= +Whenever you are not wielding any item, you use the hand which acts as a tool with its own capabilities. When you are wielding an item which is not a mining tool or a weapon it will behave as if it would be the hand.=Sempre que você não estiver empunhando nenhum item, você usa a mão que atua como uma ferramentacom caracteristicas próprias. Quando você está empunhando um item que não é uma ferramenta de mineração ou uma arma, ele se comportará como se fosse a mão. +Yes=Sim +You can not jump while standing on this block.= Você não pode pular enquanto estiver neste bloco. +any level=qualquer nível +level 0=nível 0 +level 0-@1=nivel 0-@1 +unknown=desconhecido +Unknown item (@1)=Item desconhecido +• @1: @2= +• @1: @2 HP= +• @1: @2, @3= +• Flowing range: @1= +• No flowing= +• Not renewable= +• Renewable= +• Viscosity: @1= +Itemstring: "@1"= +Durability: @1 uses= +Durability: @1= +Mining durability:= +• @1, level @2: @3 uses= +• @1, level @2: Unlimited= +This block's rotation is affected by the way you place it: Place it on the floor or ceiling for a vertical orientation; place it at the side for a horizontal orientation. Sneaking while placing it leads to a perpendicular orientation instead.= diff --git a/mods/HELP/doc/doc_items/locale/doc_items.pt_BR.tr b/mods/HELP/doc/doc_items/locale/doc_items.pt_BR.tr new file mode 100644 index 00000000..648e1456 --- /dev/null +++ b/mods/HELP/doc/doc_items/locale/doc_items.pt_BR.tr @@ -0,0 +1,141 @@ +# textdomain:doc_items + Using it as fuel turns it into: @1.= Usar isso como combustivel o transforma em: @1. +@1 seconds=@1 segundos +# Item count times item name +%@1×@2=%@1×@2 +# Itemname (25%) +@1 (@2%)=@1 (@2%) +# Itemname (<0.5%) +@1 (<0.5%)=@1 (<0.5%) +# Itemname (ca. 25%) +@1 (ca. @2%)= +# List separator (e.g. “one, two, three”) +, =, +# Final list separator (e.g. “One, two and three”) + and = e +1 second=1 segundo +A transparent block, basically empty space. It is usually left behind after digging something.=Um bloco transparente, basicamente um vazio. Isso geralmente fica no lugar de um bloco removido. +Air=Ár +Blocks=Blocos +Building another block at this block will place it inside and replace it.=Construir outro bloco nesse bloco vai subistitui-lo. +Building this block is completely silent.=Construir esse bloco é completamente silencioso. +Collidable: @1=Coledível: @1 +Description: @1=Descrição: @1 +Falling blocks can go through this block; they destroy it when doing so.=Blocos caindo podem atravessar esse bloco destruindo-o. +Full punch interval: @1 s=Intervalo completo de golpe: @1 s +Hand=Mão +Hold it in your hand, then leftclick to eat it.=Segure-o na sua mão, depois clique com o botão esquerdo para comer. +Hold it in your hand, then leftclick to eat it. But why would you want to do this?=Segure-o na sua mão, depois clique com o botão esquerdo para comer. Mas por que você quer fazer isso? +Item reference of all wieldable tools and weapons=Referência de item de todas as ferramentas e armas que podem ser usadas +Item reference of blocks and other things which are capable of occupying space=Referência de item de blocos e outras coisas que são capazes de ocupar espaço +Item reference of items which are neither blocks, tools or weapons (esp. crafting items)=Referência de itens que não são blocos, ferramentas ou armas (especialmente itens de criação) +Liquids can flow into this block and destroy it.=Líquidos podem fluir por esse bloco destruindo-o. +Maximum stack size: @1=Tamanho máximo de empilhamento: @1 +Mining level: @1=Nível de mineração: @1 +Mining ratings:=Classificações de mineração: +• @1, rating @2: @3 s - @4 s= +• @1, rating @2: @3 s= +Mining times:=Tempos de mineração: +Mining this block is completely silent.=Minerar esse bloco é completamente silencioso. +Miscellaneous items=Itens variados +No=Não +Pointable: No=Apontável: Não +Pointable: Only by special items=Apontável: Apenas por itens especiais +Pointable: Yes=Apontável: Sim +Punches with this block don't work as usual; melee combat and mining are either not possible or work differently.=Socos com esse bloco não funcionam de forma comum; Combate corpo a corpo e mineração não são possíveis ou funcionam de forma diferente. +Punches with this item don't work as usual; melee combat and mining are either not possible or work differently.=Socos com esse item não funcionam de forma comum; Combate corpo a corpo e mineração não são possíveis ou funcionam de forma diferente. +Punches with this tool don't work as usual; melee combat and mining are either not possible or work differently.=Socos com essa ferramenta não funcionam de forma comum; Combate corpo a corpo e mineração não são possíveis ou funcionam de forma diferente. +Range: @1=Alcance: @1 +# Range: () +Range: @1 (@2)=Alcance: @1 (@2) +Range: 4=Range: 4 +# Rating used for digging times +Rating @1=Classificação @1 +# @1 is minimal rating, @2 is maximum rating +Rating @1-@2=Classificação @1-@2 +The fall damage on this block is increased by @1%.=O dano por queda nesse bloco é aumentado em @ 1%. +The fall damage on this block is reduced by @1%.=O dano por queda nesse bloco é reduzido em @ 1%. +This block allows light to propagate with a small loss of brightness, and sunlight can even go through losslessly.=Esse bloco permite que a luz se propague com uma pequena perda de brilho, e a luz solar pode até passar sem perdas. +This block allows light to propagate with a small loss of brightness.=Esse bloco permite que a luz se propague com uma pequena perda de brilho. +This block allows sunlight to propagate without loss in brightness.=Esse bloco permite que a luz solar se propague sem perda de brilho. +This block belongs to the @1 group.=Esse bloco pertence ao grupo @1. +This block belongs to these groups: @1.=Esse bloco pertence a estes grupos: @1. +This block can be climbed.=Esse bloco pode ser escalado. +This block can be destroyed by any mining tool immediately.=Esse bloco pode ser destruído de forma imediata por qualquer ferramenta de mineração. +This block can be destroyed by any mining tool in half a second.=Esse bloco pode ser destruído em meio segundo por qualquer ferramenta de mineração. +This block can be mined by any mining tool immediately.=Esse bloco pode ser extraído de forma imediata por qualquer ferramenta de mineração. +This block can be mined by any mining tool in half a second.=Esse bloco pode ser extraído em meio segundo por qualquer ferramenta de mineração. +This block can be mined by mining tools which match any of the following mining ratings and its toughness level.=Esse bloco pode ser extraído por ferramentas de mineração que correspondem a qualquer uma das seguintes classificações de mineração e seu nível de resistência. +This block can not be destroyed by ordinary mining tools.=Esse bloco não pode ser destruído por ferramentas de mineração comuns. +This block can not be mined by ordinary mining tools.=Esse bloco não pode ser extraído por ferramentas de mineração comuns. +This block can serve as a smelting fuel with a burning time of @1.=Esse bloco pode servir como combustível de fundição com um tempo de queima de @1. +This block causes a damage of @1 hit point per second.=Esse bloco causa um dano de @1 ponto de impacto por segundo. +This block causes a damage of @1 hit points per second.=Esse bloco causa um dano de @1 pontos de impacto por segundo. +This block connects to blocks of the @1 group.=Esse bloco se conecta a blocos do grupo @1. +This block connects to blocks of the following groups: @1.=Esse bloco se conecta a dos seguintes grupos: @1. +This block connects to these blocks: @1.=Esse bloco se conecta aos seguintes blocos: @1. +This block connects to this block: @1.=Esse bloco se conecta a esse bloco: @1. +This block decreases your breath and causes a drowning damage of @1 hit point every 2 seconds.=Esse bloco diminui a sua respiração e causa um dano por afogamento de @1 ponto de vida a cada 2 segundos. +This block decreases your breath and causes a drowning damage of @1 hit points every 2 seconds.=Esse bloco diminui a sua respiração e causa um dano por afogamento de @1 pontos de vida a cada 2 segundos. +This block is a light source with a light level of @1.=Esse bloco é uma fonte de luz com um nível de luz de @1. +This block glows faintly with a light level of @1.=Esse bloco tem um brilho fraco com um nível de luz de @ 1. +This block is a building block for creating various buildings.=Esse bloco é um bloco de construção para criar vários edifícios. +This block is a liquid with these properties:=Esse bloco é um líquido com as seguintes propriedades: +This block is affected by gravity and can fall.=Esse bloco é afetado pela gravidade e pode cair. +This block is completely silent when mined or built.=Esse bloco é completamente silencioso quando extraído ou construído. +This block is completely silent when walked on, mined or built.=Esse bloco é completamente silencioso quando pisado, extraído ou construído. +This block is destroyed when a falling block ends up inside it.=Esse bloco é destruído quando um bloco em queda acaba dentro dele. +This block negates all fall damage.=Esse bloco nega todos os danos por queda. +This block points to liquids.=Esse bloco pode ser apontado para líquidos. +This block will drop as an item when a falling block ends up inside it.=Esse bloco vai cair como um item quando um bloco caindo acaba dentro dele. +This block will drop as an item when it is not attached to a surrounding block.=Esse bloco irá cair como um item quando não estiver anexado a um bloco adjacente. +This block will drop as an item when no collidable block is below it.=Esse bloco irá cair como um item quando nenhum bloco colidível estiver abaixo dele. +This block will drop the following items when mined: %s.=Esse bloco soltará os seguintes itens quando minerados: %s. +This block will drop the following when mined: @1×@2.=Esse bloco irá deixar cair o seguinte quando extraído: @1×@2. +This block will drop the following when mined: @1.=Esse bloco irá deixar cair o seguinte quando extraído: @1. +This block will drop the following when mined: %s.=Esse bloco irá deixar cair o seguinte quando extraído: %s. +This block will make you bounce off with an elasticity of @1%.=Esse bloco fará você saltar com uma elasticidade de @1%. +This block will randomly drop one of the following when mined: %s.=Esse bloco irá deixar cair aleatoriamente um dos seguintes quando extraído: %s. +This block will randomly drop up to %d drops of the following possible drops when mined: %s.=Esse bloco irá cair aleatoriamente %d vezes das seguintes possíveis formas quando extraído: %s. +This block won't drop anything when mined.=Esse bloco não vai deixar cair nada quando extraído. +This is a decorational block.=Esse é um bloco decorativo. +This is a melee weapon which deals damage by punching.=Essa é uma arma corpo-a-corpo que causa dano ao socar. +Maximum damage per hit:=Dano máximo por acerto: +This item belongs to the @1 group.=Esse item pertence ao grupo @1. +This item belongs to these groups: @1.=Esse item pertence aos seguintes grupos: @1. +This item can serve as a smelting fuel with a burning time of @1.=Esse item pode servir como combustível de fundição com um tempo de queima de @1. +This item is primarily used for crafting other items.=Esse item é usado principalmente para criar outros itens. +This item points to liquids.=Esse item pode ser apontado para líquidos. +This tool belongs to the @1 group.=Essa ferramenta pertence ao grupo @1. +This tool belongs to these groups: @1.=Essa ferramenta pertence aos seguintes grupos: @1. +This tool can serve as a smelting fuel with a burning time of @1.=Essa ferramenta pode servir como combustível de fundição com um tempo de queima de @1. +This tool is capable of mining.=Essa ferramenta é capaz de minerar. +Maximum toughness levels:=Níveis máximos de dureza: +This tool points to liquids.=Essa ferramenta pode ser apontada para líquidos. +Tools and weapons=Ferramentas e armas +Unknown Node=Bloco Desconhecido +Usage help: @1=Como usar: @1 +Walking on this block is completely silent.= +Whenever you are not wielding any item, you use the hand which acts as a tool with its own capabilities. When you are wielding an item which is not a mining tool or a weapon it will behave as if it would be the hand.=Sempre que você não estiver empunhando nenhum item, você usa a mão que atua como uma ferramentacom caracteristicas próprias. Quando você está empunhando um item que não é uma ferramenta de mineração ou uma arma, ele se comportará como se fosse a mão. +Yes=Sim +You can not jump while standing on this block.= Você não pode pular enquanto estiver neste bloco. +any level=qualquer nível +level 0=nível 0 +level 0-@1=nivel 0-@1 +unknown=desconhecido +Unknown item (@1)=Item desconhecido +• @1: @2= +• @1: @2 HP= +• @1: @2, @3= +• Flowing range: @1= +• No flowing= +• Not renewable= +• Renewable= +• Viscosity: @1= +Itemstring: "@1"= +Durability: @1 uses= +Durability: @1= +Mining durability:= +• @1, level @2: @3 uses= +• @1, level @2: Unlimited= +This block's rotation is affected by the way you place it: Place it on the floor or ceiling for a vertical orientation; place it at the side for a horizontal orientation. Sneaking while placing it leads to a perpendicular orientation instead.= diff --git a/mods/HELP/doc/doc_items/locale/template.txt b/mods/HELP/doc/doc_items/locale/template.txt index 5f71c75a..68d2d0a7 100644 --- a/mods/HELP/doc/doc_items/locale/template.txt +++ b/mods/HELP/doc/doc_items/locale/template.txt @@ -1,140 +1,142 @@ -\sUsing it as fuel turns it into: @1. = -@1 seconds = +# textdomain:doc_items +Using it as fuel turns it into: @1.= +@1 seconds= # Item count times item name -%@1×@2 = +%@1×@2= # Itemname (25%) -@1 (@2%) = +@1 (@2%)= # Itemname (<0.5%) -@1 (<0.5%) = +@1 (<0.5%)= # Itemname (ca. 25%) -@1 (ca. @2%) = +@1 (ca. @2%)= # List separator (e.g. “one, two, three”) -,\s = +, = # Final list separator (e.g. “One, two and three”) -\sand\s = -1 second = -A transparent block, basically empty space. It is usually left behind after digging something. = -Air = -Blocks = -Building another block at this block will place it inside and replace it. = -Building this block is completely silent. = -Collidable: @1 = -Description: @1 = -Falling blocks can go through this block; they destroy it when doing so. = -Full punch interval: @1 s = -Hand = -Hold it in your hand, then leftclick to eat it. = -Hold it in your hand, then leftclick to eat it. But why would you want to do this? = -Item reference of all wieldable tools and weapons = -Item reference of blocks and other things which are capable of occupying space = -Item reference of items which are neither blocks, tools or weapons (esp. crafting items) = -Liquids can flow into this block and destroy it. = -Maximum stack size: @1 = -Mining level: @1 = -Mining ratings: = -• @1, rating @2: @3 s - @4 s = -• @1, rating @2: @3 s = -Mining times: = -Mining this block is completely silent. = -Miscellaneous items = -No = -Pointable: No = -Pointable: Only by special items = -Pointable: Yes = -Punches with this block don't work as usual; melee combat and mining are either not possible or work differently. = -Punches with this item don't work as usual; melee combat and mining are either not possible or work differently. = -Punches with this tool don't work as usual; melee combat and mining are either not possible or work differently. = -Range: @1 = + and = +1 second= +A transparent block, basically empty space. It is usually left behind after digging something.= +Air= +Blocks= +Building another block at this block will place it inside and replace it.= +Building this block is completely silent.= +Collidable: @1= +Description: @1= +Falling blocks can go through this block; they destroy it when doing so.= +Full punch interval: @1 s= +Hand= +Hold it in your hand, then leftclick to eat it.= +Hold it in your hand, then leftclick to eat it. But why would you want to do this?= +Item reference of all wieldable tools and weapons= +Item reference of blocks and other things which are capable of occupying space= +Item reference of items which are neither blocks, tools or weapons (esp. crafting items)= +Liquids can flow into this block and destroy it.= +Maximum stack size: @1= +Mining level: @1= +Mining ratings:= +• @1, rating @2: @3 s - @4 s= +• @1, rating @2: @3 s= +Mining times:= +Mining this block is completely silent.= +Miscellaneous items= +No= +Pointable: No= +Pointable: Only by special items= +Pointable: Yes= +Punches with this block don't work as usual; melee combat and mining are either not possible or work differently.= +Punches with this item don't work as usual; melee combat and mining are either not possible or work differently.= +Punches with this tool don't work as usual; melee combat and mining are either not possible or work differently.= +Range: @1= # Range: () -Range: @1 (@2) = -Range: 4 = +Range: @1 (@2)= +Range: 4= # Rating used for digging times -Rating @1 = +Rating @1= # @1 is minimal rating, @2 is maximum rating -Rating @1-@2 = -The fall damage on this block is increased by @1%. = -The fall damage on this block is reduced by @1%. = -This block allows light to propagate with a small loss of brightness, and sunlight can even go through losslessly. = -This block allows light to propagate with a small loss of brightness. = -This block allows sunlight to propagate without loss in brightness. = -This block belongs to the @1 group. = -This block belongs to these groups: @1. = -This block can be climbed. = -This block can be destroyed by any mining tool immediately. = -This block can be destroyed by any mining tool in half a second. = -This block can be mined by any mining tool immediately. = -This block can be mined by any mining tool in half a second. = -This block can be mined by mining tools which match any of the following mining ratings and its toughness level. = -This block can not be destroyed by ordinary mining tools. = -This block can not be mined by ordinary mining tools. = -This block can serve as a smelting fuel with a burning time of @1. = -This block causes a damage of @1 hit point per second. = -This block causes a damage of @1 hit points per second. = -This block connects to blocks of the @1 group. = -This block connects to blocks of the following groups: @1. = -This block connects to these blocks: @1. = -This block connects to this block: @1. = -This block decreases your breath and causes a drowning damage of @1 hit point every 2 seconds. = -This block decreases your breath and causes a drowning damage of @1 hit points every 2 seconds. = -This block is a light source with a light level of @1. = -This block glows faintly with a light level of @1. = -This block is a building block for creating various buildings. = -This block is a liquid with these properties: = -This block is affected by gravity and can fall. = -This block is completely silent when mined or built. = -This block is completely silent when walked on, mined or built. = -This block is destroyed when a falling block ends up inside it. = -This block negates all fall damage. = -This block points to liquids. = -This block will drop as an item when a falling block ends up inside it. = -This block will drop as an item when it is not attached to a surrounding block. = -This block will drop as an item when no collidable block is below it. = -This block will drop the following items when mined: %s. = -This block will drop the following when mined: @1×@2. = -This block will drop the following when mined: @1. = -This block will drop the following when mined: %s. = -This block will make you bounce off with an elasticity of @1%. = -This block will randomly drop one of the following when mined: %s. = -This block will randomly drop up to %d drops of the following possible drops when mined: %s. = -This block won't drop anything when mined. = -This is a decorational block. = -This is a melee weapon which deals damage by punching. = -Maximum damage per hit: = -This item belongs to the @1 group. = -This item belongs to these groups: @1. = -This item can serve as a smelting fuel with a burning time of @1. = -This item is primarily used for crafting other items. = -This item points to liquids. = -This tool belongs to the @1 group. = -This tool belongs to these groups: @1. = -This tool can serve as a smelting fuel with a burning time of @1. = -This tool is capable of mining. = -Maximum toughness levels: = -This tool points to liquids. = -Tools and weapons = -Unknown Node = -Usage help: @1 = -Walking on this block is completely silent. = -Whenever you are not wielding any item, you use the hand which acts as a tool with its own capabilities. When you are wielding an item which is not a mining tool or a weapon it will behave as if it would be the hand. = -Yes = -You can not jump while standing on this block. = -any level = -level 0 = -level 0-@1 = -unknown = -Unknown item (@1) = -• @1: @2 = -• @1: @2 HP = -• @1: @2, @3 = -• Flowing range: @1 = -• No flowing = -• Not renewable = -• Renewable = -• Viscosity: @1 = -Itemstring: "@1" = -Durability: @1 uses = -Durability: @1 = -Mining durability: = -• @1, level @2: @3 uses = -• @1, level @2: Unlimited = -This block's rotation is affected by the way you place it: Place it on the floor or ceiling for a vertical orientation; place it at the side for a horizontal orientation. Sneaking while placing it leads to a perpendicular orientation instead. = +Rating @1-@2= +The fall damage on this block is increased by @1%.= +The fall damage on this block is reduced by @1%.= +This block allows light to propagate with a small loss of brightness, and sunlight can even go through losslessly.= +This block allows light to propagate with a small loss of brightness.= +This block allows sunlight to propagate without loss in brightness.= +This block belongs to the @1 group.= +This block belongs to these groups: @1.= +This block can be climbed.= +This block can be destroyed by any mining tool immediately.= +This block can be destroyed by any mining tool in half a second.= +This block can be mined by any mining tool immediately.= +This block can be mined by any mining tool in half a second.= +This block can be mined by mining tools which match any of the following mining ratings and its toughness level.= +This block can not be destroyed by ordinary mining tools.= +This block can not be mined by ordinary mining tools.= +This block can serve as a smelting fuel with a burning time of @1.= +This block causes a damage of @1 hit point per second.= +This block causes a damage of @1 hit points per second.= +This block connects to blocks of the @1 group.= +This block connects to blocks of the following groups: @1.= +This block connects to these blocks: @1.= +This block connects to this block: @1.= +This block decreases your breath and causes a drowning damage of @1 hit point every 2 seconds.= +This block decreases your breath and causes a drowning damage of @1 hit points every 2 seconds.= +This block is a light source with a light level of @1.= +This block glows faintly with a light level of @1.= +This block is a building block for creating various buildings.= +This block is a liquid with these properties:= +This block is affected by gravity and can fall.= +This block is completely silent when mined or built.= +This block is completely silent when walked on, mined or built.= +This block is destroyed when a falling block ends up inside it.= +This block negates all fall damage.= +This block points to liquids.= +This block will drop as an item when a falling block ends up inside it.= +This block will drop as an item when it is not attached to a surrounding block.= +This block will drop as an item when no collidable block is below it.= +This block will drop the following items when mined: @1.= +This block will drop the following when mined: @1×@2.= +This block will drop the following when mined: @1.= +This block will drop the following when mined: @1.= +This block will make you bounce off with an elasticity of @1%.= +This block will randomly drop one of the following when mined: @1.= +This block will randomly drop up to @1 drops of the following possible drops when mined: @2.= +This block won't drop anything when mined.= +This is a decorational block.= +This is a melee weapon which deals damage by punching.= +Maximum damage per hit:= +This item belongs to the @1 group.= +This item belongs to these groups: @1.= +This item can serve as a smelting fuel with a burning time of @1.= +This item is primarily used for crafting other items.= +This item points to liquids.= +This tool belongs to the @1 group.= +This tool belongs to these groups: @1.= +This tool can serve as a smelting fuel with a burning time of @1.= +This tool is capable of mining.= +Maximum toughness levels:= +This tool points to liquids.= +Tools and weapons= +Unknown Node= +Usage help: @1= +Walking on this block is completely silent.= +Whenever you are not wielding any item, you use the hand which acts as a tool with its own capabilities. When you are wielding an item which is not a mining tool or a weapon it will behave as if it would be the hand.= +Yes= +You can not jump while standing on this block.= +any level= +level 0= +level 0-@1= +unknown= +Unknown item (@1)= +• @1: @2= +• @1: @2 HP= +• @1: @2, @3= +• Flowing range: @1= +• No flowing= +• Not renewable= +• Renewable= +• Viscosity: @1= +Itemstring: "@1"= +Durability: @1 uses= +Durability: @1= +Mining durability:= +• @1, level @2: @3 uses= +• @1, level @2: Unlimited= +This block's rotation is affected by the way you place it: Place it on the floor or ceiling for a vertical orientation; place it at the side for a horizontal orientation. Sneaking while placing it leads to a perpendicular orientation instead.= +Toughness level: @1= diff --git a/mods/HELP/doc/doc_items/mod.conf b/mods/HELP/doc/doc_items/mod.conf index 74fa80df..f1c0fbbc 100644 --- a/mods/HELP/doc/doc_items/mod.conf +++ b/mods/HELP/doc/doc_items/mod.conf @@ -1 +1,3 @@ name = doc_items +depends = doc +description = Adds automatically generated help texts for items. From 78f4043fb9724456c8eee9a3e319b52704f3807c Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 18 Mar 2019 14:22:51 +0100 Subject: [PATCH 187/737] Update mcl_doc_basics, with new translations --- mods/HELP/mcl_doc_basics/README.md | 4 +- mods/HELP/mcl_doc_basics/depends.txt | 1 - mods/HELP/mcl_doc_basics/description.txt | 1 - mods/HELP/mcl_doc_basics/init.lua | 314 +++++------- .../locale/mcl_doc_basics.de.tr | 451 +++++++++++++++++- .../locale/mcl_doc_basics.it.tr | 408 ++++++++++++++++ mods/HELP/mcl_doc_basics/mcl_extension.lua | 97 ++++ mods/HELP/mcl_doc_basics/mod.conf | 4 +- 8 files changed, 1058 insertions(+), 222 deletions(-) delete mode 100644 mods/HELP/mcl_doc_basics/depends.txt delete mode 100644 mods/HELP/mcl_doc_basics/description.txt create mode 100644 mods/HELP/mcl_doc_basics/locale/mcl_doc_basics.it.tr create mode 100644 mods/HELP/mcl_doc_basics/mcl_extension.lua diff --git a/mods/HELP/mcl_doc_basics/README.md b/mods/HELP/mcl_doc_basics/README.md index 2125bed7..13ac04e4 100644 --- a/mods/HELP/mcl_doc_basics/README.md +++ b/mods/HELP/mcl_doc_basics/README.md @@ -1,4 +1,4 @@ -# Basic help [`doc_basics`] +# Basic help, MineClone 2 edition [`mcl_doc_basics`] Adds basic help texts about Minetest, controls, gameplay and other basics. This mod uses the Documentation System [`doc`] as a basis and adds these categories: @@ -6,7 +6,5 @@ categories: * Basics: Basic gameplay information (e.g. how to craft) * Advanced usage: Advanced Minetest information (not gameplay-releavant) for power users (e.g. how to use commands) -Version: 1.0.0 - ## License Everything in this mod is licensed under the MIT License. diff --git a/mods/HELP/mcl_doc_basics/depends.txt b/mods/HELP/mcl_doc_basics/depends.txt deleted file mode 100644 index 8e695ec8..00000000 --- a/mods/HELP/mcl_doc_basics/depends.txt +++ /dev/null @@ -1 +0,0 @@ -doc diff --git a/mods/HELP/mcl_doc_basics/description.txt b/mods/HELP/mcl_doc_basics/description.txt deleted file mode 100644 index f86a1b59..00000000 --- a/mods/HELP/mcl_doc_basics/description.txt +++ /dev/null @@ -1 +0,0 @@ -Adds some help texts explaining how to use Minetest. diff --git a/mods/HELP/mcl_doc_basics/init.lua b/mods/HELP/mcl_doc_basics/init.lua index d8b8c790..7da389b1 100644 --- a/mods/HELP/mcl_doc_basics/init.lua +++ b/mods/HELP/mcl_doc_basics/init.lua @@ -1,3 +1,7 @@ +--[[ +Basic help for MCL2. Fork of doc_basics +]] + local S = minetest.get_translator("mcl_doc_basics") doc.add_category("basics", @@ -23,7 +27,6 @@ doc.add_entry("basics", "quick_start", { data = { text = S("This is a very brief introduction to the basic gameplay:").."\n\n".. -S("Basic controls:").."\n".. S("• Move mouse to look").."\n".. S("• [W], [A], [S] and [D] to move").."\n".. S("• [E] to sprint").."\n".. @@ -34,7 +37,9 @@ S("• Left-click to mine blocks or attack").."\n".. S("• Recover from swings to deal full damage").."\n".. S("• Right-click to build blocks and use things").."\n".. S("• [I] for the inventory").."\n".. -S("• Lowest row in inventory appears in hotbar below").."\n".. +S("• First items in inventory appear in hotbar below").."\n".. +S("• [F9] for the minimap").."\n".. +S("• Read entries in this help to learn the rest").."\n".. S("• [Esc] to close this window").."\n\n".. S("How to play:").."\n".. @@ -48,7 +53,6 @@ S("• Craft a wooden pickaxe so you can dig stone").."\n".. S("• Different tools break different kinds of blocks. Try them out!").."\n".. S("• Read entries in this help to learn the rest").."\n".. S("• Continue playing as you wish. There's no goal. Have fun!") - }}) doc.add_entry("basics", "minetest", { @@ -59,13 +63,12 @@ S("Minetest is a free software game engine for games based on voxel gameplay, in S("The player is thrown into a huge world made out of cubes or blocks. These cubes usually make the landscape they blocks can be removed and placed almost entirely freely. Using the collected items, new tools and other items can be crafted. Games in Minetest can, however, be much more complex than this.").."\n\n".. -S("A core feature of Minetest is the built-in modding capability. Mods modify existing gameplay. They can be as simple as adding a few decorative blocks or be very complex by e.g. introducing completely new gameplay concepts, generating a completely different kind of world, and many other things.").."\n\n".. +S("A core feature of Minetest is the built-in modding capability. Mods modify existing gameplay. They can be as simple as adding a few decorational blocks or be very complex by e.g. introducing completely new gameplay concepts, generating a completely different kind of world, and many other things.").."\n\n".. S("Minetest can be played alone or online together with multiple players. Online play will work out of the box with any mods, with no need for additional software as they are entirely provided by the server.").."\n\n".. -S("Minetest is usually bundled with a simple default game, named “Minetest Game” (shown in images 1 and 2). You probably already have it. Other games for Minetest can be downloaded from the official Minetest forums .").."\n\n".. +S("Minetest is usually bundled with a simple default game, named “Minetest Game” (shown in images 1 and 2). You probably already have it. Other games for Minetest can be downloaded from the official Minetest forums ."), -S("Minetest as well as Minetest Game are both unfinished at the moment, so please forgive us when not everything works out perfectly."), images = {{image="doc_basics_gameplay_mtg_1.png"}, {image="doc_basics_gameplay_mtg_2.png"}, {image="doc_basics_gameplay_carbone_ng.png"}, {image="doc_basics_gameplay_lott.png"}, {image="doc_basics_gameplay_pixture.png"}, {image="doc_basics_gameplay_outback.png"}, {image="doc_basics_gameplay_moontest.png"}, {image="doc_basics_gameplay_hades.png"}, {image="doc_basics_gameplay_xtraores_xtension.png"},} }}) @@ -80,8 +83,6 @@ S("• Sneak: [Shift]").."\n\n".. S("Sneaking only works when you stand on solid ground, are not in a liquid and don't climb.").."\n\n".. -S("If you jump while holding the sneak key, you also jump slightly higher than usual.").."\n\n".. - S("Sneaking might be disabled by mods. In this case, you still walk slower by sneaking, but you will no longer be stopped at ledges."), images = { { image = "doc_basics_sneak.png" } }, }}) @@ -96,7 +97,7 @@ S("• Moving the mouse around: Look around").."\n".. S("• W: Move forwards").."\n".. S("• A: Move to the left").."\n".. S("• D: Move to the right").."\n".. -S("• S: Move backwards").."\n\n".. +S("• S: Move backwards").."\n".. S("• E: Sprint").."\n\n".. S("While standing on solid ground:").."\n".. @@ -111,13 +112,13 @@ S("Extended movement (requires privileges):").."\n".. S("• J: Toggle fast mode, makes you run or fly fast (requires “fast” privilege)").."\n".. S("• K: Toggle fly mode, makes you move freely in all directions (requires “fly” privilege)").."\n".. S("• H: Toggle noclip mode, makes you go through walls in fly mode (requires “noclip” privilege)").."\n".. -S("• E: Move even faster when in fast mode").."\n\n".. +S("• E: Walk fast in fast mode").."\n\n".. S("World interaction:").."\n".. -S("• Left mouse button: Punch / mine blocks / take items").."\n".. +S("• Left mouse button: Punch / mine blocks").."\n".. S("• Right mouse button: Build or use pointed block").."\n".. S("• Shift+Right mouse button: Build").."\n".. -S("• Roll mouse wheel: Select next/previous item in hotbar").."\n".. +S("• Roll mouse wheel / B / N: Select next/previous item in hotbar").."\n".. S("• 1-9: Select item in hotbar directly").."\n".. S("• Q: Drop item stack").."\n".. S("• Shift+Q: Drop 1 item").."\n".. @@ -127,22 +128,21 @@ S("Inventory interaction:").."\n".. S("See the entry “Basics > Inventory”.").."\n\n".. S("Camera:").."\n".. -S("• Z: Zoom (requires “zoom” privilege)").."\n".. -S("• F7: Toggle camera mode").."\n".. -S("• F8: Toggle cinematic mode").."\n\n".. +S("• Z: Zoom").."\n".. +S("• F7: Toggle camera mode").."\n\n".. S("Interface:").."\n".. S("• Esc: Open menu window (pauses in single-player mode) or close window").."\n".. S("• F1: Show/hide HUD").."\n".. S("• F2: Show/hide chat").."\n".. -S("• F9: Toggle minimap (only works if have a map)").."\n".. +S("• F9: Toggle minimap").."\n".. S("• Shift+F9: Toggle minimap rotation mode").."\n".. S("• F10: Open/close console/chat log").."\n".. S("• F12: Take a screenshot").."\n\n".. S("Server interaction:").."\n".. S("• T: Open chat window (chat requires the “shout” privilege)").."\n".. -S("• /: Start issuing a server command)").."\n\n".. +S("• /: Start issuing a server command").."\n\n".. S("Technical:").."\n".. S("• R: Toggle far view (disables all fog and allows viewing far away, can make game very slow)").."\n".. @@ -150,8 +150,7 @@ S("• +: Increase minimal viewing distance").."\n".. S("• -: Decrease minimal viewing distance").."\n".. S("• F3: Enable/disable fog").."\n".. S("• F5: Enable/disable debug screen which also shows your coordinates").."\n".. -S("• F6: Only useful for developers. Enables/disables profiler").."\n".. -S("• P: Only useful for developers. Writes current stack traces") +S("• F6: Only useful for developers. Enables/disables profiler") }}) doc.add_entry("basics", "players", { @@ -160,17 +159,19 @@ doc.add_entry("basics", "players", { text = S("Players (actually: “player characters”) are the characters which users control.").."\n\n".. -S("Players are living beings which occupy a space of about 1×2×1 cubes. They start with 20 health points (HP) and 10 breath points (BP).").."\n".. +S("Players are living beings. They start with a number of health points (HP) and a number of breath points (BP).").."\n".. S("Players are capable of walking, sneaking, jumping, climbing, swimming, diving, mining, building, fighting and using tools and blocks.").."\n".. -S("Players can take damage for a variety of reasons, here are some:\ -• Taking fall damage\ -• Touching a block which causes direct damage\ -• Drowning\ -• Being attacked by another player\ -• Being attacked by a computer enemy").."\n\n".. +S("Players can take damage for a variety of reasons, here are some:").."\n\n".. -S("At a health of 0, the player dies and loses all items in the inventory. The player can just respawn in the world.").."\n".. +S("• Taking fall damage").."\n".. +S("• Touching a block which causes direct damage").."\n".. +S("• Drowning").."\n".. +S("• Being attacked by another player").."\n".. +S("• Being attacked by a computer enemy").."\n\n".. + +S("At a health of 0, the player dies. The player can just respawn in the world.").."\n".. +S("Other consequences of death depend on the game. The player could lose all items, or lose the round in a competitive game.").."\n\n".. S("Some blocks reduce breath. While being with the head in a block which causes drowning, the breath points are reduced by 1 for every 2 seconds. When all breath is gone, the player starts to suffer drowning damage. Breath is quickly restored in any other block.").."\n\n".. @@ -188,14 +189,14 @@ S("Items are things you can carry along and store in inventories. They can be us S("An item stack is a collection of items of the same type which fits into a single item slot. Item stacks can be dropped on the ground. Items which drop into the same coordinates will form an item stack.").."\n\n".. -S("Items have several properties, including the following:\ -\ -• Maximum stack size: Number of items which fit on 1 item stack\ -• Pointing range: How close things must be to be pointed while wielding this item\ -• Group memberships: See “Basics > Groups”\ -• May be used for crafting or cooking").."\n\n".. +S("Items have several properties, including the following:").."\n\n".. -S("Dropped item stacks will be collected automatically when you stand close to them."), +S("• Maximum stack size: Number of items which fit on 1 item stack").."\n".. +S("• Pointing range: How close things must be to be pointed while wielding this item").."\n".. +S("• Group memberships: See “Basics > Groups”").."\n".. +S("• May be used for crafting or cooking").."\n\n".. + +S("A dropped item stack can be collected by punching it."), images = {{image="doc_basics_inventory_detail.png"}, {image="doc_basics_items_dropped.png"}}, }}) @@ -204,9 +205,9 @@ doc.add_entry("basics", "tools", { data = { text = S("Some items may serve as a tool when wielded. Any item which has some special use which can be directly used by its wielder is considered a tool.").."\n\n".. -S("Mining tools are important to break all kinds of blocks. Weapons are another kind of tool. There are some other more specialized tools. Special actions of tools are usually done by right-click.").."\n\n".. +S("A common tool in Minetest are, of course, mining tools. These are important to break all kinds of blocks. Weapons are a kind of tool in Minetest. There are of course many other possible tools. Special actions of tools are usually done by left-click or right-click.").."\n\n".. -S("When nothing is wielded, players use their hand which may act as tool and weapon. The hand is capable of punching and deals minimum damage.").."\n\n".. +S("When nothing is wielded, players use their hand which may act as tool and weapon.").."\n\n".. S("Many tools will wear off when using them and may eventually get destroyed. The damage is displayed in a damage bar below the tool icon. If no damage bar is shown, the tool is in mint condition. Tools may be repairable by crafting, see “Basics > Crafting”."), images = {{image="doc_basics_tools.png"}, {image="doc_basics_tools_mining.png"}}, @@ -222,7 +223,7 @@ S("• Single punch: Left-click once to deal a single punch").."\n".. S("• Quick punching: Hold down the left mouse button to deal quick repeated punches").."\n\n".. S("There are two core attributes of melee weapons:").."\n".. -S("• Maximum damage: Damage which is dealt after a hit when the weapon was fully recovered)").."\n".. +S("• Maximum damage: Damage which is dealt after a hit when the weapon was fully recovered").."\n".. S("• Full punch interval: Time it takes for fully recovering from a punch").."\n\n".. S("A weapon only deals full damage when it has fully recovered from a previous punch. Otherwise, the weapon will deal only reduced damage. This means, quick punching is very fast, but also deals rather low damage. Note the full punch interval does not limit how fast you can attack.").."\n\n".. @@ -247,18 +248,17 @@ doc.add_entry("basics", "cam", { name = S("Camera"), data = { text = -S("Minetest has 3 different views which determine the way you see the world. The modes are:\ -\ -• 1: First-person view (default)\ -• 2: Third-person view from behind\ -• 3: Third-person view from the front").."\n\n".. +S("Minetest has 3 different views which determine the way you see the world. The modes are:").."\n\n".. + +S("• 1: First-person view (default)").."\n".. +S("• 2: Third-person view from behind").."\n".. +S("• 3: Third-person view from the front").."\n\n".. S("You can change the camera mode by pressing [F7].").."\n".. -S("There is also Cinematic Mode which can be toggled with [F8]. With Cinematic Mode enabled, the camera movements become more smooth. Some players don't like it, it is a matter of taste.").."\n".. -S("By holding down [Z], you can zoom the view at your crosshair. You need the “zoom” privilege to do this.").."\n\n".. +S("You might be able to zoom with [Z] to zoom the view at the crosshair. This allows you to look further.").."\n".. +S("Zooming is a gameplay feature that might be enabled or disabled by the game. By default, zooming is enabled when in Creative Mode but disabled otherwise.").."\n\n".. S("• Switch camera mode: [F7]").."\n".. -S("• Toggle Cinematic Mode: [F8]").."\n".. S("• Zoom: [Z]"), images = {{image="doc_basics_camera_ego.png"}, {image="doc_basics_camera_behind.png"}, {image="doc_basics_camera_front.png"}} }}) @@ -267,7 +267,7 @@ doc.add_entry("basics", "nodes", { name = S("Blocks"), data = { text = -S("The world of MineClone 2 is made entirely out of blocks (voxels, to be precise). Blocks can be added or removed with the correct tools.").."\n\n".. +S("The world of Minetest is made entirely out of blocks (voxels, to be precise). Blocks can be added or removed with the correct tools.").."\n\n".. S("Blocks can have a wide range of different properties which determine mining times, behavior, looks, shape, and much more. Their properties include:").."\n\n".. @@ -288,13 +288,42 @@ doc.add_entry("basics", "mine", { text = S("Mining (or digging) is the process of breaking blocks to remove them. To mine a block, point it and hold down the left mouse button until it breaks.").."\n\n".. -S("Blocks require a mining tool to be mined. Different blocks are mined by different mining tools, and some blocks can not be mined by any tool. Blocks vary in hardness and tools vary in strength. Mining tools will wear off over time. The mining time and the tool wear depend on the block and the mining tool. The fastest way to find out how efficient your mining tools are is by just trying them out on various blocks. Any items you gather by mining will drop on the ground, ready to be collected.") .. "\n\n".. +S("Short explanation:").."\n\n".. + +S("Blocks require a mining tool to be mined. Different blocks are mined by different mining tools, and some blocks can not be mined by any tool. Blocks vary in toughness and tools vary in strength. Mining tools will wear off over time. The mining time and the tool wear depend on the block and the mining tool. The fastest way to find out how efficient your mining tools are is by just trying them out on various blocks. Any items you gather by mining go straight into your inventory.") .. "\n\n".. + +S("Detailed explanation:").."\n\n".. + +S("Mineable blocks have mining properties (based on groups) and a toughness level. Mining tools have the same properties. Each mining property of a block also has a rating, while tools can be able to break blocks within a range of ratings.").."\n\n".. + +S("In order to mine a block, these conditions need to be met:").."\n".. +S("• The block and tool share at least one mining property for which they have a matching rating").."\n".. +S("• The tool's toughness level is equal or greater than the block's toughness level").."\n\n".. + +S("Example: A block with the mining property “cracky”, rating 3 and toughness level 0 can only be broken by a tool which is able to break “cracky” blocks at rating 3 and it must have a toughness level of 0 or larger.").."\n\n".. + +S("The time it takes to mine a block depends on the ratings and the toughness levels of both tool and block.").."\n".. +S("• The base mining time depends on the ratings of the block and the mining speed of the tool").."\n".. +S("• The mining speed of the tool differs for each mining property and its rating").."\n".. +S("• The toughness level further modifies the mining speed for this mining property").."\n".. +S("• A high difference in toughness levels decreases the mining time considerably").."\n".. +S("• If the toughness level difference is 2, the mining time is half of the base mining time").."\n".. +S("• With a difference of 3, the mining time is a third, and so on").."\n\n".. + +S("The item help shows the mining times of a tool listed by its mining properties and its ratings. The mining times are often expressed as a range. The low number stands for the mining time for toughness level 0 and the high number for the highest level the tool can mine.").."\n\n".. + +S("Mining usually wears off tools. Each time you mine a block, your tool takes some damage until it is destroyed eventually. The wear per mined block is determined by the difference between the tool's toughness level and the block's toughness level. The higher the difference, the lower the wear. This means:").."\n".. +S("• High-level blocks wear off your tools faster").."\n".. +S("• You can use high-level tools to compensate this").."\n".. +S("• The highest wear is caused when the level of both tool and block are equal").."\n\n".. S("After mining, a block may leave a “drop” behind. This is a number of items you get after mining. Most commonly, you will get the block itself. There are other possibilities for a drop which depends on the block type. The following drops are possible:").."\n".. S("• Always drops itself (the usual case)").."\n".. S("• Always drops the same items").."\n".. S("• Drops items based on probability").."\n".. -S("• Drops nothing"), +S("• Drops nothing").."\n\n".. + +S("The drop goes directly into your inventory, unless there's no more space left. In that case, the items literally drop on the floor."), images = {{image="doc_basics_tools_mining.png"}}, }}) @@ -321,19 +350,19 @@ doc.add_entry("basics", "liquids", { S("Liquids are special dynamic blocks. Liquids like to spread and flow to their surrounding blocks. Players can swim and drown in them.").."\n\n".. S("Liquids usually come in two forms: In source form (S) and in flowing form (F).").."\n".. -S("Liquid sources have the shape of a full cube. A liquid source will generate flowing liquids around it from time to time, and, if the liquid is renewable, it also generates liquid sources. A liquid source can sustain itself. A long it is left alone, a liquid source will normally keep its place and does not drain out.").."\n".. +S("Liquid sources have the shape of a full cube. A liquid source will generate flowing liquids around it from time to time, and, if the liquid is renewable, it also generates liquid sources. A liquid source can sustain itself. As long it is left alone, a liquid source will normally keep its place and does not drain out.").."\n".. S("Flowing liquids take a sloped form. Flowing liquids spread around the world until they drain. A flowing liquid can not sustain itself and always comes from a liquid source, either directly or indirectly. Without a liquid source, a flowing liquid will eventually drain out and disappear.").."\n".. S("All liquids share the following properties:").."\n".. -S("• All properties of blocks (including drowning damage").."\n".. +S("• All properties of blocks (including drowning damage)").."\n".. S("• Renewability: Renewable liquids can create new sources").."\n".. S("• Flowing range: How many flowing liquids are created at maximum per liquid source, it determines how far the liquid will spread. Possible are ranges from 0 to 8. At 0, no flowing liquids will be created. Image 5 shows a liquid of flowing range 2").."\n".. S("• Viscosity: How slow players move through it and how slow the liquid spreads").."\n\n".. -S("Renewable liquids create new liquid sources at open spaces (image 2). A new liquid source is created when:\ -• Two renewable liquid blocks of the same type touch each other diagonally\ -• These blocks are also on the same height\ -• One of the two “corners” is open space which allows liquids to flow in").."\n\n".. +S("Renewable liquids create new liquid sources at open spaces (image 2). A new liquid source is created when:").."\n".. +S("• Two renewable liquid blocks of the same type touch each other diagonally").."\n".. +S("• These blocks are also on the same height").."\n".. +S("• One of the two “corners” is open space which allows liquids to flow in").."\n\n".. S("When those criteria are met, the open space is filled with a new liquid source of the same type (image 3).").."\n\n".. @@ -371,16 +400,16 @@ S("To craft something, you need one or more items, a crafting grid (C) and a cra S("To complete the craft, take the result item from the output slot, which will consume items from the crafting grid and creates a new item. It is not possible to place items into the output slot.").."\n\n".. -S("A description on how to craft an item is called a “crafting recipe”. These crafting recipes can be found in the crafting guide which you can access from the inventory menu.").."\n\n".. +S("A description on how to craft an item is called a “crafting recipe”. You need this knowledge to craft. There are multiple ways to learn crafting recipes. One way is by using a crafting guide, which contains a list of available crafting recipes. Some games provide crafting guides. There are also some mods which you can download online for installing a crafting guide. Another way is by reading the online manual of the game (if one is available).").."\n\n".. S("Crafting recipes consist of at least one input item and exactly one stack of output items. When performing a single craft, it will consume exactly one item from each stack of the crafting grid, unless the crafting recipe defines replacements.").."\n\n".. -S("There are multiple types of crafting recipes:\ -\ -• Shaped (image 2): Items need to be placed in a particular shape\ -• Shapeless (images 3 and 4): Items need to be placed somewhere in input (both images show the same recipe)\ -• Cooking: Explained in “Basics > Cooking”\ -• Repairing (image 5): Place two damaged tools into the crafting grid anywhere to get a tool which is repaired by 5%.").."\n\n".. +S("There are multiple types of crafting recipes:").."\n\n".. + +S("• Shaped (image 2): Items need to be placed in a particular shape").."\n".. +S("• Shapeless (images 3 and 4): Items need to be placed somewhere in input (both images show the same recipe)").."\n".. +S("• Cooking: Explained in “Basics > Cooking”").."\n".. +S("• Repairing (image 5): Place two damaged tools into the crafting grid anywhere to get a tool which is repaired by a certain percentage. This recipe may not be available in all games").."\n\n".. S("In some crafting recipes, some input items do not need to be a concrete item, instead they need to be a member of a group (see “Basics > Groups”). These recipes offer a bit more freedom in the input items. Images 6-8 show the same group-based recipe. Here, 8 items of the “stone” group are required, which is true for all of the shown items.").."\n\n".. @@ -396,7 +425,7 @@ doc.add_entry("basics", "cook", { name = S("Cooking"), data = { text = -S("Cooking (or smelting) is a form of crafting which does not involve a crafting grid. Cooking is done with a furnace, an cookable item, a fuel item and time in order to yield a new item.").."\n\n".. +S("Cooking (or smelting) is a form of crafting which does not involve a crafting grid. Cooking is done with a special block (like a furnace), an cookable item, a fuel item and time in order to yield a new item.").."\n\n".. S("Each fuel item has a burning time. This is the time a single item of the fuel keeps a furnace burning.").."\n\n".. @@ -407,12 +436,12 @@ doc.add_entry("basics", "hotbar", { name = S("Hotbar"), data = { text = -S("At the bottom of the screen you see some squares. This is called the “hotbar”. The hotbar allows you to quickly access the lowest row of items in the player inventory.").."\n".. -S("You can change the selected item with the mouse wheel or the number keys.").."\n\n".. +S("At the bottom of the screen you see some squares. This is called the “hotbar”. The hotbar allows you to quickly access the first items from your player inventory.").."\n".. +S("You can change the selected item with the mouse wheel or the keyboard.").."\n\n".. -S("• Select previous item in hotbar: [Mouse wheel up]").."\n".. -S("• Select next item in hotbar: [Mouse wheel down]").."\n".. -S("• Select item in hotbar directly: [0]-[9]").."\n\n".. +S("• Select previous item in hotbar: [Mouse wheel up] or [B]").."\n".. +S("• Select next item in hotbar: [Mouse wheel down] or [N]").."\n".. +S("• Select item in hotbar directly: [1]-[9]").."\n\n".. S("The selected item is also your wielded item."), images = {{image="doc_basics_hotbar.png"}, {image="doc_basics_hotbar_relations.png"}}, @@ -430,11 +459,11 @@ S("There are 2 minimap modes and 3 zoom levels.").."\n\n".. S("Surface mode (image 1) is a top-down view of the world, roughly resembling the colors of the blocks this world is made of. It only shows the topmost blocks, everything below is hidden, like a satellite photo. Surface mode is useful if you got lost.").."\n\n".. -S("Radar mode (image 2) is more complicated. It displays the “denseness” of the area around you and changes with your height. Roughly, the more green an area is, the less “dense” it is. Black areas have many blocks. Use the radar to find caverns, hidden areas, walls and more. The rectangular shapes in image 2 clearly expose the position of a dungeon. Radar mode is only available in Creative Mode").."\n\n".. +S("Radar mode (image 2) is more complicated. It displays the “denseness” of the area around you and changes with your height. Roughly, the more green an area is, the less “dense” it is. Black areas have many blocks. Use the radar to find caverns, hidden areas, walls and more. The rectangular shapes in image 2 clearly expose the position of a dungeon.").."\n\n".. S("There are also two different rotation modes. In “square mode”, the rotation of the minimap is fixed. If you press [Shift]+[F9] to switch to “circle mode”, the minimap will instead rotate with your looking direction, so “up” is always your looking direction.").."\n\n".. -S("In other games, the minimap may be disabled.").."\n\n".. +S("In some games, the minimap may be disabled.").."\n\n".. S("• Toggle minimap mode: [F9]").."\n".. S("• Toggle minimap rotation mode: [Shift]+[F9]"), @@ -442,7 +471,7 @@ S("• Toggle minimap rotation mode: [Shift]+[F9]"), }}) doc.add_entry("basics", "inventory", { - name="Inventory", + name=S("Inventory"), data = { text = S("Inventories are used to store item stacks. There are other uses, such as crafting. An inventory consists of a rectangular grid of item slots. Each item slot can either be empty or hold one item stack. Item stacks can be moved freely between most slots.").."\n".. @@ -454,11 +483,12 @@ S("Inventory controls:").."\n\n".. S("Taking: You can take items from an occupied slot if the cursor holds nothing.").."\n".. S("• Left click: take entire item stack").."\n".. S("• Right click: take half from the item stack (rounded up)").."\n".. -S("• Middle click: take 10 items from the item stack").."\n\n".. +S("• Middle click: take 10 items from the item stack").."\n".. +S("• Mouse wheel down: take 1 item from the item stack").."\n\n".. S("Putting: You can put items onto a slot if the cursor holds 1 or more items and the slot is either empty or contains an item stack of the same item type.").."\n".. S("• Left click: put entire item stack").."\n".. -S("• Right click: put 1 item of the item stack").."\n".. +S("• Right click or mouse wheel up: put 1 item of the item stack").."\n".. S("• Middle click: put 10 items of the item stack").."\n\n".. S("Exchanging: You can exchange items if the cursor holds 1 or more items and the destination slot is occupied by a different item type.").."\n".. @@ -474,23 +504,15 @@ S("• Sneak+Left click: Automatically transfer item stack"), doc.add_entry("advanced", "online", { name = S("Online help"), data = { text= -S("You may want to check out these online resources related to MineClone 2.").."\n\n".. +S("You may want to check out these online resources related to Minetest:").."\n\n".. -S("MineClone 2 download and forum discussion: ").."\n".. -S("Here you find the most recent version of MineClone 2 and can discuss it.").."\n\n".. +S("Official homepage of Minetest: ").."\n".. +S("The main place to find the most recent version of Minetest.").."\n\n".. -S("Bug tracker: ").."\n".. -S("Report bugs here.").."\n\n\n\n".. +S("Community wiki: ").."\n".. +S("A community-based documentation website for Minetest. Anyone with an account can edit it! It also features a documentation of Minetest Game.").."\n\n".. -S("Minetest links:").."\n".. - -S("Official homepage of Minetest: ").."\n".. -S("The main place to find the most recent version of Minetest, the engine used by MineClone 2.").."\n\n".. - -S("Community wiki: ").."\n".. -S("A community-based documentation website for Minetest. Anyone with an account can edit it.").."\n\n".. - -S("Minetest forums: ").."\n".. +S("Web forums: ").."\n".. S("A web-based discussion platform where you can discuss everything related to Minetest. This is also a place where player-made mods and games are published and discussed. The discussions are mainly in English, but there is also space for discussion in other languages.").."\n\n".. S("Chat: ").."\n".. @@ -516,7 +538,7 @@ doc.add_entry("basics", "glossary", { name = S("Glossary"), data = { text = -S("This is a list of commonly used terms:").."\n\n".. +S("This is a list of commonly used terms in Minetest:").."\n\n".. S("Controls:").."\n".. S("• Wielding: Holding an item in hand").."\n".. @@ -548,7 +570,7 @@ S("• Craftitem: An item which is (primarily or only) used for crafting").."\n\ S("Gameplay:").."\n".. S("• “heart”: A single health symbol, indicates 2 HP").."\n".. S("• “bubble”: A single breath symbol, indicates 1 BP").."\n".. -S("• HP: Hit point (equals a half “heart”)").."\n".. +S("• HP: Hit point (equals half 1 “heart”)").."\n".. S("• BP: Breath point, indicates breath when diving").."\n".. S("• Mob: Computer-controlled enemy").."\n".. S("• Crafting: Combining multiple items to create new ones").."\n".. @@ -571,7 +593,6 @@ S("• Protection: Mechanism to own areas of the world, which only allows the ow S("Technical terms:").."\n".. S("• Minetest: This game engine").."\n".. -S("• MineClone 2: What you play right now").."\n".. S("• Minetest Game: A game for Minetest by the Minetest developers").."\n".. S("• Game: A complete playing experience to be used in Minetest; such as a game or sandbox or similar").."\n".. S("• Mod: A single subsystem which adds or modifies functionality; is the basic building block of games and can be used to further enhance or modify them").."\n".. @@ -588,16 +609,21 @@ S("There is a large variety of settings to configure Minetest. Pretty much every S("These are a few of the most important gameplay settings:").."\n\n".. S("• Damage enabled (enable_damage): Enables the health and breath attributes for all players. If disabled, players are immortal").."\n".. -S("• Creative Mode (creative_mode): Enables sandbox-style gameplay focusing on creativity rather than a challenging gameplay. Changes include: Instant digging, easy access to almost all items, tools never wear off, etc.").."\n".. +S("• Creative Mode (creative_mode): Enables sandbox-style gameplay focusing on creativity rather than a challenging gameplay. The meaning depends on the game; usual changes are: Reduced dig times, easy access to almost all items, tools never wear off, etc.").."\n".. S("• PvP (enable_pvp): Short for “Player vs Player”. If enabled, players can deal damage to each other").."\n\n".. -S("For a full list of all available settings, use the “Advanced settings” dialog in the main menu.") +S("For a full list of all available settings, use the “All Settings” dialog in the main menu.") }}) doc.add_entry("advanced", "movement_modes", { name = S("Movement modes"), data = { text = -S("If you have the required privileges, you can use up to three special movement modes. Using these may be considered cheating.").."\n\n".. +S("You can enable some special movement modes that change how you move.").."\n\n".. + +S("Pitch movement mode:").."\n".. +S("• Description: If this mode is activated, the movement keys will move you relative to your current view pitch (vertical look angle) when you're in a liquid or in fly mode.").."\n".. +S("• Default key: [L]").."\n".. +S("• No privilege required").."\n\n".. S("Fast mode:").."\n".. S("• Description: Allows you to move much faster. Hold down the the “Use” key [E] to move faster. In the client configuration, you can further customize fast mode.").."\n".. @@ -706,7 +732,7 @@ S("Players with the “privs” privilege can modify privileges at will:").."\n\ S("• /grant : Grant to ").."\n".. S("• /revoke : Revoke from ").."\n\n".. -S("In single-player mode, you can use “/grant singleplayer all” to unlock all abilities (which is often considered cheating).") +S("In single-player mode, you can use “/grantme all” to unlock all abilities.") }}) doc.add_entry("basics", "light", { @@ -717,7 +743,7 @@ S("As the world is entirely block-based, so is the light in the world. Each bloc S("There are two types of light: Sunlight and artificial light.").."\n\n".. S("Artificial light is emitted by luminous blocks. Artificial light has a light level from 1-14.").."\n".. -S("Sunlight is the brightest light and always goes perfectly straight down from the sky at each time of the day. blocks. At night, the sunlight will become moonlight instead, which still provides a small amount of light. The light level of sunlight is 15.").."\n\n".. +S("Sunlight is the brightest light and always goes perfectly straight down from the sky at each time of the day. At night, the sunlight will become moonlight instead, which still provides a small amount of light. The light level of sunlight is 15.").."\n\n".. S("Blocks have 3 levels of transparency:").."\n\n".. @@ -735,7 +761,7 @@ S("Note that “transparency” here only means that the block is able to carry doc.add_entry("advanced", "coordinates", { name = S("Coordinates"), data = { text = -S("The world is a large cube. And because of this, a position in the world can be easily expressed with Cartesian coordinates. That is, for each position in the world, there are 3 values X, Y and Z.").."\n\n".. +S("The Minetest world is a large cube. And because of this, a position in the world can be easily expressed with Cartesian coordinates. That is, for each position in the world, there are 3 values X, Y and Z.").."\n\n".. S("Like this: (5, 45, -12)").."\n\n".. @@ -751,101 +777,7 @@ S("• Follow the sun, then go right: Z increases").."\n".. S("• Follow the sun, then go left: Z decreases").."\n".. S("• The side length of a full cube is 1").."\n\n".. -S("You can view your current position in the debug screen (open with [F5]). This is considered cheating in some games.") -}}) - -doc.add_entry("advanced", "creative", { - name = S("Creative Mode"), - data = { text = -S("Enabling Creative Mode in MineClone 2 applies the following changes:").."\n\n".. - -S("• You keep the things you've placed").."\n".. -S("• Creative inventory is available to obtain most items easily").."\n".. -S("• Hand breaks all default blocks instantly").."\n".. -S("• Greatly increased hand pointing range").."\n".. -S("• Mined blocks don't drop items").."\n".. -S("• Items don't get used up").."\n".. -S("• Tools don't wear off").."\n".. -S("• You can eat food whenever you want").."\n".. -S("• You can always use the minimap (including radar mode)").."\n\n".. - -S("Damage is not affected by Creative Mode, it needs to be disabled seperately.") -}}) - -doc.add_entry("basics", "mobs", { - name = S("Mobs"), - data = { text = -S("Mobs are the living beings in the world. This includes animals and monsters.").."\n\n".. - -S("Mobs appear randomly throughout the world. This is called “spawning”. Each mob kind appears on particular block types at a given light level. The height also plays a role. Peaceful mobs tend to spawn at daylight while hostile ones prefer darkness. Most mobs can spawn on any solid block but some blocks only spawn on particular blocks (like grass blocks).").."\n\n".. - -S("Like players, mobs have hit points and sometimes armor points, too (which means you need better weapons to deal any damage at all). Also like players, hostile mobs can attack directly or at a distance. Mobs may drop random items after they die.").."\n\n".. - -S("Most animals roam the world aimlessly while most hostile mobs hunt players. Animals can be fed, tamed and bred.") -}}) - -doc.add_entry("basics", "animals", { - name = S("Animals"), - data = { text = -S("Animals are peaceful beings which roam the world aimlessly. You can feed, tame and breed them.").."\n\n".. - -S("Feeding:").."\n".. -S("Each animal has its own taste for food and doesn't just accept any food. To feed, hold an item in your hand and rightclick the animal.").."\n".. -S("Animals are attraced to the food they like and follow you as long you hold the food item in hand.").."\n".. -S("Feeding an animal has three uses: Taming, healing and breeding.").."\n".. -S("Feeding heals animals instantly, depending on the quality of the food item.").."\n\n".. - -S("Taming:").."\n".. -S("A few animals can be tamed. You can generally do more things with tamed animals and use other items on them. For example, tame horses can be saddled and tame wolves fight on your side.").."\n\n".. - -S("Breeding:").."\n".. -S("When you have fed an animal up to its maximum health, then feed it again, you will activate “Love Mode” and many hearts appear around the animal.").."\n".. -S("Two animals of the same species will start to breed if they are in Love Mode and close to each other. Soon a baby animal will pop up.").."\n\n".. - -S("Baby animals:").."\n".. -S("Baby animals are just like their adult couterparts, but they can't be fed, tamed or bred and don't drop anything when they die. They grow to adults after a short time.") - -}}) - -doc.add_entry("basics", "hunger", { - name = S("Hunger"), - data = { text = -S("Hunger affects your health and your ability to sprint. Hunger is not in effect when damage is disabled.").."\n\n".. - -S("Core hunger rules:").."\n\n".. -S("• You start with 20/20 hunger points (more points = less hungry)").."\n".. -S("• Actions like combat, jumping, sprinting, etc. decrease hunger points").."\n".. -S("• Food restores hunger points").."\n".. -S("• If your hunger bar decreases, you're hungry").."\n".. -S("• At 18-20 hunger points, you regenerate 1 HP every 4 seconds").."\n".. -S("• At 6 hunger points or less, you can't sprint").."\n".. -S("• At 0 hunger points, you lose 1 HP every 4 seconds (down to 1 HP)").."\n".. -S("• Poisonous food decreases your health").."\n\n".. - - -S("Details:").."\n\n".. -S("You have 0-20 hunger points, indicated by 20 drumstick half-icons above the hotbar. You also have an invisible attribute: Saturation.").."\n".. -S("Hunger points reflect how full you are while saturation points reflect how long it takes until you're hungry again.").."\n\n".. - -S("Each food item increases both your hunger level as well your saturation.").."\n".. -S("Food with a high saturation boost has the advantage that it will take longer until you get hungry again.").."\n".. -S("A few food items might induce food poisoning by chance. When you're poisoned, the health and hunger symbols turn sickly green. Food poisoning drains your health by 1 HP per second, down to 1 HP. Food poisoning also drains your saturation. Food poisoning goes away after a while or when you drink milk.").."\n\n".. - -S("You start with 5 saturation points. The maximum saturation is equal to your current hunger level. So with 20 hunger points your maximum saturation is 20. What this means is that food items which restore many saturation points are more effective the more hunger points you have. This is because at low hunger levels, a lot of the saturation boost will be lost due to the low saturation cap.").."\n".. -S("If your saturation reaches 0, you're hungry and start to lose hunger points. Whenever you see the hunger bar decrease, it is a good time to eat.").."\n\n".. - -S("Saturation decreases by doing things which exhaust you (highest exhaustion first):").."\n".. -S("• Regenerating 1 HP").."\n".. -S("• Suffering food poisoning").."\n".. -S("• Sprint-jumping").."\n".. -S("• Sprinting").."\n".. -S("• Attacking").."\n".. -S("• Taking damage").."\n".. -S("• Swimming").."\n".. -S("• Jumping").."\n".. -S("• Mining a block").."\n\n".. - -S("Other actions, like walking, do not exaust you.") - +S("You can view your current position in the debug screen (open with [F5]).") }}) +dofile(minetest.get_modpath(minetest.get_current_modname()).."/mcl_extension.lua") diff --git a/mods/HELP/mcl_doc_basics/locale/mcl_doc_basics.de.tr b/mods/HELP/mcl_doc_basics/locale/mcl_doc_basics.de.tr index 8a17951d..cc02b02c 100644 --- a/mods/HELP/mcl_doc_basics/locale/mcl_doc_basics.de.tr +++ b/mods/HELP/mcl_doc_basics/locale/mcl_doc_basics.de.tr @@ -1,34 +1,435 @@ # textdomain: mcl_doc_basics -# UNFINISHED translation! -# TODO: Add the missing strings from template.txt and complete the translation - Basics=Grundlagen -Everything you need to know about MineClone 2 to get started with playing=Alles, was Sie über MineClone 2 wissen sollten, um zu spielen +Everything you need to know about Minetest to get started with playing=Alles, was Sie über Minetest zum Spielen wissen sollten Advanced usage=Fortgeschrittenes -Advanced information about Minetest which may be nice to know, but is not crucial to gameplay=Fortgeschrittene Infos über Minetest, die nett zu wissen sind, aber nicht unbedingt kritisch für das Spiel +Advanced information about Minetest which may be nice to know, but is not crucial to gameplay=Fortgeschrittene Informationen über Minetest, die nett zu wissen sind, aber nicht kritisch für das reguläre Spiel Quick start=Schnellstart -This is a very brief introduction to the basic gameplay:=Dies ist eine sehr kurze Einleitung ins Spiel: -Basic controls:=Grundsteuerung: -• Move mouse to look=• Maus bewegen zum Umsehen +This is a very brief introduction to the basic gameplay:=Hier ist eine sehr kurze Einführung ins Spiel: +• Move mouse to look=• Mausbewegung zum Umsehen • [W], [A], [S] and [D] to move=• [W], [A], [S] und [D] zum Bewegen -• [E] to sprint=[E] zum Sprinten -• [Space] to jump or move upwards=[Leertaste] zum Springen oder Aufwärtsbewegung -• [Shift] to sneak or move downwards=• [Umschalt] zum Schleichen oder Abwärtsbewegung -• Mouse wheel or [1]-[9] to select item=Mausrad oder [1]-[9] zur Gegenstandsauswahl +• [Space] to jump or move upwards=• [Leertaste] zum Springen oder für Aufwärtsbewegung +• [Shift] to sneak or move downwards=• [Umschalt] zum Schleichen oder für Abwärtsbewegung +• Mouse wheel or [0]-[9] to select item=• Mausrad oder [0]-[9], um Gegenstand zu wählen • Left-click to mine blocks or attack=• Linksklick, um Blöcke abzubauen oder anzugreifen -• Recover from swings to deal full damage=• Warten Sie Schwünge von Angriffen ab, um vollen Schaden anzurichten +• Recover from swings to deal full damage=• Warten Sie Schwünge ganz ab, um vollen Schaden anzurichten • Right-click to build blocks and use things=• Rechtsklick, um Blöcke zu bauen und Dinge zu benutzen • [I] for the inventory=• [I] für das Inventar -• Lowest row in inventory appears in hotbar below=• Unterste Inventarzeile erscheint in Schnellleiste -• [Esc] to close this window=• [Esc], um dieses Fenster zu schließen -How to play:=Spielanleitung -• Punch a tree trunk until it breaks and collect wood=• Hauen Sie einen Baumstamm, bis er bricht und sammeln Sie Holz auf -• Place the wood into the 2×2 grid (your “crafting grid”) in your inventory menu and craft 4 wood planks=• Platzieren Sie das Holz in das 2×2-Gitter (Ihr „Fertigungsgitter) in Ihrem Inventar und fertigen Sie 4 Holzplanken -• Place them in a 2×2 shape in the crafting grid to craft a crafting table=• Platzieren Sie sie in eine 2×2-Form im Fertigungsgitter, um eine Werkbank zu errichten -• Place the crafting table on the ground=• Platzieren Sie die Werkbank auf den Boden -• Rightclick it for a 3×3 crafting grid=Rechtsklicken Sie sie für ein 3×3-Fertigungsgitter -• Use the crafting guide (book icon) to learn all the possible crafting recipes=• Benutzen Sie die Bauanleitung (Buchsymbol) um alle möglichen Fertigungsrezepte zu lernen -• Craft a wooden pickaxe so you can dig stone=• Fertigen Sie eine Holzspitzhacke, damit Sie Stein graben können -• Different tools break different kinds of blocks. Try them out!=• Verschiedene Werkzeuge können verschiedene Blöcke brechen. Probieren Sie einfach! +• First items in inventory appear in hotbar below=• Die ersten Gegenstände im Inventar tauchen in der Schnellleiste unten auf +• [F9] for the minimap=• [F9] für die Übersichtskarte +• Put items into crafting grid (usually 3×3 grid) to craft=• Legen Sie Gegenstände ins Fertigungsgitter (normalerweise 3×3-Gitter) zum Fertigen +• Use a crafting guide mod to learn crafting recipes or visit =• Benutzen Sie eine Mod mit Fertigungsführer, um die Fertigungsrezepte zu erlernen oder besuchen Sie • Read entries in this help to learn the rest=• Lesen Sie Einträge in dieser Hilfe, um den Rest zu lernen -• Continue playing as you wish. There's no goal. Have fun!=• Spielen Sie weiter, so wie sie wollen. Es gibt kein Ziel. Viel Spaß! +• [Esc] to close this window=• [Esc], um dieses Fenster zu schließen +Minetest=Minetest +Minetest is a free software game engine for games based on voxel gameplay, inspired by InfiniMiner, Minecraft, and the like. Minetest was originally created by Perttu Ahola (alias “celeron55”).=Minetest ist eine freie Spiel-Engine für Spiele auf Voxelbasis, inspiriert von InfiniMiner, Minecraft, und so weiter. Minetest wurde ursprünglich erfunden von Perttu Ahola (alias „celeron55“). +The player is thrown into a huge world made out of cubes or blocks. These cubes usually make the landscape they blocks can be removed and placed almost entirely freely. Using the collected items, new tools and other items can be crafted. Games in Minetest can, however, be much more complex than this.=Der Spieler wird in eine große Welt aus Würfeln bzw. Blöcken geworfen. Aus diesen Würfeln besteht die Landschaft; sie können aufgesammelt und wieder platziert werden. Mit den aufgesammelten Gegenständen können neue Werkzeuge und andere Dinge gefertigt werden. Spiele in Minetest können aber viel komplexer sein. +A core feature of Minetest is the built-in modding capability. Mods modify existing gameplay. They can be as simple as adding a few decorational blocks or be very complex by e.g. introducing completely new gameplay concepts, generating a completely different kind of world, and many other things.=Ein Hauptfeature in Minetest ist die eingebaute Modding-Funktionalität. Mods ändern das bestehende Spielgeschehen ab. Sie können recht einfach sein und einfach nur ein paar dekorative Blöcke hinzufügen oder sie können sehr komplex sein, indem sie z.B. völlig neue Spielkonzepte einführen, eine ganz andere Art Welt erschaffen, und viele andere Dinge. +Minetest can be played alone or online together with multiple players. Online play will work out of the box with any mods, with no need for additional software as they are entirely provided by the server.=Minetest kann alleine oder online mit mehreren Spielern gespielt werden. Das Onlinespiel funktioniert mit beliebigen Mods, es muss keine Zusatzsoftware installiert werden, da die Mods komplett vom Server zur Verfügung gestellt werden. +Minetest is usually bundled with a simple default game, named “Minetest Game” (shown in images 1 and 2). You probably already have it. Other games for Minetest can be downloaded from the official Minetest forums .=Minetest wird normalerweise mit einem einfachen Standardspiel ausgeliefert, es heißt „Minetest Game“ (siehe Bilder 1 und 2). Sie haben es vielleicht schon. Andere Spiele für Minetest können von den offiziellen Minetest-Foren heruntergeladen werden. +Sneaking=Schleichen +Sneaking makes you walk slower and prevents you from falling off the edge of a block.=Schleichen verlangsamt Ihre Schritte und hindert Sie daran, vom Rand eines Blocks zu fallen. +To sneak, hold down the sneak key (default: [Shift]). When you release it, you stop sneaking. Careful: When you release the sneak key at a ledge, you might fall!=Zum Schleichen halten Sie die Schleichtaste (Standard: [Umschalt]) gedrückt. Lassen Sie sie los, um nicht mehr zu schleichen. Vorsicht: Wenn sie die Taste an einer Kante loslassen, könnten sie stürzen! +• Sneak: [Shift]=• Schleichen [Umschalt] +Sneaking only works when you stand on solid ground, are not in a liquid and don't climb.=Schleichen funktioniert nur, wenn Sie auf festem Boden stehen, sich nicht in einer Flüssigkeit befinden und nicht klettern. +Sneaking might be disabled by mods. In this case, you still walk slower by sneaking, but you will no longer be stopped at ledges.=Schleichen kann von Mods deaktiviert werden. In diesem Fall gehen Sie immer noch langsamer, aber Sie werden an Kanten nicht mehr anhalten. +Controls=Steuerung +These are the default controls:=Dies ist die Standardsteuerung: +Basic movement:=Bewegen: +• Moving the mouse around: Look around=• Mausbewegung: Umsehen +• W: Move forwards=• W: Vorwärts +• A: Move to the left=• A: Links +• D: Move to the right=• D: Rechts +• S: Move backwards=• S: Rückwärts +While standing on solid ground:=Auf festem Boden: +• Space: Jump=• Leertaste: Springen +• Shift: Sneak=• Umschalt: Schleichen +While on a ladder, swimming in a liquid or fly mode is active=An einer Leiter, beim Tauchen oder im Flugmodus: +• Space: Move up=• Leertaste: Hoch +• Shift: Move down=• Umschalt: Runter +Extended movement (requires privileges):=Erweiterte Bewegung (benötigt Privilegien): +• J: Toggle fast mode, makes you run or fly fast (requires “fast” privilege)=• J: Schnellmodus, damit laufen oder fliegen Sie schneller (benötigt das „fast“-Privileg) +• K: Toggle fly mode, makes you move freely in all directions (requires “fly” privilege)=• K: Flugmodus, damit fliegen Sie frei in alle Richtungen (benötigt das „fly“-Privileg) +• H: Toggle noclip mode, makes you go through walls in fly mode (requires “noclip” privilege)=• H: Geistmodus, damit fliegen durch Wände im Flugmodus (benötigt das „noclip“-Privileg) +• E: Walk fast in fast mode=• E: Schnell im Schnellmodus gehen +World interaction:=Weltinteraktion: +• Left mouse button: Punch / mine blocks=• Linke Maustaste: Schlagen / Blöcke abbauen +• Right mouse button: Build or use pointed block=• Rechte Maustaste: Bauen oder gezeigten Block benutzen +• Shift+Right mouse button: Build=• Umschalt+Rechte Maustaste: Bauen +• Roll mouse wheel / B / N: Select next/previous item in hotbar=• Mausrad drehen / B / N: Nächten/vorherigen Gegenstand in Schnellleiste wählen +• 0-9: Select item in hotbar directly=• 0-9: Gegenstand in Schnellleiste direkt wählen +• Q: Drop item stack=• Q: Gegenstandsstapel wegwerfen +• Shift+Q: Drop 1 item=• Umschalt+Q: 1 Gegenstand wegwerfen +• I: Show/hide inventory menu=• I: Inventarmenü zeigen/verbergen +Inventory interaction:=Inventarinteraktion: +See the entry “Basics > Inventory”.=Siehe Eintrag „Grundlagen > Inventar“. +Camera:=Kamera: +• Z: Zoom=• Z: Zoom +• F7: Toggle camera mode=• F7: Kameramodus wechseln +• F8: Toggle cinematic mode=• F8: Kinomodus umschalten +Interface:=Benutzeroberfläche: +• Esc: Open menu window (pauses in single-player mode) or close window=• Esc: Menüfenster öffnen (pausiert im Einzelspielermodus) oder Fenster schließen +• F1: Show/hide HUD=• F1: Oberfläche zeigen/verbergen +• F2: Show/hide chat=• F2: Chat zeigen/verbergen +• F9: Toggle minimap=• F9: Übersichtskarte umschalten +• Shift+F9: Toggle minimap rotation mode=• Umschalt+F9: Rotationsmodus der Übersichtskarte wechseln +• F10: Open/close console/chat log=• F10: Konsole/Chatprotokoll öffnen/schließen +• F12: Take a screenshot=• Bildschirmfoto machen +Server interaction:=Serverinteraktion: +• T: Open chat window (chat requires the “shout” privilege)=• T: Chatfenster öffnen (Chat benötigt das „shout“-Privileg) +• /: Start issuing a server command=• Einen Serverbefehl eingeben +Technical:=Technisches: +• R: Toggle far view (disables all fog and allows viewing far away, can make game very slow)=• Weite Sicht (deaktiviert Nebel und erlaubt sehr weite Sicht, kann das Spiel enorm verlangsamen) +• +: Increase minimal viewing distance=• +: Minimale Sichtweite erhöhen +• -: Decrease minimal viewing distance=• -: Minimale Sichtweite verringern +• F3: Enable/disable fog=• F3: Nebel umschalten +• F5: Enable/disable debug screen which also shows your coordinates=• F5: Debug-Anzeige umschalten, was auch Ihre Koordinaten anzeigt +• F6: Only useful for developers. Enables/disables profiler=• F6: Nur nützlich für Entwickler. Schaltet die Profiler-Anzeige um +Players=Spieler +Players (actually: “player characters”) are the characters which users control.=Spieler (genauer: „Spielerfiguren“) sind die Figuren, die die Benutzer steuern. +Players are living beings. They start with a number of health points (HP) and a number of breath points (BP).=Spieler sind Lebewesen. Sie starten mit ein paar Trefferpunkten (TP) und ein paar Atempunkten (AP). +Players are capable of walking, sneaking, jumping, climbing, swimming, diving, mining, building, fighting and using tools and blocks.=Spieler können gehen, schleichen, springen, klettern, tauchen, graben, bauen, kämpfen und Werkzeuge und Blöcke benutzen. +At a health of 0, the player dies. The player can just respawn in the world.=Fällt die Gesundheit auf 0, stirbt der Spieler. Der Spieler kann in der Welt einfach wieder einsteigen. +Other consequences of death depend on the game. The player could lose all items, or lose the round in a competitive game.=Andere Konsequenzen des Todes hängen vom Spiel ab. Der Spieler könnte seinen Besitz verlieren oder eine Runde in einem Wettbewerb verlieren. +Some blocks reduce breath. While being with the head in a block which causes drowning, the breath points are reduced by 1 for every 2 seconds. When all breath is gone, the player starts to suffer drowning damage. Breath is quickly restored in any other block.=Einige Blöcke reduzieren den Atem. In einem Block, der den Atem reduziert, werden die Atempunkte um 1 alle 2 Sekunden reduziert. Wenn der Atem verbraucht ist, erleidet der Spieler Schaden durch Ertrinken. Der Atem wird in jedem anderen Block rasch wiederhergestellt. +Damage can be disabled on any world. Without damage, players are immortal and health and breath are unimportant.=Schaden kann in jeder Welt ausgeschaltet werden. Ohne Schaden sind Spieler unsterblich und Gesundheit und Atem spielen keine Rolle. +In multi-player mode, the name of other players is written above their head.=Im Mehrspielermodus steht der Name anderer Spieler über dem Kopf. +Items=Gegenstände +Items are things you can carry along and store in inventories. They can be used for crafting, smelting, building, mining, and more. Types of items include blocks, tools, weapons and items only used for crafting.=Gegenstände sind Dinge, die sie tragen und in Inventaren aufbewahren können. Sie können für die Fertigung, zum Schmelzen, Bauen, Graben und mehr verwendet werden. Zu Gegenständen zählen Blöcke, Werkzeuge und Gegenstände, die nur in der Fertigung benutzt werden. +An item stack is a collection of items of the same type which fits into a single item slot. Item stacks can be dropped on the ground. Items which drop into the same coordinates will form an item stack.=Ein Gegenstandsstapel ist eine Sammlung von gleichen Gegenständen, die in einem Inventarplatz passen. Gegenstandsstapel können auf den Boden geworfen werden. Gegenstände, die auf die gleichen Koordinaten fallen, bilden einen Gegenstandsstapel. +A dropped item stack can be collected by punching it.=Ein fallen gelassener Gegenstandsstapel kann aufgesammelt werden, indem er geschlagen wird. +Tools=Werkzeuge +Some items may serve as a tool when wielded. Any item which has some special use which can be directly used by its wielder is considered a tool.=Einige Gegenstände können als Werkzeug fungieren, wenn man sie hält. Als Werkzeug zählt jeder Gegenstand, der einen besonderen Zweck hat, der direkt vom Träger ausgelöst werden kann. +A common tool in Minetest are, of course, mining tools. These are important to break all kinds of blocks. Weapons are a kind of tool in Minetest. There are of course many other possible tools. Special actions of tools are usually done by left-click or right-click.=Eine häufige Werkzeugart in Minetest sind Grabewerkzeuge. Sie sind wichtig zum Abbauen aller möglichen Blöcke. Waffen sind eine Art Werkzeug in Minetest. Es gibt natürlich viele weitere Werkzeuge. Sonderaktionen von Werkzeugen weden normalerweise mit Links- oder Rechtsklick ausgelöst. +When nothing is wielded, players use their hand which may act as tool and weapon.=Wird nichts gehalten, benutzen die Spieler ihre Hand, die als Werkzeug und Waffe herhalten kann. +Many tools will wear off when using them and may eventually get destroyed. The damage is displayed in a damage bar below the tool icon. If no damage bar is shown, the tool is in mint condition. Tools may be repairable by crafting, see “Basics > Crafting”.=Viele Werkzeuge werden sich bei Benutzung abnutzen und zerbrechen früher oder später. Der Schaden wird in einer Schadensleiste unter dem Werkzeugsymbol angezeigt. Ohne diese Leiste ist das Werkzeug wie neu. Werkzeuge kann man eventuell mit einer Fertigung reparieren. +Weapons=Waffen +Some items are usable as a melee weapon when wielded. Weapons share most of the properties of tools.=Einige Gegenstände sind als Nahkampfwaffen zu gebrauchen. Waffen teilen die meisten Eigenschaften mit Werkzeugen. +Melee weapons deal damage by punching players and other animate objects. There are two ways to attack:=Nahkampfwaffen richten Schaden an, indem Spieler und andere aktive Objekte geschlagen werden. +• Single punch: Left-click once to deal a single punch=• Einzelner Schlag: Einmal links klicken +• Quick punching: Hold down the left mouse button to deal quick repeated punches=• Schneller Schlag: Linke Maustaste gedrückt halten, um schnelle wiederholte Schläge zu machen +There are two core attributes of melee weapons:=Nahkampfwaffen haben zwei Hauptattribute: +• Maximum damage: Damage which is dealt after a hit when the weapon was fully recovered=• Höchstschaden: Schaden, der angerichtet wird, wenn die Waffe voll ausgeholt ist +• Full punch interval: Time it takes for fully recovering from a punch=• Vollschlagintervall: Zeit, die es braucht, um die Waffe nach einem Schlag wieder stabil zu halten +A weapon only deals full damage when it has fully recovered from a previous punch. Otherwise, the weapon will deal only reduced damage. This means, quick punching is very fast, but also deals rather low damage. Note the full punch interval does not limit how fast you can attack.=Eine Waffe macht nur den vollen Schaden, wenn sie voll ausgeholt ist, d.h. der letzte Schlag war lange genug her. Sonst macht die Waffe nur reduzierten Schaden. Das bedeutet, dass schnelle Schläge wirklich sehr schnell sind, aber geringen Schaden anrichten. Beachten Sie, dass das Vollschlagintervall nicht begrenzt, wie schnell Sie angreifen können. +There is a rule which sometimes makes attacks impossible: Players, animate objects and weapons belong to damage groups. A weapon only deals damage to those who share at least one damage group with it. So if you're using the wrong weapon, you might not deal any damage at all.=Es gibt eine Regel, die es manchmal unmöglich macht, Schaden anzurichten. Spieler, lebendige Objekte und Waffen gehören Schadensgruppen an. Eine Waffe macht nur Schaden auf Sachen, mit denen sie mindestens eine Schadensgruppe teilt. Wenn Sie also die falsche Waffe benutzen, können sie überhaupt keinen Schaden machen. +Pointing=Zeigen +“Pointing” means looking at something in range with the crosshair. Pointing is needed for interaction, like mining, punching, using, etc. Pointable things include blocks, dropped items, players, computer enemies and objects.=„Zeigen“ bedeutet, dass man auf etwas mit dem Fadenkreuz in Reichweite schaut. Zeigen wird für die Interaktion benutzt, wie Graben, Schlagen, usw. Zu zeigbare Dingen gehören Blöcke, fallen gelassene Gegenstände, Spieler, computergesteuerte Feinde und Objekte. +To point something, it must be in the pointing range (also just called “range”) of your wielded item. There's a default range when you are not wielding anything. A pointed thing will be outlined or highlighted (depending on your settings). Pointing is not possible with the 3rd person front camera.=Um auf etwas zu zeigen, muss es sich in der Zeigereichweite (kurz „Reichweite“) Ihres gehaltenen Gegenstands befinden. Es gibt eine Standardreichweite, wenn Sie nichts halten. Ein gezeigtes Ding wird umrandet oder hervorgehoben (abhängig von Ihren Einstellungen). Zeigen ist nicht möglich mit der Dritten-Person-Vorderkamera. +A few things can not be pointed. Most blocks are pointable. A few blocks, like air, can never be pointed. Other blocks, like liquids can only be pointed by special items.=Ein paar Dinge können nicht gezeigt werden. Die meisten Blöcke sind zeigbar. Ein paar Blöcke, wie Luft, können niemals gezeigt werden. Andere Blöcke, wie Flüssigkeiten können nur von besonderen Gegenständen gezeigt werden. +Camera=Kamera +You can change the camera mode by pressing [F7].=Sie wechseln den Kameramodus mit [F7]. +You might be able to zoom with [Z] to zoom the view at the crosshair. This allows you to look further.=Sie sind eventuell in der Lage, mit [Z] zum Fadenkreuz hereinzuzoomen. Damit können Sie weiter sehen. +Zooming is a gameplay feature that might be enabled or disabled by the game. By default, zooming is enabled when in Creative Mode but disabled otherwise.=Zoomen ist eine Spielfunktion, die vom Spiel ein- oder ausgeschaltet werden kann. Standardmäßig ist das Zoomen im Kreativmodus erlaubt, aber sonst deaktiviert. +• Switch camera mode: [F7]=• Kameramodus wechseln: [F7] +• Zoom: [Z]=• Zoom: [Z] +Blocks=Blöcke +The world of Minetest is made entirely out of blocks (voxels, to be precise). Blocks can be added or removed with the correct tools.=Die Welt von Minetest besteht aus Blöcken (oder Voxeln, um genau zu sein). Blöcke können mit den richtigen Werkzeugen gebaut oder entfernt werden. +Blocks can have a wide range of different properties which determine mining times, behavior, looks, shape, and much more. Their properties include:=Blöcke haben eine Reihe an verschiedenen Eigenschaften, die die Abbauzeit, ihr Verhalten, Aussehen, Form und vieles mehr beeinflussen. Zu ihren Eigenschaften zählen: +• Collidable: Collidable blocks can not be passed through; players can walk on them. Non-collidable blocks can be passed through freely=• Kollisionsfähig: Kollisionsfähige Blöcke können nicht passiert werden, Spieler können auf ihnen gehen. Nicht kollisionsfähige Blöcke können frei passiert werden +• Pointable: Pointable blocks show a wireframe or a halo box when pointed. But you will just point through non-pointable blocks. Liquids are usually non-pointable but they can be pointed at by some special tools=• Zeigbar: Zeigbare Blöcke zeigen ein Drahtmodell oder eine scheinende Box, wenn sie gezeigt werden. Aber durch nicht-zeigbare Blöcke werden Sie hindurch zeigen. Flüssigkeiten sind üblicherweise nicht-zeigbar, aber mit besonderen Werkzeugen können sie gezeigt werden. +• Mining properties: By which tools it can be mined, how fast and how much it wears off tools=• Grabeeigenschaften: Von welchen Werkzeugen es abgebaut werden kann, wie schnell und wie stark es Werkzeuge abnutzt +• Climbable: While you are at a climbable block, you won't fall and you can move up and down with the jump and sneak keys=• Kletterbar: Wenn Sie sich an einem kletterbaren Block befinden, werden Sie nicht fallen und Sie können sich mit den Sprung- und Schleichtasten auf- und ab bewegen +• Drowning damage: See the entry “Basics > Player”=• Ertrinkenssschaden: Siehe „Grundlagen > Spieler“ +• Liquids: See the entry “Basics > Liquids”=• Flüssigkeiten: Siehe „Grundlagen > Flüssigkeiten“ +• Group memberships: Group memberships are used to determine mining properties, crafting, interactions between blocks and more=• Gruppenmitgliedschaften: Gruppenmitgliedschaften werden benutzt, um Grabeeigenschaften, Fertigungen, Interaktionen zwischen Blöcken und mehr festzulegen +Mining=Abbauen +Mining (or digging) is the process of breaking blocks to remove them. To mine a block, point it and hold down the left mouse button until it breaks.=Das Abbauen (oder Ausgraben) ist der Prozess, in dem Blöcke abgebrochen werden, um sie zu entfernen. Um einen Block abzubauen, zeigen Sie auf ihn und halten Sie die linke Maustaste, bis er bricht. +Short explanation:=Kurzerklärung: +Blocks require a mining tool to be mined. Different blocks are mined by different mining tools, and some blocks can not be mined by any tool. Blocks vary in toughness and tools vary in strength. Mining tools will wear off over time. The mining time and the tool wear depend on the block and the mining tool. The fastest way to find out how efficient your mining tools are is by just trying them out on various blocks. Any items you gather by mining go straight into your inventory.=Blöcke benötigen ein Grabewerkzeug, um abgebaut werden zu können. Andere Blöcke werden von anderen Grabewerkzeugen abgebaut, und einige Blöcke können überhaupt nicht abgebaut werden. Blöcke unterscheiden sich in ihrer Härte und Werkzeuge unterscheiden sich in ihrer Stärke. Grabewerkzeuge werden sich allmählich abnutzen. Die Abbauzeit und Abnutzung hängen vom Block und dem Grabewerkzeug ab. Die schnellste Methode, um herauszufinden, wie effizient Ihre Grabewerkzeuge sind, ist es, sie einfach an verschiedenen Blöcken auszuprobieren. Gegenstände, die Sie vom Abbauen erhalten, werden direkt in Ihr Inventar befördert. +Detailed explanation:=Detaillierte Erklärung: +Mineable blocks have mining properties (based on groups) and a toughness level. Mining tools have the same properties. Each mining property of a block also has a rating, while tools can be able to break blocks within a range of ratings.=Abbaubare Blöcke haben Abbaueigenschaften (basierend auf Gruppen) und einen Härtegrad. Grabewerkzeuge haben die gleichen Eigenschaften. Jede Abbaueigenschaft eines Blocks hat auch eine Wertung; Werkzeuge hingegen können fähig sein, Blöcke mit einer Reihe von Wertungen abzubauen. +In order to mine a block, these conditions need to be met:=Um einen Block abbauen zu können, müssen diese Bedingungen erfüllt sein: +• The block and tool share at least one mining property for which they have a matching rating=• Der Block und das Werkzeug haben mindestens eine gemeinsame Abbaueigenschaft, für die sie eine gleiche Wertung haben +• The tool's toughness level is equal or greater than the block's toughness level=• Der Härtegrad des Werkzeugs ist größer oder gleich dem Härtegrad des Blocks +Example: A block with the mining property “cracky”, rating 3 and toughness level 0 can only be broken by a tool which is able to break “cracky” blocks at rating 3 and it must have a toughness level of 0 or larger.=Beispiel: Ein Block mit der Abbaueigenschaft „cracky“, Wertung 3 und Härtegrad 0 kann nur von einem Werkzeug, der Blöcke mit Eigenschaft „cracky“ bei Wertung 3 bricht, und er muss einen Härtegrad von 0 oder größer haben. +The time it takes to mine a block depends on the ratings and the toughness levels of both tool and block.=Die Zeit, die gebraucht wird, um einen Block abzubauen, hängt von den Wertungen und dem Härtegrad von sowohl dem Werkzeug als auch dem Block ab. +• The base mining time depends on the ratings of the block and the mining speed of the tool=• Die Grund-Abbauzeit hängt von den Wertungen des Blocks und der Grabegeschwindigkeit des Werkzeugs ab +• The mining speed of the tool differs for each mining property and its rating=• Die Grabezeit der Werkzeug unterscheidet sich für jede Abbaueigenschaft und ihrer Wertung +• The toughness level further modifies the mining speed for this mining property=• Der Härtegrad modifiziert die Abbaugeschwindigkeit für diese Abbaueigenschaft noch weiter +• A high difference in toughness levels decreases the mining time considerably=• Eine hohe Differenz in Härtegraden verringert die Abbauzeit beträchtlich +• If the toughness level difference is 2, the mining time is half of the base mining time=• Wenn der Härtegrad 2 ist, wird die Abbauzeit die Hälfte der Grundabbauzeit sein +• With a difference of 3, the mining time is a third, and so on=• Mit einer Differenz von 3 ist die Abbauzeit ein Drittel, und so weiter +The item help shows the mining times of a tool listed by its mining properties and its ratings. The mining times are often expressed as a range. The low number stands for the mining time for toughness level 0 and the high number for the highest level the tool can mine.=Die Gegenstandshilfe zeigt die Abbauzeiten eines Werkzeuges unterteilt nach seinen Abbaueigenschaften und -wertungen. Die Abbauzeiten werden oft als Intervall angegeben. Die niedrige Zahl steht für die Abbauzeit mit Härtegrad 0 und die hohe Zahl für den höchstmöglichen Härtegrad, der vom Werkzeug abgebaut werden kann. +Mining usually wears off tools. Each time you mine a block, your tool takes some damage until it is destroyed eventually. The wear per mined block is determined by the difference between the tool's toughness level and the block's toughness level. The higher the difference, the lower the wear. This means:=Abbauen nutzt Werkzeuge üblicherweise ab. Jedes mal, wenn Sie einen Block abbauen, nimmt Ihr Werkzeug etwas Schaden, bis es zerstört ist. Die Abnutzung pro abgebautem Block hängt ab von der Differenz zwischen dem Härtegrad des Werkzeugs und dem Härtegrad des Blocks. Je größer die Differenz, desto niedriger die Abnutzung. Das bedeutet: +• High-level blocks wear off your tools faster=• Blöcke mit hohem Härtegrad nutzen Ihre Werkzeuge schneller ab +• You can use high-level tools to compensate this=• Sie können hochgradige Werkzeuge benutzen, um dies zu kompensieren +• The highest wear is caused when the level of both tool and block are equal=• Die höchste Abnutzung tritt ein, wenn der Härtegrad von Werkzeug und Block gleich sind +After mining, a block may leave a “drop” behind. This is a number of items you get after mining. Most commonly, you will get the block itself. There are other possibilities for a drop which depends on the block type. The following drops are possible:=Nach dem Abbauen kann ein Block etwas abwerfen. Das sind ein paar Gegenstände, die Sie nach dem Abbauen erhalten können. Üblicherweise erhalten Sie den Block selbst. Es gibt andere Möglichkeiten für einen Abwurf, der vom Blocktyp abhängt. Die folgenden Abwürfe sind möglich: +• Always drops itself (the usual case)=• Wirft nur sich selbst ab (der Normalfall) +• Always drops the same items=• Wirft immer die gleichen Gegenstände ab +• Drops items based on probability=• Wirft Gegenstände mit einer bestimmten Wahrscheinlichkeit ab +• Drops nothing=• Wirft nichts ab +The drop goes directly into your inventory, unless there's no more space left. In that case, the items literally drop on the floor.=Der Abwurf landet direkt in Iherem Inventar, außer, es gibt keinen Platz mehr. In diesem Fall fallen die Gegenstände zu Boden. +Building=Bauen +Almost all blocks can be built (or placed). Building is very simple and has no delay.=Fast alle Blöcke können gebaut (oder platziert) werden. Bauen ist sehr einfach und hat keine Verzögerung. +To build your wielded block, point at a block in the world and right-click. If this is not possible because the pointed block has a special right-click action, hold down the sneak key before right-clicking.=Um den gehaltenen Block zu bauen, zeigen Sie auf einen Block in der Welt und machen Sie einen Rechtsklick. Wenn dies nicht möglich ist, weil der Block eine besondere Rechtsklick-Aktion hat, halten Sie zusätzlich die Schleichen-Taste gedrückt. +Blocks can almost always be built at pointable blocks. One exception are blocks attached to the floor; these can only be built on the floor.=Blöcke können fast immer an zeigbaren Blöcken gebaut werden. Eine Ausnahme sind Blöcke, die am Boden befestigt sind; diese können nur auf dem Boden gebaut werden. +Normally, blocks are built in front of the pointed side of the pointed block. A few blocks are different: When you try to build at them, they are replaced.=Normalerweise werden Blöcke vor der gezeigten Seite des gezeigten Blocks gebaut. Ein paar Blöcke sind anders: Wenn Sie an sie anbauen, werden sie ersetzt. +Liquids=Flüssigkeiten +Liquids are special dynamic blocks. Liquids like to spread and flow to their surrounding blocks. Players can swim and drown in them.=Flüssigkeiten sind besondere dynamische Blöcke. Flüssigkeiten neigen dazu, sich auszubreiten und zu ihren Nachbarblöcken zu fließen. Spieler können in Flüssigkeiten schwimmen und ertrinken. +Liquids usually come in two forms: In source form (S) and in flowing form (F).=Flüssigkeiten gibt es normalerweise in zwei Formen: Quelle (S) und fließend (F). +Liquid sources have the shape of a full cube. A liquid source will generate flowing liquids around it from time to time, and, if the liquid is renewable, it also generates liquid sources. A liquid source can sustain itself. As long it is left alone, a liquid source will normally keep its place and does not drain out.=Flüssigkeitsquellen nehmen die Form eines ganzen Würfels an. Eine Flüssigkeitsquelle wird um sich herum fließende Flüssigkeitsquellen erzeugen und, falls die Flüssigkeit erneuerbar ist, auch Flüssigkeitsquellen erzeugen. Eine Flüssigkeitsquelle erhält sich selbst. Solange nichts passiert, wird eine Flüssigkeitsquelle normalerweise ihren Platz behalten und nicht austrocknen. +Flowing liquids take a sloped form. Flowing liquids spread around the world until they drain. A flowing liquid can not sustain itself and always comes from a liquid source, either directly or indirectly. Without a liquid source, a flowing liquid will eventually drain out and disappear.=Fließende Flüssigkeiten nehmen eine schräge Form an. Fließende Flüssigkeiten breiten sich in der Welt aus, bis sie austrocknen. Eine fließende Flüssigkeit kann sich nicht selbst erhalten und kommt immer aus einer Flüssigkeitsquelle, entweder direkt oder indirekt. Ohne einer Flüssigkeitsquelle wird eine fließende Flüssigkeit irgendwann austrocknen und verschwinden. +All liquids share the following properties:=Alle Flüssigkeiten teilen die folgenden Eigenschaften: +• All properties of blocks (including drowning damage)=• Alle Eigenschaften von Blöcken (inklusive Ertrinkensschaden) +• Renewability: Renewable liquids can create new sources=• Erneuerbarkeit: Erneuerbare Flüssigkeiten können neue Quellen erschaffen +• Flowing range: How many flowing liquids are created at maximum per liquid source, it determines how far the liquid will spread. Possible are ranges from 0 to 8. At 0, no flowing liquids will be created. Image 5 shows a liquid of flowing range 2=• Fließreichweite: Wie viele fließende Flüssigkeiten maximal je Flüssigkeitsquelle erschaffen werden; das bestimmt, wie weit die Flüssigkeit fließen wird. Mögliche Reichweiten sind zwischen 0 bis 8. Bei 0 werden keine fließenden Flüssigkeiten erzeugt. Bild 5 zeigt eine Flüssigkeit mit einer Fließreichweite von 2. +• Viscosity: How slow players move through it and how slow the liquid spreads=• Zähflüssigkeit: Wie langsam sich Spieler durch sie bewegen und wie langsam sich die Flüssigkeit ausbreitet +When those criteria are met, the open space is filled with a new liquid source of the same type (image 3).=Wenn diese Eigenschaften zutreffen, wird der freie Raum mit einer neuen Flüssigkeitsquelle des selben Typs gefüllt (Bild 3). +Swimming in a liquid is fairly straightforward: The usual direction keys for basic movement, the jump key for rising and the sneak key for sinking.=Schwimmen in einer Flüssigkeit ist einfach: Die normale Richtungstasten für die Grundbewegung, Sprungtaste und Schleichen für Auf- und Abbewegungen. +The physics for swimming and diving in a liquid are:=Die Schwimmphysik: +• The higher the viscosity, the slower you move=• Je höher die Zähflüssigkeit, desto langsamer bewegen Sie sich +• If you rest, you'll slowly sink=• Wenn Sie ruhen, sinken sie langsam +• There is no fall damage for falling into a liquid as such=• Es gibt keinen Fallschaden für das Eintauchen in einer Flüssigkeit als solche +• If you fall into a liquid, you will be slowed down on impact (but don't stop instantly). Your impact depth is determined by your speed and the liquid viscosity. For a safe high drop into a liquid, make sure there is enough liquid above the ground, otherwise you might hit the ground and take fall damage=• Wenn Sie in eine Flüssigkeit stürzen, werden Sie bei Kontakt verlangsamt (aber Sie halten nicht sofort an). Ihre Falltiefe hängt von Ihrer Geschwindigkeit und der Zähflüssigkeit ab. Für einen sicheren hohen Sturz in eine Flüssigkeit, stellen Sie sicher, dass genug Flüssigkeit über dem Boden ist, sonst könnten Sie auf den Boden aufschlagen und Fallschaden nehmen. +Liquids are often not pointable. But some special items are able to point all liquids.=Flüssigkeiten sind generell nicht zeigbar. Aber ein paar besondere Werkzeuge können auf alle Flüssigkeiten zeigen. +Crafting=Fertigung +Crafting is the task of combining several items to form a new item.=Fertigen ist die Tätigkeit, in der man mehrere Gegenstände kombiniert, um einen neuen zu erhalten. +To craft something, you need one or more items, a crafting grid (C) and a crafting recipe. A crafting grid is like a normal inventory which can also be used for crafting. Items need to be put in a certain pattern into the crafting grid. Next to the crafting grid is an output slot (O). Here the result will appear when you placed items correctly. This is just a preview, not the actual item. Crafting grids can come in different sizes which limits the possible recipes you can craft.=Um etwas zu fertigen, brauchen Sie einen oder mehrere Gegenstände, ein Fertigungsgitter (C) und ein Fertigungsrezept. Ein Fertigungsgitter ist wie ein normales Inventar, welches auch zum Fertigen benutzt werden kann. Gegenstände müssen in ein bestimmtes Muster in das Fertigungsgitter platziert werden. Neben dem Fertigungsgitter befindet sich ein Ausgabeplatz (O). Hier wird das Ergebnis auftauchen, wenn Sie die Gegenstände korrekt platziert haben. Das ist nur eine Vorschau, nicht der richtige Gegenstand. Fertigungsgitter können in verschiedenen Größen daher kommen, was die möglichen Rezepte begrenzt. +To complete the craft, take the result item from the output slot, which will consume items from the crafting grid and creates a new item. It is not possible to place items into the output slot.=Um die Fertigung abzuschließen, nehmen Sie sich das Ergebnis vom Ausgabeplatz, was die Gegenstände aus dem Fertigungsgitter verbrauchen und einen neuen Gegenstand erschaffen wird. Es ist nicht möglich, Gegenstände in den Ausgabeplatz zu platzieren. +A description on how to craft an item is called a “crafting recipe”. You need this knowledge to craft. There are multiple ways to learn crafting recipes. One way is by using a crafting guide, which contains a list of available crafting recipes. Some games provide crafting guides. There are also some mods which you can download online for installing a crafting guide. Another way is by reading the online manual of the game (if one is available).=Eine Beschreibung, wie man einen Gegenstand fertigt, nennt man „Fertigungsrezept“. Sie brauchen dieses Wissen, um etwas zu fertigen. Es gibt mehrere Möglichkeiten, Fertigungsrezepte zu lernen. Eine Möglichkeit ist es, einen Fertigungsführer zu benutzen, er enthält eine Liste von verfügbaren Fertigungsrezepten. Einige Spiele bieten Fertigungsführer an. Es gibt auch ein paar Mods, die Sie online herunterladen können, um einen Fertigungsführer zu installieren. Ansonsten können Sie die Online-Anleitung des Spieles lesen (wenn es eine gibt). +Crafting recipes consist of at least one input item and exactly one stack of output items. When performing a single craft, it will consume exactly one item from each stack of the crafting grid, unless the crafting recipe defines replacements.=Fertigungsrezepte bestehen aus mindestens einem Eingabegegenstand und genau einem Stapel von Ausgabegegenständen. Beim Vornehmen einer einzelnen Fertigung wird es genau einen Gegenstand von jedem Stapel im Fertigungsgitter verbrauchen, außer, wenn das Fertigungsrezept Ersätze definiert. +In some crafting recipes, some input items do not need to be a concrete item, instead they need to be a member of a group (see “Basics > Groups”). These recipes offer a bit more freedom in the input items. Images 6-8 show the same group-based recipe. Here, 8 items of the “stone” group are required, which is true for all of the shown items.=In einigen Fertigungsrezepten brauchen ein paar Eingabegegenstände keine konkreten Gegenstände zu sein, sie müssen stattdessen nur Mitglied einer Gruppe sein (siehe „Grundlagen > Gruppen“). Diese Rezepte bieten etwas mehr Freiheit bei der Wahl der Eingabegegenstände. Bilder 6-8 zeigen das gleiche gruppenbasierte Rezept. Hier werden 8 Gegenstände der „Stein“-Gruppe benötigt, was der Fall für alle gezeigten Gegenstände ist. +Rarely, crafting recipes have replacements. This means, whenever you perform a craft, some items in the crafting grid will not be consumed, but instead will be replaced by another item.=Selten können Fertigungsrezepte Ersätze haben. Das bedeutet, wenn Sie eine Fertigung vornehmen, werden einige Gegenstände im Fertigungsgitter nicht verbraucht, sondern durch einen anderen Gegenstand ersetzt. +Cooking=Kochen +Cooking (or smelting) is a form of crafting which does not involve a crafting grid. Cooking is done with a special block (like a furnace), an cookable item, a fuel item and time in order to yield a new item.=Kochen (bzw. Schmelzen) ist eine Art Fertigung, die ohne Fertigungsgitter auskommt. Kochen wird mit einem besonderem Block vorgenommen (wie einem Ofen), einen kochbaren Gegenstand, einem Brennstoff und Zeit, um einen neuen Gegenstand zu erhalten. +Each fuel item has a burning time. This is the time a single item of the fuel keeps a furnace burning.=Jeder Brennstoff hat eine Brennzeit. Das ist die Zeit, die ein einzelner Gegenstand des Brennstoffs den Ofen brennen lässt. +Each cookable item requires time to be cooked. This time is specific to the item type and the item must be “on fire” for the whole cooking time to actually yield the result.=Jeder kochbare Gegenstand braucht Zeit, um gekocht zu werden. Diese Zeit hängt vom Gegenstandstyp ab und der Gegenstand muss für die gesamte Kochzeit „im Feuer“ sein, um tatsächlich gekocht zu werden. +Hotbar=Schnellleiste +At the bottom of the screen you see some squares. This is called the “hotbar”. The hotbar allows you to quickly access the first items from your player inventory.=Unten sehen Sie ein paar Quadrate. Dies ist die „Schnellleiste“. Die Schnellleiste ermöglicht es Ihnen, schnell auf die ersten Gegenstände Ihres Spielerinventars zuzugreifen. +You can change the selected item with the mouse wheel or the keyboard.=Sie können die gewählten Gegenstände mit dem Mausrad oder der Tastatur wechseln. +• Select previous item in hotbar: [Mouse wheel up] or [B]=• Vorherigen Gegenstand in Schnellleiste wählen: [Mausrad rauf] oder [B] +• Select next item in hotbar: [Mouse wheel down] or [N]=• Vorherigen Gegenstand in Schnellleiste wählen: [Mausrad runter] oder [N] +• Select item in hotbar directly: [0]-[9]=• Gegenstand direkt in Schnellleiste wählen: [0]-[9] +The selected item is also your wielded item.=Der gewählte Gegenstand ist auch Ihr gehaltener Gegenstand. +Minimap=Übersichtskarte +Press [F9] to make a minimap appear on the top right. The minimap helps you to find your way around the world. Press it again to select different minimap modes and zoom levels. The minimap also shows the positions of other players.=Drücken Sie [F9], um eine Übersichtskarte rechts oben erscheinen zu lassen. Die Übersichtskarte hilft Ihnen, sich in der Welt zu orientieren. +There are 2 minimap modes and 3 zoom levels.=Es gibt 2 Modi und 3 Zoom-Stufen. +Surface mode (image 1) is a top-down view of the world, roughly resembling the colors of the blocks this world is made of. It only shows the topmost blocks, everything below is hidden, like a satellite photo. Surface mode is useful if you got lost.=Der Bodenmodus (Bild 1) ist eine Draufsicht auf die Welt, er zeigt grob die Farben der Blöcke, aus denen die Welt besteht. Er zeigt nur die obersten Blöcke, alles unter ihnen ist verborgen, wie bei einem Satellitenfoto. Der Bodenmodus ist nützlich, wenn Sie sich verlaufen haben. +Radar mode (image 2) is more complicated. It displays the “denseness” of the area around you and changes with your height. Roughly, the more green an area is, the less “dense” it is. Black areas have many blocks. Use the radar to find caverns, hidden areas, walls and more. The rectangular shapes in image 2 clearly expose the position of a dungeon.=Der Radarmodus (Bild 2) ist etwas komplizierter. Er zeigt die „Dichte“ des Gebiets um Sie herum an und ändert sich mit Ihrer Höhe. Grob gesagt, je grüner ein Gebiet ist, desto „weniger dicht“ ist es. Schwarze Gebiete haben viele Blöcke. Benutzen Sie das Radar, um Höhlen, verborgene Gebiete, Wände und mehr zu finden. Die rechteckigen Formen in Bild 2 verraten deutlich den Ort eines Kerkers. +There are also two different rotation modes. In “square mode”, the rotation of the minimap is fixed. If you press [Shift]+[F9] to switch to “circle mode”, the minimap will instead rotate with your looking direction, so “up” is always your looking direction.=Es gibt auch zwei unterschiedliche Rotationsmodi. Im „Quadratsmodus“ ist die Rotation der Übersichtskarte fest. Drücken Sie [Umschalt]+[F9], um zum „Kreismodus“ zu wechseln, in dem sich die Karte mit Ihrer Blickrichtung dreht, also ist „oben“ immer in Ihrer Blickrichtung. +In some games, the minimap may be disabled.=In einigen Spielen kann die Übersichtskarte deaktiviert sein. +• Toggle minimap mode: [F9]=• Übersichtskartenmodus ändern: [F9] +• Toggle minimap rotation mode: [Shift]+[F9]=• Rotationsmodus der Übersichtskarte ändern: [Umschalt]+[F9] +Inventory=Inventar +Inventories are used to store item stacks. There are other uses, such as crafting. An inventory consists of a rectangular grid of item slots. Each item slot can either be empty or hold one item stack. Item stacks can be moved freely between most slots.=Inventare werden benutzt, um Gegenstandsstapel aufzubewahren. Es gibt andere Verwendungszwecke, wie die Fertigung. Ein Inventar besteht aus einem rechteckigem Raster aus Gegenstandsplätzen. Jeder Gegenstandsplatz kann entweder leer sein, oder einen Gegenstandsstapel enthalten. Gegenstandsstapel können frei zwischen den meisten Plätzen bewegt weren. +You have your own inventory which is called your “player inventory”, you can open it with the inventory key (default: [I]). The first inventory slots are also used as slots in your hotbar.=Sie haben Ihr eigenes Inventar, das „Spielerinventar“, Sie können es mit Ihrer Inventartaste (Standard: [I]) öffnen. Die ersten Inventarplätze werden auch als Plätze in Ihrer Schnellleiste benutzt. +Blocks can also have their own inventory, e.g. chests and furnaces.=Blöcke können auch ihr eigenes Inventar haben, z.B. Truhen und Öfen. +Inventory controls:=Inventarsteuerung: +Taking: You can take items from an occupied slot if the cursor holds nothing.=Nehmen: Sie können Gegenstände aus einem belegten Platz nehmen, wenn der Mauszeiger nichts hält. +• Left click: take entire item stack=• Linksklick: Ganzen Gegenstandsstapel nehmen +• Right click: take half from the item stack (rounded up)=• Rechtsklick: Hälfte des Stapels nehmen (aufgerundet) +• Middle click: take 10 items from the item stack=• Mittelklick: 10 Gegenstände von einem Stapel nehmen +• Mouse wheel down: take 1 item from the item stack=• Mausrad runter: 1 Gegenstand vom Stapel nehmen +Putting: You can put items onto a slot if the cursor holds 1 or more items and the slot is either empty or contains an item stack of the same item type.=Ablegen: Sie können Gegenstände auf einem Platz ablegen, wenn der Mauszeiger einen oder mehrere Gegenstände hält und der Platz entweder leer ist, oder einen Stapel des gleichen Gegenstandstyps enthält. +• Left click: put entire item stack=• Linksklick: Ganzen Stapel ablegen +• Right click or mouse wheel up: put 1 item of the item stack=• Rechtsklick oder Mausrad hoch: 1 Gegenstand des Stapels ablegen +• Middle click: put 10 items of the item stack=• Mittelklick: 10 Gegenstände des Stapels ablegen +Exchanging: You can exchange items if the cursor holds 1 or more items and the destination slot is occupied by a different item type.=Vertauschen: Sie können Gegenstände vertauschen, wenn der Mauszeiger einen oder mehrere Gegenstände hält und der Zielplatz von einem anderen Gegenstandstyp belegt ist. +• Click: exchange item stacks=• Klick: Stapel vertauschen +Throwing away: If you hold an item stack and click with it somewhere outside the menu, the item stack gets thrown away into the environment.=Wegwerfen: Wenn Sie einen Stapel halten und irgendwo außerhalb des Menüs klicken, wird der Stapel in die Umwelt weggeworfen. +Quick transfer: You can quickly transfer an item stack to/from the player inventory to/from another item's inventory slot like a furnace, chest, or any other item with an inventory slot when that item's inventory is accessed. The target inventory is generally the most relevant inventory in this context.=Schnelles Verschieben: Sie können einen Stapel schnell von/zu dem Spielerinventar von/zu einem anderem Inventar (z.B. in einem Inventar einer Truhe oder eines Ofens) verschieben. Das Zielinventar ist normalerweise das relevanteste Inventar des Behälters. +• Sneak+Left click: Automatically transfer item stack=• Schleichtaste+Linksklick: Automatisch Stapel verschieben +Online help=Online-Hilfe +You may want to check out these online resources related to Minetest:=Sie können diese Onlinequellen zum Thema Minetest besuchen: +Official homepage of Minetest: =Offizielle Minetest-Homepage: +The main place to find the most recent version of Minetest.=Dort findet man die neueste Minetest-Version. +Community wiki: =Community-Wiki: +A community-based documentation website for Minetest. Anyone with an account can edit it! It also features a documentation of Minetest Game.=Eine gemeinschaftsbasierte Dokumentationswebpräsenz für Minetest. Jeder mit einem Benutzerkonto kann sie bearbeiten. Enthält auch die Hilfe zu Minetest Game. +Web forums: =Webforen: +A web-based discussion platform where you can discuss everything related to Minetest. This is also a place where player-made mods and games are published and discussed. The discussions are mainly in English, but there is also space for discussion in other languages.=Eine webbasierte Diskussionsplattform, wo Sie über alles zum Thema Minetest diskutieren können. Dort werden auch spielergemachte Mods und Spiele veröffentlicht und diskutiert. +Chat: =Chat: +A generic Internet Relay Chat channel for everything related to Minetest where people can meet to discuss in real-time. If you do not understand IRC, see the Community Wiki for help.=Ein allgemeiner Internet-Relay-Chat-Kanal für alles über Minetest, wo sich Menschen treffen können, um in Echtzeit zu diskutieren. Wenn Sie IRC nicht verstehen, sehen Sie im Community-Wiki für Hilfe nach. +Groups=Gruppen +Items, players and objects (animate and inanimate) can be members of any number of groups. Groups serve multiple purposes:=Gegenstände, Spieler und Objekte (lebend oder nicht) können Mitglieder von einer Reihe von Gruppen sein. Gruppen erfüllen mehrere Zwecke: +• Crafting recipes: Slots in a crafting recipe may not require a specific item, but instead an item which is a member of a particular group, or multiple groups=• Fertigungsrezepte: Plätze in Fertigungsrezepten erfordern nicht unbedingt einen konkreten Gegenstand, sondern einen Gegenstand, der zu einer bestimmten Gruppe, oder mehreren Gruppen, gehört +• Digging times: Diggable blocks belong to groups which are used to determine digging times. Mining tools are capable of digging blocks belonging to certain groups=• Abbauzeiten: Abbaubare Blöcke gehören zu Gruppen, die benutzt werden, um die Abbauzeiten zu bestimmen. Grabewerkzeuge sind fähig, grabbare Blöcke, die zu bestimmten Gruppen gehören, abzubauen +• Block behavior: Blocks may show a special behaviour and interact with other blocks when they belong to a particular group=• Blockverhalten: Blöcke können ein besonderes Verhalten aufweisen und mit anderen Blöcken interagieren, wenn sie zu einer bestimmten Gruppe gehören +• Damage and armor: Objects and players have armor groups, weapons have damage groups. These groups determine damage. See also: “Basics > Weapons”=• Schaden und Rüstung: Objekte und Spieler haben Rüstungsgruppen, Waffen haben Schadensgruppen. Diese Gruppe bestimmen den Schaden. Siehe auch: „Grundlagen > Waffen“ +• Other uses=• Andere Zwecke +In the item help, many important groups are usually mentioned and explained.=In der Gegenstandshilfe werden viele wichtige Gruppen normalerweise erwähnt und erklärt. +Glossary=Glossar +This is a list of commonly used terms in Minetest:=Dies ist eine Liste von häufig benutzten Begriffen in Minetest +Controls:=Steuerung: +• Wielding: Holding an item in hand=• Halten: Einen Gegenstand in der Hand halten +• Pointing: Looking with the crosshair at something in range=• Zeigen: Mit dem Fadenkreuz auf etwas in Reichweite blicken +• Dropping: Throwing an item or item stack to the ground=• Wegwerfen: Gegenstand oder Stapel zu Boden werfen +• Punching: Attacking with left-click, is also used on blocks=• Schlagen: Angriff mit Linksklick, wird auch an Blöcken benutzt +• Sneaking: Walking slowly while (usually) avoiding to fall over edges=• Schleichen: Langsam gehen, während man (normalerweise) verhindert, über die Kante zu fallen +• Climbing: Moving up or down a climbable block=• Klettern: Bei einem kletterbaren Block auf- oder absteigen +Blocks:=Blöcke: +• Block: Cubes that the worlds are made of=• Block: Würfel, aus denen die Welten gemacht sind +• Mining/digging: Using a mining tool to break a block=• Abbauen/Graben: Ein Grabewerkzeug benutzen, um einen Block zu zerbrechen +• Building/placing: Putting a block somewhere=• Bauen/Platzieren: Einen Block irgendwo hin setzen +• Drop: Items you get after mining a block=• Abwurf: Gegenstände, den Sie nach dem Abbauen erhalten +• Using a block: Right-clicking a block to access its special function=• Einen Block benutzen: Rechtsklick auf einem Block, um auf seine Sonderfunktion zuzugreifen +Items:=Gegenstände: +• Item: A single thing that players can possess=• Gegenstand: Ein einzelnes Ding, den Spieler besitzen können +• Item stack: A collection of items of the same kind=• Gegenstandsstapel: Eine Sammlung von gleichen Gegenständen +• Maximum stack size: Maximum amount of items in an item stack=• Maximale Stapelgröße: Maximale Anzahl Gegenstände in einem Gegenstandsstapel +• Slot / inventory slot: Can hold one item stack=• Platz / Inventarplatz: Kann einen Gegenstandsstapel halten +• Inventory: Provides several inventory slots for storage=• Inventar: Bietet mehrere Inventarplätze für die Lagerung +• Player inventory: The main inventory of a player=• Spielerinventar: Das Hauptinventar eines Spielers +• Tool: An item which you can use to do special things with when wielding=• Werkzeug: Ein Gegenstand, mit dem man besondere Dinge beim Halten tun kan +• Range: How far away things can be to be pointed by an item=• Reichweite: Bis zu welcher Entfernung man Dinge zeigen kann +• Mining tool: A tool which allows to break blocks=• Grabewerkzeug: Werkzeug, mit dem man Blöcke brechen kann +• Craftitem: An item which is (primarily or only) used for crafting=• Fertigungsgegenstand: Ein Gegenstand der (hauptsächlich oder nur) für die Fertigung benutzt wird +Gameplay:=Spiel: +• “heart”: A single health symbol, indicates 2 HP=• „Herz“: Ein einzelnes Gesundheitssymbol, steht für 2 TP +• “bubble”: A single breath symbol, indicates 1 BP=• „Luftblase“: Ein einzelnes Atemsymbol, steht für 1 AP +• HP: Hit point (equals half 1 “heart”)=• TP: Trefferpunkt (gleich 1 halbes „Herz“) +• BP: Breath point, indicates breath when diving=• AP: Atempunkt, steht für Atem beim Tauchen +• Mob: Computer-controlled enemy=• Mob: Computergesteuerter Gegner +• Crafting: Combining multiple items to create new ones=• Fertigen: Kombinierung mehrerer Gegenstände, um neue zu erhalten +• Crafting guide: A helper which shows available crafting recipes=• Fertigungsführer: Ein Helferlein, um die verfügbaren Fertigungsrezepte zu zeigen +• Spawning: Appearing in the world=• Einsteigen (spawning): In der Welt auftauchen +• Respawning: Appearing again in the world after death=• Wiedereinsteigen (respawning): Wieder in der Welt auftauchen, nach dem man gestorben ist +• Group: Puts similar things together, often affects gameplay=• Gruppe: Fasst mehrere Dinge zusammen, betrifft oft den Spielverlauf +• noclip: Allows to fly through walls=• Geistmodus / noclip: Damit kann man durch Wände fliegen +Interface=Benutzeroberfläche +• Hotbar: Inventory slots at the bottom=• Schnellleiste: Untere Inventarplätze +• Statbar: Indicator made out of half-symbols, used for health and breath=• Wertleiste: Indikator aus Halbsymbolen, für Gesundheit und Atem benutzt +• Minimap: The map or radar at the top right=• Übersichtskarte: Karte oder Radar oben rechts +• Crosshair: Seen in the middle, used to point at things=• Fadenkreuz: In der Mitte, damit kann man auf Dinge zeigen +Online multiplayer:=Online-Mehrspieler: +• PvP: Player vs Player. If active, players can deal damage to each other=• PvP: Spielerkampf (Player vs Player). Wenn aktiv, können sich Spieler gegenseitig verletzen +• Griefing: Destroying the buildings of other players against their will=• Griefen: Gebäude anderer Spieler gegen ihren Willen zerstören +• Protection: Mechanism to own areas of the world, which only allows the owners to modify blocks inside=• Schutz: Mechanismus, um Eigentum an Gebieten in der der Welt zu erlangen, wodurch nur der Eigentümer die Blöcke verändern kann +Technical terms:=Technische Begriffe: +• Minetest: This game engine=• Minetest: Diese Spiel-Engine +• Minetest Game: A game for Minetest by the Minetest developers=• Minetest Game: Ein Spiel für Minetest von den Minetest-Entwicklern +• Game: A complete playing experience to be used in Minetest; such as a game or sandbox or similar=• Spiel: Ein vollständiges Spielerlebnis für Minetest, also ein richtiges Spiel oder auch nur eine Sandbox oder ähnliches +• Mod: A single subsystem which adds or modifies functionality; is the basic building block of games and can be used to further enhance or modify them=• Mod: Ein einzelnes Untersystem, welches Funktionalität hinzufügt oder modifiziert; ist das Fundament von Spielen und kann benutzt werden, um sie zu erweitern oder zu modifizieren +• Privilege: Allows a player to do something=• Privileg: Erlaubt einem Spieler, etwas zu tun +• Node: Other word for “block”=• Node: Anderes Wort für „Block“ +Settings=Einstellungen +There is a large variety of settings to configure Minetest. Pretty much every aspect can be changed that way.=Es gibt viele Einstellungen, um Minetest einzurichten. Fast jeder Aspekt kann so verändert werden. +These are a few of the most important gameplay settings:=Dies sind ein paar der wichtigsten Spieleinstellungen: +• Damage enabled (enable_damage): Enables the health and breath attributes for all players. If disabled, players are immortal=• Schaden aktiviert (enable_damage): Aktiviert die Gesundheits- und Atemattribute für alle Spieler. Wird dies deaktiviert, sind Spieler unsterblich. +• Creative Mode (creative_mode): Enables sandbox-style gameplay focusing on creativity rather than a challenging gameplay. The meaning depends on the game; usual changes are: Reduced dig times, easy access to almost all items, tools never wear off, etc.=• Kreativmodus (creative_mode): Aktiviert eine Art Sandkastenmodus, der sich auf Kreativität statt auf ein herausforderndes Spiel konzentriert. Die Bedeutung hängt vom Spiel ab; die üblichen Änderungen sind: Verringerte Grabezeiten, leichter Zugriff zu fast allen Dingen, Werkzeuge nutzen sich nie ab, usw. +• PvP (enable_pvp): Short for “Player vs Player”. If enabled, players can deal damage to each other=• PvP (enable_pvp): Wenn aktiv, können sich Spieler gegenseitig verletzen +For a full list of all available settings, use the “All Settings” dialog in the main menu.=Für eine vollständige Liste aller verfügbaren Einstellungen, benutzen Sie den Knopf „Alle Einstellunen“ im Hauptmenü. +Movement modes=Bewegungsmodi +If you have the required privileges, you can use up to three special movement modes.=Wenn Sie die benötigten Privilegien haben, können Sie bis zu drei besondere Bewegungsmodi benutzen. +Fast mode:=Schnellmodus: +• Description: Allows you to move much faster. Hold down the the “Use” key [E] to move faster. In the client configuration, you can further customize fast mode.=• Beschreibung: Damit bewegen Sie sich viel schneller. In der Client-Konfiguration können Sie den Schnellmodus ferner anpassen +• Default key: [J]=• Standardtaste: [J] +• Required privilege: fast=• Benötigtes Privileg: fast +Fly mode:=Flugmodus +• Description: Gravity doesn't affect you and you can move freely in all directions. Use the jump key to rise and the sneak key to sink.=• Beschreibung: Schwerkraft beeinflusst Sie nicht und Sie können sich in alle Richtungen schnell bewegen. Benutzen Sie die Sprungtaste zum Aufsteigen und die Schleichentaste zum Absinken. +• Default key: [K]=• Standardtaste: [K] +• Required privilege: fly=• Benötigtes Privileg: fly +Noclip mode:=Geistmodus: +• Description: Allows you to move through walls. Only works when fly mode is enabled, too.=• Beschreibung: Damit können Sie durch Wände fliegen, wenn der Flugmodus aktiv ist. +• Default key: [H]=• Standardtaste: [H] +• Required privilege: noclip=• Benötigtes Privileg: noclip +Console=Konsole +With [F10] you can open and close the console. The main use of the console is to show the chat log and enter chat messages or server commands.=Mit [F10] öffnen und schließen Sie die Konsole. Der Hauptzweck der Konsole ist die Anzeige des Chatprotokolls und für die Eingabe von Chatnachrichten oder Serverbefehlen. +Using the chat or server command key also opens the console, but it is smaller and will be closed after you sent a message.=Wenn Sie die Chat- oder Serverbefehlstaste benutzen, wird die Konsole auch geöffnet, aber sie ist kleiner und wird geschlossen, nachdem Sie eine Nachricht gesendet haben. +Use the chat to communicate with other players. This requires you to have the “shout” privilege.=Benutzen Sie den Chat, um mit anderen Spielern zu kommunizieren. Dafür brauchen Sie das „shout“-Privileg. +Just type in the message and hit [Enter]. Public chat messages can not begin with “/”.=Geben Sie einfach die Nachricht ein und drücken [Eingabe]. Öffentliche Chatnachrichten können nicht mit „/“ beginnen. +You can send private messages: Say “/msg ” in chat to send “” which can only be seen by .=Sie können private Nachrichten senden: Sagen Sie „/msg “ im Chat, um „“ zu senden, aber nur für sichtbar. +There are some special controls for the console:=Besondere Steuerung für die Konsole: +• [F10] Open/close console=• [F10] Konsole öffnen/schließen +• [Enter]: Send message or command=• [Eingabe] Nachricht oder Befehl senden +• [Tab]: Try to auto-complete a partially-entered player name=• [Tab]: Autovervollständigung von Spielernamen +• [Ctrl]+[Left]: Move cursor to the beginning of the previous word=• [Strg]+[Links]: Cursor zum Anfang des vorherigen Wortes bewegen +• [Ctrl]+[Right]: Move cursor to the beginning of the next word=• [Strg]+[Rechts]: Cursor zum Anfang des vorherigen Wortes bewegen +• [Ctrl]+[Backspace]: Delete previous word=• [Strg]+[Rücktaste]: Vorheriges Wort löschen +• [Ctrl]+[Delete]: Delete next word=• [Strg]+[Entfernen]: Nächstes Wort löschen +• [Ctrl]+[U]: Delete all text before the cursor=• [Strg]+[U]: Text vor dem Cursor löschen +• [Ctrl]+[K]: Delete all text after the cursor=• [Strg]+[K]: Text nach dem Cursor löschen +• [Page up]: Scroll up=• [Bild auf]: Nach oben scrollen +• [Page down]: Scroll down=• [Bild ab]: Nach unten rollen +There is also an input history. Minetest saves your previous console inputs which you can quickly access later:=Es gibt auch eine Eingabe-Historie. Minetest merkt sich Ihre vorherigen Konsoleneingaben, auf die Sie später schnell zugreifen können: +• [Up]: Go to previous entry in history=• [Rauf]: Zum vorherigen Eintrag in der Historie gehen +• [Down]: Go to next entry in history=• [Runter]: Zum nächsten Eintrag in der Historie gehen +Server commands=Serverbefehle +Server commands (also called “chat commands”) are little helpers for advanced users. You don't need to use these commands when playing. But they might come in handy to perform some more technical tasks. Server commands work both in multi-player and single-player mode.=Serverbefehle (auch „Chat-Befehle“ genannt) sind kleine Helferlein für fortgeschrittene Benutzer. Sie müssen diese Befehle im normalen Spielverlauf nicht benutzen. Aber sie können nützlich sein, um ein paar technischere Aufgaben zu erledigen. Serverbefehle funktionieren sowohl im Mehrspieler- als auch im Einzelspielermodus. +Server commands can be entered by players using the chat to perform a special server action. There are a few commands which can be issued by everyone, but some commands only work if you have certain privileges granted on the server. There is a small set of basic commands which are always available, other commands can be added by mods.=Serverbefehle können von Spielern im Chat eingegeben werden, um eine besondere Serveraktion auszulösen. Es gibt ein paar Befehle, die von jedem benutzt werden können, aber einige Befehle benötigen Privilegien, die vom Server gewährt werden. Es gibt eine kleine Menge an Grundbefehlen, die immer verfügbar sind, andere Befehle können von Mods hinzugefügt werden. +To issue a command, simply type it like a chat message or press Minetest's command key (default: [/]). All commands have to begin with “/”, for example “/mods”. The Minetest command key does the same as the chat key, except that the slash is already entered.=Um einen Befehl zu erteilen, geben Sie ihn einfach wie eine Chatnachricht ein oder drücken Sie Minetests Befehlstaste (Standard: [/]). Alle Befehle müssen mit „/“ beginnen, z.B. „/mods“. Die Minetestbefehlstaste macht das gleiche wie die Chattaste, nur, dass der Schrägstrich schon eingegeben wurde. +Commands may or may not give a response in the chat log, but errors will generally be shown in the chat. Try it for yourselves: Close this window and type in the “/mods” command. This will give you the list of available mods on this server.=Befehle können eine Rückmeldung im Chatprotokoll auslösen, müssen aber nicht. Fehlermeldungen tauchen grundsätzlich im Chat auf. Probieren Sie es aus: Schließen Sie dieses Fenster und geben Sie den „/mods“-Befehl ein. Damit erhalten Sie die Liste der vorhandenen Mods auf diesem Server. +“/help all” is a very important command: You get a list of all available commands on the server, a short explanation and the allowed parameters. This command is also important because the available commands often differ per server.=„/help all“ ist ein sehr wichtiger Befehl: Damit erhalten Sie eine Liste aller verfügbaren Befehle auf dem Server, eine kurze Erklärung und die möglichen Parameter. Dieser Befehl ist auch wichtig, weil die Befehle sich je nach Server unterscheiden können. +Commands are followed by zero or more parameters.=Befehle haben null oder mehr Parameter. +In the command reference, you see some placeholders which you need to replace with an actual value. Here's an explanation:=In der Befehlsreferenz sehen Sie einige Platzhalter, die sie mit dem richtigen Wert ersetzen müssen. Hier ist eine Erklärung: +• Text in greater-than and lower-than signs (e.g. “”): Placeholder for a parameter=• Text zwischen Größer-Als- und Kleiner-Als-Zeichen (z.B. „“): Platzhalter für einen Parameter +• Anything in square brackets (e.g. “[text]”) is optional and can be omitted=• Alles in eckigen Klammern (z.B. „[Text]“) ist optional und kann ausgelassen werden +• Pipe or slash (e.g. “text1 | text2 | text3”): Alternation. One of multiple texts must be used (e.g. “text2”)=• Senkrechtstrich (z.B. „Text1 | Text2 | Text3“): Alternativen. Eines von mehreren Texten muss benutzt werden +• Parenthesis: (e.g. “(word1 word2) | word3”): Groups multiple words together, used for alternations=• Klammern (z.B. „(Wort1 Wort2) | Wort3“): Gruppiert mehrere Wörter zusammen, für die Alternativen benutzt +• Everything else is to be read as literal text=• Alles andere muss als wortwörtlicher Text gelesen werden +Here are some examples to illustrate the command syntax:=Ein paar Beispiele, um die Befehlssyntax zu erläutern: +• /mods: No parameters. Just enter “/mods”=• /mods: Keine Parameter. Geben Sie einfach „/mods“ ein +• /me : 1 parameter. You have to enter “/me ” followed by any text, e.g. “/me orders pizza”=• /me : 1 Parameter. Sie müssen „/me “ gefolgt von einem beliebigen Text eingeben, z.B. „/me bestellt Pizza“ +• /give : Two parameters. Example: “/give Player default:apple”=• /give : Zwei Parameter. Beispiel: „/give Spieler default:apple“ +• /help [all|privs|]: Valid inputs are “/help”, “/help all”, “/help privs”, or “/help ” followed by a command name, like “/help time”=• /help [all|privs|]: Gültige Eingaben sind „/help“, „/help all“, „/help privs“ oder „/help “ gefolgt von einem Befehlsnamen, wie „/help time“ +• /spawnentity [,,]: Valid inputs include “/spawnentity boats:boat” and “/spawnentity boats:boat 0,0,0”=• /spawnentity [,,]: Gültige Eingaben beeinhalten „/spawnentity boats:boat“ und „/spawnentity boats:boat 0,0,0“ +Some final remarks:=Ein paar letzte Anmerkungen: +• For /give and /giveme, you need an itemstring. This is an internally used unique item identifier which you may find in the item help if you have the “give” or “debug” privilege=• Für /give und /giveme brauchen Sie einen sog. Itemstring. Das ist ein intern benutzter eindeutiger Gegenstandsidentifikator, den Sie in der Gegenstandshilfe finden, wenn Sie das „give“ oder „debug“-Privileg haben +• For /spawnentity you need an entity name, which is another identifier=• Für /spawnentity brauchen Sie einen Entity-Namen, was ein anderer Identifikator ist +Privileges=Privilegien +Each player has a set of privileges, which differs from server to server. Your privileges determine what you can and can't do. Privileges can be granted and revoked from other players by any player who has the privilege called “privs”.=Jeder Spieler hat eine Menge an Privilegien, die sich von Server zu Server unterscheiden. Ihre Privilegien bestimmen, was Sie tun können und was nicht. Privilegien können von anderen Spielern gewährt und entzogen werden, wenn diese das Privileg namens „privs“ haben. +On a multiplayer server with the default configuration, new players start with the privileges called “interact” and “shout”. The “interact” privilege is required for the most basic gameplay actions such as building, mining, using, etc. The “shout” privilege allows to chat.=In Mehrspielerservern mit der Standardeinstellung starten Spieler mit den Privilegien „interact“ und „shout“. Das „interact“-Privileg wird für die grundlegendsten Spielaktionen so wie Bauen, Abbauen, Benutzen, usw. gebraucht. Das „shout“-Privileg braucht man zum Chatten. +There is a small set of core privileges which you'll find on every server, other privileges might be added by mods.=Es gibt eine kleine Menge an Hauptprivilegien, die Sie auf jeden Server finden, andere Privilegien können von Mods hinzugefügt werden. +To view your own privileges, issue the server command “/privs”.=Um Ihre eigenen Privilegien zu sehen, erteilen Sie den Serverbefehl „/privs“. +Here are a few basic privilege-related commands:=Hier sind ein paar Befehle zum Thema Privilegien: +• /privs: Lists your privileges=• /privs: Listet Ihre Privilegien auf +• /privs : Lists the privileges of =• /privs : Listet die Privilegien von auf +• /help privs: Shows a list and description about all privileges=• /help privs: Zeigt eine Liste und Beschreibung für alle Privilegien an +Players with the “privs” privilege can modify privileges at will:=Spieler mit dem Privileg „privs“ können Privilegien beliebig ändern: +• /grant : Grant to =• /grant : an gewähren +• /revoke : Revoke from =• /revoke : von entziehen +In single-player mode, you can use “/grantme all” to unlock all abilities.=Im Einzelspielermodus können Sie „/grantme all“ benutzen, um alle Fähigkeiten freizuschalten. +Light=Licht +As the world is entirely block-based, so is the light in the world. Each block has its own brightness. The brightness of a block is expressed in a “light level” which ranges from 0 (total darkness) to 15 (as bright as the sun).=Da die Welt völlig auf Blöcken basiert, gilt dies auch für das Licht in der Welt. Jeder Block hat seine eigene Helligkeit. Die Helligkeit eines Blocks wird als „Helligkeitsstufe“ angegeben, die von 0 (völlig dunkel) bis 15 (so hell wie die Sonne) reicht. +There are two types of light: Sunlight and artificial light.=Es gibt zwei Lichttypen: Sonnenlicht und künstliches Licht. +Artificial light is emitted by luminous blocks. Artificial light has a light level from 1-14.=Künstliches List kommt von leuchtenden Blöcken. Künstliches Licht hat eine Helligkeit zwischen 1-14. +Sunlight is the brightest light and always goes perfectly straight down from the sky at each time of the day. At night, the sunlight will become moonlight instead, which still provides a small amount of light. The light level of sunlight is 15.=Sonnenlicht ist das hellste Licht und geht immer von oben vom Himmel schnurgerade nach unten zu jeder Tageszeit. In der Nacht wird aus Sonnenlicht Mondlicht, welches immer noch etwas Licht spendet. +Blocks have 3 levels of transparency:=Blöcke haben 3 Stufen der Transparenz: +• Transparent: Sunlight goes through limitless, artificial light goes through with losses=• Transparent: Sonnenlicht geht unbegrenzt hindurch, künstliches Licht geht mit Verlusten hindurch +• Semi-transparent: Sunlight and artificial light go through with losses=• Halbtransparent: Sonnenlicht und künstliches Licht gehen mit Verlusten durch +• Opaque: No light passes through=• Lichtundurchlässig: Licht kann nicht passieren +Artificial light will lose one level of brightness for each transparent or semi-transparent block it passes through, until only darkness remains (image 1).=Künstliches Licht wird eine Helligkeitsstufe für jeden transparenten oder halbtransparenten Block, den es passiert, einbüßen, bis es völlig verdunkelt ist (Bild 1). +Sunlight will preserve its brightness as long it only passes fully transparent blocks. When it passes through a semi-transparent block, it turns to artificial light. Image 2 shows the difference.=Sonnenlicht wird seine Helligkeit behalten, solange sie nur volltransparente Blöcke passiert. Sobald sie einen halbtransparenten Block passiert, wird es zu künstlichem Licht. Bild 2 zeigt den Unterschied. +Note that “transparency” here only means that the block is able to carry brightness from its neighboring blocks. It is possible for a block to be transparent to light but you can't see trough the other side.=Beachten Sie, dass das Wort „Transparenz“ hier nur bedeutet, dass der Block fähig ist, Helligkeit von seinen Nachbarblöcken weiterzugeben. Es ist möglich, dass ein Block transparent gegenüber Licht ist, aber Sie können nicht durch ihn sehen. +Coordinates=Koordinaten +The Minetest world is a large cube. And because of this, a position in the world can be easily expressed with Cartesian coordinates. That is, for each position in the world, there are 3 values X, Y and Z.=Die Minetest-Welt ist ein großer Würfel. Und daher kann eine Position in der Welt leicht mit kartesischen Koordinaten ausgedrückt weren. Das bedeutet, für jede Position in der Welt gibt es 3 Werte X, Y und Z. +Like this: (5, 45, -12)=So wie dies: (5, 45, -12) +This refers to the position where X@=5, Y@=45 and Z@=-12. The 3 letters are called “axes”: Y is for the height. X and Z are for the horizontal position.=Das bezieht sich auf die Position, in der X@=5, Y@=45 und Z@=-12 sind. Die drei Buchstaben nennt man „Achsen“. Y ist für die Höhe X und Z sind für die horizontale Position. +The values for X, Y and Z work like this:=Die Werte für X, Y und Z funktionieren so: +• If you go up, Y increases=• Wenn Sie aufsteigen, erhöht sich Y +• If you go down, Y decreases=• Steigen Sie ab, verringert sich Y +• If you follow the sun, X increases=• Folgen Sie der Sonne, erhöht sich X +• If you go to the reverse direction, X decreases=• Gehen Sie in die entgegengesetzte Richtung, verringert sich X +• Follow the sun, then go right: Z increases=• Folgen Sie der Sonne, dann gehen Sie nach rechts: Z erhöht sich +• Follow the sun, then go left: Z decreases=• Folgen Sie der Sonne, dann gehen Sie nach links: Z verringert sich +• The side length of a full cube is 1=• Die Seitenlänge eines ganzen Würfels ist 1 +You can view your current position in the debug screen (open with [F5]).=Sie sehen Ihre aktuelle Position im Debug-Bildschirm (mit [F5] öffnen). +Items have several properties, including the following:=Gegenstände haben diverse Eigenschaften, unter anderem: +• Maximum stack size: Number of items which fit on 1 item stack=• Maximale Stapelgröße: Anzahl der Gegenstände, die in einen Gegenstandsstapel passen +• Pointing range: How close things must be to be pointed while wielding this item=• Zeigereichweite: Wie nah Dinge zum Zeigen sein müssen, wenn dieser Gegenstand gehalten wird +• Group memberships: See “Basics > Groups”=• Gruppenmitgliedschaften: Siehe „Grundlagen > Gruppen“ +• May be used for crafting or cooking=• Kann zum Fertigen oder beim Kochen benutzt werden +There are multiple types of crafting recipes:=Es gibt mehrere Arten von Fertigungsrezepten: +• Shaped (image 2): Items need to be placed in a particular shape=• Förmig (Bild 2): Gegenstände müssen in einer bestimmten Form platziert werden +• Shapeless (images 3 and 4): Items need to be placed somewhere in input (both images show the same recipe)=• Formlos (Bilder 3 und 4): Gegenstände müssen irgendwo in der Eingabe platziert werden (beide Bilder zeigen das gleiche Rezept) +• Cooking: Explained in “Basics > Cooking”=• Kochen: Siehe „Grundlagen > Kochen“ +• Repairing (image 5): Place two damaged tools into the crafting grid anywhere to get a tool which is repaired by a certain percentage. This recipe may not be available in all games=• Reparieren (Bild 5): Platzieren sie zwei gleiche beschädigte Werkzeuge in das Fertigungsgitter, um ein Werkzeug zu erhalten, das zu einem bestimmten Prozentsatz repariert ist. Dieses Rezept ist nicht in allen Spielen vorhanden +Minetest has 3 different views which determine the way you see the world. The modes are:=Minetest hat 3 verschiedene Ansichten, die bestimmen, wie Sie die Welt sehen. Die Modi sind: +• 1: First-person view (default)=• 1: Erste Person (Standard) +• 2: Third-person view from behind=• 2: Dritte Person von hinten +• 3: Third-person view from the front=• 3: Dritte Person von vorne +Players can take damage for a variety of reasons, here are some:=Spieler können aus verschidenen Gründen Schaden erleiden, hier sind ein paar: +• Taking fall damage=• Fallschaden +• Touching a block which causes direct damage=• Einen Block berühren, der Direktschaden anrichtet +• Drowning=• Ertrinken +• Being attacked by another player=• Angriff eines anderen Spielers +• Being attacked by a computer enemy=• Angriff eines Computergegners +Renewable liquids create new liquid sources at open spaces (image 2). A new liquid source is created when:=Erneuerbare Flüssigkeiten erschaffen neue Flüssigkeitsquellen in Freiräumen (Bild 2). Eine neue Flüssigkeitsquelle wird erschaffen, wenn: +• Two renewable liquid blocks of the same type touch each other diagonally=• Zwei gleiche erneuerbare Flüssigkeitsblöcke sich diagonal berühren +• These blocks are also on the same height=• Diese Blöcke sich auch in der gleichen Höhe befinden +• One of the two “corners” is open space which allows liquids to flow in=• Eines der zwei „Ecken“ ein Freiraum ist, in den Flüssigkeiten hereinfließen können +You can enable some special movement modes that change how you move.=Sie können in paar besondere Bewegungsmodi einschalten, die ändern, wie Sie sich bewegen. +Pitch movement mode:=Nick-Bewegungsmodus: +• Description: If this mode is activated, the movement keys will move you relative to your current view pitch (vertical look angle) when you're in a liquid or in fly mode.=• Wenn dieser Modus aktiviert ist, werden die Bewegungstasten Sie relativ zu Ihrem jetzigen Nickwinkel (vertikaler Blickwinkel) bewegen, wenn Sie sich in einer Flüssigkeit befinden oder der Flugmodus aktiv ist. +• Default key: [L]=• Standardtaste: [L] +• No privilege required=• Kein Privileg nötig diff --git a/mods/HELP/mcl_doc_basics/locale/mcl_doc_basics.it.tr b/mods/HELP/mcl_doc_basics/locale/mcl_doc_basics.it.tr new file mode 100644 index 00000000..694735ca --- /dev/null +++ b/mods/HELP/mcl_doc_basics/locale/mcl_doc_basics.it.tr @@ -0,0 +1,408 @@ +# textdomain: mcl_doc_basics +Basics=Nozioni di base +Everything you need to know about Minetest to get started with playing=Tutto ciò che vi serve sapere riguardo a Minetest per cominciare a giocare +Advanced usage=Utilizzo avanzato +Advanced information about Minetest which may be nice to know, but is not crucial to gameplay=Informazioni avanzate riguardo a Minetest che possono essere utili da conoscere, ma non sono cruciali per l'esperienza di gioco +Quick start=Partenza rapida +This is a very brief introduction to the basic gameplay:=Questa è una introduzione molto rapida all'esperienza di gioco di base +• Move mouse to look=• Spostare il mouse per guardare attorno +• [W], [A], [S] and [D] to move=• [W], [A], [S] e [D] per muoversi +• [Space] to jump or move upwards=• [Spazio] per saltare o muoversi in su +• [Shift] to sneak or move downwards=• [Maiusc] per strisciare o muoversi in giù +• Mouse wheel or [0]-[9] to select item=• Rotella del mouse o [0]-[9] per scegliere un oggetto +• Left-click to mine blocks or attack=• Click sinistro per scavare i blocchi o attaccare +• Recover from swings to deal full damage=• Riprendersi dall'oscillazione per infliggere un danno completo +• Right-click to build blocks and use things=• Click destro per costruire blocchi e usare gli oggetti +• [I] for the inventory=• [I] per aprire l'inventario +• First items in inventory appear in hotbar below=• I primi oggetti nell'inventario compaiono nella barra di uso frequente sottostante +• [F9] for the minimap=• [F9] per attivare la minimappa +• Put items into crafting grid (usually 3×3 grid) to craft=• Mettete gli oggetti nella griglia di assemblaggio (normalmente una griglia 3x3) per assemblare +• Use a crafting guide mod to learn crafting recipes or visit =• Usate una gruida di assemblaggio per imparare le ricette di assemblaggio o visitate +• Read entries in this help to learn the rest=• Leggete le voci in questa guida per imparare il resto +• [Esc] to close this window=• [Esc] per chiudere questa finestra +Minetest=Minetest +Minetest is a free software game engine for games based on voxel gameplay, inspired by InfiniMiner, Minecraft, and the like. Minetest was originally created by Perttu Ahola (alias “celeron55”).=Minetest è un programma gratuito che funge da motore di gioco per giochi basati sull'esperienza di gioco coi voxel, ispirato da InfiniMiner, Minecraft, e simili. Minetest in origine è stato creato da Perttu Ahola (cioè “celeron55”). +The player is thrown into a huge world made out of cubes or blocks. These cubes usually make the landscape they blocks can be removed and placed almost entirely freely. Using the collected items, new tools and other items can be crafted. Games in Minetest (also called “subgames”) can, however, be much more complex than this.=L'utente è gettat* in un enorme mondo fatto di cubi o blocchi. Questi cubi normalmente compongono il panorama e possono essere tolti o messi quasi completamente liberamente. Usando gli oggetti raccolti, si possono assemblare nuovi strumenti e altri oggetti. I giochi in Minetest (chiamati anche "subgame") possono, comunque, essere molto più complessi. +A core feature of Minetest is the built-in modding capability. Mods modify existing gameplay. They can be as simple as adding a few decorational blocks or be very complex by e.g. introducing completely new gameplay concepts, generating a completely different kind of world, and many other things.=Una caratteristica centrale di Minetest è la capacità integrata di usare moduli. I moduli modificano l'esperienza di gioco esistente. Possono essere tanto semplici da aggiungere qualche blocco decorativo o essere molto complessi, per esempio introducendo concetti di gioco totalmente nuovi, generare un tipo di mondo completamente diverso, e molte altre cose. +Minetest can be played alone or online together with multiple players. Online play will work out of the box with any mods, with no need for additional software as they are entirely provided by the server.=Minetest può essere giocato localmente o in rete assieme a più utenti. Il gioco in rete funzionerà immediatamente senza nessun modulo, senza bisogno di programmi aggiuntivi perché interamente forniti dal server. +Minetest is usually bundled with a simple default game, named “Minetest Game” (shown in images 1 and 2). You probably already have it. Other games for Minetest can be downloaded from the official Minetest forums .=Minetest generalmente include un gioco predefinito semplice, chiamato "Minetest Game" (mostrato nelle immagini 1 e 2). Probabilmente lo avete già. Altri giochi per Minetest possono essere scaricati dai forum ufficiali di Minetest . +Sneaking=Strisciare +Sneaking makes you walk slower and prevents you from falling off the edge of a block.=Strisciare vi fa camminare più lentamente e vi impedisce di cadere dal bordo di un blocco. +To sneak, hold down the sneak key (default: [Shift]). When you release it, you stop sneaking. Careful: When you release the sneak key at a ledge, you might fall!=Per strisciare, tenete premuto il tasto per strisciare (predefinito [Maiusc]). Quando lo rilasciate, smettete di strisciare. Fate attenzione: quando rilasciate il tasto per strisciare vicino a un orlo, potreste cadere! +• Sneak: [Shift]=• Strisciare: [Maiusc] +Sneaking only works when you stand on solid ground, are not in a liquid and don't climb.=È possibile strisciare solo quando siete su un terreno solido, non siete in un liquido e non vi state arrampicando. +Sneaking might be disabled by mods. In this case, you still walk slower by sneaking, but you will no longer be stopped at ledges.=Lo strisciare potrebbe essere disabilitato da dei moduli. In questo caso, strisciando camminerete comunque più lentamente, ma non verrete più fermat* agli orli. +Controls=Controlli +These are the default controls:=Questi sono i controlli predefiniti: +Basic movement:=Movimento di base: +• Moving the mouse around: Look around=• Spostando il mouse in giro: guardarsi attorno +• W: Move forwards=• W: fa avanzare +• A: Move to the left=• A: sposta a sinistra +• D: Move to the right=• D: sposta a destra +• S: Move backwards=• S: fa indietreggiare +While standing on solid ground:=Stando su di un terreno solido: +• Space: Jump=• Spazio: saltare +• Shift: Sneak=• Maiusc: strisciare +While on a ladder, swimming in a liquid or fly mode is active=Stando su di una scala a pioli, nuotando in un liquido o mentre è attiva la modalità di volo +• Space: Move up=• Spazio: fa salire +• Shift: Move down=• Maiusc: fa scendere +Extended movement (requires privileges):=Movimento esteso (richiede privilegi): +• J: Toggle fast mode, makes you run or fly fast (requires “fast” privilege)=• J: Attiva o disattiva la modalità veloce, vi fa correre o volare velocemente (richiede il privilegio “fast”) +• K: Toggle fly mode, makes you move freely in all directions (requires “fly” privilege)=• K: Attiva o disattiva la modalità di volo, vi fa muovere liberamente in tutte le direzioni (richiede il privilegio “fly”) +• H: Toggle noclip mode, makes you go through walls in fly mode (requires “noclip” privilege)=• H: Attiva o disattiva la modalità incorporea, in modalità volo vi fa passare attraverso i muri (richiede il privilegio “noclip”) +• E: Walk fast in fast mode=• E: Camminare velocemente in modalità veloce +World interaction:=Interazione col mondo: +• Left mouse button: Punch / mine blocks / take items=• Pulsante sinistro del mouse: colpire / scavare blocchi / prendere oggetti +• Right mouse button: Build or use pointed block=• Pulsante destro del mouse: costruire o usare il blocco puntato +• Shift+Right mouse button: Build=• Maiusc + pulsante destro del mouse: costruire +• Roll mouse wheel: Select next/previous item in hotbar=• Ruotare la rotella del mouse: selezionare il prossimo/precedente oggetto nella barra di uso frequente +• 0-9: Select item in hotbar directly=• 0-9: selezionare direttamente un oggetto nella barra di uso frequente +• Q: Drop item stack=• Q: lasciare una pila di oggetti +• Shift+Q: Drop 1 item=• Maiusc + Q: lasciare un oggetto +• I: Show/hide inventory menu=• I: mostrare/nascondere il menu dell'inventario +Inventory interaction:=Interazione con l'inventario: +See the entry “Basics > Inventory”.=Si veda la voce “Nozioni di base > Inventario” +Camera:=Telecamera: +• Z: Zoom (requires “zoom” privilege)=• Z: ingrandimento (richiede il privilegio “zoom”) +• F7: Toggle camera mode=• F7: cambiare la modalità della telecamera +• F8: Toggle cinematic mode=• F8: attiva/disattiva la modalità cinematic +Interface:=Interfaccia: +• Esc: Open menu window (pauses in single-player mode) or close window=• Esc: apre la finestra del menu (in modalità gioco locale mette in pausa) o chiude la finestra +• F1: Show/hide HUD=• F1: mostra/nasconde il visore +• F2: Show/hide chat=• F2: mostra/nasconde la messaggistica +• F9: Toggle minimap=• F9: attiva o disattiva la minimappa +• Shift+F9: Toggle minimap rotation mode=• Maiusc + F9: cambia la modalità di rotazione della minimappa +• F10: Open/close console/chat log=• F10: apre/chiude il registro della console/messaggistica +• F12: Take a screenshot=• F12: scatta un'istantanea +Server interaction:=Interazione col server +• T: Open chat window (chat requires the “shout” privilege)=• T: apre la finestra di messaggistica (la messaggistica richiede il privilegio “shout”) +• /: Start issuing a server command)=• /: precede l'invio di un comando al server +Technical:=Tecnici: +• R: Toggle far view (disables all fog and allows viewing far away, can make game very slow)=• R: attiva/disattiva la vista lontana (disabilita la nebbia e permette di vedere distante, può rendere il gioco molto lento) +• +: Increase minimal viewing distance=• +: aumenta la distanza visiva minima +• -: Decrease minimal viewing distance=• -: diminuisce la distanza visiva minima +• F3: Enable/disable fog=• F3: abilita/disabilita la nebbia +• F5: Enable/disable debug screen which also shows your coordinates=• F5: abilita/disabilita la schermata di debug che mostra anche le vostre coordinate +• F6: Only useful for developers. Enables/disables profiler=• F6: utile solo per sviluppatori/trici. Abilita/disabilita il generatore di profili +Players=Utenti +Players (actually: “player characters”) are the characters which users control.=Gli utenti (in realtà: “personaggi utente”) sono i personaggi controllati dagli/dalle utenti. +Players are living beings which occupy a space of about 1×2×1 cubes. They start with 20 health points (HP) and 10 breath points (BP).=Gli/le utenti sono entità viventi che occupano uno spazio di circa 1x2x1 cubi. Iniziano con venti punti salute (PS) e dieci punti ossigeno (PO). +Players are capable of walking, sneaking, jumping, climbing, swimming, diving, mining, building, fighting and using tools and blocks.=Gli/le utenti sono in grado di camminare, strisciare, saltare, arrampicarsi, nuotare, immergersi, scavare, costruire, combattere e di usare strumenti e blocchi. +Players can take damage for a variety of reasons, here are some:\n• Taking fall damage\n• Touching a block which causes direct damage\n• Drowning\n• Being attacked by another player\n• Being attacked by a computer enemy=Gli/le utenti possono ferirsi per una serie di motivi, eccone alcune:\n• Cadendo\n• Toccando un blocco che danneggia\n• Affogando\n• Vendendo attaccat* da un* altr* utente\n• Vendendo attaccat* da un* nemic* controllato dal computer +At a health of 0, the player dies. The player can just respawn in the world.=A salute pari a 0, il/la utente muore. Il/la utente può solo ricomparire nel mondo. +Other consequences of death depend on the subgame. The player could lose all items, or lose the round in a competitive game.=Altre conseguenze della morte dipendono dal gioco. Il/la utente potrebbe perdere tutti gli oggetti, o perdere il turno in un gioco di competizione. +Some blocks reduce breath. While being with the head in a block which causes drowning, the breath points are reduced by 1 for every 2 seconds. When all breath is gone, the player starts to suffer drowning damage. Breath is quickly restored in any other block.=Alcuni blocchi riducono l'ossigeno. Stando con la testa in un blocco che causa l'annegamento, i punti ossigeno vengono ridotti di uno ogni due secondi. Quando tutto l'ossigeno è finito, il/la utente inizia a subire il ferimento da annegamento. L'ossigeno viene ripristinato rapidamente in ogni altro blocco. +Damage can be disabled on any world. Without damage, players are immortal and health and breath are unimportant.=Il ferimento può essere disabilitato in qualunque mondo. Senza ferimento, gli/le utenti sono immortali, e salute e ossigeno non hanno importanza. +In multi-player mode, the name of other players is written above their head.=Durante il gioco in rete, il nome degli/delle altr* giocatori/trici è scritto sopra la loro testa. +Items=Oggetti +Items are things you can carry along and store in inventories. They can be used for crafting, smelting, building, mining, and more. Types of items include blocks, tools, weapons and items only used for crafting.=Gli oggetti sono cose che potete trasportare e immagazzinare negli inventari. Possono essere usati per assemblare, fondere, costruire, scavare, e altro. Tipologie di oggetti includono blocchi, strumenti, armi, e oggetti usati solo per l'assemblaggio. +An item stack is a collection of items of the same type which fits into a single item slot. Item stacks can be dropped on the ground. Items which drop into the same coordinates will form an item stack.=Una pila di oggetti è una raccolta di oggetti dello stesso tipo che sta in un unico scomparto per oggetti. Le pile di oggetti possono essere lasciate a terra. Gli oggetti che si lasciano alle stesse coordinate formeranno una pila di oggetti. +Items have several properties, including the following:\n\n• Maximum stack size: Number of items which fit on 1 item stack\n• Pointing range: How close things must be to be pointed while wielding this item\n• Group memberships: See “Basics > Groups”\n• May be used for crafting or cooking=Gli oggetti possiedono diverse proprietà, incluse le seguenti:\n\n• Dimensione massima della pila: il numero di oggetti che stanno in una pila di oggetti\n• Raggio di puntamento: quanto vicino devono essere le cose per essere puntate mentre si impugna questo oggetto\n• Appartenenza a gruppi: si veda “Nozioni di base > Gruppi”\n• Possono essere usati per assemblare o cucinare +A dropped item stack can be collected by punching it.=Una pila di oggetti lasciata a terra può essere raccolta colpendola. +Tools=Strumenti +Some items may serve as a tool when wielded. Any item which has some special use which can be directly used by its wielder is considered a tool.=Alcuni oggetti possono servire come strumento quando vengono impugnati. Ogni oggetto che possiede qualche uso speciale che può essere utilizzato da chi lo impugna è considerato uno strumento. +A common tool in Minetest are, of course, mining tools. These are important to break all kinds of blocks. Weapons are a kind of tool in Minetest. There are of course many other possible tools. Special actions of tools are usually done by left-click or right-click.=Uno strumento comune in Minetest sono, naturalmente, gli strumenti di scavo. Questi sono importanti per rompere tutti i tipi di blocchi. In Minetest le armi in sono un tipo di strumento. Certamente ci sono molti altri strumenti possibili. Le azioni speciali degli oggetti di solito sono eseguite cliccando il pulsante sinistro o destro. +When nothing is wielded, players use their hand which may act as tool and weapon. The hand is capable of collecting dropped items by punching.=Quando non si impugna nulla, gli/le utenti usano la loro mano che può fungere come strumento e arma. La mano può raccogliere gli oggetti lasciati a terra colpendoli. +Many tools will wear off when using them and may eventually get destroyed. The damage is displayed in a damage bar below the tool icon. If no damage bar is shown, the tool is in mint condition. Tools may be repairable by crafting, see “Basics > Crafting”.=Molti strumenti si consumeranno usandoli e alla fine potrebbero rompersi. L'usura è mostrata in una barra sotto all'icona dello strumento. Se non è mostrata nessuna barra di usura, lo strumento è nuovo di zecca. Gli strumenti potrebbero essere riparabili tramite l'assemblaggio, si veda “Nozioni di base > Assemblaggio”. +Weapons=Armi +Some items are usable as a melee weapon when wielded. Weapons share most of the properties of tools.=Alcuni oggetti sono utilizzabili come armi bianche quando sono impugnati. Le armi condividono la maggior parte delle proprietà degli strumenti. +Melee weapons deal damage by punching players and other animate objects. There are two ways to attack:=Le armi bianche infliggono ferite colpendo i/le utenti e gli altri oggetti animati. Ci sono due modi per attaccare: +• Single punch: Left-click once to deal a single punch=• Colpo singolo: cliccate una volta il pulsante sinistro per sferrare un colpo singolo +• Quick punching: Hold down the left mouse button to deal quick repeated punches=• Colpo rapido: tenete premuto il pulsante sinistro del mouse per sferrare colpi rapidi ripetuti +There are two core attributes of melee weapons:=Esistono due attributi principali delle armi bianche: +• Maximum damage: Damage which is dealt after a hit when the weapon was fully recovered)=• Danno massimo: il ferimento inferto dopo un colpo quando l'arma è stata ritratta completamente +• Full punch interval: Time it takes for fully recovering from a punch=• Intervallo di colpo completo: il tempo richiesto per ritrarre completamente da un colpo +A weapon only deals full damage when it has fully recovered from a previous punch. Otherwise, the weapon will deal only reduced damage. This means, quick punching is very fast, but also deals rather low damage. Note the full punch interval does not limit how fast you can attack.=Un'arma infligge una ferita completa solo quando è stata ritratta completamente dal colpo precedente. Altrimenti, l'arma infliggerà solo un ferimento ridotto. Ciò significa, colpire rapidamente è molto veloce, però infligge ferite piuttosto basse. Si noti che l'intervallo di colpo completo non limita la vostra velocità di attacco. +There is a rule which sometimes makes attacks impossible: Players, animate objects and weapons belong to damage groups. A weapon only deals damage to those who share at least one damage group with it. So if you're using the wrong weapon, you might not deal any damage at all.=C'è una regola che a volte rende impossibili gli attacchi: utenti, oggetti animati e armi appartengono a gruppi di ferimento. Un'arma infligge ferite a quell* che condividono con essa almeno un gruppo di ferimento. Perciò se state usando l'arma sbagliata, potreste non infliggere ferite affatto. +Pointing=Puntare +“Pointing” means looking at something in range with the crosshair. Pointing is needed for interaction, like mining, punching, using, etc. Pointable things include blocks, dropped items, players, computer enemies and objects.=“Puntare” significa guardare qualcosa entro il raggio del mirino. Puntare è necessario per l'interazione, come scavare, colpire, usare, ecc. Le cose puntabili includono blocchi, oggetti lasciati a terra, utenti, nemic* controllat* dal computer e oggetti. +To point something, it must be in the pointing range (also just called “range”) of your wielded item. There's a default range when you are not wielding anything. A pointed thing will be outlined or highlighted (depending on your settings). Pointing is not possible with the 3rd person front camera.=Per puntare qualcosa, deve essere nel raggio di puntamento (chiamato anche solo “raggio”) del vostro oggetto impugnato. +A few things can not be pointed. Most blocks are pointable. A few blocks, like air, can never be pointed. Other blocks, like liquids can only be pointed by special items.=Un po' di cose non possono essere puntate. La maggior parte dei blocchi sono puntabili. Pochi blocchi, come l'aria, non possono mai essere puntati. Altri blocchi, come i liquidi, possono essere puntati solo da oggetti speciali. +Camera=Telecamera +Minetest has 3 different views which determine the way you see the world. The modes are:\n\n• 1: First-person view (default)\n• 2: Third-person view from behind\n• 3: Third-person view from the front=Minetest possiede tre visuali diverse che stabiliscono il modo in cui vedete il mondo. Le modalità sono:\n\n• 1: Visuale in prima persona (predefinita)\n• 2: Visuale in terza persona da dietro\n• 3: Visuale in terza persona da davanti +You can change the camera mode by pressing [F7].=Potete cambiare la modalità della telecamera premendo [F7]. +By holding down [Z], you can zoom the view at your crosshair. You need the “zoom” privilege to do this.=Tenendo premuto il tasto [Z], potete ingrandire la visuale del vostro mirino. Per fare ciò vi serve il privilegio “zoom”. +• Switch camera mode: [F7]=• Cambiare modalità della telecamera: [F7] +• Zoom: [Z]=• Ingrandimento: [Z] +Blocks=Blocchi +The world of Minetest is made entirely out of blocks (voxels, to be precise). Blocks can be added or removed with the correct tools.=Il mondo di Minetest è fatto interamente di blocchi (voxel, per la precisione). I blocchi possono essere messi o tolti per mezzo degli strumenti adatti. +Blocks can have a wide range of different properties which determine mining times, behavior, looks, shape, and much more. Their properties include:=I blocchi possono avere un ampio spettro di proprietà differenti che stabiliscono tempi di scavo, comportamento, aspetto, forma e molto altro. Le loro proprietà includono: +• Collidable: Collidable blocks can not be passed through; players can walk on them. Non-collidable blocks can be passed through freely=• Urtabile: non si può passare attraverso i blocchi urtabili; gli/le utenti possono camminare su di essi. I blocchi non urtabili possono essere attraversati liberamente +• Pointable: Pointable blocks show a wireframe or a halo box when pointed. But you will just point through non-pointable blocks. Liquids are usually non-pointable but they can be pointed at by some special tools=• Puntabile: i blocchi puntabili mostrano una cornice o una scatola luminescente quando vengono puntati. Ma nel caso di blocchi non puntabili potrete solo puntare attraverso di essi. I liquidi normalmente non sono puntabili, ma possono essere puntati da alcuni strumenti speciali. +• Mining properties: By which tools it can be mined, how fast and how much it wears off tools=• Proprietà di scavo: tramite quali strumenti possono essere scavati, quanto velocemente e quanto usurano gli strumenti +• Climbable: While you are at a climbable block, you won't fall and you can move up and down with the jump and sneak keys=• Scalabile: mentre siete su di un blocco scalabile, non cadrete e potrete muovervi su e giù con i tasti di salto e strisciamento +• Drowning damage: See the entry “Basics > Player”=• Ferimento da annegamento: si veda la voce “Nozioni di base > Utenti” +• Liquids: See the entry “Basics > Liquids”=• Liquidi: si veda la voce “Nozioni di base > Liquidi” +• Group memberships: Group memberships are used to determine mining properties, crafting, interactions between blocks and more=• Appartenenze a gruppi: le appartenenze ai gruppi sono usate per stabilire le proprietà di scavo, assemblaggio, l'interazione tra blocchi e altro +Mining=Scavo +Mining (or digging) is the process of breaking blocks to remove them. To mine a block, point it and hold down the left mouse button until it breaks.=Scavare (o minare) è il processo di rompere i blocchi per toglierli. Per scavare un blocco, puntatelo e tenete premuto il pulsante sinistro del mouse finché si rompe. +Short explanation:=Spiegazione breve: +Blocks require a mining tool to be mined. Different blocks are mined by different mining tools, and some blocks can not be mined by any tool. Blocks vary in toughness and tools vary in strength. Mining tools will wear off over time. The mining time and the tool wear depend on the block and the mining tool. The fastest way to find out how efficient your mining tools are is by just trying them out on various blocks. Any items you gather by mining go straight into your inventory.=Per scavare un blocco servono degli strumenti di scavo. Blocchi differenti si scavano con strumenti di scavo diversi, e alcuni blocchi non possono essere scavati da nessuno strumento. I blocchi variano in durezza e gli strumenti variano in forza. Gli strumenti di scavo si usurano nel tempo. Il tempo di scavo e l'usura dello strumento dipendono dal blocco e dallo strumento di scavo. Il modo più veloce di scoprire quanto sono efficienti i vostri strumenti di scavo è quello di provarli su diversi blocchi. Ogni oggetto che ottenete scavando va direttamente nel vostro inventario. +Detailed explanation:=Spiegazione dettagliata: +Mineable blocks have mining properties (based on groups) and a toughness level. Mining tools have the same properties. Each mining property of a block also has a rating, while tools can be able to break blocks within a range of ratings.=I blocchi scavabili possiedono proprietà di scavo (basate sui gruppi) e un livello di durezza. Gli strumenti di scavo possiedono le stesse proprietà. Ogni proprietà di scavo di un blocco ha anche un grado, mentre gli strumenti possono rompere blocchi all'interno di una scala di gradi. +In order to mine a block, these conditions need to be met:=Per scavare un blocco, è necessario soddisfare queste condizioni: +• The block and tool share at least one mining property for which they have a matching rating=• Il blocco e lo strumento condividono almeno una proprietà di scavo per la quale possiedono un grado corrispondente +• The tool's toughness level is equal or less than the block's toughness level=• Il livello di durezza dello strumento è uguale o inferiore alla durezza del blocco +Example: A block with the mining property “cracky”, rating 3 and toughness level 0 can only be broken by a tool which is able to break “cracky” blocks at rating 3 and it must have a toughness level of 0 or larger.=Esempio: un blocco avente la proprietà “cracky”, di grado 3 e un livello di durezza 0 può essere rotto solo da uno strumento che è in grado di rompere blocchi “cracky” di grado 3 e deve avere un livello di durezza pari a 0 o maggiore. +The time it takes to mine a block depends on the ratings and the toughness levels of both tool and block.=Il tempo necessario per scavare un blocco dipende dal grado e dal livello di durezza sia dello strumento che del blocco. +• The base mining time depends on the ratings of the block and the mining speed of the tool=• Il tempo base di scavo dipende dai gradi del blocco e dalla velocità di scavo dello strumento +• The mining speed of the tool differs for each mining property and its rating=• La velocità di scavo dello strumento varia per ogni proprietà di scavo ed il suo grado +• The toughness level further modifies the mining speed for this mining proeprty=• Il livello di durezza modifica ulteriormente la velocità di scavo per questa proprietà di scavo +• A high difference in toughness levels decreases the mining time considerably=• Una elevata differenza in livelli di durezza diminuisce considerevolmente il tempo di scavo +• If the toughness level difference is 2, the mining time is half of the base mining time=• Se la differenza del livello di durezza è pari a 2, il tempo di scavo è la metà del tempo di base di scavo +• If the a difference of 3, the mining time is a third, and so on=• Se la differenza è pari a 3, il tempo di scavo è un terzo, e così via +The item help shows the mining times of a tool listed by its mining properties and its ratings. The mining times are often expressed as a range. The low number stands for the mining time for toughness level 0 and the high number for the highest level the tool can mine.=L'aiuto sull'oggetto mostra i tempi di scavo di uno strumento, elencati dalle sue proprietà di scavo e dai suoi gradi. I tempi di scavo sono spesso espressi come un ventaglio. Il numero basso sta per il tempo di scavo per il livello di durezza 0 e il numero alto sta per il livello massimo che lo strumento può scavare. +Mining usually wears off tools. Each time you mine a block, your tool takes some damage until it is destroyed eventually. The wear per mined block determined by the difference between the tool's toughness level and the block's toughness level. The higher the difference, the lower the wear. This means:=Normalmente scavare usura gli strumenti. Ogni volta che scavate un blocco, il vostro strumento viene danneggiato un po' finché alla fine si rompe. L'usura per ciascun blocco scavato è stabilita dalla differenza tra il livello di durezza dello strumento e quello del blocco. Maggiore è la differenza, minore è l'usura. Ciò significa: +• High-level blocks wear off your tools faster=• Blocchi di alto livello usurano i vostri strumenti più velocemente +• You can use high-level tools to compensate this=• Per compensare ciò potete usare strumenti di alto livello +• The highest wear is caused when the level of both tool and block are equal=• L'usura maggiore è causata quando il livello di strumento e blocco sono uguali +After mining, a block may leave a “drop” behind. This is a number of items you get after mining. Most commonly, you will get the block itself. There are other possibilities for a drop which depends on the block type. The following drops are possible:=Dopo averlo scavato, un blocco potrebbe lasciarsi alle spalle un “rilascio”. Questo è un numero di oggetti che ottenete dopo avere scavato. Più comunemente, otterrete il blocco stesso. Ci sono altre possibilità per un rilascio che dipendono dal tipo di blocco. I rilasci seguenti sono possibili: +• Always drops itself (the usual case)=• Rilascia sempre sé stesso (il caso normale) +• Always drops the same items=• Rilascia sempre gli stessi oggetti +• Drops items based on probability=• Rilascia oggetti in base a probabilità +• Drops nothing=• Non rilascia niente +The drop goes directly into your inventory, unless there's no more space left. In that case, the items literally drop on the floor.=Il rilascio va direttamente nel vostro inventario, a meno che non ci sia più spazio. In quel caso, l'oggetto cade per terra. +Building=Costruzione +Almost all blocks can be built (or placed). Building is very simple and has no delay.=Quasi tutti i blocchi possono essere costruiti (o posizionati). Costruire è molto semplice e non ha ritardo. +To build your wielded block, point at a block in the world and right-click. If this is not possible because the pointed block has a special right-click action, hold down the sneak key before right-clicking.=Per posizionare il blocco che state impugnando, puntate ad un blocco nel mondo e cliccate col pulsante destro. Se ciò non è possibile perché il blocco puntato ha una azione speciale legata al pulsante destro, tenete premuto il tasto per strisciare prima di cliccare col pulsante destro. +Blocks can almost always be built at pointable blocks. One exception are blocks attached to the floor; these can only be built on the floor.=I blocchi possono essere piazzati quasi sempre sui blocchi puntabili. Una eccezione sono i blocchi attaccati al pavimento; questi possono essere costruiti solo sul pavimento. +Normally, blocks are built in front of the pointed side of the pointed block. A few blocks are different: When you try to build at them, they are replaced.=Normalmente, i blocchi vengono posizionati di fronte al lato puntato del blocco puntato. Pochi blocchi sono differenti: quando tentate di costruirci, vengono rimpiazzati. +Liquids=Liquidi +Liquids are special dynamic blocks. Liquids like to spread and flow to their surrounding blocks. Players can swim and drown in them.=I liquidi sono blocchi speciali dinamici. Ai liquidi piace espandersi e fluire verso i blocchi circostanti. Gli/le utenti possono affogarci. +Liquids usually come in two forms: In source form (S) and in flowing form (F).=I liquidi normalmente sono di due tipi: il tipo fonte (S) e il tipo corrente (F). +Liquid sources have the shape of a full cube. A liquid source will generate flowing liquids around it from time to time, and, if the liquid is renewable, it also generates liquid sources. A liquid source can sustain itself. A long it is left alone, a liquid source will normally keep its place and does not drain out.=Le fonti di liquidi hanno la forma di un piccolo cubo. Una fonte di liquidi di tanto in tanto produrrà intorno a sé dei liquidi correnti, e, se il liquido è rinnovabile, produrrà anche fonti di liquidi. Una fonte di liquidi può sostenersi. Finché è lasciata stare, normalmente una fonte di liquidi manterrà il suo posto e non si prosciugherà. +Flowing liquids take a sloped form. Flowing liquids spread around the world until they drain. A flowing liquid can not sustain itself and always comes from a liquid source, either directly or indirectly. Without a liquid source, a flowing liquid will eventually drain out and disappear.=I liquidi correnti assumono una forma inclinata. I liquidi correnti si espandono per il mondo finché si prosciugano. Un liquido corrente non può sostenersi e proviene sempre da una fonte di liquidi, o direttamente o indirettamente. Senza una fonte di liquidi, alla fine un liquido corrente si prosciugherà e sparirà. +All liquids share the following properties:=Tutti i liquidi condividono le proprietà seguenti: +• All properties of blocks (including drowning damage=• Tutte le proprietà dei blocchi (incluso il ferimento da annegamento) +• Renewability: Renewable liquids can create new sources=• Rinnovabilità: i liquidi rinnvabili possono creare nuove fonti +• Flowing range: How many flowing liquids are created at maximum per liquid source, it determines how far the liquid will spread. Possible are ranges from 0 to 8. At 0, no flowing liquids will be created. Image 5 shows a liquid of flowing range 2=• Raggio di flusso: quanti liquidi correnti sono creati al massimo da una fonte di liquidi, stabilisce quanto lontano si espanderà il liquido. Sono possibili raggi da 0 a 8. A 0, non sarà creato nessun liquido corrente. L'immagine 5 mostra un liquido con raggio di flusso pari a 2 +• Viscosity: How slow players move through it and how slow the liquid spreads=• Viscosità: quanto lentamente si muovono gli/le utenti in esso e quanto lentamente si espande il liquido +Renewable liquids create new liquid sources at open spaces (image 2). A new liquid source is created when:\n• Two renewable liquid blocks of the same type touch each other diagonally\n• These blocks are also on the same height\n• One of the two “corners” is open space which allows liquids to flow in=I liquidi rinnovabili generano nuove fonti di liquidi negli spazi aperti (immagine 2). Una nuova fonte di liquidi viene creata quando:\n• Due blocchi di liquidi rinnovabili dello stesso tipo si toccano l'un l'altro diagonalmente\n• Questi blocchi sono anche alla stessa altezza\n• Uno dei due “angoli” è uno spazio aperto che consente ai liquidi di scorrervi dentro +When those criteria are met, the open space is filled with a new liquid source of the same type (image 3).=Quando questi criteri sono soddisfatti, lo spazio aperto viene riempito con una nuova fonte di liquidi dello stesso tipo (immagine 3). +Swimming in a liquid is fairly straightforward: The usual direction keys for basic movement, the jump key for rising and the sneak key for sinking.=Nuotare in un liquido è abbastanza semplice: i soliti tasti direzionali per il movimento di base, il tasto di salto per emergere e il tasto strisciare per immergersi. +The physics for swimming and diving in a liquid are:=Le regole fisiche per nuotare e immergersi in un liquido sono: +• The higher the viscosity, the slower you move=• Maggiore è la viscosità, più lentamente vi muoverete +• If you rest, you'll slowly sink=• Se vi riposate, affonderete lentamente +• There is no fall damage for falling into a liquid as such=• Non c'è nessun ferimento da caduta alla caduta in un liquido in quanto tale +• If you fall into a liquid, you will be slowed down on impact (but don't stop instantly). Your impact depth is determined by your speed and the liquid viscosity. For a safe high drop into a liquid, make sure there is enough liquid above the ground, otherwise you might hit the ground and take fall damage=• Se cadete in un liquido, verrete rallentat* all'impatto (ma non vi fermerete immediatamente). La profondità del vostro impatto è determinata dalla vostra velocità e dalla viscosità del liquido. Per un tuffo sicuro in un liquido da grande altezza, assicuratevi che ci sia abbastanza liquido sopra il terreno, altrimenti potreste colpire il terreno e subire il ferimento da caduta. +Liquids are often not pointable. But some special items are able to point all liquids.=Spesso i liquidi non sono puntabili. Ma alcuni oggetti speciali possono puntare tutti i liquidi. +Crafting=Assemblaggio +Crafting is the task of combining several items to form a new item.=L'assemblaggio è l'azione di combinare diversi oggetti per formarne uno nuovo. +To craft something, you need one or more items, a crafting grid (C) and a crafting recipe. A crafting grid is like a normal inventory which can also be used for crafting. Items need to be put in a certain pattern into the crafting grid. Next to the crafting grid is an output slot (O). Here the result will appear when you placed items correctly. This is just a preview, not the actual item. Crafting grids can come in different sizes which limits the possible recipes you can craft.=Per assemblare qualcosa, vi servono uno o più oggetti, una griglia di assemblaggio (C) e una ricetta di assemblaggio. Una griglia di assemblaggio è come un comune inventario che può anche essere usata per assemblare. Gli oggetti devono essere messi nella griglia di assemblaggio secondo una certa disposizione. Vicino alla griglia di assemblaggio c'è la casella del prodotto (O). Lì comparirà il risultato quando avrete disposto correttamente gli oggetti. Quella è solo un'anteprima, non il vero oggetto. Le griglie di assemblaggio possono essere di varie dimensioni che limitano le possibili ricette che potete assemblare. +To complete the craft, take the result item from the output slot, which will consume items from the crafting grid and creates a new item. It is not possible to place items into the output slot.=Per completare l'assemblaggio, prendete dalla casella del prodotto l'oggetto risultante, così facendo consumerete gli oggetti disposti nella griglia di assemblaggio creando il nuovo oggetto. Non è possibile posizionare oggetti nella casella del prodotto. +A description on how to craft an item is called a “crafting recipe”. You need this knowledge to craft. There are multiple ways to learn crafting recipes. One way is by using a crafting guide, which contains a list of available crafting recipes. Some subgames provide crafting guides. There are also some mods which you can download online for installing a crafting guide. Another way is by reading the online manual of the subgame (if one is available).=La descrizione di come si assembla un oggetto è chiamata “ricetta di assemblaggio”. Per assemblare vi servirà questa conoscenza. Esistono svariati modi per imparare le ricette di assemblaggio. Un modo è usare una guida di assemblaggio, che contiene un elenco delle ricette di assemblaggio disponibili. Alcuni giochi forniscono guide di assemblaggio. Esistono anche alcuni moduli che potete scaricare dalla rete per installare una guida di assemblaggio. Un altro modo è leggere il manuale in rete del gioco (se questo è disponibile). +Crafting recipes consist of at least one input item and exactly one stack of output items. When performing a single craft, it will consume exactly one item from each stack of the crafting grid, unless the crafting recipe defines replacements.=Le ricette di assemblaggio sono formate da almeno un oggetto iniziale ed esattamente una pila di oggetti finali. Quando si esegue un assemblaggio singolo, questo consumerà esattamente un oggetto dalla griglia di assemblaggio, a meno che la ricetta di assemblaggio stabilisca dei rimpiazzi. +There are multiple types of crafting recipes:\n\n• Shaped (image 2): Items need to be placed in a particular shape\n• Shapeless (images 3 and 4): Items need to be placed somewhere in input (both images show the same recipe)\n• Cooking: Explained in “Basics > Cooking”\n• Repairing (image 5): Place two damaged tools into the crafting grid anywhere to get a tool which is repaired by a certain percentage. This recipe may not be available in all subgames=Esistono tipi multipli di ricette di assemblaggio:\n\n• Con una forma (immagine 2): gli oggetti devono essere disposti nella griglia secondo un ordine particolare\n• Senza una forma (immagini 3 e 4): gli oggetti devono essere messi da qualche parte nella griglia (entrambe le immagini mostrano la stessa ricetta)\n• Cottura: spiegata in “Nozioni di base > Cottura”\n• Riparazione (immagine 5): mettete nella griglia due strumenti usurati in punti qualsiasi per ottenere uno strumento riparato per una certa percentuale. Questa ricetta potrebbe non essere disponibile in tutti i giochi +In some crafting recipes, some input items do not need to be a concrete item, instead they need to be a member of a group (see “Basics > Groups”). These recipes offer a bit more freedom in the input items. Images 6-8 show the same group-based recipe. Here, 8 items of the “stone” group are required, which is true for all of the shown items.=In alcune ricette di assemblaggio, alcuni oggetti iniziali non devono essere un oggetto preciso, devono essere invece membri di un gruppo (si veda “Nozioni di base > Gruppi”). Queste ricette offrono una maggiore libertà per gli oggetti iniziali. Le immagini 6-8 mostrano la stessa ricetta basata sui gruppi. In questa, servono otto oggetti del gruppo “stone” (“pietra”), cosa valida per tutti gli oggetti mostrati. +Rarely, crafting recipes have replacements. This means, whenever you perform a craft, some items in the crafting grid will not be consumed, but instead will be replaced by another item.=Raramente, le ricette di assemblaggio hanno dei rimpiazzi. Questo significa, ogni volta che eseguite un assemblaggio, alcuni oggetti nella griglia di assemblaggio non verranno consumati, ma invece verranno rimpiazzati da un altro oggetto. +Cooking=Cottura +Cooking (or smelting) is a form of crafting which does not involve a crafting grid. Cooking is done with a special block (like a furnace), an cookable item, a fuel item and time in order to yield a new item.=La cottura (o fusione) è una forma di creazione che non coinvolge una griglia di assemblaggio. La cottura viene eseguita con un blocco speciale (come una fornace), un oggetto cucinabile, un oggetto combustibile e del tempo per ottenere un nuovo oggetto. +Each fuel item has a burning time. This is the time a single item of the fuel keeps a furnace burning.=Ciascun combustibile possiede un tempo di bruciatura. Questo è il tempo per cui un singolo oggetto di combustibile tiene accesa una fornace. +Each cookable item requires time to be cooked. This time is specific to the item type and the item must be “on fire” for the whole cooking time to actually yield the result.=Ciascun oggetto cucinabile richiede del tempo per essere cotto. Questo tempo è specifico per il tipo di oggetto, e l'oggetto deve essere “sulla fiamma” per l'intero tempo di cottura per produrre effettivamente il risultato. +Hotbar=Barra di uso frequente +At the bottom of the screen you see some squares. This is called the “hotbar”. The hotbar allows you to quickly access the first items from your player inventory.=Nella parte inferiore dello schermo si vedono alcuni riquadri. Questi sono chiamati “barra di uso frequente”. La barra di uso frequente vi permette di accedere rapidamente ai primi oggetti dell'inventario del vostro personaggio. +You can change the selected item with the mouse wheel or the number keys.=Potete cambiare l'oggetto selezionato con la rotella del mouse o i tasti numerici. +• Select previous item in hotbar: [Mouse wheel up]=• Selezionare l'oggetto precedente dalla barra di uso frequente: [Rotella del mouse in avanti] +• Select next item in hotbar: [Mouse wheel down]=• Selezionare l'oggetto successivo dalla barra di uso frequente: [Rotella del mouse indietro] +• Select item in hotbar directly: [0]-[9]=• Selezionare direttamente un oggetto dalla barra di uso frequente: [0]-[9] +The selected item is also your wielded item.=L'oggetto selezionato è anche l'oggetto impugnato. +Minimap=Minimappa +Press [F9] to make a minimap appear on the top right. The minimap helps you to find your way around the world. Press it again to select different minimap modes and zoom levels. The minimap also shows the positions of other players.=Premete [F9] per fare comparire una minimappa in alto a destra. La minimappa vi aiuta a trovare la vostra strada nel mondo. Premetelo ancora per selezionare modalità e livelli di ingrandimento differenti. La minimappa mostra anche la posizione degli/delle altre utenti. +There are 2 minimap modes and 3 zoom levels.=Esistono due modalità della minimappa e tre livelli di ingrandimento. +Surface mode (image 1) is a top-down view of the world, roughly resembling the colors of the blocks this world is made of. It only shows the topmost blocks, everything below is hidden, like a satellite photo. Surface mode is useful if you got lost.=La modalità di superficie (immagine 1) è una visuale del mondo dall'alto, rappresentante approssimativamente i colori dei blocchi di cui è composto questo mondo. Mostra solo i blocchi più elevati, ogni cosa al di sotto è nascosta, come nella foto scattata da un satellite. La modalità di superficie è utile se vi perdete. +Radar mode (image 2) is more complicated. It displays the “denseness” of the area around you and changes with your height. Roughly, the more green an area is, the less “dense” it is. Black areas have many blocks. Use the radar to find caverns, hidden areas, walls and more. The rectangular shapes in image 2 clearly expose the position of a dungeon.=La modalità radar (immagine 2) è più complessa. Mostra la “densità” dell'area che vi circonda e varia col variare della vostra altitudine. Grosso modo, più verde è l'area, e meno “compatta” è. Le aree nere possiedono molti blocchi. Usate il radar per trovare caverne, aree nascoste, muri e altro. Le forme rettangolari nell'immagine 2 rivelano chiaramente la posizione di un sotterraneo. +There are also two different rotation modes. In “square mode”, the rotation of the minimap is fixed. If you press [Shift]+[F9] to switch to “circle mode”, the minimap will instead rotate with your looking direction, so “up” is always your looking direction.=Esistono anche due modalità di rotazione diverse. Nella “modalità quadrata”, la rotazione della minimappa è fissa. Se premete [Maiusc]+[F9] per passare alla “modalità circolare”, la minimappa ruoterà invece con la vostra direzione di sguardo, perciò “su” è sempre la vostra direzione di sguardo. +In some subgames, the minimap may be disabled.=In alcuni giochi, la minimappa potrebbe essere disabilitata. +• Toggle minimap mode: [F9]=• Cambiare la modalità della minimappa: [F9] +• Toggle minimap rotation mode: [Shift]+[F9]=• Cambiare la modalità di rotazione della minimappa: [Maiusc]+[F9] +Inventories are used to store item stacks. There are other uses, such as crafting. An inventory consists of a rectangular grid of item slots. Each item slot can either be empty or hold one item stack. Item stacks can be moved freely between most slots.=Gli inventari sono usati per immagazzinare pile di oggetti. Esistono altri usi, come l'assemblaggio. Un inventario è composto da una griglia rettangolare di alloggi per oggetti. Ogni alloggio per oggetto può essere vuoto o contenere una pila di oggetti. Le pile di oggetti possono essere spostate liberamente nella maggior parte degli alloggi. +You have your own inventory which is called your “player inventory”, you can open it with the inventory key (default: [I]). The first inventory slots are also used as slots in your hotbar.=Voi avete il vostro inventario personale che è chiamato “inventario utente”, potete aprirlo con il tasto dell'inventario (predefinito: [I]). I primi alloggi dell'inventario sono anche usati come alloggi nella vostra barra di uso frequente. +Blocks can also have their own inventory, e.g. chests and furnaces.=Anche i blocchi possono avere il proprio inventario, per es. bauli e fornaci. +Inventory controls:=Controlli dell'inventario +Taking: You can take items from an occupied slot if the cursor holds nothing.=Prendere: potete prendere oggetti da un alloggio occupato se il cursore non sta tenendo nulla. +• Left click: take entire item stack=• Click sinistro: prende tutta la pila di oggetti +• Right click: take half from the item stack (rounded up)=• Click destro: prende metà della pila di oggetti (arrotondando) +• Middle click: take 10 items from the item stack=• Click centrale: prende dieci oggetti dalla pila di oggetti +Putting: You can put items onto a slot if the cursor holds 1 or more items and the slot is either empty or contains an item stack of the same item type.=Mettere: potete mettere oggetti in un alloggio se il cursore sta tenendo uno o più oggetti e se l'alloggio è vuoto o contiene una pila di oggetti dello stesso tipo. +• Left click: put entire item stack=• Click sinistro: mette una intera pila di oggetti +• Right click: put 1 item of the item stack=• Click destro: mette un oggetto della pila di oggetti +• Middle click: put 10 items of the item stack=• Click centrale: mette dieci oggetti della pila di oggetti +Exchanging: You can exchange items if the cursor holds 1 or more items and the destination slot is occupied by a different item type.= Scambiare: potete scambiare gli oggetti se il cursore sta tenendo uno o più oggetti e l'alloggio di destinazione è occupato da un tipo di oggetto differente. +• Click: exchange item stacks=• Click: scambiare le pile di oggetti +Throwing away: If you hold an item stack and click with it somewhere outside the menu, the item stack gets thrown away into the environment.=Gettare via: se state tenendo una pila di oggetti e cliccate con essa da qualche parte fuori dal menu, la pila di oggetti viene gettata nell'ambiente. +Quick transfer: You can quickly transfer an item stack to/from the player inventory to/from another item's inventory slot like a furnace, chest, or any other item with an inventory slot when that item's inventory is accessed. The target inventory is generally the most relevant inventory in this context.=Trasferimento rapido: potete trasferire rapidamente una pila di oggetti da/nell'inventario utente da/in un altro alloggio per oggetti di un inventario come quello di una fornace, un baule, o di ogni altro oggetto che abbia un alloggio per oggetti quando si accede all'inventario di quell'oggetto. In questo contesto generalmente l'inventario di destinazione è quello più importante. +• Sneak+Left click: Automatically transfer item stack=• Strisciare + click sinistro: trasferire automaticamente una pila di oggetti +Online help=Aiuto in rete +You may want to check out these online resources related to Minetest:=Potreste volere controllare queste risorse in rete collegate a Minetest: +Official homepage of Minetest: =Pagina ufficiale di Minetest: +The main place to find the most recent version of Minetest.=Il luogo principale dove trovare la versione più recente di Minetest. +Community wiki: =Wiki della comunità: +A community-based documentation website for Minetest. Anyone with an account can edit it! It also features a documentation of Minetest Game.=Un sito in rete di documentazione per Minetest basato sulla comunità. Chiunque abbia un account può modificarlo! Presenta anche una documentazione del Minetest Game. +Web forums: =Forum in rete: +A web-based discussion platform where you can discuss everything related to Minetest. This is also a place where player-made mods and subgames are published and discussed. The discussions are mainly in English, but there is also space for discussion in other languages.=Una piattaforma di discussione basata sulla rete dove potete discutere ogni cosa riguardante Minetest. Questo è anche il luogo dove sono pubblicati e discussi i moduli e i giochi fatti dagli/dalle utenti. Le conversazioni sono principalmente in Inglese, ma c'è spazio anche per le conversazioni in altre lingue. +Chat: =Messaggistica: +A generic Internet Relay Chat channel for everything related to Minetest where people can meet to discuss in real-time. If you do not understand IRC, see the Community Wiki for help.=Un canale Internet Relay Chat generico per tutto ciò che riguarda Minetest dove le persone possono incontrarsi per discutere in tempo reale. Se non capite IRC, leggete la Wiki della comunità per ottenere aiuto. +Groups=Gruppi +Items, players and objects (animate and inanimate) can be members of any number of groups. Groups serve multiple purposes:=Cose, utenti e oggetti (animati e inanimati) possono essere membri di qualunque numero di gruppi. I gruppi servono a svariati scopi: +• Crafting recipes: Slots in a crafting recipe may not require a specific item, but instead an item which is a member of a particular group, or multiple groups=• Ricette di assemblaggio: gli alloggi in una ricetta di assemblaggio potrebbero non richiedere un oggetto specifico, ma invece un oggetto che sia membro di un gruppo particolare, o di più gruppi +• Digging times: Diggable blocks belong to groups which are used to determine digging times. Mining tools are capable of digging blocks belonging to certain groups=• Tempi di scavo: i blocchi scavabili appartengono a gruppi che sono usati per stabilire i tempi di scavo. Gli strumenti di scavo possono scavare blocchi che appartengono a certi gruppi +• Block behavior: Blocks may show a special behaviour and interact with other blocks when they belong to a particular group=• Comportamento del blocco: i blocchi possono mostrare un comportamento speciale e interagire con altri blocchi quando questi appartengono a un gruppo particolare +• Damage and armor: Objects and players have armor groups, weapons have damage groups. These groups determine damage. See also: “Basics > Weapons”=• Ferimento e armatura: gli oggetti e i personaggi possiedono gruppi di armatura, le armi possiedono gruppi di ferimento. Questi gruppi stabiliscono il ferimento. Si veda anche: “Nozioni di base > Armi” +• Other uses=• Altri usi +In the item help, many important groups are usually mentioned and explained.=Nell'aiuto sull'oggetto, solitamente sono nominati e spiegati molti gruppi importanti. +Glossary=Glossario +This is a list of commonly used terms in Minetest:=Questo è un elenco dei termini usati comunemente in Minetest: +Controls:=Controlli: +• Wielding: Holding an item in hand=• Impugnare: tenere un oggetto nella mano +• Pointing: Looking with the crosshair at something in range=• Puntare: guardare col mirino a qualcosa entro il suo raggio +• Dropping: Throwing an item or item stack to the ground=• Rilasciare: gettare a terra un oggetto o una pila di oggetti +• Punching: Attacking with left-click, is also used on blocks=• Colpire: attaccare cliccando col pulsante destro, si usa anche sui blocchi +• Sneaking: Walking slowly while (usually) avoiding to fall over edges=• Strisciare: camminare lentamente evitando (normalmente) di cadere dagli orgli +• Climbing: Moving up or down a climbable block=• Arrampicarsi: muoversi in alto o in basso su di un blocco arrampicabile +Blocks:=Blocchi: +• Block: Cubes that the worlds are made of=• Blocco: cubi di cui è fatto il mondo +• Mining/digging: Using a mining tool to break a block=• Scavare/minare: usare uno strumento di scavo per rompere un blocco +• Building/placing: Putting a block somewhere=• Costruire/piazzare: mettere un blocco da qualche parte +• Drop: Items you get after mining a block=• Rilascio: oggetti che ottenete dopo avere scavato un blocco +• Using a block: Right-clicking a block to access its special function=• Usare un blocco: cliccare col pulsante destro un blocco per accedere alla sua funzione speciale +Items:=Oggetti: +• Item: A single thing that players can possess=• Oggetto: una cosa singola che gli/le utenti possono possedere +• Item stack: A collection of items of the same kind=• Pila di oggetti: una raccolta di oggetti dello stesso tipo +• Maximum stack size: Maximum amount of items in an item stack=• Dimensione massima della pila: numero massimo di oggetti in una pila di oggetti +• Slot / inventory slot: Can hold one item stack=• Alloggo / alloggio dell'inventario: può contenere una pila di oggetti +• Inventory: Provides several inventory slots for storage=• Inventario: fornisce numerosi alloggi inventario per l'immagazzinamento +• Player inventory: The main inventory of a player=• Inventario utente: l'inventario principale di un* utente +• Tool: An item which you can use to do special things with when wielding=• Strumento: un oggetto che potete usare per fare cose speciali mentre lo impugnate +• Range: How far away things can be to be pointed by an item=• Raggio: quanto possono essere distanti le cose per poter essere puntate da un oggetto +• Mining tool: A tool which allows to break blocks=• Strumento di scavo: uno strumento che permette di rompere blocchi +• Craftitem: An item which is (primarily or only) used for crafting=• Oggetto da assemblaggio: un oggetto che è usato (solamente o principalmente) per assemblare +Gameplay:=Esperienza di gioco: +• “heart”: A single health symbol, indicates 2 HP=• “cuore”: un singolo simbolo di salute, indica 2 PS +• “bubble”: A single breath symbol, indicates 1 BP=• “bolla”: un singolo simbolo di ossigeno, indica 1 PO +• HP: Hit point (equals half 1 “heart”)=• PS: punto salute (pari a metà di 1 “cuore”) +• BP: Breath point, indicates breath when diving=• PO: punto ossigeno, indica l'ossigeno quando ci si immerge +• Mob: Computer-controlled enemy=• Mob: nemic* controllat* dal computer (abbreviazione di “mobile”) +• Crafting: Combining multiple items to create new ones=• Assemblare: combinare diversi oggetti per crearne di nuovi +• Crafting guide: A helper which shows available crafting recipes=• Guida di assemblaggio: una fonte di aiuto che mostra le ricette di assemblaggio disponibili +• Spawning: Appearing in the world=• Comparire: comparire nel mondo +• Respawning: Appearing again in the world after death=• Ricomparire: ricomparire ancora nel mondo dopo la morte +• Group: Puts similar things together, often affects gameplay=• Gruppo: mette assieme cose simili, spesso influenza l'esperienza di gioco +• noclip: Allows to fly through walls=• Modalità incorporea: permette di volare attraverso i muri +Interface=Interfaccia +• Hotbar: Inventory slots at the bottom=• Barra di uso frequente: alloggi dell'inventario sottostanti +• Statbar: Indicator made out of half-symbols, used for health and breath=• Barra delle caratteristiche: indicatore composto di mezzi-simboli, usato per salute e ossigeno +• Minimap: The map or radar at the top right=• Minimappa: la mappa o radar in alto a destra +• Crosshair: Seen in the middle, used to point at things=• Mirino: visibile al centro, usato per puntare le cose +Online multiplayer:=Gioco in rete: +• PvP: Player vs Player. If active, players can deal damage to each other=• UcU: Utente contro Utente (“PvP” in Inglese). Se attivata, gli/le utenti possono ferirsi a vicenda +• Griefing: Destroying the buildings of other players against their will=• Vandalizzare: (“griefing” in Inglese) distruggere le costruzioni degli/delle altr* utenti contro la loro volontà +• Protection: Mechanism to own areas of the world, which only allows the owners to modify blocks inside=• Protezione: meccanismo per possedere aree del mondo, che permette solo al/alla proprietari* di modificare i blocchi al loro interno +Technical terms:=Termini tecnici: +• Minetest: This game engine=• Minetest: questo motore di gioco +• Minetest Game: A subgame for Minetest by the Minetest developers=• Minetest Game: un gioco per Minetest degli sviluppatori di Minetest +• Subgame: A complete playing experience to be used in Minetest; such as a game or sandbox or similar=• Gioco: una esperienza di gioco completa da usarsi in Minetest; come un gioco, una sandbox o simili +• Mod: A single subsystem which adds or modifies functionality; is the basic building block of subgames and can be used to further enhance or modify them=• Modulo: un singolo sottosistema che aggiunge o modifica funzionalità; è il “mattone” di costruzione di base dei giochi e può essere usato per migliorarli o modificarli ulteriormente +• Privilege: Allows a player to do something=• Privilegio: permette a un* utente di fare qualcosa +• Node: Other word for “block”=• Nodo: parola alternativa per “blocco” +Settings=Impostazioni +There is a large variety of settings to configure Minetest. Pretty much every aspect can be changed that way.=Esiste una grande varietà di impostazioni per configurare Minetest. Quasi ogni aspetto può essere cambiato in quel modo. +These are a few of the most important gameplay settings:=Queste sono alcune delle impostazioni di gioco più importanti: +• Damage enabled (enable_damage): Enables the health and breath attributes for all players. If disabled, players are immortal=• Ferimento abilitato (enable_damage): abilita gli attributi di salute e ossigeno per tutt* gli/le utenti. Se è disabilitato, gli/le utenti sono immortali +• Creative Mode (creative_mode): Enables sandbox-style gameplay focusing on creativity rather than a challenging gameplay. The meaning depends on the subgame; usual changes are: Reduced dig times, easy access to almost all items, tools never wear off, etc.=• Modalità creativa (creative_mode): abilita lo stile di gioco sandbox incentrato sulla creatività piuttosto di quello impegnativo. Il significato dipende dal gioco; i cambiamenti comuni sono: tempi di scavo ridotti, accesso facile a quasi tutti gli oggetti, gli strumenti non si usurano mai, ecc. +• PvP (enable_pvp): Short for “Player vs Player”. If enabled, players can deal damage to each other=• UcU (enable_pvp): abbreviazione per “Utente contro Utente” (“PvP” in Inglese). Se abilitata, gli/le utenti possono ferirsi a vicenda. +For a full list of all available settings, use the “Advanced settings” dialog in the main menu.=Per un elenco completo delle impostazioni disponibili, usate il pulsante “Impostazioni avanzate” nel menu principale. +Movement modes=Modalità di movimento +If you have the required privileges, you can use up to three special movement modes. Using these may be considered cheating.=Se disponete dei privilegi necessari, potete usare fino a tre modalità speciali di movimento. Usarle potrebbe essere considerato barare. +Fast mode:=Modalità veloce: +• Description: Allows you to move much faster. Hold down the the “Use” key [E] to move faster. In the client configuration, you can further customize fast mode.=• Descrizione: vi consente di muovervi molto più velocemente. Tenete premuto il tasto “Usare” [E] per muovervi più velocemente. Potete personalizzare ulteriormente la modalità veloce nella configurazione del client. +• Default key: [J]=• Tasto predefinito: [J] +• Required privilege: fast=• Privilegio richiesto: fast (“veloce”) +Fly mode:=Modalità volo: +• Description: Gravity doesn't affect you and you can move freely in all directions. Use the jump key to rise and the sneak key to sink.=• Descrizione: la gravità non ha effetto su di voi e potete muovervi liberamente in tutte le direzioni. Usate il tasto di salto per ascendere e quello di strisciamento per discendere. +• Default key: [K]=• Tasto predefinito: [K] +• Required privilege: fly=• Privilegio richiesto: fly (“volo”) +Noclip mode:=Modalità incorporea: +• Description: Allows you to move through walls. Only works when fly mode is enabled, too.=• Descrizione: vi consente di passare attraverso i muri. Funziona solo quando è attivata anche la modalità volo. +• Default key: [H]=• Tasto predefinito: [H] +• Required privilege: noclip=• Privilegio richiesto: noclip (“nessun aggancio”) +Console=Console +With [F10] you can open and close the console. The main use of the console is to show the chat log and enter chat messages or server commands.=Con [F10] potete aprire e chiudere la console. L'uso principale della console è mostrare il registro della messaggistica, o inviare messaggi, o comandi per il sever. +Using the chat or server command key also opens the console, but it is smaller and will be closed after you sent a message.=La console può essere aperta anche col tasto della messaggistica, o con quello che precede l'invio dei comandi, ma è più piccola e verrà chiusa dopo che avrete inviato un messaggio. +Use the chat to communicate with other players. This requires you to have the “shout” privilege.=Usate la messaggistica per comunicare con gli/le altr* utenti. Ciò richiede il privilegio “shout” (“urlare”). +Just type in the message and hit [Enter]. Public chat messages can not begin with “/”.=Scrivete il messaggio e premete [Invio]. I messaggi inviati pubblicamente non possono iniziare con “/”. +You can send private messages: Say “/msg ” in chat to send “” which can only be seen by .=Potete inviare messaggi privati: scrivete “/msg Nome Messaggio” (senza virgolette) nell'area di messaggistica per mandare un “Messaggio” che potrà essere visto solo da “Nome”. +There are some special controls for the console:=Per la console esistono alcuni controlli speciali: +• [F10] Open/close console=• [F10] apre/chiude la console +• [Enter]: Send message or command=• [Invio]: manda un messaggio o un comando +• [Tab]: Try to auto-complete a partially-entered player name=• [Tab]: prova a completare automaticamente il nome di un* utente già parzialmente scritto +• [Ctrl]+[Left]: Move cursor to the beginning of the previous word=• [Ctrl] + [Sinistra]: sposta il cursore all'inizio della parola precedente +• [Ctrl]+[Right]: Move cursor to the beginning of the next word=• [Ctrl] + [Destra]: sposta il cursore all'inizio della parola successiva +• [Ctrl]+[Backspace]: Delete previous word=• [Ctrl] + [Backspace]: cancella la parola precedente +• [Ctrl]+[Delete]: Delete next word=• [Ctrl] + [Canc]: cancella la parola successiva +• [Ctrl]+[U]: Delete all text before the cursor=• [Ctrl] + [U]: cancella tutto il testo prima del cursore +• [Ctrl]+[K]: Delete all text after the cursor=• [Ctrl] + [K]: cancella tutto il testo dopo il cursore +• [Page up]: Scroll up=• [Pag su]: scorre indietro il testo +• [Page down]: Scroll down=• [Pag giù]: scorre in avanti il testo +There is also an input history. Minetest saves your previous console inputs which you can quickly access later:=Esiste anche uno storico dei contenuti inseriti. Minetest salva i vostri inserimenti precendenti nella console, in modo che possiate accedervi rapidamente più tardi: +• [Up]: Go to previous entry in history=• [Su]: va alla voce precedente nello storico +• [Down]: Go to next entry in history=• [Giù]: va alla voce successiva nello storico +Server commands=Comandi del server +Server commands (also called “chat commands”) are little helpers for advanced users. You don't need to use these commands when playing. But they might come in handy to perform some more technical tasks. Server commands work both in multi-player and single-player mode.=I comandi del server (chiamati anche “comandi di messaggistica”) sono piccoli aiutanti per gli/le utenti avanzat*. Quando giocate non vi serve usare questi comandi. Ma potrebbero esservi utili per eseguire compiti più avanzati. I comandi del server funzionano sia nella modalità di gioco locale che in quella in rete. +Server commands can be entered by players using the chat to perform a special server action. There are a few commands which can be issued by everyone, but some commands only work if you have certain privileges granted on the server. There is a small set of basic commands which are always available, other commands can be added by mods.=I comandi del server possono essere inseriti dai/dalle utenti usando la messaggistica per eseguire una azione speciale del server. Esistono un po' di comandi che possono essere usati da tutt*, ma alcuni comandi funzionano solo se sul server vi sono stati concessi certi privilegi. Esiste un piccolo numero di comandi di base che sono sempre disponibili, altri comandi possono essere aggiunti dai moduli. +To issue a command, simply type it like a chat message or press Minetest's command key (default: [/]). All commands have to begin with “/”, for example “/mods”. The Minetest command key does the same as the chat key, except that the slash is already entered.=Per inviare un comando, scrivetelo come se fosse un messaggio o premete il tasto di comando di Minetest (predefinito: [/]). Tutti i comandi devono iniziare con “/”, per esempio “/mods”. Il tasto di comando di Minetest si comporta come il tasto della messaggistica, eccetto il fatto che la sbarra “/” è già inserita. +Commands may or may not give a response in the chat log, but errors will generally be shown in the chat. Try it for yourselves: Close this window and type in the “/mods” command. This will give you the list of available mods on this server.=I comandi possono non dare una risposta nel registro della messaggistica, ma in genere gli errori saranno mostrati. Provate voi stess*: chiudete questa finestra e inviate il comando “/mods” (senza virgolette). Vi mostrerà l'elenco dei moduli disponibili su questo server. +“/help all” is a very important command: You get a list of all available commands on the server, a short explanation and the allowed parameters. This command is also important because the available commands often differ per server.=“/help all” è un comando molto importante: ottenete un elenco di tutti i comandi disponibili sul server, una breve spiegazione e i parametri consentiti. Questo comando è importante anche perhé i comandi disponibili spesso variano da server a server. +Commands are followed by zero or more parameters.=I comandi sono seguiti da zero o più parametri. +In the command reference, you see some placeholders which you need to replace with an actual value. Here's an explanation:=Nella guida di riferimento dei comandi, vedrete alcuni segnaposto che dovrete sostituire con un valore effettivo. Ecco una spiegazione: +• Text in greater-than and lower-than signs (e.g. “”): Placeholder for a parameter=• Testo racchiuso tra i simboli minore-di e maggiore-di (per es. “”): segnaposto per un parametro +• Anything in square brackets (e.g. “[text]”) is optional and can be omitted=• Tutto quello che è tra parentesi quadre (per esempio “[testo]”) è facoltativo è si può omettere +• Pipe or slash (e.g. “text1 | text2 | text3”): Alternation. One of multiple texts must be used (e.g. “text2”)=• Simbolo alternativo “|” barretta, o “/” sbarra (per es. “testo1 | testo2 | testo3”): alternanza. Si devono usare uno o più testi (per es. “testo2”) +• Parenthesis: (e.g. “(word1 word2) | word3”): Groups multiple words together, used for alternations=• Parentesi tonde (per es. “(parola1 parola2) | parola3”): raggruppano assieme più parole, usate per le alternanze +• Everything else is to be read as literal text=Tutto il resto va letto come testo letterale +Here are some examples to illustrate the command syntax:=Ecco alcuni esempi per illustrare la sintassi dei comandi: +• /mods: No parameters. Just enter “/mods”=• /mods: nessun parametro. Scrivete solo “/mods” +• /me : 1 parameter. You have to enter “/me ” followed by any text, e.g. “/me orders pizza”=• /me : un parametro. Dovete scrivere “/me ” seguito da del testo, per es. “/me ordina una pizza” +• /give : Two parameters. Example: “/give Player default:apple”=• /give : due parametri. Esempio: “/give Utente default:apple” +• /help [all|privs|]: Valid inputs are “/help”, “/help all”, “/help privs”, or “/help ” followed by a command name, like “/help time”=• /help [all|privs|]: i valori validi sono “/help”, “/help all”, “/help privs”, o “/help ” seguito dal nome di un comando, come “/help time” +• /spawnentity [,,]: Valid inputs include “/spawnentity boats:boat” and “/spawnentity boats:boat 0,0,0”=• /spawnentity [,,]: i valori validi includono “/spawnentity boats:boat” e “/spawnentity boats:boat 0,0,0” +Some final remarks:=Alcune osservazioni finali: +• For /give and /giveme, you need an itemstring. This is an internally used unique item identifier which you may find in the item help if you have the “give” or “debug” privilege=Per /give e /giveme, vi serve una stringa oggetto. Questa è un identificatore unico usato internamente che potreste trovare nell'aiuto sull'oggetto se avete il privilegio “give” o “debug” +• For /spawnentity you need an entity name, which is another identifier=• Per /spawnentity vi serve il nome di una entità, che è un altro identificatore +Privileges=Privilegi +Each player has a set of privileges, which differs from server to server. Your privileges determine what you can and can't do. Privileges can be granted and revoked from other players by any player who has the privilege called “privs”.=Ogni utente ha un numero di privilegi, che variano da server a server. I vostri privilegi stabiliscono cosa potete e non potete fare. I privilegi possono essere concessi e revocati ad altr* utenti da qualunque utente che abbia il privilegio chiamato “privs”. +On a multiplayer server with the default configuration, new players start with the privileges called “interact” and “shout”. The “interact” privilege is required for the most basic gameplay actions such as building, mining, using, etc. The “shout” privilege allows to chat.=Su di un server in rete avente la configurazione predefinita, i/le nuov* utenti iniziano coi privilegi chiamati “interact” (“interagire”) e “shout” (“urlare”). Il privilegio “interact” è necessario per le azioni di gioco di base, come costruire, scavare, usare, ecc. Il privilegio “shout” permette di conversare. +There is a small set of core privileges which you'll find on every server, other privileges might be added by mods.=Esiste un piccolo numero di privilegi fondamentali che troverete su ogni server, altri privilegi potrebbero essere aggiunti dai moduli. +To view your own privileges, issue the server command “/privs”.=Per vedere i vostri privilegi, inviate il comando “/privs”. +Here are a few basic privilege-related commands:=Ecco alcuni comandi di base legati ai privilegi: +• /privs: Lists your privileges=• /privs: elenca i vostri privilegi +• /privs : Lists the privileges of =• /privs : elenca i privilegi di +• /help privs: Shows a list and description about all privileges=• /help privs: mostra un elenco e una descrizione di tutti i privilegi +Players with the “privs” privilege can modify privileges at will:=Gli/le utenti con il privilegio “privs” possono cambiare i privilegi a volontà: +• /grant : Grant to =• /grant : concede a +• /revoke : Revoke from =• /revoke : revoca a +In single-player mode, you can use “/grant singleplayer all” to unlock all abilities (which is often considered cheating).=Nella modalità di gioco locale, potete usare “/grant singleplayer all” per sbloccare tutte le abilità (che spesso è considerato barare). +Light=Luce +As the world is entirely block-based, so is the light in the world. Each block has its own brightness. The brightness of a block is expressed in a “light level” which ranges from 0 (total darkness) to 15 (as bright as the sun).=Essendo il mondo completamente basato su blocchi, lo è anche la luce nel mondo. Ogni blocco ha la propria luminosità. La luminosità di un blocco è espressa in un “livello di luce” che va da 0 (oscurità completa) a 15 (luminoso quanto il sole). +There are two types of light: Sunlight and artificial light.=Esistono due tipi di luce: la luce solare e la luce artificiale. +Artificial light is emitted by luminous blocks. Artificial light has a light level from 1-14.=La luce artificiale è emessa dai blocchi luminosi. La luce artificiale ha un livello di luce tra 1 e 14. +Sunlight is the brightest light and always goes perfectly straight down from the sky at each time of the day. blocks. At night, the sunlight will become moonlight instead, which still provides a small amount of light. The light level of sunlight is 15.=La luce solare è quella più luminosa e discende dal cielo perfettamente dritta a ogni ora del giorno. Di notte, la luce solare diverrà invece luce lunare, che fornisce comunque un po' di luce. Il livello di luce della luce solare è 15. +Blocks have 3 levels of transparency:=I blocchi hanno tre livelli di trasparenza: +• Transparent: Sunlight goes through limitless, artificial light goes through with losses=• Trasparente: la luce solare li attraversa senza perdite, la luce artificiale li attraversa con delle perdite +• Semi-transparent: Sunlight and artificial light go through with losses=• Semi-trasparenti: la luce solare e la luce artificiale li attraversano con delle perdite +• Opaque: No light passes through=• Opachi: nessuna luce li attraversa +Artificial light will lose one level of brightness for each transparent or semi-transparent block it passes through, until only darkness remains (image 1).=La luce artificiale perderà un livello di luminosità per ciascun nodo trasparente o semi-trasparente che attraversa, finché resterà solo oscurità (immagine 1). +Sunlight will preserve its brightness as long it only passes fully transparent blocks. When it passes through a semi-transparent block, it turns to artificial light. Image 2 shows the difference.=La luce solare conserverà la propria luminosità finché attraverserà solo blocchi trasparenti. Quando passa attraverso un blocco semi-trasparente, si trasforma in luce artificiale. L'immagine 2 mostra la differenza. +Note that “transparency” here only means that the block is able to carry brightness from its neighboring blocks. It is possible for a block to be transparent to light but you can't see trough the other side.=Si noti che per “trasparenza” qui si intende solo che il blocco può trasferire la luminosità ai nodi vicini. È possibile che un blocco sia trasparente alla luce, ma che voi non possiate guardarci attraverso. +Coordinates=Coordinate +The Minetest world is a large cube. And because of this, a position in the world can be easily expressed with Cartesian coordinates. That is, for each position in the world, there are 3 values X, Y and Z.=Il mondo di Minetest è un grande cubo. E per questo, una posizione nel mondo può essere facilmente espressa tramite coordinate Cartesiane. Cioè, per ogni posizione nel mondo, esistono tre valori: X, Y e Z. +Like this: (5, 45, -12)=Come questi: (5, 45, -12) +This refers to the position where X=5, Y=45 and Z=-12. The 3 letters are called “axes”: Y is for the height. X and Z are for the horizontal position.=Ciò si riferisce alla posizione dove X=5 (si legga “X vale 5”, NdT), Y=45 e Z=-12. Le tre lettere sono chiamate “assi”: Y si riferisce all'altezza. X e Z si riferiscono alla posizione orizzontale. +The values for X, Y and Z work like this:=I valori di X, Y e Z funzionano così: +• If you go up, Y increases=• Se salite, Y aumenta +• If you go down, Y decreases=• Se scendete, Y diminuisce +• If you follow the sun, X increases=• Se seguite il sole, X aumenta +• If you go to the reverse direction, X decreases=• Se andate nella direzione opposta, X diminuisce +• Follow the sun, then go right: Z increases=• Seguite il sole, poi andate a destra: Z aumenta +• Follow the sun, then go left: Z decreases=• Seguite il sole, poi andate a sinistra: Z diminuisce +• The side length of a full cube is 1=• La larghezza di un cubo completo è pari a 1 +You can view your current position in the debug screen (open with [F5]). This is considered cheating in some games.=Potete vedere la vostra posizione attuale nella schermata di debug (visibile con [F5]). In alcuni giochi questo è considerato barare. diff --git a/mods/HELP/mcl_doc_basics/mcl_extension.lua b/mods/HELP/mcl_doc_basics/mcl_extension.lua new file mode 100644 index 00000000..630ba982 --- /dev/null +++ b/mods/HELP/mcl_doc_basics/mcl_extension.lua @@ -0,0 +1,97 @@ +local S = minetest.get_translator("mcl_doc_basics") + +doc.add_entry("advanced", "creative", { + name = S("Creative Mode"), + data = { text = +S("Enabling Creative Mode in MineClone 2 applies the following changes:").."\n\n".. + +S("• You keep the things you've placed").."\n".. +S("• Creative inventory is available to obtain most items easily").."\n".. +S("• Hand breaks all default blocks instantly").."\n".. +S("• Greatly increased hand pointing range").."\n".. +S("• Mined blocks don't drop items").."\n".. +S("• Items don't get used up").."\n".. +S("• Tools don't wear off").."\n".. +S("• You can eat food whenever you want").."\n".. +S("• You can always use the minimap (including radar mode)").."\n\n".. + +S("Damage is not affected by Creative Mode, it needs to be disabled seperately.") +}}) + +doc.add_entry("basics", "mobs", { + name = S("Mobs"), + data = { text = +S("Mobs are the living beings in the world. This includes animals and monsters.").."\n\n".. + +S("Mobs appear randomly throughout the world. This is called “spawning”. Each mob kind appears on particular block types at a given light level. The height also plays a role. Peaceful mobs tend to spawn at daylight while hostile ones prefer darkness. Most mobs can spawn on any solid block but some blocks only spawn on particular blocks (like grass blocks).").."\n\n".. + +S("Like players, mobs have hit points and sometimes armor points, too (which means you need better weapons to deal any damage at all). Also like players, hostile mobs can attack directly or at a distance. Mobs may drop random items after they die.").."\n\n".. + +S("Most animals roam the world aimlessly while most hostile mobs hunt players. Animals can be fed, tamed and bred.") +}}) + +doc.add_entry("basics", "animals", { + name = S("Animals"), + data = { text = +S("Animals are peaceful beings which roam the world aimlessly. You can feed, tame and breed them.").."\n\n".. + +S("Feeding:").."\n".. +S("Each animal has its own taste for food and doesn't just accept any food. To feed, hold an item in your hand and rightclick the animal.").."\n".. +S("Animals are attraced to the food they like and follow you as long you hold the food item in hand.").."\n".. +S("Feeding an animal has three uses: Taming, healing and breeding.").."\n".. +S("Feeding heals animals instantly, depending on the quality of the food item.").."\n\n".. + +S("Taming:").."\n".. +S("A few animals can be tamed. You can generally do more things with tamed animals and use other items on them. For example, tame horses can be saddled and tame wolves fight on your side.").."\n\n".. + +S("Breeding:").."\n".. +S("When you have fed an animal up to its maximum health, then feed it again, you will activate “Love Mode” and many hearts appear around the animal.").."\n".. +S("Two animals of the same species will start to breed if they are in Love Mode and close to each other. Soon a baby animal will pop up.").."\n\n".. + +S("Baby animals:").."\n".. +S("Baby animals are just like their adult couterparts, but they can't be fed, tamed or bred and don't drop anything when they die. They grow to adults after a short time.") + +}}) + +doc.add_entry("basics", "hunger", { + name = S("Hunger"), + data = { text = +S("Hunger affects your health and your ability to sprint. Hunger is not in effect when damage is disabled.").."\n\n".. + +S("Core hunger rules:").."\n\n".. +S("• You start with 20/20 hunger points (more points = less hungry)").."\n".. +S("• Actions like combat, jumping, sprinting, etc. decrease hunger points").."\n".. +S("• Food restores hunger points").."\n".. +S("• If your hunger bar decreases, you're hungry").."\n".. +S("• At 18-20 hunger points, you regenerate 1 HP every 4 seconds").."\n".. +S("• At 6 hunger points or less, you can't sprint").."\n".. +S("• At 0 hunger points, you lose 1 HP every 4 seconds (down to 1 HP)").."\n".. +S("• Poisonous food decreases your health").."\n\n".. + + +S("Details:").."\n\n".. +S("You have 0-20 hunger points, indicated by 20 drumstick half-icons above the hotbar. You also have an invisible attribute: Saturation.").."\n".. +S("Hunger points reflect how full you are while saturation points reflect how long it takes until you're hungry again.").."\n\n".. + +S("Each food item increases both your hunger level as well your saturation.").."\n".. +S("Food with a high saturation boost has the advantage that it will take longer until you get hungry again.").."\n".. +S("A few food items might induce food poisoning by chance. When you're poisoned, the health and hunger symbols turn sickly green. Food poisoning drains your health by 1 HP per second, down to 1 HP. Food poisoning also drains your saturation. Food poisoning goes away after a while or when you drink milk.").."\n\n".. + +S("You start with 5 saturation points. The maximum saturation is equal to your current hunger level. So with 20 hunger points your maximum saturation is 20. What this means is that food items which restore many saturation points are more effective the more hunger points you have. This is because at low hunger levels, a lot of the saturation boost will be lost due to the low saturation cap.").."\n".. +S("If your saturation reaches 0, you're hungry and start to lose hunger points. Whenever you see the hunger bar decrease, it is a good time to eat.").."\n\n".. + +S("Saturation decreases by doing things which exhaust you (highest exhaustion first):").."\n".. +S("• Regenerating 1 HP").."\n".. +S("• Suffering food poisoning").."\n".. +S("• Sprint-jumping").."\n".. +S("• Sprinting").."\n".. +S("• Attacking").."\n".. +S("• Taking damage").."\n".. +S("• Swimming").."\n".. +S("• Jumping").."\n".. +S("• Mining a block").."\n\n".. + +S("Other actions, like walking, do not exaust you.") + +}}) + diff --git a/mods/HELP/mcl_doc_basics/mod.conf b/mods/HELP/mcl_doc_basics/mod.conf index 8138f7d8..52561904 100644 --- a/mods/HELP/mcl_doc_basics/mod.conf +++ b/mods/HELP/mcl_doc_basics/mod.conf @@ -1 +1,3 @@ -name = doc_basics +name = mcl_doc_basics +depends = doc +description = Adds some help texts explaining how to use MineClone 2. From 6511394b692ca533e04ac5fc36bd06b63393299b Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 18 Mar 2019 14:30:25 +0100 Subject: [PATCH 188/737] Add some mcl_doc_basics translations --- mods/HELP/mcl_doc_basics/locale/mcl_doc_basics.de.tr | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/mods/HELP/mcl_doc_basics/locale/mcl_doc_basics.de.tr b/mods/HELP/mcl_doc_basics/locale/mcl_doc_basics.de.tr index cc02b02c..eb1270cf 100644 --- a/mods/HELP/mcl_doc_basics/locale/mcl_doc_basics.de.tr +++ b/mods/HELP/mcl_doc_basics/locale/mcl_doc_basics.de.tr @@ -20,6 +20,17 @@ This is a very brief introduction to the basic gameplay:=Hier ist eine sehr kurz • Use a crafting guide mod to learn crafting recipes or visit =• Benutzen Sie eine Mod mit Fertigungsführer, um die Fertigungsrezepte zu erlernen oder besuchen Sie • Read entries in this help to learn the rest=• Lesen Sie Einträge in dieser Hilfe, um den Rest zu lernen • [Esc] to close this window=• [Esc], um dieses Fenster zu schließen +How to play:=Spielanleitung +• Punch a tree trunk until it breaks and collect wood=• Hauen Sie einen Baumstamm, bis er bricht und sammeln Sie Holz auf +• Place the wood into the 2×2 grid (your “crafting grid”) in your inventory menu and craft 4 wood planks=• Platzieren Sie das Holz in das 2×2-Gitter (Ihr „Fertigungsgitter) in Ihrem Inventar und fertigen Sie 4 Holzplanken +• Place them in a 2×2 shape in the crafting grid to craft a crafting table=• Platzieren Sie sie in eine 2×2-Form im Fertigungsgitter, um eine Werkbank zu errichten +• Place the crafting table on the ground=• Platzieren Sie die Werkbank auf den Boden +• Rightclick it for a 3×3 crafting grid=Rechtsklicken Sie sie für ein 3×3-Fertigungsgitter +• Use the crafting guide (book icon) to learn all the possible crafting recipes=• Benutzen Sie die Bauanleitung (Buchsymbol) um alle möglichen Fertigungsrezepte zu lernen +• Craft a wooden pickaxe so you can dig stone=• Fertigen Sie eine Holzspitzhacke, damit Sie Stein graben können +• Different tools break different kinds of blocks. Try them out!=• Verschiedene Werkzeuge können verschiedene Blöcke brechen. Probieren Sie einfach! +• Read entries in this help to learn the rest=• Lesen Sie Einträge in dieser Hilfe, um den Rest zu lernen +• Continue playing as you wish. There's no goal. Have fun!=• Spielen Sie weiter, so wie sie wollen. Es gibt kein Ziel. Viel Spaß! Minetest=Minetest Minetest is a free software game engine for games based on voxel gameplay, inspired by InfiniMiner, Minecraft, and the like. Minetest was originally created by Perttu Ahola (alias “celeron55”).=Minetest ist eine freie Spiel-Engine für Spiele auf Voxelbasis, inspiriert von InfiniMiner, Minecraft, und so weiter. Minetest wurde ursprünglich erfunden von Perttu Ahola (alias „celeron55“). The player is thrown into a huge world made out of cubes or blocks. These cubes usually make the landscape they blocks can be removed and placed almost entirely freely. Using the collected items, new tools and other items can be crafted. Games in Minetest can, however, be much more complex than this.=Der Spieler wird in eine große Welt aus Würfeln bzw. Blöcken geworfen. Aus diesen Würfeln besteht die Landschaft; sie können aufgesammelt und wieder platziert werden. Mit den aufgesammelten Gegenständen können neue Werkzeuge und andere Dinge gefertigt werden. Spiele in Minetest können aber viel komplexer sein. From d191c3ac4869ef768f1a0024a12eacfd5c3bc494 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 18 Mar 2019 15:16:58 +0100 Subject: [PATCH 189/737] Update German basic help translation --- .../locale/mcl_doc_basics.de.tr | 69 ++++++++++++++++++- mods/HELP/mcl_doc_basics/locale/template.txt | 65 +++++++++++++++++ mods/HELP/mcl_doc_basics/mcl_extension.lua | 2 +- 3 files changed, 133 insertions(+), 3 deletions(-) diff --git a/mods/HELP/mcl_doc_basics/locale/mcl_doc_basics.de.tr b/mods/HELP/mcl_doc_basics/locale/mcl_doc_basics.de.tr index eb1270cf..dd4e96fc 100644 --- a/mods/HELP/mcl_doc_basics/locale/mcl_doc_basics.de.tr +++ b/mods/HELP/mcl_doc_basics/locale/mcl_doc_basics.de.tr @@ -7,9 +7,10 @@ Quick start=Schnellstart This is a very brief introduction to the basic gameplay:=Hier ist eine sehr kurze Einführung ins Spiel: • Move mouse to look=• Mausbewegung zum Umsehen • [W], [A], [S] and [D] to move=• [W], [A], [S] und [D] zum Bewegen +• [E] to sprint=• [E] zum Sprinten • [Space] to jump or move upwards=• [Leertaste] zum Springen oder für Aufwärtsbewegung • [Shift] to sneak or move downwards=• [Umschalt] zum Schleichen oder für Abwärtsbewegung -• Mouse wheel or [0]-[9] to select item=• Mausrad oder [0]-[9], um Gegenstand zu wählen +• Mouse wheel or [1]-[9] to select item=• Mausrad oder [1]-[9], um Gegenstand zu wählen • Left-click to mine blocks or attack=• Linksklick, um Blöcke abzubauen oder anzugreifen • Recover from swings to deal full damage=• Warten Sie Schwünge ganz ab, um vollen Schaden anzurichten • Right-click to build blocks and use things=• Rechtsklick, um Blöcke zu bauen und Dinge zu benutzen @@ -51,6 +52,7 @@ Basic movement:=Bewegen: • A: Move to the left=• A: Links • D: Move to the right=• D: Rechts • S: Move backwards=• S: Rückwärts +• E: Sprint=• E: Sprint While standing on solid ground:=Auf festem Boden: • Space: Jump=• Leertaste: Springen • Shift: Sneak=• Umschalt: Schleichen @@ -211,7 +213,7 @@ At the bottom of the screen you see some squares. This is called the “hotbar You can change the selected item with the mouse wheel or the keyboard.=Sie können die gewählten Gegenstände mit dem Mausrad oder der Tastatur wechseln. • Select previous item in hotbar: [Mouse wheel up] or [B]=• Vorherigen Gegenstand in Schnellleiste wählen: [Mausrad rauf] oder [B] • Select next item in hotbar: [Mouse wheel down] or [N]=• Vorherigen Gegenstand in Schnellleiste wählen: [Mausrad runter] oder [N] -• Select item in hotbar directly: [0]-[9]=• Gegenstand direkt in Schnellleiste wählen: [0]-[9] +• Select item in hotbar directly: [1]-[9]=• Gegenstand direkt in Schnellleiste wählen: [1]-[9] The selected item is also your wielded item.=Der gewählte Gegenstand ist auch Ihr gehaltener Gegenstand. Minimap=Übersichtskarte Press [F9] to make a minimap appear on the top right. The minimap helps you to find your way around the world. Press it again to select different minimap modes and zoom levels. The minimap also shows the positions of other players.=Drücken Sie [F9], um eine Übersichtskarte rechts oben erscheinen zu lassen. Die Übersichtskarte hilft Ihnen, sich in der Welt zu orientieren. @@ -444,3 +446,66 @@ Pitch movement mode:=Nick-Bewegungsmodus: • Description: If this mode is activated, the movement keys will move you relative to your current view pitch (vertical look angle) when you're in a liquid or in fly mode.=• Wenn dieser Modus aktiviert ist, werden die Bewegungstasten Sie relativ zu Ihrem jetzigen Nickwinkel (vertikaler Blickwinkel) bewegen, wenn Sie sich in einer Flüssigkeit befinden oder der Flugmodus aktiv ist. • Default key: [L]=• Standardtaste: [L] • No privilege required=• Kein Privileg nötig + +Creative Mode=Kreativmodus +Enabling Creative Mode in MineClone 2 applies the following changes:=Der Kreativmodus in MineClone 2 nimmt die folgenden Änderungen vor: +• You keep the things you've placed=• Sie behalten die Dinge, die Sie platzieren +• Creative inventory is available to obtain most items easily=• Das Kreativinventar ist verfügbar, mit dem Sie die meisten Dinge leicht erhalten +• Hand breaks all default blocks instantly=• Hand zerbricht alle Standardblöcke sofort +• Greatly increased hand pointing range=• Stark erhöhte Handzeigereichweite +• Mined blocks don't drop items=• Gegrabene Blöcke werfen nichts ab +• Items don't get used up=• Gegenstände werden nicht verbraucht +• Tools don't wear off=• Werkzeuge nutzen sich nicht ab +• You can eat food whenever you want=• Sie können essen, wann immer Sie wollen +• You can always use the minimap (including radar mode)=• Sie können die Übersichtskarte immer benutzen (auch den Radarmodus) +Damage is not affected by Creative Mode, it needs to be disabled separately.=Schaden wird vom Kreativmodus nicht beeinflusst, er muss separat ausgeschaltet werden. +Mobs=Mobs +Mobs are the living beings in the world. This includes animals and monsters.=Mobs sind die lebenden Kreaturen in der Welt. Das schließt Tiere und Monster ein. +Mobs appear randomly throughout the world. This is called “spawning”. Each mob kind appears on particular block types at a given light level. The height also plays a role. Peaceful mobs tend to spawn at daylight while hostile ones prefer darkness. Most mobs can spawn on any solid block but some blocks only spawn on particular blocks (like grass blocks).=Monster tauchen zufällig in der Welt auf. Das nennt man „spawnen“. Jeder Mobart taucht auf bestimmten Blocktypen bei einer bestimmten Helligkeit auf. Die Höhe spielt auch eine Rolle. Friedliche Mobs neigen dazu, bei Tageslicht zu spawnen, während feindliche Mobs die Dunkelheit bevorzugen. Die meisten Mobs können auf jedem festen Block spawnen, aber einige Blöcke können nur auf bestimmten Blöcken spawnen (wie Grasblöcke). +Like players, mobs have hit points and sometimes armor points, too (which means you need better weapons to deal any damage at all). Also like players, hostile mobs can attack directly or at a distance. Mobs may drop random items after they die.=Wie Spieler haben Mobs Trefferpunkte und manchmal auch Rüstungspunkte (was bedeutet, dass Sie bessere Waffen benötigen, um überhaupt Schaden anrichten zu können). Auch wie bei Spielern können feindliche Mobs direkt angreifen oder aus der Ferne. Mobs können nach ihrem Tod zufällige Gegenstände abwerfen. +Most animals roam the world aimlessly while most hostile mobs hunt players. Animals can be fed, tamed and bred.=Die meisten Tiere wandern in der Welt ziellos umher, während die meisten feindlichen Mobs die Spieler jagen. Tiere können gefüttert, gezähmt und gezüchtet werden. +Animals=Tiere +Animals are peaceful beings which roam the world aimlessly. You can feed, tame and breed them.=Tiere sind friedliche Wesen, die in der Welt ziellos umherwandern. Sie können sie füttern, zähmen und züchten. +Feeding:=Füttern: +Each animal has its own taste for food and doesn't just accept any food. To feed, hold an item in your hand and rightclick the animal.=Jedes Tier hat eine eigene Vorliebe für Nahrung und akzeptiert nicht einfach jedes Lebensmittel. Zum Füttern halten Sie einen Gegenstand in der Hand und rechtsklicken Sie das Tier. +Animals are attraced to the food they like and follow you as long you hold the food item in hand.=Tiere werden von Lebensmitteln, die sie mögen, magisch angezogen und sie folgen Ihnen, solange Sie einen solchen Gegenstand halten. +Feeding an animal has three uses: Taming, healing and breeding.=Füttern hat drei Zwecke: Zähmen, heilen und züchten. +Feeding heals animals instantly, depending on the quality of the food item.=Füttern heilt Tiere sofort, abhängig von der Qualität des Lebensmittels. +Taming:=Zähmen: +A few animals can be tamed. You can generally do more things with tamed animals and use other items on them. For example, tame horses can be saddled and tame wolves fight on your side.=Ein paar Tiere können gezähmt werden. Sie können grundsätzlich mehr Sachen mit gezähmten Tieren machen und andere Gegenstände an ihnen benutzen. Zum Beispiel können zahme Pferde aufgesattelt werden und Wölfe dazu gebracht werden, an Ihrer Seite zu kämpfen. +Breeding:=Züchten: +When you have fed an animal up to its maximum health, then feed it again, you will activate “Love Mode” and many hearts appear around the animal.=Wenn Sie ein Tier bis zur vollen Gesundheit geheilt haben und es erneut füttern, werden Sie den „Liebesmodus“ aktivieren. Viele Herzen tauchen um das Tier herum auf. +Two animals of the same species will start to breed if they are in Love Mode and close to each other. Soon a baby animal will pop up.=Zwei Tiere der gleichen Art werden sich paaren, wenn sie im Liebesmodus sind und nah beieinander stehen. Kurz darauf wird ein Junges auftauchen. +Baby animals:=Junge: +Baby animals are just like their adult couterparts, but they can't be fed, tamed or bred and don't drop anything when they die. They grow to adults after a short time.=Junge sind wie ihre erwachsenen Artgenossen, aber sie können nicht gefüttert, gezähmt oder gezüchtet werden und werfen nichts ab, wenn sie sterben. Nach einer kurzen Zeit werden sie erwachsen. +Hunger=Hunger +Hunger affects your health and your ability to sprint. Hunger is not in effect when damage is disabled.=Hunger beeinflusst Ihre Gesundheit und Ihre Fähigkeit, zu sprinten. +Core hunger rules:=Haupthungerregeln: +• You start with 20/20 hunger points (more points @= less hungry)=• Sie beginnen mit 20/20 Hungerpunkten (mehr Punkte @= weniger hungrig) +• Actions like combat, jumping, sprinting, etc. decrease hunger points=• Aktionen wie kämpfen, springen, sprinten, usw. verringern die Hungerpunkte +• Food restores hunger points=• Nahrung erhöht die Hungerpunkte +• If your hunger bar decreases, you're hungry=• Wenn sich Ihre Hungerleiste verringert, sind Sie hungrig +• At 18-20 hunger points, you regenerate 1 HP every 4 seconds=• Bei 18-20 Hungerpunkten erhalten Sie 1 TP alle 4 Sekunden +• At 6 hunger points or less, you can't sprint=• Bei 6 Hungerpunkten oder weniger können Sie nicht sprinten +• At 0 hunger points, you lose 1 HP every 4 seconds (down to 1 HP)=• Bei 0 Hungerpunkten verlieren Sie 1 TP alle 4 Sekunden (bis nur 1 TP bleibt) +• Poisonous food decreases your health=• Giftige oder verpestete Nahrung verringert Ihre Gesundheit +Details:=Details: +You have 0-20 hunger points, indicated by 20 drumstick half-icons above the hotbar. You also have an invisible attribute: Saturation.=Sie haben 0-20 Hungerpunkte, was durch 20 Fleischkeulen-Halbsymbole über der Schnellleiste dargestellt wird. +Hunger points reflect how full you are while saturation points reflect how long it takes until you're hungry again.=Hungerpunkte reflektieren, wie satt Sie sind, während Sättigung reflektiert, wie lange es noch braucht, bis Sie wieder hungrig sind. +Each food item increases both your hunger level as well your saturation.=Jedes Lebensmittel erhöht Ihre Hunger- als auch Ihre Sättigungspunkte. +Food with a high saturation boost has the advantage that it will take longer until you get hungry again.=Nahrung mit einer hohen Sättigung hat den Vorteil, dass es länger dauern wird, bis Sie wieder hungrig sind. +A few food items might induce food poisoning by chance. When you're poisoned, the health and hunger symbols turn sickly green. Food poisoning drains your health by 1 HP per second, down to 1 HP. Food poisoning also drains your saturation. Food poisoning goes away after a while or when you drink milk.=Ein paar Lebensmittel können eine Lebensmittelvergiftung verursachen. Wenn Sie vergiftet sind, werden die Gesundheits- und Hungersymbole eine ungesund grüne Farbe annehmen. Die Lebensmittelvergiftung verringert Ihre Gesundheit um 1 TP pro Sekunde, bis nur noch 1 TP verbleibt. Eine Lebensmittelvergiftung reduziert auch Ihre Sättigung. Eine Lebensmittelvergiftung vergeht nach einer Weile, oder, wenn Sie Milch trinken. +You start with 5 saturation points. The maximum saturation is equal to your current hunger level. So with 20 hunger points your maximum saturation is 20. What this means is that food items which restore many saturation points are more effective the more hunger points you have. This is because at low hunger levels, a lot of the saturation boost will be lost due to the low saturation cap.=Sie beginnen mit 5 Sättigungspunkten. Ihre höchstmögliche Sättigung ist gleich der Anzahl Ihrer Hungerpunkte. Wenn Sie also 20 Hungerpunkte haben, ist Ihre höchstmögliche Sättigung 20. Das bedeutet, dass Lebensmittel mit einer hohen Sättigung effektiver sind, je mehr Hungerpunkte Sie haben. Das ist deshalb so, weil bei wenigen Hungerpunkten ein Großteil des Sättigungsbonus aufgrund der niedrigen Maximalsättigung verloren gehen wird. +If your saturation reaches 0, you're hungry and start to lose hunger points. Whenever you see the hunger bar decrease, it is a good time to eat.=Wenn Ihre Sättigung 0 erreicht, haben Sie Hunger und werden allmählich Hungerpunkte verlieren. Wenn Sie sehen, dass die Hungerleiste sich verringert, ist es ein guter Zeitpunkt, etwas zu essen. +Saturation decreases by doing things which exhaust you (highest exhaustion first):=Die Sättigung verringert sich, wenn Sie Dinge tun, die Sie erschöpfen (höchste Erschöpfung zuerst): +• Regenerating 1 HP=• 1 TP regenerieren +• Suffering food poisoning=• Lebensmittelvergiftung erleiden +• Sprint-jumping=• Beim sprinten springen +• Sprinting=• Sprinten +• Attacking=• Angreifen +• Taking damage=• Schaden nehmen +• Swimming=• Schwimmen +• Jumping=• Springen +• Mining a block=• Einen Block abbauen +Other actions, like walking, do not exaust you.=Andere Aktionen, wie gehen, erschöpfen Sie nicht. +If you have a map item in any of your hotbar slots, you can use the minimap.=Wenn Sie eine Karte in einem beliebigen Platz der Schnellleiste haben, können Sie die Übersichtskarte benutzen. diff --git a/mods/HELP/mcl_doc_basics/locale/template.txt b/mods/HELP/mcl_doc_basics/locale/template.txt index 0fcc0f3b..51f09bae 100644 --- a/mods/HELP/mcl_doc_basics/locale/template.txt +++ b/mods/HELP/mcl_doc_basics/locale/template.txt @@ -402,6 +402,8 @@ The values for X, Y and Z work like this:= • Follow the sun, then go left: Z decreases= • The side length of a full cube is 1= You can view your current position in the debug screen (open with [F5]). This is considered cheating in some games.= + +# MCL2 extensions Creative Mode= Enabling Creative Mode in MineClone 2 applies the following changes:= • You keep the things you've placed= @@ -463,3 +465,66 @@ Saturation decreases by doing things which exhaust you (highest exhaustion first • Jumping= • Mining a block= Other actions, like walking, do not exaust you.= +# textdomain: mcl_doc_basics +Creative Mode= +Enabling Creative Mode in MineClone 2 applies the following changes:= +• You keep the things you've placed= +• Creative inventory is available to obtain most items easily= +• Hand breaks all default blocks instantly= +• Greatly increased hand pointing range= +• Mined blocks don't drop items= +• Items don't get used up= +• Tools don't wear off= +• You can eat food whenever you want= +• You can always use the minimap (including radar mode)= +Damage is not affected by Creative Mode, it needs to be disabled separately.= +Mobs= +Mobs are the living beings in the world. This includes animals and monsters.= +Mobs appear randomly throughout the world. This is called “spawning”. Each mob kind appears on particular block types at a given light level. The height also plays a role. Peaceful mobs tend to spawn at daylight while hostile ones prefer darkness. Most mobs can spawn on any solid block but some blocks only spawn on particular blocks (like grass blocks).= +Like players, mobs have hit points and sometimes armor points, too (which means you need better weapons to deal any damage at all). Also like players, hostile mobs can attack directly or at a distance. Mobs may drop random items after they die.= +Most animals roam the world aimlessly while most hostile mobs hunt players. Animals can be fed, tamed and bred.= +Animals= +Animals are peaceful beings which roam the world aimlessly. You can feed, tame and breed them.= +Feeding:= +Each animal has its own taste for food and doesn't just accept any food. To feed, hold an item in your hand and rightclick the animal.= +Animals are attraced to the food they like and follow you as long you hold the food item in hand.= +Feeding an animal has three uses: Taming, healing and breeding.= +Feeding heals animals instantly, depending on the quality of the food item.= +Taming:= +A few animals can be tamed. You can generally do more things with tamed animals and use other items on them. For example, tame horses can be saddled and tame wolves fight on your side.= +Breeding:= +When you have fed an animal up to its maximum health, then feed it again, you will activate “Love Mode” and many hearts appear around the animal.= +Two animals of the same species will start to breed if they are in Love Mode and close to each other. Soon a baby animal will pop up.= +Baby animals:= +Baby animals are just like their adult couterparts, but they can't be fed, tamed or bred and don't drop anything when they die. They grow to adults after a short time.= +Hunger= +Hunger affects your health and your ability to sprint. Hunger is not in effect when damage is disabled.= +Core hunger rules:= +• You start with 20/20 hunger points (more points @= less hungry)= +• Actions like combat, jumping, sprinting, etc. decrease hunger points= +• Food restores hunger points= +• If your hunger bar decreases, you're hungry= +• At 18-20 hunger points, you regenerate 1 HP every 4 seconds= +• At 6 hunger points or less, you can't sprint= +• At 0 hunger points, you lose 1 HP every 4 seconds (down to 1 HP)= +• Poisonous food decreases your health= +Details:= +You have 0-20 hunger points, indicated by 20 drumstick half-icons above the hotbar. You also have an invisible attribute: Saturation.= +Hunger points reflect how full you are while saturation points reflect how long it takes until you're hungry again.= +Each food item increases both your hunger level as well your saturation.= +Food with a high saturation boost has the advantage that it will take longer until you get hungry again.= +A few food items might induce food poisoning by chance. When you're poisoned, the health and hunger symbols turn sickly green. Food poisoning drains your health by 1 HP per second, down to 1 HP. Food poisoning also drains your saturation. Food poisoning goes away after a while or when you drink milk.= +You start with 5 saturation points. The maximum saturation is equal to your current hunger level. So with 20 hunger points your maximum saturation is 20. What this means is that food items which restore many saturation points are more effective the more hunger points you have. This is because at low hunger levels, a lot of the saturation boost will be lost due to the low saturation cap.= +If your saturation reaches 0, you're hungry and start to lose hunger points. Whenever you see the hunger bar decrease, it is a good time to eat.= +Saturation decreases by doing things which exhaust you (highest exhaustion first):= +• Regenerating 1 HP= +• Suffering food poisoning= +• Sprint-jumping= +• Sprinting= +• Attacking= +• Taking damage= +• Swimming= +• Jumping= +• Mining a block= +Other actions, like walking, do not exaust you.= +If you have a map item in any of your hotbar slots, you can use the minimap.= diff --git a/mods/HELP/mcl_doc_basics/mcl_extension.lua b/mods/HELP/mcl_doc_basics/mcl_extension.lua index 630ba982..912cb119 100644 --- a/mods/HELP/mcl_doc_basics/mcl_extension.lua +++ b/mods/HELP/mcl_doc_basics/mcl_extension.lua @@ -15,7 +15,7 @@ S("• Tools don't wear off").."\n".. S("• You can eat food whenever you want").."\n".. S("• You can always use the minimap (including radar mode)").."\n\n".. -S("Damage is not affected by Creative Mode, it needs to be disabled seperately.") +S("Damage is not affected by Creative Mode, it needs to be disabled separately.") }}) doc.add_entry("basics", "mobs", { From 23ccd197ee8faf6cb27eb791ef62eb230f656203 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 18 Mar 2019 16:36:59 +0100 Subject: [PATCH 190/737] Fix some factual mistakes in mcl_doc_basics --- mods/HELP/mcl_doc_basics/init.lua | 46 +++---------- .../locale/mcl_doc_basics.de.tr | 18 ++--- mods/HELP/mcl_doc_basics/locale/template.txt | 68 +------------------ mods/HELP/mcl_doc_basics/mcl_extension.lua | 4 +- 4 files changed, 22 insertions(+), 114 deletions(-) diff --git a/mods/HELP/mcl_doc_basics/init.lua b/mods/HELP/mcl_doc_basics/init.lua index 7da389b1..94d62745 100644 --- a/mods/HELP/mcl_doc_basics/init.lua +++ b/mods/HELP/mcl_doc_basics/init.lua @@ -38,7 +38,6 @@ S("• Recover from swings to deal full damage").."\n".. S("• Right-click to build blocks and use things").."\n".. S("• [I] for the inventory").."\n".. S("• First items in inventory appear in hotbar below").."\n".. -S("• [F9] for the minimap").."\n".. S("• Read entries in this help to learn the rest").."\n".. S("• [Esc] to close this window").."\n\n".. @@ -194,9 +193,9 @@ S("Items have several properties, including the following:").."\n\n".. S("• Maximum stack size: Number of items which fit on 1 item stack").."\n".. S("• Pointing range: How close things must be to be pointed while wielding this item").."\n".. S("• Group memberships: See “Basics > Groups”").."\n".. -S("• May be used for crafting or cooking").."\n\n".. +S("• May be used for crafting or cooking"), -S("A dropped item stack can be collected by punching it."), +-- MCL2: Items cannot be taken by punching images = {{image="doc_basics_inventory_detail.png"}, {image="doc_basics_items_dropped.png"}}, }}) @@ -236,7 +235,7 @@ doc.add_entry("basics", "point", { name = S("Pointing"), data = { text = -S("“Pointing” means looking at something in range with the crosshair. Pointing is needed for interaction, like mining, punching, using, etc. Pointable things include blocks, dropped items, players, computer enemies and objects.").."\n\n".. +S("“Pointing” means looking at something in range with the crosshair. Pointing is needed for interaction, like mining, punching, using, etc. Pointable things include blocks, players, computer enemies and objects.").."\n\n".. S("To point something, it must be in the pointing range (also just called “range”) of your wielded item. There's a default range when you are not wielding anything. A pointed thing will be outlined or highlighted (depending on your settings). Pointing is not possible with the 3rd person front camera.").."\n\n".. @@ -281,50 +280,20 @@ S("• Group memberships: Group memberships are used to determine mining propert images = {{image="doc_basics_nodes.png"}} }}) --- TODO: Oh jeez, this explanation is WAY too difficult. Maybe we need to find some way to make it easier to understand. doc.add_entry("basics", "mine", { name = S("Mining"), data = { text = +-- Text changed for MCL2 S("Mining (or digging) is the process of breaking blocks to remove them. To mine a block, point it and hold down the left mouse button until it breaks.").."\n\n".. -S("Short explanation:").."\n\n".. - -S("Blocks require a mining tool to be mined. Different blocks are mined by different mining tools, and some blocks can not be mined by any tool. Blocks vary in toughness and tools vary in strength. Mining tools will wear off over time. The mining time and the tool wear depend on the block and the mining tool. The fastest way to find out how efficient your mining tools are is by just trying them out on various blocks. Any items you gather by mining go straight into your inventory.") .. "\n\n".. - -S("Detailed explanation:").."\n\n".. - -S("Mineable blocks have mining properties (based on groups) and a toughness level. Mining tools have the same properties. Each mining property of a block also has a rating, while tools can be able to break blocks within a range of ratings.").."\n\n".. - -S("In order to mine a block, these conditions need to be met:").."\n".. -S("• The block and tool share at least one mining property for which they have a matching rating").."\n".. -S("• The tool's toughness level is equal or greater than the block's toughness level").."\n\n".. - -S("Example: A block with the mining property “cracky”, rating 3 and toughness level 0 can only be broken by a tool which is able to break “cracky” blocks at rating 3 and it must have a toughness level of 0 or larger.").."\n\n".. - -S("The time it takes to mine a block depends on the ratings and the toughness levels of both tool and block.").."\n".. -S("• The base mining time depends on the ratings of the block and the mining speed of the tool").."\n".. -S("• The mining speed of the tool differs for each mining property and its rating").."\n".. -S("• The toughness level further modifies the mining speed for this mining property").."\n".. -S("• A high difference in toughness levels decreases the mining time considerably").."\n".. -S("• If the toughness level difference is 2, the mining time is half of the base mining time").."\n".. -S("• With a difference of 3, the mining time is a third, and so on").."\n\n".. - -S("The item help shows the mining times of a tool listed by its mining properties and its ratings. The mining times are often expressed as a range. The low number stands for the mining time for toughness level 0 and the high number for the highest level the tool can mine.").."\n\n".. - -S("Mining usually wears off tools. Each time you mine a block, your tool takes some damage until it is destroyed eventually. The wear per mined block is determined by the difference between the tool's toughness level and the block's toughness level. The higher the difference, the lower the wear. This means:").."\n".. -S("• High-level blocks wear off your tools faster").."\n".. -S("• You can use high-level tools to compensate this").."\n".. -S("• The highest wear is caused when the level of both tool and block are equal").."\n\n".. +S("Blocks require a mining tool to be mined. Different blocks are mined by different mining tools, and some blocks can not be mined by any tool. Blocks vary in hardness and tools vary in strength. Mining tools will wear off over time. The mining time and the tool wear depend on the block and the mining tool. The fastest way to find out how efficient your mining tools are is by just trying them out on various blocks. Any items you gather by mining will drop on the ground, ready to be collected.") .. "\n\n".. S("After mining, a block may leave a “drop” behind. This is a number of items you get after mining. Most commonly, you will get the block itself. There are other possibilities for a drop which depends on the block type. The following drops are possible:").."\n".. S("• Always drops itself (the usual case)").."\n".. S("• Always drops the same items").."\n".. S("• Drops items based on probability").."\n".. -S("• Drops nothing").."\n\n".. - -S("The drop goes directly into your inventory, unless there's no more space left. In that case, the items literally drop on the floor."), - images = {{image="doc_basics_tools_mining.png"}}, +S("• Drops nothing"), }}) doc.add_entry("basics", "build", { @@ -409,7 +378,8 @@ S("There are multiple types of crafting recipes:").."\n\n".. S("• Shaped (image 2): Items need to be placed in a particular shape").."\n".. S("• Shapeless (images 3 and 4): Items need to be placed somewhere in input (both images show the same recipe)").."\n".. S("• Cooking: Explained in “Basics > Cooking”").."\n".. -S("• Repairing (image 5): Place two damaged tools into the crafting grid anywhere to get a tool which is repaired by a certain percentage. This recipe may not be available in all games").."\n\n".. +-- MCL2 change: call out specific repair percentage +S("• Repairing (image 5): Place two damaged tools into the crafting grid anywhere to get a tool which is repaired by 5%").."\n\n".. S("In some crafting recipes, some input items do not need to be a concrete item, instead they need to be a member of a group (see “Basics > Groups”). These recipes offer a bit more freedom in the input items. Images 6-8 show the same group-based recipe. Here, 8 items of the “stone” group are required, which is true for all of the shown items.").."\n\n".. diff --git a/mods/HELP/mcl_doc_basics/locale/mcl_doc_basics.de.tr b/mods/HELP/mcl_doc_basics/locale/mcl_doc_basics.de.tr index dd4e96fc..14512b22 100644 --- a/mods/HELP/mcl_doc_basics/locale/mcl_doc_basics.de.tr +++ b/mods/HELP/mcl_doc_basics/locale/mcl_doc_basics.de.tr @@ -26,8 +26,8 @@ How to play:=Spielanleitung • Place the wood into the 2×2 grid (your “crafting grid”) in your inventory menu and craft 4 wood planks=• Platzieren Sie das Holz in das 2×2-Gitter (Ihr „Fertigungsgitter) in Ihrem Inventar und fertigen Sie 4 Holzplanken • Place them in a 2×2 shape in the crafting grid to craft a crafting table=• Platzieren Sie sie in eine 2×2-Form im Fertigungsgitter, um eine Werkbank zu errichten • Place the crafting table on the ground=• Platzieren Sie die Werkbank auf den Boden -• Rightclick it for a 3×3 crafting grid=Rechtsklicken Sie sie für ein 3×3-Fertigungsgitter -• Use the crafting guide (book icon) to learn all the possible crafting recipes=• Benutzen Sie die Bauanleitung (Buchsymbol) um alle möglichen Fertigungsrezepte zu lernen +• Rightclick it for a 3×3 crafting grid=• Rechtsklicken Sie sie für ein 3×3-Fertigungsgitter +• Use the crafting guide (book icon) to learn all the possible crafting recipes=• Benutzen Sie den Fertigungsführer (Buchsymbol), um die möglichen Fertigungsrezepte zu lernen • Craft a wooden pickaxe so you can dig stone=• Fertigen Sie eine Holzspitzhacke, damit Sie Stein graben können • Different tools break different kinds of blocks. Try them out!=• Verschiedene Werkzeuge können verschiedene Blöcke brechen. Probieren Sie einfach! • Read entries in this help to learn the rest=• Lesen Sie Einträge in dieser Hilfe, um den Rest zu lernen @@ -126,7 +126,7 @@ There are two core attributes of melee weapons:=Nahkampfwaffen haben zwei Haupta A weapon only deals full damage when it has fully recovered from a previous punch. Otherwise, the weapon will deal only reduced damage. This means, quick punching is very fast, but also deals rather low damage. Note the full punch interval does not limit how fast you can attack.=Eine Waffe macht nur den vollen Schaden, wenn sie voll ausgeholt ist, d.h. der letzte Schlag war lange genug her. Sonst macht die Waffe nur reduzierten Schaden. Das bedeutet, dass schnelle Schläge wirklich sehr schnell sind, aber geringen Schaden anrichten. Beachten Sie, dass das Vollschlagintervall nicht begrenzt, wie schnell Sie angreifen können. There is a rule which sometimes makes attacks impossible: Players, animate objects and weapons belong to damage groups. A weapon only deals damage to those who share at least one damage group with it. So if you're using the wrong weapon, you might not deal any damage at all.=Es gibt eine Regel, die es manchmal unmöglich macht, Schaden anzurichten. Spieler, lebendige Objekte und Waffen gehören Schadensgruppen an. Eine Waffe macht nur Schaden auf Sachen, mit denen sie mindestens eine Schadensgruppe teilt. Wenn Sie also die falsche Waffe benutzen, können sie überhaupt keinen Schaden machen. Pointing=Zeigen -“Pointing” means looking at something in range with the crosshair. Pointing is needed for interaction, like mining, punching, using, etc. Pointable things include blocks, dropped items, players, computer enemies and objects.=„Zeigen“ bedeutet, dass man auf etwas mit dem Fadenkreuz in Reichweite schaut. Zeigen wird für die Interaktion benutzt, wie Graben, Schlagen, usw. Zu zeigbare Dingen gehören Blöcke, fallen gelassene Gegenstände, Spieler, computergesteuerte Feinde und Objekte. +“Pointing” means looking at something in range with the crosshair. Pointing is needed for interaction, like mining, punching, using, etc. Pointable things include blocks, players, computer enemies and objects.=„Zeigen“ bedeutet, dass man auf etwas mit dem Fadenkreuz in Reichweite schaut. Zeigen wird für die Interaktion benutzt, wie Graben, Schlagen, usw. Zu zeigbaren Dingen gehören Blöcke, Spieler, computergesteuerte Feinde und Objekte. To point something, it must be in the pointing range (also just called “range”) of your wielded item. There's a default range when you are not wielding anything. A pointed thing will be outlined or highlighted (depending on your settings). Pointing is not possible with the 3rd person front camera.=Um auf etwas zu zeigen, muss es sich in der Zeigereichweite (kurz „Reichweite“) Ihres gehaltenen Gegenstands befinden. Es gibt eine Standardreichweite, wenn Sie nichts halten. Ein gezeigtes Ding wird umrandet oder hervorgehoben (abhängig von Ihren Einstellungen). Zeigen ist nicht möglich mit der Dritten-Person-Vorderkamera. A few things can not be pointed. Most blocks are pointable. A few blocks, like air, can never be pointed. Other blocks, like liquids can only be pointed by special items.=Ein paar Dinge können nicht gezeigt werden. Die meisten Blöcke sind zeigbar. Ein paar Blöcke, wie Luft, können niemals gezeigt werden. Andere Blöcke, wie Flüssigkeiten können nur von besonderen Gegenständen gezeigt werden. Camera=Kamera @@ -148,7 +148,7 @@ Blocks can have a wide range of different properties which determine mining time Mining=Abbauen Mining (or digging) is the process of breaking blocks to remove them. To mine a block, point it and hold down the left mouse button until it breaks.=Das Abbauen (oder Ausgraben) ist der Prozess, in dem Blöcke abgebrochen werden, um sie zu entfernen. Um einen Block abzubauen, zeigen Sie auf ihn und halten Sie die linke Maustaste, bis er bricht. Short explanation:=Kurzerklärung: -Blocks require a mining tool to be mined. Different blocks are mined by different mining tools, and some blocks can not be mined by any tool. Blocks vary in toughness and tools vary in strength. Mining tools will wear off over time. The mining time and the tool wear depend on the block and the mining tool. The fastest way to find out how efficient your mining tools are is by just trying them out on various blocks. Any items you gather by mining go straight into your inventory.=Blöcke benötigen ein Grabewerkzeug, um abgebaut werden zu können. Andere Blöcke werden von anderen Grabewerkzeugen abgebaut, und einige Blöcke können überhaupt nicht abgebaut werden. Blöcke unterscheiden sich in ihrer Härte und Werkzeuge unterscheiden sich in ihrer Stärke. Grabewerkzeuge werden sich allmählich abnutzen. Die Abbauzeit und Abnutzung hängen vom Block und dem Grabewerkzeug ab. Die schnellste Methode, um herauszufinden, wie effizient Ihre Grabewerkzeuge sind, ist es, sie einfach an verschiedenen Blöcken auszuprobieren. Gegenstände, die Sie vom Abbauen erhalten, werden direkt in Ihr Inventar befördert. +Blocks require a mining tool to be mined. Different blocks are mined by different mining tools, and some blocks can not be mined by any tool. Blocks vary in hardness and tools vary in strength. Mining tools will wear off over time. The mining time and the tool wear depend on the block and the mining tool. The fastest way to find out how efficient your mining tools are is by just trying them out on various blocks. Any items you gather by mining will drop on the ground, ready to be collected.=Blöcke benötigen ein Grabewerkzeug, um abgebaut werden zu können. Verschiedene Blöcke werden von verschiedenen Grabewerkzeugen abgebaut und einige Blöcke können gar nicht abgebaut werden. Blöcke variieren in der Härte und Werkzeuge variieren in ihrer Stärke. Grabewerkzeuge werden sich allmählich abnutzen. Die Grabezeit und die Werkzeugabnutzung hängen vom Block und dem Grabewerkzeug ab. Die schnellste Methode, um herauszufinden, wie effizient Ihre Grabewerkzeuge sind, ist es, sie einfach an verschiedenen Blöcken auszuprobieren. Alles, was Sie aus Blöcken erhalten, wird zu Boden fallen und kann von ihnen aufgesammelt werden. Detailed explanation:=Detaillierte Erklärung: Mineable blocks have mining properties (based on groups) and a toughness level. Mining tools have the same properties. Each mining property of a block also has a rating, while tools can be able to break blocks within a range of ratings.=Abbaubare Blöcke haben Abbaueigenschaften (basierend auf Gruppen) und einen Härtegrad. Grabewerkzeuge haben die gleichen Eigenschaften. Jede Abbaueigenschaft eines Blocks hat auch eine Wertung; Werkzeuge hingegen können fähig sein, Blöcke mit einer Reihe von Wertungen abzubauen. In order to mine a block, these conditions need to be met:=Um einen Block abbauen zu können, müssen diese Bedingungen erfüllt sein: @@ -426,7 +426,7 @@ There are multiple types of crafting recipes:=Es gibt mehrere Arten von Fertigun • Shaped (image 2): Items need to be placed in a particular shape=• Förmig (Bild 2): Gegenstände müssen in einer bestimmten Form platziert werden • Shapeless (images 3 and 4): Items need to be placed somewhere in input (both images show the same recipe)=• Formlos (Bilder 3 und 4): Gegenstände müssen irgendwo in der Eingabe platziert werden (beide Bilder zeigen das gleiche Rezept) • Cooking: Explained in “Basics > Cooking”=• Kochen: Siehe „Grundlagen > Kochen“ -• Repairing (image 5): Place two damaged tools into the crafting grid anywhere to get a tool which is repaired by a certain percentage. This recipe may not be available in all games=• Reparieren (Bild 5): Platzieren sie zwei gleiche beschädigte Werkzeuge in das Fertigungsgitter, um ein Werkzeug zu erhalten, das zu einem bestimmten Prozentsatz repariert ist. Dieses Rezept ist nicht in allen Spielen vorhanden +• Repairing (image 5): Place two damaged tools into the crafting grid anywhere to get a tool which is repaired by 5%=• Reparieren (Bild 5): Platzieren sie zwei gleiche beschädigte Werkzeuge in das Fertigungsgitter, um ein Werkzeug zu erhalten, das zu 5% repariert ist Minetest has 3 different views which determine the way you see the world. The modes are:=Minetest hat 3 verschiedene Ansichten, die bestimmen, wie Sie die Welt sehen. Die Modi sind: • 1: First-person view (default)=• 1: Erste Person (Standard) • 2: Third-person view from behind=• 2: Dritte Person von hinten @@ -452,7 +452,7 @@ Enabling Creative Mode in MineClone 2 applies the following changes:=Der Kreativ • You keep the things you've placed=• Sie behalten die Dinge, die Sie platzieren • Creative inventory is available to obtain most items easily=• Das Kreativinventar ist verfügbar, mit dem Sie die meisten Dinge leicht erhalten • Hand breaks all default blocks instantly=• Hand zerbricht alle Standardblöcke sofort -• Greatly increased hand pointing range=• Stark erhöhte Handzeigereichweite +• Greatly increased hand pointing range=• Stark erhöhte Zeigereichweite der Hand • Mined blocks don't drop items=• Gegrabene Blöcke werfen nichts ab • Items don't get used up=• Gegenstände werden nicht verbraucht • Tools don't wear off=• Werkzeuge nutzen sich nicht ab @@ -461,7 +461,7 @@ Enabling Creative Mode in MineClone 2 applies the following changes:=Der Kreativ Damage is not affected by Creative Mode, it needs to be disabled separately.=Schaden wird vom Kreativmodus nicht beeinflusst, er muss separat ausgeschaltet werden. Mobs=Mobs Mobs are the living beings in the world. This includes animals and monsters.=Mobs sind die lebenden Kreaturen in der Welt. Das schließt Tiere und Monster ein. -Mobs appear randomly throughout the world. This is called “spawning”. Each mob kind appears on particular block types at a given light level. The height also plays a role. Peaceful mobs tend to spawn at daylight while hostile ones prefer darkness. Most mobs can spawn on any solid block but some blocks only spawn on particular blocks (like grass blocks).=Monster tauchen zufällig in der Welt auf. Das nennt man „spawnen“. Jeder Mobart taucht auf bestimmten Blocktypen bei einer bestimmten Helligkeit auf. Die Höhe spielt auch eine Rolle. Friedliche Mobs neigen dazu, bei Tageslicht zu spawnen, während feindliche Mobs die Dunkelheit bevorzugen. Die meisten Mobs können auf jedem festen Block spawnen, aber einige Blöcke können nur auf bestimmten Blöcken spawnen (wie Grasblöcke). +Mobs appear randomly throughout the world. This is called “spawning”. Each mob kind appears on particular block types at a given light level. The height also plays a role. Peaceful mobs tend to spawn at daylight while hostile ones prefer darkness. Most mobs can spawn on any solid block but some mobs only spawn on particular blocks (like grass blocks).=Monster tauchen zufällig in der Welt auf. Das nennt man „spawnen“. Jeder Mobart taucht auf bestimmten Blocktypen bei einer bestimmten Helligkeit auf. Die Höhe spielt auch eine Rolle. Friedliche Mobs neigen dazu, bei Tageslicht zu spawnen, während feindliche Mobs die Dunkelheit bevorzugen. Die meisten Mobs können auf jedem festen Block spawnen, aber einige Mobs können nur auf bestimmten Blöcken spawnen (wie Grasblöcke). Like players, mobs have hit points and sometimes armor points, too (which means you need better weapons to deal any damage at all). Also like players, hostile mobs can attack directly or at a distance. Mobs may drop random items after they die.=Wie Spieler haben Mobs Trefferpunkte und manchmal auch Rüstungspunkte (was bedeutet, dass Sie bessere Waffen benötigen, um überhaupt Schaden anrichten zu können). Auch wie bei Spielern können feindliche Mobs direkt angreifen oder aus der Ferne. Mobs können nach ihrem Tod zufällige Gegenstände abwerfen. Most animals roam the world aimlessly while most hostile mobs hunt players. Animals can be fed, tamed and bred.=Die meisten Tiere wandern in der Welt ziellos umher, während die meisten feindlichen Mobs die Spieler jagen. Tiere können gefüttert, gezähmt und gezüchtet werden. Animals=Tiere @@ -477,7 +477,7 @@ Breeding:=Züchten: When you have fed an animal up to its maximum health, then feed it again, you will activate “Love Mode” and many hearts appear around the animal.=Wenn Sie ein Tier bis zur vollen Gesundheit geheilt haben und es erneut füttern, werden Sie den „Liebesmodus“ aktivieren. Viele Herzen tauchen um das Tier herum auf. Two animals of the same species will start to breed if they are in Love Mode and close to each other. Soon a baby animal will pop up.=Zwei Tiere der gleichen Art werden sich paaren, wenn sie im Liebesmodus sind und nah beieinander stehen. Kurz darauf wird ein Junges auftauchen. Baby animals:=Junge: -Baby animals are just like their adult couterparts, but they can't be fed, tamed or bred and don't drop anything when they die. They grow to adults after a short time.=Junge sind wie ihre erwachsenen Artgenossen, aber sie können nicht gefüttert, gezähmt oder gezüchtet werden und werfen nichts ab, wenn sie sterben. Nach einer kurzen Zeit werden sie erwachsen. +Baby animals are just like their adult couterparts, but they can't be tamed or bred and don't drop anything when they die. They grow to adults after a short time. When fed, they grow to adults faster.=Junge sind wie ihre erwachsenen Artgenossen, aber sie können nicht gezähmt oder gezüchtet werden und werfen nichts ab, wenn sie sterben. Nach einer kurzen Zeit werden sie erwachsen. Werden sie gefüttert, werden sie schneller erwachsen. Hunger=Hunger Hunger affects your health and your ability to sprint. Hunger is not in effect when damage is disabled.=Hunger beeinflusst Ihre Gesundheit und Ihre Fähigkeit, zu sprinten. Core hunger rules:=Haupthungerregeln: @@ -500,7 +500,7 @@ If your saturation reaches 0, you're hungry and start to lose hunger points. Whe Saturation decreases by doing things which exhaust you (highest exhaustion first):=Die Sättigung verringert sich, wenn Sie Dinge tun, die Sie erschöpfen (höchste Erschöpfung zuerst): • Regenerating 1 HP=• 1 TP regenerieren • Suffering food poisoning=• Lebensmittelvergiftung erleiden -• Sprint-jumping=• Beim sprinten springen +• Sprint-jumping=• Beim Sprinten springen • Sprinting=• Sprinten • Attacking=• Angreifen • Taking damage=• Schaden nehmen diff --git a/mods/HELP/mcl_doc_basics/locale/template.txt b/mods/HELP/mcl_doc_basics/locale/template.txt index 51f09bae..82dcdb60 100644 --- a/mods/HELP/mcl_doc_basics/locale/template.txt +++ b/mods/HELP/mcl_doc_basics/locale/template.txt @@ -125,7 +125,7 @@ There are two core attributes of melee weapons:= A weapon only deals full damage when it has fully recovered from a previous punch. Otherwise, the weapon will deal only reduced damage. This means, quick punching is very fast, but also deals rather low damage. Note the full punch interval does not limit how fast you can attack.= There is a rule which sometimes makes attacks impossible: Players, animate objects and weapons belong to damage groups. A weapon only deals damage to those who share at least one damage group with it. So if you're using the wrong weapon, you might not deal any damage at all.= Pointing= -“Pointing” means looking at something in range with the crosshair. Pointing is needed for interaction, like mining, punching, using, etc. Pointable things include blocks, dropped items, players, computer enemies and objects.= +“Pointing” means looking at something in range with the crosshair. Pointing is needed for interaction, like mining, punching, using, etc. Pointable things include blocks, players, computer enemies and objects.= To point something, it must be in the pointing range (also just called “range”) of your wielded item. There's a default range when you are not wielding anything. A pointed thing will be outlined or highlighted (depending on your settings). Pointing is not possible with the 3rd person front camera.= A few things can not be pointed. Most blocks are pointable. A few blocks, like air, can never be pointed. Other blocks, like liquids can only be pointed by special items.= Camera= @@ -415,72 +415,10 @@ Enabling Creative Mode in MineClone 2 applies the following changes:= • Tools don't wear off= • You can eat food whenever you want= • You can always use the minimap (including radar mode)= -Damage is not affected by Creative Mode, it needs to be disabled seperately.= -Mobs= -Mobs are the living beings in the world. This includes animals and monsters.= -Mobs appear randomly throughout the world. This is called “spawning”. Each mob kind appears on particular block types at a given light level. The height also plays a role. Peaceful mobs tend to spawn at daylight while hostile ones prefer darkness. Most mobs can spawn on any solid block but some blocks only spawn on particular blocks (like grass blocks).= -Like players, mobs have hit points and sometimes armor points, too (which means you need better weapons to deal any damage at all). Also like players, hostile mobs can attack directly or at a distance. Mobs may drop random items after they die.= -Most animals roam the world aimlessly while most hostile mobs hunt players. Animals can be fed, tamed and bred.= -Animals= -Animals are peaceful beings which roam the world aimlessly. You can feed, tame and breed them.= -Feeding:= -Each animal has its own taste for food and doesn't just accept any food. To feed, hold an item in your hand and rightclick the animal.= -Animals are attraced to the food they like and follow you as long you hold the food item in hand.= -Feeding an animal has three uses: Taming, healing and breeding.= -Feeding heals animals instantly, depending on the quality of the food item.= -Taming:= -A few animals can be tamed. You can generally do more things with tamed animals and use other items on them. For example, tame horses can be saddled and tame wolves fight on your side.= -Breeding:= -When you have fed an animal up to its maximum health, then feed it again, you will activate “Love Mode” and many hearts appear around the animal.= -Two animals of the same species will start to breed if they are in Love Mode and close to each other. Soon a baby animal will pop up.= -Baby animals:= -Baby animals are just like their adult couterparts, but they can't be fed, tamed or bred and don't drop anything when they die. They grow to adults after a short time.= -Hunger= -Hunger affects your health and your ability to sprint. Hunger is not in effect when damage is disabled.= -Core hunger rules:= -• You start with 20/20 hunger points (more points @= less hungry)= -• Actions like combat, jumping, sprinting, etc. decrease hunger points= -• Food restores hunger points= -• If your hunger bar decreases, you're hungry= -• At 18-20 hunger points, you regenerate 1 HP every 4 seconds= -• At 6 hunger points or less, you can't sprint= -• At 0 hunger points, you lose 1 HP every 4 seconds (down to 1 HP)= -• Poisonous food decreases your health= -Details:= -You have 0-20 hunger points, indicated by 20 drumstick half-icons above the hotbar. You also have an invisible attribute: Saturation.= -Hunger points reflect how full you are while saturation points reflect how long it takes until you're hungry again.= -Each food item increases both your hunger level as well your saturation.= -Food with a high saturation boost has the advantage that it will take longer until you get hungry again.= -A few food items might induce food poisoning by chance. When you're poisoned, the health and hunger symbols turn sickly green. Food poisoning drains your health by 1 HP per second, down to 1 HP. Food poisoning also drains your saturation. Food poisoning goes away after a while or when you drink milk.= -You start with 5 saturation points. The maximum saturation is equal to your current hunger level. So with 20 hunger points your maximum saturation is 20. What this means is that food items which restore many saturation points are more effective the more hunger points you have. This is because at low hunger levels, a lot of the saturation boost will be lost due to the low saturation cap.= -If your saturation reaches 0, you're hungry and start to lose hunger points. Whenever you see the hunger bar decrease, it is a good time to eat.= -Saturation decreases by doing things which exhaust you (highest exhaustion first):= -• Regenerating 1 HP= -• Suffering food poisoning= -• Sprint-jumping= -• Sprinting= -• Attacking= -• Taking damage= -• Swimming= -• Jumping= -• Mining a block= -Other actions, like walking, do not exaust you.= -# textdomain: mcl_doc_basics -Creative Mode= -Enabling Creative Mode in MineClone 2 applies the following changes:= -• You keep the things you've placed= -• Creative inventory is available to obtain most items easily= -• Hand breaks all default blocks instantly= -• Greatly increased hand pointing range= -• Mined blocks don't drop items= -• Items don't get used up= -• Tools don't wear off= -• You can eat food whenever you want= -• You can always use the minimap (including radar mode)= Damage is not affected by Creative Mode, it needs to be disabled separately.= Mobs= Mobs are the living beings in the world. This includes animals and monsters.= -Mobs appear randomly throughout the world. This is called “spawning”. Each mob kind appears on particular block types at a given light level. The height also plays a role. Peaceful mobs tend to spawn at daylight while hostile ones prefer darkness. Most mobs can spawn on any solid block but some blocks only spawn on particular blocks (like grass blocks).= +Mobs appear randomly throughout the world. This is called “spawning”. Each mob kind appears on particular block types at a given light level. The height also plays a role. Peaceful mobs tend to spawn at daylight while hostile ones prefer darkness. Most mobs can spawn on any solid block but some mobs only spawn on particular blocks (like grass blocks).= Like players, mobs have hit points and sometimes armor points, too (which means you need better weapons to deal any damage at all). Also like players, hostile mobs can attack directly or at a distance. Mobs may drop random items after they die.= Most animals roam the world aimlessly while most hostile mobs hunt players. Animals can be fed, tamed and bred.= Animals= @@ -496,7 +434,7 @@ Breeding:= When you have fed an animal up to its maximum health, then feed it again, you will activate “Love Mode” and many hearts appear around the animal.= Two animals of the same species will start to breed if they are in Love Mode and close to each other. Soon a baby animal will pop up.= Baby animals:= -Baby animals are just like their adult couterparts, but they can't be fed, tamed or bred and don't drop anything when they die. They grow to adults after a short time.= +Baby animals are just like their adult couterparts, but they can't be tamed or bred and don't drop anything when they die. They grow to adults after a short time. When fed, they grow to adults faster.= Hunger= Hunger affects your health and your ability to sprint. Hunger is not in effect when damage is disabled.= Core hunger rules:= diff --git a/mods/HELP/mcl_doc_basics/mcl_extension.lua b/mods/HELP/mcl_doc_basics/mcl_extension.lua index 912cb119..c6f9f0aa 100644 --- a/mods/HELP/mcl_doc_basics/mcl_extension.lua +++ b/mods/HELP/mcl_doc_basics/mcl_extension.lua @@ -23,7 +23,7 @@ doc.add_entry("basics", "mobs", { data = { text = S("Mobs are the living beings in the world. This includes animals and monsters.").."\n\n".. -S("Mobs appear randomly throughout the world. This is called “spawning”. Each mob kind appears on particular block types at a given light level. The height also plays a role. Peaceful mobs tend to spawn at daylight while hostile ones prefer darkness. Most mobs can spawn on any solid block but some blocks only spawn on particular blocks (like grass blocks).").."\n\n".. +S("Mobs appear randomly throughout the world. This is called “spawning”. Each mob kind appears on particular block types at a given light level. The height also plays a role. Peaceful mobs tend to spawn at daylight while hostile ones prefer darkness. Most mobs can spawn on any solid block but some mobs only spawn on particular blocks (like grass blocks).").."\n\n".. S("Like players, mobs have hit points and sometimes armor points, too (which means you need better weapons to deal any damage at all). Also like players, hostile mobs can attack directly or at a distance. Mobs may drop random items after they die.").."\n\n".. @@ -49,7 +49,7 @@ S("When you have fed an animal up to its maximum health, then feed it again, you S("Two animals of the same species will start to breed if they are in Love Mode and close to each other. Soon a baby animal will pop up.").."\n\n".. S("Baby animals:").."\n".. -S("Baby animals are just like their adult couterparts, but they can't be fed, tamed or bred and don't drop anything when they die. They grow to adults after a short time.") +S("Baby animals are just like their adult couterparts, but they can't be tamed or bred and don't drop anything when they die. They grow to adults after a short time. When fed, they grow to adults faster.") }}) From e2cc0e428d42b7ca7dd1998e6135c51671e5e306 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 18 Mar 2019 17:05:00 +0100 Subject: [PATCH 191/737] =?UTF-8?q?Remove=20the=20word=20=E2=80=9CMinetest?= =?UTF-8?q?=E2=80=9D=20more=20often?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mods/HELP/mcl_doc_basics/init.lua | 14 +++++++------- .../mcl_doc_basics/locale/mcl_doc_basics.de.tr | 14 +++++++------- mods/HELP/mcl_doc_basics/locale/template.txt | 4 ++-- 3 files changed, 16 insertions(+), 16 deletions(-) diff --git a/mods/HELP/mcl_doc_basics/init.lua b/mods/HELP/mcl_doc_basics/init.lua index 94d62745..e700e82b 100644 --- a/mods/HELP/mcl_doc_basics/init.lua +++ b/mods/HELP/mcl_doc_basics/init.lua @@ -7,7 +7,7 @@ local S = minetest.get_translator("mcl_doc_basics") doc.add_category("basics", { name = S("Basics"), - description = S("Everything you need to know about MineClone 2 to get started with playing"), + description = S("Everything you need to know to get started with playing"), sorting = "custom", sorting_data = {"quick_start", "controls", "point", "items", "inventory", "hotbar", "tools", "weapons", "nodes", "mine", "build", "craft", "cook", "hunger", "mobs", "animals", "minimap", "cam", "sneak", "players", "liquids", "light", "groups", "glossary", "minetest"}, build_formspec = doc.entry_builders.text_and_gallery, @@ -16,7 +16,7 @@ doc.add_category("basics", doc.add_category("advanced", { name = S("Advanced usage"), - description = S("Advanced information about Minetest which may be nice to know, but is not crucial to gameplay"), + description = S("Advanced information which may be nice to know, but is not crucial to gameplay"), sorting = "custom", sorting_data = {"creative", "console", "commands", "privs", "movement_modes", "coordinates", "settings", "online"}, build_formspec = doc.entry_builders.text_and_gallery, @@ -204,7 +204,7 @@ doc.add_entry("basics", "tools", { data = { text = S("Some items may serve as a tool when wielded. Any item which has some special use which can be directly used by its wielder is considered a tool.").."\n\n".. -S("A common tool in Minetest are, of course, mining tools. These are important to break all kinds of blocks. Weapons are a kind of tool in Minetest. There are of course many other possible tools. Special actions of tools are usually done by left-click or right-click.").."\n\n".. +S("A common subset of tools is mining tools. These are important to break all kinds of blocks. Weapons are a kind of tool. There are of course many other possible tools. Special actions of tools are usually done by left-click or right-click.").."\n\n".. S("When nothing is wielded, players use their hand which may act as tool and weapon.").."\n\n".. @@ -247,7 +247,7 @@ doc.add_entry("basics", "cam", { name = S("Camera"), data = { text = -S("Minetest has 3 different views which determine the way you see the world. The modes are:").."\n\n".. +S("There are 3 different views which determine the way you see the world. The modes are:").."\n\n".. S("• 1: First-person view (default)").."\n".. S("• 2: Third-person view from behind").."\n".. @@ -266,7 +266,7 @@ doc.add_entry("basics", "nodes", { name = S("Blocks"), data = { text = -S("The world of Minetest is made entirely out of blocks (voxels, to be precise). Blocks can be added or removed with the correct tools.").."\n\n".. +S("The world is made entirely out of blocks (voxels, to be precise). Blocks can be added or removed with the correct tools.").."\n\n".. S("Blocks can have a wide range of different properties which determine mining times, behavior, looks, shape, and much more. Their properties include:").."\n\n".. @@ -508,7 +508,7 @@ doc.add_entry("basics", "glossary", { name = S("Glossary"), data = { text = -S("This is a list of commonly used terms in Minetest:").."\n\n".. +S("This is a list of commonly used terms:").."\n\n".. S("Controls:").."\n".. S("• Wielding: Holding an item in hand").."\n".. @@ -731,7 +731,7 @@ S("Note that “transparency” here only means that the block is able to carry doc.add_entry("advanced", "coordinates", { name = S("Coordinates"), data = { text = -S("The Minetest world is a large cube. And because of this, a position in the world can be easily expressed with Cartesian coordinates. That is, for each position in the world, there are 3 values X, Y and Z.").."\n\n".. +S("The world is a large cube. And because of this, a position in the world can be easily expressed with Cartesian coordinates. That is, for each position in the world, there are 3 values X, Y and Z.").."\n\n".. S("Like this: (5, 45, -12)").."\n\n".. diff --git a/mods/HELP/mcl_doc_basics/locale/mcl_doc_basics.de.tr b/mods/HELP/mcl_doc_basics/locale/mcl_doc_basics.de.tr index 14512b22..236d5a6b 100644 --- a/mods/HELP/mcl_doc_basics/locale/mcl_doc_basics.de.tr +++ b/mods/HELP/mcl_doc_basics/locale/mcl_doc_basics.de.tr @@ -1,8 +1,8 @@ # textdomain: mcl_doc_basics Basics=Grundlagen -Everything you need to know about Minetest to get started with playing=Alles, was Sie über Minetest zum Spielen wissen sollten +Everything you need to know to get started with playing=Alles, was Sie zum Spielen wissen sollten Advanced usage=Fortgeschrittenes -Advanced information about Minetest which may be nice to know, but is not crucial to gameplay=Fortgeschrittene Informationen über Minetest, die nett zu wissen sind, aber nicht kritisch für das reguläre Spiel +Advanced information which may be nice to know, but is not crucial to gameplay=Fortgeschrittene Informationen, die nett zu wissen sind, aber nicht kritisch für das reguläre Spiel Quick start=Schnellstart This is a very brief introduction to the basic gameplay:=Hier ist eine sehr kurze Einführung ins Spiel: • Move mouse to look=• Mausbewegung zum Umsehen @@ -112,7 +112,7 @@ An item stack is a collection of items of the same type which fits into a single A dropped item stack can be collected by punching it.=Ein fallen gelassener Gegenstandsstapel kann aufgesammelt werden, indem er geschlagen wird. Tools=Werkzeuge Some items may serve as a tool when wielded. Any item which has some special use which can be directly used by its wielder is considered a tool.=Einige Gegenstände können als Werkzeug fungieren, wenn man sie hält. Als Werkzeug zählt jeder Gegenstand, der einen besonderen Zweck hat, der direkt vom Träger ausgelöst werden kann. -A common tool in Minetest are, of course, mining tools. These are important to break all kinds of blocks. Weapons are a kind of tool in Minetest. There are of course many other possible tools. Special actions of tools are usually done by left-click or right-click.=Eine häufige Werkzeugart in Minetest sind Grabewerkzeuge. Sie sind wichtig zum Abbauen aller möglichen Blöcke. Waffen sind eine Art Werkzeug in Minetest. Es gibt natürlich viele weitere Werkzeuge. Sonderaktionen von Werkzeugen weden normalerweise mit Links- oder Rechtsklick ausgelöst. +A common subset of tools is mining tools. These are important to break all kinds of blocks. Weapons are a kind of tool. There are of course many other possible tools. Special actions of tools are usually done by left-click or right-click.=Eine häufige Werkzeugart sind Grabewerkzeuge. Sie sind wichtig zum Abbauen aller möglichen Blöcke. Waffen sind eine Art Werkzeug. Es gibt natürlich viele weitere Werkzeuge. Sonderaktionen von Werkzeugen weden normalerweise mit Links- oder Rechtsklick ausgelöst. When nothing is wielded, players use their hand which may act as tool and weapon.=Wird nichts gehalten, benutzen die Spieler ihre Hand, die als Werkzeug und Waffe herhalten kann. Many tools will wear off when using them and may eventually get destroyed. The damage is displayed in a damage bar below the tool icon. If no damage bar is shown, the tool is in mint condition. Tools may be repairable by crafting, see “Basics > Crafting”.=Viele Werkzeuge werden sich bei Benutzung abnutzen und zerbrechen früher oder später. Der Schaden wird in einer Schadensleiste unter dem Werkzeugsymbol angezeigt. Ohne diese Leiste ist das Werkzeug wie neu. Werkzeuge kann man eventuell mit einer Fertigung reparieren. Weapons=Waffen @@ -136,7 +136,7 @@ Zooming is a gameplay feature that might be enabled or disabled by the game. By • Switch camera mode: [F7]=• Kameramodus wechseln: [F7] • Zoom: [Z]=• Zoom: [Z] Blocks=Blöcke -The world of Minetest is made entirely out of blocks (voxels, to be precise). Blocks can be added or removed with the correct tools.=Die Welt von Minetest besteht aus Blöcken (oder Voxeln, um genau zu sein). Blöcke können mit den richtigen Werkzeugen gebaut oder entfernt werden. +The world is made entirely out of blocks (voxels, to be precise). Blocks can be added or removed with the correct tools.=Die Welt besteht aus Blöcken (oder Voxeln, um genau zu sein). Blöcke können mit den richtigen Werkzeugen gebaut oder entfernt werden. Blocks can have a wide range of different properties which determine mining times, behavior, looks, shape, and much more. Their properties include:=Blöcke haben eine Reihe an verschiedenen Eigenschaften, die die Abbauzeit, ihr Verhalten, Aussehen, Form und vieles mehr beeinflussen. Zu ihren Eigenschaften zählen: • Collidable: Collidable blocks can not be passed through; players can walk on them. Non-collidable blocks can be passed through freely=• Kollisionsfähig: Kollisionsfähige Blöcke können nicht passiert werden, Spieler können auf ihnen gehen. Nicht kollisionsfähige Blöcke können frei passiert werden • Pointable: Pointable blocks show a wireframe or a halo box when pointed. But you will just point through non-pointable blocks. Liquids are usually non-pointable but they can be pointed at by some special tools=• Zeigbar: Zeigbare Blöcke zeigen ein Drahtmodell oder eine scheinende Box, wenn sie gezeigt werden. Aber durch nicht-zeigbare Blöcke werden Sie hindurch zeigen. Flüssigkeiten sind üblicherweise nicht-zeigbar, aber mit besonderen Werkzeugen können sie gezeigt werden. @@ -262,7 +262,7 @@ Items, players and objects (animate and inanimate) can be members of any number • Other uses=• Andere Zwecke In the item help, many important groups are usually mentioned and explained.=In der Gegenstandshilfe werden viele wichtige Gruppen normalerweise erwähnt und erklärt. Glossary=Glossar -This is a list of commonly used terms in Minetest:=Dies ist eine Liste von häufig benutzten Begriffen in Minetest +This is a list of commonly used terms:=Dies ist eine Liste von häufig benutzten Begriffen: Controls:=Steuerung: • Wielding: Holding an item in hand=• Halten: Einen Gegenstand in der Hand halten • Pointing: Looking with the crosshair at something in range=• Zeigen: Mit dem Fadenkreuz auf etwas in Reichweite blicken @@ -405,7 +405,7 @@ Artificial light will lose one level of brightness for each transparent or semi- Sunlight will preserve its brightness as long it only passes fully transparent blocks. When it passes through a semi-transparent block, it turns to artificial light. Image 2 shows the difference.=Sonnenlicht wird seine Helligkeit behalten, solange sie nur volltransparente Blöcke passiert. Sobald sie einen halbtransparenten Block passiert, wird es zu künstlichem Licht. Bild 2 zeigt den Unterschied. Note that “transparency” here only means that the block is able to carry brightness from its neighboring blocks. It is possible for a block to be transparent to light but you can't see trough the other side.=Beachten Sie, dass das Wort „Transparenz“ hier nur bedeutet, dass der Block fähig ist, Helligkeit von seinen Nachbarblöcken weiterzugeben. Es ist möglich, dass ein Block transparent gegenüber Licht ist, aber Sie können nicht durch ihn sehen. Coordinates=Koordinaten -The Minetest world is a large cube. And because of this, a position in the world can be easily expressed with Cartesian coordinates. That is, for each position in the world, there are 3 values X, Y and Z.=Die Minetest-Welt ist ein großer Würfel. Und daher kann eine Position in der Welt leicht mit kartesischen Koordinaten ausgedrückt weren. Das bedeutet, für jede Position in der Welt gibt es 3 Werte X, Y und Z. +The world is a large cube. And because of this, a position in the world can be easily expressed with Cartesian coordinates. That is, for each position in the world, there are 3 values X, Y and Z.=Die Welt ist ein großer Würfel. Und daher kann eine Position in der Welt leicht mit kartesischen Koordinaten ausgedrückt weren. Das bedeutet, für jede Position in der Welt gibt es 3 Werte X, Y und Z. Like this: (5, 45, -12)=So wie dies: (5, 45, -12) This refers to the position where X@=5, Y@=45 and Z@=-12. The 3 letters are called “axes”: Y is for the height. X and Z are for the horizontal position.=Das bezieht sich auf die Position, in der X@=5, Y@=45 und Z@=-12 sind. Die drei Buchstaben nennt man „Achsen“. Y ist für die Höhe X und Z sind für die horizontale Position. The values for X, Y and Z work like this:=Die Werte für X, Y und Z funktionieren so: @@ -427,7 +427,7 @@ There are multiple types of crafting recipes:=Es gibt mehrere Arten von Fertigun • Shapeless (images 3 and 4): Items need to be placed somewhere in input (both images show the same recipe)=• Formlos (Bilder 3 und 4): Gegenstände müssen irgendwo in der Eingabe platziert werden (beide Bilder zeigen das gleiche Rezept) • Cooking: Explained in “Basics > Cooking”=• Kochen: Siehe „Grundlagen > Kochen“ • Repairing (image 5): Place two damaged tools into the crafting grid anywhere to get a tool which is repaired by 5%=• Reparieren (Bild 5): Platzieren sie zwei gleiche beschädigte Werkzeuge in das Fertigungsgitter, um ein Werkzeug zu erhalten, das zu 5% repariert ist -Minetest has 3 different views which determine the way you see the world. The modes are:=Minetest hat 3 verschiedene Ansichten, die bestimmen, wie Sie die Welt sehen. Die Modi sind: +There are 3 different views which determine the way you see the world. The modes are:=Es gibt 3 verschiedene Ansichten, die bestimmen, wie Sie die Welt sehen. Die Modi sind: • 1: First-person view (default)=• 1: Erste Person (Standard) • 2: Third-person view from behind=• 2: Dritte Person von hinten • 3: Third-person view from the front=• 3: Dritte Person von vorne diff --git a/mods/HELP/mcl_doc_basics/locale/template.txt b/mods/HELP/mcl_doc_basics/locale/template.txt index 82dcdb60..4056de57 100644 --- a/mods/HELP/mcl_doc_basics/locale/template.txt +++ b/mods/HELP/mcl_doc_basics/locale/template.txt @@ -1,8 +1,8 @@ # textdomain: mcl_doc_basics Basics= -Everything you need to know about MineClone 2 to get started with playing= +Everything you need to know to get started with playing= Advanced usage= -Advanced information about Minetest which may be nice to know, but is not crucial to gameplay= +Advanced information which may be nice to know, but is not crucial to gameplay= Quick start= This is a very brief introduction to the basic gameplay:= Basic controls:= From 95d2465901ab66f4248ce2e541a5ef726c3620c7 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 18 Mar 2019 17:40:45 +0100 Subject: [PATCH 192/737] Noteblock: Higher kick sound --- .../sounds/mesecons_noteblock_temp_kick.ogg | Bin 10361 -> 10716 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_temp_kick.ogg b/mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_temp_kick.ogg index 10d585b8216cc9b301373f7342fc8ffa64605b8f..c73b71178e1f9cf0e29ebf88617638b95dcfadb9 100644 GIT binary patch delta 7076 zcmewva3@&GKRrE|fr$YMo;djmftXd-x5iAA(u)D{85tNDg8m*~z@PCS89ZPv%P&gG zEH-6eV2H>p$k6jIN>|9qObP>wDtIaw85mj^7#o@?X!zxqD;OFWs4AqTmZuge6lbL7 z

    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 delta 6686 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 baafF)q+w=YU|7R<=ezo3MS1nf8#UDdbwxoy From b44f4f456d12f4a9f5eecc9566362fd915361e61 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 18 Mar 2019 17:54:14 +0100 Subject: [PATCH 193/737] Add sound pitch for other noteblock sounds --- .../REDSTONE/mesecons_noteblock/init.lua | 48 +++++++++++------- .../locale/mesecons_noteblock.de.tr | 2 +- .../mesecons_noteblock/locale/template.txt | 2 +- ...ogg => mesecons_noteblock_bass_guitar.ogg} | Bin ...p_kick.ogg => mesecons_noteblock_kick.ogg} | Bin ...snare.ogg => mesecons_noteblock_snare.ogg} | Bin ...stick.ogg => mesecons_noteblock_stick.ogg} | Bin 7 files changed, 31 insertions(+), 21 deletions(-) rename mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/{mesecons_noteblock_temp_bass_guitar.ogg => mesecons_noteblock_bass_guitar.ogg} (100%) rename mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/{mesecons_noteblock_temp_kick.ogg => mesecons_noteblock_kick.ogg} (100%) rename mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/{mesecons_noteblock_temp_snare.ogg => mesecons_noteblock_snare.ogg} (100%) rename mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/{mesecons_noteblock_temp_stick.ogg => mesecons_noteblock_stick.ogg} (100%) diff --git a/mods/ITEMS/REDSTONE/mesecons_noteblock/init.lua b/mods/ITEMS/REDSTONE/mesecons_noteblock/init.lua index a6b59df9..342cbc7c 100644 --- a/mods/ITEMS/REDSTONE/mesecons_noteblock/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons_noteblock/init.lua @@ -3,7 +3,7 @@ local S = minetest.get_translator("mesecons_noteblock") minetest.register_node("mesecons_noteblock:noteblock", { description = S("Note Block"), _doc_items_longdesc = S("A note block is a musical block which plays one of many musical notes and different intruments when it is punched or supplied with redstone power."), - _doc_items_usagehelp = S("Rightclick the note block to choose the next musical note (there are 24 half notes, or 2 octaves). The intrument played depends on the material of the block below the note block:").."\n\n".. + _doc_items_usagehelp = S("Use the note block to choose the next musical note (there are 25 semitones, or 2 octaves). The intrument played depends on the material of the block below the note block:").."\n\n".. S("• Glass: Sticks").."\n".. S("• Wood: Bass guitar").."\n".. @@ -22,7 +22,7 @@ S("The note block will only play a note when it is below air, otherwise, it stay minetest.record_protection_violation(pos, protname) return end - node.param2 = (node.param2+1)%24 + node.param2 = (node.param2+1)%25 mesecon.noteblock_play(pos, node.param2) minetest.set_node(pos, node) end, @@ -82,6 +82,8 @@ local soundnames_piano = { "mesecons_noteblock_asharp2", "mesecons_noteblock_b2", + -- TODO: Add dedicated sound file? + "mesecons_noteblock_b2", } mesecon.noteblock_play = function (pos, param2) @@ -91,24 +93,32 @@ mesecon.noteblock_play = function (pos, param2) return end - -- Default: One of 24 piano notes - local soundname = soundnames_piano[param2] - local block_below_name = minetest.get_node({x=pos.x, y=pos.y-1, z=pos.z}).name - - if minetest.get_item_group(block_below_name, "material_glass") ~= 0 then - -- TODO: 24 sticks and clicks - soundname="mesecons_noteblock_temp_stick" - elseif minetest.get_item_group(block_below_name, "material_wood") ~= 0 then - -- TODO: 24 bass guitar sounds - soundname="mesecons_noteblock_temp_bass_guitar" - elseif minetest.get_item_group(block_below_name, "material_sand") ~= 0 then - -- TODO: 24 snare drum sounds - soundname="mesecons_noteblock_temp_snare" - elseif minetest.get_item_group(block_below_name, "material_stone") ~= 0 then - -- TODO: 24 bass drum sounds - soundname="mesecons_noteblock_temp_kick" + local param2_to_pitch = function(param2) + return 2^((param2-12)/12) end + local soundname, pitch + if minetest.get_item_group(block_below_name, "material_glass") ~= 0 then + soundname="mesecons_noteblock_stick" + pitch = param2_to_pitch(param2) + elseif minetest.get_item_group(block_below_name, "material_wood") ~= 0 then + soundname="mesecons_noteblock_bass_guitar" + pitch = param2_to_pitch(param2) + elseif minetest.get_item_group(block_below_name, "material_sand") ~= 0 then + soundname="mesecons_noteblock_snare" + pitch = param2_to_pitch(param2) + elseif minetest.get_item_group(block_below_name, "material_stone") ~= 0 then + soundname="mesecons_noteblock_kick" + pitch = param2_to_pitch(param2) + else + -- Default: One of 25 piano notes + soundname = soundnames_piano[param2] + -- Workaround: Final sound gets automatic higher pitch instead + if param2 == 24 then + pitch = 2^(1/12) + end + end + minetest.sound_play(soundname, - {pos = pos, gain = 1.0, max_hear_distance = 48,}) + {pos = pos, gain = 1.0, max_hear_distance = 48, pitch = pitch}) end diff --git a/mods/ITEMS/REDSTONE/mesecons_noteblock/locale/mesecons_noteblock.de.tr b/mods/ITEMS/REDSTONE/mesecons_noteblock/locale/mesecons_noteblock.de.tr index c107bd5d..27282396 100644 --- a/mods/ITEMS/REDSTONE/mesecons_noteblock/locale/mesecons_noteblock.de.tr +++ b/mods/ITEMS/REDSTONE/mesecons_noteblock/locale/mesecons_noteblock.de.tr @@ -1,7 +1,7 @@ # textdomain: mesecons_noteblock Note Block=Notenblock A note block is a musical block which plays one of many musical notes and different intruments when it is punched or supplied with redstone power.=Ein Notenblock ist ein musikalischer Block, der eine von vielen Noten von verschiedenen Instrumenten spielt, wenn er geschlagen oder mit Redstoneenergie versorgt wird. -Use the note block to choose the next musical note (there are 24 half notes, or 2 octaves). The intrument played depends on the material of the block below the note block:=Benutzen Sie den Notenblock, um die nächste Note zu wählen (es gibt 24 halbe Noten bzw. 2 Oktaven). Das gespielte Intrument hängt vom Material des Blocks unter dem Notenblock ab: +Use the note block to choose the next musical note (there are 25 semitones, or 2 octaves). The intrument played depends on the material of the block below the note block:=Benutzen Sie den Notenblock, um die nächste Musiknote zu wählen (es gibt 25 Halbtöne, oder 2 Oktaven). Das gespielte Instrument hängt vom Material des Blocks unter dem Notenblock ab: • Glass: Sticks=• Glas: Stöcke • Wood: Bass guitar=• Holz: Bassgitarre • Stone: Bass drum=• Stein: Basstrommel diff --git a/mods/ITEMS/REDSTONE/mesecons_noteblock/locale/template.txt b/mods/ITEMS/REDSTONE/mesecons_noteblock/locale/template.txt index 95803f66..c1d7dc02 100644 --- a/mods/ITEMS/REDSTONE/mesecons_noteblock/locale/template.txt +++ b/mods/ITEMS/REDSTONE/mesecons_noteblock/locale/template.txt @@ -1,7 +1,7 @@ # textdomain: mesecons_noteblock Note Block= A note block is a musical block which plays one of many musical notes and different intruments when it is punched or supplied with redstone power.= -Use the note block to choose the next musical note (there are 24 half notes, or 2 octaves). The intrument played depends on the material of the block below the note block:= +Use the note block to choose the next musical note (there are 25 semitones, or 2 octaves). The intrument played depends on the material of the block below the note block:= • Glass: Sticks= • Wood: Bass guitar= • Stone: Bass drum= diff --git a/mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_temp_bass_guitar.ogg b/mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_bass_guitar.ogg similarity index 100% rename from mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_temp_bass_guitar.ogg rename to mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_bass_guitar.ogg diff --git a/mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_temp_kick.ogg b/mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_kick.ogg similarity index 100% rename from mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_temp_kick.ogg rename to mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_kick.ogg diff --git a/mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_temp_snare.ogg b/mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_snare.ogg similarity index 100% rename from mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_temp_snare.ogg rename to mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_snare.ogg diff --git a/mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_temp_stick.ogg b/mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_stick.ogg similarity index 100% rename from mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_temp_stick.ogg rename to mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_stick.ogg From 8dd3c9224f00662b99970b2428b238b26b728ede Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 18 Mar 2019 18:16:25 +0100 Subject: [PATCH 194/737] Fix translation of falling anvil death msg --- mods/ENTITIES/mcl_falling_nodes/init.lua | 6 +++--- .../mcl_falling_nodes/locale/mcl_falling_nodes.de.tr | 4 ++-- mods/ENTITIES/mcl_falling_nodes/locale/template.txt | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/mods/ENTITIES/mcl_falling_nodes/init.lua b/mods/ENTITIES/mcl_falling_nodes/init.lua index 35355c79..54074567 100644 --- a/mods/ENTITIES/mcl_falling_nodes/init.lua +++ b/mods/ENTITIES/mcl_falling_nodes/init.lua @@ -49,12 +49,12 @@ local deal_falling_damage = function(self, dtime) -- TODO: Reduce damage if wearing a helmet local msg if minetest.get_item_group(self.node.name, "anvil") ~= 0 then - msg = S("%s was smashed by a falling anvil.") + msg = S("@1 was smashed by a falling anvil.", v:get_player_name()) else - msg = S("%s was smashed by a falling block.") + msg = S("@1 was smashed by a falling block.", v:get_player_name()) end if dmes then - mcl_death_messages.player_damage(v, string.format(msg, v:get_player_name())) + mcl_death_messages.player_damage(v, msg) end end v:set_hp(hp) diff --git a/mods/ENTITIES/mcl_falling_nodes/locale/mcl_falling_nodes.de.tr b/mods/ENTITIES/mcl_falling_nodes/locale/mcl_falling_nodes.de.tr index 66cf8a2a..71dfa4be 100644 --- a/mods/ENTITIES/mcl_falling_nodes/locale/mcl_falling_nodes.de.tr +++ b/mods/ENTITIES/mcl_falling_nodes/locale/mcl_falling_nodes.de.tr @@ -1,3 +1,3 @@ # textdomain: mcl_falling_nodes -%s was smashed by a falling anvil.=%s wurde von einem fallenden Amboss zerschmettert. -%s was smashed by a falling block.=%s wurde von einem fallenden Block zerschmettert. +@1 was smashed by a falling anvil.=@1 wurde von einem fallenden Amboss zerschmettert. +@1 was smashed by a falling block.=@1 wurde von einem fallenden Block zerschmettert. diff --git a/mods/ENTITIES/mcl_falling_nodes/locale/template.txt b/mods/ENTITIES/mcl_falling_nodes/locale/template.txt index 040742c6..4adabaf0 100644 --- a/mods/ENTITIES/mcl_falling_nodes/locale/template.txt +++ b/mods/ENTITIES/mcl_falling_nodes/locale/template.txt @@ -1,3 +1,3 @@ # textdomain: mcl_falling_nodes -%s was smashed by a falling anvil.= -%s was smashed by a falling block.= +@1 was smashed by a falling anvil.= +@1 was smashed by a falling block.= From aaf8801c067f3f913a26dcaeb8d33c3e3f0af42a Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 18 Mar 2019 18:24:31 +0100 Subject: [PATCH 195/737] Version 0.52.0 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 037f2b18..9bffaeda 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ An unofficial Minecraft-like game for Minetest. Forked from MineClone by daredevils. Developed by Wuzzy and contributors. Not developed or endorsed by Mojang AB. -Version: 0.51.1 +Version: 0.52.0 ### Gameplay You start in a randomly-generated world made entirely of cubes. You can explore From da5b2443f27b02f86ac09fb1a7f1a6d89b1e8385 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 19 Mar 2019 08:43:11 +0100 Subject: [PATCH 196/737] Fix crash when players kill each other --- mods/HUD/mcl_death_messages/init.lua | 4 ++-- mods/HUD/mcl_death_messages/locale/mcl_death_messages.de.tr | 4 ++-- mods/HUD/mcl_death_messages/locale/template.txt | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/mods/HUD/mcl_death_messages/init.lua b/mods/HUD/mcl_death_messages/init.lua index dc294e8d..7a55f499 100644 --- a/mods/HUD/mcl_death_messages/init.lua +++ b/mods/HUD/mcl_death_messages/init.lua @@ -10,7 +10,7 @@ local msgs = { N("@1 has been killed with an arrow."), }, ["arrow_name"] = { - N("@1 was shot by an arrow from %s."), + N("@1 was shot by an arrow from @2."), }, ["drown"] = { N("@1 forgot to breathe."), @@ -18,7 +18,7 @@ local msgs = { N("@1 ran out of oxygen."), }, ["murder"] = { - N("@1 was killed by %s."), + N("@1 was killed by @2."), }, ["mob_kill"] = { N("@1 was killed by a mob."), diff --git a/mods/HUD/mcl_death_messages/locale/mcl_death_messages.de.tr b/mods/HUD/mcl_death_messages/locale/mcl_death_messages.de.tr index 665f6f68..cc143805 100644 --- a/mods/HUD/mcl_death_messages/locale/mcl_death_messages.de.tr +++ b/mods/HUD/mcl_death_messages/locale/mcl_death_messages.de.tr @@ -1,11 +1,11 @@ # textdomain: mcl_death_messages @1 was fatally hit by an arrow.=@1 wurde tödlich von einem Pfeil getroffen. @1 has been killed with an arrow.=@1 wurde mit einem Pfeil getötet. -@1 was shot by an arrow from @1.=@1 wurde mit einem Pfeil von @1 abgeschossen. +@1 was shot by an arrow from @2.=@1 wurde mit einem Pfeil von @2 abgeschossen. @1 forgot to breathe.=@1 vergaß, zu atmen. @1 drowned.=@1 ertrank. @1 ran out of oxygen.=@1 ging die Luft aus. -@1 was killed by @1.=@1 wurde von @1 getötet. +@1 was killed by @2.=@1 wurde von @2 getötet. @1 was killed by a mob.=@1 wurde von einem Mob getötet. @1 was burned to death by a blaze's fireball.=@1 wurde von einem Feuerball einer Lohe zu Tode verbrannt. @1 was killed by a fireball from a blaze.=@1 wurde von einem Feuerball einer Lohe getötet. diff --git a/mods/HUD/mcl_death_messages/locale/template.txt b/mods/HUD/mcl_death_messages/locale/template.txt index ce809b35..95b2375b 100644 --- a/mods/HUD/mcl_death_messages/locale/template.txt +++ b/mods/HUD/mcl_death_messages/locale/template.txt @@ -1,11 +1,11 @@ # textdomain: mcl_death_messages @1 was fatally hit by an arrow.= @1 has been killed with an arrow.= -@1 was shot by an arrow from @1.= +@1 was shot by an arrow from @2.= @1 forgot to breathe.= @1 drowned.= @1 ran out of oxygen.= -@1 was killed by @1.= +@1 was killed by @2.= @1 was killed by a mob.= @1 was burned to death by a blaze's fireball.= @1 was killed by a fireball from a blaze.= From 40923f83fd34945ef8b1a69fe9d153f97fe4c21a Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 19 Mar 2019 08:43:38 +0100 Subject: [PATCH 197/737] Version 0.52.1 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 9bffaeda..268a530d 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ An unofficial Minecraft-like game for Minetest. Forked from MineClone by daredevils. Developed by Wuzzy and contributors. Not developed or endorsed by Mojang AB. -Version: 0.52.0 +Version: 0.52.1 ### Gameplay You start in a randomly-generated world made entirely of cubes. You can explore From 70498cf5298eb523b47be50f694adc29248e2050 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Thu, 21 Mar 2019 10:12:20 +0100 Subject: [PATCH 198/737] mcl_signs: Rename characters file --- mods/ITEMS/mcl_signs/{characters => characters.txt} | 0 mods/ITEMS/mcl_signs/init.lua | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) rename mods/ITEMS/mcl_signs/{characters => characters.txt} (100%) diff --git a/mods/ITEMS/mcl_signs/characters b/mods/ITEMS/mcl_signs/characters.txt similarity index 100% rename from mods/ITEMS/mcl_signs/characters rename to mods/ITEMS/mcl_signs/characters.txt diff --git a/mods/ITEMS/mcl_signs/init.lua b/mods/ITEMS/mcl_signs/init.lua index 8ae79a52..f83e6339 100644 --- a/mods/ITEMS/mcl_signs/init.lua +++ b/mods/ITEMS/mcl_signs/init.lua @@ -3,7 +3,7 @@ local S = minetest.get_translator("mcl_signs") -- Font: 04.jp.org -- load characters map -local chars_file = io.open(minetest.get_modpath("mcl_signs").."/characters", "r") +local chars_file = io.open(minetest.get_modpath("mcl_signs").."/characters.txt", "r") -- FIXME: Support more characters (many characters are missing) local charmap = {} if not chars_file then From 52e1c9e27440fb1087baba25b1e8aaee01dede74 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Thu, 21 Mar 2019 10:40:58 +0100 Subject: [PATCH 199/737] Signs: Add colon and grave char, tweak more chars --- mods/ITEMS/mcl_signs/characters.txt | 8 +++++++- mods/ITEMS/mcl_signs/textures/_am.png | Bin 89 -> 1907 bytes mods/ITEMS/mcl_signs/textures/_cm.png | Bin 74 -> 856 bytes mods/ITEMS/mcl_signs/textures/_co.png | Bin 0 -> 861 bytes mods/ITEMS/mcl_signs/textures/_dt.png | Bin 72 -> 856 bytes mods/ITEMS/mcl_signs/textures/_gr.png | Bin 0 -> 860 bytes mods/ITEMS/mcl_signs/textures/_hs.png | Bin 84 -> 1257 bytes mods/ITEMS/mcl_signs/textures/_sm.png | Bin 75 -> 859 bytes mods/ITEMS/mcl_signs/textures/_sp.png | Bin 81 -> 864 bytes 9 files changed, 7 insertions(+), 1 deletion(-) create mode 100644 mods/ITEMS/mcl_signs/textures/_co.png create mode 100644 mods/ITEMS/mcl_signs/textures/_gr.png diff --git a/mods/ITEMS/mcl_signs/characters.txt b/mods/ITEMS/mcl_signs/characters.txt index 83d65050..d6cd825b 100644 --- a/mods/ITEMS/mcl_signs/characters.txt +++ b/mods/ITEMS/mcl_signs/characters.txt @@ -225,7 +225,7 @@ _dl 4 % _pr -5 +6 ^ _ca 3 @@ -277,3 +277,9 @@ _vb . _dt 1 +: +_co +1 +` +_gr +2 diff --git a/mods/ITEMS/mcl_signs/textures/_am.png b/mods/ITEMS/mcl_signs/textures/_am.png index 8e762a1d035acd5ae283344966cee6c088f61c9e..76a886757c165d1fb5091735f1a04cc1c3cc23b3 100644 GIT binary patch delta 1904 zcma$2%r`;2o`-{lfq{V`bN@012DbB6ArU1(iRB6fMfqu&IjIUIl?AB^sTG-N3=9>w z-iAj`Q(eyYCtWm-iK*pC(TtLFw;QLw7f9)iU3dNM!}BvkEhi|nD2cpi`}_O9&Yw2r zr^^;@$jII5CbM+vG%GoidynsFPAlHaZeRZEhTNkXI~9}EJN2Jy*ZzKa|KhoP<|Q_7 zA17B&I3956xWHa1JNIuh|NeZryno@GJZszc3vC})Rc@d2-2UwGH_3lKR|~Qv8@_oe za_QU@<#n$%r&LUcezzk%CV1Hs-H$ff>r_8q-^jhSUUtv*<^CJH|7M<-cNR>lwYuVO zSaqw@e(Uq=nU~o6U*taHm#^>IH|at9jhVWpx64cShPbS1OApldw)B5tk)Sm{QFQr( z`5$$j=U9k(&vD3MJlj~zmNiAdcd=8qmE_yv`6dsOJgqt3Y5E?yd)vf2D^o6@YkrC+ z!+EX)N>4ej7|pu8TEFC3Zu&mYu9@Ns)0HHYdwx9Ri8uW>_4CyUGlQpVyy_LM&tTj? zsaPt{qNvVQpTX(dktzN)=OyobRNKdF#_VX97^bt~c%d)PGV{Er&Bbo^eX2)hOR2mz zY!FDyYcrnG=&)wWOf6SW&kg~1Ry)~w%VRDvFddmA#>#AF8Q!q?cjHxWUpIVv^I2AcF1%c*N9aeD@ag;y|JourRnSSD=tpnCLgfa|3q!Sl770ReG$h8DlR$Pg`6%c8!>98S-JoGS#aExKh46(Y=3 z&8m*R>m}dRH`g3pE5bf{u1=WV z+$wr{$2(^xBb^}o(>V&|wuzck!VXM$t6w}f`)$O;yRH8w?JRivccmr&z3}gQ{uaI| zY;5Y;;Hq*ZY+u_gsW^Fsg$KDi+7(}(^>W&z$ba2t{YbfY|ZDmkZbI6o2;K)rr;b*S-$mZVGBkWnTOOrRAdfhrF zT0d;_Qbjp7kzFYr7nP1x*{W2}jH^E;vRt63C*L6R%lAITb0xoHpWEDdc-C6$%~d^b z=>q1@(|Z{NzRlyh%PiNlWkQvcm;B|STB2%pnr2tW&Gq>{keP3w94&NS&%gOosjVS z`YktBu3r8uQ1gY`hG|Pm->-@}e}h>s;w^0#}2d2z&xMij!>9|U3?twc?_YJe2Z&@ z=BlT5y`JV8_j8%+zk3k{+5cNMet0x%bLNh%!s^}i34LkT-&@5<*EG$Nzxg!TKjr>+ zzq?)z=~pg_CoIuQ%FKh3f7C>8gU-f%8hN0qgv*dcYd>-i&2iu+HbzWREJTSLjyM>^w8 zsKfnNEnQCoz3QikOKXX^v)h-ivd@2!m+`f^Z?0kg1X)RL_u~ibCitzl5SgM`z}Vs= zvCMn@ySj~$uWl>XrPW%WKkqNRZ_|GDC&^t(`sPAMr>_>B9ogEL8?brXszn=`HY`$M zV###wXIo`-;z)*7ww#CW0~_NN8LJg?7wWxKd3i`psz2?d=+y7^bN@Ww_1#(j`Hl7b z_0qEc&KFco5oX<#xO(0rZQIgnu~*K1o(#P=5~oq<+7n z=4&%ckAZ=KDaqU2h2ejD|Cy})3=9mM1s;*b3=De8Ak0{?)V_>?fq}im)7O>#F|#PA zjP3;~l`sYd22D>F#}JO|ttU6~GAJ+{Hu(JiVxj|6C!lhdqggjjwLn;`PXB-STXwazG boXEt$>%=tk{j^`tKzck~{an^LB{Ts5ls*)L diff --git a/mods/ITEMS/mcl_signs/textures/_cm.png b/mods/ITEMS/mcl_signs/textures/_cm.png index 716939ad5f4839523f0c3703752b7696229ef86d..6391ec395eff083e26332b0f662ae243e0f8374a 100644 GIT binary patch delta 833 zcmeae!8Sp;p6N_gNJL3cV!1*=QGQxxPO3slWkIS!YDH!m14G5Fr&FUZ-O=D_y&rj0 zhtZRx^J#)!=*@#V^?WnF=++0B&fL?x(kw#PyTGpT@Q>fOdFmf7im*{JJ+Jz_Lwjn- zj-&@4_r05!bnE-?N0%?}wmtH#V1dSqr*&r@{|LYF^=H%4o929eTy|*QgZbxAD!7Fo5$3aLQF-)EyE}m`Xvre+JCPmJ zRo{Kgow$B0ck~_oBh@{2Te`pAcpBR!@VW4Wyp*i<%l25g%pbXKU(Wpb#y(Bq*y59HHnttjF3hHlGv$jH&fWf|rdMXB^})%U z2RZWpTsRbd?0#myL-D#xs$F%jTQ(ioQ*qT~*~SxVt@kjrJi8dOec$fZ>AO1h6Y5!6 zN>9IuNa(#T`zWaD+O(W=O!mE+N2;?Yd=+L8Qrw7ee`Xx5?da%hnpDO)cA~!y4-&u<&1}D{SMqV?4gr!SX$b0umty2zSQC|Xt7!AHwOelO^gjOW{m$qY_q^9Pvw3AMS*Xk}ZFg#g@K&?b zWh;&SXWN}#!=F{M?X9%wFNN>fStToUlQMtboGf)F?Y{E`E58y$W z_S5{Rw7q`D(M^0>sR7Ed1y;IA3NzR?`c-YHp7dLF`+}G8g^%Y?q}c6VX;-`;;_KLY~;XMsm#F$061G6*wPEVVCVux4OjFY)wsWq-^p$|)}X^^uA` u0|SGgr;B3<$Mxg{1+G8oO_xqIF(^4PF@~J{vXy~>fx*+&&t;ucLK6V_hKiE_ delta 45 zcmcb?<~2cCok7sk#W95AdUAq-+@JKOO96Ha5>8BvrFj>ZF)%PNc)I$ztaD0e0sul( B4g>%I diff --git a/mods/ITEMS/mcl_signs/textures/_co.png b/mods/ITEMS/mcl_signs/textures/_co.png new file mode 100644 index 0000000000000000000000000000000000000000..9b7afe045854eabd289e9817f8f8bfa641356af6 GIT binary patch literal 861 zcmeAS@N?(olHy`uVBq!ia0y~yU|?ckVBq0kV_;zL*pm~&z`%62DkP#LD6w3jpeR2r zGbdG{q_QAYA+;hije()!*3+r6o9<}vwBC<&oz|eza-_(>K6G<)WF6m(lKbzfC$CcZ zY_{xH!qy27YK-_E->*;m(bk>xal#dw>2s9Vg#lbzT>;Z-c0e=8&9tm zQGE7z!hI8~vPZ7zK{-SuMT&!_wok5BQxb@pcMxx)ABmhmhtvY7pA<5b(G$E=#E z{--nA<|pOs7Bx98Cf!kbVb6uA1x`Gs>Z-3oGB4ezUEHRsCYSSKrgTZXnfT*Fxz3)e zFQzchlRI*7aidfPhy67t>-?KPr7Vrgo79Dy1k-A=9%?_Hzr}rlW%x@W*ZrkVkqNPT zvZPK&Jh>(t$KdoiV^#G1yNB9$b;=*$;&?Uf=Ej3k>#dJ0{jx^)<{Z{Kso;+9s~xZT zGkCPz={h>0!QqUG*UUwR(t;%=A671lD(t;%+SxN}BT7F$d3E#b z-R|p$Tnkz^M zciQ*!e%Q}%;>dab%LmztYd=n$Yx?z-fq{W7$=lt9;Xep2*t>i(0|NtRfk$L91B0G2 z2s2hJwJ&2}U|=ut^mS!_%q+?&uCzGt0S^NMgP^C2V+hCfFVdQ&MBb@0DLTspa1{> literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_signs/textures/_dt.png b/mods/ITEMS/mcl_signs/textures/_dt.png index 92cc4a9f19235fd3ffb4f00bf9bc487224acdcbe..a965550eafc379cb968340e4587b942c375beef0 100644 GIT binary patch delta 797 zcmeac!8Sp;p6OgwNJL3cV!1*=QGQxxPO3slWkIS!YDH!m14G5Fqf@ij$!PMl{@>iC z!+2X__R|2HB{vW1*t2)tuH9WMta;KSctvB8wDdXl5Q+c)j1QaJh^V$MdA9S3%*Q2@ zxWY?p?w!9If)`P;>{8{2Q3ljoVdVCrwv{>Sl&*PkIyzi>{WX>HWGpM}ESWUS< zZaQ)|{fgGp?6*uWuRpS_%D;8A>dhxD*N&eSPt1G!WIN;De)2fH-nc5Q?q~9;_B-}j z=IP%pkMG?z%V^4}hdQs4>os??ALkA_B{waQ$KLgRnWjdcs+qv+1(gf8IJ8P+`FUMg zd1=YU+itwUJ~lTl7@5D=m!o&A^>*8&u!SetY-~H4-Iz@qXUZ2ZoV)!^O|Q&M>w}Xy z4`vA0Xg}0`Jb#M&0?X^yRJ-b4vqa4h*FR|3>za4<1Czik_u#v~-U->go&BSpb4|m7 zyqU7xYd-FBj`2FbS9SL01OCZeAMK=4{<1WdSp4?%sqK>C+zu;J3>O?^WLh&tprab z`pA1-$;+wwyZ>l~=iac>HO<`_`8h1=?VY8Me|*2ATk?MCbw}pt%q0tz`K9entq`ux zJ>?UeKF_RnTBQ7y7c#fSv%a{!yMEo*J*s!jGwg0H)R^MfTXOK_mX5{*sUub|55Dt!H~mi2vipyY*(-~S?fTyo6Y+v? zr~J-Z$FK6G<)WF6m(lKbzfC$CcZ zY_{xH!qy27YK-_E->*;m(bk>xal#dw>2s9Vg#zA`*hTa)@{@;45X=UTCgUTpW%;9k=m z?wc&xeP`EUZifsx-_qB+qkjaLe`Jnebi8Y1Z5Hvkw0*~vd0SOyZ$99k%=NL(^u#Yt zhRzAm8zqDUI%c|P2AiZQH}&z^iE5{N)-*D#ELv`G&`pK8@AIi%OSjw8r{){?i8TbA zOmb)z=hzSwbfsU_oi|j}*D-YStX*PjBa2SWD&Dr|+={HElUFv)+$p+RZ(fY;?w!>i zqjqrg8R+he(1`O|De9^16ny>-K5Ol zHz!M-NwaslVC7e0$ZY7x@@N~!f(4a^-F})MmA20~x`|IKH9$GGz)CksVFueqzp4$@ zlYXmiU+{AKj*sV0w6?z6uOKeA%lV!0cKsD!ckS2M#JF~QL8esdqlD(eA5O(xH-Fjx z`@?p|f8QI`G#<{D+sEAZ;m7GZHI;V^3=C{Z-tI08|3PrU-sO`S7#KJUJR*x381$4u zn6YB1eHjA-1AB?5uPggwW>HRYRa?{2^$ZLQ0-i38Asp9}6ArNbd;BDTiDBMZ#{VC* TA8Ro%Ffe$!`njxgN@xNA%3F-E literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_signs/textures/_hs.png b/mods/ITEMS/mcl_signs/textures/_hs.png index 46f83c438eb783f84fe8d50e99573e1ed89fc914..682a92a2d20240a81dc7010fade99d933473e17b 100644 GIT binary patch delta 1249 zcmWG}$vHv1o`-{lfq{V`bN@011{R;Hkcg6?#Bzm#qWrYXoK%I9%7Rpd)QZeB28N1T zZ>Q%LDQohy{V(paWtt?=^!UTlReKN0)yKb(tDaM_+-&7f%ig ze?g$0rpney+2;hqSFJ2M?A&?1^sC6_o$=G}+3r2%Ec2bat={9p>95A?t81EL<_qiG z{q#?ZzfAj4k@lkYN5v=OD(&w-KDE~4$E3@Dt*=zadE4(SuCKh4mH$+}UftPXnbZ7& z2dXN9-#3K|Mks_zRUMq$TH&oU&-K#8<=;1Q@7&9O@9|6LH%Ysnev;}E_-w0C-*Hh_ z{jb9G<3@jy1Z~6XDic4~GyV#Gb0@tpetNlXs*6_p?UnND=BV?$;aEB+Q}XPGP@CJC zqH7NvWlRz_vA)F-(kbY>+-0(q<=V^qQU-<}lbp}n2z=MoPKv3N(a1C}GJ7!7k?RIe z!0nJ9iQIEbUq|K#96UAIU=rsk4r9BmAN+pI{TA?KU+{E|Y1)1s+&7L|FRxELrnddP z1gpZ6a-Xk9zHj*ueDBEo16&-hIEx#bb-#JLhF3kCCUdT-P%5}1JX4?`o=ZS!&02#t z7M3Knz*8cnMzTq~phJcev4$VwV zYo>_&OkSzbKC5flf>n{e-C?)rlcc3nqN1K^ z-8i)6S=Pd7QQ6rMTO3OdziAU(Tl(%&@b!7Szh27DXMSmX>B7YJUZYnTlb8EU`G4l} zA)U?Vwq+hm;O5^UT_nc#WJ1=@|Qsp(P$w%8RGs{bzC_hqu=UrR*zq-SBg+BBi&z~kb zTlB4_wc>xa7yK759;>dswh~(_om=lOHIqw=XY++Pjh^4$TLCj za)JcknLxjYGxu*x%yW}V7bz8+*tYtG)4}UE`)d~RD6L(~Ex%&#lF5C7b7GvVw7+oN z7F2d?t<2by8bTrN52(9?Bha2Z0{U=SkIBWTJ6e$ z;yr(Ev>yx-4ba4#fxSpJFfa{;J!Jqadj{b-C%*@J%>rG5|xXzU5U}x}1=lQYuQma3x OEc0~rb6Mw<&;$Tkd`pP{ delta 67 zcmaFK88SiKmX(o#fq`MEh_nX-0|Qe@kY6wZBjc36>lhdqcs*SlLn;`PBMu&5ILN^H Vi1BCqE3-_Ha!*%3mvv4FO#mqA5?cTO diff --git a/mods/ITEMS/mcl_signs/textures/_sm.png b/mods/ITEMS/mcl_signs/textures/_sm.png index dc3c258d44f0fd34236ad067006117d870fdf21b..9c576a4d06f41c3b09d0f75e9f5ae0bbae580d7b 100644 GIT binary patch delta 836 zcmeai%{D=~p6P5=NJL3cV!1*=QGQxxPO3slWkIS!YDH!m14G5Fr&D7$-O=D_y&vg1 ztwE*bNRfek=;r3gI=&et_uo}dUZwKcY}u`ZtrH&981X&6U!V4)tvl)Cgex}F=P0iW z33}Moc>MRS>aNWD@4Nl|*MAeZeYkPag6Y2v`ya_}doSgZJl8cI;W#p)OOw;d$h4xY$9iB_6K&J2ngG zd*6ASs(3O!TYTG&_>S)qdo#sfZ#=zPMDf|<3HME`$}XAjwz>4-bk~cSKcDhXJU+$$ z*4dl2=L+AiTgJ1r$YS=djZ^Dwn;x@jruv`GXq%suvs={UxR`WD>4iNPq82#un5wJ3 z3dy{5qjqtds+wHRi<#0T@n+(W59K<0uD+PUJWuY(!NrZU4xH)Vdf{Aj**>?vGjkuD zY)NR5oFDb$)DQKyf*I#Rcez~5pBo?+A-;arF(a{^rS0Mk7i?y|x>mmZ!@|5r?DZR% zns%j@b3Akw<^CCVUlU5K`QpWT>JbVB8tBEaQwDi>z#oR@k{o zKbRPUp86#=^?I<$JfA9E+_Ozz`+k~?F2lk}M;qAm1rnAnSt0M;C$&mzR@169(^B22 z%}=J7KF_I~8+i4|q?M`0#oA%9Han}zioe%C+FBqelNeRBF<{S>Ani$EE$e2)J`8+) zbb8FoOWN^eKSS5u3b4~P&D|OKIV|e!ou!YzzTX-B;-2^VW;UBkB2j$lUy z1_q`iZ+91l|Ly%}_A@Xra29w(7BevDDT6R$#Zvn+I|c>@_7YEDSN6xuqMYIa*=-wp w7#J9YJzX3_IIbrr9ANlAv!MI0yBG_DcP2B_AG-iK1_lNOPgg&ebxsLQ09T)irT_o{ delta 46 zcmcc3<~>1KgF(pC#W95AdUC=6=6}YCPye-lVl;7>z~JfX=d#Wzp$Pzf C`49g9 diff --git a/mods/ITEMS/mcl_signs/textures/_sp.png b/mods/ITEMS/mcl_signs/textures/_sp.png index 59bbc581892d3302494487c1abb63fe86c0fdcdb..c51f26b16756c41caf2f2fc7221b626ea859fded 100644 GIT binary patch delta 853 zcmWH1z&1g=o`-{lfq~)cbQ3WK2Bw=;ArU1(iRB6fMfqu&IjIUIl?AB^sTG-N3=9>w z-cF0&B%{dDc0bm2nu0>p>5W_0p5oi|=g+NqJD;kATAqBI(R<6J>C-~nhkriSw&ZI} z(QI4tZ08f1z#z|7Z8o{}MPEfOXUV62{^==~bX#9S$x;7$a=qR5y4INY!aBJ>KkD#r zQvuYZNN)3$%S{yc@lE&PTsUk#V1%j?VC z39La&7Kv}sIT9>nC>FTI^V9Q<+*|A9_S}AdD#cAR?wodhbL@p({jtio>z4I+Jl$aab>mdirbmqdr)EtHjjkywmGy)T$GuzB6z9e^H7B}wgK zrN6{xLB&2kJ5lX)&zc5?l|{=94!Ef>_kI4-Yw6}aeX73UIwQRwvNZ;7*YdV&xXDy@Wm4}#atWU|hdFD=6sJQ>Sd3W#ZttPac-bo@<)(-n@JA?}To~FYUZP z)YhX3vU{b%+wFfecyctjR6Fz6|RFk{71`!WUw z2KEw9Usv|W%%YsidV*);FEB7L@OZj7hHzX@PLQx;U|=}Iz_{i54_gKX1_n=8KbLh* G2~7ZV@`+>s delta 64 zcmaFB7C1rNikFdrfq`MqPNAs`3=B*qL4Lsu3}utgS}-s$aCy2ohH%IxAK+wQkYZrm S8|m5&QtRpJ=d#Wzp$P!uZx1Q} From 267cf5c4a643668e28c85f4cce7b0f7197325c08 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Thu, 21 Mar 2019 11:00:23 +0100 Subject: [PATCH 200/737] Signs: Make all chars 5 or 6 pixels wide --- mods/ITEMS/mcl_signs/characters.txt | 2 +- mods/ITEMS/mcl_signs/textures/_0.png | Bin 80 -> 877 bytes mods/ITEMS/mcl_signs/textures/_1.png | Bin 80 -> 883 bytes mods/ITEMS/mcl_signs/textures/_2.png | Bin 83 -> 876 bytes mods/ITEMS/mcl_signs/textures/_3.png | Bin 85 -> 882 bytes mods/ITEMS/mcl_signs/textures/_5.png | Bin 84 -> 886 bytes mods/ITEMS/mcl_signs/textures/_6.png | Bin 85 -> 891 bytes mods/ITEMS/mcl_signs/textures/_7.png | Bin 80 -> 889 bytes mods/ITEMS/mcl_signs/textures/_8.png | Bin 80 -> 874 bytes mods/ITEMS/mcl_signs/textures/_9.png | Bin 86 -> 886 bytes mods/ITEMS/mcl_signs/textures/_ap.png | Bin 72 -> 874 bytes mods/ITEMS/mcl_signs/textures/_bl.png | Bin 78 -> 880 bytes mods/ITEMS/mcl_signs/textures/_br.png | Bin 78 -> 881 bytes mods/ITEMS/mcl_signs/textures/_c.png | Bin 82 -> 881 bytes mods/ITEMS/mcl_signs/textures/_c_.png | Bin 84 -> 883 bytes mods/ITEMS/mcl_signs/textures/_cl.png | Bin 79 -> 880 bytes mods/ITEMS/mcl_signs/textures/_cm.png | Bin 856 -> 871 bytes mods/ITEMS/mcl_signs/textures/_co.png | Bin 861 -> 873 bytes mods/ITEMS/mcl_signs/textures/_cr.png | Bin 80 -> 878 bytes mods/ITEMS/mcl_signs/textures/_dl.png | Bin 86 -> 884 bytes mods/ITEMS/mcl_signs/textures/_dt.png | Bin 856 -> 869 bytes mods/ITEMS/mcl_signs/textures/_dv.png | Bin 75 -> 886 bytes mods/ITEMS/mcl_signs/textures/_e.png | Bin 81 -> 880 bytes mods/ITEMS/mcl_signs/textures/_eq.png | Bin 76 -> 867 bytes mods/ITEMS/mcl_signs/textures/_ex.png | Bin 74 -> 875 bytes mods/ITEMS/mcl_signs/textures/_f.png | Bin 82 -> 885 bytes mods/ITEMS/mcl_signs/textures/_g_.png | Bin 85 -> 884 bytes mods/ITEMS/mcl_signs/textures/_gr.png | Bin 860 -> 869 bytes mods/ITEMS/mcl_signs/textures/_gt.png | Bin 75 -> 872 bytes mods/ITEMS/mcl_signs/textures/_h.png | Bin 87 -> 893 bytes mods/ITEMS/mcl_signs/textures/_j.png | Bin 79 -> 881 bytes mods/ITEMS/mcl_signs/textures/_k_.png | Bin 91 -> 887 bytes mods/ITEMS/mcl_signs/textures/_lt.png | Bin 75 -> 865 bytes mods/ITEMS/mcl_signs/textures/_mn.png | Bin 72 -> 873 bytes mods/ITEMS/mcl_signs/textures/_o.png | Bin 80 -> 878 bytes mods/ITEMS/mcl_signs/textures/_o_.png | Bin 80 -> 878 bytes mods/ITEMS/mcl_signs/textures/_pr.png | Bin 90 -> 895 bytes mods/ITEMS/mcl_signs/textures/_q_.png | Bin 83 -> 883 bytes mods/ITEMS/mcl_signs/textures/_qo.png | Bin 74 -> 873 bytes mods/ITEMS/mcl_signs/textures/_qu.png | Bin 80 -> 876 bytes mods/ITEMS/mcl_signs/textures/_r_.png | Bin 85 -> 887 bytes mods/ITEMS/mcl_signs/textures/_s.png | Bin 80 -> 881 bytes mods/ITEMS/mcl_signs/textures/_s_.png | Bin 83 -> 885 bytes mods/ITEMS/mcl_signs/textures/_sl.png | Bin 77 -> 882 bytes mods/ITEMS/mcl_signs/textures/_sm.png | Bin 859 -> 871 bytes mods/ITEMS/mcl_signs/textures/_sp.png | Bin 864 -> 862 bytes mods/ITEMS/mcl_signs/textures/_sr.png | Bin 77 -> 879 bytes mods/ITEMS/mcl_signs/textures/_tl.png | Bin 74 -> 871 bytes mods/ITEMS/mcl_signs/textures/_vb.png | Bin 71 -> 873 bytes mods/ITEMS/mcl_signs/textures/_w.png | Bin 83 -> 876 bytes mods/ITEMS/mcl_signs/textures/_w_.png | Bin 88 -> 889 bytes mods/ITEMS/mcl_signs/textures/_z.png | Bin 79 -> 886 bytes mods/ITEMS/mcl_signs/textures/_z_.png | Bin 81 -> 887 bytes 53 files changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_signs/characters.txt b/mods/ITEMS/mcl_signs/characters.txt index d6cd825b..8574b781 100644 --- a/mods/ITEMS/mcl_signs/characters.txt +++ b/mods/ITEMS/mcl_signs/characters.txt @@ -225,7 +225,7 @@ _dl 4 % _pr -6 +5 ^ _ca 3 diff --git a/mods/ITEMS/mcl_signs/textures/_0.png b/mods/ITEMS/mcl_signs/textures/_0.png index 93070cc75ff6c58a9c4c8085b15ccee54865ed02..e764f3d6a0a224ad3b529855691b012fa69d317c 100644 GIT binary patch literal 877 zcmeAS@N?(olHy`uVBq!ia0y~yU|?lnVBq0kV_;xdl~AtBz`%5=DkP#LD6w3jpeR2r zGbdG{q_QAYA+;hije()!*4t^>o9-!awEf@RrRV6tGCkSkTnT$@U3~A~yyr%jFaNW# z>TFZc;Gfm<`TBXmx&;$5xIE7mpR`=GWD-|+iA~(oEX`%5`@7yvoA*?4+utTdp)EzW z&x&7%pZIEb;L(IP{2f-dn@9g$+q$#*+MID^mTH&Si%d^DOt|Ruu*S`<$R_Sl-E}=oogev6%F?F1Nlmy%&~4Akhqe#HU!A=mVO-j|D8A4sDk09M zSnBeOC(mS~92}C5hlJOJ^YT{;%OCJd+jZzoL_+WJ)JFlko=?*`$7I{9nR6ngR@$NC zLA0TykU)oIJ4$sWqsg;D@MObdo7&`_i|0^wXbvR;f+%(VaardgH4{C$Davy<2>J zYxe_=%agiWA1$2{^>E9flA|xUdZYO5o_Ms&{oHW4zvxQam&}!!r_avXektp@p6u=Y z&+`^m>+hXcqBQkf$*YZExV>y}9#OT;$$)e&xkwW}Qoy zrk7_4%>HZW_}Sv(NuDDXf*rS28d{#6)UjH6Wb&O9G4AAGjb^ErEtfNem=Bf+ytA%)S$y_deitX>DK%Eakt!I-Qd^`||7 kh5g*JX$*(NJ~1$SROJ0U?WO)P1_lNOPgg&ebxsLQ0A)iHn*aa+ diff --git a/mods/ITEMS/mcl_signs/textures/_1.png b/mods/ITEMS/mcl_signs/textures/_1.png index fc4da531ec758ab5c9bd4fb2b9026319de7e952b..7fae5fa4ced848f93a8db63025336444ae2e709f 100644 GIT binary patch literal 883 zcmeAS@N?(olHy`uVBq!ia0y~yU|?lnVBq0kV_;xdl~AtBz`%5+DkP#LD6w3jpeR2r zGbdG{q_QAYA+;hije()!*4t^(o1Uuixc--PZEH|zIZ|NIzv_&_;qz>lpIB|mtkkn~pAr)Eu&eL*?mN0ix4bXEc=^(9nv#X-$>zilq zj%GhpvN*KmNz%d!&81-$YYk!zcR4M-)~&zu($esKZ$7P#*{WC@m36CV^Ru;EZte6w z{_XwF=ok0A*Eh2TWiDB$%r9+sYK8Dlv(#lPjs0iaonFJARkH1^wCOK}@7Y-;D|C}G zU*DW8btKK+=Yo}Ai6OJ0AIqa{910674ZHm`KPqjXarDp)ky8uYc0DMGI^tl!n>6=J z!grPL-g%Cf_dh!J-$hTS?k)`fL2$v|<&zm07&r?& zB8wRq^pruEv0|xx83O|Ydx@v7EBj++QBGY+^Uv1<85kH8JY5_^IIbrrD6s!&H;kBI qSrKZKI9WArf?&6656=`vh5~IC&Xbq4V;LA27(8A5T-G@yGywol&WghT literal 80 zcmeAS@N?(olHy`uVBq!ia0y~yU|?ZjVBq0kV_;x#T_hvSz`!8x>Eakt!I-ST`N!Qr jK!Q<2scJk?W< ze+uL3R+e8ZZw>zaDsHn6@Gxmz@@(f5nZO{=R&6%9_eI}DF6X^pw0wDaWyjk;2Lw2) zcE*3U_$69Y>$jog$@SefHw=%|@mxIoL2r}I`i~bsCwu&ucDa)O>6z6pQ>~vrEIT9j zc>ep70zKm@ksfRhQj)#5Y=n{9* ztd4RswdvaUHYz|iI!ED}<7cPbMlQoemYRXfy(S-fCvB=@_%Xrx{2hVss>OzScg&`2 z(egEW@X}ExM`{J#e&h8AFuJKD&eF^Ke zquR?i_PFM4y}-mYOMTg{$GfvDPR{6eVRrxc65$n<&Wp!WJW zgA>dBuA>tg9M0@e(Fit4Q+AS(t1p3jiqZYu zkYc#tAS2V7DI!0UPfm0Wym2(Gk&KdWCDb=rZlJ@Qf=}A63J5eK|Efwr=WbvnBrCzR`Kt_Dl`4E`Mq9 z&$gWVZuQI33l3VnCM8c254%g2DqUZ8#-#LF=H>L6UmbhTZLD4FCjX?)x0i3Lt4^+M zbx`w-H|?BJ*E{vn6pnQ|+!13`G0{)EsHqzFL~L_}M7xvZ6%X+_e%%rr%N*BCmU}br zN!>}^j9=k*e#}47+WPLlg1Fc&=XdFO@d2+(|1Unlw#DyZSLT$?ZeFg#+SRfDJ@?;j z|DW~X_J!>W^POL>PAaRp)w-WC_eI%KN&O^U1_lPEByV>YhX3vTXZABNFmM)lL>4nJ z=qZCRW5rVYG6n_)_7YEDSN6xuqMW+&_a+pjFfcI4c)B=-a9mGLIKcYP_)oi`fQptd gf3x7ZloSOPh68#Wzjzxo13Z)n&H@@-nOk6Pi zwdwrm{Z8w?b57g#r(zoW?Y0}+6?aL-xh{Kdd9P|8FK2wwt@jJxRGQl6q}$)wb~E?S zS6j)Zi=y9JnCCkQUHtV$DWXwif& zwst~%(w3)7^ow@xe7Icn;@!`e`IQWh9{(h;+i+KZVchQ3n#w_zZ+!pWJSFA$(Lp2C z_w6S$gR)~P;@h4SA7+dd12=-H(qa_noSGS^E!S{*(o8O$L%$1 zDx36&FA98SyjNI~_N{H5c7M|!)1r!ZEWT0!bS!T6KYA)sNM6BV)g4Wq4T2{d9^2F=_g%b{`qaB;b*k(H z9X1mShlZ(>lsz}Ya9y6%-TG+hl&FVW4wW2z!_^zbZ}-HbUGC?G!~I29+P-A2%shQ|*7i$T&-G-F z?|+`Ruv&lbyb`6U=Sp79^tb-2lP-H=tD-WmY~_s)fo^*P7uV*@UvZIp=lPWvmzi}g zU7B8=B{2K1q2p((izj)GSO|99R%vK?c2dV`>5<8IQpC6)2WT`)y==LhDa3rRMCkPb z>D|^l{dcnZ)*tP)R}xp-_1{s?r)2h>=)CsN@F)K*YfahR{tmO zyVG88`XTql?F-u%{tPv=vU__dKlfGH(z9Eakt!I-Qd^`||7 pg?)0bz=11GD<9eC={{j(;9=+fx`@?3nt_3V!PC{xWt~$(69B?l6gmI^ diff --git a/mods/ITEMS/mcl_signs/textures/_5.png b/mods/ITEMS/mcl_signs/textures/_5.png index 684fc45e545129e81e1eee10cd4c9a6b03e805a4..baf23b273e1ad6dec02aeb3a2824a9f5b61936b1 100644 GIT binary patch literal 886 zcmeAS@N?(olHy`uVBq!ia0y~yU|?lnVBq0kV_;xdl~AtBz`%61DkP#LD6w3jpeR2r zGbdG{q_QAYA+;hije()!*4t^(o1UogwB3(%oz|eza-_&$`l>eyr_b}J{W4Pzp6V&b zKZS91E6XpIw+8=y6}Q<3c$l;fcrG6Ppts3p{l|-+lRbV+yIjft^vvp)sn*XQmYtD% zJpcVkfu406)MY9-JY8O&?oMD0TCzxdi_Q^mAw$1K8KEy;-)N25&v!5Ri{S2v{+N5t zf=PBnl0&)We)t$HTsHbcs7@ zR!6y++H`Gv8x!XLklo*Z3u?zJ&GK zQSId$dtCFjUSMLHrM_&}RHR^xbhIwjVW0-&)n$>7585^@9v$w z6}mAj;WMVi=!obqy~4FzbeVQqc*d2gkE-FjzMPsKTQ_yJ*%E(m-{`z+d!~k2m%p_5 zXIsvFxB6x21qZEOlaeQihutMhm98&4V^aDo^K$ykua3RvHr6h7lYdg@+sn7rRVUZB zI;i=^n|98q>z#UO3dcGf?uap}nCPcn)KraoBDOg~qTNaIiih|dzitVRWsYkm%e|TR zr0%3{#;@=@KjxokZGHD&L0oK?^SkuC_<+}?{}-QN+v4}ID|1R`H!s&=?dsV7p8M~% z|Id1G`@;5x`OdFbCzaLQYTeJ+u&r!)Uh&Eo3=9lxN#5=*4F5rJ!QSPQ85kHi3p^r= z85s1GL71^(seKs(0|R@Br>`sfV`foKUE?<%a_tNZ3`(9Zjv*Y^lM@ug42%p6{v20o qQ#^6NrKij-r|Vzvvbin{4A+;jvU$$Zp3A_%z~JfX=d#Wzp$PzWc88e& literal 84 zcmeAS@N?(olHy`uVBq!ia0y~yU|?ZjVBq0kV_;x#T_hvSz`!8w>Eakt!I-ST^~e37 o0+TbVoi0yH=;ACzeg+2pkG!8lPk(f0U|?YIboFyt=akR{0Cf`*x&QzG diff --git a/mods/ITEMS/mcl_signs/textures/_6.png b/mods/ITEMS/mcl_signs/textures/_6.png index 6b91013dbcc17e524e9a20cd3392e7c38c890f6e..31fcd7d727854b0b8b34b2f88d9c01ec6f4eee54 100644 GIT binary patch literal 891 zcmeAS@N?(olHy`uVBq!ia0y~yU|?lnVBq0kV_;xdl~AtBz`%61DkP#LD6w3jpeR2r zGbdG{q_QAYA+;hije()!*4t^(o1UogwB3(%oz|eza-_&$`l>eyr_b}J{W4Pzp6V&b zKZS91E6XpIw+8=y6}Q<3c$l;fcrG6Ppts3p{l|-+lRbV+yIjft^vvp)sn*XQmYtD% zJpcVkfu406)MY9-JY8O&?oMD0TCzxdi_Q^mAw$1K8KI}HZ{*%tC%fnP3+1wnay$35 zD;=p3`Q+ZyH|LA99>4jYZAw*Db-x`|mi>r|OEORYZh3s~?pa1kQxD&~(!chNpoo4; z(6=o;SrsD5x3?~^+IGWXP4lzXTTG%!F2zBM{HCh)-ZjsPNP2XzZQf4BcizvEVs_+e zWQNYlIdHkz;)Y3paL3P$Vz=r}f4hF-;Z9+bnF&1xkC#jB6Z+>@D>18hsb1h0Yd;U} zHQnKU$&%f7vKF$knE3mY9xuQCVUqbr);CGZtk3lEUaPpPrnfXb@8mO`3zugcYV^6* z&)CATPqbT+v2jMBXTY+IGj1&wRzE`4%u)Tw%CzLv+(RtV6L~Dooi=|aksBMf@92)G zZ;U6C9GaO~A~ZEW9iOD!zG~fXkI>Dtc8RTxEIKu-c-x+LE3%SKUfDErr|4?Ec`>%T zcUFIl+QG5TKzC<^Mx575Q9o^;@H6W!toZuKdtJ%PsrtMBXocr`%%3)E+nqI)+H1?+ zT`K%j{Z4Gx_e-xAG=@lJzBqBXt>5UC%R1kgnXk@VUUuH-b+gpm|4ftA(R!r2hm@8%|;L{wT zZhOP_woSOc{Ao761}V;EG{k57XEG5 zzsYsG`Tt)%uzg{^^ZmAK;YZ*6IKWlUeEMG5`bSgm_cAaruqAoByD^~q Bpe6tS literal 85 zcmeAS@N?(olHy`uVBq!ia0y~yU|?ZjVBq0kV_;x#T_hvSz`!8m>Eakt!I-Qd^`|{q ppi!~g-Evvie+i})w@xrK{1xT>JT;>51_J{FgQu&X%Q~loCIH!A71;m) diff --git a/mods/ITEMS/mcl_signs/textures/_7.png b/mods/ITEMS/mcl_signs/textures/_7.png index d13f39730eb448b35b79acced642b0d1489e838d..7594eb9d6e92af86264b85ec6056182aa10e23aa 100644 GIT binary patch literal 889 zcmeAS@N?(olHy`uVBq!ia0y~yU|?lnVBq0kV_;xdl~AtBz`%61DkP#LD6w3jpeR2r zGbdG{q_QAYA+;hije()!*4t^(o1Uuixc--PZEH|zIZ|NIzv_&_;qz>lpIB|mtkkn~pAr)Eu&eL*?mN0ix4bXEc=^(9nJ-71GUpc6>7;&NP@ydc>WA`IhcC?0F6~@&ztAZv zA#P8R)a8gL*JPs{96lcjDX%H#)vpweKcJVk>+qY1gx>49kAkY6P0KmQWZSDLb0X!h zghR)JXhTUMfey)bmej6eIW8TGoBfZTi4=-ga9DLm(`SR=$%e;!YLa^{UQ2x%-Lsfg zK_vP}1DiC*hM=G){i^PKp|Q^=u1Yg4)s5QxWQytYoXWX@SC33unQC0D9Tsb|v#PB4 z`=hM|f-;FwMH>V5ObODS6E#ep#CBf!)GM7avyCoanYr9|e(E)LQ>)wGdZlV7{5CbUx+1o5 z%hxxayh)qo)iPw&cg<*&P-iNPW|?qd&kWb)Qz|A#pGiv0;YtlqjxDg#O;VV_w$ZO@ zL-nNJs@oU5j4ym#uOu$E>wj}h#0$Qi^LN%duD$-(bs}%Z+e4z4HH6uvMcTr@?b_$L z|8Cp=tOvI*Y+sn~{Ca&-*`Hgj`x(o9%a*wx(7DOLz`&N|?e4gyVX0f`XWVk%7UV w<4SExKjdeh`)|QI<3nV}qTbHNUknUeREakt!I-ST^~e37 k0Fz?p%2`5@pBNe9H*mdKI;Vst08`%+0ssI2 diff --git a/mods/ITEMS/mcl_signs/textures/_8.png b/mods/ITEMS/mcl_signs/textures/_8.png index af994c2aa39bf9b6d49fed9d90e5575fab0b571e..b61f4e294c2076ddbc94e199619e248ff1778d9e 100644 GIT binary patch literal 874 zcmeAS@N?(olHy`uVBq!ia0y~yU|?lnVBq0kV_;xdl~AtBz`%5+DkP#LD6w3jpeR2r zGbdG{q_QAYA+;hije()!*4t^3lkO<+wB5IK?Q2kJIZ|lg9hx`c@$=(qd(Q?<^^{{j z)o|5`skW(1Vt?Ja56rDD!5&%jyw3@$P7T?S^x&gbxWD1tx1lB9zv%F9d@C=Zv#M^KtJ{&g`Sy?3 z)kZ9fwcl{E%Q*>M{PjsGqETe!3szn3kCR+_CZ}vskw2pM+)WS=3JQ$C+(CF&r_eW zMa$Rh!AnP(9H|wYM{1(E=hmHmxqjl|V)YE8gA$3yW=q`@u3LJK=j_g)=^DR8)t9hd zJF2~WV~=az)(cEbv#gg@9s9oKp<@0c<{L+S&Kp>pMLaH?X))#9PF3~v#(Bp?%u+V( z<5h6^ur`8+ljBH_caxE8vYFD6iwBn{J=N*t7f=X&C!%(vBjrG0+&;tOFRr9M_3l~C zsvzQiq=Ai{V?$8TlYUiqzR=k36IZ2~mg+`relo@Mc~0fsz^g|ltxPp8)((rc*;!Rq z{Qc3^0>PNXsG^Mld!__w&k38cZbt0Fz}E-cWnNxTmM{Ae*mrA!ovvx_&dASUQE%@o zef;D59o>@mORqaJuQa)IVPZS4eCn0XnAt{`ugqNTJ3sZBwCSzm-#VrCPWU}XDmSY; z!s_cAKi;Ix_G%fi>bqt%N~kjxMzc(~uxEzr@+lP)qt7HI%5bFyD9099=_V=6VB6@o zYvb<8zo$fB_!55ShjLNk!r$^w4moWqRUX*9PxMl1hD))O_f}skrO) zm!|*zu%2xnZ>{t%vn~6y(vB~W{lOcpP`3C3pVCwY1_rhyZ+91l{~)+v@AAnE3=EtF z9+AZi40_5S%viD1zKnr^fxX1j*OmP-vnZz?*NlXtJ`4;D;+`&!Asp9}6BI=Mv?qx$ hikJ!8ZVhH&Xne}~d#euXZw3Yi22WQ%mvv4FO#t{~i~#@u literal 80 zcmeAS@N?(olHy`uVBq!ia0y~yU|?ZjVBq0kV_;x#T_hvSz`!8x>Eakt!I-Qd^`||7 kh5g(yfdvuVl?)6Y6?s4JTKr@p0|Nttr>mdKI;Vst09pGJMF0Q* diff --git a/mods/ITEMS/mcl_signs/textures/_9.png b/mods/ITEMS/mcl_signs/textures/_9.png index 5054efc913898a71ec624d51d9321058047d7f8e..5ed82070bd983d187f5488a2026e73f3d2e2f095 100644 GIT binary patch literal 886 zcmeAS@N?(olHy`uVBq!ia0y~yU|?lnVBq0kV_;xdl~AtBz`%61DkP#LD6w3jpeR2r zGbdG{q_QAYA+;hije()!*4t^(o1UogwB3(%oz|eza-_&$`l>eyr_b}J{W4Pzp6V&b zKZS91E6XpIw+8=y6}Q<3c$l;fcrG6Ppts3p{l|-+lRbV+yIjft^vvp)sn*XQmYtD% zJpcVkfu406)MY9-JY8O&?oMD0TCzxdi_Q^mAw$1O7nRnGtMr51;{F>)tDbz4 z>k{}JctYOLs^}8`PMbR)Zg;(S`SUIN#2JsWD?9Jbx%*t^`@5`D9U*+_!S>rWxd-eK z@Va@~Xw}2Op4{tAuWlqUZ{(XLp2Z!~A$Zoa(<*e9N!k4siJhJ7(pAsecIeOSE_}Fc z;gZnIO^p8hj}k6B_$oX*9+mN1_jbH;`*XhwDNTlldgf>S@cLo>H8JDd)LkwY-&-i^ zZqSRf>`m1vTHPupaKXm#s_gyP!`}Cfh;Qhg`Od)FEaGwL>>X3)?Npt;*}*@Vi`^*F zo=rgMN0?3<3rmulQSh>iGj1&wRzE`4%u)Tw%CzLv+(RtV6L~Dooi=|aksBMf@92&w z2B$(7o{WM925nW>e-TAb0C+_dYmp}smZqs)xACtW={d3CyZ zxqckC_(9QSs^Z*7y*0NU%4~hvbyHMoYh2CAsd{@qrB083x{CMZ<)F*cW}D_Oy?QRz zs;~b1U8nDHRk9`%yp(xmD{p)Vbenr(tERE<+{#;DBGYOE78mE-UvZIrXMFHt=UhSW z==1ZgD46|DY`Rvus9Un5P)T6BD+A}*?#L3aPVt>bb;OP>3}7?8#Jc>l5?fQI!0RRK zyVZBb7je(}Cu;sry(n?vZ~GIit?wrMo_SmRO4Z%}8k-o`2Jc9cN_~{neCWfexa;+o z^1naaFZILhOYV!?7k;gpAv?e9VSbln*^2A4-xM)0Ft8?NMQuI!JQMLG5OUvL>7W?*1Y@^o@N7Eakt!I-Qd^`||7 qh5g(y0S5yC3C030g(;KS8J_C$es+#Eieq44VDNPHb6Mw<&;$UOSQ3r^ diff --git a/mods/ITEMS/mcl_signs/textures/_ap.png b/mods/ITEMS/mcl_signs/textures/_ap.png index 0575401f25aa2b159a2cd4c22a16bc1287c49e57..bced380ac30779c0289c458efe3f029578f91f8d 100644 GIT binary patch literal 874 zcmeAS@N?(olHy`uVBq!ia0y~yU|?lnVBq0kV_;xdl~AtBz`%61DkP#LD6w3jpeR2r zGbdG{q_QAYA+;hije()!*4t^(o1UogwB3(%oz|eza-_&$`l>eyr_b}J{W4Pzp6V&b zKZS91E6XpIw+8=y6}Q<3c$l;fcrG6Ppts3p{l|-+lRbV+yIjft^vvp)sn*XQmYtD% zJpcVkfu406)MY9-JY8O&?oMD0TCzxdi_Q^mAw$1O<_v#eEl``j+)#ar2FQ`zQ zvT1p0$l=8jx7V>=-FTEON!CRFir5MP`a=zS$ReSV)-P?8_P6!gwR`$A@yA zJy%~!VV);<DoNZMchF!e+EtHT%OXqR>_x?kuN zl@Pn9Na}RNlQ3>wg$0#KtE~6!ZkxWRQ$Io6_-r<~Zbeqo$t#;??i5|EH!sF^ z_s;5%Q9C%+8R+he(1`O|De9-~6Mkmhg%w{Pd9N#ZIaPo6AFc3QkNMMPZM(CkQhROL zyGw6D8oBZ3Y*Y3pMSyHlD z-4VB{zAa(fc#~gv%R1rMGY&n%jXQLiJTl_WEDHA8b3!+5qXA#5(Ta(B7IVc61$>$# z)NOCrp8Pv0`ofp>J3iV^ z`Zu|5H~;^u2evQFcfQ|tE&S-49|ySVnNL3|TVG~u*TulVz?S6g?!xdN1Q+aGKAC}m zfwRCPvY3HEPZ@+6E0)@qF)%Q&mw5WRvOi`P<gTe~DWM4fLKKk6 literal 72 zcmeAS@N?(olHy`uVBq!ia0y~yU|?imVBq0kV_;xd+lpIB|mtkkn~pAr)Eu&eL*?mN0ix4bXEc=^(9nIP#Q(d&$H?NTQzGKR4{B@&PLo7SlQnfuGYg>%9{>fbIMv?Yx z0!lx^eA-x8l8z}l&Rk?DE%@lggJ8qrX-C94CTNv&3Fo*NJ+RQfFOj^ZH1em|;|xZQ zsXe}rvY8pfyt@8ud~#yps@FC_SJy0C=bAlj&ZcK`bk`fNniXNRH770a=&Ek@@bh`^ z;`WH?H7Wae>xp$u56Wu2%yn6Gv9?Lp-XD{+W2>H?*4uw7RQl5LrOR~9v+sGWp1Zpw z=l{Ijt?%}JvC2@G>Lz9NX~VbjKM^zetDX19|H&bz@AVV7x$i1|H{Pzl;_I&c8k-o`#_mXxN_~{jeCWfexa;OG zx8ME{&s!t?%j`>T#^2C0eet_Ln9q4$w(9YLrN|gW!U_%O^81FmM)l zL>4nJ=qZCRW5rVYG6n_)_7YEDSN6xuqMZ8d|4(&nU|?X7^>lFz;kcfhpdkL|xaI+u nEoN)9W_E0w*{M^0h>;;FjFrVPC3iXl0|SGntDnm{r-UW|Jn)MD literal 78 zcmeAS@N?(olHy`uVBq!ia0y~yU|?ooVBq0kV_;xdUdNurz`!8t>Eakt!I-ST^{3sK iqdTeS#FSJ9h6)FcA3N`vd}Cl>VDNPHb6Mw<&;$TX*Ao{2 diff --git a/mods/ITEMS/mcl_signs/textures/_br.png b/mods/ITEMS/mcl_signs/textures/_br.png index c8cd9c8da89401ba9536485622da0fca7dbc9211..88b1ba4a3640c74ab3c1095800270e93febb159e 100644 GIT binary patch literal 881 zcmeAS@N?(olHy`uVBq!ia0y~yU|?lnVBq0kV_;xdl~AtBz`%61DkP#LD6w3jpeR2r zGbdG{q_QAYA+;hije()!*4t^(o1UogwB3(%oz|eza-_&$`l>eyr_b}J{W4Pzp6V&b zKZS91E6XpIw+8=y6}Q<3c$l;fcrG6Ppts3p{l|-+lRbV+yIjft^vvp)sn*XQmYtD% zJpcVkfu406)MY9-JY8O&?oMD0TCzxdi_Q^mAw$2U49`#3H*)W+lihRtg>uyHl?bny5Ei}%YH<~C7Gvxw>-Xg_bel&sfTY~>0kRsP(;5a z=-ZZ_tO}9j+gle{ZM)&HrukXxEhf<tBt1IVHgBimJMU*nF*|ZK zGDBzO9Jt(Ual<4)xZ~$Wv0HVgzg<7^aHp`z%!D3;$IGSm3H|e{m6%n$R4?$0wVwy~ zn(lDFWXbM3SqoWNO#FRHkC$KnFvzkxy)@S;7uT|Vt(_5OJck-Feh08MzHTqoZ zXKdlvC)%yZ*f^umGhkW98MhV-s~;h2=BR#TWmE>!YPpq8@HJRC4qUS8tU5z9(MO<9=>By}syb+n3ChnWxXr+I}hP zxt{Ft{m=6jR_pKOlk!+Pv8~T0=ZD5(zbCh*%v^TPCij=lX1f&^Ew|-gdC`1l{mP3A zw{?_F#E58<7=ynM|qA|2zK07YG`?ORL5%Rk?uQ5V%(1dG@7MeHeJpXWIkxp zQF^KQ?&LfAJ6V1IcS-*j-nrqzU->78oXSu9J@b}3Ywx>yk(&+IG-C{VjS4q9CRU`b ze{KJA`|l6&yfxCl%)aDi)P|nv^WXi!e9p_VRdeoCMlmojuqAoByDEakt!I*r2`(HB0 i1kK;`H)yCaFcf%j{D`@5=LiD>1B0ilpUXO@geCxBQWKv5 diff --git a/mods/ITEMS/mcl_signs/textures/_c.png b/mods/ITEMS/mcl_signs/textures/_c.png index e36136faeea4c9fedfe088089ab3e07afa538661..0ae311f3db00c30a33a089ae25c8852e9710e445 100644 GIT binary patch literal 881 zcmeAS@N?(olHy`uVBq!ia0y~yU|?lnVBq0kV_;xdl~AtBz`%61DkP#LD6w3jpeR2r zGbdG{q_QAYA+;hije()!*4t^(o1Uuixc--PZEH|zIZ|NIzv_&_;qz>lpIB|mtkkn~pAr)Eu&eL*?mN0ix4bXEc=^(9niF{Gzj)&VNFJAt9n|tDnN7rJmBl9)I0%@WVz4(Sj)>)B})I?JT&_KL)=PIl?2XKg$5XLc7p+_rE@ zXyztHfBr`b7ae>Ro*j?L_^o?8Ub+3b--VPW!$TeOvwnE}u>P8uac=4^my7Q$6m<>s z<1BkKb&6i|=_)L!Oj>2VZ+F}DJ)Qaq;>LFq%XBszdu>*zX2Yo{a!ocG7*yj^hrJ0uMMs0pF#q@bj<=nulM<%UIH7?c;i?!KVRaX4{ z(bfV%nZ&4~jRAY61ZmF+o3TzJc46S_qtjzvUeb;)`x(0K)&x6U)7+hrpTnZw-dURb z`}-Z;lJ`rmJ2I~{xpZM-JFk4|mCl&iMwhS5T<$wR^%}dW)$MP+QneF)o0?i(5!<-s z>l;trq|Neb8M5lTW;9BuGZjX&Ot`RThU@Yv6%(V+Bqio>r3NU+7Fg*fDa>Ho=vTF& zdeU#z?F(MU7e2065*OR`zd0u21>es3J8K=+UjOSlkvHS*A<@ek!tBx_ZQUuv n-u!=YYsLnN=G#783=Esy*nbP;Ft#%=Ffe$!`njxgN@xNACa;P8 literal 82 zcmeAS@N?(olHy`uVBq!ia0y~yU|?ZjVBq0kV_;x#T_hvSz`!8s>Eakt!I->2=?DKo m4!$|PdJQX?uJU|hV6flL@k7dSPb32a1B0ilpUXO@geCxmzY}%< diff --git a/mods/ITEMS/mcl_signs/textures/_c_.png b/mods/ITEMS/mcl_signs/textures/_c_.png index 7917a84e226d08990284a9329cabe02d25d9eae3..1352609136cc971650a74ac57c6709f298a4cf95 100644 GIT binary patch literal 883 zcmeAS@N?(olHy`uVBq!ia0y~yU|?lnVBq0kV_;xdl~AtBz`%5+DkP#LD6w3jpeR2r zGbdG{q_QAYA+;hije()!*4t^(o1Uuixc--PZEH|zIZ|NIzv_&_;qz>lpIB|mtkkn~pAr)Eu&eL*?mN0ix4bXEc=^(9n1PFKhG!(y8clz7)6AyO^o6Jn;5!-!UYM;QJ?Y|vfOJv?(&WCI)7)<*~kUU4O^LKu90Wv z5UkNwb7o>Pd^}-+&&3(N9EBwxR?e{We#FhZI^*3@(tZeeKg z5@VLi5jo)HInjQajAcmaT=!M8u3p)iaduMhwKLR! zyXs z&hy>$J59^#kM{oWjEQ*hkH08!q4krxXWv-2#(fueHCwQiJKSfnk4#R0MBL5SztsMg zN&j2jnD2bQZ6EL2{arUdW{dx0oAbYHRkD-b4h9AWwj^(N7l!{JxM1({$qWn(oCO|{ z#S9F3${@^GvDChdfq{X&#M9T6{V}sBr?uGbEA`?G3=9gME{-7_*OL<#aQ)yvs=*}j q=KqUZGd9dT+Hy4Kj#wZAgUk!|zYWLCOBom#7(8A5T-G@yGywos43qQ# literal 84 zcmeAS@N?(olHy`uVBq!ia0y~yU|?ZjVBq0kV_;x#T_hvSz`!8w>Eakt!I-Qd|EE2H oh5ekH@PUxVm8@3-J~1$SW8nOL{O}xE1_lNOPgg&ebxsLQ0Jt#~1ONa4 diff --git a/mods/ITEMS/mcl_signs/textures/_cl.png b/mods/ITEMS/mcl_signs/textures/_cl.png index 106b393748d7d33a1a5979159987c03701365407..38cad796c8eabcc9a623cd6a347e9d9f7506f914 100644 GIT binary patch literal 880 zcmeAS@N?(olHy`uVBq!ia0y~yU|?lnVBq0kV_;xdl~AtBz`%61DkP#LD6w3jpeR2r zGbdG{q_QAYA+;hije()!*4t^(o1UogwB3(%oz|eza-_&$`l>eyr_b}J{W4Pzp6V&b zKZS91E6XpIw+8=y6}Q<3c$l;fcrG6Ppts3p{l|-+lRbV+yIjft^vvp)sn*XQmYtD% zJpcVkfu406)MY9-JY8O&?oMD0TCzxdi_Q^mAw$2U-B;Hqix>U1s_4Jy{wB$`sFL5c zim8m^b59-}`kBRr4Ql-#F@1K0{V|&BtB7F<$5IOgbC6V7Xx{^UO8! z%p8I>+G5U3OoopqE%3QGqnD$wTRF{?Bn#$D&p%^$YuB2Z?!v8W z7As1&AGyxRv}TIP&*YO6okOqJE?E`n8{2(N$1?S-WprG5i0Q_Ztea=acy4q}szqfC6-nBhb!>r3+ zTKuyu=e}G0vh;$3R!A_w#)fldR~0M>(c*=Pq1zAd)SpZrL&ut>#%lp?0?Vw zciaDGJ-B^g`@($Z*Q=AtYHqdeXI#ItY)xw_Uk3vN16z`}y9>jA5L~c#`D6wL2F?PH z$YKTtJ!KGPtXOJa#=yY9UgGKN%Kn&Hlv7_=_ui;MsO literal 79 zcmeAS@N?(olHy`uVBq!ia0y~yU|?ooVBq0kV_;xdUdNurz`!8p>Eakt!I-ST_2+m( jLXm-l%d3OB3=9Px96#=Ezg)t=z`)??>gTe~DWM4fXjT)g diff --git a/mods/ITEMS/mcl_signs/textures/_cm.png b/mods/ITEMS/mcl_signs/textures/_cm.png index 6391ec395eff083e26332b0f662ae243e0f8374a..6b2b10a17eb252b67aeb35b9e152145475c6fa23 100644 GIT binary patch delta 839 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 delta 824 zcmaFKc9*TbGr-TCmrII^fq{Y7)59f*fq{XEfq{XCgN=cK!DCNO2m=Gt*{YC;lAy$L zg@U5|w9K4Tg_6pGRE5-v%rpjuid#>o#%{W!!P9y_(sf#cO3RTV1N+d;&5?C{GfM8i ztDd|{<+ItcTM1hyJg70^dwjn>?MGX8(#Hu`Y^KjqUKdgy^suY(`0riSU77dacl-OV z|0ZzzaO0u{(|;TGKaNkl{+z}8c-`Jx&2t^zs9%Uqi=27=$B&!s$lY+UgIr5IT=jQs7SQ*;^Eg$|Gd^2<+m85-?-F}6 z#b0kcy;?-^+2aZKO|0t6E}8GPx%A<5*Nd4ypYl&UKE?mm*_*ZJ3g53=#ahs}|T+WM`(k1a` z;*SsII(x3Zn8G|y?#RK#jZzgH_Sc-O^Kbr?vNS4hQWtI#OsmOysQq~UmU{OEmfGt+zh1^vfFEn{!y} zq=GxXuXeoV&*0H=r|am128S~$UNaXNN(+{hd{`M_>HUbC#bc^D?YL7$1)Jco#bS$&#SFFn5S~ctHm8}_PCk0=dv-xSMTd1)2vT0|} ztc@uB_~g~ivv<3%A95{d$vk<~>0^-BT8}8fT}frF?rX*4iDmdf)Z^&+`^m>+j{0(pWmNtBJbK_TB zl-?O%AH3K(SJ3jfr{6l*=g$3=9mOu6{1-oD!M<*b{~` diff --git a/mods/ITEMS/mcl_signs/textures/_cr.png b/mods/ITEMS/mcl_signs/textures/_cr.png index fc3506b9693d377f4048e7c9cbfcd97d85901891..cd6d6dac69d7222d858e78a3d4d8ac0fad9feedd 100644 GIT binary patch literal 878 zcmeAS@N?(olHy`uVBq!ia0y~yU|?lnVBq0kV_;xdl~AtBz`%5+DkP#LD6w3jpeR2r zGbdG{q_QAYA+;hije()!*4t^(o1UogwB3(%oz|eza-_&$`l>eyr_b}J{W4Pzp6V&b zKZS91E6XpIw+8=y6}Q<3c$l;fcrG6Ppts3p{l|-+lRbV+yIjft^vvp)sn*XQmYtD% zJpcVkfu406)MY9-JY8O&?oMD0TCzxdi_Q^mAw$1M8J<60-)N25&v!5Ri{S2v{+N5t zf=PBnl0&)We)t$HTsHbcs7@ zR!6y++H`Gv8x}A+>_@$e#%A-2JJ)v!8sp!#T^xfUU^>`iH3>%3mG6Fh{$zbJ6`mr>KP3 zJ)780M?4AR)>T+gnY7A!-|n{Qdph+K#EtJJmgQ_X_S&pa)3(^#EWL5wF%iC$O?5m9 zE+5uL@NjY*>G5tda!ocjifKI*Nx^-yN(%dVTEQd{F{PEOU^`zdvL{L@vuFE0mOo;KSwf9ch8u~vQc z=kGdwkE@b3nc$_&D_eQvL!jH-6I(Tnedku*`VyH|8?d-I=l+U|>^tLw7dz()dPkq1 zcSXVMcVg4E(nZ~p9fe8)+g%wr&vr+acy)^JJgOshY+(SK=_S_XmzCI>G6h~QVc)I3 zGrov>)<046f9gev3xC_6Xl;Er;rGnj;#aEf{@2*VxHfo4l2q!Wq~=2(PQ_iXzm)&| z;eM$fW?yn&+`jN@)ePDBWe@Wk4wNkq4&3~Wfq{W7$=lt9;Xep2*t>i(0|NtRfk$L9 z1B0G22s2hJwJ&2}U|=ut^mS!_%q+@jz_ZjTei;J;gS4lMV+hCfTYRT= i>TK3D_-yZZn<2}OmE}f0|4If11_n=8KbLh*2~7Z&h=pEakt!I*r2``=^H kAN~QFiMAYUY77h&4jeyB)2>cuU|?YIboFyt=akR{0Bdm)ssI20 diff --git a/mods/ITEMS/mcl_signs/textures/_dl.png b/mods/ITEMS/mcl_signs/textures/_dl.png index f02d723b77e0dd9c8bdd5ebd82d2e6a286569be3..044e4f00b9664bd2a833a9d425294b8d4f2d04c6 100644 GIT binary patch literal 884 zcmeAS@N?(olHy`uVBq!ia0y~yU|?lnVBq0kV_;xdl~AtBz`%5+DkP#LD6w3jpeR2r zGbdG{q_QAYA+;hije()!*4t^(o1Uuixc--PZEH|zIZ|NIzv_&_;qz>lpIB|mtkkn~pAr)Eu&eL*?mN0ix4bXEc=^(9nFdh=m|2w5KrBLG*&PN321QR7#}JO|$q5SVf7%Tt uF0v*h{r{MGRQu!smucVrFZs>HaB?Z<@2tybo-r^mFnGH9xvXEakt!I-ST`G;Mw q$AE7a&$6O9LOw^b8#x8o7|!N${<^TV`8)#y1B0ilpUXO@geCyJuN2V$ diff --git a/mods/ITEMS/mcl_signs/textures/_dt.png b/mods/ITEMS/mcl_signs/textures/_dt.png index a965550eafc379cb968340e4587b942c375beef0..5dfa75349e3d10546bce4f0ac7377ec524528e31 100644 GIT binary patch delta 837 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 literal 75 zcmeAS@N?(olHy`uVBq!ia0y~yU|?flVBp~Zk&fYK^cWZzggjjwLn;`P6-582`xiV2 c4d!E5b%NtZ1@E&<3=9kmp00i_>zopr020m-?f?J) diff --git a/mods/ITEMS/mcl_signs/textures/_e.png b/mods/ITEMS/mcl_signs/textures/_e.png index 9cca45b5ed67ec7ca57ac8c7fbc0688f86a4356c..316e966a1c6f29d4620cf36f40d41f6e906acdaa 100644 GIT binary patch literal 880 zcmeAS@N?(olHy`uVBq!ia0y~yU|?lnVBq0kV_;xdl~AtBz`%5+DkP#LD6w3jpeR2r zGbdG{q_QAYA+;hije()!*4t^(o1Uuixc--PZEH|zIZ|NIzv_&_;qz>lpIB|mtkkn~pAr)Eu&eL*?mN0ix4bXEc=^(9niF{Gzj)&VNFJAt9n|tDnN7rJmBl9)I0%@WVz4(Sj)>)B})I?JT&_KL)=PIl?2XKg$5XLc7p+_rE@ zXyztHXZ}YCmmPc+o*j?L_^o?8Ub+3b--VPW!$TeOvwnE}u>P8uac=4^my7Q$6m<>s z<1BkKb&6i|=_)L!Oj>2VZ+F}DJ)Qaq;>LFq%XBszdu>*zX2Yo{a!oc-qmx&so0sdy zaf=@mT&60{ebifX>!Hlnmt7Y{rMAY^oSdq+_fzWh_@}FQUtSKnJZ-jV{?e=GVy(8- zpTFz$J+4aDWP+D6uWaRw4}orTPi)mR_MKaK>q}%>ZNTEqx%XFGWZxMdyx2Kc&^!A4 zyekT3zZ09T6)x(Q>?l+c*zU@}dA2*U#H&+$=TRN8W6J{AOfRu6zpTX8lqv9f3HxsK zo$*E7v;K*i|5GnYT=?7mL~HB23BPCF7Qa$;H(ums!!^Aa!(OAp4UUNwsq0_Q{&G9_ z$9lGXytUH5%(nc~N;|$j_J{QP{bg&klV*HpU|?WN@^*J&_z!{$_AZ~yz`(#+;1OBO zz@VoL!i*J5?aLS#7}!fZeO=ifGmCN>3ap4QTEW1;AnWPk7{YNqIbnh95B{SXOd2_E kCXQ}7S|4Y7GBPmi4`Kg(zNxo{fq{X+)78&qol`;+07Alpwg3PC literal 81 zcmeAS@N?(olHy`uVBq!ia0y~yU|?ZjVBq0kV_;x#T_hvSz`!8k>Eakt!I->2=?DKo l4nD5m_Ku<)p-&hYzWwL=w&ns?CIbTlgQu&X%Q~loCID}M6M6su diff --git a/mods/ITEMS/mcl_signs/textures/_eq.png b/mods/ITEMS/mcl_signs/textures/_eq.png index fc5e8310ffeced933cf007bcf8154cebb8a0bba8..166f7a30d5b87bdc1ed905ae86bb88a6cbac3f5d 100644 GIT binary patch literal 867 zcmeAS@N?(olHy`uVBq!ia0y~yU|?lnVBq0kVPIfj$lSk-fr05tRY*ihP-3}4K~a8M zW=^U?No7H*LTW{38UsVct+&&nH$73~X}cfkI;}yascJk?W< ze+uL3R+e8ZZw>zaDsHn6@Gxmz@@(f5nZO{=R&6%9_eI}DF6X^pw0wDaWyjk;2Lw2) zcE*3U_$69Y>$jog$@SefHw=%|@mxIoL2r}I`i~bsCwu&ucDa)O>6z6pQ>~vrEIT9j zc>ep70zK<|fEMD~2s-pj*`NQtv)o%*wT^T=TjDZT%U5c5{*?_!jx_Vy7CYaWe&* zGjj;mXp1>BF&RFdw7}=$j9!kyk`F5*EWICbvv^FkZsjynk}Q}rJ^zg1tzBzsx(l~5 zu<*4@TzJ6180OXWXXBF-3s=3i3%a^y**e$kX>&F`o1?qldey85qpdkt(LXqMNl%viAO%q#axJ^t9goQ=!tAmM>kVYo2}2YxUgS zB{Ki#?QVUy_ls4A!c;dYt4|vqF7C0Km>rxp%j)x%mz&T0THyBl#=gMC{6+hhxwYR? znzn78?Mla-Z--gdzIG8e7I^HUkk`#1G)sK*iz!0-Mct7)JJ|D3=9lRN#5=*4FB8v&+KPlVBjq9 zh%9Dc&{GCs#)_r(Wef}q>?NMQuI!JQMLDf3>Li_KGB7ZRc)B=-a9mGLP>?e)`qRFd cqjM4y!*o6-=GN@ZuAt20>FVdQ&MBb@08)gDUH||9 literal 76 zcmeAS@N?(olHy`uVBq!ia0y~yU|?ZjVBp~Zk?&VunZdxoAnfVl7{YNqIYEI(Lh_%m dh$0&ULsbD2qvZ_YE(Qh$22WQ%mvv4FO#m7i56u7o diff --git a/mods/ITEMS/mcl_signs/textures/_ex.png b/mods/ITEMS/mcl_signs/textures/_ex.png index 83500a411b3f2232783f3743d5200d0dfa22aaa6..65a76aad196a84653ee781ec47526e19ae030890 100644 GIT binary patch literal 875 zcmeAS@N?(olHy`uVBq!ia0y~yU|?lnVBq0kV_;xdl~AtBz`%5+DkP#LD6w3jpeR2r zGbdG{q_QAYA+;hije()!*4t^(o1Uuixc--PZEH|zIZ|NIzv_&_;qz>lpIB|mtkkn~pAr)Eu&eL*?mN0ix4bXEc=^(9niF{Gzj)&VNFJAt9n|tDnN7rJmBl9)I0%@WVz4(Sj)>)B})I?JT&_KL)=PIl?2XKg$5XLc7p+_rE@ zXyztHXZ}YCmmPR*TI7otzTKWv-zziE+Ho@HF%IRrRS&fvzQ5AG&@%j$kn8@(En5!k zsd#F#Y~zWw)>|4Ho^`H#_v4*Z+$Xht4Y6lR+HY<=AhrJXk)>bG=-!;eS|t^1G2!Gd z!v=wa+mnn`6ab+y?Ne{bLDylZ==hFO=t zyz$SrocnI|%hC%DTD>MEPZAHiOO`5KUv|c%^jYTR^qF5Bd(UmFUF;_Rq|UdOZ>y_L zu5EQt^Nly{oKeR+_0klMbvoP;V^lHGPrIn88uvtObA-ffC&?=w;&c4EB{-Hju9+c~O1)`wH~uFJoa zzy0BUsUK!va$nrO@N4x9+5Ke?^Vc6PTVwWz$&!JAfi20~-G$*l2rk&Wd@=(A180Fp zWHAGSo-znCRxGtIV_;xlFY)wsWq-^p%4w*S(4VZqz`!8k>Eal|aXmRff&EXr;fxI@ hgETz$ycJ<$5PHePeroPLGX@3*22WQ%mvv4FO#t6mi~;}v literal 74 zcmeAS@N?(olHy`uVBq!ia0y~yU|?imVBq0kV_;xd+r%OhQk%Czr(8Xj2IXg7(8A5T-G@yGywnxmJqoB diff --git a/mods/ITEMS/mcl_signs/textures/_f.png b/mods/ITEMS/mcl_signs/textures/_f.png index 1ac67a01bd338c5f383c6a760db752bb55ad6571..1e431df13bd8119194df63f01ca5de10f53c9b4c 100644 GIT binary patch literal 885 zcmeAS@N?(olHy`uVBq!ia0y~yU|?lnVBq0kV_;xdl~AtBz`%5+DkP#LD6w3jpeR2r zGbdG{q_QAYA+;hije()!*4t^(o1Uuixc--PZEH|zIZ|NIzv_&_;qz>lpIB|mtkkn~pAr)Eu&eL*?mN0ix4bXEc=^(9niF{Gzj)&VNFJAt9n|tDnN7rJmBl9)I0%@WVz4(Sj)>)B})I?JT&_KL)=PIl?2XKg$5XLc7p+_rE@ zXyztHXZ}YCmmPe?CLWK;_^o?8Ub+3b--VPW!$TeOvwnE}u>P8uac=4^my7Q$6m<>s z<06|gb&6i|=_)L!Oj>2VZ+F}DJ)Qaq;>LFq%XBszdu>*zX2Yo{a!oc-qmx&so0sdy zaf=@mT&60{ebifX>!Hlnmt7Y{rMAY^oSdq+_fzWh_@}FQUtSKnJZ-jV{?e=GVy(8- zpTFz$J+4aDWP+D6uWaRw4}orTPi)mR_MKaK>q}%>ZNTEqx%XFGWZxMdyx2Kc&^!A4 zyekT3zZ09T6)x(Q>?l+c*zU@}dA2*U#H&+$=TRN8W6J{AOfRu6zpTX8lqv9f3HxsK zo$*E7v;K*i|5GnYT=?7mL~HB23BPCF7Qa$;H(ums!!^Aa!(OAp4UUNwsq0_Q{&G9_ z$9lGXytUH5%(nc~N;|$j_J{PcgtFEBE0m5hFfgzsdAqwX{0G4WdzVjUU|`@Z@Q5sC zV9-+rVaAH3_GJtV4D2PIzOL+#nMFAbwemtkD$iTqB;OXk;vd$@?2>`qqg(3g| literal 82 zcmeAS@N?(olHy`uVBq!ia0y~yU|?ZjVBq0kV_;x#T_hvSz`!8s>Eakt!I-ST`G-Bx mg58;IIhPOPp|lBn4EsWOKijXWDP&+^VDNPHb6Mw<&;$TWHxb+b diff --git a/mods/ITEMS/mcl_signs/textures/_g_.png b/mods/ITEMS/mcl_signs/textures/_g_.png index 3408aa0e701a5997d3b9499dcc896253ab8367d9..bfe05463823d72b814da4549e7f7baf6bb63c549 100644 GIT binary patch literal 884 zcmeAS@N?(olHy`uVBq!ia0y~yU|?lnVBq0kV_;xdl~AtBz`%61DkP#LD6w3jpeR2r zGbdG{q_QAYA+;hije()!*4t^(lT_4sT>nS5PH#|YIa1^yCwQ-M`g`t^SF&#jKip_9 zy+|lXmF14|3a-cN?bClSx4Hy-WX{RwtSpbb@SZM0_#No z59hz92rSlq#K|t_B=qr%X?Fr^(2_->Hjy3ERTs_Q7VEn2n%S4~S<6&j|ed0^@ zTs^U(t$$JeZn2Q#V$vO@7xn~1FL2^9Rabo#l6mPy?&3C8HMyLOnbIZkX5xjifKI*NxHR)2<1<}RYHd%XrOwx|6dU{%K|EW;vOUsuo(>2e&=e2t7?h={* z^LDqs+xx{TLt(0$l+~vV4;S}XP0S8Xn`QNR%gfDYel2i&eq&$YV*aB2%iP*;DNWlp z-*)A}oNvl3YhSyF8w)&kQON6N5Sk^v`Nb3={i5zjogU|fJXuS){g%7(uv}KS=E+~? zU$p;;n8{!5yg&X=4mo|VpTNz1SMj^?cKsD!chv``Fh?yf$dpQbl+=9q!>PFI`Iqvy zKitpugYS#%3+oHN!VRte-D=&>xKpQW?Zn3^rx_R+*pj^6T^Rm@;DWu&Co?cGa29w( z7BevDDT6R$#Zvn+1_lQ95>H=O_Q%YkoQ9^4W1hWdU|>-2ba4#fxSpJ_fa?eUQ4J=E qH~(MUnz2E$QRjrm1tl&9hQ<3h{yuErv14FhVDNPHb6Mw<&;$T#M28gs literal 85 zcmeAS@N?(olHy`uVBq!ia0y~yU|?ZjVBq0kV_;x#T_hvSz`!8m>Eakt!I-Qd|EE2H pg}wE!ytCyjGap@!$WIImOXIn}_P%~y#=yY9;OXk;vd$@?2>`gM6yX2> diff --git a/mods/ITEMS/mcl_signs/textures/_gr.png b/mods/ITEMS/mcl_signs/textures/_gr.png index 007f12ae3cf3090ff1a071287fc9c6ffc4d3b831..3f806499abd107f9723b6be41a887676f8c88df6 100644 GIT binary patch delta 833 zcmcb^_LQx@Gr-TCmrII^fq{Y7)59f*fq{XQfq{XCgN=cKVO2u8E&~J8)vAz)lAy$L zg@U5|w9K4Tg_6pGRE5-v%rpjuid%1||eD>l>TD0^wGET}(v;Bn}>c}Y=kLrcDY(c$0t zR-9+zg6Xdf=SS~%TKAoE+O|Ix)7Wpf-Ppd+{QT_&KIeN5Ui+Nu@nh2EI=gzMlR7r8GxMsG-96#;>j!t; z-Y1E_o_4xe!|6=4;{N*Xi_<3W>$}@^;c?fCcRydYdiZ?YXmc#DME>!fvhZNHB}F%8 zSKU4(rr)!7RY z#-*K$;tQRk5@KzNrB2UylE$s8uwY~ID(!u%+uHYZ@+YVp$0nBLY&iDVs8Hi>vA0-y zU}p6Yb+3n+xX6Jfj2k#eAL-afTY^bl!%qTPC z?MYXUPF|gEUalX?f@ zTwnggZn@j+TPoA0&AYqOG3Q%a)3ee=lO;O}l?1kXGH{-q99iPkslM~1j@Yq<0c@t1 zIG0~mVQYG+a?R1ath{J`5%;WrUDE$MV`jYg$G+3xVs4TA&b6K-hrZ*}W^4r8(Mo-0DtwgTe~DWM4f_tt$z delta 823 zcmaFLc89ILGr-TCmrII^fq{Y7)59f*fq{XEfq{XCgN=cK!DCNO2m=Gt*{YC;lAy$L zg@U5|w9K4Tg_6pGRE5-v%rpjuid#>o#%{W!!P9y_(sf#cO3RTV1N+d;&5?C{GfM8i ztDd|{<+ItcTM1hyJg70^dwjn>?MGX8(#Hu`Y^KjqUKdgy^suY(`0riSU77dacl-OV z|0ZzzaO0u{(|;TGKaNkl{+z}8c-`Jx&2t^zs9%Uqi=27=$B&!s$lY+UgIr5IT=jQs7SQ*;^Eg#-2|Ives4!#M`jz?uY*R_sUc7NvgA;rnyP>;WEP3oV?-|9I`o@>P} zda>P4gL_SPxNov#_nlpbxg9d(d`n;Nj{Xr~{*gI?(ebX4wOPdD()Jxw=51A-z4?HD zGS|mC(-Xfq89FCKZdY@^FpW-j-gpL&hm)N1`(Zqq8| z@7eWPB`b83GJoHkEOjQ$-syssUx^{Jp&!emZ5#_0R2p{sX?|4NKI7;nKCRRM<=6r% z-6Vw>Y#aTmHdIggt-5`|%k4Wpo&780MX2{Qp7wu@(aZ1B0ilpUXO@geCyJtA#uO diff --git a/mods/ITEMS/mcl_signs/textures/_gt.png b/mods/ITEMS/mcl_signs/textures/_gt.png index efe2c94a6d02122d102e24281990953b7450eff4..0449b44dea1c7e5c1e21273b298f70193ba5aa7a 100644 GIT binary patch literal 872 zcmeAS@N?(olHy`uVBq!ia0y~yU|?lnVBq0kV_;xdl~AtBz`%5+DkP#LD6w3jpeR2r zGbdG{q_QAYA+;hije()!*4t^(o1UogwB3(%oz|eza-_&$`l>eyr_b}J{W4Pzp6V&b zKZS91E6XpIw+8=y6}Q<3c$l;fcrG6Ppts3p{l|-+lRbV+yIjft^vvp)sn*XQmYtD% zJpcVkfu406)MY9-JY8O&?oMD0TCzxdi_Q^mA;W8TCp}r8EMD~2s-pj*`NQtv)o%*wT^T=TjDZT%U5c5{*?_!jx_Vy7CYaWe&* zGjj;mXp1>BF&RFdw7}=$j9!kyk`F5*EWICbvv^FkZsjynk}Q}rJ^zg1tzBzsx(l~5 zw0MazOUWo4@ba8!KTXCmr1Y-)s##aBY|S`3Dfrr)%}-0+LxsJUO*?yLZA9tEC$Dav zz1w~LkZVC}=EF1J1tWF$_ts>=2>4H-(A1*A|U$6 zrE8njO*_uk%~()6_eBz0(j1N>xq=Q(pOeJq20e1kGwg0H)R^MfTXOK_mX5{*sUub| z55Dt!H~mi2vihUF|2tzMUi{-PN?d6Dr0&@_)~#{h?YnXuUW=@o;Wl%}jRgjKHeLTZ z|I6*#AM4rn@zzTJGTX9GEA9C5*dNjEakt!I-Qd_eWi) fq1BO*fngB`%b&uN-##)hFfe$!`njxgN@xNA{Yeor diff --git a/mods/ITEMS/mcl_signs/textures/_h.png b/mods/ITEMS/mcl_signs/textures/_h.png index cca4751a325f82b1a8f7bc6810af099f124163ad..bd6f1891c030f1d24e8d159912c139d5ca4ca7a7 100644 GIT binary patch delta 870 zcmWIl%Qiu|p6O~;NJL3cV!1*=QGQxxPO3slWkIS!YDH!m14G5Fx6`~Q$!PMleV=p4 z-9gCdk%dZs$IgQ?_w7Yu^|#9=R*P-U=wJ%cRJovjg6r}9`m`TyPMtO?rsq|kcTDoq ziZT39p}l=x(yg~^pIpAY+U7`EoPkSIT;D&7U!p~|J{wA&)L&n1bHngR9nZzPAM`fa ztp9lNbF#+|wdJ2>PR$Ize7Wpg|82wSp8fXf&IY><%`14Is3N#lU%yGzV`5j_g-rtb zo<}0ePcNE(T(9QHSKEs37o*=K*%npuy6y-*k#A^Kbjf_@ox2}ScfEM{^J%N6&&QoM zNAu3TEAG4fF6&fB2w!?|y?pddWsNwFrEfANuYL&b$-Un6>P8atM!s3%S==EVf@eG5 zya~y?bfb20o2r^z&WoASkM^bL9c#VaHYsfBNj4kXj%F8T)5aO^vlqVIo>Si|Gtb&_ zGUqW4a}!>o<21{DMpuJ;iRJtZ0sBxf`Xp(tGe@riuyW+Zl1MEY;9!G zsaeI__Pkq>m2~pTrkOiMSL@A-vE9A1zWQU-4vuvOx;rB@;=ERh`f2-wpILWd#n(sP z>q=fu)!+R`D?Ha@{bP0l+XkKnz|R9 diff --git a/mods/ITEMS/mcl_signs/textures/_j.png b/mods/ITEMS/mcl_signs/textures/_j.png index 9b37544873416ffb4496c9888135ff041c164110..7fec502159c9602e6f72c34c360818204573a705 100644 GIT binary patch literal 881 zcmeAS@N?(olHy`uVBq!ia0y~yU|?lnVBq0kV_;xdl~AtBz`%5=DkP#LD6w3jpeR2r zGbdG{q_QAYA+;hije()!*4t^>o9-!awEf@RrRV6tGCg_EnG*Kcx_IH=ch99RTmHAQ zM2OchK+c5o@%8hPbqgkBaCx3BK54mV$t14u5}UZES(?i}*NNWMwLR^e^PAOKCF5z; zndH~uC%)PpxHL`v{HKK50>8~%%nzqed|LT+`@DSTL(}JcE7quv@#Q~#Q+#`FnRI=v zUt2;+tL?)B&K^qd_U++FQ*hOaIykqr!c*y2SJ_GXj@T1l|30`|rN6Pe^z>6p5yfX~ zC&VXhdAdZuXy?v{%Ox+~{d}2w;*3Yhl^u8I+dEl)y0Y@plEQ7hQp;vkY*?6@*YSJOP6_cm^(kAl ze9a!bbd<@FTETgwW;XZSy3;S$Pdr?#o?&!QBJs#zebkCfZSf;b#*khwYjl0F(e&?8Mdo^=Tq|{0~ zbUcVQloS%^kZfm3?K+m@(y_SN|LB=WA$bLdRd+OfHVB?RHR^xbzUyjVW0-&)n$>7585^@9v$w z6}mAj?lY#v=!obqy~4FzbeXnWc*d2g4~p(qUrw~k)=gP#w#47tH#+ayo~dEh1f`eACNy(GM!|sx$O4pa2F)4kPc{zRNSGV48+iDlN=|8bs?l$|D(lkHY z-NDT_-t==u9q-gjQ#jV?a7T<$#Y8{tqNZxx6S2(^60@BouXu>h@#~i0SmwB9a^9PF zPwbwGnfw(s|JM-{@!}u*&J7oGi}H8wbzXb@bGMTEg00-)K8t;1asnjcZodAdR=bn; zf7XNB7q&0VcYeJ-sqD|K*84jAW%FXUoqor_z`&N|?e4Eakt!I-ST_2;-q jW3t48me2C5Wf_iq=KA)ashop>fq}u()z4*}Q$iB}c-j;y diff --git a/mods/ITEMS/mcl_signs/textures/_k_.png b/mods/ITEMS/mcl_signs/textures/_k_.png index 4444abdda949586bf25a7638451f856046e70c0a..5e0a6b9958b2c1219bf9e371bcd5cb95db7e8def 100644 GIT binary patch literal 887 zcmeAS@N?(olHy`uVBq!ia0y~yU|?lnVBq0kVPIfj$lSk-fr05tRY*ihP-3}4K~a8M zW=^U?No7H*LTW{38UsVct+&&nH$7G3as4mp+SZ`ba-_hZf7Kaz@7p<~-yV5%N`BS*d5~J|!gRVOQVr-FI}4Zh2pR@$#kJHb=_h3|yMR z-W|8;t80y!&#WW+^Q#_z8P7&}=Pw3(x^>R4uK)5!LTKO9l6lUSkF%;G&+XhHyZQK! z=fy@Wi?!cyvdcLM6@Gu}YQU@+bdl?w&Jk~+i{V>D!~a>8DPCXS{QX7k5xr~5)4vC_ z%;&T;)4aq6ApM<n6slzy}?MekVa?Y2o_ zOHZ=d*mgAgGMhHekS|{Nc6&~JugpAa$H|<>IF##FJ=A{q{!05o%kWo1uKORiY&o!} z;;G59jVIPxZ)s?F*17WCk9SgWpVam>#GWZ>zq#>%)cV^;mVP;-dvgwJl~l0Bgp%_{pG8bWpk&qz?7#CW{&=P`-JYfqorF5%AY zup-59!9g~rHB&@>CZC+>9D2QS$*M@-*zRjOmZ@hgqvO&;OgE-v-8^%rD^%Qn-MqVZ z_EzY|u(;2d7NaAgzw`>%a?xelZs8eMsy?cQ@A`6TdTia))n-fly?vweuI-r`W?laB z#y{I~?z`15OD{NR^_rACNj&T>S*mn>*%_14XPKANXMT0;J-4lPv77vpI^SNtt*$z` zw$(w+H{P^!Mjh|eOH(-3>2ODkQN=_*?V_e?+!L|Q5fZbVB(Hdg&++S);8^CkX0qIy zc~9z2>Sp{3zw=}MiPqM4{}sf=b~(RG&x;RuU0NTQ!W^}`;Hb%|BL~@9A5Pu7F8@;g z_J{kWewcm9eR2E3uhlbT_m@4)&%IK%^!>a!XBZe5n3BBRT^Rni_n+C%z`(#+;1OBO zz@VoL!i*J5?aLS#7}!fZeO=ifGmCN>3(U$3&|+X<(C~C|4B@z*oS?uUA^GpHCmUPa u|9~?G4t$V5<{+G!kdW}>e2b170|SHDM(&^28+~VkGL)yQpUXO@geCxx%a4Kp literal 91 zcmeAS@N?(olHy`uVBq!ia0y~yU|?flVBq0kVPIf*9mleifq_BE)5S4_<9c#}g3zDz wAN=Z)5({KREZNo=1xyk=mEtl@m4Tsc9q-q9CnHrD7#J8lUHx3vIVCg!0Az@7p<~-yV5%N`BS*d5~J|!gRVOQVr-FI}4Zh2pR@$#kJHb=_h3|yMR z-W|8;t80y!&#WW+^Q#_z8P7&}=Pw3(x^>R4uK)5!LTKO9l6lUSkF%;G&+XhHyZQK! z=fy@Wi?!cyvdcLM6@Gu}YQU@+bdl?w&Jk~+i{V?mlj4u-J^5AoL2hsVjiXghKFM_n zd=5MzZ)jC?iGQcfoe#HrUcCJIw$;PulpIB|mtkkn~pAr)Eu&eL*?mN0ix4bXEc=^(9nYDJ;o8eRR3vp4^q^EfWnS90R1hdQs02bJ-6i92al zN4S~BbnSZ^6(H-Kqj1gfvr}#(m*FBy&A{belaJ*|oB9}jOmIGZN8r0^v7z1_vngA& ze9a!bbd<@FTEThb&kXL|{i(mRpM1E(Im^euP2yuPZ#-xHayy>0JA+Ox1VyDEylzIpcU zX!b)Ti$hzUBrUAaTpDJv)*#k!m(${F-TFH(Ee+rI=F{q!t%|i#S+|NdKU=%y)=ux^ z-`?+xesRxxeKT87=8}cV{L*%(RtWDjOI^0o*nhU&={5XWCEMOgoBmSxo}E>)LN_V% z_07prN7C$lE?D`M7&06Bu{_$wp|G&hu-i}bqtf;nM-SZ)IkmuT*MpL%BMt_ zd{_DIo#%LY|D$97UG#KH{jA5L~c#`D6wL2F?PH z$YKTtJ!KGPtXOJa#=yY9UgGKN%Kn&Hl+#%AX!Z>y1_lOEPZ!4!j_b(@3xpF=5)yv& eyXG)3GEAsvWK!OuIFo^afx*+&&t;ucLK6VsQGoaW literal 72 zcmeAS@N?(olHy`uVBq!ia0y~yU|?ZjVBq0kV_;x#T_hvSz`(%o>Eakt!I->2^hbZw cOD2ZR>db$ysI$v3FfcH9y85}Sb4q9e0L%IhvH$=8 diff --git a/mods/ITEMS/mcl_signs/textures/_o.png b/mods/ITEMS/mcl_signs/textures/_o.png index f644e1e728e224d9cdc3802b271d07f05778b312..2a579385ddcc694c3612e16bab7bae796915322b 100644 GIT binary patch literal 878 zcmeAS@N?(olHy`uVBq!ia0y~yU|?lnVBq0kV_;xdl~AtBz`%5+DkP#LD6w3jpeR2r zGbdG{q_QAYA+;hije()!*4t^(MRyf=+U`fXPH#|YIZ|XWedfCbr{DMcp3}`toAu4m zfNhPk$^~@`zQ@(C39pYI+}#_OB>sBZ>0%A1 zGtr9sk7S(ojDJ#8eAr)m(eCHVd z#S<&q+zq#F77IBpCf!kb!6qPjfm2V0pVyU@mzETM>y?@|qhiCt^t_JWlXgmo=c!NG zqUCG$;H9HXj?@ayBQ??7bL&pOTtD$}v3iElL5aj;yQS=e>XzQ)IlD7xy2dY2^(Cy= zj%qL8*yEbF^#T*qEbC=e$G)$5sF?qV`NmP7^9I&t5swRJT1%gtx17Q6kvVHdbqyl8&#V&7ar z@8$FEu5`@#mezEwbWyitN1>9yc2@?@v)z#;UY+7QkLrjWTNuD*dWm)UWhJ(zOo7)+ zq<35I^xw(qTYt3ozl)wu$^Yht~c6VX;4}uH!E}zW6z`$AH z5n0T@pr;JNj1^1m%NQ6K*h@TpUD+Qqi*g#9Ud(FAWnf^C_H=O!;kcfhut4?)|4|Jl ljU2U{TQfY2CNnWGJYr-0zfrC8F9QPugQu&X%Q~loCIFYMj4uEH literal 80 zcmeAS@N?(olHy`uVBq!ia0y~yU|?ZjVBq0kV_;x#T_hvSz`!8x>Eakt!I->2=?DKo k4!$|Q5e!#(J~1#%P2~K()AQp|1_lNOPgg&ebxsLQ0Aa5adjJ3c diff --git a/mods/ITEMS/mcl_signs/textures/_o_.png b/mods/ITEMS/mcl_signs/textures/_o_.png index d5984b00711fff8c9aa26e01e6e3be95d2562eb7..44ac3cbcaf725b13c606e472bc7a1b638e8b7f04 100644 GIT binary patch literal 878 zcmeAS@N?(olHy`uVBq!ia0y~yU|?lnVBq0kV_;xdl~AtBz`%65DkP#LD6w3jpeR2r zGbdG{q_QAYA+;hije()!*4t^>o9-!awEf@RrRV6tGCg_EnG*Kcx_IH=ch99RTmHAQ zM2OchK+c5o@%8hPbqgkBaCx3BK54mV$t14u5}UZES(?i}*NNWMwLR^e^PAOKCF5z; zndH~uC%)PpxHL`v{HKK50>8~%%nzqed|LT+`@DSTL(}JcE7quv@#Q~#Q+#`FnRI=v zUt2;+tL?)B&K^qd_U++FQ*hOaIykqr!c*y2*K*bW3T2Adzc-h^-g`vvn(p-H0WCAO zJJoewoHlviiKoxn=BK%opZC{yN$Tozde0woTiq_|E%TQp}FI0hd;p z+-z9RUU(s6fttYQT)mQCy36;w@tvQ$;3P|Oi(r0Mh5wJKRmLXIy1kNw5qn78xKhJpFXm%CHEJTWg8SHf6Zl3 zY|1~H;^Cl>CL=UOQ);uIVjrKKsByYyO#{QqqU8n$-Bg(SK7Z;pbX%^c9iJql%dl|L z(FQhYjtxOUPx@8e`9fo#Ph6E|TB;kh`N@mORqaJuQa)IVPZS4eCn0XnAt{`ugqNTJ3sZBwCSze-#VrCPWU}XDmSY;!s_cA zKi;Ix_G%fj>bqt%N~kjxMzc(~uxEzr@+lP)qt7HI=5VD3D9099=_V=6VB6@oYvb<8 zzo$fB_!55ShjLNk!r$^w4moW@_Of;FwsEy8iX-FHg<> ztZvMAzTdWwckTYJn;)~q>zGZe%I5#Ns=uFsfq^Z_+ueoXKL{?^yL>VO0|RG)M`SSr zgPt-7Ggd6MFJoX}U@!6Xb!C6dEXrxZaAL-_P6h@B8BZ6-5RU7~2@AM>@E_G+(#TQE ixz!Eakt!I-Qd|EE2H kh5ejbFhin7B?H5zAnvdGx%5{uFfcH9y85}Sb4q9e05J3sGynhq diff --git a/mods/ITEMS/mcl_signs/textures/_pr.png b/mods/ITEMS/mcl_signs/textures/_pr.png index 5c231c9a83c436e76e5b34ce229b4883c2244e43..c8783948d31724866e404838ad24cb491cdf6fc4 100644 GIT binary patch literal 895 zcmeAS@N?(olHy`uVBq!ia0y~yU|?lnVBq0kV_;xdl~AtBz`%65DkP#LD6w3jpeR2r zGbdG{q_QAYA+;hije()!*4t^>o9-!awEf@RrRV6tGCg_EnG*Kcx_IH=ch99RTmHAQ zM2OchK+c5o@%8hPbqgkBaCx3BK54mV$t14u5}UZES(?i}*NNWMwLR^e^PAOKCF5z; zndH~uC%)PpxHL`v{HKK50>8~%%nzqed|LT+`@DSTL(}JcE7quv@#Q~#Q+#`FnRI=v zUt2;+tL?)B&K^qd_U++FQ*hOaIykqr!c*y2*K#dSyN=isU;jS1Tcy9TyY%!^OA*Cq zYbV4fZF#yxzi8*qhsz}|-u--;d*X~o$(0><=iGfRbNyA;sg4l7>cIMGMc)=wC`>8h zJH4XK`{MS^Vj;(cq&rG4*aSo`aO%nM^SZL~(vre$y;93&RBTw7n%D7r(oPBSJoPDC zw0zATymXW?ky^odq-Hkv+`7{**H1iLte# zN41w5_PXZXUC7E}QttD$=Y8a1=X*!kH+0XOmsqB=;n-uNLXEq{-hStpYinW$IbW=(zL{(~T)vH_zPZ3KjQXH}CG9 zy%oAKEbcR=#psCWFTKLGTy&YXTX@Emst=0pR$orE%hpXT#TkbadmeMpo z+ugy2ODkQN=_*?V_e?+!L|Q5fZbVB(Hdg&++S);8^CkW^&$} zcTen|ikbWsHUHNU6Y=67`_2s)a*OhJ?sZ;!{d2dH`hu<8;XaFfWO4!|;%>hFrB=I> z_kY%d+ZVPk%y)jhKB?@_t=9X|Vr7d%?bjJHFfgzsdAqwX{0G4WdzVjUU|`@Z@Q5sC zV9-+rVaAH3_GJtV4D2PIzOL+#nMFBGH2&(=6*Dj}=z6+1hHzX@PEZgtFfuUsocBTau>}GGcYhPc)I$ztaD0e0ssKY Bkw*Xk literal 90 zcmeAS@N?(olHy`uVBq!ia0y~yU|?flVBp~Zk&fYK^cWZz6g^!WLn;`P6}bPjC;M=+ s@TMlpIB|mtkkn~pAr)Eu&eL*?mN0ix4bXEc=^(9nv8%k{2(3zRf*x#-r@Y&bxE&K9~9aD(h572w!@j{j^Qh0eb|z zZXPyT^)Tp5?)9cu5lPG&`DTe{affsWp7rds3Y}$Ac6&u)S0}r4)U&o7`ZK!=A8uQ? zBs6mqqd)(n1s5HB6`mcB$@r~%J6^f{x!;A9Cc{G=^Rs?<{jmO;m~n3EE|-h%EfjSP z^y4ghGj)ny^XV!qs7zXAy>EBh^gW&W3F5|g6U%fq9D8k6sA*g5ZI<3R@0bW*%BDIV z1(y$NXYg=x9O-dxGIC8eQ#x|-;PRwrI-U9g3Zd^r)NXX794L(2XLu~*^`=j{$1XAn zXhrg5Y-nWAR(1UsQS>C>YN_1Htgztgi%h-!B8$&WyDk~(t1~mo%y@g!)uWSFr<<4S z$8n1v6kMh%&VAHdbL*kZ)|XuuMWwdJ)tsEFxA#-(^!TT%cwb%)x;$;RY5vly=VGn4 z)t|rX^gXUh)?|X0GOujqjSqotb5Cs5H1?fadFxALT5Z7M&AIniTx8!FAH3K(SI|59 z{Jbj)X1^1gt`#oomh32064>s_zj(c)4JM5o nwVYcW;zzOsg~dFD7#Pyb*qN4gUlw9uU|{fc^>bP0l+XkK+zf&p literal 83 zcmeAS@N?(olHy`uVBq!ia0y~yU|?ZjVBq0kV_;x#T_hvSz`!8o>Eakt!I-Qd|EE2H nh5ejbFhiooCLS4K76!F9e4m=voVR9RU|{fc^>bP0l+XkKW@Hjo diff --git a/mods/ITEMS/mcl_signs/textures/_qo.png b/mods/ITEMS/mcl_signs/textures/_qo.png index 27cae96a288a60b1c4ea9fc0f74fa22a4517d6e9..c7b87be683ec2176864799569e095e54e935b823 100644 GIT binary patch literal 873 zcmeAS@N?(olHy`uVBq!ia0y~yU|?lnVBq0kV_;xdl~AtBz`%5+DkP#LD6w3jpeR2r zGbdG{q_QAYA+;hije()!*4t^(o1UogwB3(%oz|eza-_&$`l>eyr_b}J{W4Pzp6V&b zKZS91E6XpIw+8=y6}Q<3c$l;fcrG6Ppts3p{l|-+lRbV+yIjft^vvp)sn*XQmYtD% zJpcVkfu406)MY9-JY8O&?oMD0TCzxdi_Q^mA;YjeYp?C^i#_r6^#fZs`HkIQPdv31 zQGB*|f_+lSlO^&+l{+487rl7-^KE`5!=u+f3GKGrectlj-K$dsSIV4QR+p37zo0^K z%BJP1A%_=B++N3eb>mUCBv}*vD`G1IlxIyADqUrg`DS0>VIg6DvoB|O3*(K%A0Ntf z_FR1_g?XOb5y!=ivmDO!Z@us>dfR?CzVmYzoMcIEk+i@1Vd{tSSBEdm(Jt*=bidFk zDj{}Hk<{skCt=*W3JWTeR$1@c-8Owsr+$LC@!iC-oDIibn-yx>7JHkeH_kgI!k4nC zjz_`e!`cWQPL3lz-c3fX$!1DNE*@N-^i-!)UqB)Borv0vj+6t1ar+F9XT09@N%z=Q zCIPKTo{WM925nW>e-TAb0C+_dYmp}smZqs)xACtW={d3CyZ zxqckC_(9QSs^Z*7y*0NU%4~hvbyHMoYh2CAsd{@qrB083x{CMZ<)F*cW}D_Oy?QRz zs;~b1U8nDHRk9`%yp(xmD{p)Vbenr(tERE<+{#;DBGYOE78mE-UvZIrXMFHt=UhSW z==1ZgD46|DY`Rvus9Un5P)T6BD+A}*?#L3aPVt>bb;OP>3}7?8#Jc>l5?fQI!0RRK zyVZBb7je(}Cu;sry(n?vZ~GIit?wrMo_SmRO4Z%}8k-o`2Jc9cN_~{neCWfexa;+o z^1naaFZILhOYV!?7k;gpAv?e9VgCB1WouqlpI^?vz`&N|?e4FVdQ&MBb@0Bqrkv;Y7A literal 74 zcmeAS@N?(olHy`uVBq!ia0y~yU|?ooVBq0kV_;xdUdNurz`!8r>Eakt!I*r2``_UV e8<|^-3_Uumzh@n6S-`-+z~JfX=d#Wzp$PyH5fShJ diff --git a/mods/ITEMS/mcl_signs/textures/_qu.png b/mods/ITEMS/mcl_signs/textures/_qu.png index 26cf5b4590ae4616637ae0fd86faf13868326dfb..1458c7e104af8c9b9a0e996d310ecde3b4383080 100644 GIT binary patch literal 876 zcmeAS@N?(olHy`uVBq!ia0y~yU|?lnVBq0kV_;xdl~AtBz`%5+DkP#LD6w3jpeR2r zGbdG{q_QAYA+;hije()!*4t^(o1Uuixc--PZEH|zIZ|NIzv_&_;qz>lpIB|mtkkn~pAr)Eu&eL*?mN0ix4bXEc=^(9nZ$(%e|FV>qy75B`$Nde5H2hUNJa&q?uQ@*!j-%Ge>t6+zz<3 z%H(Fla`wUvnG4heJ}2vK`8)0H`iX~&)iaC^N+cffH?2|qGxwK)$#bvRMK8+dOc0wP zzJAUz6S1A8?P3BKYz(i;-j6-(eea0)hVGf~46MZ>9+%GEF=gIP)!CaJ{FAxZjUw&Y z1eAV+`LwaHBpp+9oVmzQTJX_}2f>EL(~gL9OwcOl63%fkdSIb{Um|%+Y2;6_#~F+q zQ+3!(Za6edoupK+V_CG~l~sR;>FSl)7iXz1Ut^hm`gPALwP`-Ovu8$ceD&z$)y=ba zi?46(e!y{gQg`d4rBk9FZaGwP^aWRMl>WXaUen`#ZaTfb=xW=S%$1p^&(7L@DeJkO z?Ct%}^A=X?@8y&7SURz-&nD-G#$vxGx2DWocFrdEm(FIp6&G)A%fIrX`Of;47Z+~p zSh_adKTBZtUjxV278j559I+7WxUJOC^6aRN)zTx~cap@olY=#yrCv5&&J<)mXwp%7 zsrl~YJNi3WegAh!{}R4hivh6Gu&oc+*n|+XVdks zzQ5j@{RwBj-?oppRywL)bo1ludVhEuR+KI0;$^$Xz`($k|H*Yfq{Xu zz$3Dlfk96hgc&QA+LtjfFtC?+`ns||W)|f%W%qwxl+D1vAnEDi7{YNqIbi|U5B{SX kOgC=0a6Q=C5yimp!jA3Ni=3!T1_lNOPgg&ebxsLQ0HN)XSpWb4 literal 80 zcmeAS@N?(olHy`uVBq!ia0y~yU|?ZjVBq0kV_;x#T_hvSz`!8x>Eakt!I-Qd|EE2H kh5g{Mvx+$yKN%QgZn6D(dYW-R0|Nttr>mdKI;Vst0BC9xt^fc4 diff --git a/mods/ITEMS/mcl_signs/textures/_r_.png b/mods/ITEMS/mcl_signs/textures/_r_.png index 5acd9637476387b5dda87fe776ef5962a0ac81f1..f8b47275574af1b0fd0ce874791e2bb5af022a44 100644 GIT binary patch literal 887 zcmeAS@N?(olHy`uVBq!ia0y~yU|?lnVBq0kV_;xdl~AtBz`%65DkP#LD6w3jpeR2r zGbdG{q_QAYA+;hije()!*4t^(o1Uuixc--PZEH|zIZ|NIzv_&_;qz>lpIB|mtkkn~pAr)Eu&eL*?mN0ix4bXEc=^(9n-l7a^1ds`SZ<5W!aCYxFqxR@0Q2+?wVz!H1%-gmHwq~0woTiq_|E%TQp}EAjm*$l zIR`E`TX>iR2zUH66u(t>`rGvr4|fWi%uMJpc(hzY z)@Z9aGcg%Hp0L2@;*4I7!jcawXIOea;%4!fYTe3drX*P~XL^2*;jLY3YPt)zFtm7y zF-zqr9Psj-Xg^KHGNg2_`>I)2uWZdYJ1O|uoXt;5-9m-EmrXl+W^F|2$0x6Dp1s?B z{g7)xOXkU=P9KB3))qu1?n)|Ybz3VQU$oSFea+3M;XAXOe{H$4qD-+vZtc9N%5P@**Jm$fawW z)lECj*3DQ@I_E_aThbhkBe{YOPM?#+<_0}-%`@z7-KaUmvA5*l%Pk#^2~tO_ULJhs z`EL51re*a(G6zKgq>E!fH(?z7lOCMQ55?&j-XYJbb5 z|E+G!cfQ}Yk9Y0YhW{YAVDIwD3=9mM1s;*b z3=De8Ak0{?)V_>?fq}im)7O>#F|#PAspQrd{u~Sp462?kjv*Y^lM@zj7#JBC{5h_4 u>_CIs$N8Mo%Sxv1*!ustk|QSr!=@=5j7!aAb}}$9FnGH9xvX+3=B_?3Vg6R|M(LF0|SGntDnm{r-UW|2e219 diff --git a/mods/ITEMS/mcl_signs/textures/_s.png b/mods/ITEMS/mcl_signs/textures/_s.png index 4e2538f4c44764b063b85e915bbceb312962bdf2..4c47aee01c09ace8fadc61c3873701f94d78dfee 100644 GIT binary patch literal 881 zcmeAS@N?(olHy`uVBq!ia0y~yU|?lnVBq0kV_;xdl~AtBz`%5+DkP#LD6w3jpeR2r zGbdG{q_QAYA+;hije()!*4t^(o1Uuixc--PZEH|zIZ|NIzv_&_;qz>lpIB|mtkkn~pAr)Eu&eL*?mN0ix4bXEc=^(9nZ$(%e|FV>qy75B`$Nde5H2hUNJa&q?uQ@*!j-%Ge>t6+zz<3 z%H(Fla`wUvnG4wD4)yQ6@GW}VemB1Ja~GUsNp2CezxrY7hw@j4FU-*{?Ob%f&?zb* zZcmZa<%lQOWTPA$J|77wuPNu%uN00ypqIAm@SBK)-s`!Kf~uZP%Q?qn+p8&aBIU1y zL&t+?LrEcl4#{?w)UIPWE**=T{g0lB6pB}HSanC!XM^C$hR1tql6x**OMM#MvzS#O zWRt{&1ZKuCudY8EpPX2@>a|VK)iul3xn@tBv+3C!-Sx(+W$|;QtTGg)x=C4m+VF63kJZHN;Ivs*pSQf+eCF2zxAfcl0vGca?O*2BeoJZE zwt2QI9do`NW?B2#Mci26v5P`pH-peD@y#!$2FVdQ&MBb@0B}~3VgLXD literal 80 zcmeAS@N?(olHy`uVBq!ia0y~yU|?ZjVBq0kV_;x#T_hvSz`!8x>Eakt!I->2=?DMu k0H$D8KhBW9PZ$}dCUSn?rFZWu0|Nttr>mdKI;Vst0AeZ=kpKVy diff --git a/mods/ITEMS/mcl_signs/textures/_s_.png b/mods/ITEMS/mcl_signs/textures/_s_.png index d5281d78d165d51f720000941cebf9f5e1ddc6ac..08cf6ff68013bc70f3d5b359e44366143383e886 100644 GIT binary patch literal 885 zcmeAS@N?(olHy`uVBq!ia0y~yU|?lnVBq0kV_;xdl~AtBz`%61DkP#LD6w3jpeR2r zGbdG{q_QAYA+;hije()!*4t^(lT_4sT>nS5PH#|YIa1^yCwQ-M`g`t^SF&#jKip_9 zy+|lXmF14|3a-cN?bClSx4Hy-WX{RwtSpbb@SZM0_#No z59hz92rSlq#K|t_B=qr%X?Fr^(2_->Hjy3ERTr(lJ;`O?HN7XlwpR4tYcJaVG$!PL`^R7PL*T`^^;X@p0>(4DGfB=gdZ+{JCGYH~RlGo?%7&BPxc%60Z! zeJO=`p4^dx%Nl1LIMcuN!o2Noeo9%Uy<_oLV^Qw;v9fJ_&;DTf#%D1ry+!_B@{DZrfspeS$gCAV z70HuP(7>Rr>iRFD=t;oUQu&oxVZqlInR@$07N47TT{hHLXJ(X{@%E&vM<=gNH!s(Z z;}$40()}%{a7ep6p+hpziF-beN>gj2{{ii~uFD+lXOxHa7p4aNRyGvyL z&)ePlZtoYX427v~QdXZfJY3vkH8DFlZI;#NEiX5p`L)39`Hg*ni}{Q8FLP_Zr8I5Z zeA|@=bG|9FtbOewZY=QFMIo=7L1>ov<`+|h^ozP9b$Xl^@?X- z{%}9r556z5FRU;83OBU=cdKH=O_Q%YkoTl2f_HrEz3=E2%E{-7_*OL<#a2Pnf{Qn~9 qf8om?{vMMWIcIaZEakt!I-Qd|EE1! npfQ?N?ZA~!@>d-`F)%Dl=KebA?tMQ71_lOCS3j3^P6lpIB|mtkkn~pAr)Eu&eL*?mN0ix4bXEc=^(9nZ$(%e|FV>qy75B`$Nde5H2hUNJa&q?uQ@*!j-%Ge>t6+zz<3 z%H(Fla`wUvnG4heJ}2vK`8)0H`iX~&)iaC^N+cffH?2|qGxwK)$#bvRMK8+dOc0wP zzJAUz6S1A8?P3BKYz(i;-j6-(eea0)hVGf~46MZ>9+%GEF=gIP)!CaJ{FAxZjUw&Y z1eAV+`LwaHBpp+9oVmzQTJX_}2f>EL(~gL9OwcOl63%fkdSIb{Um|%+Y2;6_#~F+q zQ+3!(Za6edoupK+V_CG~l~sR;>FSl)7iXz1Ut^hm`gPALwP`-Ovu8$ceD&z$)y=ba zi?46(e!y{gQg`d4rBk9FZaGwP^aWRMl>WXaUen`#ZaTfb=xW=S%$1p^&(7L@DeJkO z?Ct%}^A=X?@8y&7SURz-&nD-G#$vxGx2DWocFrdEm(FIp6&G)A%fIrX`Of;47Z+~p zSh_adKTBZtUjxV278j559I+7WxUJOC^6aRN)zTx~cap@olY=#yrCv5&&J<)mXwp%7 zsrl~YJNi3WegAh!{}R4hivh6Gu&oc+*n|+XVdks zzQ5j@{RwBj-?oppRywL)bo1ludVhE)*OaZCl{lx8fq{W7$=lt9;Xep2*t>i(0|NtR zfk$L91B0G22s2hJwJ&2}U|=ut^mS!_%q+@jY9?n{6v)89An)no7{YNqIYEK_PkR!N nBO3^)Eakt!I*r2>tC~B h&w`G|2L=obGC5q|%JOx27#J8BJYD@<);T3K0RTvU5-9)x diff --git a/mods/ITEMS/mcl_signs/textures/_sm.png b/mods/ITEMS/mcl_signs/textures/_sm.png index 9c576a4d06f41c3b09d0f75e9f5ae0bbae580d7b..460c5d6ddadc8c8b027ff53e5669b7bda91d06cb 100644 GIT binary patch delta 839 zcmcc3_MEN0Gr-TCmrII^fq{Y7)59f*fq{XQfq{XCgN1>CfgyAMG6n{wt5qQpB|(Yh z3I#>^X_+~x3MG{VsS2qTnQ06R6}R3_i=K2xfyecKr0cW>m6jt#2K}qvD4afjH0_t+ z<(aE|K3Oiil@Q6X!~Fr@mDdw6qz*Z`K00_Q@yn6V=jKEhz<8OocsOtrP#}x zZI5h=H}GkST6f%LTYYQnds&^_-yd`Mw=r*g?~t$jzG0JFn#s2L?;Q?JpZl#?V|TnS z|LL3iZ~mxRd;IIGzr{u!7ezm|F!L*R?)WX`YQU@+6v+Kf=g4WHi(#JA|86Z)yng-B z-Kh6lx=U|AjqDQmTy~=Vy~(YzOV@AB<+453@lM%(?*XBpnmuw`XWxA;bNyA;sQ|6^ zy(_jaoug~vbgpFO#6TW<*W2fU0%W{%6s|dbcF1hxGQ2Wp%8KBno{!f^oB9}jOmIGX zXTk4HJ0-;P)TeCW@-=(#(orTyY6a(+n%UfQA5SaZB zOq#s;fPXTVv{B@JMg_rRVLojvEJ?={9cL~wlol*0`LJ?^rS~Id7LTdct(;~`k_B_F z-*}N+@@vzl)MFQ!1hgV~GBz|aXsf#ZtB)vp5^%LtZe>aDpo=|a~9(Y@L>S++kWD9ctoIm~B&Dp2~; z@}nCd2F^=ZSy#XVLNvxC!SS$*E}a`Tz0#ctKN z?E)9qmp`#v?l$|D(lkH&-NDT_-{`Weee5D`Eb!PxA+MW3XqNcq7gL1vi@GCqdVCl1 zWG&(LTkguka#`V;r+Ha<(flIrS^v7E|98ejy!gkybHjz)BKe(r7hHS&({-Zog>wONJ$>qJ1PM_H_`4^LcsTp(f z@~0aa7#PGoT^vI=t|uobaQ#V7NJvOfiho;QBgL@#Av4qZh;zR{dBfAy&t;ucLK6Vw CQ-q!X delta 826 zcmaFPcAKrfGr-TCmrII^fq{Y7)59f*fq{XEfq{XCgN1>C;nCJ5_Zb+N&Q^s)lmsP~ zD-;yvr)B1(DwI?fq$;FVWTr7NRNQ(xHFnb-4W8Efk*?DkR9cP{8Q6zzZjP+un^AKA zUG?NuDxb}k-AdRx;X#cN-{brBX+PS!lRi$kVl#b?^16`vpod+J$A9mt?#jIXzT4k_ z{WpQzhZ`3ynEuZLvLgfBt00o^>7SG8G)2NA8A;9pqZ#;i|u5vw*($oyVz)C*!llx9y1U_%5+G zQ~dSD)2l@kpFN&%-^8lE?2`Fzn@b-~cfFYT^C|zt<5T=^oxNFmuJHZ3WjsrZEN1`O zIMuf4F{@^(|LKgj`AIpuMNN*2Nq3Z9*mEIjffJ9Zy6UTt%u6?F7q_XZ$>qG5DP0n8 zCjR(PuCwRriz&?WxBz0J}a z=N}V!^fzn5S78Pr#qCLkDhdL|ok7bo&bYD2%GPLwotyN7i81J@Ut&|Q2b;|EsnW$g z+w`^Xr^)CtESz+-flXf^Vd;_;^4@(?^{cdIHLXfBE!Bv$LwK`1_-+1%fh(QAHaA_Dl)Vo)p%yZbt0Gz}H8o$Gp6x9bfh{blt50J6+S< zosplzqTb$F`uOYnozXAud9QC~^U7SZP?=xa?$iq5t!AmqRvP=ywmZFsKdU6}ws_VT zw|Cd;ue=C|K62^XW_8mUXX{!Pl+JmP#FjLN<4CTcgX8BUvAIEyT=NXOQ)NR=EpXfQ zpd{*ug8^^S+%E~=Rla-YIbO~$d^~?5H}~CoM?IaA_B-i$@d2+(>jP7mqw*hKGC6hR zAY1#xse9MuUy}d+FrWF)duHE&L*}+M>=l=OoDlB_cAU(_Y+xuZklnVihk=1X*we)^ pgyVX0!U2Z=GYh)^x{I+ecxN&*{jm#>V_;xl@O1TaS?83{1ONcZh9m$0 diff --git a/mods/ITEMS/mcl_signs/textures/_sp.png b/mods/ITEMS/mcl_signs/textures/_sp.png index c51f26b16756c41caf2f2fc7221b626ea859fded..4aae0ea85940327b5ab89820bd325dff7368d023 100644 GIT binary patch delta 801 zcmaFBc8^W9Gr-TCmrII^fq{Y7)59f*fq{XQfq{XCgN1>CfgyAMG6n{w>l0NK>L;mc za2ltWS9mIE$j?&mssA_cp}vTauj0x| zJxli~Awdtj8jtV3V|#SV?cFb4zKoSiveuVSa@7BxEa$%8Y2A6wX?=gHrn6hO-RNJ) zfByIao%1~hFMdw;_%ZErCEwFCt6!#CKR1`Ie}BE|?s_|Wb!UTJhvpSLP*f3ItFPZA z>M^k^?!qPkea|BistZ+rdcJX57tj9Q@R!K$i2j&+&VosHTt9<*`sRFjed8_1-gO=G z=G~9$I3f~%I{Qu9cgy2@ch53XntJ%=mE&RGIJ!8}C)w&Qma6O8_%$RiW%QyD8=54*e#57BN*{;XC zvnx){{=rmccv&{>I9v9fJmKk=jJKy0i@nJ7dFY__`Z$9VOa1+>qZ1k&&g@Xp2sTMm zc9M~;(F!{^=?4>I&{My}rd|&=ndeWXi+i@|Y2QzZ(PdaT>1YERJI98gpeOyR?tG!K z-zTn0GcDDP+WcgS>GPb*yMb4aOj?<0T&x`yYqPVetoZw*tp$QHiBUxx1NKY_(w-AG zW8I9{g@Lb+PLFwcNjtv2>}Tk@TNCVbO>=ifeh!OzduQq6AK&ljmb_nj-H~~v$)yVu z+j-?vuXM)DHoAOe=5pWpsn^&|t&V@|m8w)LN_V%_07prN7CfgGGf(t&1jTR zXDWcU}G^`R@<+OZ_nWlKbNJg-^`*Y|I8)W?WL$v7(?f?&;zf!f`!0L85|zfuV(g@oj4g8z|L# My85}Sb4q9e06eX2`2YX_ delta 803 zcmcb|_JB>bGr-TCmrII^fq{Y7)59f*fq{X8fq{XCgN1>C;p=o0F$M;vn-f(P>Nm+K za(Dvb_mr!!lzn*Njy{GC;Wyyt6;w9vjMTjo38{G3%4@#|mV?X>OnAFn@8;cyGTA~VJa(4o2(2_;s zTXc>D3mJ+9Zt?u|d?WYPI=MZ!U#OOC%-dY1DW*`l9#1!zf899MwCPb}z^Pf&0(tF^-U!oO(Wh%B@OnYzf^811 z5*KBrtO%}O>iGPXw5g8a$CGXIb}GILewGxoLsug+Oe*KVm=V_`{ByIAQju~|^D zkIzn2JKeLUfnjCQa)SeID$ISKzw}zVc~76JZ@5mZA>d?^Lo+i=gr?@FinW$IbW=y~NKrW;eTZl1Z*6)Nt(Zrr3+TKuyu=e}G0^6L`el_kr9&)3{~ znQr;oVI8kz=8F@D+xm@O^-8@>{_WBmcjE6%sobo|5m8lT%h@*GZ0DSHz0)sE;aI1` z9W_Q36aTb}nyT}jsBMm@hzsS(S|aSX+>?jpvgexSyf^Qj{5zqW@k=}JkDGN-;-cU3 zPY$_kKl%66Tj8v|>-4*H96pPjo8cz8Eal|aXmRf!j6G~;S2-gmg_%k85kHCJYD@< J);T3K0RX%-b*umY diff --git a/mods/ITEMS/mcl_signs/textures/_sr.png b/mods/ITEMS/mcl_signs/textures/_sr.png index dd192f5434c09996e2b6fb9d14483093d7c2db21..afefa91b214957091a690c366a991c17c8a6bb89 100644 GIT binary patch literal 879 zcmeAS@N?(olHy`uVBq!ia0y~yU|?lnVBq0kV_;xdl~AtBz`%5=DkP#LD6w3jpeR2r zGbdG{q_QAYA+;hije()!*4t^>o9-!awEf@RrRV6tGCkSkTnT$@U3~A~yyr%jFaNW# z>TFZc;Gfm<`TBXmx&;$5xIE7mpR`=GWD-|+iA~(oEX`%5`@7yvoA*?4+utTdp)EzW z&x&7%pZIEb;L(IP{2f-dn@9g$+q$#*+MID^mTH&SiODogUt|Ruu*S`<$R_Sl-E}=oogev6%F?F1Nlmy%&~4Akhqe#HU!A=mVO-j|D8A4sDk09M zSnBeOC(mS~92}C5hlJOJ^YT{;%OCJd+jZzoL_+WJ)JFlko=?*`$7I{9nR6ngR@$NC zLA0TykU)oIJ4$sWqsg;D@MObdo7&`_i$Pm1)!F z-CgOJ^X)jx*~c#G#sZIB6!IoB2+dO8{9=lbf6?SfogUwXJXuSG{g!+3uw3?B)13F_ z-4nZ~VkUn@&Hr`8%y{vSeW$_2+@k!Qd!5%_|LQuCHRIhO$;%qd?9w8B>)({tP2P8> zt={xQ?u*+OwlDk{ZfI5a_E3JbT-oAZc?wDl3=C{Z-tI08|3PrU-sO`S7#KJUJR*x3 z81$4un6YB1eHjA-1AB?5uPggwW>HQvkq0FSAR#$V7sn8e>&XcUqJP?x)(G){fX|JT gmwG?uFYsqbFJ<9=DR6Ns0|Nttr>mdKI;Vst0Lx~Jl>h($ literal 77 zcmeAS@N?(olHy`uVBq!ia0y~yU|?ckVBq0kV_;zL*pm~&z`!8l>Eakt!I*r2>tC}W h$At3-4B8nP7&^GViTtU($H2hA;OXk;vd$@?2>?zs6A%CZ diff --git a/mods/ITEMS/mcl_signs/textures/_tl.png b/mods/ITEMS/mcl_signs/textures/_tl.png index a8bf1764a9c45abb3e657b9d30786b9be30895d6..5f1b4fb433422006227139a43578bbc29a5ba32d 100644 GIT binary patch literal 871 zcmeAS@N?(olHy`uVBq!ia0y~yU|?lnVBq0kV_;xdl~AtBz`%61DkP#LD6w3jpeR2r zGbdG{q_QAYA+;hije()!*4t^(o1UogwB3(%oz|eza-_&$`l>eyr_b}J{W4Pzp6V&b zKZS91E6XpIw+8=y6}Q<3c$l;fcrG6Ppts3p{l|-+lRbV+yIjft^vvp)sn*XQmYtD% zJpcVkfu406)MY9-JY8O&?oMD0TCzxdi_Q^mA;U1w4A)E7H*)W+lihRtg>uyHl?bny5Ei}%YH<~C7Gvxw>-Xg_bel&sfTY~>0kRsP(;5a z=-ZZ_tO}9j+gle{ZM)&HrukXxEhf<tBt1IVHgBimJMU*nF*|ZK zGDBzO9Jt(Ual<5lng8MOsEpsbx8s%DpZi@%X)-+2Ge7Hx*AMHji5cgn?sB>K-a=7# zgI=6vZ>mnw>Q*s<3pR#VW$(ux_P%#Sd_(ulcLvsG5syn}@0c=gr|Rs@4*tnp>_(CH zYywI@!gShLSdxyZI?h~VC@uKt#e?9DMbnOmb4<`G=Mv6wF?wL3e}6{umeR?pXV*C*5At~<*{^PTc1tN4~@lsPi{?_x$K-x?k}Cqb}KGgZp**&qWRAHl@}Lo z>sY!r-9JlU_Fn_X*H#yg@*J@c?6|Ge(DLl4j@8m5-FK42xE}{-G)ui~x|}JfA)tVmt| z+WzJC-yh<6YovdfeaX$J4L#H6zx#uEmt@(BYS}f(3=9lxN#5=*4F5rJ!QSPQ85kHi z3p^r=85s1GL71^(seKs(0|R@Br>`sfV`foKGbR0VU*9t@FbI3PIEHXsPfl1M`=j42 enTtnEakt!I->2=?DMf eK+6(lhO4a1f9EC4n8Conz~JfX=d#Wzp$P!ydJu>J diff --git a/mods/ITEMS/mcl_signs/textures/_vb.png b/mods/ITEMS/mcl_signs/textures/_vb.png index b40ff9892c751eb6ff84f24ce4fa896839d1072b..ca2e5667a26de7ec106eec624555a1a685d886b6 100644 GIT binary patch literal 873 zcmeAS@N?(olHy`uVBq!ia0y~yU|?lnVBq0kV_;xdl~AtBz`%5+DkP#LD6w3jpeR2r zGbdG{q_QAYA+;hije()!*4t^(o1UogwB3(%oz|eza-_&$`l>eyr_b}J{W4Pzp6V&b zKZS91E6XpIw+8=y6}Q<3c$l;fcrG6Ppts3p{l|-+lRbV+yIjft^vvp)sn*XQmYtD% zJpcVkfu406)MY9-JY8O&?oMD0TCzxdi_Q^mA;U1w-BZ^mix>U1s_4Jy{wB$`sFL5c zzbmXc98;N>~dewvJBNaN+Hz&f)3meEnOlpe z_dUK}y#2!7>2d75OD=ghyUUr?ObJvk%01;1oIcO2c3PzTl@~I%&9lBZzPo85n|7S7o3WsD?u#V0q&XZ%as?fnJ|~II4SM97XV~3Zs4>N{x8&fYhW{YAVDIwD3=9mM z1s;*b3=De8Ak0{?)V_>?fq}im)7O>#F|#PAndutY0u2TR1~E?;#}JO|$q5SVf7%Ua iY&gm1bP0l+XkK;;InF diff --git a/mods/ITEMS/mcl_signs/textures/_w.png b/mods/ITEMS/mcl_signs/textures/_w.png index daa597637e552d43436ee00d1316859cb8f4e789..6c2eea3e192fe2119135539a1a14318795baa54e 100644 GIT binary patch literal 876 zcmeAS@N?(olHy`uVBq!ia0y~yU|?lnVBq0kV_;xdl~AtBz`%5+DkP#LD6w3jpeR2r zGbdG{q_QAYA+;hije()!*4t^(>r~Wv+U`fXPHV{RIa{Qm7gRRk>GSraUuNpcsgsU3 zUuAu2X7AU^- z&u3f7Nf$-`wJ`H5c2@lAQi^C4S^0w1U+mG+P6_RlmzS^a7( zbfkvolY3v^yf4oB{RV%wDOI`E{dQ7W_TyGuk$L)e%j0`@&oVNadids*{#^z6IU&i!sZ|7Cj zU3iks#EWa(ub*^%AY*UI2XFh<>Gsrg*qGb z;!Jx}b&6hdYAYm(0a(6lu>l zLFq`CP8$nL(lJ%XnTrgi1wXxb5WKNy+7WS%30mb`!Z|KR4=mQ-n323CH}YrL<19vw zsXA;X77h(lCoQVevCLZWYFB@V>FSl)7iXz1Ut^hm`gPwbwP`-Ovu8$ceD&z$)y=ba zi?46(e!z8kQg`d4rBk8=w;U=x`i84JN`K!Iujz3=H=SNzbhYhM=E}^|XJ>7{l=WOs z_W1tic?+xc_wq?;ES=caXOr_oW3k_rTT^B(J7<&oOJ}p)ii?)p@~^yTzO#Pi#f95C zmgc7WX9djuTj2QG>f%wJBNl=kx0M>2o*mV(T6(1WPLde+;{c6jsh3TcGXtAJG-e&w=Jwvws?V1 diff --git a/mods/ITEMS/mcl_signs/textures/_w_.png b/mods/ITEMS/mcl_signs/textures/_w_.png index 8848484d4a3c2f964588eeee90435981e9e7d6cc..f1e26c10830034a393a5fd954d1350d8a93c3a94 100644 GIT binary patch literal 889 zcmeAS@N?(olHy`uVBq!ia0y~yU|?lnVBq0kV_;xdl~AtBz`%61DkP#LD6w3jpeR2r zGbdG{q_QAYA+;hije()!*4t^(>r~Wv+U`fXPHV{RIa{Qm7gRRk>GSraUuNpcsgsU3 zUuAu2X7AU^- z&u3f7Nf$-`wJ`H5c2@lAQi^C4S^0w1U+mG+P6_QLNptp}i#_r6^%Gk+`JLTgUp%!H zReY8_!M>>E%M$sj%9e-QMK2nEx-G6`c=Y_v)01D`n0ttIJ94PpD9w zx@mc8$HT=Ex2G``=4@#pUilNj{dPy{@$4rZcQ~i{6u8a!IJss0l>N&5?#1gasdm*p=S*!Z z{kSSqCwXGDe*`1r*~!6of8G^}d!@FoA@)qk@|znEO0B9KWFSDQ`o_x6p>yS8U)n05I} zi+{G|+;^*AmR@ks>@_KQl6cr%vUJh4WoJxEpJiT7pZV3X_uR(X#cuLX>U?|owz}%% zT2}`(-+I%|9d*4^FHPZCr^6jFMiCSJw2PXmaZkiHM@Y0gNnY^~pX1jp!LiJ7&1AVZ z^Pbe5)Xn%6e&@&h6RoZ9{ws)!?Q(vXo);hRy7d2|6Kq@j9-hja(%H?+c38VQcE9KT zyY2s9J-B^w`{I1}*YQW+{Kyvn$2Pg4Y$emZnTr`17}%1$-CY>|gW!U_%O^81FmM)l zL>4nJ=qZCRW5rVYG6n_)_7YEDSN6xuqMYUe|CpxgF)%Qwdb&7fGb|Mm_#jlX@Bsq@1B0ilpUXO@geCw%OBY7~ diff --git a/mods/ITEMS/mcl_signs/textures/_z.png b/mods/ITEMS/mcl_signs/textures/_z.png index 86eb502ce0092157643edac4c2cfb0e83ab2f66e..8a710780add05766126ad5655fd0799dde7f842a 100644 GIT binary patch literal 886 zcmeAS@N?(olHy`uVBq!ia0y~yU|?lnVBq0kV_;xdl~AtBz`%5+DkP#LD6w3jpeR2r zGbdG{q_QAYA+;hije()!*4t^(>r~Wv+U`fXPHV{RIa{Qm7gRRk>GSraUuNpcsgsU3 zUuAu2X7AU^- z&u3f7Nf$-`wJ`H5c2@lAQi^C4S^0w1U+mG+P6_Rl%r~#^w8rfByO;cB;_it4xO>5Z zNp@^MmEGO_e=VHuE>RaPXsf)xR#7OpCRcyw?9IRDJiZs}D>?Jj!<<*g!@hB}i3e#` zN3}`Vb#2Vm6gVy>-BEgBkAiN1qMMnz>Z_2{aY{eMVIYy>pL+w;Ur6Xi=@5h53irrp9)N#YsD^lQ9ds~EJA$! ztYb!EJHNJw3S6+UygK*3?!%>dkGO9f^(mhvE4}99uGko_^S36QjZ9c>*vdR}jXb-D zV3M|&GZT~H<4FsAF3#xXs4V%gGQ!gP5jTs+RO?nwGbPD_IpH~H3~y~)Q?t5oD?^Ky z7_*d&!T~SOK>KMjrXi(w-B-=JdSz?I*-63I=4^gi>K-cWy=>aqGixJCKR$VN^X%R3 z>xWzmS~E``b@~|OwU#65;jW~zR@b%S@kL9$*Vo*98oo2j`RA4^Tb`z!jn3R!JiYJn z{o?Hx_D+vu=bduN!`WTVtY%7}dRFc!pWyU)X0_8I<*&Suxow{H#qr(sD=z|~k6hZe zS>1HS*}5GIO6R^vVoRFCaU@sJ!SQpF*xaB;u6c&tt%Vv>9D7R+zTDE$m>_k;>gBBt_b#vTi?zoX)uxHctud~10 zuKlr|Z=Yb?NbY2N@U`*pj^6T^Rm@;DWu&Co?cGa29w( z7BevDDT6R$#Zvn+1_lQ95>H=O_Q%YkoaWM*7krj6Ffb^4x;Tb#Tu)9|V3&}Rknp45 sm51+w>PPNB=?Mu52?v)>Vq#!e{hN)Eb%JF90|Nttr>mdKI;Vst0L}%JF8}}l literal 79 zcmeAS@N?(olHy`uVBq!ia0y~yU|?ZjVBq0kV_;x#T_hvSz`!8p>Eakt!I->2=tqB3 jVnfEcdLLsCb_VN{++RICK5t`SU|{fc^>bP0l+XkKVT%)W diff --git a/mods/ITEMS/mcl_signs/textures/_z_.png b/mods/ITEMS/mcl_signs/textures/_z_.png index 9bff400222db3fa7cbf5a698818246f818de22a2..6192800b4c98ae11b552c46f7c91c06534182442 100644 GIT binary patch literal 887 zcmeAS@N?(olHy`uVBq!ia0y~yU|?lnVBq0kV_;xdl~AtBz`%61DkP#LD6w3jpeR2r zGbdG{q_QAYA+;hije()!*4t^(>r~Wv+U`fXPHV{RIa{Qm7gRRk>GSraUuNpcsgsU3 zUuAu2X7AU^- z&u3f7Nf$-`wJ`H5c2@lAQi^C4S^0w1U+mG+P6_QLPP6x&i#_r6^%Gk+`JLTgUp%!H zReY8_!M>>E%M$sj%9e-QMK2nEx-G6`c=Y_v)01D`n0ttIJ94PpD9w zx@mc8$HT=Ex2G``=4@!?wtq<0-ST*v?D~nyMd}eo2PG4a`3vm}`qyV8b9SfKbd6tg)u*st zJGy$=#va!^+eB6t6Mw(b=jGlND`)>;Dl@!1H|;oE_MSZP>6bQdODPt+k?Hf$LGAT% z#-NrPT}LN0IGov`q7iJ8rtBmqTcZ_rZqg4X#-OKuiA}v8Y%1yB4iqU0Q zIO%8u8#~8_pr9-Ls_wj@vEL`IN;56hjoSQVis|#5%DaJAk4##bYFw-x7HhM!s;v0? zqpbykF^N${8w2)C3DRx~+p%s&Y+~T+qtjzvUeb;)`x(0KR)C$ZY3|O*&tXw-?<{@% ztlaNPi`q&>2b4T4g&)NTavfC3&Vd9T(EcfWCjKX&H|6f zVg?31We{epSZZI!z`(#>;_2(k{+L;m(_G2y>XCH}3=GPiE{-7_*OL<#a2OaF82mY| s)TY$2uEC}8KMxNNkIs&eAO?otkJFVdQ&MBb@0LpZV&j0`b literal 81 zcmeAS@N?(olHy`uVBq!ia0y~yU|?ZjVBq0kV_;x#T_hvSz`!8k>Eakt!I-ST|Hu7c l0F$Dp(R2G{3zsl6RL$W1JhM#Dm4ShQ!PC{xWt~$(698m>62<@k From 579e52661579fb2da4066c8772d7712743e57504 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Thu, 21 Mar 2019 11:25:14 +0100 Subject: [PATCH 201/737] Signs: Add replacement character --- mods/ITEMS/mcl_signs/init.lua | 6 +++++- mods/ITEMS/mcl_signs/textures/_rc.png | Bin 0 -> 902 bytes 2 files changed, 5 insertions(+), 1 deletion(-) create mode 100644 mods/ITEMS/mcl_signs/textures/_rc.png diff --git a/mods/ITEMS/mcl_signs/init.lua b/mods/ITEMS/mcl_signs/init.lua index f83e6339..e878d16e 100644 --- a/mods/ITEMS/mcl_signs/init.lua +++ b/mods/ITEMS/mcl_signs/init.lua @@ -85,6 +85,7 @@ local generate_line = function(s, ypos) local printed_char_width = CHAR_WIDTH + 1 while chars <= LINE_LENGTH and i <= #s do local file = nil + -- Get and render character if charmap[s:sub(i, i)] ~= nil then file = charmap[s:sub(i, i)] i = i + 1 @@ -92,8 +93,11 @@ local generate_line = function(s, ypos) file = charmap[s:sub(i, i + 1)] i = i + 2 else - minetest.log("warning", "[mcl_signs] Unknown symbol in '"..s.."' at "..i.." (probably "..s:sub(i, i)..")") + -- No character image found. + -- Use replacement character: + file = "_rc" i = i + 1 + minetest.log("verbose", "[mcl_signs] Unknown symbol in '"..s.."' at "..i) end if file ~= nil then width = width + printed_char_width diff --git a/mods/ITEMS/mcl_signs/textures/_rc.png b/mods/ITEMS/mcl_signs/textures/_rc.png new file mode 100644 index 0000000000000000000000000000000000000000..8b66915e65362b2aad96f275bd0c7d9de2319bcc GIT binary patch literal 902 zcmeAS@N?(olHy`uVBq!ia0y~yU|?lnVBq0kV_;xdl~AtBz`%5^DkP#LD6w3jpeR2r zGbdG{q_QAYA+;hije()!*4t^(lkO<+xc-lHoz|eza-_&$#;P|8r_Zw*|Mf~=_34L9 zaP9^jmOIJ??Vpc-7u@$y>7vM_SiZ)4v0-a%gZeS?vEn#s2L?;Q?JpZl#?V|TnS|LL3iFIMcm z_PFZnuQ@zPC9XCP4=kVHa;LUWX-1>S$`!2TVvjNvw|IWq^r8B#)4KOZcW;f`(p`G{ zX=Inc=du&}Qn}VItKUv@>Nj5W`-H!~OHx<=^~Gh2e@i^yx@(rvlv9cNuaY%av$~&{ znNoUMqiz18+|?o?$AzRjN-x+1L@jXQ*~+f^DkSs5&R1@{!9F#c7N+H0sJ#`_!@ZqV z^{i7fZ$*^=dna2Klkxp$PT6-h9m{?qu~XP)ra+I{?(0JLB>ykF!_;dSJYD10QsGNX zpC8RMopDUX{QUz@FR`K5gH7hSrP(hD-T1J5XDp%^ zoHn}hWNc_;&{lQ*7g6*i;A*AZ%B-;9>x)di{UVFcO?xgG>Z>y|%FK9s($%ArSErko z>&J169~4}sD$ae>TXSpDg{}*td$nz{Y=2BpmaTenn9u%Hp!B8XOPA@IXW#Q$J$H9W z&i{G4Ti@;dQgx{_#Om_Obi21-HqR+lxZc)dQt~A6u)E|}x885tY8ScbKe1cxHv5*! zv}yD2t~{9YO|a=%;iAcs9fe8)+dUaL&rXgk@#<9Hc~VF0*s=gN(@UJoFRQRMy;Qm8 zXkJ!cG{1;@*1rzv|9vqtUi@Rc*OXn#?)^V;iQT_>_;ygRfqb4p_~FW>U;Z&v#~ z>toyNc|VB0(7q79;OF|Jl0V_x_KY_D<-HG+xtJIj7}%1$-CY>|gW!U_%O^81FmM)l zL>4nJ=qZCRW5rVYG6n_)_7YEDSN6xuqFe%E=O5XqGcYh1db&7FVdQ I&MBb@00R(=r~m)} literal 0 HcmV?d00001 From 78fc9565c011d246c992eb5dd429c9a3a72107f6 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Thu, 21 Mar 2019 11:35:53 +0100 Subject: [PATCH 202/737] Make sign formspec translatable --- mods/ITEMS/mcl_signs/init.lua | 3 ++- mods/ITEMS/mcl_signs/locale/mcl_signs.de.tr | 4 ++++ mods/ITEMS/mcl_signs/locale/template.txt | 4 ++++ 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_signs/init.lua b/mods/ITEMS/mcl_signs/init.lua index e878d16e..4d013999 100644 --- a/mods/ITEMS/mcl_signs/init.lua +++ b/mods/ITEMS/mcl_signs/init.lua @@ -1,4 +1,5 @@ local S = minetest.get_translator("mcl_signs") +local F = minetest.formspec_escape -- Font: 04.jp.org @@ -236,7 +237,7 @@ local show_formspec = function(player, pos) minetest.show_formspec( player:get_player_name(), "mcl_signs:set_text_"..pos.x.."_"..pos.y.."_"..pos.z, - "size[6,3]textarea[0.25,0.25;6,1.5;text;Edit sign text:;]label[0,1.5;Maximum line length: 15\nMaximum lines: 4]button_exit[0,2.5;6,1;submit;Done]" + "size[6,3]textarea[0.25,0.25;6,1.5;text;"..F(S("Edit sign text:"))..";]label[0,1.5;"..F(S("Maximum line length: 15")).."\n"..F(S("Maximum lines: 4")).."]button_exit[0,2.5;6,1;submit;"..F(S("Done")).."]" ) end diff --git a/mods/ITEMS/mcl_signs/locale/mcl_signs.de.tr b/mods/ITEMS/mcl_signs/locale/mcl_signs.de.tr index 27f06a9f..dec4360c 100644 --- a/mods/ITEMS/mcl_signs/locale/mcl_signs.de.tr +++ b/mods/ITEMS/mcl_signs/locale/mcl_signs.de.tr @@ -2,3 +2,7 @@ Sign=Schild Signs can be written and come in two variants: Wall sign and sign on a sign post. Signs can be placed on the top and the sides of other blocks, but not below them.=Schilder können beschrieben werden und kommen in zwei Varianten: Wandschild und stehendes Schild. Sie können auf und an den Seiten von anderen Blöclen platziert werden, aber nicht unter ihnen. After placing the sign, you can write something on it. You have 4 lines of text with up to 15 characters for each line; anything beyond these limits is lost. Not all characters are supported. The text can not be changed once it has been written; you have to break and place the sign again.=Nachdem das Schild platziert wurde, kann man etwas darauf schreiben. 4 Zeilen mit je 15 Zeichen pro Zeile sind verfügbar, alles darüber geht verloren. Es werden nicht alle Zeichen unterstützt. Der Text kann nicht geändert werden, sobald er geschrieben wurde; man muss das Schild erneut platzieren. +Edit sign text:=Schildtext bearbeiten: +Maximum line length: 15=Maximale Zeilenlänge: 15 +Maximum lines: 4=Maximale Zeilen: 4 +Done=Fertig diff --git a/mods/ITEMS/mcl_signs/locale/template.txt b/mods/ITEMS/mcl_signs/locale/template.txt index 2cf0ef99..e6d90b2d 100644 --- a/mods/ITEMS/mcl_signs/locale/template.txt +++ b/mods/ITEMS/mcl_signs/locale/template.txt @@ -2,3 +2,7 @@ Sign= Signs can be written and come in two variants: Wall sign and sign on a sign post. Signs can be placed on the top and the sides of other blocks, but not below them.= After placing the sign, you can write something on it. You have 4 lines of text with up to 15 characters for each line; anything beyond these limits is lost. Not all characters are supported. The text can not be changed once it has been written; you have to break and place the sign again.= +Edit sign text:= +Maximum line length: 15= +Maximum lines: 4= +Done= From ae5f5fe3b71fa0d85d59574a504f0da926fc1d70 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Thu, 21 Mar 2019 11:37:36 +0100 Subject: [PATCH 203/737] Slightly change wording in sign formspec --- mods/ITEMS/mcl_signs/init.lua | 2 +- mods/ITEMS/mcl_signs/locale/mcl_signs.de.tr | 2 +- mods/ITEMS/mcl_signs/locale/template.txt | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/mods/ITEMS/mcl_signs/init.lua b/mods/ITEMS/mcl_signs/init.lua index 4d013999..793eed60 100644 --- a/mods/ITEMS/mcl_signs/init.lua +++ b/mods/ITEMS/mcl_signs/init.lua @@ -237,7 +237,7 @@ local show_formspec = function(player, pos) minetest.show_formspec( player:get_player_name(), "mcl_signs:set_text_"..pos.x.."_"..pos.y.."_"..pos.z, - "size[6,3]textarea[0.25,0.25;6,1.5;text;"..F(S("Edit sign text:"))..";]label[0,1.5;"..F(S("Maximum line length: 15")).."\n"..F(S("Maximum lines: 4")).."]button_exit[0,2.5;6,1;submit;"..F(S("Done")).."]" + "size[6,3]textarea[0.25,0.25;6,1.5;text;"..F(S("Enter sign text:"))..";]label[0,1.5;"..F(S("Maximum line length: 15")).."\n"..F(S("Maximum lines: 4")).."]button_exit[0,2.5;6,1;submit;"..F(S("Done")).."]" ) end diff --git a/mods/ITEMS/mcl_signs/locale/mcl_signs.de.tr b/mods/ITEMS/mcl_signs/locale/mcl_signs.de.tr index dec4360c..5129696b 100644 --- a/mods/ITEMS/mcl_signs/locale/mcl_signs.de.tr +++ b/mods/ITEMS/mcl_signs/locale/mcl_signs.de.tr @@ -2,7 +2,7 @@ Sign=Schild Signs can be written and come in two variants: Wall sign and sign on a sign post. Signs can be placed on the top and the sides of other blocks, but not below them.=Schilder können beschrieben werden und kommen in zwei Varianten: Wandschild und stehendes Schild. Sie können auf und an den Seiten von anderen Blöclen platziert werden, aber nicht unter ihnen. After placing the sign, you can write something on it. You have 4 lines of text with up to 15 characters for each line; anything beyond these limits is lost. Not all characters are supported. The text can not be changed once it has been written; you have to break and place the sign again.=Nachdem das Schild platziert wurde, kann man etwas darauf schreiben. 4 Zeilen mit je 15 Zeichen pro Zeile sind verfügbar, alles darüber geht verloren. Es werden nicht alle Zeichen unterstützt. Der Text kann nicht geändert werden, sobald er geschrieben wurde; man muss das Schild erneut platzieren. -Edit sign text:=Schildtext bearbeiten: +Enter sign text:=Schildtext eingeben: Maximum line length: 15=Maximale Zeilenlänge: 15 Maximum lines: 4=Maximale Zeilen: 4 Done=Fertig diff --git a/mods/ITEMS/mcl_signs/locale/template.txt b/mods/ITEMS/mcl_signs/locale/template.txt index e6d90b2d..f4f4827b 100644 --- a/mods/ITEMS/mcl_signs/locale/template.txt +++ b/mods/ITEMS/mcl_signs/locale/template.txt @@ -2,7 +2,7 @@ Sign= Signs can be written and come in two variants: Wall sign and sign on a sign post. Signs can be placed on the top and the sides of other blocks, but not below them.= After placing the sign, you can write something on it. You have 4 lines of text with up to 15 characters for each line; anything beyond these limits is lost. Not all characters are supported. The text can not be changed once it has been written; you have to break and place the sign again.= -Edit sign text:= +Enter sign text:= Maximum line length: 15= Maximum lines: 4= Done= From 262457f2401c81c74a41def629e780c178337cec Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Thu, 21 Mar 2019 12:13:18 +0100 Subject: [PATCH 204/737] Fix German translation of shulker box formspec --- mods/ITEMS/mcl_chests/locale/mcl_chests.de.tr | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_chests/locale/mcl_chests.de.tr b/mods/ITEMS/mcl_chests/locale/mcl_chests.de.tr index 972dc91a..9a3d363f 100644 --- a/mods/ITEMS/mcl_chests/locale/mcl_chests.de.tr +++ b/mods/ITEMS/mcl_chests/locale/mcl_chests.de.tr @@ -25,6 +25,6 @@ Grey Shulker Box=Graue Schulkerkiste Black Shulker Box=Schwarze Schulkerkiste A shulker box is a portable container which provides 27 inventory slots for any item except shulker boxes. Shulker boxes keep their inventory when broken, so shulker boxes as well as their contents can be taken as a single item. Shulker boxes come in many different colors.=Eine Schulkerkiste ist ein tragbarer Behälter der 27 Inventarplätze für alle Gegenstände außer Schulkerkisten bietet. Schulkerkisten behalten ihr Inventar, wenn sie abgebaut werden, also können Schulkerkisten so wie ihr Inhalt als einzelne Gegenstände mitgenommen werden. Schulkerkisten gibt es in vielen verschiedenen Farben. To access the inventory of a shulker box, place and right-click it. To take a shulker box and its contents with you, just break and collect it, the items will not fall out.=Um auf das Inventar einer Schulkerkiste zuzugreifen, platzieren Sie sie und rechtsklicken sie auf ihr. Um eine Schulkerkiste und ihren Inhalt mitzunehmen, bauen Sie sie einfach ab und sammeln Sie sie auf, der Inhalt will nicht hinausfallen. -Shulker Box=Shulkerkiste +Shulker Box=Schulkerkiste Large Chest=Große Truhe Inventory=Inventar From d12356794ff6b7aeeb20bc82a6072282669c5d3c Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Thu, 21 Mar 2019 12:28:48 +0100 Subject: [PATCH 205/737] Close editing formspec if sign is destroyed --- mods/ITEMS/mcl_signs/init.lua | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/mods/ITEMS/mcl_signs/init.lua b/mods/ITEMS/mcl_signs/init.lua index 793eed60..6cbec59e 100644 --- a/mods/ITEMS/mcl_signs/init.lua +++ b/mods/ITEMS/mcl_signs/init.lua @@ -187,6 +187,10 @@ local destruct_sign = function(pos) v:remove() end end + local players = minetest.get_connected_players() + for p=1, #players do + minetest.close_formspec(players[p]:get_player_name(), "mcl_signs:set_text_"..pos.x.."_"..pos.y.."_"..pos.z) + end end local update_sign = function(pos, fields, sender) From 8019315eaa6d3f2ec24c9c745580f047ff038a0b Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Thu, 21 Mar 2019 12:52:13 +0100 Subject: [PATCH 206/737] Fix character cutoff in standing signs --- mods/ITEMS/mcl_signs/init.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_signs/init.lua b/mods/ITEMS/mcl_signs/init.lua index 6cbec59e..d009b287 100644 --- a/mods/ITEMS/mcl_signs/init.lua +++ b/mods/ITEMS/mcl_signs/init.lua @@ -121,9 +121,9 @@ local generate_texture = function(lines, signnodename) local texture = "[combine:"..SIGN_WIDTH.."x"..SIGN_WIDTH local ypos if signnodename == "mcl_signs:wall_sign" then - ypos = 29 + ypos = 30 else - ypos = -2 + ypos = 0 end for i = 1, #lines do texture = texture..generate_line(lines[i], ypos) From 65a61398b50159e197db2ec65e1d5c09d669204a Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Thu, 21 Mar 2019 14:35:56 +0100 Subject: [PATCH 207/737] Add some Latin-1 characters for signs --- mods/ITEMS/mcl_signs/characters.txt | 87 ++++++++++++++++++ mods/ITEMS/mcl_signs/init.lua | 5 +- mods/ITEMS/mcl_signs/textures/_ae.png | Bin 0 -> 866 bytes mods/ITEMS/mcl_signs/textures/_ae_.png | Bin 0 -> 872 bytes mods/ITEMS/mcl_signs/textures/_broken_bar.png | Bin 0 -> 857 bytes mods/ITEMS/mcl_signs/textures/_cent.png | Bin 0 -> 873 bytes mods/ITEMS/mcl_signs/textures/_copyright.png | Bin 0 -> 883 bytes mods/ITEMS/mcl_signs/textures/_currency.png | Bin 0 -> 866 bytes mods/ITEMS/mcl_signs/textures/_diaresis.png | Bin 0 -> 852 bytes mods/ITEMS/mcl_signs/textures/_div.png | Bin 0 -> 858 bytes mods/ITEMS/mcl_signs/textures/_ee.png | Bin 0 -> 869 bytes mods/ITEMS/mcl_signs/textures/_ee_.png | Bin 0 -> 869 bytes mods/ITEMS/mcl_signs/textures/_ex_inv.png | Bin 0 -> 855 bytes mods/ITEMS/mcl_signs/textures/_guill_left.png | Bin 0 -> 856 bytes .../ITEMS/mcl_signs/textures/_guill_right.png | Bin 0 -> 855 bytes mods/ITEMS/mcl_signs/textures/_mu.png | Bin 0 -> 869 bytes mods/ITEMS/mcl_signs/textures/_oe.png | Bin 0 -> 865 bytes mods/ITEMS/mcl_signs/textures/_oe_.png | Bin 0 -> 866 bytes mods/ITEMS/mcl_signs/textures/_paragraph.png | Bin 0 -> 871 bytes mods/ITEMS/mcl_signs/textures/_plus_minus.png | Bin 0 -> 858 bytes mods/ITEMS/mcl_signs/textures/_pound.png | Bin 0 -> 868 bytes mods/ITEMS/mcl_signs/textures/_qu_inv.png | Bin 0 -> 858 bytes mods/ITEMS/mcl_signs/textures/_registered.png | Bin 0 -> 882 bytes mods/ITEMS/mcl_signs/textures/_sz.png | Bin 0 -> 874 bytes .../ITEMS/mcl_signs/textures/_times_cross.png | Bin 0 -> 860 bytes mods/ITEMS/mcl_signs/textures/_times_dot.png | Bin 0 -> 849 bytes mods/ITEMS/mcl_signs/textures/_ue.png | Bin 0 -> 870 bytes mods/ITEMS/mcl_signs/textures/_ue_.png | Bin 0 -> 872 bytes mods/ITEMS/mcl_signs/textures/_yen.png | Bin 0 -> 866 bytes 29 files changed, 89 insertions(+), 3 deletions(-) create mode 100644 mods/ITEMS/mcl_signs/textures/_ae.png create mode 100644 mods/ITEMS/mcl_signs/textures/_ae_.png create mode 100644 mods/ITEMS/mcl_signs/textures/_broken_bar.png create mode 100644 mods/ITEMS/mcl_signs/textures/_cent.png create mode 100644 mods/ITEMS/mcl_signs/textures/_copyright.png create mode 100644 mods/ITEMS/mcl_signs/textures/_currency.png create mode 100644 mods/ITEMS/mcl_signs/textures/_diaresis.png create mode 100644 mods/ITEMS/mcl_signs/textures/_div.png create mode 100644 mods/ITEMS/mcl_signs/textures/_ee.png create mode 100644 mods/ITEMS/mcl_signs/textures/_ee_.png create mode 100644 mods/ITEMS/mcl_signs/textures/_ex_inv.png create mode 100644 mods/ITEMS/mcl_signs/textures/_guill_left.png create mode 100644 mods/ITEMS/mcl_signs/textures/_guill_right.png create mode 100644 mods/ITEMS/mcl_signs/textures/_mu.png create mode 100644 mods/ITEMS/mcl_signs/textures/_oe.png create mode 100644 mods/ITEMS/mcl_signs/textures/_oe_.png create mode 100644 mods/ITEMS/mcl_signs/textures/_paragraph.png create mode 100644 mods/ITEMS/mcl_signs/textures/_plus_minus.png create mode 100644 mods/ITEMS/mcl_signs/textures/_pound.png create mode 100644 mods/ITEMS/mcl_signs/textures/_qu_inv.png create mode 100644 mods/ITEMS/mcl_signs/textures/_registered.png create mode 100644 mods/ITEMS/mcl_signs/textures/_sz.png create mode 100644 mods/ITEMS/mcl_signs/textures/_times_cross.png create mode 100644 mods/ITEMS/mcl_signs/textures/_times_dot.png create mode 100644 mods/ITEMS/mcl_signs/textures/_ue.png create mode 100644 mods/ITEMS/mcl_signs/textures/_ue_.png create mode 100644 mods/ITEMS/mcl_signs/textures/_yen.png diff --git a/mods/ITEMS/mcl_signs/characters.txt b/mods/ITEMS/mcl_signs/characters.txt index 8574b781..3f597b20 100644 --- a/mods/ITEMS/mcl_signs/characters.txt +++ b/mods/ITEMS/mcl_signs/characters.txt @@ -283,3 +283,90 @@ _co ` _gr 2 +ä +_ae +5 +ë +_ee +5 +ï +_ie +5 +ö +_oe +5 +ü +_ue +5 +Ä +_ae_ +5 +Ë +_ee_ +5 +Ï +_ie_ +5 +Ö +_oe_ +5 +Ü +_ue_ +5 +ß +_sz +5 +× +_times_cross +5 +· +_times_dot +5 +÷ +_div +5 +» +_guill_right +5 +« +_guill_left +5 +¢ +_cent +5 +¿ +_qu_inv +5 +± +_plus_minus +5 +© +_copyright +5 +® +_registered +5 +¨ +_diaresis +5 +§ +_paragraph +5 +¦ +_broken_bar +5 +¥ +_yen +5 +¤ +_currency +5 +£ +_pound +5 +µ +_mu +5 +¡ +_ex_inv +5 diff --git a/mods/ITEMS/mcl_signs/init.lua b/mods/ITEMS/mcl_signs/init.lua index d009b287..7567f9a7 100644 --- a/mods/ITEMS/mcl_signs/init.lua +++ b/mods/ITEMS/mcl_signs/init.lua @@ -56,8 +56,7 @@ local string_to_line_array = function(str) current = current + 1 tab[current] = "" linechar = 1 - -- This check cuts off overlong lines - elseif linechar <= LINE_LENGTH then + else tab[current] = tab[current]..char linechar = linechar + 1 end @@ -84,7 +83,7 @@ local generate_line = function(s, ypos) local width = 0 local chars = 0 local printed_char_width = CHAR_WIDTH + 1 - while chars <= LINE_LENGTH and i <= #s do + while chars < LINE_LENGTH and i <= #s do local file = nil -- Get and render character if charmap[s:sub(i, i)] ~= nil then diff --git a/mods/ITEMS/mcl_signs/textures/_ae.png b/mods/ITEMS/mcl_signs/textures/_ae.png new file mode 100644 index 0000000000000000000000000000000000000000..7f199e477502d225240c45ca93d1af4245f6bd79 GIT binary patch literal 866 zcmeAS@N?(olHy`uVBq!ia0y~yU|?lnVBq0kV_;xdl~AtBz`%5+DkP#LD6w3jpeR2r zGbdG{q_QAYA+;hije()!*4t^(o1Uuixc--PZEH|zIZ|NIzv_&_;qz>lpIB|mtkkn~pAr)Eu&eL*?mN0ix4bXEc=^(9nFUrdp%_xJV1p7{Fufo+xi#_q2tp4y5i zK3hD&KB?r%68WOa9S^rlUcCJIHuoBpqt`zP?Y7)~-tyhmt5XD5%A8wNr<3}9L51R! zP3@^6hnK#%y^i(j#v^P=vL^ah#8wC>-Q;&9=b9BEtM;Th8zn#v6%0K9uY1 zx%yHH^E|mD2bVR@ayZk!^TN02ZTsE$&d*(Nk|nuC(EjR&sUON;9lkI}yR>uB{X(ax zgt$FLQkNs1T$7D*aQJ*Aq`an_SHDs?{(xTEuETF45_+%aJ_@ROHZA8IlWni2%!!o0 z5)K^?q75a51Ue+!SyH=><+yY#ZuUQVCQ>L~!C}=MO`i>dCmSB`sY&j+crEp5bkAZ| zg^*1W7ZR8m!@RowYnCd2F^=ZSy#XVLNvxC!SS$*E}a`TyA3*6Fg?+aYaU$lRjTl+1g zY1`)6u5`@#c9>=DV;6B_fyXWidEE>`v&1*Qm?ETK)E%kQ;# z`OEx^_CFCb`Kz7x$N$M8r|xVi5temCB(zvAnz{TiDX*T(Khl1hD)(0u5_skrOr zFSpFVdQ&MBb@0IkuC6951J literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_signs/textures/_ae_.png b/mods/ITEMS/mcl_signs/textures/_ae_.png new file mode 100644 index 0000000000000000000000000000000000000000..e19fdf1c8501cd8a993f6420b6e698ddfdfd6dd8 GIT binary patch literal 872 zcmeAS@N?(olHy`uVBq!ia0y~yU|?flVBp~Zk&fYK^cWbJu2h9YlmsP~D-;yvr)B1( zDwI?fq$;FVWTr7NRNQ(y&2y5BB9H6$IfvXmJUKcaPv8;U*VzA_-}CyFw|yTrd|0HY zwQ!2lf%>LZ7wT)|A4+q%eiFE9^K=T|lo`p-n)>9!cScz~s)|#6J8j~1%|b$DYfaF=PlQt`8!_v`jCbHqNCYFD= z{{EtZTksKKzB{c?4qSe&(|i>tZY$enI3OE!^T9KT!J&~c^6w`KRXZK^7;QGB}8 z&B?Szq&C`gvDLN+$2E=5I-{6VlUCSHnA^+6`)c*tkc~%9%;nWBZhd$8S<;-HdK!gc zQaJ}MH(A^W2@sy~bDLPy=Vzwzs>jdtJ~-Ku&?5Lg>&J;7>R-h&dS>o&X^*%1$#lke z`Nkg4JiCXiEGFBQ?fMdHYV+jmM}{(^%c`4`o1a>&7g&DDc6&;p*pHWjhueIvl`(j< z>=f-*WNcKPsG(}rbF*W?;%5JYry`Z+D>$sWqrtO5(6iyO>ati=Uo8HC-~C+hK)@ z;evyVOlu@WeUXIM*V}q5N|q!Zc9(nV*86Q^?IJh*Cw9x-X5Uf~n?C>U z%7Z!I#G0O!E}AUaQK%xY-IIay?BtsdMU?%ECf}SW+3qBH#Y26L+hhrjV}5Iz^WMCB zV)sB`&)CcgF#Ny|j8?CIbTlXMsm#F$061G6*wPEVVCVU|?V` z@$_|Nf6Oe(Bge8VR3?~#fkEBV#W6(Ua&m$K!@tEBcQ7i8P3>`!{4PKDY?HIlc0M&3 gEl%s%6$}ikw{ibmdKI;Vst0MsmxO8@`> literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_signs/textures/_broken_bar.png b/mods/ITEMS/mcl_signs/textures/_broken_bar.png new file mode 100644 index 0000000000000000000000000000000000000000..c733fd862b855274b0e828c2b849efd624765c10 GIT binary patch literal 857 zcmeAS@N?(olHy`uVBq!ia0y~yU|?lnVBq0kV_;xdl~AtBz`%61DkP#LD6w3jpeR2r zGbdG{q_QAYA+;hije()!*4t^(lkO<+xc-lHoz|eza-_&$#;P|8r_Zw*|DEyDCsggH zOmOZ79hN)F1?``&pBJoqpmb4W(yZr`ijPe7(u%qGp&~Zi*KqCc(wFOA-jqwatuLYG zsCzxxZhL)e?0Z?A+}|H___r}{eD9F2{Jz1+J{PzxrrqBIWtg$=Zm;dz5{TD0t zUVB{i^`E8Wkr!PRhZ_AAJ9qq+aW!Dp3<~6ar*q`8(d{myw@9l-m6ewk6kqL?S~lZHiu2h!3x03eDIuQ6 z?KP{FP5Q$Z1wJ$0D=caI&bD6Lk=lFxgkh0-g^{Af!sG2iagzIk@*0oLSm`bD_Y!Aj zW97#)nLf#rW|vnmGWM=rsaG4$$zLfff50zoS4x@AhGUPp3N`K)dyAzv&Oat%ma=Id zvx8F4+8I2Y97lSbn~YqO&6Hleco1w@JnaZO#{{i%F6JB;qX!n}H(orR@pIFs)MFQ! z1hgV~GBz|aXsf#Zizs>$aJ5oyWmZ`5^+l%Mev!rJrahMo_0^dfWoEoR>FUwRtJBTP z_2an34+<_*73V(ct+_SnLe~Y+z1lWewm&8)%T_%(%x8ZpQ2NsHrOR~9v+sGWp1Zpw z=l{Ijt?%}Jsk+n|Vs&|Cy4~9^o9C1&TyN_!DS483*j@6gTkp4RwTs-|pQ!cgHQVZ` zqierAxcTNAU6!+tUDS;Q9=j;yO=b|9rM~&a6e0hj$&orez6*J>mI(VT_vB%@?75~n z@6Ed>c2C7j{)(Fa6W(cX@h^W-;-cG6?24)#*IxhXI*~Qw-JzA4QyQCj`Id)&v)b<& zzwYpUwjX?7WM5cc_!Dku^)I3I{;c)o(|u1_&0}C-;4JWnEM{QPQwCwiilz2t3=9nH zC7!;n?2nm6dCWQIEcy@172=*Qjv*Y^lM@u!|Fj#<*lQ(=bX0fPsKF$+if?tFEl@Ydx6jSo`csu=X(5@bh(Z%_5A9WiPpc(rPg1s zidlcpUftPX*P(d@4}v|EqUOi3XircQ-Mb)Fao!}$urI4?Wp___{rbUOxA#fnucw_Z z)^Iu#t+>DY;$=$q1tTN;(zq(#}Qkg-%fk zu{On0r)NA#>6r5^t?60mqREmSg-Qb3JsCL9PL3?`>Qvu(Qb+9A!T>hYOPtFutFSe_RJrD8 zURGW-zleL*zb@(joiQ_B{A1r~a51+?e&^l=*Ixfxbb`sm|6xz&l*VpeuI1t1toD1x zzdO8N>WA5v+!wbm{0TR-`nS6Ee#E`<3DQTl?_*$K;4JWnEM{QPQwCwiilz2t3=9nH zC7!;n?2nm6d5ldKEGrXWU|`Vjba4#fxSpJ#!2YM*aK?s{MhjOb9Z>o(pK-dDn$0eW if612}Z+J#9G6;)tGT6UbbAf?@fx*+&&t;ucLK6Vsx`)sJ literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_signs/textures/_copyright.png b/mods/ITEMS/mcl_signs/textures/_copyright.png new file mode 100644 index 0000000000000000000000000000000000000000..7cfdf217ea3ef1e22be1112389d363244d1633a7 GIT binary patch literal 883 zcmeAS@N?(olHy`uVBq!ia0y~yU|?lnVBq0kV_;xdl~AtBz`%5^DkP#LD6w3jpeR2r zGbdG{q_QAYA+;hije()!*4t^hMRyc<+Wr@J$uW9zbUscnFy8Cfe_!0^oAS-HWtsKI z&M=8NG1)TZTh#xRdB`p&8;u3OgQ@pOav*KJd;HY**P znc{m|qiz18{M8~N$Hk;ON-x+1L@jXY$>8_8vhvb`;;p?>(`NigaXx)V;JaqAq23*_ zDJI;!W)EI6>O@Gb;5&F`o1=T)dey85qpdkt(LXqMNl%vTT1$P?oKFa+uHlRG{>w?`ex%M+22rr)Q(=bX0fPsKF$+if?tFEl@Ydx6jSo`csu=X(5@bh(Z%_5A9WiPpc(rPg1s zidlcpUftPX*P(d@4}v|EqUOi3XircQ-Mb)Fao!}$Ygg4Y*C&e?)ynR<{UY{F(%qs; zKG%*)?I-1iw~8)Z-xw`e6(e}p)_$)*r>5Ps<2QQWCC|D3F6&fB2w!z@esrX=hSD6* zYg>A;=jSds$&%b6DW6rL`p0Xpq*U@Uy}&QpejeOw zy3_rVB`4p>S;)#_Qsz^7wEXIa3FaRe-=r+lKGVm0ts+K^Z)tVj$wxXDF3&jB=5uX3 zV++SV(QZY?#u3qj&zShidd1;}$-J1`KWwt8TMrGY9+Wc(omRmc$ zkAHl>Gy26n@Ac|)J(e2Jt$KFZ&;E2Idr|HQ4`+8dvzjS^`ByUJZ>wj0>AUm%N=ESP zBbP31wl?iJd(Y>>9={SJWpt~;#aC-<3%DHo@vf8>@_Ob==ku&pI^S(L}rux*;EBm)D3f~SjP2*>s0gas0R+@BjKO-x8}dUim)urawMTNE)cFfe$!`njxgN@xNAQ745I literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_signs/textures/_diaresis.png b/mods/ITEMS/mcl_signs/textures/_diaresis.png new file mode 100644 index 0000000000000000000000000000000000000000..d092503a610a8fd305635eb1d86881c25bbfa55f GIT binary patch literal 852 zcmeAS@N?(olHy`uVBq!ia0y~yU|?flVBp~Zk&fYK^cWbJu2qFZlmsP~D-;yvr)B1( zDwI?fq$;FVWTr7NRNQ(y&2y5BB9H6$IfvXmJUKcaPv8;U*VzA_-}CyFw|yTrd|0HY zwQ!2lf%>LZ7wT)|A4+q%eiFE9^K=T|lo`p-n)>9!cScz~s)|#6J8j~1%|b$DZa;r1Ep1!rbT&VBpbdcud)<$rCT*seR${`SrJ6?@`d zSMII)E61B;;%f8oK&%I!P3<|Qh{hDn3|4=!N0~EgU3Fi4JbtUyJU0I5?yqrMtWRw_ zy;D*esrX*h0{5W z>Y=)eyD#H%jlW8%cVWu>L=3~ z=_W1Hv4Bo;qCeQLU7IJd(J z6~hGw8JX5di2h8zIMJDPxjI{@Z`P|>TU9&_Grdk;+OxQ;(>2&T?b)=oJ1R=PK6&=; zruQ?Q9fwSo=O|X6+bQA`C9o@@q|sedeSXog;PWN7UZ&f5yZ*Wov2|J2)$Dak3n#Zd zz8|#t!k(vLR;5dV`eUnKUEBLSj;$#7M2EAxlv&M_z`QFN^0(EqzBs)r&f2olH>vRF z&AC!%(()BE;?%8XHcGfN70zavaKUD#te@d074w<0GYd7QIQEtt$~5V0On7s|>cz2l ze(!?w93STwK8~NrEqr&sg1Fi)-*>j#`B!Y+R2P`SIBR)9R@I3EN7>rnweCH0e~EqG z;rnbqxW0(K(7y0rAmhQV1N)DD5LPIiwm!W~r<{R-fwRCPvY3HEPZ@+6E0)@qF)%Q& zmw5WRvOi`Pi(>7nLO#7oYJgFnGH9 KxvXQ(=bX0fPsKF$+if?tFEl@Ydx6jSo`csu=X(5@bh(Z%_5A9WiPpc(rPg1s zidlcpUftPX*P(d@4}v|EqUOi3XircQ-Mb)Fao(gYD%+y!WOq+^{rbUOxA#fnucw_Z z)^Iu#t+>DY;$=$q1tTNBOgb95V7Xx{@60v% z%p8I>+G5U3OoopqE%3QGqnD$wTN%xiBn##&&p%@rwQEgHXW>?c z7O!K9A1fOev{haIMHD>=xLPT{GAk_j`XWKt z`f=Ri2St~uigO?J*4%n1v-M@yO;M?>ay2I=^4We$Y?pt!g7@X+pv%){o8~XQdM?(g zum1d9r|)r9wl7_@=DxgQJiqK$zcXgWi+}7p4KC&u$?x2|;M(h7i%u|^_&@B)oYL6M%e6fGo7H~L z_;-i*OZ_nWlKbNJg+JkjR{vJF-ggr!@9SFi!kdACfwRCPvY3HEPZ@+6E0)@qF)%Q& zmw5WRvOi`PQohBy8&#;A$nOSJN Sj0*z;1B0ilpUXO@geCwEuzyAX literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_signs/textures/_ee.png b/mods/ITEMS/mcl_signs/textures/_ee.png new file mode 100644 index 0000000000000000000000000000000000000000..646c19e14109fa090f90a46f59a083f07ea38807 GIT binary patch literal 869 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 RGB7YOc)I$ztaD0e0szYGgq{EZ literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_signs/textures/_guill_right.png b/mods/ITEMS/mcl_signs/textures/_guill_right.png new file mode 100644 index 0000000000000000000000000000000000000000..d372e6a8558f1c8e7684ccda0174989f30f95037 GIT binary patch literal 855 zcmeAS@N?(olHy`uVBq!ia0y~yU|?lnVBq0kV_;xdl~AtBz`%61DkP#LD6w3jpeR2r zGbdG{q_QAYA+;hije()!*4t^(lkO<+xc-lHoz|eza-_&$#;P|8r_Zw*|DEyDCsggH zOmOZ79hN)F1?``&pBJoqpmb4W(yZr`ijPe7(u%qGp&~Zi*KqCc(wFOA-jqwatuLYG zsCzxxZhL)e?0Z?A+}|H___r}{eD9F2{Jz1+J{PzxrrqBIWtg$=Zm;dz5{TD0t zUVB{i^`E8Wkr!PRhZ_AAJ9qq+aW!Dp3<~6ar*q`8(e2Eeu79?cDPF(+=x)^eE#0NJ zpGI~Gd@eij-sD!9l-m6ewk6kqL?S~lZHiu2h!3x03eDIuQ6 z?KP{FP1@j#0-qW06_&JpXIroBNbS9T!mvoa!bnkK;qi8%ILZA%d5yOWCxK z*+Hpi?F=4Hjw3zJO-8QCW=bz!JP0-{o_2(tV}e#W7juq_(F2R~8!sNu__^s*>amMV z0$Pzg85;r_v{haIMHD>=xLPTKt z`f=Ri2L+d@igO?J*4&zOq3eR^UTvE!+aD8@WviYX=CeN)D1B-9(q+2l+4sCw&)r>; z^MBs%)^~fqR9)%}vAVo6-R|v|&2vf>uDA7=lsrj1>@NA$t@qou+C^^fPt^MLnr-#e z(Y4gpibGm&lJY`^D;4JWnEM{QPQwCwiilz2t3=9nH zC7!;n?2nm6c?{LX^g?|Y7#Ku7T^vI=t|uofkoe=i_~Zly9S3d(2G5_I-(#Lwzhhuv OVDNPHb6Mw<&;$UkYJF?~ literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_signs/textures/_mu.png b/mods/ITEMS/mcl_signs/textures/_mu.png new file mode 100644 index 0000000000000000000000000000000000000000..3d8c1b89045af84033d98b7ea43c99ee93dc3e80 GIT binary patch literal 869 zcmeAS@N?(olHy`uVBq!ia0y~yU|?flVBp~Zk&fYK^cWbJu2h9YlmsP~D-;yvr)B1( zDwI?fq$;FVWTr7NRNQ(y&2!RS1)jF=bCldSsI(j@G;j{hoACHK`{n#se&MMRDHj9y zH|VHbQ2)UF_xN|geG3Cr_yf-d`@MANv`o{J_)$1@^>XEP-?TEnf6?K0zpF2yyyq3Kf10V(oXoUu-}8Lxj}3GGKHhaU@A3Nc z7X^BjZBUol!F{sv+H&!OTq@p<`WcZO%T@F^7l%IVPZq!T=$F)<+b>kh+;0|D^11E^ z^w2lFRdh*w=bbwrE_c0n_w!}zNx}Z(p9FRr&g#Fo{_fNn0xLznExWgElUsm|pjYH& zp;Zr;OWa;1d3EDat|VR)|0_}&!pgUpZ{A#SVZpv%UZUPTcWz!V4nIISwB2}sDDk%=$X08r9Hmz6YGrh zYYCE*@8m3GWicu9DLq<#^}_`7> zlaZHCAmQkW6Y|}CGFn2x zVzHRSS;5;T*glWpnj zEoa+!b2jI!>z#gS3dbfo+)-mxG4W4p5ALx!>6_-BCc~8)pggxg$~Q?t!g?d$u8q4V z|DF`sfV`foaCX;ka>8T713@V;3jv*44lM@!m|L8xLc4+CO5>7XrG6SX0|Ali!!mjf0 c@bEB{7qPLe#Yd)kX~kUpP!SvMYq<7#>C1I5Z^|XzmX}a- z)V-cR0c;_fwbNuX(*~n#hMQ+N9;H8ewS4o@t7=Aq2HfyKj_sn8Ly*px4 zOt^W?9=vpv$&p&Yd8TGI_u9hKQtKxsKk@sJ;$+~|&#$`2sBY;Ure4F~=^DS53SVOS z{AlLo8OK!2=YL>gl8O$F{k2X=?vt8b!`w3^C*MRQ^d1*|6tL_0G@Wxy_Pv@pCsJzJ z8(bu!4JCyHIwad!QoD}jxLmk+aCy=*olbrMh0u2*Y&SYm4iwHyUfh52Q|i;xJ&Rct zLN-ZUNML3R^XmGu@yUsWt3KNVU0t(moon{AIh&r%(LHaxYF32N)||AwqpP~r!_Viv zi`yfn*QD&@ttZwsJt*tw0?~!qRpAv^sy-;XTYWjvE?YNcvDp%TZ{O&=YkQ`KS(m@O z@z1uL`)>8iuSoytoqlNw$2uMEs4=RT_@`aeRGs%kZF7XgY$wSp9_n-aCQEQEn;gM@ z_r~3mwWoA5erf0ZQ7=kd^jrSPA(!nZYoB~;idz3#+*NGBPVVK)0@?V?Eat@BeErAw zSCQ;L(*xxT-aFiHe73*q;>UR1KWsMB%X_!CHrX&RFmM)lL>4nJ=qZCRW5rVYG6n_) z_7YEDSN6xuqCE0^@w1QcFfcI4dAc};a9mGLP!Rp&zWC$nKmESibI!K-N(+0Y1u-z> Y%wYeU@z?b^0|Nttr>mdKI;Vst04Xzq+yDRo literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_signs/textures/_oe_.png b/mods/ITEMS/mcl_signs/textures/_oe_.png new file mode 100644 index 0000000000000000000000000000000000000000..73b4da80ed711d15fa30bcc5b4b58d64030d7ac6 GIT binary patch literal 866 zcmeAS@N?(olHy`uVBq!ia0y~yU|?lnVBq0kV_;xdl~AtBz`%5^DkP#LD6w3jpeR2r zGbdG{q_QAYA+;hije()!*4t^(lkO<+xc-lHoz|eza-_&$#;P|8r_Zw*|DEyDCsggH zOmOZ79hN)F1?``&pBJoqpmb4W(yZr`ijPe7(u%qGp&~Zi*KqCc(wFOA-jqwatuLYG zsCzxxZhL)e?0Z?A+}|H___r}{eD9F2{Jz1+J{PzxrrqBIWtg$=Zm;dz5{TD0t zUVB{i^`E8Wkr!PRhZ_AAJ9qq+aW!Dp3<~6ar*q`8(e0+HTc5MvI;~rObobVKnc}av zo!%^>`0VY3`Fy#k$@c5(f;dfz3_x&A8aRDf3d-WA)It`U<_ zOrLaBcd3fCMzJ7hL;8D5c_vLbk?G(af*ii3| z*c20PUb6=;9c6N)R&buFna#bn@U+zWiOEm=KBPDqIQ8?Z?lG!cdWWgkFnGGgucgA5 zm_9$6d3nY$74!EWn3$xZgJXZK6O#L+X4f$HOv%YN5edD=MIQz1dOl6(9Fu*oX3mL} zTJ{DPiD*MfA%PCbc9ztxV>vDtE*@N-^h~FdUqB)Boe0~Fj+6t1^O6_$U;LE%^mNZ+ zR)vsF5*HGf8N|bx#g(cLitbilPPEI`O<8QV#NXRDI`7(^sbSXT zFK_&_E$6;l{qpM);gu!Jg3s67dYNwd+F>29Waf(#huiv%UiC`7&He4tdvD_JIa0Y< zlOv+)%9gWjz8TFi>v*SMn!>S8hdXMFDklDE7d2JqJyF{nAu-!Y@`{K09KXpD9Lpw0 zu;0CL_hjuU-Hcz_d4JT45*PiJe{#rW`^nlT-6x%V@={wnX=mCqs0z`(#+;1OBOz@VoL!i*J5?aLS# z7}!fZeO=ifGmG-bvjsZ%*fB6L$a}gthHzX@PB_5)Z}G(+q5qCA6Frx9XjyNC;~cR- b28P!T?EjaWK7Yx;z`)??>gTe~DWM4f4}*%? literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_signs/textures/_paragraph.png b/mods/ITEMS/mcl_signs/textures/_paragraph.png new file mode 100644 index 0000000000000000000000000000000000000000..52c162120bd0ded0a621214e569db8855eaca11d GIT binary patch literal 871 zcmeAS@N?(olHy`uVBq!ia0y~yU|?flVBp~Zk&fYK^cWbJu2qFZlmsP~D-;yvr)B1( zDwI?fq$;FVWTr7NRNQ(y&2y5BB9H6$IfvXmJUKcaPv8;U*VzA_-}CyFw|yTrd|0HY zwQ!2lf%>LZ7wT)|A4+q%eiFE9^K=T|lo`p-n)>9!cScz~s)|#6J8j~1%|b$DZa;r1Ep1!rbT&VBpbdcud)<$rCT*seR${`SrJ6?@`d zSMII)E61B;;%f8oK&%I!P3<|Qh{hDn3|4=!N0~Egr*6@Cnf&(9>~-rO-L2BUC7XKt zX=GQy;t6pkx5_T{Z;j@%UDxr>*nY2p<)e=ga$BX(9)EHDotIC5R_orC+t;pyD1BLU7lY1_HN_~2|XEm$B zGeN@z2N{{xNQnMSzBtj@)ipWb>XK#aBE2VxOkOrc=dAUr84)I1Q_}Koc6Gal`{%uz zw>RZnleSOsDX~q@=Xf7n!n%;#O}t`C(I?Gxo3B30=hi*j9J0i}H#B=y*xqMRQs$W! z|8z~c&qn7h4R+W1dSmPIyt~!!QWdVZ^;ncFNj&T>_tdTT+s4{OZu(E`mb=Zqr6M+c z{@s-abH0f+Ju6)_S+b*0MPR!p1LxVvHy?^9`xi~VIZ?9RN%D$^`W&~(5*)|;)->n6 zdH2NbshG(>G4p?-I}I-Wn zoBhdcSnm+uxR2>Ce5E}-8E!jVBjq9h%9Dc&{GCs#)_r(Wef}q z>?NMQuI!JQMR_cw=C>>oVPIfT@pN$vk+__kpuq6Y*|1H)%xsxglbhn}U;dNyMDF^C eSTb_& literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_signs/textures/_plus_minus.png b/mods/ITEMS/mcl_signs/textures/_plus_minus.png new file mode 100644 index 0000000000000000000000000000000000000000..e7c3f12003109b14f4aad710b16598b8ea2f7553 GIT binary patch literal 858 zcmeAS@N?(olHy`uVBq!ia0y~yU|?lnVBq0kV_;xdl~AtBz`%5+DkP#LD6w3jpeR2r zGbdG{q_QAYA+;hije()!*4t^(lT_4sT>nS5PH#|YIa1^yCwQ-M`g`t^SF&#jKip_9 zy+|lXmF14|3a-cN?bClSx4Hy-WX{RwtSpbb@SZM0_#No z59hz92rSlq#K|t_B=qr%X?Fr^(2_->Hjy3EQ@@tpzW6_C_k`EiAK6yP-#S|L=98Xl z$4`qV{Jnj1zZ}-<&-{_=`en|~x7<03N3VZcba&3(=Q7{lWt|GpYTvw4KKiDuMcjl> zVaki8?7H^7jS7&B&QZAL_}MA9k<0MPyeTV!mwF~|@0FT1qhiCt)VvF|H)DFZxAUs5 z^_t8pQ6<1Wn=OmU*#4SR^}S8cv!Be^DQq)SpvU0Ra;ber|NLrMW)&~h3;YtTzJ&GK zQSId$dtCEuAF{HT^e@}>^{(ljC%!d|yJx(dc5~xFsrA-JmVP;-dvgwJom8;Jgpeo)YQ3*|A`8v;WakkwWnb4y*2H`fLz9+3_&Og=f$IrMt%l2wtuvEA2nEK|=~M#q(hm~KqTx_RbKSE#uEx_Ni+ z?5)s^VF{lxEk;K~f9aJjPi?30o^>Bqe0}7-uH@xZ{oQ}G!gD?5Pn)&v&YDW?wPo)v z75=GyC${VRrPm7@L!>faoH*RpZ}iG#o$t)dS7$CSJ8$&5S!!ypG>q{s( z>VHp`bKmc@?mXwTzCTsd*{$1d^e^N;e|&+?`JRIpKPP+qn0C36@9CMa)bwax*yuN<0y2tLQ-Zkav z-ve4^^gI0%S*)!7*Q(6gX}$KM<0&DwK?@7FEs@pxKb_I2Y_+a{$$ zGgJIeuV|Z}l(SnbEYha ztGd=}GH*qd0Q+pVEG9$yYfiWGZ~l|Av?*^=6YddA`x9_D{E+=he&^zKS5&*|j&o)< zmVP{ysgpc0T6arB!?Vtn?|!_Kiu2c_2EKC<-78Qq(6SgWLhEhe1& zW!NBaaC?%Wih_W#9_J~M-kTi)?(Flsrfyc*=g<(cGk8XV@+8LNl|PTkEM9y1)OLw* zZif{qh6@fdGOd{+@-zA5MCZ`!wM$k-`o?x&)3HoFYZ)C^9%8yNCF|yyJ6)mT{_E!5 zy|cGMH-;sA#HDAcFy3Z!d9PW$G$^%m7I;J!Gcf2WgD_*oQu{In1_t&L zPhVH|$IPNUrd;N8&)70BFerJtIEHXsPfk!^|I?l%!pLLR#if?>%wW;Vq$8n_jUd-ktwjFkOV()u{l{Mi?!H*lQ@3{A5tgMvH@d5$Ph}kx zEIQ`h+miG{^VT*mw?dtbO%cpzg_p9OIucMFu*9vE?Q3ZGsu@X7&b7_j>GVCb*zjD8 z_!J9nUbBP@N0}V06`W^kW^=DC{4BM8Qt}hG4=GLtPW}9EGhY*Im6QXi7<=DROwbmGbPS~InQsrNZwKt`P1le z1|!E*6*iL_8V#b0mFjh@idMX^=?^hoxib6OB$cB}G*!Jn_h_k!`RdM`8NKb%ql;H3 z&)%J`KXdZ~j>~g4wZ5@@9%PW=_@e0^tK8B#HK!!~Z7*jopZ`-w^ks1J)mf`T*YBKm z%vWk#z4uwC&(oq`UYY1+TlRKk^!Ityk|(w*D)Y%^-uN)leP`g}y}9#OT(mBlAH3K% zSE&2+`FB?m%&NH^KU-Wp$#cX)sN=RuL(8+1Zwk65s_#7c=0uP0LY}N8!hVZAd03Lw zuQ{5Rl^4w~;+Fc~CH=oMX2y$u>^luE<`&8C+`Hh~sb7muFqxD;yz*s2V>2(`UGD0c z_m}8je;ChP!~To!i)_Zf)e^k_uO7? zfq}im)7O>#F|#O-wOL!?ToVQc1_@6W#}JO|$q5Uje)#Y6+Qan!qUyiklLs08NwNJh Uzvi=@fq{X+)78&qol`;+0E5npQ~&?~ literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_signs/textures/_registered.png b/mods/ITEMS/mcl_signs/textures/_registered.png new file mode 100644 index 0000000000000000000000000000000000000000..9a78dda3c273acd778edc3de7730f0d5b8235921 GIT binary patch literal 882 zcmeAS@N?(olHy`uVBq!ia0y~yU|?lnVBq0kV_;xdl~AtBz`%61DkP#LD6w3jpeR2r zGbdG{q_QAYA+;hije()!*4t^(lTypG>q{s( z>VHp`bKmc@?mXwTzCTsd*{$1d^e^N;e|&+?`JRIpKPP+qn0C36@9CMV+NN?CZv$Z;|0j?xQz0-_f<^$Cfp;K_9x(Q_#yk1{LaPeuBdj^9p}t! zEd6*YQzv<1wCO?^WLh&tIrkxg^ai!{`YWS`%r>4i&O&woVls?P6oIdlbWAC|*wTs>6pZGgVN;a!I z;#SqSC2SjSwsS^Z@6=0EIM(TKM~qR$L_h7KrfS?1vCR<@?M{+cJjCbtbxUw8b6hi7 z?#;X>btiQ*e(C1@F)m76_}l(OYwNoSzbD=nzfyHKUgT!OHO&~qUZcW|j)@hi>tE0Q za=iA(dbWMMwbH-Lw)_h{)Av8?Vf@6j@@X1>eApQn7&r?&B8wRq^pruEv0|xx83O|Y zdx@v7EBj++Q64L!8SEK33=9kgo-U3d9M_W*4lqe9{8C@C@qY%_e`Cd!E#5{8Gk^E% rooMiVT0cYeNcQnpDs%ddGcX(s;^w@+J9-fV0|SGntDnm{r-UW|>-&#` literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_signs/textures/_sz.png b/mods/ITEMS/mcl_signs/textures/_sz.png new file mode 100644 index 0000000000000000000000000000000000000000..56d2847a1517a7346a218bf19d413c17be8525e3 GIT binary patch literal 874 zcmeAS@N?(olHy`uVBq!ia0y~yU|?lnVBq0kV_;xdl~AtBz`%5^DkP#LD6w3jpeR2r zGbdG{q_QAYA+;hije()!*4t^(lkO<+xc-lHoz|eza-_&$#;P|8r_Zw*|DEyDCsggH zOmOZ79hN)F1?``&pBJoqpmb4W(yZr`ijPe7(u%qGp&~Zi*KqCc(wFOA-jqwatuLYG zsCzxxZhL)e?0Z?A+}|H___r}{eD9F2{Jz1+J{PzxrrqBIWtg$=Zm;dz5{TD0t zUVB{i^`E8Wkr!PRhZ_AAJ9qq+aW!Dp3<~6ar*q`8(e0+?T3Y|2c29Vn{V{KC`K_b7 z-hR???WnYVQZAKi{WAOQG^c*!MZZt@>$@a%^?NsgFe84}MOWG*% zKBI!*u`r)D7M7%AijFfE8A=P5lzdn@!_xZ^GmFPm>sCfHCCP$0&u_d)-cl3!)97&q zBga%7Hj^6;4O1s6)$3Rmt$1bAA7Z+CW%k8cs>|0{rl0=Yvr286kM8W5(HmbqI(c>T z?A_w)Te}}{T%Oe3`e^BtD8mfb7hU&6<+jSzoS4XG`zf(q{^<(dmzRSsPn&I;zx3+4 zSgURI=kGdwkE^nM>7q6F~T$&wv~N&?$G892{Qjx6!&RNr}0N9@?L05;Q0oXan(ur<9@ zx#nnIR$er}h{PzxrrqBIWtg$=Zm;dz5{TD0t zUVB{i^`E8Wkr!PRhZ_AAJ9qq+aW!Dp3<~6ar*q`;q-jT|9gWKtFRInOxAv>w?uhNN z^OkZL=C}XxTb!$2yY_C-i$b>&`JXRaJ$ycXth$m{BL8?#Sa@(-kmVcKy}GGeA8=Ss zUXv$z^h5BL+^J2EB9fRl^37uR;tuIp_-%p9TrFO!@VhG#yE^^NuAJfBPn9wq_8Gk%(hM?Icq8mD~x#M}obTM}C2QzNd@1SaPk)) zL#M&EBqJ3C0b@SSQzE@LI~FW%_CI1{-Ofh|)Q#mj2>XAt+Q;mzY!(wfAR+SZh zf3&qgP$n^|Xk);hDM8w7YdK;s?mo2mS~I`prG@TxZ$2!R*{WC@m36CV^Ru;EZte6w z{_XwF=ok0A*Q?Le*#K`_qx^MY$(DoZaQjYNiC{U&+Y7t)BIz@6Pip8NsuU zT>7-x+H}U*drlW@{7Q_N4gFXinQ4nJ=qZCRW5rVYG6n_) z_7YEDSN6xuqP*zopr07s&PsQ>@~ literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_signs/textures/_times_dot.png b/mods/ITEMS/mcl_signs/textures/_times_dot.png new file mode 100644 index 0000000000000000000000000000000000000000..42dac52bc914c5f80d60c198f3c247f43aba869b GIT binary patch literal 849 zcmeAS@N?(olHy`uVBq!ia0y~yU|?lnVBq0kV_;xdl~AtBz`%5+DkP#LD6w3jpeR2r zGbdG{q_QAYA+;hije()!*4t^(o1UogwB3(%oz|eza-_&$`l>eyr_b}J{W4Pzp6V&b zKZS91E6XpIw+8=y6}Q<3c$l;fcrG6Ppts3p{l|-+lRbV+yIjft^vvp)sn*XQmYtD% zJpcVkfu406)MY9-JY8O&?oMD0TCzxdi_Q`6N!wHwhkC{z*L(7-^n={u{u@WDo_vz) z68Ic=Lf+7-=o0@!zFcfEM|^DX zx_Q}X)x*G^-0MxRZX_{py!`ryN#-9}-y|)wKGVm0t>Uhl-qQ5Elh1T6T%K{L(dSw} zV++SV(QZY?#u=xLPW|GAk_j`XWg`s&P#GBe(uboJ=u)#>Kt z`f=Ri2St~uigO?J*4%n1v-M@yO;M?>aWyBW>h1lMIz9gBD&CiugDy{-ZJNLI>bY2} zzWVcboxaCa$(l^?Qs$MdyzwE>ZSIM!n#R6!D{p;?Osfr8T%2=%#YOg=@xhCoa|OMl z&(FJ}VD>w)>00TcZpn^9C4ud(44h}XBTKwG#djXn5j(apfX(z0>+;J=Y)zR0ua~gz zR^J(4#69busQEwjqQr&2?N79}zMJrS=56sSRd@euY+_s+ydy~}^-)sup%16xuGe46 z|Nd~l)DN>Sxi4;C__b<=?EJEa`O6Z@Rwtia_LYHwfwRCPvY3HEPZ@+6E0)@qF)%Q& zmw5WRvOi`PEal|aXmRfg5ksb!~h0{_EJWM>$Va-3=9kmp00i_ I>zopr08UPVv;Y7A literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_signs/textures/_ue.png b/mods/ITEMS/mcl_signs/textures/_ue.png new file mode 100644 index 0000000000000000000000000000000000000000..6249aaebb8e61d6fe1beaedc1a008985425fa5c3 GIT binary patch literal 870 zcmeAS@N?(olHy`uVBq!ia0y~yU|?flVBp~Zk&fYK^cWbJu2zLalmsP~D-;yvr)B1( zDwI?fq$;FVWTr7NRNQ(y&3lrJCQsYNbT2$+^q2$T+)iyT_kJRy8y!%0Klg;{%7e6O^{7_r|S?1Kt@XMFW&h_6mtnS%w zukLKH>(IP{2Z}0!YxVV;L_H>U#a-AWpnp<|J7u-*{Ns8xN50xte7_j|Cdsy_lGk-d z@QHjwtD;NhJMY~6aJuWo!=F!EJ$*jzv^ko0?p<-;?RQzHIzsr;gXN=dDr>}XEPazH zdG$kZPww@mS2vQFH}cIA&*Bd05PaMD=1oZEr5m-2+f>!$a$d}oezY$|?^x^Ywn<@2 zPqNwAb~O7kn>NmPpS|$y_MG}&nR(WZlR1xZ7}u?MX#8;gmE8+1!(R!x?mv3cJR#1q zH&v%-b*q@b1slVwviD;T2j4rQzM*^OI|FO8h{vVIg_^cS-e&2I^Nxw|rEIF>QE>UN zHiCzf_oNGJ!={nRu(NcIOwLr-1qrYucce`^r`ttF}e&3Cmn5I zW9Qfq6!fHD)txU?)Yma|^Q>KBYa@$J%_`ou=iQ2|q?1=R&D<%vT5n#A?e3k`AES0~ ztTWKv8KDv9wNlhi+b8_Yx(h45KJs2y@^Y&F?mt@LxgPVU&DwTnO{MnQvUisX|5U#d z+x7j@>jjM=QkgGK9B%73dgZdtcV_0RGnbd0H+nr+YHspxr`~%f{?3w;&FYT0RrPHF z+s2#ioKe?1_0klMbvoP;V^lHGPrIn88uvtObA&{@ljIc-@i~6o5**7M*Gzu*M(#=7 zN!^TJx_N($ixL<9)<4nO`fkGSiMQ3SRNajix!G_{GsdvjsBoiWVnyou*R#JIul*6t z9N)H&r&jWpy~L~?dLP8~YuGPdntJT$#op-*3=EtF9+AZi40_5S%viD1zKnr^fxX1j z*OmP-vnY?8I*U=RA_D`1il>WXh{WaO1O@Rw?u$8B|LbqU2`7IVyCVzT&F b1_q|BT)!CiCD<`AFfe$!`njxgN@xNA-(!VS literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_signs/textures/_ue_.png b/mods/ITEMS/mcl_signs/textures/_ue_.png new file mode 100644 index 0000000000000000000000000000000000000000..3193a941293a78e674a862d33904d05af9fec8c7 GIT binary patch literal 872 zcmeAS@N?(olHy`uVBq!ia0y~yU|?flVBp~Zk&fYK^cWbJu2qFZlmsP~D-;yvr)B1( zDwI?fq$;FVWTr7NRNQ(y&3jUeCXeg$HHW+%gq)HrZR`a1HplJLSD9)*T{dwyyRAk? z&4ena1GY_P4F3I1Z_C%1a>6<2b4*d6#>yp!L}mN87iDWM`@3gqO;pv^_8aH8+dMCv z`Y3;V|DkpLjMMu5R&8asZoJ{Iu#5ek>$Nkh>;L>=5!!e2Wexw+p4Bfit)Cx$+hTk0 z{(kjliC95@iw^>mI+m}GWYM0WB)ay&NvAzJtMxa8dOn(;EpAs*EB^jo^<}+l$59m$IUn*GXM1Cvf{G&#dpfWgWG~E=lIs!o2Noeo9%Uy<_oLV^Qw;v9RrYPkqq)#%D1ry+!^mo1A}O zPm$E=h$q*C;~X45XRM08AA30X-VyZ;-81uM%1W>KxT|%?6uF(Mvo{~`Pv&AbinM1` z5PTM<)5gM*q!xHer1xgWg2m1LM^8lx#Va_hx})i{LGWb5<2}!gNi2SQ`jolxIwQRwvNZ;7*YdV&xXDy@S%0o;yrexhbbEhj*+<)D?yLa|h z=*F;w&zKgYBci|bN|&d$Q+Ut14=cVt@?KZ+a;pCBKU(3r9`mQo+IDA6rS{sgcb5wP zRKFA3_5IT81&tw6nJ-QpZtFLC<+9FqX6CCimzSM4dOcTaZt`!Z-g_th&XSVN>W;Wo z_iX{&=9}&uQP(^5(iDz$I@}RsR58&{yQrxe_e5-SghacO4nJ=qZCRW5rVYG6n_) z_7YEDSN6xuqC9d2?GIl(V_;xV^>lFzk+__kpuq6&aY8ban~G@9jgkb3qb;X3E~#F4 g`}4d*Ed#@qyBv(+?awDMFfcH9y85}Sb4q9e04#lztN;K2 literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_signs/textures/_yen.png b/mods/ITEMS/mcl_signs/textures/_yen.png new file mode 100644 index 0000000000000000000000000000000000000000..ec4ad65eefe244f0e6501136c280307f264d49fd GIT binary patch literal 866 zcmeAS@N?(olHy`uVBq!ia0y~yU|?lnVBq0kV_;xdl~AtBz`%61DkP#LD6w3jpeR2r zGbdG{q_QAYA+;hije()!*4t^(o1UogwB3(%oz|eza-_&$`l>eyr_b}J{W4Pzp6V&b zKZS91E6XpIw+8=y6}Q<3c$l;fcrG6Ppts3p{l|-+lRbV+yIjft^vvp)sn*XQmYtD% zJpcVkfu406)MY9-JY8O&?oMD0TCzxdi_Q`6O~4iN3(F>eCPVvcPPg-K{*$t_DQ{8}?h#D;6LL8G(EXMC&c*AlsCLyI=ge#@ z{dg)WeLSw&AT$N^8svEWW$rRJ)IhA(6+&5jQkuH_4dxv z$3MQ`(Jgtu^tvPSN|Q?$Cbsj+r(WrdnQe6W%FN}y^HZ;}n_3Zj!%P$R^7hfWqje|dL?nOUH_Y7B3|(AoWHZyaqacL{YugotXj2~1*++pY4EInQ~Fo^ zZ<+kR)s6Yi_uKaIu3g`C^JAv?KenA_WozY&6+tPVv%n*=n1Ml08H5=tmfDvwFfg!} zc>21sKV}x?F;m^1xM(>81A~I6i(?4K_2dKv)<5pgjT3{9y7UPCFPwF@!*`m~)Cfif Zp&1 Date: Thu, 21 Mar 2019 15:45:54 +0100 Subject: [PATCH 208/737] Signs: Add support for all Latin-1 printable chars --- mods/ITEMS/mcl_signs/characters.txt | 195 ++++++++++++++++++ mods/ITEMS/mcl_signs/textures/_1_2.png | Bin 0 -> 876 bytes mods/ITEMS/mcl_signs/textures/_1_4.png | Bin 0 -> 881 bytes mods/ITEMS/mcl_signs/textures/_1_sup.png | Bin 0 -> 868 bytes mods/ITEMS/mcl_signs/textures/_2_sup.png | Bin 0 -> 865 bytes mods/ITEMS/mcl_signs/textures/_3_4.png | Bin 0 -> 886 bytes mods/ITEMS/mcl_signs/textures/_3_sup.png | Bin 0 -> 863 bytes mods/ITEMS/mcl_signs/textures/_a_acute.png | Bin 0 -> 862 bytes mods/ITEMS/mcl_signs/textures/_a_acute_.png | Bin 0 -> 882 bytes .../mcl_signs/textures/_a_circumflex.png | Bin 0 -> 866 bytes .../mcl_signs/textures/_a_circumflex_.png | Bin 0 -> 876 bytes mods/ITEMS/mcl_signs/textures/_a_grave.png | Bin 0 -> 865 bytes mods/ITEMS/mcl_signs/textures/_a_grave_.png | Bin 0 -> 880 bytes mods/ITEMS/mcl_signs/textures/_a_ring.png | Bin 0 -> 867 bytes mods/ITEMS/mcl_signs/textures/_a_ring_.png | Bin 0 -> 880 bytes mods/ITEMS/mcl_signs/textures/_a_sup.png | Bin 0 -> 867 bytes mods/ITEMS/mcl_signs/textures/_a_tilde.png | Bin 0 -> 868 bytes mods/ITEMS/mcl_signs/textures/_a_tilde_.png | Bin 0 -> 874 bytes mods/ITEMS/mcl_signs/textures/_acute.png | Bin 0 -> 853 bytes mods/ITEMS/mcl_signs/textures/_ae_lig.png | Bin 0 -> 866 bytes mods/ITEMS/mcl_signs/textures/_ae_lig_.png | Bin 0 -> 868 bytes mods/ITEMS/mcl_signs/textures/_c_cedille.png | Bin 0 -> 868 bytes mods/ITEMS/mcl_signs/textures/_c_cedille_.png | Bin 0 -> 873 bytes mods/ITEMS/mcl_signs/textures/_cedille.png | Bin 0 -> 854 bytes mods/ITEMS/mcl_signs/textures/_d_dash.png | Bin 0 -> 876 bytes mods/ITEMS/mcl_signs/textures/_d_dash_.png | Bin 0 -> 872 bytes mods/ITEMS/mcl_signs/textures/_degree.png | Bin 0 -> 859 bytes mods/ITEMS/mcl_signs/textures/_diaresis.png | Bin 852 -> 852 bytes mods/ITEMS/mcl_signs/textures/_e_acute.png | Bin 0 -> 870 bytes mods/ITEMS/mcl_signs/textures/_e_acute_.png | Bin 0 -> 871 bytes .../mcl_signs/textures/_e_circumflex.png | Bin 0 -> 874 bytes .../mcl_signs/textures/_e_circumflex_.png | Bin 0 -> 872 bytes mods/ITEMS/mcl_signs/textures/_e_grave.png | Bin 0 -> 869 bytes mods/ITEMS/mcl_signs/textures/_e_grave_.png | Bin 0 -> 874 bytes mods/ITEMS/mcl_signs/textures/_i_acute.png | Bin 0 -> 863 bytes mods/ITEMS/mcl_signs/textures/_i_acute_.png | Bin 0 -> 866 bytes .../mcl_signs/textures/_i_circumflex.png | Bin 0 -> 867 bytes .../mcl_signs/textures/_i_circumflex_.png | Bin 0 -> 867 bytes mods/ITEMS/mcl_signs/textures/_i_grave.png | Bin 0 -> 863 bytes mods/ITEMS/mcl_signs/textures/_i_grave_.png | Bin 0 -> 870 bytes mods/ITEMS/mcl_signs/textures/_macron.png | Bin 0 -> 855 bytes mods/ITEMS/mcl_signs/textures/_n_tilde.png | Bin 0 -> 873 bytes mods/ITEMS/mcl_signs/textures/_n_tilde_.png | Bin 0 -> 879 bytes mods/ITEMS/mcl_signs/textures/_not.png | Bin 0 -> 1301 bytes mods/ITEMS/mcl_signs/textures/_o_acute.png | Bin 0 -> 870 bytes mods/ITEMS/mcl_signs/textures/_o_acute_.png | Bin 0 -> 867 bytes .../mcl_signs/textures/_o_circumflex.png | Bin 0 -> 872 bytes .../mcl_signs/textures/_o_circumflex_.png | Bin 0 -> 875 bytes mods/ITEMS/mcl_signs/textures/_o_dash.png | Bin 0 -> 874 bytes mods/ITEMS/mcl_signs/textures/_o_dash_.png | Bin 0 -> 878 bytes mods/ITEMS/mcl_signs/textures/_o_grave.png | Bin 0 -> 870 bytes mods/ITEMS/mcl_signs/textures/_o_grave_.png | Bin 0 -> 873 bytes mods/ITEMS/mcl_signs/textures/_o_sup.png | Bin 0 -> 865 bytes mods/ITEMS/mcl_signs/textures/_o_tilde.png | Bin 0 -> 867 bytes mods/ITEMS/mcl_signs/textures/_o_tilde_.png | Bin 0 -> 869 bytes mods/ITEMS/mcl_signs/textures/_pilcrow.png | Bin 0 -> 872 bytes mods/ITEMS/mcl_signs/textures/_thorn.png | Bin 0 -> 2480 bytes mods/ITEMS/mcl_signs/textures/_thorn_.png | Bin 0 -> 153 bytes mods/ITEMS/mcl_signs/textures/_u_acute.png | Bin 0 -> 873 bytes mods/ITEMS/mcl_signs/textures/_u_acute_.png | Bin 0 -> 876 bytes .../mcl_signs/textures/_u_circumflex.png | Bin 0 -> 874 bytes .../mcl_signs/textures/_u_circumflex_.png | Bin 0 -> 876 bytes mods/ITEMS/mcl_signs/textures/_u_grave.png | Bin 0 -> 870 bytes mods/ITEMS/mcl_signs/textures/_u_grave_.png | Bin 0 -> 878 bytes mods/ITEMS/mcl_signs/textures/_y_acute.png | Bin 0 -> 875 bytes mods/ITEMS/mcl_signs/textures/_y_acute_.png | Bin 0 -> 871 bytes mods/ITEMS/mcl_signs/textures/_y_diaresis.png | Bin 0 -> 874 bytes 67 files changed, 195 insertions(+) create mode 100644 mods/ITEMS/mcl_signs/textures/_1_2.png create mode 100644 mods/ITEMS/mcl_signs/textures/_1_4.png create mode 100644 mods/ITEMS/mcl_signs/textures/_1_sup.png create mode 100644 mods/ITEMS/mcl_signs/textures/_2_sup.png create mode 100644 mods/ITEMS/mcl_signs/textures/_3_4.png create mode 100644 mods/ITEMS/mcl_signs/textures/_3_sup.png create mode 100644 mods/ITEMS/mcl_signs/textures/_a_acute.png create mode 100644 mods/ITEMS/mcl_signs/textures/_a_acute_.png create mode 100644 mods/ITEMS/mcl_signs/textures/_a_circumflex.png create mode 100644 mods/ITEMS/mcl_signs/textures/_a_circumflex_.png create mode 100644 mods/ITEMS/mcl_signs/textures/_a_grave.png create mode 100644 mods/ITEMS/mcl_signs/textures/_a_grave_.png create mode 100644 mods/ITEMS/mcl_signs/textures/_a_ring.png create mode 100644 mods/ITEMS/mcl_signs/textures/_a_ring_.png create mode 100644 mods/ITEMS/mcl_signs/textures/_a_sup.png create mode 100644 mods/ITEMS/mcl_signs/textures/_a_tilde.png create mode 100644 mods/ITEMS/mcl_signs/textures/_a_tilde_.png create mode 100644 mods/ITEMS/mcl_signs/textures/_acute.png create mode 100644 mods/ITEMS/mcl_signs/textures/_ae_lig.png create mode 100644 mods/ITEMS/mcl_signs/textures/_ae_lig_.png create mode 100644 mods/ITEMS/mcl_signs/textures/_c_cedille.png create mode 100644 mods/ITEMS/mcl_signs/textures/_c_cedille_.png create mode 100644 mods/ITEMS/mcl_signs/textures/_cedille.png create mode 100644 mods/ITEMS/mcl_signs/textures/_d_dash.png create mode 100644 mods/ITEMS/mcl_signs/textures/_d_dash_.png create mode 100644 mods/ITEMS/mcl_signs/textures/_degree.png create mode 100644 mods/ITEMS/mcl_signs/textures/_e_acute.png create mode 100644 mods/ITEMS/mcl_signs/textures/_e_acute_.png create mode 100644 mods/ITEMS/mcl_signs/textures/_e_circumflex.png create mode 100644 mods/ITEMS/mcl_signs/textures/_e_circumflex_.png create mode 100644 mods/ITEMS/mcl_signs/textures/_e_grave.png create mode 100644 mods/ITEMS/mcl_signs/textures/_e_grave_.png create mode 100644 mods/ITEMS/mcl_signs/textures/_i_acute.png create mode 100644 mods/ITEMS/mcl_signs/textures/_i_acute_.png create mode 100644 mods/ITEMS/mcl_signs/textures/_i_circumflex.png create mode 100644 mods/ITEMS/mcl_signs/textures/_i_circumflex_.png create mode 100644 mods/ITEMS/mcl_signs/textures/_i_grave.png create mode 100644 mods/ITEMS/mcl_signs/textures/_i_grave_.png create mode 100644 mods/ITEMS/mcl_signs/textures/_macron.png create mode 100644 mods/ITEMS/mcl_signs/textures/_n_tilde.png create mode 100644 mods/ITEMS/mcl_signs/textures/_n_tilde_.png create mode 100644 mods/ITEMS/mcl_signs/textures/_not.png create mode 100644 mods/ITEMS/mcl_signs/textures/_o_acute.png create mode 100644 mods/ITEMS/mcl_signs/textures/_o_acute_.png create mode 100644 mods/ITEMS/mcl_signs/textures/_o_circumflex.png create mode 100644 mods/ITEMS/mcl_signs/textures/_o_circumflex_.png create mode 100644 mods/ITEMS/mcl_signs/textures/_o_dash.png create mode 100644 mods/ITEMS/mcl_signs/textures/_o_dash_.png create mode 100644 mods/ITEMS/mcl_signs/textures/_o_grave.png create mode 100644 mods/ITEMS/mcl_signs/textures/_o_grave_.png create mode 100644 mods/ITEMS/mcl_signs/textures/_o_sup.png create mode 100644 mods/ITEMS/mcl_signs/textures/_o_tilde.png create mode 100644 mods/ITEMS/mcl_signs/textures/_o_tilde_.png create mode 100644 mods/ITEMS/mcl_signs/textures/_pilcrow.png create mode 100644 mods/ITEMS/mcl_signs/textures/_thorn.png create mode 100644 mods/ITEMS/mcl_signs/textures/_thorn_.png create mode 100644 mods/ITEMS/mcl_signs/textures/_u_acute.png create mode 100644 mods/ITEMS/mcl_signs/textures/_u_acute_.png create mode 100644 mods/ITEMS/mcl_signs/textures/_u_circumflex.png create mode 100644 mods/ITEMS/mcl_signs/textures/_u_circumflex_.png create mode 100644 mods/ITEMS/mcl_signs/textures/_u_grave.png create mode 100644 mods/ITEMS/mcl_signs/textures/_u_grave_.png create mode 100644 mods/ITEMS/mcl_signs/textures/_y_acute.png create mode 100644 mods/ITEMS/mcl_signs/textures/_y_acute_.png create mode 100644 mods/ITEMS/mcl_signs/textures/_y_diaresis.png diff --git a/mods/ITEMS/mcl_signs/characters.txt b/mods/ITEMS/mcl_signs/characters.txt index 3f597b20..3e30994a 100644 --- a/mods/ITEMS/mcl_signs/characters.txt +++ b/mods/ITEMS/mcl_signs/characters.txt @@ -370,3 +370,198 @@ _mu ¡ _ex_inv 5 +¬ +_not +5 +¯ +_macron +5 +° +_degree +5 +¹ +_1_sup +5 +² +_2_sup +5 +³ +_3_sup +5 +´ +_acute +5 +¶ +_pilcrow +5 +¼ +_1_4 +5 +½ +_1_2 +5 +¾ +_3_4 +5 +À +_a_grave_ +5 +Á +_a_acute_ +5 +Â +_a_circumflex_ +5 +Ã +_a_tilde_ +5 +Å +_a_ring +5 +Æ +_ae_lig_ +5 +ª +_a_sup +5 +º +_o_sup +5 +¸ +_cedille +5 +Ç +_c_cedille_ +5 +ç +_c_cedille +5 +È +_e_grave_ +5 +É +_e_acute_ +5 +Ê +_e_circumflex_ +5 +Ì +_i_grave_ +5 +Í +_i_acute_ +5 +Î +_i_circumflex_ +5 +Ð +_d_dash_ +5 +Ñ +_n_tilde_ +5 +Ò +_o_grave_ +5 +Ó +_o_acute_ +5 +Ô +_o_circumflex_ +5 +Õ +_o_tilde_ +5 +Ø +_o_dash_ +5 +Ù +_u_grave_ +5 +Ú +_u_acute_ +5 +Û +_u_circumflex_ +5 +Ý +_y_acute_ +5 +Þ +_thorn_ +5 +à +_a_grave +5 +á +_a_acute +5 +â +_a_circumflex +5 +ã +_a_tilde +5 +å +_a_ring +5 +æ +_ae_lig +5 +è +_e_grave +5 +é +_e_acute +5 +ê +_e_circumflex +5 +ì +_i_grave +5 +í +_i_acute +5 +î +_i_circumflex +5 +ð +_d_dash +5 +ñ +_n_tilde +5 +ò +_o_grave +5 +ó +_o_acute +5 +ô +_o_circumflex +5 +õ +_o_tilde +5 +ø +_o_dash +5 +ù +_u_grave +5 +ú +_u_acute +5 +û +_u_circumflex +5 +ý +_y_acute +5 +þ +_thorn +5 +ÿ +_y_diaresis +5 diff --git a/mods/ITEMS/mcl_signs/textures/_1_2.png b/mods/ITEMS/mcl_signs/textures/_1_2.png new file mode 100644 index 0000000000000000000000000000000000000000..52d025e87431013183593bc80f5f6f41cf85a987 GIT binary patch literal 876 zcmeAS@N?(olHy`uVBq!ia0y~yU|?lnVBq0kV_;xdl~AtBz`%61DkP#LD6w3jpeR2r zGbdG{q_QAYA+;hije()!*4t^(lkO<+xc-lHoz|eza-_&$#;P|8r_Zw*|DEyDCsggH zOmOZ79hN)F1?``&pBJoqpmb4W(yZr`ijPe7(u%qGp&~Zi*KqCc(wFOA-jqwatuLYG zsCzxxZhL)e?0Z?A+}|H___r}{eD9F2{Jz1+J{PzxrrqBIWtg$=Zm;dz5{TD0t zUVB{i^`E8Wkr!PRhZ_AAJ9qq+aW!Dp3<~6ar*q`;qzlth!#7^P)fyAuU7o%7vfj1a z>FJtIXKpL*znpQ~Gd_E}NYxy{yY6*WibBCPd*rrC-#u=z{_52!3q$y-1M|HjbuFCE zsjQB6GyEfx8@+Ua#k3m^Ynq=mUSbkWT4AdZxZJDxT&Q{0jHE}Cc}e0!o)6L8E z=RWGKxi#rR*9FnN+BR9XKPD*4Ry{e)XMZYC`qJ{H%XH1N?|H4BySpUk z|GeF;@AiJFy3`qBb$MmF-PUJf3fmWO|{+V2^^ z?(lxLAADbAUszxG6K-hrZ*}Ya%i860ZQ5tNVqjq4EbxddW?;}$24TjErS@eE3=Hfg zp1!W^kC{bz)h$0(Z$Hn#z@X*n;uyklJvkvE;m7#~wiyx|7;>8aOJ3OW|M;pV6ULI0 j|96B;PB2q86J-c*;r;QN)8~(-{W82fbCu60 z%VoC`A~|-rKj3?O{k&w|1Eq^1lV&}iRD5KrmsZTh4;8WDzJ_zZzrGZEd9&@2ZSe*^ zO;PKP+ia_EjeRexll%K)4*xdhjqe@umESjPa!WJWHvhfDq3LtK6>IE{_vJr*bN|gB zHEWN5ef784sNx|iyCJgIJ14{12&&=gIn&4P~Z?DM;3ZdS2#Xb9OEJR?DQ665j8-d;Pm<@(z3 zX)?MD3nv|IV3X$95ES&JU)7y2H1_$#RcWTBx>1{-Ofh|)Q#m*A>XAt+Q;mzY!(wfA zR+SZhf3&qgP$n^|Xk);hDM8w7YdK;s?mo2mS~I`prG@TxZ$2!R*{WC@m36CV^Ru;E zZte6w{_XwF=ok0A*Eh2TWiDB$%r9+sYK8Dlv(#lPjs0iaonB*}wPpKTVbd!2cg0y- zR_Z3b{Ic2FbjI0xP8Y2FN(`9|{a7At<4{;wY1r+j`B7>6jH8Ech@4vBw(CJj)DZ^* z-lVxD$>r+bHMcK#xqipT`6pUi-_=jx=Dw@;ed2BItiAK%MJyTD#_llbH7eY2FtH+a z{p;CZo?89MZg}r-zi}V)+IrE=kM~FY;4Nh>pZrBrKa7EafwRCPvY3HEPZ@+6E0)@q zF)%Q&mw5WRvOi`P<<*d}eO~X*z`&sA>Eal|alN;HBQJvi&!IVg{%_vxE_aH9jg!GL t$|?2K%GpP@Ph9BAZ4i3$Z_O8mBiX#awyZd^kb!}L!PC{xWt~$(6953JmP`Nu literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_signs/textures/_1_sup.png b/mods/ITEMS/mcl_signs/textures/_1_sup.png new file mode 100644 index 0000000000000000000000000000000000000000..6be5fdcb1c82353b035fc97ce7940222a21d8525 GIT binary patch literal 868 zcmeAS@N?(olHy`uVBq!ia0y~yU|?lnVBq0kV_;xdl~AtBz`%5^DkP#LD6w3jpeR2r zGbdG{q_QAYA+;hije()!*4t^(lkO<+xc-lHoz|eza-_&$#;P|8r_Zw*|DEyDCsggH zOmOZ79hN)F1?``&pBJoqpmb4W(yZr`ijPe7(u%qGp&~Zi*KqCc(wFOA-jqwatuLYG zsCzxxZhL)e?0Z?A+}|H___r}{eD9F2{Jz1+J{PzxrrqBIWtg$=Zm;dz5{TD0t zUVB{i^`E8Wkr!PRhZ_AAJ9qq+aW!Dp3<~6ar*q`;qzith7fp)G7B8yRy|?zO-|mR* zvGbO480NSC@mrj$Uc2^g(2GL168WDmTRnU}eyqBZS0ev-PgrxeSom#$%Ums9tMI!k61zJ6&90o`-Q_>KyYQi! zIFpD}&VkF#7B@@+glGIT6OVd4%`{H=_=&j>PPQbp$jN(Er2g^R$tsn+OfT?@xB3#+ zXGe{f8}@qU-FwK&VzO=7t}n5wHcxzO7_4W$oOE;J0jYlNBMVE;>qgFDt&Pc}TZIqoLE`043W(v}TIP&*YO6okO2jE?E`n8{2(N$1?S-W%RuC5Yvq*SvSwz=?WG1UpMdW zoxK&hF)Z#grp4%p=r6s}<*4lx{$<^V6<;4X_m#Yu$Z!2e!#&qy{{Mwt2gNNx$&iGY&n%jXQjqJTm5;SrqJLbJ90$qk&ng(Ta(F7IW1M1$@*u z^6lEVd-Cro(HFji-}&MH&5Dr+n<+Djf!vYWME+6EbxddW?;}$24TjErS@eE z3=Hfgp1!W^kC{bzwav~JJ_ThBMNb#U5RU7~2@MVZc|008V;Lk9Rvcl7V3oYM#mI=q cf`P$!IScFjBU2wUFfcH9y85}Sb4q9e01Z2a>;M1& literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_signs/textures/_2_sup.png b/mods/ITEMS/mcl_signs/textures/_2_sup.png new file mode 100644 index 0000000000000000000000000000000000000000..3db952179ce6fc293b8b63453c48fc935a80dff5 GIT binary patch literal 865 zcmeAS@N?(olHy`uVBq!ia0y~yU|?lnVBq0kV_;xdl~AtBz`%5^DkP#LD6w3jpeR2r zGbdG{q_QAYA+;hije()!*4t^(lkO<+xc-lHoz|eza-_(hf7Kg>)8~(-{W82fbCu60 z%VoC`A~|-rKj3?O{k&w|1Eq^1lV&}iRD5KrmsZTh4;8WDzJ_zZzrGZEd9&@2ZSe*^ zO;PKP+ia_EjeRexll%K)4*xdhjqe@umESjPa!WJWHvhfDq3LtK6>IE{_vJr*bN|gB zHEWN5ef784sNnyekGrk2Ld|7B{~;{VXYF z$H`WPRyFAlUljPvc(1Ue?K|6guJE*FobvG#b03^+NobLi_o_(!za4>AuEf?_GMMCs;7OJVE&QuP13UEXZl#LRm3RrEv?Qwc{1|Ba>G{M znQPuNOyEe?R&!=zGJHH?fzQPmy&P6nKSIvTQT@oswB*#>LoCu0c`VLl=X^1=s*U_< z^f-f&W2z3D$qk2wsgsoIbu5ckyt3*KFuYxOi{w{1q3ii{=L} z_RSUaUOxZs%7Z!I#G0-ZF6x%-C{z;I?#jSyP&SchS=+`QIE9@xp9p|DCvi*I)lEI>DLo_R!MIDV@!{e22BG zWA87~zy2_uxrY50-xt}8zpH1+)^9kJKhdUqns#+UF9QPuXMsm#F$061G6*wPEVVCV zU|?V`@$_|Nf6Oe(tEs{2v1>B}1B0BWi(?4K_2h(xhW|Vn5A5|g_pB=9Hdw@IWW-~^ az!3A7?a%ZB@~I3A3=E#GelF{r5}E+cE{Ns; literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_signs/textures/_3_4.png b/mods/ITEMS/mcl_signs/textures/_3_4.png new file mode 100644 index 0000000000000000000000000000000000000000..46e17104995b2f3646af911061a74767533bf36e GIT binary patch literal 886 zcmeAS@N?(olHy`uVBq!ia0y~yU|?lnVBq0kV_;xdl~AtBz`%69DkP#LD6w3jpeR2r zGbdG{q_QAYA+;hije()!*4t^(lkO<+xc-lHoz|eza-_(hf7Kg>)8~(-{W82fbCu60 z%VjwmbXe{vzuz8y6UTt%u5!p-FSn2Y;FV?o4?qXqj#)z zb__>A#wJF8{znOy9efj>-Hv%7vwhBE)1sa`ob!A*++KWK*b;th{gmhhmf^32T=$na zMJ2@TDU!Mz@#LCtoP$Gg_NwLk(mDAnh2;#}r(gH1Qk&+ZJ9}pI##fI{ zUfn!#u)YCkkJ<)#`m&LzrD!rY-#2 zuDZ$lV%qC@KghnYzEHm4>-wa!KjGZ_8I9e_d*)p2-^Reez**oCSmdKI;Vst09`ngsQ>@~ literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_signs/textures/_3_sup.png b/mods/ITEMS/mcl_signs/textures/_3_sup.png new file mode 100644 index 0000000000000000000000000000000000000000..add337326dac50fa418d861b6a470db0df06645e GIT binary patch literal 863 zcmeAS@N?(olHy`uVBq!ia0y~yU|?lnVBq0kV_;xdl~AtBz`%61DkP#LD6w3jpeR2r zGbdG{q_QAYA+;hije()!*4t^(lkO<+xc-lHotEIq(fKq%F7&43wE5g=zYH(WT;=o0 za@nnfNRA!u5BUCGKQCDKK$zp_ zH_IxgDamA7FDaMGwSJlXcA8Va@uJ@+{Pj1qRM^Dz-|Bsq{3W|oRZU~+p|~rzgTlD` zCK$(MsfZl*zql>bs4KZs^oUf(JPp$TwYFQ$N~T&SE7tD{Ix3=EZg%C2=q~@+-G$Gz z#F<2-at>T>vd9Ptn0)f7nRwLWXQpwg$4~S=IN6fWA}8-vk^0ALC#zKQGQEorr~7$u zpXpBbOO~2^XU}17j*J}N(wDovDo)IP%=ji{nRnW8rqhLSihfJ0^G-g}`EXgejd$jn zw+s_FlC{;GnV8%UDLQuYC7UU|c<~_Epm^E|b&d&I=3LAmiWYBhV{TEU4B;aDD+{&z=;OlEtJ-a-Ey{0{r4E52O6=h_+J?H4r#jDlL z%g@Idr5_YrW|_);v-sT7gbPggknQXyV|8i6L*@RW#ctKN?E)8N=4%2+e z8NcrEezqTcUu0icU-%PlDD`i3>wPzo^1cI;?r&vaVBjq9h%9Dc&{GCs#)_r(Wef}q z>?NMQuI!JQMR~QDn{EmiFfcI4db&7e>CD?eFTI*(0G-Bfq}u()z4*}Q$iB}y8?qg literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_signs/textures/_a_acute.png b/mods/ITEMS/mcl_signs/textures/_a_acute.png new file mode 100644 index 0000000000000000000000000000000000000000..b72b4853e2f4f3befbebfb15f04cfc5932320767 GIT binary patch literal 862 zcmeAS@N?(olHy`uVBq!ia0y~yU|?lnVBq0kV_;xdl~AtBz`%5|DkP#LD6w3jpeR2r zGbdG{q_QAYA+;hije()!*4t^>o9-!awEf@RrRV6tGCkSkTnT$@U3~A~yyr%jFaNW# z>TFZc;Gfm<`TBXmx&;$5xIE7mpR`=GWD-|+iA~(oEX`%5`@7yvoA*?4+utTdp)EzW z&x&7%pZIEb;L(IP{2f-dn@9g$+q$#*+MID^mTH#gVS>kEe5qsk6-v@WA^fz{wo_=a6qWEm> zg!rT_PnYNy?cDirx#Y#WpD%Myobf2Rvg5AA-QyPPuU?%ZxKifZqJKK6Ul&v;Oxe_y z8gh8)i`%PMuWmfTmLzM!e?@GCfby+oq0&_*FJf{Rw`r=`-MnCAex&wPOb_>VR@Jj! z&Ab&=0_>e^SxkoapE;e*kNhWPX;a>$CfpCZi@)Ta69&Yl^)@ztY~S2xezExx|B z`vJ%0N!_iFmQIO!xaCmE(HC63QT%pKJlf@cZaCaubfxV}=E}^|XJ>7{l=WOs_V)hg zc?+xc_s%O(ntHC})l7fuzdGr%C$=go^U7A<_z>u}H*oRZ-1#dma_>C9^5QbH&ZSG! z%d-S#|21^{Y;o}<&k+m3j@v2?EzeHsSS>v=`A&)$cXF^sv((F$%b7yV2TO!rFOc4C zz0-dut8e|$UV9~RwO#)m^?XWZ--*t9AMm=gHZX;8*6xC1CZ`S@WNW>wT|M{y68-HD z<9TbOf0=#B&G;AE(-*({gLKN=vL(wm9nxT6VBjq9h%9Dc&{GCs#)_r(Wef}q>?NMQ zuI!JQMfq4o1OtQ*GcYhHc)B=-a9mGLP+XEP-?TEnf6?K0zpF2yyyq3Kf10V(oXoUu-}8Lxj}3GGKHhaU@A3Nc z7X^BjZBUol!F{sv+H&!OTq@p<`WcZO%Ta%IO|iL=LFTz}`~(-Fc|9h@H>sjM-NW9gbq z&Z{4SdvdS#ytkjb zH!%8hKS~I8^i_CvJ1XPn+0*f=?a$pVq%;{G>M1v^QTa2u%Gl(XPwb+@>n(mVoiSd% zvBxuS+XW^jDeGms9_`MmI5GP%R{7c6(@kv59F%_gAq zBTT1_g{9AB(UcbkY06GAvNc>`=Y)Q;Fa|w!OKj-%V3K+MQo6Wjnx1xiQjG5F1{K2v z2N{{xNQnMSzBtj@)ipWb>XK#aBE2VxOkOrc=dAUr84)I1Q_}Koc6Gal`{%uzw>RZn zleSOsDX~q@=Xf_>X1dI}ncKw6^5+!ec~#3U``Lev)Vj3%*ecV|)p5nTy|YbZ{!g3L z`b>BGrIpH4tKQrS-u}+^yU~PfXEzzEOB)_4_ZKa8`+dVMaItvN{NTmDxkBCE=igmX zFsn9p{A_jcB+n5Gp^n=s4K2@3zA5OMsJ`>$n-e|G3wg4Z2>UJenfZt}k!{Po!n zPG6Y5P~Z7~^TNj0O!az){oik$deZ!w!2t#a2F?PH$YKTtJ!KGPtXOJa#=yY9UgGKN z%Kn&Hlvh{KPVxJG1_lO0PZ!4!iOW;_9Jv?_cn)3K_`m+mdKI;Vst0Kl(|g#Z8m literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_signs/textures/_a_circumflex.png b/mods/ITEMS/mcl_signs/textures/_a_circumflex.png new file mode 100644 index 0000000000000000000000000000000000000000..f9b80df66dae50b8372c2e7ca46e651482836758 GIT binary patch literal 866 zcmeAS@N?(olHy`uVBq!ia0y~yU|?lnVBq0kV_;xdl~AtBz`%65DkP#LD6w3jpeR2r zGbdG{q_QAYA+;hije()!*4t^(o1UogwB3(%oz|eza-_&$`l>eyr_b}J{W4Pzp6V&b zKZS91E6XpIw+8=y6}Q<3c$l;fcrG6Ppts3p{l|-+lRbV+yIjft^vvp)sn*XQmYtD% zJpcVkfu406)MY9-JY8O&?oMD0TCzxdi_Q`6MbVq0ME_cqDPCXS{9U5E8od zX7oG#>$o^^a@~oi58LjCx%i*Yx9>P25`WtJ&9gUl&v%rE2fHmPvY7pA<5b(GN38*; z=1mLa?N7?tEf#WIOuD1=!k&QW1x`H~{$5vBURtv8w;QjwkIjt>#^y(APsa3cZ|7BA z>ou9TqDp{$Hd_{xq5UnBt2&VlBIUIiI{z`u5;&oS4yXuZ}W;T|7 zJe8@FJTY2#OGCr6&XwC)@)2T0@5c*C;?M6q+fx@_bhQ~8rZ~CNr>?)Ih zRwPeGK?8%fs_Vaqq9*}YOXXK)g#}+HZbMCLW$i6c^c(HS?pm+57 zc~=z7ekV3vD_ztr*-@w@u-%n`^K5ryiC3ri&Z9bF#})>#nOVfH2W#qA5fR?U!|U-mG6{pqqb>I?HWGcYi47I;J!Gcf2WgD_*oQu{In1_t&L zPhVH|$IPO9tQN{0^$H9O3`(9Zjv*Y^lM@se{yi4@ao(Zl+W(5PsfsC_ZBOba#Wct> aFlZ}q|C}}PY&Zi01B0ilpUXO@geCx_c8g>H literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_signs/textures/_a_circumflex_.png b/mods/ITEMS/mcl_signs/textures/_a_circumflex_.png new file mode 100644 index 0000000000000000000000000000000000000000..8b35bdf7c849a714ea650c9164654a9b29626c75 GIT binary patch literal 876 zcmeAS@N?(olHy`uVBq!ia0y~yU|?flVBp~Zk&fYK^cWbJu2h9YlmsP~D-;yvr)B1( zDwI?fq$;FVWTr7NRNQ(y&2!RS1)jF=bCldSsI(j@G;j{hoACHK`{n#se&MMRDHj9y zH|VHbQ2)UF_xN|geG3Cr_yf-d`@MANv`o{J_)$1@^>XEP-?TEnf6?K0zpF2yyyq3Kf10V(oXoUu-}8Lxj}3GGKHhaU@A3Nc z7X^BjZBUol!F{sv+H&!OTq@p<`WcZO%TX|cT8U1k4)E+?|;4=deU(`xw7M~#M$F7uD|p0=?LMf4$hB`RMwcsv2;x) z=hY9vJ-JtVUfoDy-N-geJ&Sirr{LShH#s300r9mUnPvk55u z2-9g}Vd-;OH06asnzECOYzrl%dB6r=mPLB(*v zK}M!E5~4qoFHUrJbxjVqx@6h9NbgA^lb21=IcvRYMuf@Ml(f8?UES{C{(0}_?M*q? zr0r9DN^H~fIo^$znJ%+#<~H%N{5i#VUe&V8e)gXuwJt3`w#qbgbzHG-?`#v9|I=o* zKGWTPX{GYisyDZSx4*OfZZsj=*-ggk(uRl1{Y8u2e&4VQTr6HRKX|cku28r4`FB?o z%&LtYKU-Zq$#cX)sN=RuL(8+1Zwk65s_#7c=0uP4LY}N8!hVZAd03LwuQ{5Rl^4w~ z;+CrKmj2%rGvmcS)}00ybBo^ZtaVsB^{eYd){J?FBriL&>6vMi=)Xy=oBVGFe|`3Y z(-)>M)OY^hys+^#Q@!3{|4S@WkCiVBn8m=rz**oCSEak7aXC4`q2WJI#DV&nNg54;-Ck~sdVcqxOH;fST3{y3 hH??K1uMGpksii!Bg6%$CU|?Wi@O1TaS?83{1OVxwh(rJY literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_signs/textures/_a_grave.png b/mods/ITEMS/mcl_signs/textures/_a_grave.png new file mode 100644 index 0000000000000000000000000000000000000000..3f0de45a5b02b364dcb3e3c447ca877911893914 GIT binary patch literal 865 zcmeAS@N?(olHy`uVBq!ia0y~yU|?lnVBq0kV_;xdl~AtBz`%65DkP#LD6w3jpeR2r zGbdG{q_QAYA+;hije()!*4t^(o1UogwB3(%oz|eza-_&$`l>eyr_b}J{W4Pzp6V&b zKZS91E6XpIw+8=y6}Q<3c$l;fcrG6Ppts3p{l|-+lRbV+yIjft^vvp)sn*XQmYtD% zJpcVkfu406)MY9-JY8O&?oMD0TCzxdi_Q`6MbVq0gnn9;DPCXS{9U5E8od zX7oG#>$o^^a@~oi58LjCx%i*Yw@={K+&69djk7mv&lSF3x2(tGX@S|-WbJB}qudMk zES?z1+niY_=>WL;Gt^xASlQld`laZ&DNP5ls6Nayb0Z{gwRA#p|x9cGVr{%xoGt-pO_>6bIQH|MZcNd;R>IQh%4 zLEzx_BtsPi0b`-rMy|43B5L-t$0J~Iy0lpjJGFUJvw=Hx_P;N z9JlyE(PgUQ+(*4Nw;sxDec5$WRBCHn&B>{Hdq1U4kAJ#~_vPiF%hP6?<}bZ^F4n5A z{`_61?{QVKCKJ4rd1WhadMV{CG5M^ zcg7cS&-y27{!hIqap7PFI^_TL$ zKin_%!|Y4$i`y4|t(qY_zwBXtd1~3RQ#bFWF)%Q27I;J!Gcf2WgD_*oQu{In1_t&L zPhVH|$IPO9th}YxyO|jn7!*BS978y+Cnp?W{x?~taUs`!L7g3Ee)pd?N-^#%X3b+@ a$h^$;>-e)J^BEWz7(8A5T-G@yGywpFkc%4t literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_signs/textures/_a_grave_.png b/mods/ITEMS/mcl_signs/textures/_a_grave_.png new file mode 100644 index 0000000000000000000000000000000000000000..8176f51c52e6f3f68a828cf56d6a6e144617d953 GIT binary patch literal 880 zcmeAS@N?(olHy`uVBq!ia0y~yU|?flVBp~Zk&fYK^cWbJu2h9YlmsP~D-;yvr)B1( zDwI?fq$;FVWTr7NRNQ(y&2y5BB9H6$IfvXmJUKcaPv8;U*VzA_-}CyFw|yTrd|0HY zwQ!2lf%>LZ7wT)|A4+q%eiFE9^K=T|lo`p-n)>9!cScz~s)|#6J8j~1%|b$DYfaF=PlQt`8!_v`jCbHqNCYFD= z{{EtZTksKKzB{c?4qSe&(F=ANu9*Zy)JCnY~~`;g*faHyl)v?k@xOwe^Z6f`n53eEV}GralKb?mg28&`%Sksk9xR#@-VywAUi2ml?mu5T5}nnutr=7f z-RU|yq2a(pk10a3$8uaQTs*iu;i=9O;!^mNbaRM`nC zY$g^C4Wf&c>UFG&R;26Usi6+^1Zt1dW`pDHQwX< zm!>VOJiWH$mB&)K-QTXPtvd8$AxtXqI}}aydhY`QVMt(hI$J z=iXUeyr_b}J{W4Pzp6V&b zKZS91E6XpIw+8=y6}Q<3c$l;fcrG6Ppts3p{l|-+lRbV+yIjft^vvp)sn*XQmYtD% zJpcVkfu406)MY9-JY8O&?oMD0TCzxdi_Q`6MbVQkta@>MBlpfa**(W!D3@)N+qtJ* z=}3*pC-v<}`|YT*>_=2wl6m@f%j0`@&oWY)dids*{)@rwi^y>nxD1aViHYqsSaA?H&w0ou6b5O(xZcI^L8q}^L~~Tvm;j{ zGjvwYfy>PnH%tPAJAQ5yyH$7k+w~IW@)7IMx~H?u^ig^I9qDr|lDdX5EDqUmtm|D|tCpfA=4)@LZ4i(`IeEv!+seZP~j^ zg@3BwiS7D+>Gguf5UI=;Cl0su8@+N_=Q}g=)tSr7&KtdMmYSRV+pX8`#NSy`vRT~` zx2nD^VcU3zWd)%Pp72)&iOn07F>J%&wV0q#@s`qmog?07(8A5T-G@yGywo~q>*6& literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_signs/textures/_a_ring_.png b/mods/ITEMS/mcl_signs/textures/_a_ring_.png new file mode 100644 index 0000000000000000000000000000000000000000..d3e9b7e9646ccca175498207ca8314a91204ad8d GIT binary patch literal 880 zcmeAS@N?(olHy`uVBq!ia0y~yU|?flVBp~Zk&fYK^cWbJu2zLalmsP~D-;yvr)B1( zDwI?fq$;FVWTr7NRNQ(y&2y5BB9H6$IfvXmJUKcaPv8;U*VzA_-}CyFw|yTrd|0HY zwQ!2lf%>LZ7wT)|A4+q%eiFE9^K=T|lo`p-n)>9!cScz~s)|#6J8j~1%|b$DYfaF=PlQt`8!_v`jCbHqNCYFD= z{{EtZTksKKzB{c?4qSe&(mS{%(!V8}di!Z) zSHa>5aVEFQE{X5Hv+Ut=(TlaumW!*o+sK`6E=x9%UmU+%+t6{P$hT$pwr#2^uu)vP zCXw^%hrlnnS9@OFNMhZ{HcLH=cS`5NZw_T3wjrC80&|eb$c?Kh(d9W%SJ4<=_W1Hv4Bo;qCeQLU7IJbjF zUk4*EpFqOV6({7o`((7Vq?%W$nUNb4iL-*YO|X3)!=8&ej8+ZJ9 zBbC@1xuQYB4Y{FnGH9xvXlpIB|mtkkn~pAr)Eu&eL*?mN0ix4bXEc=^(9nD3)giOH?B_>FZyd$(SOhVO_FUEA7n@7*=aNNMWf$SeIz-^hvRw*-CL z(37=8r1tjK1y<8;IIL-Y)_RLcG|8npXp!GkwcfjCSu>Iz9c-JnQ}Lbmv!s|ECwm#D zs!4zNqQGaydxa&b?o8{p`g5^7l(xUSz{E65ec7(ZyR$1!&i=tvW_VdP?Ko5Ro;=~{myEZk6pOvc^m*u@_WC%3 z6U+UslM@;o&RD2u1e>HOJITn_Xr-N-^n-~p=&4^~Q?Cb`%=4$x$vxZjwC^X$=rSyv zbhLp@nqxyy(35^ucfQcr=Mz_@nU?BCZGJMv^m$I@+`y|xCap|0F4hiy<(vC0t8M^M)1Up^R+?|o1!=m2aS(^O& z`yJhq_e-xkGOskbbYWsUuYBs2&Y0Oom#@rR?mIvA8oR00?QgwOwG)1unp#~E+qmWH z8&BS(&GKp)vg*5LG)ky56-Kj6xUgr2>+&fT6Qj>0CFXFY1}MiCSm`Dy%wXH-SGA#f z(r?x63tq+-KCV|17u)r}IVR!--_H3vYaQ2K|LZ!DH{o1qBx$a~CnSp_Uv%n*=n1Ml08H5=tmfDvwFfg!} zc>21sKV}x?H5F1dwu@n4U{LaOaSY+Oo}AFo@IRnO^iO(1LPCP$vxE~#lU>Y&m)~UO aVA%1P;}6R}eyr_b}J{W4Pzp6V&b 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 literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_signs/textures/_ae_lig_.png b/mods/ITEMS/mcl_signs/textures/_ae_lig_.png new file mode 100644 index 0000000000000000000000000000000000000000..0eb5d2f5c9130d98fb878cbcdd6910fadd2570aa GIT binary patch literal 868 zcmeAS@N?(olHy`uVBq!ia0y~yU|?flVBp~Zk&fYK^cWbJu2h9YlmsP~D-;yvr)B1( zDwI?fq$;FVWTr7NRNQ(y&2!RS1)jF=bCldSsI(j@G;j{hoACHK`{n#se&MMRDHj9y zH|VHbQ2)UF_xN|geG3Cr_yf-d`@MANv`o{J_)$1@^>XEP-?TEnf6?K0zpF2yyyq3Kf10V(oXoUu-}8Lxj}3GGKHhaU@A3Nc z7X^BjZBUol!F{sv+H&!OTq@p<`WcZO%TozSybx*DLK%9mAq@=kqaw-!+R3&&51-YVd02 zt%wp}pUsuUWO)CY)9L)Ue_EC{=1pqCJ%VX_RzFmJIRDD*g@$RbgkgkALk~OOli^QLH;zp#%h@3FJoQn?uIJNq&N12ACf%5D@|IbHz`^ZF zhAIjLDnd(L+6|=zAH8@GyrF2?33ZMMTIO8LIW9sEEd1}!NZwKs`BUg|79+<|LBj|4Rm(2>*?*4Iy0rY*D$~%_amBj5vrT0FPn*^H zOn3XGmC94A-rNe_{?7Kh(S&SgHyNu-8y+h67cF-CeZwwrv3Sw^;KjbVLfziy-(68K zt2TE0Y<2M@&k+luj@v2?EzeHADd?K0zVqap6Ftrgd9s!W`z`k5VM$iM=4f74UNpam zTdKZW`hQo6@#aqyPWU7lYxPOv%n*=n1Ml08H5=tmfDvwFfg!}c>21s zKV}x?)ia1p-J-<6z@Y5u;us=vIXPj0R6@(8{~JC39Y2Q(=bX0fPsKF$+if?tFEl@Ydx6jSo`csu=X(5@bh(Z%_5A9WiPpc(rPg1s zidlcpUftPX*P(d@4}v|EqUOi3XircQ-Mb)Fao(hsjqA)jt7Laic>VgpUAOm1;;*Nj zF4k~56Ro(v`{K08`}*#7U3lE};@!`etsXufH`*M_E0KS^rz||!ZAsCM*;ThsNjVBW z^x3p5HRQ0r;kHojRmt7FN31gBR_F#Ox@}=seHD^e8O$*cWI(|>tDIuO$ zr0B5pAe)VCN3$=pY2%Fi?1fLa>(uwk%(Hf!%z2E%*zU>)uOCyZj7^UD#4dUfK4*eh zg!uV6$Bfi=-gM&T$apj3RoDAf4;AwtG2b}p6Fx&$ddw*lq3u0EYCk<7`1CnO=sa& zh88a|W+@qk174mJ?Wf6DhLqlOUp4FMm8}_PCk0=dv-xSId#JGYvT0|}tc@uB_~g~i zvv<3%A95{d%{+P3>0^-B+JdOWT}frFZfn`)iKRQ;gB(ApWzoVW{$?QAsdHO59?%JoZiQ#OpMY2@tgQVs|FQ@K3 zmw##c?+@$Q_VLzA|1vZAAKKIRKkK3S#E9}~H^K{)85kHi3p^r=85s1GL71^(seKs( z0|R@Br>`sfV`foaGu<5(4vQEV7?eC+978y+CnqeB{lR}!gGu7e{};DrY>;Ta?ZXr5 fv*XNB1_q80&flsRHm+k}U|{fc^>bP0l+XkKb$5>_ literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_signs/textures/_c_cedille_.png b/mods/ITEMS/mcl_signs/textures/_c_cedille_.png new file mode 100644 index 0000000000000000000000000000000000000000..7eb654bc43566cbb63aa43d4f85a6934104635db GIT binary patch literal 873 zcmeAS@N?(olHy`uVBq!ia0y~yU|?lnVBq0kV_;xdl~AtBz`%5^DkP#LD6w3jpeR2r zGbdG{q_QAYA+;hije()!*4t^(lkO<+xc-lHoz|eza-_(hf7Kg>)8~(-{W82fbCu60 z%VoC`A~|-rKj3?O{k&w|1Eq^1lV&}iRD5KrmsZTh4;8WDzJ_zZzrGZEd9&@2ZSe*^ zO;PKP+ia_EjeRexll%K)4*xdhjqe@umESjPa!WJWHvhfDq3LtK6>IE{_vJr*bN|gB zHEWN5ef784sNAl!YOD)q(lmmeB<* zb3D)GNgn+WyydM9>(Pxz*pg&T_@{`i5O99$*=ZFz%jDdyz{4WK{AO3q@b1!|-Cg)l zO`J(&R?dOT%@#LI0)%J$G!wTvuKT>AS4O$KNnN-}u&PGm;na`XPsK9MP2J^kQGf0P zu^Hm)=NvN;+gaK!E^y(_tXC`FM;>y%cZ7XI_sn@l)?yKl3tKIwyxXa&p58eBn21@* zrhUu~N2Yo{a!oc**(7lxftfMPtLx9kCnpxJdTkSQbFpTg;!ju`k?4;_2opnY~7T_W=s6NeWUZP?U@>8 zUHe!XT} zU3KQxl`Uu6d^4IO>UgJKn!>S8hdW}7Dkl1A7d2Jmo``LZkeKZxdBsC~j$gL~$1=w? zlk?uZdt&!g%;c}A`9I;E8!r6iFG^f^`-xpqwd30BpSzXR7i{I8zAR9U&&+~n{hQL- z$@^m3>v=!OzOcSfzToTnq_RKZ-1`|PhLumddbMZ;0|NtRfk$L91B0G22s2hJwJ&2} zU|=ut^mS!_%q+@l&haXJ=@JG81~pF?#}JO|$q5U%e()dFV3K(A|HZ8t8)hDDIhu1v jEOABBp;SpW28P1toPYcBE*)fGU|{fc^>bP0l+XkK714|Z literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_signs/textures/_cedille.png b/mods/ITEMS/mcl_signs/textures/_cedille.png new file mode 100644 index 0000000000000000000000000000000000000000..0de32ed0c977571b422aa2adfb36795954a78391 GIT binary patch literal 854 zcmeAS@N?(olHy`uVBq!ia0y~yU|?lnVBq0kV_;xdl~AtBz`%61DkP#LD6w3jpeR2r zGbdG{q_QAYA+;hije()!*4t^hMRyc<+Wr@J$uW9zbUscnFy8Cfe_!0^oAS-HWtsJC zX^f|xm~5HyE$aWuJY?tUTsGl~&Gb3SURo;)jvja%x^7-l)Z5UK?_YHIH@+3;nYdv3 zYs2}``<>Q(=bX0fPsKF$+if?tFEl@Ydx6jSo`csu=X(5@bh(Z%_5A9WiPpc(rPg1s zidlcpUftPX*P(d@4}v|EqUOi3XircQ-Mb)Fao(hsjqAcx_V>k}_*(iQZ*lp??$Xmw zEkzWct(|cHXvS&J_~Uu5FA7~tzW@2+q_XTsgj}-uuKvQf-K#Z~gDl_p?#)f@UC>dW z7J1od)x+fyw^y-V-FTEON!En_ir5MPDoNXlnbsQ&TVD=C${OfT?@wx0+0 zn(lPJWXZ{Qau%|(n3VaH9xcE6VS@Qb#y2U;w9oYMUaN>v<6Bytck+?Wh08MzwfS7z z&e+1SPqbT+v2jMBXTY+IGj1&wRzE`4%u)Tw$h73t+(Qh~Pi!Ap_}`zAyrm@ar_kdp zMvkdEY$g^C4O1s6)$3Rmt$4MkKg4wP%Iu4?RF|)@Oh5g(Z&YJ9|2%JDwf^3DB}!AzmAsniZ~a#%UG~IQMP**u${Qa7-S!49uFaXh;-YoY{NTmD zxkBFF=igmXFsn9p{A_jcB+n5G!H(N14K2@3>R2s3GWkx58294WY6;o@R}baS+Fd?Fdh=m|2w9Oy%H`AE5jo;_2cT!f`!0K|<|;eb2!by#`?hhS1+kjMb;^7BMg| OFnGH9xvXeyr_b}J{W4Pzp6V&b zKZS91E6XpIw+8=y6}Q<3c$l;fcrG6Ppts3p{l|-+lRbV+yIjft^vvp)sn*XQmYtD% zJpcVkfu406)MY9-JY8O&?oMD0TCzxdi_Q`6MbVEkTt8jk$i1^pcF*w_%4HkncJ66c zI#MI@$-Sp<&KGAre)B)ul&Y%gemklx`w^{f9)GV5&f2+ zZ(Dk@DnycRZ(U%u?S{je=4Y+9m_(CYs)H8!O;zi?Yn~O6^ypyQyq${gyq_h-?8w!~ z44sv8;4*W>29p5cj-MOFZq=RscKyV|ox&zF6M76DFPGXU^v|zWVpj1|y}&QlejeOw zy2JgFCA;rrEo5ae@%Je`UVi<Kizs0%J=FcQ@W5f0x-4Vs$ zq}t8M%O{Yqbjb;M?>?DTyWS~>p3Qm{wI%JOX7;(8pLQ)?)u|eMI_+85nq3t|U*9}? zcQpH<(vCx0o+K@-&|Dg3vDP5gaJSRqYu)-gFD(t<_vX{;n5~MnQCYW&Ha}at<G)rB!(%65t-RU*_StWgMrA>b+e9z7*S)rSh z`TFK$sUvCjJ{NZRl^8M``msFP#-XsV(y-f4^P|%C8AlIUh@4vBw(CJj)DZ^*-lVx- z627Z^_s(;?y#LX$|1NquCI8uXZnz*@WMBNdDQf+1c~`RqrCi}Yi+y5p0wm&YzW(L^ z>#g0NaOV4M`*>@mqvAz3KfbK@hxgFpvUOiKmJ~8DFmM)lL>4nJ=qZCRW5rVYG6n_) z_7YEDSN6xuqI?`GP3o~q3=9m~o-U3d9M_W*4lw?6He?p+Rq70VV6V4WBBI0awLLR4 lGqbRnvBbwn2Q>x;(fwS1H+3+ZGcYhPc)I$ztaD0e0sws5jHUnp literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_signs/textures/_d_dash_.png b/mods/ITEMS/mcl_signs/textures/_d_dash_.png new file mode 100644 index 0000000000000000000000000000000000000000..e9c9e69c7071cc30dde88764e54c8b91032ae2a1 GIT binary patch literal 872 zcmeAS@N?(olHy`uVBq!ia0y~yU|?lnVBq0kV_;xdl~AtBz`%5+DkP#LD6w3jpeR2r zGbdG{q_QAYA+;hije()!*4t^(o1UogwB3(%oz|eza-_&$`l>eyr_b}J{W4Pzp6V&b zKZS91E6XpIw+8=y6}Q<3c$l;fcrG6Ppts3p{l|-+lRbV+yIjft^vvp)sn*XQmYtD% zJpcVkfu406)MY9-JY8O&?oMD0TCzxdi_Q`6MbVEkCQn(PEMD~2s-pj*`NQtv)o%*wT^UrTjDZT%U5c5{*?_!jx_Vy7CYaWe&* zGjj;mXp1>BF&Qdv)C@LBQ+AS(t1p3jiqU0Q zIO%8u8#~8_pr9xHs_uNDvEL`IN;56hjoSQVis|#5%DaJAk4##bYFw-x7HhM!s;v0? zqpbykF^N${8w2)C3DTYuHe=n4*oA?wk4}$yc}Y9I>}Tk@TNCVbO>=ifeh!OzduQq6 zAK&ljmb_nj-H~~v$)yVu+j-?vuXM)DHoAOe=5pWpsn^&|t&V@|m8zZa+tk$RirB_2 zU*CB0CT*5i%ZOFqHKS2NovARIWx|C$GhCNXshAjjCMi*dD>Xnlw!lg^Nnr-tM!%{J z)sud!ZeQ>+zVLCqlDOEe|IINGFZg!O-&yOp_WIv`CFu)Rt=h{1)%46Xc-Fru{j2`B zO#a{M#(d}dZTooFuJ5|}u~GCN+Y8IGP3+H%I2afhI14-?iy0X7ltGxWVyS%@0|Ntl ziKnkC`(tKNJ`SU@&o7D@7#P$&T^vI=t|uof;4m;UF!*y^>DYk=wU6^TXP2p|guXbo hAnSOx;7kUF2WcFPJaaeQVPIfj@O1TaS?83{1OWYLh^YVo literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_signs/textures/_degree.png b/mods/ITEMS/mcl_signs/textures/_degree.png new file mode 100644 index 0000000000000000000000000000000000000000..64a7ee2b13725713bc529b63a0b164351a484132 GIT binary patch literal 859 zcmeAS@N?(olHy`uVBq!ia0y~yU|?lnVBq0kV_;xdl~AtBz`%5^DkP#LD6w3jpeR2r zGbdG{q_QAYA+;hije()!*4t^(lkO<+xc-lHoz|eza-_(hf7Kg>)8~(-{W82fbCu60 z%YfVsIxKgTAM-uFeqOR}!GsJh&$GoREf+1B#1&p*6ZbSrbJ^!A(Yv~~x1Do-GagpS zc)IIs^6&5)U+oTD+9rSgTY|N~Z@w>PpZPSh)7;X3|KwAtxtV#tebe!)UpCDBJG=M% z@v4~qd-v6wC1M5rEj|cL>R7!#l0|!hlIYq8r=0faaMlVQH|^YWP4CICs6El|=ay~E z+il}5m~@Zt=Ulhje!rr22QNG>da?G|a`qceUHwl3ci*f%SNL|_GM=SHH)dDeK6SHM z`H9bTDaorJg1@|7!+Le&QMM#m6aFh=D+HY1dUjfc&N4Z-E%30AFu&QBGrYU>XLlDq zR1;?knU!dCHiR~BX~GDj`TP;8M!8#DZO~{Ab4ZZv?J^s6ST^?gmYYs9$2j3X?X0#m(-`H zdls`Qglv+y@PL(R%@mQJ$tNc|hhDE-vMSOyw)>inW$IbW=(zL{(~T)vH_zPZ3KjQX zH}CG9y%oAKEbcR=#psCWFTK*`sqGZrv+l!+uMeF2N?uIlxBjEyp6fAx+N^DN)>LY* zEqizAfmx#+TJ~RjTmFTf>HDAc(0ta>^68qki7^Ze44efXk;M!QddeWoSh3W; zjDdlHy~NYkmHjcZD6g8f^v&jTz}CR} V_f>{KGXnzygQu&X%Q~loCIE_qhnoNZ literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_signs/textures/_diaresis.png b/mods/ITEMS/mcl_signs/textures/_diaresis.png index d092503a610a8fd305635eb1d86881c25bbfa55f..f8b75d38d077fa8c432a3619f37d9c1f58053c4a 100644 GIT binary patch delta 803 zcmcb@c7;u`Gr-TCmrII^fq{Y7)59f*fq{XQfq{XCgN=cKVO2u8?nFi9`shh_6nI?! zN4idHP-!_*WYE9rjl${kN7H^8UY@zi=ac0!sSP^ZJKP`eJ-&WkvhIP>MUhFfo=+-1 zGSy2f=HkbS*l=&dxnE0P=DoZrmvoz7Ld{Y8dam5<{fE|l7uU)C{V|7s8}r8Z4*AOO z8#cM6m28{;-r>;nx!-Cve(#+nH*Ir${pOE9Bl=%o{QWycV6pZiPIfsbp}^l#t_IAS zK^M8Q#2%%3zUY>CrSd6i_k`EkAM^H>-#WVM?I#`Aj!Nq%}Z#*`=nb8dDF)UAY}}PEJNKeb?E^r@N&yk1bbV2eYm zL{`1O*Oir*mK1L5m0C8VV#C7JybHBAV|uvFcM2@HkitAq?#RJqjk6A%*}n6FWuE2n z>?aaCg>7aE^n5thE)*xZKPa#9S^Fnf; z)a)8!&wQD3bK?Q2e(fU*OU~f{~q58y}qbVK^3TZMzQ#7SE3p%>9 z&+nSKS;fwwA!KLpj0ELLjK?c`d&_(L;=}fxv4~=DQca%x#}r(gH1Qk&+ZJ9}pI##fI{Ufn!eV_`s(?9wuA;oo-c^Ni0syr1m{-xt{z))#(-8(RNc z-FkmwRQa@vzxEVPW@c72;8oQ&__73)zy&>B978y+Cnp?W{F#pytO)2a*gHS!Ooxm-U9T(x;Rg>TA? zWx-UK+ztw6U8-H~7*SIa#r?#EmEb`Dzac{6}J(gp+BFNNu#~VykTtj%ym9bw)9#Catio zpD?$Vi}%&)wILgioS4h2Tip8Y^0TBlJM}aQ!=!Q!TyC3wjrC80&|eb$c?Kh(d9W%SJ4<_>(& zqsywBlbfGftQS~*$##26q1ca?f`{9Du9Y!(wCt=G?N(%LRGz4zYSnYIW5MEP|AVI@ zmF6orth%GYvq8|a;jzv0V-ky>o<22QGMw9Cg^J;VgN#gTBt(BEU!3U7x?G(t)HmzZ ztgR}ZhM8U`FYQ^})#)1So%U?n+8q@oU!OdCchmcs&W=MS%X1W~&+QcPi4xeAP}1nG zsXo8xSn&ChTlFu~?Yv!oU5VJbEbD6ax}}Aa+aBK!+I(Tp(=e;jB|-hM)vvDYeICbF zlzXDX*RDf$-W6wUS?QZp`19smsWWN$iWzb0Rx=wV+?fhzvrM>P zGgH>j@RN%9Oxc-*8dDs5OAck4bT%fuIb!wV*gL;>!Fi64^9vul#82cFzPn#RTy2-{ zJKOF2E4FT`3ru00wY(s!>coMgZ0+w__nx`G#6IuveYPK5UqoMMU-&PO@nF}1{YO6t zE0j)KpI)X@KAD+W(SXNXaiw_pe+C8yK~ERQ5Q)pl2?`AV7GG4BU|`_2Vf@c5TCUH) Pz`)??>gTe~DWM4f>>GH= diff --git a/mods/ITEMS/mcl_signs/textures/_e_acute.png b/mods/ITEMS/mcl_signs/textures/_e_acute.png new file mode 100644 index 0000000000000000000000000000000000000000..911207f866bf9e089cdd352f8ac3f0f545fe1d0c GIT binary patch literal 870 zcmeAS@N?(olHy`uVBq!ia0y~yU|?lnVBq0kV_;xdl~AtBz`%5+DkP#LD6w3jpeR2r zGbdG{q_QAYA+;hije()!*4t^(lkO<+xc-lHoz|eza-_&$#;P|8r_Zw*|DEyDCsggH zOmOZ79hN)F1?``&pBJoqpmb4W(yZr`ijPe7(u%qGp&~Zi*KqCc(wFOA-jqwatuLYG zsCzxxZhL)e?0Z?A+}|H___r}{eD9F2{Jz1+J{PzxrrqBIWtg$=Zm;dz5{TD0t zUVB{i^`E8Wkr!PRhZ_AAJ9qq+aW!Dp3<~6ar*q`;qSHZor?cNWty_O|_ttxv;;*-z z-YlZ{?Cpg6nOoj2S-&-!%l2HyJ7xR50-c(6as9V?-zCqv{wnKKfL8n772B7t5tC6& zpLA7su|!?hwzWY4GTu1~*Bn1PWHxdcUXh!!B6z9e^HtKOK87Dpw$0k<_%yTFQ16b| z6ccV#}r$6_sQk&+ZJ9}pI##fI{Ufn!< zxA^+j?gt!~Cv~?zS~?}lFvIml*F90Wt#UOdCi2;SN^F;Zx`OxR<)F*cW}D_Oy?QRz zYFqvJyH4NZs%&4nXw7|j#dv<%ugG&&6SAG%q^v$|c(}NyYO!1OZM(q5jkA57#KJUJR*x381$4un6YB1eHjA- z1AB?5uPggwW>G#)(Nm9dA{iJMR6SiBLpZJ{CnzxeQP*e)zFi-4>z}cKfq}syP9vc$ g59}{)6J}$Gy2|-ec7{hY0|Nttr>mdKI;Vst0HB|VfdBvi literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_signs/textures/_e_acute_.png b/mods/ITEMS/mcl_signs/textures/_e_acute_.png new file mode 100644 index 0000000000000000000000000000000000000000..b6019374024b953e0b19fe8913bd52b851bb207f GIT binary patch literal 871 zcmeAS@N?(olHy`uVBq!ia0y~yU|?lnVBq0kV_;xdl~AtBz`%65DkP#LD6w3jpeR2r zGbdG{q_QAYA+;hije()!*4t^(o1Uuixc--PZEH|zIZ|NIzv_&_;qz>lpIB|mtkkn~pAr)Eu&eL*?mN0ix4bXEc=^(9nB=uJ;NU%bB28nd78-s10qyCeEz?l}u4 z*>U|;c60apr8vD^x^A|ht?mB30-c)srcJ+b_Gaz5!u9Kx^>{oj5c`^}xtskc_rfW* zI*XY2Q~S8CaeiVX`>^E!S{+9@HPC+!tA zRZZI9ivph+?-iD$x-+fY?r-{QT2%3l#aB&2x#!2qw)HLhgXPSd3W#Z zthQH~A-ZzP)@~U3GG8 ztAm fPOH`u28M`79RD7?xj2P^fq}u()z4*}Q$iB}{`rI= literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_signs/textures/_e_circumflex.png b/mods/ITEMS/mcl_signs/textures/_e_circumflex.png new file mode 100644 index 0000000000000000000000000000000000000000..2b5ace3c42076e0e01204f226569fe002344daf6 GIT binary patch literal 874 zcmeAS@N?(olHy`uVBq!ia0y~yU|?lnVBq0kV_;xdl~AtBz`%61DkP#LD6w3jpeR2r zGbdG{q_QAYA+;hije()!*4t^(lkO<+xc-lHoz|eza-_&$#;P|8r_Zw*|DEyDCsggH zOmOZ79hN)F1?``&pBJoqpmb4W(yZr`ijPe7(u%qGp&~Zi*KqCc(wFOA-jqwatuLYG zsCzxxZhL)e?0Z?A+}|H___r}{eD9F2{Jz1+J{PzxrrqBIWtg$=Zm;dz5{TD0t zUVB{i^`E8Wkr!PRhZ_AAJ9qq+aW!Dp3<~6ar*q`;qSHasj>ct+7uD+CTl>{-cf|JC zc}qDA^V|RUEzVW1U3)j^MWI`X{Lh!I9zGvGR$a*}k$=1=EIha^$nuTrUftBK4>&9* zugQ}<`XP8r?$oA75lPG&`DU?uaffs){INAGM!~W%SJ4<#JJf?gX(J z;^*faGf~@F*)A?{;l`|2m&&Jpm|*^q@lDDy@3iAg**5D0+ArB|Pbn1pk?E7@toGWP zLFLemu9FiQ9L{*;oD%81*|A`8v;WaEkwWqc4y*2H@@x=1+3?urxSRaqr>9R%mvrZL zSdn75;Gi4hnkgbblTS``4t-v^WL2bZZ1*)C%ha=$(eu(nOgE-v-8^%rD^%Qn-MqVZ z_EzY|u(;2d7NaAgzw}C%qqbA{mvtXje0|{DSMp*azx5vt_gs(p(`IeEv!+seZP~j^ z8~;|n6WjIu(rZukpqD<&=l$Gr`Fzo}#u#a%OBW`#^U9}Qkv6?``&*~fUghtWrnj!B zZQSzbjUR8?=IsI|{lat4IP?fN?(k*u$e4F#QLvZIN#C@M24<~BD<=9`%vCcK@KN8$ zw`=3>$-k#WU-%M!=ZF83LoVO#PqcRCP5yo2E$h~}>*B6r3wClZUlz#5XJ#=c?&j-1 zYPCE0{!2ZuzEHm4y~F4Dqc47}7pr4lqEJ3VO!Iyu0|NtRfk$L91B0G22s2hJwJ&2} zU|=ut^mS!_%q+^sDYMz`%3lTs1`SUa#}JO|y}cVb85nq)&-{14y*EJ0U6D<0Pm4+L k`e_W2Mm2@2pZ77UNOAp$HL2@kU|?YIboFyt=akR{0O=Ku)c^nh literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_signs/textures/_e_circumflex_.png b/mods/ITEMS/mcl_signs/textures/_e_circumflex_.png new file mode 100644 index 0000000000000000000000000000000000000000..c17d9dc29c385c007c5e105273f742d3bce7bc5f GIT binary patch literal 872 zcmeAS@N?(olHy`uVBq!ia0y~yU|?lnVBq0kV_;xdl~AtBz`%65DkP#LD6w3jpeR2r zGbdG{q_QAYA+;hije()!*4t^(o1Uuixc--PZEH|zIZ|NIzv_&_;qz>lpIB|mtkkn~pAr)Eu&eL*?mN0ix4bXEc=^(9nB=uJ}hj0J)5Ju-gwol2&1hzX?aIib*qP;&wCfQ zM@+9t*~eQ?tZRBuR_kT1%c6_5O|tg>n4}$B_4Ksf{!^jSmzFPGrfZ&k&ujJE-6c8y z=k0ENxA%)xhQd@gDXUK#9xm>&nwTA&Hp}YsmY18){953aetTcwV*aB2%iP*;DNWlp z&vvC_&bPxXYahFa8w)&kQON6N5Sk^v`Nb3={i5zjogUwXJXuS){g%7(uv}KS=E+~? zU$p;;n8{!5yg&X=4mo|VpTNz1SMj^?cKsD!ckS2M#JDzgN0LG{O8GdV6Vq%k#I!4Tj%3^!EOcRu-P*= gNVZ;AGGb&f7vlWelA$Hbz`(%Z>FVdQ&MBb@01v8#C;$Ke literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_signs/textures/_e_grave.png b/mods/ITEMS/mcl_signs/textures/_e_grave.png new file mode 100644 index 0000000000000000000000000000000000000000..c24ab463563808f4559d71dfb93a2555a5068c9a GIT binary patch literal 869 zcmeAS@N?(olHy`uVBq!ia0y~yU|?lnVBq0kV_;xdl~AtBz`%5+DkP#LD6w3jpeR2r zGbdG{q_QAYA+;hije()!*4t^(lkO<+xc-lHoz|eza-_&$#;P|8r_Zw*|DEyDCsggH zOmOZ79hN)F1?``&pBJoqpmb4W(yZr`ijPe7(u%qGp&~Zi*KqCc(wFOA-jqwatuLYG zsCzxxZhL)e?0Z?A+}|H___r}{eD9F2{Jz1+J{PzxrrqBIWtg$=Zm;dz5{TD0t zUVB{i^`E8Wkr!PRhZ_AAJ9qq+aW!Dp3<~6ar*q`;qSHk;e{L;Pyng-B-Kh6lx=U|A zjqDQmTz2BU$*rKdp2N74}{>?d+Mg5v3oWyt;Yz zZuj*=t_3ZbCyzRP4Dwnlu|=uG^*vXA6u;dQk9N7A8xHpuU1|H0xia(g*;(5!Wj)uE zy}kc=-ok4Az4J5cT&W-lY=#yrCzpN&Jx#+TJ~RjCjUcw`u=A`bs87Gve(P~FDW4*A#ssKvUAf+ ei`$&c3`u7>e@Zz|-pathz~JfX=d#Wzp$P!`oQeqm literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_signs/textures/_e_grave_.png b/mods/ITEMS/mcl_signs/textures/_e_grave_.png new file mode 100644 index 0000000000000000000000000000000000000000..c71bb2ef65678af1d9fac19e94d38631d0790823 GIT binary patch literal 874 zcmeAS@N?(olHy`uVBq!ia0y~yU|?lnVBq0kV_;xdl~AtBz`%65DkP#LD6w3jpeR2r zGbdG{q_QAYA+;hije()!*4t^(o1Uuixc--PZEH|zIZ|NIzv_&_;qz>lpIB|mtkkn~pAr)Eu&eL*?mN0ix4bXEc=^(9nB=uJ;N-@Lxj8nd78-s10qyCeEz?l}u4 z*>U|;c60apr8vD^x^A|ht?mB30-c)srcJ+b_Gaz5!u9Kx^>{oj5c`^}xtskc_rfW* zI*XY2Q~S8CaeiVX`>^E!S{+9@HPC+!tA zRZZI9ivph+?-iD$x-+fY?r-{QT2%3l#aB&2x#!2qw)HLhgXPSd3W#Z zthQH~A-ZzP)@~U3GG8 ztAmFdh=m|2vMQ=jME*4GRS3|gKpjv*Y^lM@;m{_|Kc_;IplpIB|mtkkn~pAr)Eu&eL*?mN0ix4bXEc=^(9nB7tYzo{T{m0M)^`71flkeR)281zd$aaj;reyUdOV&Mh<#1g+|7QJd*KvY zoyAgmuJ_AySM;fx3A|oVxp139t3=_PDJz1PdM0o0m0C8VV#C7JypG?Kc1nonNqa?2 zRg?bkMS)L<_X;H_c#4DEvk6O;;Sa1-1B2)+xnLM!SZd-Vpe*K{OuFI#Ps>m z)XOuDDQ$mufr)9B`m$Y*cV}0eoc)8T%GRM*?e%d6 zCzktNCnq#GobkvxCDMDdL%^MVe%H*+D*GH7LUsnvNKl@{c)arGF^R=%PoLT@;m+-_ zBE@jQK{lo}Q$&6ypPc9%dcAVVsz~41?rS=hsb?*tPCWJaeZjRNQ~vyt{Yy zR_MmCxX+jtqa&if^a|H<(Pi3h;Tcz|KB|WA`f_S|Y~9q=W=s6NeWUZP?U@>8UHh@#~i0SmwB9vfP__ zPwGzUX8a1j^JD&r*4B6b6~x7MIloKKiw}5RS|6Cg9JRaPsL81#2iaO5PTjjM|5E<; zhx?^|n0?88ar?rr)iY%Gmp#nSeN(nnpjCbv0|NtRfk$L91B0G22s2hJwJ&2}U|=ut z^mS!_%q+^sCHbPVcq0P?gS@AUV+hCfJg3 UW@D)66=MJaPgg&ebxsLQ05U&;j{pDw literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_signs/textures/_i_acute_.png b/mods/ITEMS/mcl_signs/textures/_i_acute_.png new file mode 100644 index 0000000000000000000000000000000000000000..4cdc943d9c206194d9fe4cf81df8560f1010f7ac GIT binary patch literal 866 zcmeAS@N?(olHy`uVBq!ia0y~yU|?lnVBq0kV_;xdl~AtBz`%61DkP#LD6w3jpeR2r zGbdG{q_QAYA+;hije()!*4t^(o1UogwB3(%oz|eza-_&$`l>eyr_b}J{W4Pzp6V&b zKZS91E6XpIw+8=y6}Q<3c$l;fcrG6Ppts3p{l|-+lRbV+yIjft^vvp)sn*XQmYtD% zJpcVkfu406)MY9-JY8O&?oMD0TCzxdi_Q`6MH0^3YrXzil__3d-~3&o_K4m!<>}u8 zT4wY+{p+|madO>>rw`lihq?Hl&$sV5A`*Yv`^~dAcF%W|hX=bYDYBUTYvWYgrbn#- zr{+xyAH6=i+r&RJ-bqb7nS{ zems?_lRPn6cS}RVv(A<8e!P>4`=qw7A@)p3`^}99rPkj*vh>Rt-J5e*tE7T0CY=0b z*dTCldy=7wf`GBmY$MlXGo>RJ4=zu7s?(`2pb+{_MD0dL%7MbTeTK&~UT^xOd+aKc zfQ3wwLo+i=gr?@F3MOMZk1!erDZ;6<;5DuPb>uRe$#%t?*or`O{`?yR)WJdu`df zOND=`--+$|e(Cjs#t^B@7bgz4^&7o%S?4=5^VONl%g!6UZkC#x{M)V9?!@0&QnFdy z5x1(oEn(YulV5ntI^oze4n4w+J9L>mGUCoG3ijG_LN{%r0bi@piivs_bHxk=e3~QF zZEx6~{5vW7!k6_sKH5*@=Dz#iQBS9&{m%J2`xab#{m*?OZ^qn1qL(#<#id2s!oThM zH@R*%|NpB8wlBTe$0)C%2WYEG;~w&%nUIS>O>_%)p?h48n{ROYO@T z7#P?~Jbhi+A2W;caak-8NPf@2z@Xsi;uyklJvqUF^}i$s=K=;dC#?sQd~T$4imPM@ cN-{9y9%5xVw(s2^1_lNOPgg&ebxsLQ0CCKZEC2ui literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_signs/textures/_i_circumflex.png b/mods/ITEMS/mcl_signs/textures/_i_circumflex.png new file mode 100644 index 0000000000000000000000000000000000000000..f0e7127251938af0f79d84c80a7077ca2bffdb64 GIT binary patch literal 867 zcmeAS@N?(olHy`uVBq!ia0y~yU|?lnVBq0kV_;xdl~AtBz`%61DkP#LD6w3jpeR2r zGbdG{q_QAYA+;hije()!*4t^(o1UogwB3(%oz|eza-_&$`l>eyr_b}J{W4Pzp6V&b zKZS91E6XpIw+8=y6}Q<3c$l;fcrG6Ppts3p{l|-+lRbV+yIjft^vvp)sn*XQmYtD% zJpcVkfu406)MY9-JY8O&?oMD0TCzxdi_Q`6MH0^3Yd!v1l__3d-~3&o_K4m!<>}u8 zT4wY+{p+|madO>>rw`lihq?Hl&$sV5A`*Yv`^~dAcF%W|hX=bYDYBUTYvWYgrbn#- zr{+xyAH6=i+r&RJ-bqb7nS{ zems?_lRPn6cS}RVv(A<8e!P>4`=qw7A@)p3`^}99rPkj*vh>Rt-J5e*tE7T0CY=0b z*dTCldy=7wf`GBmY$MlXGo>RJ4=zu7s?(`2pb+{_MD2#cd&c9HKaa^QUVHk~c8PFq zhZQM?3l1_et(hY7Gx_91=g{l5OIAht#&%!Ru}nQ{868(1V!AOU>*kp|U7_Os>*n3P zv$sMwh9!K)v=|)`{iRp9mWwXaP7BYtQuR?aeAky#(_`zVt~OiZ@9i6%cWuwqFzfP{ z7XNI^x$joLEWO~M)oW7nB=NAjWU12iWoJxEpJiT7pZV3X_uR(X#cuLX>U?|owz}%% z+ExcO-+0r`8Fjr=FHPZCr^6jFMimqNw2PXmaZkiHM@Y0gNnY^~pX1jp!LiJ7&1AVZ z^Pbe5)Xn%6e&@&h6RoZ9{ws)!?Q(vXo);hRy7d3z6Kq@j9(H9;>Fnm^I;>qC``>f_ z-S+=k4{l%BzA)eU_3EUunp>^=85?$#EjPJ3#eso=fwRCPvY3HEPZ@+6E0)@qF)%Q& zmw5WRvOi`P<>OL4F2--hz`&sB>Eal|aXmRff#Kg{p&#cRdanJiIGb`vtvhtWL=9FfZ2#56qy925Ffe$!`njxgN@xNA0PBko literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_signs/textures/_i_circumflex_.png b/mods/ITEMS/mcl_signs/textures/_i_circumflex_.png new file mode 100644 index 0000000000000000000000000000000000000000..dc46f3ff55b170ee73561da372b24f19169a3681 GIT binary patch literal 867 zcmeAS@N?(olHy`uVBq!ia0y~yU|?lnVBq0kV_;xdl~AtBz`%5+DkP#LD6w3jpeR2r zGbdG{q_QAYA+;hije()!*4t^(>r~Wv+U`fXPHV{RIa{Qm7gRRk>GSraUuNpcsgsU3 zUuAu2X7AU^- z&u3f7Nf$-`wJ`H5c2@lAQi^C4S^0w1U+mG+z#h&`U*n(aJ^5AoNp5lfougG>KF#YA z_-uGW-qNb-68~PCLmzH;y^#F*mODrB==E=tc3bW~Z~5--)hQEK%A8wPmy_C`P@y=r z+|206hrpg(??#JlHyqY9KV!{o1jhmfqr6 z#Z{AO8&9lNU(?X=?BvRKfATo>ONHYP=%wwt{N_eN@AbEjf~u}f%Q?qn-K!~cBIU1z zLzh7GMu{s$i)IAgn4&4QSx~W`&rVc3-Ls~VVP(;BgM)4=%zdA`dM({|2ujP357 z)gPmFaI7=X-5H?~=e1JQQ9CC5%(@LLzCQ9^SMqYI{_a0o;kg>~r_I`SXHBK{+Ol_- z3jb8U6WjIu((46{K~kA7P8@FQH+to=)^}#+t239Eoi}>jEHyXzw_C5>iNCX?WV5;> zZk2so!nXA$zxbAQ!m(!@dW0Ky=rUoo%470Ex7jjpX)^4jJb!VUe*v6m*!~;|F)}c za@}tJ|5p!gU!3oLzwg@quA3jP>;2&k++ViH-C>?R0|NtRfk$L91B0G22s2hJwJ&2} zU|=ut^mS!_%q+^s%`z!PPm_UxLCMp_F@)oKa)Lv{f1Zp7_IjKa2}iWMbxyYUPOETi d5}U}#;Qfh>`Ni({F$@e044$rjF6*2UngAg{lLP<& literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_signs/textures/_i_grave.png b/mods/ITEMS/mcl_signs/textures/_i_grave.png new file mode 100644 index 0000000000000000000000000000000000000000..7254cd7d229dc5acd482cbcc77766ec362a99bc0 GIT binary patch literal 863 zcmeAS@N?(olHy`uVBq!ia0y~yU|?lnVBq0kV_;xdl~AtBz`%65DkP#LD6w3jpeR2r zGbdG{q_QAYA+;hije()!*4t^(o1UogwB3(%oz|eza-_&$`l>eyr_b}J{W4Pzp6V&b zKZS91E6XpIw+8=y6}Q<3c$l;fcrG6Ppts3p{l|-+lRbV+yIjft^vvp)sn*XQmYtD% zJpcVkfu406)MY9-JY8O&?oMD0TCzxdi_Q`6MH0^0+y9lmaatG8{@(CcN9-DRz4r?_ z4CPz@2rgDu|2yIIVcz{~JLb*1UnkJ1xo_I^8)t9Uo-2I6Zds4V(*m=v$=cN{N4XbH zvDIBHC3o~jneK`{T{D5#3n~|Gb7++)oHJ!b@KVp@@4ZsfW>jogn4Z`1d(ut`@jPj- zsHtkwAHFE?nekp>Nvd1Zy6yg^zotbM?^t}*B$UtmSlPC|Wq+`I+q0OJ-XeedgfB6@ zel+!R#4)AqQ5lSkXN80Be!OeC=ZS9(@DuSwg-TTiTOdQevDWvhqSDo6r1O;P(8+zQD!&Mf;bzwck>j zwr!s6O2?dUhgsIXb`dugc1-H|#y&I@_6mT>zmcjaNZtZ>bf zzs$dA{}VBjzuI|!{GS|h`d&YQoBOWfcjN8)E57dfADF@%wY=b{$*Chp*;*e?-MjAp zlKbxt*PDLGeR2E3_Jv&pI^S(J}Um}AYX^$ZLQ@}4e^Asp9}6Am!{o2=8g@RfbsTb~;#8@Y^xaeyr_b}J{W4Pzp6V&b zKZS91E6XpIw+8=y6}Q<3c$l;fcrG6Ppts3p{l|-+lRbV+yIjft^vvp)sn*XQmYtD% zJpcVkfu406)MY9-JY8O&?oMD0TCzxdi_Q`6MH0^3xsyJXzHwR?&;H) zuc)bN(jUGk@R{*mVM(f6)4J{croW~|74KMl)g+Y9{8-txzGZ)~eA}~_mEIzM`-Cqs zy?!+Ha>OyE?NJ$wjAw;|?|!^%y61^+4dd<^FZnhnH=D+7@AQ5-GkTLH_ZO381qzeD zCNn5D&F`o1?qldey85qpdkt(LXqMNl%viAO%q#axJ^t9goQ=!tAmM>kVYo2}2YxUgS zB{Ki#?QVUy_ls4A!c;dYt4|vqF7C0Km>rxp%j)x%mz&T0THyBl#=gMC{6+hhxwYR? znzn78?Mla-Z--gdzIG8e7I^HUkk`#1G)sK*iz!0-Mct7)J? zfq}im)7O>#F|#Nim*L$rx4jt{7*su7978y+Cnq#C{O7S?@Z)3y0XHYD2a|kmq;!g_ eWC%(!FqH0MWziR1bd7<5fx*+&&t;ucLK6U3+Kbl! literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_signs/textures/_macron.png b/mods/ITEMS/mcl_signs/textures/_macron.png new file mode 100644 index 0000000000000000000000000000000000000000..ffb9dfd77c16545a593c7054314a9164f4b54932 GIT binary patch literal 855 zcmeAS@N?(olHy`uVBq!ia0y~yU|?lnVBq0kV_;xdl~AtBz`%5^DkP#LD6w3jpeR2r zGbdG{q_QAYA+;hije()!*4t^(MKX#!uKy!lr!}aw94X3>3%%($ZN9hpyms5d&^a|y zSq)*_oFy!_iGO}s9_AMj@>N_}sb}dvB_!x!SL5;3F}6obwuN83dwH|Xk!|q?E=_Uk zj@xXjYmIp?tdslmqYnQz-i`Ur`SZ3rM$VILUiG0*|&T%yZG0I zd#nD>;W_w%tNKu5`vjLQ`}S~zDY$A?Ii7afqr#ai=sf#K{BgY}zpN^@U)+7;=&q-q zWV!@Chn;wzwB_lN^~vRKFA7~tzW@2+q_XTsgj}-u?(>%G?p~cDxKifZvU}T#`WAE) zs97#g4LR&@xNWmo$Z;|0j?xP@0nrPbdNTaIuB^PYr0`p>)U+8D8y2SLb^M;RQ$jqi zNYP>GNj4kXj%HtG)5aP3*$Xe{TmCgIs(8oZt0tj*=10I`?T6v7&R&?KUD~-QzR)Qu zA$CuZ)ai&PVcfb33w9>2O0PLDCHG0qt|9i!7oN?@&8BkGJDp$7i!Le>dy(mr=&bho zHiHw({jQ@E8XV5-P|*lBNmF)`k*(1RJ2&YE17pxrzr?0q4>pUAuOR=nEPA7Z+CW%k8cs>|0{rk{S@w@PiAkM8W5(HmbqI(c>T z?A_w)Te}}{U7pn4`e^BtsE1n)l^lJ;)f>fc_r#-J?&pTX{Y6*WzGSYi>AsUB#{D=zqgm=@)8$M-=7T03 zrI&i|&b_nzPSdjekB-$ViHq&}@2IC!GW(8up8krjRds<+Shn~*?8=z`(#+;1OBOz@VoL!i*J5?aLS# z7}!fZeO=ifGmG-78lIgNThGA2AmZub7{YNqIpF}4grtPTKVzP128JgLjEuj#9B(o( PFfe$!`njxgN@xNA7?*~e literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_signs/textures/_n_tilde.png b/mods/ITEMS/mcl_signs/textures/_n_tilde.png new file mode 100644 index 0000000000000000000000000000000000000000..47166911691819df67bcb65375f3992fddf7c767 GIT binary patch literal 873 zcmeAS@N?(olHy`uVBq!ia0y~yU|?flVBp~Zk&fYK^cWbJu2qFZlmsP~D-;yvr)B1( zDwI?fq$;FVWTr7NRNQ(y&3lrJCQsYNbT2$+^q2$T+)iyT_kJRy8y!%0Klg;{%7e6O^{7_r|S?1Kt@XMFW&h_6mtnS%w zukLKH>(IP{2Z}0!YxVV;L_H>U#a-AWpx>F~vtsqv^U30NkABJR`Tat-Y@^)HJ#9*N zG@opjkhOd{JLX;9k5tz$AO3tgq_XTs%)BJ?^zW9(bIVOrU9{Rauk2s@Mo>h*CFt9h zo~$35$F^lVmga11j9@>@y_Hq#NXIvqva(esnQ!(59u^YjH~Vsiw=mvF{PCe&XV2A_ zQkdt-9XYtHahAiG?^`c?i{7^1jqm*21t(dOTO{qTe3<#c|JB_KbF@o47u|pKMA~5e zoMT2}JFhx%b7ah$@v86rx`&$ikA!a=^(mhrE4}99u9-Wg$n8{}z1hJ(nTy>h(wW-$*2EmgJkN4Ch_g%b}`gFELIJd)! z6vG7v8JX5h5&4;Xa-wsnYjD8THOtnyW>1^5>De6J_13FqMHp?(Ny|IBs#`t$eBQgb zJz{!I+CJWTVqMdNvRW^5T^8M}ZIZS3$0Y68s;8&*_MZxszO;PlGF|iRdtR&O?k^tL&xM$UMOaJeQiFomkyC`v?^^>|M-#E9%eHV8%TTsds?z7k@CMQ55?&j-XYJUsm z|6MyUeWAW{eA_?%Hnnx!e|GZRXWYj(^+=+Aa2W#w180FpWHAGSo-znCRxGs#39^@X z`ns||W)|h+78cyT`W*uUgPNy{V~E7%Ud@f26v8>G<>MkjkFRo?C93nxfUdd1e3FH-bF+OM<>_ z;W4ZcNxmJV(5GuA@OnX|W7Gnto*e&>^yOZYkG+#N)iL~-;C%khgzrm>4fXDrP1(|- zCjH@y0-q4?6_%`h>s!n2Y8I=`?p|ye{!++w|I?G^32~;q zsX9fkIkgoQR2HqW-XDD^`0f$)4c#-}nOK`eJT5IR)U?g=HcM}udrX8cWmBDuf@{ax z2%ap-r$l;hc1&<*pWiigv&ue)hLD}XGZK_1F&?ixdQ4_>8c3;!6Og(EE9akP=x-li|=9xQPq2m7Q=H0!sw?a3D zC49!T7#$J)rB}KZh_2I43y-)`^-(o^*Oyb%W9z1_Hk;z_?HiqUZO_y&>++Wt|7^>- z?^eGoz2KnPYf|zg@vysO>7r}P&X|-w%er^k6APu3D{zvZqxESD9od6t*)7wvx{ zX7X3e{Ga5`4Hy23KRM)7e&X+mx58O_-^GjEY`CTwW7%s|xba{@Me6$3<}dqyf7s5q zPo~!LSJ9XH0+Yhn2j^3N@a+?rdSq>3j2Z(2180FpWHAGSo-znCRxGtIV_;xlFY)ws zWq-^p%Ev9!$g!=Sfq_BC)5S4F;&O6=L&N_JlRU>Y4T7Gc%4V|vFW&UAPzh8C=t(-1 iq#o0>L0FTS;lmnkrXOsH4;UC27(8A5T-G@yGywo^dV*2_ literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_signs/textures/_not.png b/mods/ITEMS/mcl_signs/textures/_not.png new file mode 100644 index 0000000000000000000000000000000000000000..a98f885e99bdf749d09ce02130ff521ac54249f5 GIT binary patch literal 1301 zcmeAS@N?(olHy`uVBq!ia0y~yU|?lnVBq0kVPIfj$lSk-fq|u~DkP#LD6w3jpeR2r zGbdG{q_QAYA+;hije()!*4wb?Nvg~F{-le>F*$K`KK&5XQeH6qJnY~ z5|X~uO`Qz2N@rn@To zlw_jPrI|nXgk2E%-?VXF*hL<1nS`9CvwdbvpDtT#H_p7(PHPnSq`ti9Q+3pj1+#xNMzA#(UCN0_=>EIwh12_6j}99r z&pRUX=&sa~&xH*lirW}?3?({RBUS`lnKFf=(&WSC2Ae`ZS)K_VvqWU>7>G|u&OCn1 z+ABS8Qps5jT?MBd36pQ!b5PJuZ>%$sHo4NG$}Xt6C@E;EsNPNwP1n=w0(~PlcZr3X zuD#WxJ3GSAbaU3)Wv4U}gS@W>ti5(is>y6eUd8T2w`|+ecRRiHV|RbOb-SU)P0r}l zg~Y{uW|yCIzO_Gn#US_EO)*`M%%`fWbz--@%HmsVSzY$=(W_@yZ+DwkZF{SJ?FDyn z{W&SyHMz$=&0PL|&A~Olo;8(OPCP3q;XU)fjyyJn7h5d5-7J@%z4J`xT8pnD=bDK* zMQXXn4kW})Ir8%8UF+idQ_&OtOt0{^Pu9zM^^fz}p=Iw9-?`u0mzcY)c+m&NjQ5A; zUOv%xsEzY<)TV9cm&Ct2e82QVec6-0TfJULg{GUeXm?g)UL6#SOnnnr-t}CQakf6w0Y`Re zz6mQ05}(TmB);J7>*t7D=I68|%V56&db z`MYXq#{=O53jK_0KeSmWXxU{%t-0_~Zsq!-pa!R9+{Sk%yBweYT|o7^v25t3%4U(q zH4i3=9@S*$H-1+4a50O4O_25JH3H?9nJ1^D9nj9c-&476X`*YL_^;`AT3^3k{;urP zzSos|`Im2;zJNW(x2?Bp$F!(pZB8pKxdc_X@6WJnxn1C_x}ZzhpxNfVXWBX!4Qacm z6QW18qEDsH*C|d9G+_MXmA&h&&hyzNFM@t8ocAj%;_2(k z{+L;mSC#R#f9_=l1_n7#7sn8e>&XcUEdQKO{^#j2;A3W1p3}N!QfH$M1H=1mtpAmI RB=&-eJ5N_Xmvv4FO#n8Da=rin literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_signs/textures/_o_acute.png b/mods/ITEMS/mcl_signs/textures/_o_acute.png new file mode 100644 index 0000000000000000000000000000000000000000..cda99b3a6fb7d4c4ac188515c9f9bea1f44fba39 GIT binary patch literal 870 zcmeAS@N?(olHy`uVBq!ia0y~yU|?lnVBq0kV_;xdl~AtBz`%69DkP#LD6w3jpeR2r zGbdG{q_QAYA+;hije()!*4t^(lkO<+xc-lHoz|eza-_&$#;P|8r_Zw*|DEyDCsggH zOmOZ79hN)F1?``&pBJoqpmb4W(yZr`ijPe7(u%qGp&~Zi*KqCc(wFOA-jqwatuLYG zsCzxxZhL)e?0Z?A+}|H___r}{eD9F2{Jz1+J{PzxrrqBIWtg$=Zm;dz5{TD0t zUVB{i^`E8Wkr!PRhZ_AAJ9qq+aW!Dp3<~6ar*q`;q6}fLsVcvsc29Vn{V{KC`K_b7 z-hR???WnYVQZAKi{WAOQG^c*!MZZt@>$@a%^Rz^N zIk2bVnaMK4lV`2>G&CH$7BYR`>X!CBo%{*v#<51$ViAuETP>!%+o{^U`G9{im$Xsj zeMSYrV_`mQJLhPmshFj99m{dKaPi>sq-Q#v`~nK0??l*cbfg?8oR_?~|Kg|Ar>A=s zr{?jVOmb-EWr@(#{B(Sha{H=tpFKi1&)OxnHnQl{tm17p=T~GUoxHMX=1$Sodh=pz zckitJ7`20=&p>x)ghrg#O3~)9mUS;;9|pcY*e>((g0g(skHEfL6YO+Nb9Y954vTtw zXKC{9?{{=d-Y>mA*>B0EnSQpPGndbQx`uhDS;~@y%KXxHr&gF}ZQ1@-*tE+1U2)cy zmA*-tKX1;JI+K>Km?5WbHM3DdovCm(%Y+LyGhLTYshBkTOj2SFS89Or+yX1#B!wA% zNwOu$(z zr|+*K*?*=7$``zMxZn6}f7iv2@w$K5k}S(7R?e)M#lXP8S>O>_%)p?h48n{ROYO@T z7#P?~Jbhi+A2W;caqC{Vw#}7+fkDaB#W95AdUApS(;sz>hTz-vF}MC18yFZEBwjw| eGHIp=14C^)``^NpmiY_}3=E#GelF{r5}E)-_ln*C literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_signs/textures/_o_acute_.png b/mods/ITEMS/mcl_signs/textures/_o_acute_.png new file mode 100644 index 0000000000000000000000000000000000000000..e25a3a7f4bc6539faa439be3823ee92cd263c5f7 GIT binary patch literal 867 zcmeAS@N?(olHy`uVBq!ia0y~yU|?lnVBq0kV_;xdl~AtBz`%61DkP#LD6w3jpeR2r zGbdG{q_QAYA+;hije()!*4t^hMRyc<+Wr@J$uW9zbUscnFy8Cfe_!0^oAS-HWtsJC zX^f|xm~5HyE$aWuJY?tUTsGl~&Gb3SURo;)jvja%x^7-l)Z5UK?_YHIH@+3;nYdv3 zYs2}``<>Q(=bX0fPsKF$+if?tFEl@Ydx6jSo`csu=X(5@bh(Z%_5A9WiPpc(rPg1s zidlcpUftPX*P(d@4}v|EqUOi3XircQ-Mb)Fah}l886Qk;f3Yf4yng-Q?%sPx^{(ko ze;&{>W4lwG_+nl4TG`#A3y+Ily!-hw_rw{Gk}G@ezOXx1`F7p19*?IR%)f4%YTBf9 zXl9D<=@o7BlX6yzg&Y@??kK%r6A-&nVY3yQz?N==*bBgOgr9f9wf#fEx! z#HN^N^O`+)=_q3&wSx0VO*FUe{?wn@Pd?n?oaJL+_Oo`y!>J#%zoupM%-rR2alM72 z?gqVimc6MyMVnj21TNe#yefJ>^sw{2BkUU{&s=9>n~|4KAYti}6Y}1DGOMiKD~F!VdKI-L?WAV*xtpK%EMC>A8hkqKS=gFg6-8g) zJbQOE`=Qc~LtCCCEv(R78fLN9Al7iV)8cE*{Fav%y4$_^uvliRVr^8`t)k7()^54A z)BE_x_dBCs-1A=qlYX+PAzb=dRQ{+h=al0 zBUUetz4Ln)oacBszVNaAL~h}`{}sg5cKNKg`)&JpYo%xX*K#{vzx9K(8&`SX*~*2D3=9mM1s;*b3=De8Ak0{?)V_>? zfq}im)7O>#F|#Ni51;Lazz+-z42qsEjv*Y^lM@_R|4VXkCb0g$82ZmW-8k{G+a3kK dZVd*8Kl<$dUG6A5FfcGMc)I$ztaD0e0stFxh*JOn literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_signs/textures/_o_circumflex.png b/mods/ITEMS/mcl_signs/textures/_o_circumflex.png new file mode 100644 index 0000000000000000000000000000000000000000..2f7a188df1de50e465b41cfd43a7c42d6d78a1ea GIT binary patch literal 872 zcmeAS@N?(olHy`uVBq!ia0y~yU|?lnVBq0kV_;xdl~AtBz`%69DkP#LD6w3jpeR2r zGbdG{q_QAYA+;hije()!*4t^(lkO<+xc-lHoz|eza-_&$#;P|8r_Zw*|DEyDCsggH zOmOZ79hN)F1?``&pBJoqpmb4W(yZr`ijPe7(u%qGp&~Zi*KqCc(wFOA-jqwatuLYG zsCzxxZhL)e?0Z?A+}|H___r}{eD9F2{Jz1+J{PzxrrqBIWtg$=Zm;dz5{TD0t zUVB{i^`E8Wkr!PRhZ_AAJ9qq+aW!Dp3<~6ar*q`;q6}d#SMB}R^q%~R+7tbHZrR4X z-8SBWN%#1E&UL%(_bY1m(hHA!Uf6xQ%sp|&qsL!Y+oppQ6uv`U(p+nqFP{UhAP^{v+laCw-=$>0`ZC5u?brv^wwPBb^VIXB=wt zxmM2L(Xvr=vZJ1Qmt?2!%teOMf+Zy%R?e{We#Fe;G1a=2(M(CQV9xU!FOs*^ME*2- zoWaPE!)LhQARE(~DI!0UPfm0WeO|d_Ritlh_ca~M)U%e+^U_01H>PCWJaeZjRNQ~v zyt{YyR_MmCxX+jtqa&if^h%ebwo~|*bstuIec;?z@?s*t^&buQT#xzFW^KE(rc!%t z*}F>{|5m>f+x7j@Yftr{mp;qq{oHc-e9^VW7-^$R7bdpz%BNnDHobNGTc^}s`?E)tK!gJ3!^awZZ@MZGIn0IDTu$RqA-?WVeX01jmCi+>-RWlUu zQQye7Yvb<8zo$fB_!55ShyRm9F5m4>w07oA{(a&t>(;pI;;v!~c5*LY7RbhDW-%x3 z=IcLdwLAI#OFgi@P`=>3!{_*;FMg~St79%@EuZ}6?GG6S1_sUokH}&M20djEW~^9h zU&g?|z+U3%>&pI^S(K04VlQ{lItB&?6;Bt(5RU7~2?`AV9t-_A@6dDY|Bf@i&L22% k;6RJ7w6JGd5CenT8IC_nD)T)V7#J8lUHx3vIVCg!00(Q4MgRZ+ literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_signs/textures/_o_circumflex_.png b/mods/ITEMS/mcl_signs/textures/_o_circumflex_.png new file mode 100644 index 0000000000000000000000000000000000000000..5e4c6be6a65885ae0fb7db04e18482b2e3e9d79b GIT binary patch literal 875 zcmeAS@N?(olHy`uVBq!ia0y~yU|?lnVBq0kV_;xdl~AtBz`%61DkP#LD6w3jpeR2r zGbdG{q_QAYA+;hije()!*4t^(lkO<+xc-lHoz|eza-_&$#;P|8r_Zw*|DEyDCsggH zOmOZ79hN)F1?``&pBJoqpmb4W(yZr`ijPe7(u%qGp&~Zi*KqCc(wFOA-jqwatuLYG zsCzxxZhL)e?0Z?A+}|H___r}{eD9F2{Jz1+J{PzxrrqBIWtg$=Zm;dz5{TD0t zUVB{i^`E8Wkr!PRhZ_AAJ9qq+aW!Dp3<~6ar*q`;q731A%Z|opix<`E-dp?CZ+FD@ z*m+Ai4D;Ln_$|&=uU&gL=tZGhiTux(tsXufKUQ7IE0KS^CoDX;Ey(hX>t5Z|tq(XX zC$GtqJo+JcOYYRBM-fTP8~J9jdvS+!Ec~{>Wv&*lRruW%iCvxkW>?Pe?((1AUHEX@ zf+dj|8yNlhA1PdP@J)DjJ0_zy`dUS=jBL0J2tWwF#^a8(lt1n@F zcGP&eVXtT2y@#wUCfkEL(~hunOwcOlV$N|fdSG#WC6+H=WJU!9pzX2#o-t{$DdI^Dcn zKaN}cpx`o9aqgqunp=}DbX^eLt8J5I`(uK#Y}J#)eDYHCo5%MpZ9I4aeyO1YqiLl>tPac-bo@<)( z-n@Ha_f*W}uc-My;hhE-|MC|lF1r21uBh5^?e(v&6InCf9a@<=rLmcpZ+ZAPtNotw z>kjW{`@#1`_J#F@KjDT}|5mr&FJ&#CoM)se$H2hAS>O>_%)p?h48n{ROYO@T7#P?~ zJbhi+A2W;c@yML>RM^45z@X{r;uyklJvqUl;XhBt1A9GAwj8bh#t#f$+cPsWGYgyL h9^rnprGtrq;Z{7yKYrFu2?hoR22WQ%mvv4FO#ntce#Za+ literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_signs/textures/_o_dash.png b/mods/ITEMS/mcl_signs/textures/_o_dash.png new file mode 100644 index 0000000000000000000000000000000000000000..9e5de53d13e2b0d8818c647647cd49f1c18afdfd GIT binary patch literal 874 zcmeAS@N?(olHy`uVBq!ia0y~yU|?flVBp~Zk&fYK^cWbJu2zLalmsP~D-;yvr)B1( zDwI?fq$;FVWTr7NRNQ(y&2y5BB9H6$IfvXmJUKcaPv8;U*VzA_-}CyFw|yTrd{{JD zW5E=s1NBX-F4Wh^Ka`g1dZM_h@|31*MN;2PZmYVO^H(nkhS%C=ZvT?Q?|xTbLd{Y8 z_Wu0;OuO%~N8I`L`KDYBd(!>JdujI=Q_r1wkz;?qu|?nd?R&-dg{pQr>Gf_;zeb&Z zef9PC41vX(k2u-iITbDVX4##yAJVeW_gQm&b4Ew#tROe4jZ#ZidXqiW<4C(r1sqxc<(|CqS!p@5=3K*T~5zrcW`| zStw!GwQudDK$++@3fCMyyR2+9GQ1*p;+$J6+t;gMt0Iz~oNJr5)9H0)vEjKG@hKME zyk-wF9c5IsR&buFiRNBg`FYm*Ny*RLKBPDq9O@`ntx5Saxrp23m{07Y!}@b;7@y6& z9C1v=JiCICv3KoCz1nb2{>oyThPh`-PQJO3V0lja$jXxQx{-5O>#B}yP@KF~mO&^n z?`V>T!vhbG9Iq0I&4P~Z?DLzZZg#PAYzWyID3PE%iQ#zVxn4uJ)6=Kw8?O^<2=GjD zXl7=KFx2{Ve35c{SJ$xxt2}*UH&0X1RP)u0oK+rTxG^K^674d6|ZLcS^qtgzS3j9)aq*?Ypc#~HOaeF@FzM; zY}WQWUd#JJUTw_wzq{-Eozo8McqI#8cpPr)w>i}-^)~spOK;qXTEAYit)4o1_Pc|d zZ@$rGIs4j0-B{qUheF!>;Lf={S5A@$==E+;QWG#->C?J0%nS?+8lEnWArhC96BbzhINx!`G0E6SkyA-KDZ%OT!4BUh!NW=_ fzwCK!m>7=fva`mX-lWaIz`)??>gTe~DWM4fTM2=S literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_signs/textures/_o_dash_.png b/mods/ITEMS/mcl_signs/textures/_o_dash_.png new file mode 100644 index 0000000000000000000000000000000000000000..badbe9b88b94ee9c2522171d87136dc0ed18e286 GIT binary patch literal 878 zcmeAS@N?(olHy`uVBq!ia0y~yU|?flVBp~Zk&fYK^cWbJu2zLalmsP~D-;yvr)B1( zDwI?fq$;FVWTr7NRNQ(y&2y5BB9H6$IfvXmJUKcaPv8;U*VzA_-}CyFw|yTrd|0HY zwQ!2lf%>LZ7wT)|A4+q%eiFE9^K=T|lo`p-n)>9!cScz~s)|#6J8j~1%|b$DZa;r1Ep1!rbT&VBpbdcud)<$rCT*seR${`SrJ6?@`d zSMII)E61B;;%f8oK&%I!P3<|Qh{hDn3|4=!N0}E_?|<_%`R$?E>()QITcv+XHud(? z$gYCL6XHy6m0jxJ8qH<9uH&7t{ayphM;{~Pwo0Ep{^I&OFP{Ld*1apYuU#W2qnJL$ zRA-@-UDv*~vjSzK*Cn9~YbNi6uWN@gX+_Wa;&*Um@lVd)yiw^70tzmpN z^K!&774!KYn3$xZgJXZKlal-Ntb)OM=F3SpHy$jS6W$U0a$fW%3+_K(Iuf1LvaK0Z z4&CWGI-%jf#0fX1yf8>pZtCN+W7SUYtZ8CcS+v;TfSU?q-{(2f$vxBbwd2!bbQu;- zI?}+#&aojWJXL_5>4wJW2(&dScbv*h8A z?N@Y6@^?=4lU;cw`TD$FrSEr6Z;X*PdURo88?Suj6lv32$G>$-?Va#@j#O^eZ$@*>y58xRrf_Vc!yPq76%+ro_TV0ylfG&0X);`?0m^d=qHN%NZCLI14-?iy0X7ltGxWVyS%@0|Ntl ziKnkC`(tKNK2ffPb8S8{FfizNx;TbNTux3{!1;s!D36Cp6JxS*;>Dv4dLQREHZ}^* mW>IG5d;9<5n?+&_4B{_2|IeKMHk^Thfx*+&&t;ucLK6TY(2aWl literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_signs/textures/_o_grave.png b/mods/ITEMS/mcl_signs/textures/_o_grave.png new file mode 100644 index 0000000000000000000000000000000000000000..b6b31a9a6e170f83435023537ef12bd73a388893 GIT binary patch literal 870 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 literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_signs/textures/_o_tilde_.png b/mods/ITEMS/mcl_signs/textures/_o_tilde_.png new file mode 100644 index 0000000000000000000000000000000000000000..bb0616918e4bab3fd1410b3027f8e26eec5485bb GIT binary patch literal 869 zcmeAS@N?(olHy`uVBq!ia0y~yU|?lnVBq0kV_;xdl~AtBz`%5^DkP#LD6w3jpeR2r zGbdG{q_QAYA+;hije()!*4t^(lkO<+xc-lHoz|eza-_&$#;P|8r_Zw*|DEyDCsggH zOmOZ79hN)F1?``&pBJoqpmb4W(yZr`ijPe7(u%qGp&~Zi*KqCc(wFOA-jqwatuLYG zsCzxxZhL)e?0Z?A+}|H___r}{eD9F2{Jz1+J{PzxrrqBIWtg$=Zm;dz5{TD0t zUVB{i^`E8Wkr!PRhZ_AAJ9qq+aW!Dp3<~6ar*q`;q731AT5FzeEmORH{n6d1_glJ4 zZ$FLf68Kzp;=ReOvP;)*>9)$HyL_KGKd$45i2Qo@w{G7J&t;dIrfN(*9Czh*P#AaL z1mlyhrUmlYyWS4d)aX++6L`I#a={jdR*5WruPZArEhxU)E46IKj}+&#cNYBKvQt7l zkK1cjE1UF(FA988yjNJ#_ML6Lwj;Io`U%4#^$H`!8&AG3YzaTMeoFKL!?agIuKP=z zq7ve4ilr{kc=Aj(&cPu$dzJV7&_mAmj<9c-JX3F`Eccp^JDg;^zTcU2H1ff6!&csz zYu+PRNkl=Y?7wj)W>HhYMky_)4;H@Xt}`wHx=f-&oa`rJ=65HQ|2ZOms ztX>>@=l3o+&+&46;bZ%W+`@PND~PM@@_nbgUHnQ_Y`jQh!!x}(v)m*tZagTcN?reX z_Lrwtf3h3iJKS&F$9%S4bn#>Uuphkb7t5zc*c;AeU|`@Z@Q5sCV9-+rVaAH3_GJtV z4D2PIzOL+#nML_{)a#v2&S79+Q1Wzf4B@z*oY2tlKf`1hL)-`X*r)X+X2NE0n}DxLC&dw`9pVW(EcZ22WQ%mvv4FO#sDxhYSD! literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_signs/textures/_pilcrow.png b/mods/ITEMS/mcl_signs/textures/_pilcrow.png new file mode 100644 index 0000000000000000000000000000000000000000..9764ff8b5709e537df6e112e345b9a94be0f911b GIT binary patch literal 872 zcmeAS@N?(olHy`uVBq!ia0y~yU|?lnVBq0kV_;xdl~AtBz`%5+DkP#LD6w3jpeR2r zGbdG{q_QAYA+;hije()!*4t^(MKX#!uKy!lr!}aw94X3>3%%($ZN9hpyy>#xM^7$a zxNM=R(*fJ2nFe)#=R9QR>RdMAip}&n%3fM43tW#s4qZ1b$!dQ1#k-d_+aB4rKVb&T z+L-l~IsdtK-(!!s_3iOZxg7SS`;9Nee&}pUi~IZbx%Gq(smuS$ostW`e7Nje`)$76 z&HMMMH%r6{`dfSunAEX+eI$$a1SQe64^BGm(c%1C66NtE`K{AB`R?-9do#peZ#%tN zMDf|%3GpVk$}WlTzO(G%a?y*m&z9?NXcdt^-CR~&HorJ#_i9b&l``L!-P>05?LmdZ zDevB%tREV`%C0rNx{<`Zk#81z7I#R;!f#7l=4$y$rQcqW*xAW09rcXu?)0-qcN9$K zX4LXEd+^dxCP!)o=b4&l?zx|*74LKFn`wP;GUq`K<$G5@O#G<*RV?G&)LkwY_2*6y zix6Kw=a`Y$&aW-v0vGPgdbRR>5cP`iI}Bq z+Q;mmbY^V?4=2Zw9`7b2*JLxL7cU+JZ!DU2gq>r8Rymh&j*HO)i}gDVkG=Sk`t)?q zYF34iO%fL#FffLBb^Y1+6t(&sgY>B_OZ*<1f`eACNy(GM!|sx$O4pa2F)4kPc{zRNSGV488*3N2=|8bs?l$|D z(lkH&-NDT_-{`WeeeEJ{Eb!PxA+MW3XqNcq7gL1vi@GCqdYl*XWG&(LTkguka#`V; zr+Ha<(flIrS^v7E|98ejy!gkybHjz)qW3#%9oAm|Ebi*(@LELAcd<`QPJu++&DXzt ze-%mpGd)ng;Jw5B#%ue#ZhpM3_lK?FQrU9n$>w_*7#KJUJR*x381$4un6YB1eHjA- z1AB?5uPggwW>H>k-kK^NkdV5ki(?4K_2h&F90pD=|DR~`$zbX+aO64AlETuZz`Tpa g@9h!JBvyum1x$iosm%Ks7#J8lUHx3vIVCg!08#;or2qf` literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_signs/textures/_thorn.png b/mods/ITEMS/mcl_signs/textures/_thorn.png new file mode 100644 index 0000000000000000000000000000000000000000..e44f23d85c2fa28674b065a72d3b16979249b15b GIT binary patch literal 2480 zcmeAS@N?(olHy`uVBq!ia0y~yU|?lnVBq0kV_;xdl~AtBz`)5<6%tVrlvu7%P?VpR znUkteQdy9ykXn(M#=uZ<>+Ou}BI%8SE&m^jSRQ(0d7$vanp3<*e`=U@R0Gv=wWt2! zj(oPxLEu2i_b+E|ovHs@JhT48Cp~rHMNdM4c2%?rb*;Yh@$^*Mdk_dlm9{`_fdsorDTFTGQ|=x5xEji2`}xIS0b{QI67{U>)Nw|~FC z?9Tqx54|nE@4tHYpVhX{SHJIXW;oWd=K0*h%hB~8XO@be=dAfSb@lVhm9I-wit_iq z`S?Z3dh)C64|ebNC6-^UzGLs4xUR(CKWN9%2R5OyNGet{nz;@_RsZQ>VEF`J{_{h*sRU&-Mx_{o1riLX2VrI z>+f4{pA&4J?YG0~`oY-ao5aIo?k{1fz5SG>s_mm>p4FPlw!6n8-`v~&=I^evZ)|jo z=cXE-)~~Ca9p3!^s-OK#R>iWrGmiDXubZvEYv(?J z*NFysGmIIpt)8nIwPpUTPqWj{@2Oxdo_l43(L2_Lj=jq58|B#6wQR`UG~Gh|T2pe{ z{8K0A@~=DC(0h?LTkKB7dsUUYlwEirDacoyw>JK zMeh3a`czNU?CgE5V$oTbinQ03J-O`MZ(I6u=k&OC>ADI3lz9!6`;A_05!O6w@Yp9f zZC>iN)@#$^6OT@vwr0<%Rq|_YTIbG>*nEG+Z`hn_b#kQlf7$UOG$}TWo(=XigvY3rGV`zuofo%g#%ac*DT zk@jOtRY~~{M#KD9tIc$upE@}2r|EtHn_ruKLR1?5E)=s2XfS^WL5qMOpWTk8FcToRwbhd zd&{g}9ou48Z&5!x`}?B*GoPKUzF432@7DK+n~V>eT+GmsI>njNo>(SR^WWWvZQt%q zlV@I#SGXLSAoTNs#qN*BU$@`cck<5rBU&QQti|r%yxMZ-&%Pz*$2@&E=7}h~h`G;P z6Bs*F@%n|JMVx8de4qG!S)8uZUu5<9!X2%Y&U-O+URRmd&+=dQbesR%Qv!PhND*J{_xM%;SfQV{e}m#3SovBGd}#xmY>-!qV!^~?W5(Quk|+Up5o;@-%Ry( z;qo5_>z~ZsHNDjLObVNqT$J^mNB1=H1Pt`HH)1LE%Wn&G%wW5y zd3jYU%RbBHiyzLYT47dPwSC6Lt0wl^eDBK^DP`%hEc>wd4_Zjw#b>9l4;1IP- z%Q^l^>((xlF5cQ|=vJ-gJN@_rx!TTo?{C>%*evO7rX_LO%~d|->cX#6y4zRvPMLnN zM#$UP;IWo(s@BIe+TuKd~$ zbbHy`{4>*cm9FhtP%u-~6jZf!7eY2v-I(D$aEeN~iIjql=R zdcoWGpPRMDa;LZ4xxl7hg8zIPEG`u#o?i5^A+UXy#Xg}ef2?0IZLOFr$bJ52PS&-z z7O^kGXWmkZJ-_@4>sxjHD7lCQbynUJJjFM&w(HcM^OfrtxYBTb-P73lewU4Ed!iyVHulZt!Y^X0&1wZHsT4{q)X+-z4%4nLmai7^iR()g zcjmtAF`8`mdO}xaxq0ULcyes^r?nSM7n{KZVqu zsgJ6A6a4YwoBYV?T}^`Bt27@(y|meX@%)#c+1dYgH5%LJpN%hn_U!rEpRdo|`LoBg z{_f1#^S3`+Z(aQP^R+*v>3MbcX6=7>=Ir_C&)4Vf{CWG@AOFS|C7JfPu_Bhzklj~w);yyPH{NP zrOUv;z**oCS86fq}u?)5S4_<9c$+ zkN@)-Sq+Sg3=9((eRz6${u{CuHvBK>NwI5T7X0Bqt4yrpL%mzmw#OnVF5)Z%UCXY%<@c9T4H zOjAhF<3?|X)2BNu>}CtJ#cPlK-fA4berK1fsU4G9Z$BT$io~Q~1_lNOPgg&ebxsLQ E0Arvk3jhEB literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_signs/textures/_u_acute.png b/mods/ITEMS/mcl_signs/textures/_u_acute.png new file mode 100644 index 0000000000000000000000000000000000000000..580f61042dfd10bfa2d861a7707511d7bed9cab6 GIT binary patch literal 873 zcmeAS@N?(olHy`uVBq!ia0y~yU|?flVBp~Zk&fYK^cWbJu2+RblmsP~D-;yvr)B1( zDwI?fq$;FVWTr7NRNQ(y&3jUeCXeg$HHW+%gq)HrZR`a1HplJLSD9)*T{dwyyRAk? z&4(#Y2W*?p82tO2-j=U1<%Dz4=a`~Cjg?CdiOTkGFUr!s$mQ!gO`;wXyTU%CD8`Ao&i@d0@$&ht-158jb(g>2n<@T!BJW4*fZC|i=OiT)L_6#~w0JKwws$-HzUcX6Alnp{rCOzDz%Gx5iVa-BU_ zUrJ$~CwIhgapSB5XTEQ}FmL;tpHh}-?^yiRSfc;bt$1ksc>a~@1(xBjgk1N(d?IbI ze$Fu?v7KLA#04(c%zAaL{Q8F}<{vrVBrS_hJIi zla4m9v2$z)3VPD7>dqHBXSPU)>FSl)7iXz1Ut^hm`gPwbwP`-Ovu8$ceD&z$)y=ba zi?46(e!z8kQg`d4rBk8|GhJVFT@;nu8dr02s@~pDsng@1uHt=pIq34V*{1nRubzvw z>Z?D0*Xes)m8{7GFJ)fY${Qa7-R7Rys%h*yxANAP$h5t|i;HvOS6r0d86UjZIakp8 z_IbH031+`J9A8^qJj!##La^huQbWtLqdHbgk96Nj661axpwTS#vgvZBAoD?!j?znW z?>67j-^uE`|7dT$o1RX|f7YEFF31+y7yWLDTK`+z)oej2*Yst9YIfNH~mdKI;Vst066<2b4*d6#>yp!L}mN87iDWM`@3gqO;pv^_8aH8+dMCv z`Y3;V|DkpLjMMu5R&8asZoJ{Iu#5ek>$Nkh>;L>=5!!e2Wexw+p4Bfit)Cx$+hTk0 z{(kjliC95@iw^>mI+m}GWYM0WB)ay&NvAzJU3R(M9JT9We_Z$)yQliS@9v2H*tn$} zudK=cA9o~`PeHU}^DOy1rrHEl-4hJ~ql7iw?D^l)$IRbA^f znYW@!fPFSw7L)P)>rU18Ha*XNGGnK(%}jwFgGcRBcEX zZ+RTCk+#!^#Lt??>D$9#gGbIn9(L3+7zEBaytNHu7iMv8zl1T9G^% z1q}?^s;>Vcik<|7UK9y2UA;2<;w;tWYb?`GzwTS5HqA$O_RQ#wuO6Mex_S0)@%63U z54bK*>TZ3sbV`(Art6EYi=uK{<7!S$)!X|ib$a~MRlF}R2VI^v+cbaa)pM~{ef8(> zI(?6;k~Nv&rOYc^dE-N%+uRddHI04eR^Iv&nYK50adA%kii^@a|a-R3*` zJ6V1AAMLGo)6*&W&$@HN1=%9|qTel1>wk;8nk^{hn!YShP0!4NXZ@SfziNLArT>{7 z2w$+?A-?e+f1}zu?ms(u?lUgPoO;kM=dc_D0|RG)M`SSrgPt-7Ggd6MFJoX}U@!6X zb!C6dEXv0#?-%Xh%)r2)>FMGaB5^r6!GZO^9eCpDVFK3 g+@m=@QVa}lk8m*R?mm2)fq{X+)78&qol`;+05v;*^Z)<= literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_signs/textures/_u_circumflex.png b/mods/ITEMS/mcl_signs/textures/_u_circumflex.png new file mode 100644 index 0000000000000000000000000000000000000000..2b238be12fdcc71e59c6e7067bd08c755e20832d GIT binary patch literal 874 zcmeAS@N?(olHy`uVBq!ia0y~yU|?flVBp~Zk&fYK^cWbJu2qFZlmsP~D-;yvr)B1( zDwI?fq$;FVWTr7NRNQ(y&3jUeCXeg$HHW+%gq)HrZR`a1HplJLSD9)*T{dwyyRAk? z&4ena1GY_P4F3I1Z_C%1a>6<2b4*d6#>yp!L}mN87iDWM`@3gqO;pv^_8aH8+dMCv z`Y3;V|DkpLjMMu5R&8asZoJ{Iu#5ek>$Nkh>;L>=5!!e2Wexw+p4Bfit)Cx$+hTk0 z{(kjliC95@iw^>mI+m}GWYM0WB)ay&NvAzJU3R(NBL8D{e^~f>cg6R6v&%Nh?cU=h z_)g^0Y`5cnztX1vHujW%lOZa~^NoJ{n;Qwe*L9C9{c=M0<{Z{KsbGr>DhX_NW#By99a-YlDZcZlj@Yq<0c@t1SeIW`Vr$A2c)i4W zH~Y@`BJNpr-O~SiVj^Dr<1R{EX#J$_$v4ieao_d3avWZZ==m=8iODIDh`agvm+!B~ zW`A-U);q*E?qm8Z&*U2;{-aoOAM^45Q;)u@OWn-Cz`$AH5n0T@pr;JNj1^1m%NQ6K z*h@TpUD+Qqi}LYuob5Q;!oa|w?&;zfB5^r6L4oPdarGbb8zYqeB_}3Je4O9d*x1N9 i-O%UB4Od+T29CYlKTkG)SjND>z~JfX=d#Wzp$Pz(b&Vtd literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_signs/textures/_u_circumflex_.png b/mods/ITEMS/mcl_signs/textures/_u_circumflex_.png new file mode 100644 index 0000000000000000000000000000000000000000..1608ecf17306931ae19942a3dafdb622e3a54f6a GIT binary patch literal 876 zcmeAS@N?(olHy`uVBq!ia0y~yU|?flVBp~Zk&fYK^cWbJu2qFZlmsP~D-;yvr)B1( zDwI?fq$;FVWTr7NRNQ(y&3jUeCXeg$HHW+%gq)HrZR`a1HplJLSD9)*T{dwyyRAk? z&4ena1GY_P4F3I1Z_C%1a>6<2b4*d6#>yp!L}mN87iDWM`@3gqO;pv^_8aH8+dMCv z`Y3;V|DkpLjMMu5R&8asZoJ{Iu#5ek>$Nkh>;L>=5!!e2Wexw+p4Bfit)Cx$+hTk0 z{(kjliC95@iw^>mI+m}GWYM0WB)ay&NvAzJU3R(M9zSDte^~f>cg6R6v&%Nh?cU=h z_)g^0Y`5cnztX1vHujW%lOZa~^NoJ{n;Qwe*L9C9{c=M0<{Z{KsbGr>DhX_NW#By99a-YlDZcZlj@Yq<0c@t1SeIW`Vr$A2c)i4W zH~Y@`BJNpr-O~SiVj^Dr<1R{EX#J$_$v4ieao_d3avWZZ==m=8iODIDh`agvm+!B~ zW`A-U);q*E?qm8Z&*U2;{-axbAM^W#Q%@R1_U&h2VBjq9h%9Dc&{GCs#)_r(Wef}q z>?NMQuI!JQMfrHu(;|P|Wnf^?^mK6yk+__k;Lz}&C*nYT%_NNmK~GU-v)KO^Z~E-$ kQHo`{JMTZw6?TU2CpZ~|wPwXKFfcH9y85}Sb4q9e083Ge%>V!Z literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_signs/textures/_u_grave.png b/mods/ITEMS/mcl_signs/textures/_u_grave.png new file mode 100644 index 0000000000000000000000000000000000000000..0512804284990f15fe4abceb07db1a97a607be2d GIT binary patch literal 870 zcmeAS@N?(olHy`uVBq!ia0y~yU|?flVBp~Zk&fYK^cWbJu2zLalmsP~D-;yvr)B1( zDwI?fq$;FVWTr7NRNQ(y&2y5BB9H6$IfvXmJUKcaPv8;U*VzA_-}CyFw|yTrd|0HY zwQ!2lf%>LZ7wT)|A4+q%eiFE9^K=T|lo`p-n)>9!cScz~s)|#6J8j~1%|b$DYfaF=PlQt`8!_v`jCbHqNCYFD= z{{EtZTksKKzB{c?4qSe&(}lsa~9 zzLdZ`PwdFSWlggVoY}th!YuRkKea5=@>u-USd@Dz!VkM2vtPO0A^FS|RjWUjPKqbY zv+PavDf-N*udraF>D8t0S3OkB?_=LEd8Xb>S!tc)m8}+2-|bZG-h9BnU&1V9(>7)Y zr88?IcsMy^I6Hki`I60)Uc7h^yrF2?33ZMMTIO8LIW9sEEY9yVJeKiu)2Gy9SD6H~ zJb5w-8W^nLsJP8QAC=p`1a%J|lNh(K|XsUXD?$c5e^VOX>GkV*jM;EV7p1nI= zf9B=~T$kr;YJFq*Jjfu^@kP@`R=K5fYEDV|+g{FGKL4kV=*!^btFu;xuHQNBn6Fe{ zz4uwC&(oq`UYY1+TlRKk^!Ityk|(w*D)Y%^-uN)leP`g}+MM|-E^_ZYzw+WTv(BSW z)626AX76oXP&xNS3R{v4=aF0?2dB>|Wfn(IOumy+mU3)i0GsJ0&gB<*uUcV)V+lV1g4nJ=qZCRW5rVYG6n_) z_7YEDSN6xuqI|rJTS96T7#J8-JY5_^BrYc>C@}n+tlPQplf9T(o8f;+2?>cA1(Jtd e`eLszG04y0`c<$;!Iy!7fx*+&&t;ucLK6T}&5Nl3 literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_signs/textures/_u_grave_.png b/mods/ITEMS/mcl_signs/textures/_u_grave_.png new file mode 100644 index 0000000000000000000000000000000000000000..6686857933c5b2e7741c29f45afa4a3491eb5361 GIT binary patch literal 878 zcmeAS@N?(olHy`uVBq!ia0y~yU|?flVBp~Zk&fYK^cWbJu2zLalmsP~D-;yvr)B1( zDwI?fq$;FVWTr7NRNQ(y&3jUeCXeg$HHW+%gq)HrZR`a1HplJLSD9)*T{dwyyRAk? z&4ena1GY_P4F3I1Z_C%1a>6<2b4*d6#>yp!L}mN87iDWM`@3gqO;pv^_8aH8+dMCv z`Y3;V|DkpLjMMu5R&8asZoJ{Iu#5ek>$Nkh>;L>=5!!e2Wexw+p4Bfit)Cx$+hTk0 z{(kjliC95@iw^>mI+m}GWYM0WB)ay&NvAzJU3RkFb?ah(T=*Khr~19`?uh=_xTPHB zTt9smC#% z1_o_a*MAX3PXaD|nn!ohwxmc^d`tx_4 zzQ6H9u-MQg{Y>|D@@0O_bzr|h67L;;LUlypQXJ)~({!Qs$wZDbZ|I7}A zFIevo-}sNeQEeUfpPfAS8TZLdJ;Kxd?B@BQCA6PN%cSD d0C@(6w?{Y_&t0lK#lXP8;OXk;vd$@?2>_sUfc^jg literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_signs/textures/_y_acute.png b/mods/ITEMS/mcl_signs/textures/_y_acute.png new file mode 100644 index 0000000000000000000000000000000000000000..37cb54b3046f735c3445bcc2a3bda5e9451fadd7 GIT binary patch literal 875 zcmeAS@N?(olHy`uVBq!ia0y~yU|?lnVBq0kV_;xdl~AtBz`%65DkP#LD6w3jpeR2r zGbdG{q_QAYA+;hije()!*4t^(o1Uuixc--PZEH|zIZ|NIzv_&_;qz>lpIB|mtkkn~pAr)Eu&eL*?mN0ix4bXEc=^(9nB7ni54cyWCr_s%-mJ?`(7%QnjG+|#af zq(byE0RL0*W?xa~A z;bt1sweM|IfUI|p!ZpXwPPvU-hKp=91DAVEK9(nK>SOpZ!TIzZf$yrthI)6*rfkvj zHGA;VQ6@)f1?Q1JGq`j2r~b}<^5G8WEFS|miI2g&@tpO`?Rd`a44SU-OICde>$9WU z%ME*7^X@KWWij#hDLr0({lg^lkF0N!mRXl-ew)*vDrlYMky_)5x&0Xt}{bHx=f-&!2h?-J+*Y%{S~5YX~@* zG&k&_EqaXdxUPDwM%SmWYMWv#oP9rTalG?^2(-}J4ILP&5N6d_qvjoQ}uWM(F)J?m_KdSwmWMowbz!tyR`9d z^*ga$-!Hvh&=?|>`QpUkwtk~mF6(?}X1+RedD(fR*UeIMbAP+_+MW12OG-AYJK|Q= zwr8BO~t2qF}E*Cv?*`8kn^jt(d51F;~n`z^6Gv-S&p< z$-k4LFML_QmVZtlDP9rbid+V7mdvv0w**Z&rsVB1pmuq$&)XEQI?VeRVJ`%CWU z9j-V1ko)5Hh3yN!h8tSfy*+e)SyI_*%Q7xz1_lPs0*}aI1_nK45N51cYG1~{z`$PO z>Fdh=m|2vM*Sz}Oi=7M%4BDP9jv*Y^lM@t}{-|p-FiA`dF<7+P?b)C7L(ArNN<4p1 keyP4GFC`%%fq~&=0@t6$3o9QpFfcH9y85}Sb4q9e0KJil6951J literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_signs/textures/_y_acute_.png b/mods/ITEMS/mcl_signs/textures/_y_acute_.png new file mode 100644 index 0000000000000000000000000000000000000000..bcc15c41c725e58f5c34b0e7f18c35aa15be6dd1 GIT binary patch literal 871 zcmeAS@N?(olHy`uVBq!ia0y~yU|?lnVBq0kV_;xdl~AtBz`%5+DkP#LD6w3jpeR2r zGbdG{q_QAYA+;hije()!*4t^(o1Uuixc--PZEH|zIZ|NIzv_&_;qz>lpIB|mtkkn~pAr)Eu&eL*?mN0ix4bXEc=^(9nB7n7Iho{T@P_vBaU2f4ldH;z_4`6SmR z@Hy~=yrEUmCH|c@cRt+idGYe++g1;sk6ZT~$vgM1xUag@G}T3`ee()=@0+$7aU4tE zBuZW_(EPP6+p$z5>!j-hDEwcAZlWJ)89^YD?Nl&FphGKUpna)u|eMI_+85nq3t|U*9}? zcQpHo1d-Sa%-pe z@o(>UM!&e{y}p?(D09g|WqxV9Q!9jbnx!sVY3x7S?(`b|tdebSrA>b+e9z7*S)rSh z`TFK$sUvCjJ{PR~N(`9|{a7At<4{;wY1r+j`B7>6jH8Ech@4vBw(CJj)DZ^*-lVx- z627Z^_s(;?y#LX$|1NquCI8uXZnz*@WMBNdDQf-iZYAjpw_3HA1*-9xY4EInQ(8N@ zZa44$s|U6(%y+)ub}jzsn;%=b>zU{LEn8L3Fl!lpIB|mtkkn~pAr)Eu&eL*?mN0ix4bXEc=^(9nB7n7IhUSFRqUi8kV_nlqN+#DJ6X1wZqzwV)G{v+-iM}5j?$a1gwxXU-j>-?QbXCoIZH*95|xkjFu zL$F3$&6$bGPm*_q2EINzJ?7;l?f9~vq3do?fq}im z)7O>#F|#NiAL|T}SHBn-7&JXy978y+Cnp?W{n{Bl=81W h$M2Va04o~<15+5+pQAN0It&a944$rjF6*2UngALKgs}hs literal 0 HcmV?d00001 From 1719c3e4e13c591111c3626ef0d8dc7a80fccc18 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Thu, 21 Mar 2019 16:08:29 +0100 Subject: [PATCH 209/737] Add LBMs to update formspecs of 4 nodes Dispenser, dropper, ender chest, shulker box. --- mods/ITEMS/REDSTONE/mcl_dispensers/init.lua | 10 + .../REDSTONE/mcl_dispensers/init_new.lua | 372 ++++++++ mods/ITEMS/REDSTONE/mcl_droppers/init.lua | 10 + mods/ITEMS/REDSTONE/mcl_droppers/init_new.lua | 219 +++++ mods/ITEMS/mcl_chests/init.lua | 10 + mods/ITEMS/mcl_chests/init_new.lua | 878 ++++++++++++++++++ 6 files changed, 1499 insertions(+) create mode 100644 mods/ITEMS/REDSTONE/mcl_dispensers/init_new.lua create mode 100644 mods/ITEMS/REDSTONE/mcl_droppers/init_new.lua create mode 100644 mods/ITEMS/mcl_chests/init_new.lua diff --git a/mods/ITEMS/REDSTONE/mcl_dispensers/init.lua b/mods/ITEMS/REDSTONE/mcl_dispensers/init.lua index 1575c3fc..2e5e3c6a 100644 --- a/mods/ITEMS/REDSTONE/mcl_dispensers/init.lua +++ b/mods/ITEMS/REDSTONE/mcl_dispensers/init.lua @@ -359,3 +359,13 @@ if minetest.get_modpath("doc") then doc.add_entry_alias("nodes", "mcl_dispensers:dispenser", "nodes", "mcl_dispensers:dispenser_down") doc.add_entry_alias("nodes", "mcl_dispensers:dispenser", "nodes", "mcl_dispensers:dispenser_up") end + +minetest.register_lbm({ + label = "Update dispenser formspecs (0.51.0)", + name = "mcl_dispensers:update_formspecs_0_51_0", + nodenames = { "mcl_dispensers:dispenser", "mcl_dispensers:dispenser_down", "mcl_dispensers:dispenser_up" }, + action = function(pos, node) + setup_dispenser(pos) + minetest.log("action", "[mcl_dispenser] Node formspec updated at "..minetest.pos_to_string(pos)) + end, +}) diff --git a/mods/ITEMS/REDSTONE/mcl_dispensers/init_new.lua b/mods/ITEMS/REDSTONE/mcl_dispensers/init_new.lua new file mode 100644 index 00000000..dbe802c2 --- /dev/null +++ b/mods/ITEMS/REDSTONE/mcl_dispensers/init_new.lua @@ -0,0 +1,372 @@ +--[[ This mod registers 3 nodes: +- One node for the horizontal-facing dispensers (mcl_dispensers:dispenser) +- One node for the upwards-facing dispensers (mcl_dispenser:dispenser_up) +- One node for the downwards-facing dispensers (mcl_dispenser:dispenser_down) + +3 node definitions are needed because of the way the textures are defined. +All node definitions share a lot of code, so this is the reason why there +are so many weird tables below. +]] +local S = minetest.get_translator("mcl_dispensers") + +-- For after_place_node +local setup_dispenser = function(pos) + -- Set formspec and inventory + local form = "size[9,8.75]".. + "background[-0.19,-0.25;9.41,9.49;crafting_inventory_9_slots.png]".. + mcl_vars.inventory_header.. + "label[0,4.0;"..minetest.formspec_escape(minetest.colorize("#313131", S("Inventory"))).."]".. + "list[current_player;main;0,4.5;9,3;9]".. + "list[current_player;main;0,7.74;9,1;]".. + "label[3,0;"..minetest.formspec_escape(minetest.colorize("#313131", S("Dispenser"))).."]".. + "list[current_name;main;3,0.5;3,3;]".. + "listring[current_name;main]".. + "listring[current_player;main]" + local meta = minetest.get_meta(pos) + meta:set_string("formspec", form) + local inv = meta:get_inventory() + inv:set_size("main", 9) +end + +local orientate_dispenser = function(pos, placer) + -- Not placed by player + if not placer then return end + + -- Pitch in degrees + local pitch = placer:get_look_vertical() * (180 / math.pi) + + local node = minetest.get_node(pos) + if pitch > 55 then + minetest.swap_node(pos, {name="mcl_dispensers:dispenser_up", param2 = node.param2}) + elseif pitch < -55 then + minetest.swap_node(pos, {name="mcl_dispensers:dispenser_down", param2 = node.param2}) + end +end + +local on_rotate +if minetest.get_modpath("screwdriver") then + on_rotate = screwdriver.rotate_simple +end + +-- Shared core definition table +local dispenserdef = { + is_ground_content = false, + sounds = mcl_sounds.node_sound_stone_defaults(), + allow_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player) + local name = player:get_player_name() + if minetest.is_protected(pos, name) then + minetest.record_protection_violation(pos, name) + return 0 + else + return count + end + end, + allow_metadata_inventory_take = function(pos, listname, index, stack, player) + local name = player:get_player_name() + if minetest.is_protected(pos, name) then + minetest.record_protection_violation(pos, name) + return 0 + else + return stack:get_count() + end + end, + allow_metadata_inventory_put = function(pos, listname, index, stack, player) + local name = player:get_player_name() + if minetest.is_protected(pos, name) then + minetest.record_protection_violation(pos, name) + return 0 + else + return stack:get_count() + end + end, + after_dig_node = function(pos, oldnode, oldmetadata, digger) + local meta = minetest.get_meta(pos) + local meta2 = meta + meta:from_table(oldmetadata) + local inv = meta:get_inventory() + for i=1, inv:get_size("main") do + local stack = inv:get_stack("main", i) + if not stack:is_empty() then + local p = {x=pos.x+math.random(0, 10)/10-0.5, y=pos.y, z=pos.z+math.random(0, 10)/10-0.5} + minetest.add_item(p, stack) + end + end + meta:from_table(meta2:to_table()) + end, + _mcl_blast_resistance = 17.5, + _mcl_hardness = 3.5, + mesecons = {effector = { + -- Dispense random item when triggered + action_on = function (pos, node) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + local droppos, dropdir + if node.name == "mcl_dispensers:dispenser" then + dropdir = vector.multiply(minetest.facedir_to_dir(node.param2), -1) + droppos = vector.add(pos, dropdir) + elseif node.name == "mcl_dispensers:dispenser_up" then + dropdir = {x=0, y=1, z=0} + droppos = {x=pos.x, y=pos.y+1, z=pos.z} + elseif node.name == "mcl_dispensers:dispenser_down" then + dropdir = {x=0, y=-1, z=0} + droppos = {x=pos.x, y=pos.y-1, z=pos.z} + end + local dropnode = minetest.get_node(droppos) + local dropnodedef = minetest.registered_nodes[dropnode.name] + local stacks = {} + for i=1,inv:get_size("main") do + local stack = inv:get_stack("main", i) + if not stack:is_empty() then + table.insert(stacks, {stack = stack, stackpos = i}) + end + end + if #stacks >= 1 then + local r = math.random(1, #stacks) + local stack = stacks[r].stack + local dropitem = ItemStack(stack) + dropitem:set_count(1) + local stack_id = stacks[r].stackpos + local stackdef = stack:get_definition() + local iname = stack:get_name() + local igroups = minetest.registered_items[iname].groups + + --[===[ Dispense item ]===] + + -- Hardcoded dispensions -- + + -- Armor, mob heads and pumpkins + if igroups.armor_head or igroups.armor_torso or igroups.armor_legs or igroups.armor_feet then + local armor_type, armor_slot + local armor_dispensed = false + if igroups.armor_head then + armor_type = "armor_head" + armor_slot = 2 + elseif igroups.armor_torso then + armor_type = "armor_torso" + armor_slot = 3 + elseif igroups.armor_legs then + armor_type = "armor_legs" + armor_slot = 4 + elseif igroups.armor_feet then + armor_type = "armor_feet" + armor_slot = 5 + end + + local droppos_below = {x=droppos.x, y=droppos.y-1, z=droppos.z} + local dropnode_below = minetest.get_node(droppos_below) + -- Put armor on player or armor stand + local standpos + if dropnode.name == "3d_armor_stand:armor_stand" then + standpos = droppos + elseif dropnode_below.name == "3d_armor_stand:armor_stand" then + standpos = droppos_below + end + if standpos then + local dropmeta = minetest.get_meta(standpos) + local dropinv = dropmeta:get_inventory() + if dropinv:room_for_item(armor_type, dropitem) then + dropinv:add_item(armor_type, dropitem) + --[[ FIXME: For some reason, this function is not called after calling add_item, + so we call it manually to update the armor stand entity. + This may need investigation and the following line may be a small hack. ]] + minetest.registered_nodes["3d_armor_stand:armor_stand"].on_metadata_inventory_put(standpos) + stack:take_item() + inv:set_stack("main", stack_id, stack) + armor_dispensed = true + end + else + -- Put armor on nearby player + -- First search for player in front of dispenser (check 2 nodes) + local objs1 = minetest.get_objects_inside_radius(droppos, 1) + local objs2 = minetest.get_objects_inside_radius(droppos_below, 1) + local objs_table = {objs1, objs2} + local player + for oi=1, #objs_table do + local objs_inner = objs_table[oi] + for o=1, #objs_inner do + --[[ First player in list is the lucky one. The other player get nothing :-( + If multiple players are close to the dispenser, it can be a bit + -- unpredictable on who gets the armor. ]] + if objs_inner[o]:is_player() then + player = objs_inner[o] + break + end + end + if player then + break + end + end + -- If player found, add armor + if player then + local ainv = minetest.get_inventory({type="detached", name=player:get_player_name().."_armor"}) + local pinv = player:get_inventory() + if ainv:get_stack("armor", armor_slot):is_empty() and pinv:get_stack("armor", armor_slot):is_empty() then + ainv:set_stack("armor", armor_slot, dropitem) + pinv:set_stack("armor", armor_slot, dropitem) + armor:set_player_armor(player) + armor:update_inventory(player) + + stack:take_item() + inv:set_stack("main", stack_id, stack) + armor_dispensed = true + end + end + + -- Place head or pumpkin as node, if equipping it as armor has failed + if not armor_dispensed then + if igroups.head or iname == "mcl_farming:pumpkin_face" then + if dropnodedef.buildable_to then + minetest.set_node(droppos, {name = iname, param2 = node.param2}) + stack:take_item() + inv:set_stack("main", stack_id, stack) + end + end + end + end + + -- Spawn Egg + elseif igroups.spawn_egg then + -- Spawn mob + if not dropnodedef.walkable then + pointed_thing = { above = droppos, under = { x=droppos.x, y=droppos.y-1, z=droppos.z } } + minetest.add_entity(droppos, stack:get_name()) + + stack:take_item() + inv:set_stack("main", stack_id, stack) + end + + -- Generalized dispension + elseif (not dropnodedef.walkable or stackdef._dispense_into_walkable) then + --[[ _on_dispense(stack, pos, droppos, dropnode, dropdir) + * stack: Itemstack which is dispense + * pos: Position of dispenser + * droppos: Position to which to dispense item + * dropnode: Node of droppos + * dropdir: Drop direction + + _dispense_into_walkable: If true, can dispense into walkable nodes + ]] + if stackdef._on_dispense then + -- Item-specific dispension (if defined) + local od_ret = stackdef._on_dispense(dropitem, pos, droppos, dropnode, dropdir) + if od_ret then + local newcount = stack:get_count() - 1 + stack:set_count(newcount) + inv:set_stack("main", stack_id, stack) + if newcount == 0 then + inv:set_stack("main", stack_id, od_ret) + elseif inv:room_for_item("main", od_ret) then + inv:add_item("main", od_ret) + else + minetest.add_item(droppos, dropitem) + end + else + stack:take_item() + inv:set_stack("main", stack_id, stack) + end + else + -- Drop item otherwise + minetest.add_item(droppos, dropitem) + stack:take_item() + inv:set_stack("main", stack_id, stack) + end + end + + + end + end, + rules = mesecon.rules.alldirs, + }}, + on_rotate = on_rotate, +} + +-- Horizontal dispenser + +local horizontal_def = table.copy(dispenserdef) +horizontal_def.description = S("Dispenser") +horizontal_def._doc_items_longdesc = S("A dispenser is a block which acts as a redstone component which, when powered with redstone power, dispenses an item. It has a container with 9 inventory slots.") +horizontal_def._doc_items_usagehelp = S("Place the dispenser in one of 6 possible directions. The “hole” is where items will fly out of the dispenser. Use the dispenser to access its inventory. Insert the items you wish to dispense. Supply the dispenser with redstone energy once to dispense a random item.").."\n\n".. + +S("The dispenser will do different things, depending on the dispensed item:").."\n\n".. + +S("• Arrows: Are launched").."\n".. +S("• Eggs and snowballs: Are thrown").."\n".. +S("• Fire charges: Are fired in a straight line").."\n".. +S("• Armor: Will be equipped to players and armor stands").."\n".. +S("• Boats: Are placed on water or are dropped").."\n".. +S("• Minecart: Are placed on rails or are dropped").."\n".. +S("• Bone meal: Is applied on the block it is facing").."\n".. +S("• Empty buckets: Are used to collect a liquid source").."\n".. +S("• Filled buckets: Are used to place a liquid source").."\n".. +S("• Heads, pumpkins: Equipped to players and armor stands, or placed as a block").."\n".. +S("• Shulker boxes: Are placed as a block").."\n".. +S("• TNT: Is placed and ignited").."\n".. +S("• Flint and steel: Is used to ignite a fire in air and to ignite TNT").."\n".. +S("• Spawn eggs: Will summon the mob they contain").."\n".. +S("• Other items: Are simply dropped") + +horizontal_def.after_place_node = function(pos, placer, itemstack, pointed_thing) + setup_dispenser(pos) + orientate_dispenser(pos, placer) +end +horizontal_def.tiles = { + "default_furnace_top.png", "default_furnace_bottom.png", + "default_furnace_side.png", "default_furnace_side.png", + "default_furnace_side.png", "mcl_dispensers_dispenser_front_horizontal.png" +} +horizontal_def.paramtype2 = "facedir" +horizontal_def.groups = {pickaxey=1, container=2, material_stone=1} + +minetest.register_node("mcl_dispensers:dispenser", horizontal_def) + +-- Down dispenser +local down_def = table.copy(dispenserdef) +down_def.description = S("Downwards-Facing Dispenser") +down_def.after_place_node = setup_dispenser +down_def.tiles = { + "default_furnace_top.png", "mcl_dispensers_dispenser_front_vertical.png", + "default_furnace_side.png", "default_furnace_side.png", + "default_furnace_side.png", "default_furnace_side.png" +} +down_def.groups = {pickaxey=1, container=2,not_in_creative_inventory=1, material_stone=1} +down_def._doc_items_create_entry = false +down_def.drop = "mcl_dispensers:dispenser" +minetest.register_node("mcl_dispensers:dispenser_down", down_def) + +-- Up dispenser +-- The up dispenser is almost identical to the down dispenser , it only differs in textures +local up_def = table.copy(down_def) +up_def.description = S("Upwards-Facing Dispenser") +up_def.tiles = { + "mcl_dispensers_dispenser_front_vertical.png", "default_furnace_bottom.png", + "default_furnace_side.png", "default_furnace_side.png", + "default_furnace_side.png", "default_furnace_side.png" +} +minetest.register_node("mcl_dispensers:dispenser_up", up_def) + + +minetest.register_craft({ + output = 'mcl_dispensers:dispenser', + recipe = { + {"mcl_core:cobble", "mcl_core:cobble", "mcl_core:cobble",}, + {"mcl_core:cobble", "mcl_bows:bow", "mcl_core:cobble",}, + {"mcl_core:cobble", "mesecons:redstone", "mcl_core:cobble",}, + } +}) + +-- Add entry aliases for the Help +if minetest.get_modpath("doc") then + doc.add_entry_alias("nodes", "mcl_dispensers:dispenser", "nodes", "mcl_dispensers:dispenser_down") + doc.add_entry_alias("nodes", "mcl_dispensers:dispenser", "nodes", "mcl_dispensers:dispenser_up") +end + +minetest.register_lbm({ + label = "Update dispenser formspecs (0.51.0)", + name = "mcl_dispensers:update_formspecs_0_51_0", + nodenames = { "mcl_dispensers:dispenser", "mcl_dispensers:dispenser_down", "mcl_dispensers:dispenser_up" }, + action = function(pos, node) + minetest.registered_nodes[node.name].on_construct(pos) + minetest.log("action", "[mcl_dispenser] Node formspec updated at "..minetest.pos_to_string(pos)) + end, +}) + diff --git a/mods/ITEMS/REDSTONE/mcl_droppers/init.lua b/mods/ITEMS/REDSTONE/mcl_droppers/init.lua index 157ce680..7167de19 100644 --- a/mods/ITEMS/REDSTONE/mcl_droppers/init.lua +++ b/mods/ITEMS/REDSTONE/mcl_droppers/init.lua @@ -206,3 +206,13 @@ if minetest.get_modpath("doc") then doc.add_entry_alias("nodes", "mcl_droppers:dropper", "nodes", "mcl_droppers:dropper_down") doc.add_entry_alias("nodes", "mcl_droppers:dropper", "nodes", "mcl_droppers:dropper_up") end + +minetest.register_lbm({ + label = "Update dropper formspecs (0.51.0)", + name = "mcl_droppers:update_formspecs_0_51_0", + nodenames = { "mcl_droppers:dropper", "mcl_droppers:dropper_down", "mcl_droppers:dropper_up" }, + action = function(pos, node) + setup_dropper(pos) + minetest.log("action", "[mcl_droppers] Node formspec updated at "..minetest.pos_to_string(pos)) + end, +}) diff --git a/mods/ITEMS/REDSTONE/mcl_droppers/init_new.lua b/mods/ITEMS/REDSTONE/mcl_droppers/init_new.lua new file mode 100644 index 00000000..a36a2dbe --- /dev/null +++ b/mods/ITEMS/REDSTONE/mcl_droppers/init_new.lua @@ -0,0 +1,219 @@ +--[[ This mod registers 3 nodes: +- One node for the horizontal-facing dropper (mcl_droppers:dropper) +- One node for the upwards-facing droppers (mcl_droppers:dropper_up) +- One node for the downwards-facing droppers (mcl_droppers:dropper_down) + +3 node definitions are needed because of the way the textures are defined. +All node definitions share a lot of code, so this is the reason why there +are so many weird tables below. +]] + +local S = minetest.get_translator("mcl_droppers") + +-- For after_place_node +local setup_dropper = function(pos) + -- Set formspec and inventory + local form = "size[9,8.75]".. + "background[-0.19,-0.25;9.41,9.49;crafting_inventory_9_slots.png]".. + mcl_vars.inventory_header.. + "label[0,4.0;"..minetest.formspec_escape(minetest.colorize("#313131", S("Inventory"))).."]".. + "list[current_player;main;0,4.5;9,3;9]".. + "list[current_player;main;0,7.74;9,1;]".. + "label[3,0;"..minetest.formspec_escape(minetest.colorize("#313131", S("Dropper"))).."]".. + "list[current_name;main;3,0.5;3,3;]".. + "listring[current_name;main]".. + "listring[current_player;main]" + local meta = minetest.get_meta(pos) + meta:set_string("formspec", form) + local inv = meta:get_inventory() + inv:set_size("main", 9) +end + +local orientate_dropper = function(pos, placer) + -- Not placed by player + if not placer then return end + + -- Pitch in degrees + local pitch = placer:get_look_vertical() * (180 / math.pi) + + if pitch > 55 then + minetest.swap_node(pos, {name="mcl_droppers:dropper_up"}) + elseif pitch < -55 then + minetest.swap_node(pos, {name="mcl_droppers:dropper_down"}) + end +end + +local on_rotate +if minetest.get_modpath("screwdriver") then + on_rotate = screwdriver.rotate_simple +end + +-- Shared core definition table +local dropperdef = { + is_ground_content = false, + sounds = mcl_sounds.node_sound_stone_defaults(), + after_dig_node = function(pos, oldnode, oldmetadata, digger) + local meta = minetest.get_meta(pos) + local meta2 = meta + meta:from_table(oldmetadata) + local inv = meta:get_inventory() + for i=1, inv:get_size("main") do + local stack = inv:get_stack("main", i) + if not stack:is_empty() then + local p = {x=pos.x+math.random(0, 10)/10-0.5, y=pos.y, z=pos.z+math.random(0, 10)/10-0.5} + minetest.add_item(p, stack) + end + end + meta:from_table(meta2:to_table()) + end, + allow_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player) + local name = player:get_player_name() + if minetest.is_protected(pos, name) then + minetest.record_protection_violation(pos, name) + return 0 + else + return count + end + end, + allow_metadata_inventory_take = function(pos, listname, index, stack, player) + local name = player:get_player_name() + if minetest.is_protected(pos, name) then + minetest.record_protection_violation(pos, name) + return 0 + else + return stack:get_count() + end + end, + allow_metadata_inventory_put = function(pos, listname, index, stack, player) + local name = player:get_player_name() + if minetest.is_protected(pos, name) then + minetest.record_protection_violation(pos, name) + return 0 + else + return stack:get_count() + end + end, + _mcl_blast_resistance = 17.5, + _mcl_hardness = 3.5, + mesecons = {effector = { + -- Drop random item when triggered + action_on = function (pos, node) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + local droppos + if node.name == "mcl_droppers:dropper" then + droppos = vector.subtract(pos, minetest.facedir_to_dir(node.param2)) + elseif node.name == "mcl_droppers:dropper_up" then + droppos = {x=pos.x, y=pos.y+1, z=pos.z} + elseif node.name == "mcl_droppers:dropper_down" then + droppos = {x=pos.x, y=pos.y-1, z=pos.z} + end + local dropnode = minetest.get_node(droppos) + -- Do not drop into solid nodes, unless they are containers + local dropnodedef = minetest.registered_nodes[dropnode.name] + if dropnodedef.walkable and not dropnodedef.groups.container then + return + end + local stacks = {} + for i=1,inv:get_size("main") do + local stack = inv:get_stack("main", i) + if not stack:is_empty() then + table.insert(stacks, {stack = stack, stackpos = i}) + end + end + if #stacks >= 1 then + local r = math.random(1, #stacks) + local stack = stacks[r].stack + local dropitem = ItemStack(stack) + dropitem:set_count(1) + local stack_id = stacks[r].stackpos + + -- If it's a container, attempt to put it into the container + local dropped = mcl_util.move_item_container(pos, droppos, nil, stack_id) + -- No container? + if not dropped and not dropnodedef.groups.container then + -- Drop item normally + minetest.add_item(droppos, dropitem) + stack:take_item() + inv:set_stack("main", stack_id, stack) + end + end + end, + rules = mesecon.rules.alldirs, + }}, + on_rotate = on_rotate, +} + +-- Horizontal dropper + +local horizontal_def = table.copy(dropperdef) +horizontal_def.description = S("Dropper") +horizontal_def._doc_items_longdesc = S("A dropper is a redstone component and a container with 9 inventory slots which, when supplied with redstone power, drops an item or puts it into a container in front of it.") +horizontal_def._doc_items_usagehelp = S("Droppers can be placed in 6 possible directions, items will be dropped out of the hole. Use the dropper to access its inventory. Supply it with redstone energy once to make the dropper drop or transfer a random item.") +horizontal_def.after_place_node = function(pos, placer, itemstack, pointed_thing) + setup_dropper(pos) + orientate_dropper(pos, placer) +end +horizontal_def.tiles = { + "default_furnace_top.png", "default_furnace_bottom.png", + "default_furnace_side.png", "default_furnace_side.png", + "default_furnace_side.png", "mcl_droppers_dropper_front_horizontal.png" +} +horizontal_def.paramtype2 = "facedir" +horizontal_def.groups = {pickaxey=1, container=2, material_stone=1} + +minetest.register_node("mcl_droppers:dropper", horizontal_def) + +-- Down dropper +local down_def = table.copy(dropperdef) +down_def.description = S("Downwards-Facing Dropper") +down_def.after_place_node = setup_dropper +down_def.tiles = { + "default_furnace_top.png", "mcl_droppers_dropper_front_vertical.png", + "default_furnace_side.png", "default_furnace_side.png", + "default_furnace_side.png", "default_furnace_side.png" +} +down_def.groups = {pickaxey=1, container=2,not_in_creative_inventory=1, material_stone=1} +down_def._doc_items_create_entry = false +down_def.drop = "mcl_droppers:dropper" +minetest.register_node("mcl_droppers:dropper_down", down_def) + +-- Up dropper +-- The up dropper is almost identical to the down dropper, it only differs in textures +local up_def = table.copy(down_def) +up_def.description = S("Upwards-Facing Dropper") +up_def.tiles = { + "mcl_droppers_dropper_front_vertical.png", "default_furnace_bottom.png", + "default_furnace_side.png", "default_furnace_side.png", + "default_furnace_side.png", "default_furnace_side.png" +} +minetest.register_node("mcl_droppers:dropper_up", up_def) + + + +-- Ladies and gentlemen, I present to you: the crafting recipe! +minetest.register_craft({ + output = 'mcl_droppers:dropper', + recipe = { + {"mcl_core:cobble", "mcl_core:cobble", "mcl_core:cobble",}, + {"mcl_core:cobble", "", "mcl_core:cobble",}, + {"mcl_core:cobble", "mesecons:redstone", "mcl_core:cobble",}, + } +}) + +-- Add entry aliases for the Help +if minetest.get_modpath("doc") then + doc.add_entry_alias("nodes", "mcl_droppers:dropper", "nodes", "mcl_droppers:dropper_down") + doc.add_entry_alias("nodes", "mcl_droppers:dropper", "nodes", "mcl_droppers:dropper_up") +end + +minetest.register_lbm({ + label = "Update dropper formspecs (0.51.0)", + name = "mcl_droppers:update_formspecs_0_51_0", + nodenames = { "mcl_droppers:dropper", "mcl_droppers:dropper_down", "mcl_droppers:dropper_up" }, + action = function(pos, node) + minetest.registered_nodes[node.name].on_construct(pos) + minetest.log("action", "[mcl_droppers] Node formspec updated at "..minetest.pos_to_string(pos)) + end, +}) + diff --git a/mods/ITEMS/mcl_chests/init.lua b/mods/ITEMS/mcl_chests/init.lua index f04fb652..496740b5 100644 --- a/mods/ITEMS/mcl_chests/init.lua +++ b/mods/ITEMS/mcl_chests/init.lua @@ -675,6 +675,16 @@ minetest.register_node("mcl_chests:ender_chest", { on_rotate = simple_rotate, }) +minetest.register_lbm({ + label = "Update ender chest + shulker box formspecs (0.51.0)", + name = "mcl_chests:update_formspecs_0_51_0", + nodenames = { "mcl_chests:ender_chest", "group:shulker_box" }, + action = function(pos, node) + minetest.registered_nodes[node.name].on_construct(pos) + minetest.log("action", "[mcl_chests] Node formspec updated at "..minetest.pos_to_string(pos)) + end, +}) + minetest.register_on_joinplayer(function(player) local inv = player:get_inventory() inv:set_size("enderchest", 9*3) diff --git a/mods/ITEMS/mcl_chests/init_new.lua b/mods/ITEMS/mcl_chests/init_new.lua new file mode 100644 index 00000000..496740b5 --- /dev/null +++ b/mods/ITEMS/mcl_chests/init_new.lua @@ -0,0 +1,878 @@ +local S = minetest.get_translator("mcl_chests") + +local no_rotate, simple_rotate +if minetest.get_modpath("screwdriver") then + no_rotate = screwdriver.disallow + simple_rotate = screwdriver.rotate_simple +end + +--[[ List of open chests. +Key: Player name +Value: + If player is using a chest: { pos = } + Otherwise: nil ]] +local open_chests = {} +-- To be called if a player opened a chest +local player_chest_open = function(player, pos) + open_chests[player:get_player_name()] = { pos = pos } +end + +-- Simple protection checking functions +local protection_check_move = function(pos, from_list, from_index, to_list, to_index, count, player) + local name = player:get_player_name() + if minetest.is_protected(pos, name) then + minetest.record_protection_violation(pos, name) + return 0 + else + return count + end +end +local protection_check_put_take = function(pos, listname, index, stack, player) + local name = player:get_player_name() + if minetest.is_protected(pos, name) then + minetest.record_protection_violation(pos, name) + return 0 + else + return stack:get_count() + end +end + +local trapped_chest_mesecons_rules = mesecon.rules.pplate + +-- To be called when a chest is closed (only relevant for trapped chest atm) +local chest_update_after_close = function(pos) + local node = minetest.get_node(pos) + + if node.name == "mcl_chests:trapped_chest_on" then + minetest.swap_node(pos, {name="mcl_chests:trapped_chest", param2 = node.param2}) + mesecon.receptor_off(pos, trapped_chest_mesecons_rules) + elseif node.name == "mcl_chests:trapped_chest_on_left" then + minetest.swap_node(pos, {name="mcl_chests:trapped_chest_left", param2 = node.param2}) + mesecon.receptor_off(pos, trapped_chest_mesecons_rules) + + local pos_other = mcl_util.get_double_container_neighbor_pos(pos, node.param2, "left") + minetest.swap_node(pos_other, {name="mcl_chests:trapped_chest_right", param2 = node.param2}) + mesecon.receptor_off(pos_other, trapped_chest_mesecons_rules) + elseif node.name == "mcl_chests:trapped_chest_on_right" then + minetest.swap_node(pos, {name="mcl_chests:trapped_chest_right", param2 = node.param2}) + mesecon.receptor_off(pos, trapped_chest_mesecons_rules) + + local pos_other = mcl_util.get_double_container_neighbor_pos(pos, node.param2, "right") + minetest.swap_node(pos_other, {name="mcl_chests:trapped_chest_left", param2 = node.param2}) + mesecon.receptor_off(pos_other, trapped_chest_mesecons_rules) + end +end + +-- To be called if a player closed a chest +local player_chest_close = function(player) + local name = player:get_player_name() + if open_chests[name] == nil then + return + end + local pos = open_chests[name].pos + chest_update_after_close(pos) + + open_chests[name] = nil +end + +-- This is a helper function to register both chests and trapped chests. Trapped chests will make use of the additional parameters +local register_chest = function(basename, desc, longdesc, usagehelp, tiles_table, hidden, mesecons, on_rightclick_addendum, on_rightclick_addendum_left, on_rightclick_addendum_right, drop, canonical_basename) +-- START OF register_chest FUNCTION BODY +if not drop then + drop = "mcl_chests:"..basename +else + drop = "mcl_chests:"..drop +end +-- The basename of the "canonical" version of the node, if set (e.g.: trapped_chest_on → trapped_chest). +-- Used to get a shared formspec ID and to swap the node back to the canonical version in on_construct. +if not canonical_basename then + canonical_basename = basename +end + +minetest.register_node("mcl_chests:"..basename, { + description = desc, + _doc_items_longdesc = longdesc, + _doc_items_usagehelp = usagehelp, + _doc_items_hidden = hidden, + tiles = tiles_table.small, + paramtype = "light", + paramtype2 = "facedir", + stack_max = 64, + drop = drop, + groups = {handy=1,axey=1, container=2, deco_block=1, material_wood=1}, + is_ground_content = false, + sounds = mcl_sounds.node_sound_wood_defaults(), + on_construct = function(pos) + local param2 = minetest.get_node(pos).param2 + local meta = minetest.get_meta(pos) + --[[ This is a workaround for Minetest issue 5894 + . + Apparently if we don't do this, double chests initially don't work when + placed at chunk borders, and some chests randomly don't work after + placing. ]] + -- FIXME: Remove this workaround when the bug has been fixed. + -- BEGIN OF WORKAROUND -- + meta:set_string("workaround", "ignore_me") + meta:set_string("workaround", nil) -- Done to keep metadata clean + -- END OF WORKAROUND -- + local inv = meta:get_inventory() + inv:set_size("main", 9*3) + --[[ The "input" list is *another* workaround (hahahaha!) around the fact that Minetest + does not support listrings to put items into an alternative list if the first one + happens to be full. See . + This list is a hidden input-only list and immediately puts items into the appropriate chest. + It is only used for listrings and hoppers. This workaround is not that bad because it only + requires a simple “inventory allows” check for large chests.]] + -- FIXME: Refactor the listrings as soon Minetest supports alternative listrings + -- BEGIN OF LISTRING WORKAROUND + inv:set_size("input", 1) + -- END OF LISTRING WORKAROUND + if minetest.get_node(mcl_util.get_double_container_neighbor_pos(pos, param2, "right")).name == "mcl_chests:"..canonical_basename then + minetest.swap_node(pos, {name="mcl_chests:"..canonical_basename.."_right",param2=param2}) + local p = mcl_util.get_double_container_neighbor_pos(pos, param2, "right") + minetest.swap_node(p, { name = "mcl_chests:"..canonical_basename.."_left", param2 = param2 }) + elseif minetest.get_node(mcl_util.get_double_container_neighbor_pos(pos, param2, "left")).name == "mcl_chests:"..canonical_basename then + minetest.swap_node(pos, {name="mcl_chests:"..canonical_basename.."_left",param2=param2}) + local p = mcl_util.get_double_container_neighbor_pos(pos, param2, "left") + minetest.swap_node(p, { name = "mcl_chests:"..canonical_basename.."_right", param2 = param2 }) + else + minetest.swap_node(pos, { name = "mcl_chests:"..canonical_basename, param2 = param2 }) + end + end, + after_dig_node = function(pos, oldnode, oldmetadata, digger) + local meta = minetest.get_meta(pos) + local meta2 = meta + meta:from_table(oldmetadata) + local inv = meta:get_inventory() + for i=1,inv:get_size("main") do + local stack = inv:get_stack("main", i) + if not stack:is_empty() then + local p = {x=pos.x+math.random(0, 10)/10-0.5, y=pos.y, z=pos.z+math.random(0, 10)/10-0.5} + minetest.add_item(p, stack) + end + end + meta:from_table(meta2:to_table()) + end, + allow_metadata_inventory_move = protection_check_move, + allow_metadata_inventory_take = protection_check_put_take, + allow_metadata_inventory_put = protection_check_put_take, + on_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player) + minetest.log("action", player:get_player_name().. + " moves stuff in chest at "..minetest.pos_to_string(pos)) + end, + on_metadata_inventory_put = function(pos, listname, index, stack, player) + minetest.log("action", player:get_player_name().. + " moves stuff to chest at "..minetest.pos_to_string(pos)) + -- BEGIN OF LISTRING WORKAROUND + if listname == "input" then + local inv = minetest.get_inventory({type="node", pos=pos}) + inv:add_item("main", stack) + end + -- END OF LISTRING WORKAROUND + end, + on_metadata_inventory_take = function(pos, listname, index, stack, player) + minetest.log("action", player:get_player_name().. + " takes stuff from chest at "..minetest.pos_to_string(pos)) + end, + _mcl_blast_resistance = 2.5, + _mcl_hardness = 2.5, + + on_rightclick = function(pos, node, clicker) + minetest.show_formspec(clicker:get_player_name(), + "mcl_chests:"..canonical_basename.."_"..pos.x.."_"..pos.y.."_"..pos.z, + "size[9,8.75]".. + mcl_vars.inventory_header.. + "background[-0.19,-0.25;9.41,10.48;mcl_chests_inventory_chest.png]".. + "label[0,0;"..minetest.formspec_escape(minetest.colorize("#313131", S("Chest"))).."]".. + "list[nodemeta:"..pos.x..","..pos.y..","..pos.z..";main;0,0.5;9,3;]".. + "label[0,4.0;"..minetest.formspec_escape(minetest.colorize("#313131", S("Inventory"))).."]".. + "list[current_player;main;0,4.5;9,3;9]".. + "list[current_player;main;0,7.74;9,1;]".. + "listring[nodemeta:"..pos.x..","..pos.y..","..pos.z..";main]".. + "listring[current_player;main]") + + if on_rightclick_addendum then + on_rightclick_addendum(pos, node, clicker) + end + end, + + on_destruct = function(pos) + local players = minetest.get_connected_players() + for p=1, #players do + minetest.close_formspec(players[p]:get_player_name(), "mcl_chests:"..canonical_basename.."_"..pos.x.."_"..pos.y.."_"..pos.z) + end + end, + mesecons = mesecons, + on_rotate = simple_rotate, +}) + +minetest.register_node("mcl_chests:"..basename.."_left", { + tiles = tiles_table.left, + paramtype = "light", + paramtype2 = "facedir", + groups = {handy=1,axey=1, container=5,not_in_creative_inventory=1, material_wood=1}, + drop = drop, + is_ground_content = false, + sounds = mcl_sounds.node_sound_wood_defaults(), + on_construct = function(pos) + local n = minetest.get_node(pos) + local param2 = n.param2 + local p = mcl_util.get_double_container_neighbor_pos(pos, param2, "left") + if not p or minetest.get_node(p).name ~= "mcl_chests:"..canonical_basename.."_right" then + n.name = "mcl_chests:"..canonical_basename + minetest.swap_node(pos, n) + end + end, + on_destruct = function(pos) + local n = minetest.get_node(pos) + if n.name == "mcl_chests:"..basename then + return + end + + local players = minetest.get_connected_players() + for p=1, #players do + minetest.close_formspec(players[p]:get_player_name(), "mcl_chests:"..canonical_basename.."_"..pos.x.."_"..pos.y.."_"..pos.z) + end + + local param2 = n.param2 + local p = mcl_util.get_double_container_neighbor_pos(pos, param2, "left") + if not p or minetest.get_node(p).name ~= "mcl_chests:"..basename.."_right" then + return + end + for pl=1, #players do + minetest.close_formspec(players[pl]:get_player_name(), "mcl_chests:"..canonical_basename.."_"..p.x.."_"..p.y.."_"..p.z) + end + minetest.swap_node(p, { name = "mcl_chests:"..basename, param2 = param2 }) + end, + after_dig_node = function(pos, oldnode, oldmetadata, digger) + local meta = minetest.get_meta(pos) + local meta2 = meta + meta:from_table(oldmetadata) + local inv = meta:get_inventory() + for i=1,inv:get_size("main") do + local stack = inv:get_stack("main", i) + if not stack:is_empty() then + local p = {x=pos.x+math.random(0, 10)/10-0.5, y=pos.y, z=pos.z+math.random(0, 10)/10-0.5} + minetest.add_item(p, stack) + end + end + meta:from_table(meta2:to_table()) + end, + allow_metadata_inventory_move = protection_check_move, + allow_metadata_inventory_take = protection_check_put_take, + allow_metadata_inventory_put = function(pos, listname, index, stack, player) + local name = player:get_player_name() + if minetest.is_protected(pos, name) then + minetest.record_protection_violation(pos, name) + return 0 + -- BEGIN OF LISTRING WORKAROUND + elseif listname == "input" then + local inv = minetest.get_inventory({type="node", pos=pos}) + if inv:room_for_item("main", stack) then + return -1 + else + local other_pos = mcl_util.get_double_container_neighbor_pos(pos, minetest.get_node(pos).param2, "left") + local other_inv = minetest.get_inventory({type="node", pos=other_pos}) + if other_inv:room_for_item("main", stack) then + return -1 + else + return 0 + end + end + -- END OF LISTRING WORKAROUND + else + return stack:get_count() + end + end, + on_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player) + minetest.log("action", player:get_player_name().. + " moves stuff in chest at "..minetest.pos_to_string(pos)) + end, + on_metadata_inventory_put = function(pos, listname, index, stack, player) + minetest.log("action", player:get_player_name().. + " moves stuff to chest at "..minetest.pos_to_string(pos)) + -- BEGIN OF LISTRING WORKAROUND + if listname == "input" then + local inv = minetest.get_inventory({type="node", pos=pos}) + local leftover = inv:add_item("main", stack) + if not leftover:is_empty() then + local other_pos = mcl_util.get_double_container_neighbor_pos(pos, minetest.get_node(pos).param2, "left") + local other_inv = minetest.get_inventory({type="node", pos=other_pos}) + other_inv:add_item("main", leftover) + end + end + -- END OF LISTRING WORKAROUND + end, + on_metadata_inventory_take = function(pos, listname, index, stack, player) + minetest.log("action", player:get_player_name().. + " takes stuff from chest at "..minetest.pos_to_string(pos)) + end, + _mcl_blast_resistance = 2.5, + _mcl_hardness = 2.5, + + on_rightclick = function(pos, node, clicker) + local pos_other = mcl_util.get_double_container_neighbor_pos(pos, node.param2, "left") + + minetest.show_formspec(clicker:get_player_name(), + "mcl_chests:"..canonical_basename.."_"..pos.x.."_"..pos.y.."_"..pos.z, + "size[9,11.5]".. + "background[-0.19,-0.25;9.41,12.5;mcl_chests_inventory_chest_large.png]".. + mcl_vars.inventory_header.. + "label[0,0;"..minetest.formspec_escape(minetest.colorize("#313131", S("Large Chest"))).."]".. + "list[nodemeta:"..pos.x..","..pos.y..","..pos.z..";main;0,0.5;9,3;]".. + "list[nodemeta:"..pos_other.x..","..pos_other.y..","..pos_other.z..";main;0,3.5;9,3;]".. + "label[0,7;"..minetest.formspec_escape(minetest.colorize("#313131", S("Inventory"))).."]".. + "list[current_player;main;0,7.5;9,3;9]".. + "list[current_player;main;0,10.75;9,1;]".. + -- BEGIN OF LISTRING WORKAROUND + "listring[current_player;main]".. + "listring[nodemeta:"..pos.x..","..pos.y..","..pos.z..";input]".. + -- END OF LISTRING WORKAROUND + "listring[current_player;main]".. + "listring[nodemeta:"..pos.x..","..pos.y..","..pos.z..";main]".. + "listring[current_player;main]".. + "listring[nodemeta:"..pos_other.x..","..pos_other.y..","..pos_other.z..";main]") + + if on_rightclick_addendum_left then + on_rightclick_addendum_left(pos, node, clicker) + end + end, + mesecons = mesecons, + on_rotate = no_rotate, +}) + +minetest.register_node("mcl_chests:"..basename.."_right", { + tiles = tiles_table.right, + paramtype = "light", + paramtype2 = "facedir", + groups = {handy=1,axey=1, container=6,not_in_creative_inventory=1, material_wood=1}, + drop = drop, + is_ground_content = false, + sounds = mcl_sounds.node_sound_wood_defaults(), + on_construct = function(pos) + local n = minetest.get_node(pos) + local param2 = n.param2 + local p = mcl_util.get_double_container_neighbor_pos(pos, param2, "right") + if not p or minetest.get_node(p).name ~= "mcl_chests:"..canonical_basename.."_left" then + n.name = "mcl_chests:"..canonical_basename + minetest.swap_node(pos, n) + end + end, + on_destruct = function(pos) + local n = minetest.get_node(pos) + if n.name == "mcl_chests:"..basename then + return + end + + local players = minetest.get_connected_players() + for p=1, #players do + minetest.close_formspec(players[p]:get_player_name(), "mcl_chests:"..canonical_basename.."_"..pos.x.."_"..pos.y.."_"..pos.z) + end + + local param2 = n.param2 + local p = mcl_util.get_double_container_neighbor_pos(pos, param2, "right") + if not p or minetest.get_node(p).name ~= "mcl_chests:"..basename.."_left" then + return + end + for pl=1, #players do + minetest.close_formspec(players[pl]:get_player_name(), "mcl_chests:"..canonical_basename.."_"..p.x.."_"..p.y.."_"..p.z) + end + minetest.swap_node(p, { name = "mcl_chests:"..basename, param2 = param2 }) + end, + after_dig_node = function(pos, oldnode, oldmetadata, digger) + local meta = minetest.get_meta(pos) + local meta2 = meta + meta:from_table(oldmetadata) + local inv = meta:get_inventory() + for i=1,inv:get_size("main") do + local stack = inv:get_stack("main", i) + if not stack:is_empty() then + local p = {x=pos.x+math.random(0, 10)/10-0.5, y=pos.y, z=pos.z+math.random(0, 10)/10-0.5} + minetest.add_item(p, stack) + end + end + meta:from_table(meta2:to_table()) + end, + allow_metadata_inventory_move = protection_check_move, + allow_metadata_inventory_take = protection_check_put_take, + allow_metadata_inventory_put = function(pos, listname, index, stack, player) + local name = player:get_player_name() + if minetest.is_protected(pos, name) then + minetest.record_protection_violation(pos, name) + return 0 + -- BEGIN OF LISTRING WORKAROUND + elseif listname == "input" then + local other_pos = mcl_util.get_double_container_neighbor_pos(pos, minetest.get_node(pos).param2, "right") + local other_inv = minetest.get_inventory({type="node", pos=other_pos}) + if other_inv:room_for_item("main", stack) then + return -1 + else + local inv = minetest.get_inventory({type="node", pos=pos}) + if inv:room_for_item("main", stack) then + return -1 + else + return 0 + end + end + -- END OF LISTRING WORKAROUND + else + return stack:get_count() + end + end, + on_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player) + minetest.log("action", player:get_player_name().. + " moves stuff in chest at "..minetest.pos_to_string(pos)) + end, + on_metadata_inventory_put = function(pos, listname, index, stack, player) + minetest.log("action", player:get_player_name().. + " moves stuff to chest at "..minetest.pos_to_string(pos)) + -- BEGIN OF LISTRING WORKAROUND + if listname == "input" then + local other_pos = mcl_util.get_double_container_neighbor_pos(pos, minetest.get_node(pos).param2, "right") + local other_inv = minetest.get_inventory({type="node", pos=other_pos}) + local leftover = other_inv:add_item("main", stack) + if not leftover:is_empty() then + local inv = minetest.get_inventory({type="node", pos=pos}) + inv:add_item("main", leftover) + end + end + -- END OF LISTRING WORKAROUND + end, + on_metadata_inventory_take = function(pos, listname, index, stack, player) + minetest.log("action", player:get_player_name().. + " takes stuff from chest at "..minetest.pos_to_string(pos)) + end, + _mcl_blast_resistance = 2.5, + _mcl_hardness = 2.5, + + on_rightclick = function(pos, node, clicker) + local pos_other = mcl_util.get_double_container_neighbor_pos(pos, node.param2, "right") + + minetest.show_formspec(clicker:get_player_name(), + "mcl_chests:"..canonical_basename.."_"..pos.x.."_"..pos.y.."_"..pos.z, + + "size[9,11.5]".. + "background[-0.19,-0.25;9.41,12.5;mcl_chests_inventory_chest_large.png]".. + mcl_vars.inventory_header.. + "label[0,0;"..minetest.formspec_escape(minetest.colorize("#313131", S("Large Chest"))).."]".. + "list[nodemeta:"..pos_other.x..","..pos_other.y..","..pos_other.z..";main;0,0.5;9,3;]".. + "list[nodemeta:"..pos.x..","..pos.y..","..pos.z..";main;0,3.5;9,3;]".. + "label[0,7;"..minetest.formspec_escape(minetest.colorize("#313131", S("Inventory"))).."]".. + "list[current_player;main;0,7.5;9,3;9]".. + "list[current_player;main;0,10.75;9,1;]".. + -- BEGIN OF LISTRING WORKAROUND + "listring[current_player;main]".. + "listring[nodemeta:"..pos.x..","..pos.y..","..pos.z..";input]".. + -- END OF LISTRING WORKAROUND + "listring[current_player;main]".. + "listring[nodemeta:"..pos_other.x..","..pos_other.y..","..pos_other.z..";main]".. + "listring[current_player;main]".. + "listring[nodemeta:"..pos.x..","..pos.y..","..pos.z..";main]") + + if on_rightclick_addendum_right then + on_rightclick_addendum_right(pos, node, clicker) + end + end, + mesecons = mesecons, + on_rotate = no_rotate, +}) + +if minetest.get_modpath("doc") then + doc.add_entry_alias("nodes", "mcl_chests:"..basename, "nodes", "mcl_chests:"..basename.."_left") + doc.add_entry_alias("nodes", "mcl_chests:"..basename, "nodes", "mcl_chests:"..basename.."_right") +end + +-- END OF register_chest FUNCTION BODY +end + +local chestusage = S("To access its inventory, rightclick it. When broken, the items will drop out.") + +register_chest("chest", + S("Chest"), + S("Chests are containers which provide 27 inventory slots. Chests can be turned into large chests with double the capacity by placing two chests next to each other."), + chestusage, + { + small = {"default_chest_top.png", "mcl_chests_chest_bottom.png", + "mcl_chests_chest_right.png", "mcl_chests_chest_left.png", + "mcl_chests_chest_back.png", "default_chest_front.png"}, + left = {"default_chest_top_big.png", "default_chest_top_big.png", + "mcl_chests_chest_right.png", "mcl_chests_chest_left.png", + "default_chest_side_big.png^[transformFX", "default_chest_front_big.png"}, + right = {"default_chest_top_big.png^[transformFX", "default_chest_top_big.png^[transformFX", + "mcl_chests_chest_right.png", "mcl_chests_chest_left.png", + "default_chest_side_big.png", "default_chest_front_big.png^[transformFX"}, + }, + false +) + +local traptiles = { + small = {"mcl_chests_chest_trapped_top.png", "mcl_chests_chest_trapped_bottom.png", + "mcl_chests_chest_trapped_right.png", "mcl_chests_chest_trapped_left.png", + "mcl_chests_chest_trapped_back.png", "mcl_chests_chest_trapped_front.png"}, + left = {"mcl_chests_chest_trapped_top_big.png", "mcl_chests_chest_trapped_top_big.png", + "mcl_chests_chest_trapped_right.png", "mcl_chests_chest_trapped_left.png", + "mcl_chests_chest_trapped_side_big.png^[transformFX", "mcl_chests_chest_trapped_front_big.png"}, + right = {"mcl_chests_chest_trapped_top_big.png^[transformFX", "mcl_chests_chest_trapped_top_big.png^[transformFX", + "mcl_chests_chest_trapped_right.png", "mcl_chests_chest_trapped_left.png", + "mcl_chests_chest_trapped_side_big.png", "mcl_chests_chest_trapped_front_big.png^[transformFX"}, +} + +register_chest("trapped_chest", + S("Trapped Chest"), + S("A trapped chest is a container which provides 27 inventory slots. When it is opened, it sends a redstone signal to its adjacent blocks as long it stays open. Trapped chests can be turned into large trapped chests with double the capacity by placing two trapped chests next to each other."), + chestusage, + traptiles, + nil, + {receptor = { + state = mesecon.state.off, + rules = trapped_chest_mesecons_rules, + }}, + function(pos, node, clicker) + minetest.swap_node(pos, {name="mcl_chests:trapped_chest_on", param2 = node.param2}) + mesecon.receptor_on(pos, trapped_chest_mesecons_rules) + player_chest_open(clicker, pos) + end, + function(pos, node, clicker) + local meta = minetest.get_meta(pos) + meta:set_int("players", 1) + + minetest.swap_node(pos, {name="mcl_chests:trapped_chest_on_left", param2 = node.param2}) + mesecon.receptor_on(pos, trapped_chest_mesecons_rules) + + local pos_other = mcl_util.get_double_container_neighbor_pos(pos, node.param2, "left") + minetest.swap_node(pos_other, {name="mcl_chests:trapped_chest_on_right", param2 = node.param2}) + mesecon.receptor_on(pos_other, trapped_chest_mesecons_rules) + + player_chest_open(clicker, pos) + end, + function(pos, node, clicker) + local pos_other = mcl_util.get_double_container_neighbor_pos(pos, node.param2, "right") + + minetest.swap_node(pos, {name="mcl_chests:trapped_chest_on_right", param2 = node.param2}) + mesecon.receptor_on(pos, trapped_chest_mesecons_rules) + + minetest.swap_node(pos_other, {name="mcl_chests:trapped_chest_on_left", param2 = node.param2}) + mesecon.receptor_on(pos_other, trapped_chest_mesecons_rules) + + player_chest_open(clicker, pos) + end +) + +register_chest("trapped_chest_on", + nil, nil, nil, traptiles, true, + {receptor = { + state = mesecon.state.on, + rules = trapped_chest_mesecons_rules, + }}, + function(pos, node, clicker) + player_chest_open(clicker, pos) + end, + function(pos, node, clicker) + player_chest_open(clicker, pos) + end, + function(pos, node, clicker) + player_chest_open(clicker, pos) + end, + "trapped_chest", + "trapped_chest" +) + +local function close_if_trapped_chest(pos, player) + local node = minetest.get_node(pos) + + if node.name == "mcl_chests:trapped_chest_on" then + minetest.swap_node(pos, {name="mcl_chests:trapped_chest", param2 = node.param2}) + mesecon.receptor_off(pos, trapped_chest_mesecons_rules) + + player_chest_close(player) + elseif node.name == "mcl_chests:trapped_chest_on_left" then + minetest.swap_node(pos, {name="mcl_chests:trapped_chest_left", param2 = node.param2}) + mesecon.receptor_off(pos, trapped_chest_mesecons_rules) + + local pos_other = mcl_util.get_double_container_neighbor_pos(pos, node.param2, "left") + minetest.swap_node(pos_other, {name="mcl_chests:trapped_chest_right", param2 = node.param2}) + mesecon.receptor_off(pos_other, trapped_chest_mesecons_rules) + + player_chest_close(player) + elseif node.name == "mcl_chests:trapped_chest_on_right" then + minetest.swap_node(pos, {name="mcl_chests:trapped_chest_right", param2 = node.param2}) + mesecon.receptor_off(pos, trapped_chest_mesecons_rules) + + local pos_other = mcl_util.get_double_container_neighbor_pos(pos, node.param2, "right") + minetest.swap_node(pos_other, {name="mcl_chests:trapped_chest_left", param2 = node.param2}) + mesecon.receptor_off(pos_other, trapped_chest_mesecons_rules) + + player_chest_close(player) + end +end + +-- Disable trapped chest when it has been closed +minetest.register_on_player_receive_fields(function(player, formname, fields) + if formname:find("mcl_chests:trapped_chest_") == 1 then + if fields.quit then + player_chest_close(player) + end + end +end) + +minetest.register_on_leaveplayer(function(player) + player_chest_close(player) +end) + +minetest.register_craft({ + output = 'mcl_chests:chest', + recipe = { + {'group:wood', 'group:wood', 'group:wood'}, + {'group:wood', '', 'group:wood'}, + {'group:wood', 'group:wood', 'group:wood'}, + } +}) + +minetest.register_craft({ + type = 'fuel', + recipe = 'mcl_chests:chest', + burntime = 15 +}) + +minetest.register_craft({ + type = 'fuel', + recipe = 'mcl_chests:trapped_chest', + burntime = 15 +}) + +minetest.register_node("mcl_chests:ender_chest", { + description = S("Ender Chest"), + _doc_items_longdesc = S("Ender chests grant you access to a single personal interdimensional inventory with 27 slots. This inventory is the same no matter from which ender chest you access it from. If you put one item into one ender chest, you will find it in all other ender chests. Each player will only see their own items, but not the items of other players."), + _doc_items_usagehelp = S("Rightclick the ender chest to access your personal interdimensional inventory."), + tiles = {"mcl_chests_ender_chest_top.png", "mcl_chests_ender_chest_bottom.png", + "mcl_chests_ender_chest_right.png", "mcl_chests_ender_chest_left.png", + "mcl_chests_ender_chest_back.png", "mcl_chests_ender_chest_front.png"}, + -- Note: The “container” group is missing here because the ender chest does not + -- have an inventory on its own + groups = {pickaxey=1, deco_block=1, material_stone=1}, + is_ground_content = false, + paramtype = "light", + light_source = 7, + paramtype2 = "facedir", + sounds = mcl_sounds.node_sound_stone_defaults(), + drop = "mcl_core:obsidian 8", + on_construct = function(pos) + local meta = minetest.get_meta(pos) + meta:set_string("formspec", + "size[9,8.75]".. + mcl_vars.inventory_header.. + "background[-0.19,-0.25;9.41,10.48;mcl_chests_inventory_chest.png]".. + "label[0,0;"..minetest.formspec_escape(minetest.colorize("#313131", S("Ender Chest"))).."]".. + "list[current_player;enderchest;0,0.5;9,3;]".. + "label[0,4.0;"..minetest.formspec_escape(minetest.colorize("#313131", S("Inventory"))).."]".. + "list[current_player;main;0,4.5;9,3;9]".. + "list[current_player;main;0,7.74;9,1;]".. + "listring[current_player;enderchest]".. + "listring[current_player;main]") + end, + _mcl_blast_resistance = 3000, + _mcl_hardness = 22.5, + on_rotate = simple_rotate, +}) + +minetest.register_lbm({ + label = "Update ender chest + shulker box formspecs (0.51.0)", + name = "mcl_chests:update_formspecs_0_51_0", + nodenames = { "mcl_chests:ender_chest", "group:shulker_box" }, + action = function(pos, node) + minetest.registered_nodes[node.name].on_construct(pos) + minetest.log("action", "[mcl_chests] Node formspec updated at "..minetest.pos_to_string(pos)) + end, +}) + +minetest.register_on_joinplayer(function(player) + local inv = player:get_inventory() + inv:set_size("enderchest", 9*3) +end) + +minetest.register_craft({ + output = 'mcl_chests:ender_chest', + recipe = { + {'mcl_core:obsidian', 'mcl_core:obsidian', 'mcl_core:obsidian'}, + {'mcl_core:obsidian', 'mcl_end:ender_eye', 'mcl_core:obsidian'}, + {'mcl_core:obsidian', 'mcl_core:obsidian', 'mcl_core:obsidian'}, + } +}) + +-- Shulker boxes +local boxtypes = { + white = S("White Shulker Box"), + grey = S("Light Grey Shulker Box"), + orange = S("Orange Shulker Box"), + cyan = S("Cyan Shulker Box"), + magenta = S("Magenta Shulker Box"), + violet = S("Purple Shulker Box"), + lightblue = S("Light Blue Shulker Box"), + blue = S("Blue Shulker Box"), + yellow = S("Yellow Shulker Box"), + brown = S("Brown Shulker Box"), + green = S("Lime Shulker Box"), + dark_green = S("Green Shulker Box"), + pink = S("Pink Shulker Box"), + red = S("Red Shulker Box"), + dark_grey = S("Grey Shulker Box"), + black = S("Black Shulker Box"), +} + +local shulker_mob_textures = { + white = "mobs_mc_shulker_white.png", + grey = "mobs_mc_shulker_silver.png", + orange = "mobs_mc_shulker_orange.png", + cyan = "mobs_mc_shulker_cyan.png", + magenta = "mobs_mc_shulker_magenta.png", + violet = "mobs_mc_shulker_purple.png", + lightblue = "mobs_mc_shulker_light_blue.png", + blue = "mobs_mc_shulker_blue.png", + yellow = "mobs_mc_shulker_yellow.png", + brown = "mobs_mc_shulker_brown.png", + green = "mobs_mc_shulker_lime.png", + dark_green = "mobs_mc_shulker_green.png", + pink = "mobs_mc_shulker_pink.png", + red = "mobs_mc_shulker_red.png", + dark_grey = "mobs_mc_shulker_gray.png", + black = "mobs_mc_shulker_black.png", +} + +for color, desc in pairs(boxtypes) do + local mob_texture = shulker_mob_textures[color] + minetest.register_node("mcl_chests:"..color.."_shulker_box", { + description = desc, + _doc_items_longdesc = S("A shulker box is a portable container which provides 27 inventory slots for any item except shulker boxes. Shulker boxes keep their inventory when broken, so shulker boxes as well as their contents can be taken as a single item. Shulker boxes come in many different colors."), + _doc_items_usagehelp = S("To access the inventory of a shulker box, place and right-click it. To take a shulker box and its contents with you, just break and collect it, the items will not fall out."), + tiles = { + "mcl_chests_"..color.."_shulker_box_top.png", -- top + "[combine:16x16:-32,-28="..mob_texture, -- bottom + "[combine:16x16:0,-36="..mob_texture..":0,-16="..mob_texture, -- side + "[combine:16x16:-32,-36="..mob_texture..":-32,-16="..mob_texture, -- side + "[combine:16x16:-16,-36="..mob_texture..":-16,-16="..mob_texture, -- side + "[combine:16x16:-48,-36="..mob_texture..":-48,-16="..mob_texture, -- side + }, + groups = {handy=1,pickaxey=1, container=3, deco_block=1, dig_by_piston=1, shulker_box=1}, + is_ground_content = false, + sounds = mcl_sounds.node_sound_stone_defaults(), + stack_max = 1, + drop = "", + paramtype = "light", + paramtype2 = "facedir", +-- TODO: Make shulker boxes rotatable +-- This doesn't work, it just destroys the inventory: +-- on_place = minetest.rotate_node, + on_construct = function(pos) + local meta = minetest.get_meta(pos) + meta:set_string("formspec", + "size[9,8.75]".. + mcl_vars.inventory_header.. + "background[-0.19,-0.25;9.41,10.48;mcl_chests_inventory_chest.png]".. + "label[0,0;"..minetest.formspec_escape(minetest.colorize("#313131", S("Shulker Box"))).."]".. + "list[current_name;main;0,0.5;9,3;]".. + "label[0,4.0;"..minetest.formspec_escape(minetest.colorize("#313131", S("Inventory"))).."]".. + "list[current_player;main;0,4.5;9,3;9]".. + "list[current_player;main;0,7.74;9,1;]".. + "listring[current_name;main]".. + "listring[current_player;main]") + local inv = meta:get_inventory() + inv:set_size("main", 9*3) + end, + _on_dispense = function(stack, pos, droppos, dropnode, dropdir) + -- Place shulker box as node + if minetest.registered_nodes[dropnode.name].buildable_to then + minetest.set_node(droppos, {name = stack:get_name(), param2 = minetest.dir_to_facedir(dropdir)}) + local imeta = stack:get_metadata() + local iinv_main = minetest.deserialize(imeta) + local ninv = minetest.get_inventory({type="node", pos=droppos}) + ninv:set_list("main", iinv_main) + stack:take_item() + end + return stack + end, + after_place_node = function(pos, placer, itemstack, pointed_thing) + local nmeta = minetest.get_meta(pos) + local ninv = nmeta:get_inventory() + local imeta = itemstack:get_metadata() + local iinv_main = minetest.deserialize(imeta) + ninv:set_list("main", iinv_main) + ninv:set_size("main", 9*3) + if minetest.settings:get_bool("creative_mode") then + if not ninv:is_empty("main") then + return nil + else + return itemstack + end + else + return nil + end + end, + on_destruct = function(pos) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + local items = {} + for i=1, inv:get_size("main") do + local stack = inv:get_stack("main", i) + items[i] = stack:to_string() + end + local data = minetest.serialize(items) + local boxitem = ItemStack("mcl_chests:"..color.."_shulker_box") + boxitem:set_metadata(data) + + if minetest.settings:get_bool("creative_mode") then + if not inv:is_empty("main") then + minetest.add_item(pos, boxitem) + end + else + minetest.add_item(pos, boxitem) + end + end, + allow_metadata_inventory_move = protection_check_move, + allow_metadata_inventory_take = protection_check_put_take, + allow_metadata_inventory_put = function(pos, listname, index, stack, player) + local name = player:get_player_name() + if minetest.is_protected(pos, name) then + minetest.record_protection_violation(pos, name) + return 0 + end + -- Do not allow to place shulker boxes into shulker boxes + local group = minetest.get_item_group(stack:get_name(), "shulker_box") + if group == 0 or group == nil then + return stack:get_count() + else + return 0 + end + end, + _mcl_blast_resistance = 30, + _mcl_hardness = 6, + }) + + minetest.register_craft({ + type = "shapeless", + output = 'mcl_chests:'..color..'_shulker_box', + recipe = { 'group:shulker_box', 'mcl_dye:'..color } + }) +end + +minetest.register_craft({ + output = 'mcl_chests:violet_shulker_box', + recipe = { + {'mcl_mobitems:shulker_shell'}, + {'mcl_chests:chest'}, + {'mcl_mobitems:shulker_shell'}, + } +}) + +minetest.register_lbm({ + -- Disable active/open trapped chests when loaded because nobody could + -- have them open at loading time. + -- Fixes redstone weirdness. + label = "Disable active trapped chests", + name = "mcl_chests:reset_trapped_chests", + nodenames = { "mcl_chests:trapped_chest_on", "mcl_chests:trapped_chest_on_left", "mcl_chests:trapped_chest_on_right" }, + run_at_every_load = true, + action = function(pos, node) + minetest.log("error", "lbm!" ..minetest.pos_to_string(pos)) + chest_update_after_close(pos) + end, +}) From 5647fbf6e0a090d12264915b761861270b8c5b78 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Thu, 21 Mar 2019 20:13:35 +0100 Subject: [PATCH 210/737] Add German translation for mcl_cocoas --- mods/ITEMS/mcl_cocoas/init.lua | 12 ++++++------ mods/ITEMS/mcl_cocoas/locale/mcl_cocoas.de.tr | 6 ++++++ mods/ITEMS/mcl_cocoas/locale/template.txt | 10 +++++----- 3 files changed, 17 insertions(+), 11 deletions(-) create mode 100644 mods/ITEMS/mcl_cocoas/locale/mcl_cocoas.de.tr diff --git a/mods/ITEMS/mcl_cocoas/init.lua b/mods/ITEMS/mcl_cocoas/init.lua index cd780b91..ae9d5cf1 100644 --- a/mods/ITEMS/mcl_cocoas/init.lua +++ b/mods/ITEMS/mcl_cocoas/init.lua @@ -72,9 +72,9 @@ end --[[ TODO: Use a mesh for cocoas for perfect texture compability. ]] local crop_def = { - description = S("Premature Cocoa"), + description = S("Premature Cocoa Pod"), _doc_items_create_entry = true, - _doc_items_longdesc = S("Cocoas are plants which grow on the side of jungle trees in 3 stages."), + _doc_items_longdesc = S("Cocoa pods grow on the side of jungle trees in 3 stages."), drawtype = "nodebox", tiles = { "[combine:16x16:6,1=mcl_cocoas_cocoa_stage_0.png", "[combine:16x16:6,11=mcl_cocoas_cocoa_stage_0.png", @@ -117,7 +117,7 @@ local crop_def = { -- 2nd stage minetest.register_node("mcl_cocoas:cocoa_1", table.copy(crop_def)) -crop_def.description = S("Medium Cocoa") +crop_def.description = S("Medium Cocoa Pod") crop_def._doc_items_create_entry = false crop_def.groups.cocoa = 2 crop_def.tiles = { @@ -148,8 +148,8 @@ crop_def.selection_box = { minetest.register_node("mcl_cocoas:cocoa_2", table.copy(crop_def)) -- Final stage -crop_def.description = S("Mature Cocoa") -crop_def._doc_items_longdesc = S("A mature cocoa is a plant which grew on a jungle tree to its full size and it is ready to be harvested for cocoa beans. It won't grow any further.") +crop_def.description = S("Mature Cocoa Pod") +crop_def._doc_items_longdesc = S("A mature cocoa pod grew on a jungle tree to its full size and it is ready to be harvested for cocoa beans. It won't grow any further.") crop_def._doc_items_create_entry = true crop_def.groups.cocoa = 3 crop_def.tiles = { @@ -183,7 +183,7 @@ minetest.register_node("mcl_cocoas:cocoa_3", table.copy(crop_def)) minetest.register_abm({ - label = "Cocoa growth", + label = "Cocoa pod growth", nodenames = {"mcl_cocoas:cocoa_1", "mcl_cocoas:cocoa_2"}, -- Same as potatoes -- TODO: Tweak/balance the growth speed diff --git a/mods/ITEMS/mcl_cocoas/locale/mcl_cocoas.de.tr b/mods/ITEMS/mcl_cocoas/locale/mcl_cocoas.de.tr new file mode 100644 index 00000000..479e3845 --- /dev/null +++ b/mods/ITEMS/mcl_cocoas/locale/mcl_cocoas.de.tr @@ -0,0 +1,6 @@ +# textdomain: mcl_cocoas +Premature Cocoa Pod=Junge Kakaoschote +Cocoa pods grow on the side of jungle trees in 3 stages.=Kakaoschoten wachsen an der Seite von Dschungelbäumen in 3 Stufen. +Medium Cocoa Pod=Mittelgroße Kakaoschote +Mature Cocoa Pod=Ausgewachsene Kakaoschote +A mature cocoa pod grew on a jungle tree to its full size and it is ready to be harvested for cocoa beans. It won't grow any further.=Eine ausgewachsene Kakaoschote wuchs an einem Dschugelbaum zur vollen Größe heran. Sie ist erntereif und kann für Kakaobohnen geerntet werden. Sie wird nicht weiter wachsen. diff --git a/mods/ITEMS/mcl_cocoas/locale/template.txt b/mods/ITEMS/mcl_cocoas/locale/template.txt index ff9fb588..f68318ca 100644 --- a/mods/ITEMS/mcl_cocoas/locale/template.txt +++ b/mods/ITEMS/mcl_cocoas/locale/template.txt @@ -1,6 +1,6 @@ # textdomain: mcl_cocoas -Premature Cocoa= -Cocoas are plants which grow on the side of jungle trees in 3 stages.= -Medium Cocoa= -Mature Cocoa= -A mature cocoa is a plant which grew on a jungle tree to its full size and it is ready to be harvested for cocoa beans. It won't grow any further.= +Premature Cocoa Pod= +Cocoa pods grow on the side of jungle trees in 3 stages.= +Medium Cocoa Pod= +Mature Cocoa Pod= +A mature cocoa pod grew on a jungle tree to its full size and it is ready to be harvested for cocoa beans. It won't grow any further.= From c49efcf9ade3223676af718e769191e1740711c5 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Fri, 22 Mar 2019 11:20:34 +0100 Subject: [PATCH 211/737] Fix floating vines rarely generating in jungles --- mods/MAPGEN/mcl_mapgen_core/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/MAPGEN/mcl_mapgen_core/init.lua b/mods/MAPGEN/mcl_mapgen_core/init.lua index b537be2a..7d3fbf21 100644 --- a/mods/MAPGEN/mcl_mapgen_core/init.lua +++ b/mods/MAPGEN/mcl_mapgen_core/init.lua @@ -1392,7 +1392,7 @@ local function generate_tree_decorations(minp, maxp, seed, data, param2_data, ar -- Pass 1: Generate cocoas at jungle trees for n = 1, #jungletree do - pos = jungletree[n] + pos = table.copy(jungletree[n]) treepos = table.copy(pos) if minetest.find_node_near(pos, 1, {"mcl_core:jungleleaves"}) then From c78b1d13548d68837db9a51b109a544c66394417 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Fri, 22 Mar 2019 22:02:23 +0100 Subject: [PATCH 212/737] Add missing translation for pumpkin usagehelp --- mods/ITEMS/mcl_farming/locale/mcl_farming.de.tr | 1 + mods/ITEMS/mcl_farming/locale/template.txt | 1 + mods/ITEMS/mcl_farming/pumpkin.lua | 2 +- 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_farming/locale/mcl_farming.de.tr b/mods/ITEMS/mcl_farming/locale/mcl_farming.de.tr index 4d05bf80..90226967 100644 --- a/mods/ITEMS/mcl_farming/locale/mcl_farming.de.tr +++ b/mods/ITEMS/mcl_farming/locale/mcl_farming.de.tr @@ -89,3 +89,4 @@ Cookie=Keks Bread=Brot Hay Bale=Heuballen Hay bales are decorative blocks made from wheat.=Heuballen sind dekorative Blöcke, die aus Weizen gemacht sind. +To carve a face into the pumpkin, use the shears on the side you want to carve.=Um ein Gesicht in den Kürbis zu schnitzen, benutzen Sie die Schere an der Seite, die Sie schnitzen wollen. diff --git a/mods/ITEMS/mcl_farming/locale/template.txt b/mods/ITEMS/mcl_farming/locale/template.txt index 089fd506..81a52b01 100644 --- a/mods/ITEMS/mcl_farming/locale/template.txt +++ b/mods/ITEMS/mcl_farming/locale/template.txt @@ -89,3 +89,4 @@ Cookie= Bread= Hay Bale= Hay bales are decorative blocks made from wheat.= +To carve a face into the pumpkin, use the shears on the side you want to carve.= diff --git a/mods/ITEMS/mcl_farming/pumpkin.lua b/mods/ITEMS/mcl_farming/pumpkin.lua index acab756f..e40d267f 100644 --- a/mods/ITEMS/mcl_farming/pumpkin.lua +++ b/mods/ITEMS/mcl_farming/pumpkin.lua @@ -87,7 +87,7 @@ local stem_def = { local pumpkin_base_def = { description = S("Faceless Pumpkin"), _doc_items_longdesc = S("A faceless pumpkin is a decorative block. It can be carved with shears to obtain pumpkin seeds."), - _doc_items_usagehelp = "To carve a face into the pumpkin, use the shears on the side you want to carve.", + _doc_items_usagehelp = S("To carve a face into the pumpkin, use the shears on the side you want to carve."), stack_max = 64, paramtype2 = "facedir", tiles = {"farming_pumpkin_top.png", "farming_pumpkin_top.png", "farming_pumpkin_side.png"}, From 833f58ff4e190a565e0b508007bb3e4c2c33da43 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Fri, 22 Mar 2019 22:04:22 +0100 Subject: [PATCH 213/737] Fix incorrect usagehelp for pumpkin (with face) --- mods/ITEMS/mcl_farming/pumpkin.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/mods/ITEMS/mcl_farming/pumpkin.lua b/mods/ITEMS/mcl_farming/pumpkin.lua index e40d267f..9050bdab 100644 --- a/mods/ITEMS/mcl_farming/pumpkin.lua +++ b/mods/ITEMS/mcl_farming/pumpkin.lua @@ -101,6 +101,7 @@ minetest.register_node("mcl_farming:pumpkin", pumpkin_base_def) local pumpkin_face_base_def = table.copy(pumpkin_base_def) pumpkin_face_base_def.description = S("Pumpkin") pumpkin_face_base_def._doc_items_longdesc = S("A pumpkin can be worn as a helmet for fun, but it doesn't offer any protection. Pumpkins grow from pumpkin stems, which in turn grow from pumpkin seeds.") +pumpkin_face_base_def._doc_items_usagehelp = nil pumpkin_face_base_def.tiles = {"farming_pumpkin_top.png", "farming_pumpkin_top.png", "farming_pumpkin_side.png", "farming_pumpkin_side.png", "farming_pumpkin_side.png", "farming_pumpkin_face.png"} pumpkin_face_base_def.groups.armor_head=1 pumpkin_face_base_def.groups.non_combat_armor=1 From 1b24b02e319b1e550443318c212a71d7b2def2dd Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sat, 23 Mar 2019 00:19:17 +0100 Subject: [PATCH 214/737] Bone meal grows flowers matching to biome --- mods/ITEMS/mcl_dye/init.lua | 43 +++++++++++++++++++++++++++---------- 1 file changed, 32 insertions(+), 11 deletions(-) diff --git a/mods/ITEMS/mcl_dye/init.lua b/mods/ITEMS/mcl_dye/init.lua index e90f5187..11a6f657 100644 --- a/mods/ITEMS/mcl_dye/init.lua +++ b/mods/ITEMS/mcl_dye/init.lua @@ -82,6 +82,8 @@ dyelocal.dyes = { {"pink", "dye_pink", S("Pink Dye"), {dye=1, craftitem=1, basecolor_red=1, excolor_red=1, unicolor_light_red=1}}, } +local mg_name = minetest.get_mapgen_setting("mg_name") + dyelocal.unicolor_to_dye_id = {} for d=1, #dyelocal.dyes do for k, _ in pairs(dyelocal.dyes[d][4]) do @@ -125,10 +127,8 @@ end -- Bone Meal mcl_dye.apply_bone_meal = function(pointed_thing) - -- TODO: Only spawn flowers specific to the biome - -- Bone meal currently spawns all flowers found in the plains. - local flowers_table = { + local flowers_table_plains = { "mcl_flowers:dandelion", "mcl_flowers:dandelion", "mcl_flowers:poppy", @@ -139,15 +139,25 @@ mcl_dye.apply_bone_meal = function(pointed_thing) "mcl_flowers:tulip_white", "mcl_flowers:tulip_pink", "mcl_flowers:azure_bluet", - - -- Allium and blue orchid intentionally left out, - -- those must be found by the player. } - -- Special case for dry lands - local flowers_table_dry = { + local flowers_table_simple = { "mcl_flowers:dandelion", "mcl_flowers:poppy", } + local flowers_table_swampland = { + "mcl_flowers:blue_orchid", + } + local flowers_table_flower_forest = { + "mcl_flowers:dandelion", + "mcl_flowers:poppy", + "mcl_flowers:oxeye_daisy", + "mcl_flowers:tulip_orange", + "mcl_flowers:tulip_red", + "mcl_flowers:tulip_white", + "mcl_flowers:tulip_pink", + "mcl_flowers:azure_bluet", + "mcl_flowers:allium", + } local pos = pointed_thing.under local n = minetest.get_node(pos) @@ -248,11 +258,22 @@ mcl_dye.apply_bone_meal = function(pointed_thing) local col = minetest.registered_nodes[n2.name]._mcl_grass_palette_index minetest.add_node(pos, {name="mcl_flowers:tallgrass", param2=col}) else - if n2.name == "mcl_core:dirt_with_dry_grass" then - minetest.add_node(pos, {name=flowers_table_dry[math.random(1, #flowers_table_dry)]}) + local flowers_table + if mg_name == "v6" then + flowers_table = flowers_table_plains else - minetest.add_node(pos, {name=flowers_table[math.random(1, #flowers_table)]}) + local biome = minetest.get_biome_name(minetest.get_biome_data(pos).biome) + if biome == "Swampland" or biome == "Swampland_shore" or biome == "Swampland_ocean" or biome == "Swampland_deep_ocean" or biome == "Swampland_underground" then + flowers_table = flowers_table_swampland + elseif biome == "FlowerForest" or biome == "FlowerForest_beach" or biome == "FlowerForest_ocean" or biome == "FlowerForest_deep_ocean" or biome == "FlowerForest_underground" then + flowers_table = flowers_table_flower_forest + elseif biome == "Plains" or biome == "Plains_beach" or biome == "Plains_ocean" or biome == "Plains_deep_ocean" or biome == "Plains_underground" or biome == "SunflowerPlains" or biome == "SunflowerPlains_ocean" or biome == "SunflowerPlains_deep_ocean" or biome == "SunflowerPlains_underground" then + flowers_table = flowers_table_plains + else + flowers_table = flowers_table_simple + end end + minetest.add_node(pos, {name=flowers_table[math.random(1, #flowers_table)]}) end end end From a54abc7de9d033d040c342e0690b985823045d0f Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sun, 24 Mar 2019 08:03:50 +0100 Subject: [PATCH 215/737] Add translation for water/lava interactions --- mods/ITEMS/mcl_core/locale/mcl_core.de.tr | 8 +++++++- mods/ITEMS/mcl_core/locale/template.tr | 8 +++++++- mods/ITEMS/mcl_core/nodes_liquid.lua | 20 ++++++++++---------- 3 files changed, 24 insertions(+), 12 deletions(-) diff --git a/mods/ITEMS/mcl_core/locale/mcl_core.de.tr b/mods/ITEMS/mcl_core/locale/mcl_core.de.tr index b2c77e44..44d38070 100644 --- a/mods/ITEMS/mcl_core/locale/mcl_core.de.tr +++ b/mods/ITEMS/mcl_core/locale/mcl_core.de.tr @@ -56,7 +56,6 @@ Charcoal is an alternative furnace fuel created by cooking wood in a furnace. It Chiseled Stone Bricks=Gemeißelte Steinziegel Chiseled Red Sandstone=Gemeißelter roter Sandstein Chiseled Sandstone=Gemeißelter Sandstein -Chiseled Stone Bricks=Gemeißelte Steinziegel Chiseled red sandstone is a decorative building block.=Gemeißelter roter Sandstein ist ein dekorativer Block zum Bauen. Chiseled sandstone is a decorative building block.=Gemeißelter Sandstein ist ein dekorativer Block zum Bauen. Clay=Ton @@ -238,3 +237,10 @@ When you hold a barrier in hand, you reveal all placed barriers in a short dista White Stained Glass=Weißes Buntglas Yellow Stained Glass=Gelbes Buntglas “Coal” refers to coal lumps obtained by digging coal ore which can be found underground. Coal is your standard furnace fuel, but it can also be used to make torches, coal blocks and a few other things.=„Kohle“ meint Kohleklumpen, die herausfallen, wenn Kohleerz gegraben wird, was im Untergrund gefunden werden kann. Kohle ist der klassische Brennstoff für den Ofen, aber er kann auch benutzt werden, um Fackeln, Kohleblöcke und einige andere Dinge herzustellen. +Water interacts with lava in various ways:=Wasser reagiert mit Lava auf unterschiedliche Arten: +• When water is directly above or horizontally next to a lava source, the lava turns into obsidian.=• Wenn sich Wasser direkt über oder horizontal neben einer Wasserquelle befindet, verwandelt sich die Lava zu Obsidian. +• When flowing water touches flowing lava either from above or horizontally, the lava turns into cobblestone.=• Wenn fließendes Wasser fließende Lava von oben oder horizontal berührt, verwandelt sich die Lava zu Kopfsteinpflaster. +• When water is directly below lava, the water turns into stone.=• Wenn sich Wasser direkt unter Lava befindet, verwandelt sich das Wasser zu Stein. +Lava interacts with water various ways:=Lava reagiert mit Wasser auf verschiedene Arten: +• When a lava source is directly below or horizontally next to water, the lava turns into obsidian.=• Wenn sich eine Lavaquelle direkt unter oder horizontal neben Wasser befindet, verwandelt sich die Lava zu Obsidian. +• When lava is directly above water, the water turns into stone.=• Wenn sich Lava direkt über Wasser befindet, verwandelt sich das Wasser zu Stein. diff --git a/mods/ITEMS/mcl_core/locale/template.tr b/mods/ITEMS/mcl_core/locale/template.tr index 8976d3cf..175107b7 100644 --- a/mods/ITEMS/mcl_core/locale/template.tr +++ b/mods/ITEMS/mcl_core/locale/template.tr @@ -56,7 +56,6 @@ Charcoal is an alternative furnace fuel created by cooking wood in a furnace. It Chiseled Stone Bricks= Chiseled Red Sandstone= Chiseled Sandstone= -Chiseled Stone Bricks= Chiseled red sandstone is a decorative building block.= Chiseled sandstone is a decorative building block.= Clay= @@ -237,3 +236,10 @@ When you hold a barrier in hand, you reveal all placed barriers in a short dista White Stained Glass= Yellow Stained Glass= “Coal” refers to coal lumps obtained by digging coal ore which can be found underground. Coal is your standard furnace fuel, but it can also be used to make torches, coal blocks and a few other things.= +Water interacts with lava in various ways:= +• When water is directly above or horizontally next to a lava source, the lava turns into obsidian.= +• When flowing water touches flowing lava either from above or horizontally, the lava turns into cobblestone.= +• When water is directly below lava, the water turns into stone.= +Lava interacts with water various ways:= +• When a lava source is directly below or horizontally next to water, the lava turns into obsidian.= +• When lava is directly above water, the water turns into stone.= diff --git a/mods/ITEMS/mcl_core/nodes_liquid.lua b/mods/ITEMS/mcl_core/nodes_liquid.lua index cdcae4b9..8910c389 100644 --- a/mods/ITEMS/mcl_core/nodes_liquid.lua +++ b/mods/ITEMS/mcl_core/nodes_liquid.lua @@ -58,11 +58,11 @@ minetest.register_node("mcl_core:water_source", { description = S("Water Source"), _doc_items_entry_name = S("Water"), _doc_items_longdesc = -S("Water is abundant in oceans and also appears in a few springs in the ground. You can swim easily in water, but you need to catch your breath from time to time.").."\n".. -S([[Water interacts with lava in various ways: -• When water is directly above or horizontally next to a lava source, the lava turns into obsidian. -• When flowing water touches flowing lava either from above or horizontally, the lava turns into cobblestone. -• When water is directly below lava, the water turns into stone.]]), +S("Water is abundant in oceans and also appears in a few springs in the ground. You can swim easily in water, but you need to catch your breath from time to time.").."\n\n".. +S("Water interacts with lava in various ways:").."\n".. +S("• When water is directly above or horizontally next to a lava source, the lava turns into obsidian.").."\n".. +S("• When flowing water touches flowing lava either from above or horizontally, the lava turns into cobblestone.").."\n".. +S("• When water is directly below lava, the water turns into stone."), _doc_items_hidden = false, drawtype = "liquid", tiles = { @@ -150,11 +150,11 @@ minetest.register_node("mcl_core:lava_source", { _doc_items_entry_name = "Lava", _doc_items_longdesc = S("Lava is hot and rather dangerous. Don't touch it, it will hurt you a lot and it is hard to get out.").."\n".. -S("A lava source sets fire to a couple of air blocks above when they're next to a flammable block.").."\n".. -S([[Lava interacts with water various ways: -• When a lava source is directly below or horizontally next to water, the lava turns into obsidian. -• When flowing water touches flowing lava either from above or horizontally, the lava turns into cobblestone. -• When lava is directly above water, the water turns into stone.]]), +S("A lava source sets fire to a couple of air blocks above when they're next to a flammable block.").."\n\n".. +S("Lava interacts with water various ways:").."\n".. +S("• When a lava source is directly below or horizontally next to water, the lava turns into obsidian.").."\n".. +S("• When flowing water touches flowing lava either from above or horizontally, the lava turns into cobblestone.").."\n".. +S("• When lava is directly above water, the water turns into stone."), drawtype = "liquid", tiles = { {name="default_lava_source_animated.png", animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=3.0}} From 7df5ef097c4b61b5691f1623a69077e9272e20f2 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sun, 24 Mar 2019 08:06:08 +0100 Subject: [PATCH 216/737] Translate river water --- mods/ITEMS/mclx_core/locale/mclx_core.de.tr | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 mods/ITEMS/mclx_core/locale/mclx_core.de.tr diff --git a/mods/ITEMS/mclx_core/locale/mclx_core.de.tr b/mods/ITEMS/mclx_core/locale/mclx_core.de.tr new file mode 100644 index 00000000..f4591810 --- /dev/null +++ b/mods/ITEMS/mclx_core/locale/mclx_core.de.tr @@ -0,0 +1,5 @@ +# textdomain: mclx_core +River Water Source=Flusswasserquelle +River water has the same properties as water, but has a reduced flowing distance and is not renewable.=Flusswasser hat die gleichen Eigenschaften wie Wasser, aber es hat eine reduzierte Fließweite und ist nicht erneuerbar. +River Water=Flusswasser +Flowing River Water=Fließendes Flusswasser From ea23f05c22b4ba2d9573b945df91434bb31b8fae Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sun, 24 Mar 2019 08:16:04 +0100 Subject: [PATCH 217/737] Add missing translations for huge mushroom blocks --- mods/ITEMS/mcl_mushrooms/huge.lua | 2 +- mods/ITEMS/mcl_mushrooms/locale/mcl_mushrooms.de.tr | 7 ++++--- mods/ITEMS/mcl_mushrooms/locale/template.txt | 1 + 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/mods/ITEMS/mcl_mushrooms/huge.lua b/mods/ITEMS/mcl_mushrooms/huge.lua index 8355ffcc..54e719a5 100644 --- a/mods/ITEMS/mcl_mushrooms/huge.lua +++ b/mods/ITEMS/mcl_mushrooms/huge.lua @@ -69,7 +69,7 @@ local register_mushroom = function(color, species_id, template, d_cap, d_stem, d -- All-faces cap. This block is exposed to the player block.description = d_cap block._doc_items_longdesc = longdesc_cap - block._doc_items_uagehelp = "By placing huge mushroom blocks of the same species next to each other, the sides that touch each other will turn into pores permanently." + block._doc_items_usagehelp = S("By placing huge mushroom blocks of the same species next to each other, the sides that touch each other will turn into pores permanently.") block.tiles = { "mcl_mushrooms_mushroom_block_skin_"..color..".png" } block.on_construct = function(pos) diff --git a/mods/ITEMS/mcl_mushrooms/locale/mcl_mushrooms.de.tr b/mods/ITEMS/mcl_mushrooms/locale/mcl_mushrooms.de.tr index 442b46fc..8402e280 100644 --- a/mods/ITEMS/mcl_mushrooms/locale/mcl_mushrooms.de.tr +++ b/mods/ITEMS/mcl_mushrooms/locale/mcl_mushrooms.de.tr @@ -5,13 +5,13 @@ The stem part of a huge red mushroom.=Der Stängelteil eines roten Riesenpilzes. Huge Red Mushroom Block=Roter Riesenpilzblock Huge Red Mushroom Stem=Roter Riesenpilzstängel Huge Red Mushroom All-Faces Stem=Roter allseitiger Riesenpilzstängel -Huge brown mushroom blocks are the cap parts of huge red mushrooms. It consists of a brown skin and can have pores on each of its sides.=Braune Riesenpilzblöcke sind die Kappenteile von braunen Riesenpilzen. Sie bestehen aus einer braunen Haut und können Poren an jede ihrer Seiten haben. +Huge brown mushroom blocks are the cap parts of huge brown mushrooms. It consists of a brown skin and can have pores on each of its sides.=Braune Riesenpilzblöcke sind die Kappenteile von braunen Riesenpilzen. Sie bestehen aus einer braunen Haut und können Poren an jede ihrer Seiten haben. The stem part of a huge brown mushroom.=Der Stängelteil eines braunen Riesenpilzes. Huge Brown Mushroom Block=Brauner Riesenpilzblock Huge Brown Mushroom Stem=Brauner Riesenpilzstängel Huge Brown Mushroom All-Faces Stem=Brauner allseitiger Riesenpilzstängel -Brown mushrooms are fungi which grow and spread in darkness, but are sensitive to light. They are inedible as such, but they can be used to craft food items.=Braune Pilze wachsen und breiten sich in der Dunkelheit aus, aber sie sind Lichtempfindlich. Als solche sind sie ungenießbar, aber sie können benutzt werden, um Lebensmittel herzustellen. -Red mushrooms are fungi which grow and spread in darkness, but are sensitive to light. They are inedible as such, but they can be used to craft food items.=Rote Pilze wachsen und breiten sich in der Dunkelheit aus, aber sie sind Lichtempfindlich. Als solche sind sie ungenießbar, aber sie können benutzt werden, um Lebensmittel herzustellen. +Brown mushrooms are fungi which grow and spread in darkness, but are sensitive to light. They are inedible as such, but they can be used to craft food items.=Braune Pilze wachsen und breiten sich in der Dunkelheit aus, aber sie sind lichtempfindlich. Als solche sind sie ungenießbar, aber sie können benutzt werden, um Lebensmittel herzustellen. +Red mushrooms are fungi which grow and spread in darkness, but are sensitive to light. They are inedible as such, but they can be used to craft food items.=Rote Pilze wachsen und breiten sich in der Dunkelheit aus, aber sie sind lichtempfindlich. Als solche sind sie ungenießbar, aber sie können benutzt werden, um Lebensmittel herzustellen. A single mushroom of this species will slowly spread over time towards a random solid opaque block with a light level of 12 or lower in a 3×3×3 cube around the mushroom. It stops spreading when there are 5 or more mushrooms of the same species within an area of 9×3×9 blocks around the mushroom.=Ein einzelner Pilz dieser Art wird sich im Laufe der Zeit zu einem zufälligen festem undurchsichtigem Block mit einer Lichtstärke von 12 oder weniger in einem 3×3×3-Würfel um den Pilz hin ausbreiten. Er wird sich nicht weiter ausbreiten, wenn sich 5 oder mehr Pilze der gleichen Art innerhalb eines Bereichs von 9×3×9 Blöcken um den Pilz befinden. Mushrooms will eventually uproot at a light level of 12 or higher. On mycelium or podzol, they survive and spread at any light level.=Pilze werden sich bei einer Lichtstärke von mindestens 12 irgendwann selbst entwurzeln. Auf Myzel oder Podsol überleben sie und breiten sich bei jeder Lichtstärke aus. This mushroom can be placed on mycelium and podzol at any light level. It can also be placed on blocks which are both solid and opaque, as long as the light level at daytime is not higher than 12.=Diser Pilz kann auf Myzel und Podsol in jeder Lichtstärke platziert werden. Er kann auch auf Blöcken platziert werden, die sowohl fest als auch undurchsichtig sind, solange die Lichtstärke des Tageslichts nicht höher als 12 ist. @@ -19,3 +19,4 @@ Brown Mushroom=Brauner Pilz Red Mushroom=Roter Pilz Mushroom Stew=Pilzsuppe Mushroom stew is a healthy soup which can be consumed to restore some hunger points.=Pilzsuppe ist eine gesunde Suppe, die für ein paar Hungerpunkte konsumiert werden kann. +By placing huge mushroom blocks of the same species next to each other, the sides that touch each other will turn into pores permanently.=Wenn Riesenpilzblöcke der selben Art nebeneinander platziert werden, werden sich die Seiten, die sich berühren, dauerhaft zu Poren verwandeln. diff --git a/mods/ITEMS/mcl_mushrooms/locale/template.txt b/mods/ITEMS/mcl_mushrooms/locale/template.txt index 2c4c3ba6..cbd1f600 100644 --- a/mods/ITEMS/mcl_mushrooms/locale/template.txt +++ b/mods/ITEMS/mcl_mushrooms/locale/template.txt @@ -19,3 +19,4 @@ Brown Mushroom= Red Mushroom= Mushroom Stew= Mushroom stew is a healthy soup which can be consumed to restore some hunger points.= +By placing huge mushroom blocks of the same species next to each other, the sides that touch each other will turn into pores permanently.= From 8636b94c74ba73eac45c3a1d9cf159c04e95feec Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sun, 24 Mar 2019 08:55:42 +0100 Subject: [PATCH 218/737] Squash help entries of colorblocks --- mods/ITEMS/mcl_colorblocks/depends.txt | 1 + mods/ITEMS/mcl_colorblocks/init.lua | 42 ++++++++++++++++--- .../locale/mcl_colorblocks.de.tr | 6 ++- .../ITEMS/mcl_colorblocks/locale/template.txt | 4 ++ mods/ITEMS/mclx_stairs/depends.txt | 1 + mods/ITEMS/mclx_stairs/init.lua | 18 ++++++++ .../mclx_stairs/locale/mclx_stairs.de.tr | 3 ++ mods/ITEMS/mclx_stairs/locale/template.txt | 3 ++ 8 files changed, 72 insertions(+), 6 deletions(-) diff --git a/mods/ITEMS/mcl_colorblocks/depends.txt b/mods/ITEMS/mcl_colorblocks/depends.txt index 7f3fdc37..c9db3b28 100644 --- a/mods/ITEMS/mcl_colorblocks/depends.txt +++ b/mods/ITEMS/mcl_colorblocks/depends.txt @@ -1,4 +1,5 @@ mcl_core mcl_sounds mcl_dye +doc? screwdriver? diff --git a/mods/ITEMS/mcl_colorblocks/init.lua b/mods/ITEMS/mcl_colorblocks/init.lua index a4471fe4..15c12ab3 100644 --- a/mods/ITEMS/mcl_colorblocks/init.lua +++ b/mods/ITEMS/mcl_colorblocks/init.lua @@ -1,5 +1,6 @@ local init = os.clock() local S = minetest.get_translator("mcl_colorblocks") +local doc_mod = minetest.get_modpath("doc") local block = {} @@ -21,6 +22,7 @@ block.dyes = { {"lime", S("Lime Terracotta"), S("Lime Glazed Terracotta"), S("Lime Concrete Powder"), S("Lime Concrete"), "green"}, {"light_blue", S("Light Blue Terracotta"), S("Light Blue Glazed Terracotta"), S("Light Blue Concrete Powder"), S("Light Blue Concrete"), "lightblue"}, } +local canonical_color = "yellow" local hc_desc = S("Terracotta is a basic building material. It comes in many different colors.") local gt_desc = S("Glazed terracotta is a decorative block with a complex pattern. It can be rotated by placing it in different directions.") @@ -52,15 +54,33 @@ end for _, row in ipairs(block.dyes) do local name = row[1] + local is_canonical = name == canonical_color local sdesc_hc = row[2] local sdesc_gt = row[3] local sdesc_cp = row[4] local sdesc_c = row[5] + local ldesc_hc, ldesc_gt, ldesc_cp, ldesc_c + local create_entry + local ename_hc, ename_gt, ename_cp, ename_c + if is_canonical then + ldesc_hc = hc_desc + ldesc_gt = gt_desc + ldesc_cp = cp_desc + ldesc_c = c_desc + ename_hc = S("Colored Terracotta") + ename_gt = S("Glazed Terracotta") + ename_cp = S("Concrete Powder") + ename_c = S("Concrete") + else + create_entry = false + end local craft_color_group = row[6] -- Node Definition minetest.register_node("mcl_colorblocks:hardened_clay_"..name, { description = sdesc_hc, - _doc_items_longdesc = hc_desc, + _doc_items_longdesc = ldesc_hc, + _doc_items_create_entry = create_entry, + _doc_items_entry_name = ename_hc, tiles = {"hardened_clay_stained_"..name..".png"}, groups = {pickaxey=1, hardened_clay=1,building_block=1, material_stone=1}, stack_max = 64, @@ -71,7 +91,9 @@ for _, row in ipairs(block.dyes) do minetest.register_node("mcl_colorblocks:concrete_powder_"..name, { description = sdesc_cp, - _doc_items_longdesc = cp_desc, + _doc_items_longdesc = ldesc_cp, + _doc_items_create_entry = create_entry, + _doc_items_entry_name = ename_cp, tiles = {"mcl_colorblocks_concrete_powder_"..name..".png"}, groups = {handy=1,shovely=1, concrete_powder=1,building_block=1,falling_node=1, material_sand=1}, stack_max = 64, @@ -109,7 +131,9 @@ for _, row in ipairs(block.dyes) do minetest.register_node("mcl_colorblocks:concrete_"..name, { description = sdesc_c, - _doc_items_longdesc = c_desc, + _doc_items_longdesc = ldesc_c, + _doc_items_create_entry = create_entry, + _doc_items_entry_name = ename_c, tiles = {"mcl_colorblocks_concrete_"..name..".png"}, groups = {handy=1,pickaxey=1, concrete=1,building_block=1, material_stone=1}, stack_max = 64, @@ -123,7 +147,9 @@ for _, row in ipairs(block.dyes) do local texes = { tex, tex, tex.."^[transformR180", tex, tex.."^[transformR270", tex.."^[transformR90" } minetest.register_node("mcl_colorblocks:glazed_terracotta_"..name, { description = sdesc_gt, - _doc_items_longdesc = gt_desc, + _doc_items_longdesc = ldesc_gt, + _doc_items_create_entry = create_entry, + _doc_items_entry_name = ename_gt, tiles = texes, groups = {handy=1,pickaxey=1, glazed_terracotta=1,building_block=1, material_stone=1}, paramtype2 = "facedir", @@ -135,6 +161,13 @@ for _, row in ipairs(block.dyes) do on_rotate = on_rotate, }) + if not is_canonical and doc_mod then + doc.add_entry_alias("nodes", "mcl_colorblocks:hardened_clay_"..canonical_color, "nodes", "mcl_colorblocks:hardened_clay_"..name) + doc.add_entry_alias("nodes", "mcl_colorblocks:glazed_terracotta_"..canonical_color, "nodes", "mcl_colorblocks:glazed_terracotta_"..name) + doc.add_entry_alias("nodes", "mcl_colorblocks:concrete_"..canonical_color, "nodes", "mcl_colorblocks:concrete_"..name) + doc.add_entry_alias("nodes", "mcl_colorblocks:concrete_powder_"..canonical_color, "nodes", "mcl_colorblocks:concrete_powder_"..name) + end + -- Crafting recipes if craft_color_group then minetest.register_craft({ @@ -184,4 +217,3 @@ minetest.register_abm({ local time_to_load= os.clock() - init print(string.format("[MOD] "..minetest.get_current_modname().." loaded in %.4f s", time_to_load)) - diff --git a/mods/ITEMS/mcl_colorblocks/locale/mcl_colorblocks.de.tr b/mods/ITEMS/mcl_colorblocks/locale/mcl_colorblocks.de.tr index 372bd346..f0d77197 100644 --- a/mods/ITEMS/mcl_colorblocks/locale/mcl_colorblocks.de.tr +++ b/mods/ITEMS/mcl_colorblocks/locale/mcl_colorblocks.de.tr @@ -68,4 +68,8 @@ Glazed terracotta is a decorative block with a complex pattern. It can be rotate Concrete powder is used for creating concrete, but it can also be used as decoration itself. It comes in different colors. Concrete powder turns into concrete of the same color when it comes in contact with water.=Betonpulver wird benutzt, um Beton herzustellen, aber es kann auch selbst als Dekoration benutzt werden. Es kommt in verschiedenen Farben daher. Betonpulver verwandelt sich in Beton der selben Farbe, wenn es mit Wasser in Berührung kommt. Concrete is a decorative block which comes in many different colors. It is notable for having a very strong and clean color.=Beton ist ein dekorativer Block, der in verschiedenen Farben daherkommt. Er hat eine besonders kräftige und klare Farbe. Terracotta=Terrakotta -Terracotta is a basic building material which comes in many different colors. This particular block is uncolored.=Terrakotta ist ein Baumaterial, welches in vielen verschiedenen Farben vorkommt. Dieser Block ist farblos. +Terracotta is a basic building material which comes in many different colors. This particular block is uncolored.=Terrakotta ist ein Baumaterial, welches in vielen verschiedenen Farben vorkommt. Diese Variante ist ungefärbt. +Colored Terracotta=Gefärbte Terrakotta +Glazed Terracotta=Glasierte Terrakotta +Concrete Powder=Betonpulver +Concrete=Beton diff --git a/mods/ITEMS/mcl_colorblocks/locale/template.txt b/mods/ITEMS/mcl_colorblocks/locale/template.txt index 2736a54b..f20c7965 100644 --- a/mods/ITEMS/mcl_colorblocks/locale/template.txt +++ b/mods/ITEMS/mcl_colorblocks/locale/template.txt @@ -69,3 +69,7 @@ Concrete powder is used for creating concrete, but it can also be used as decora Concrete is a decorative block which comes in many different colors. It is notable for having a very strong and clean color.= Terracotta= Terracotta is a basic building material which comes in many different colors. This particular block is uncolored.= +Colored Terracotta= +Glazed Terracotta= +Concrete Powder= +Concrete= diff --git a/mods/ITEMS/mclx_stairs/depends.txt b/mods/ITEMS/mclx_stairs/depends.txt index 89eb864a..49805c17 100644 --- a/mods/ITEMS/mclx_stairs/depends.txt +++ b/mods/ITEMS/mclx_stairs/depends.txt @@ -5,3 +5,4 @@ mcl_nether mcl_end mcl_colorblocks mcl_stairs +doc? diff --git a/mods/ITEMS/mclx_stairs/init.lua b/mods/ITEMS/mclx_stairs/init.lua index 70ffdc33..d43fa9c5 100644 --- a/mods/ITEMS/mclx_stairs/init.lua +++ b/mods/ITEMS/mclx_stairs/init.lua @@ -1,4 +1,5 @@ local S = minetest.get_translator("mclx_stairs") +local doc_mod = minetest.get_modpath("doc") mcl_stairs.register_stair_and_slab_simple("tree_bark", "mcl_core:tree_bark", S("Oak Bark Stairs"), S("Oak Bark Slab"), S("Double Oak Bark Slab"), "woodlike") mcl_stairs.register_stair_and_slab_simple("acaciatree_bark", "mcl_core:acaciatree_bark", S("Acacia Bark Stairs"), S("Acacia Bark Slab"), S("Double Acacia Bark Slab"), "woodlike") @@ -47,12 +48,29 @@ block.dyes = { {"lime", S("Lime Concrete Stairs"), S("Lime Concrete Slab"), S("Double Lime Concrete Slab"), "green"}, {"light_blue", S("Light Blue Concrete Stairs"), S("Light Blue Concrete Slab"), S("Double Light Blue Concrete Slab"), "lightblue"}, } +local canonical_color = "yellow" for i=1, #block.dyes do local c = block.dyes[i][1] + local is_canonical = c == canonical_color mcl_stairs.register_stair_and_slab_simple("concrete_"..c, "mcl_colorblocks:concrete_"..c, block.dyes[i][2], block.dyes[i][3], block.dyes[i][4]) + + if doc_mod then + if not is_canonical then + doc.add_entry_alias("nodes", "mcl_stairs:slab_concrete_"..canonical_color, "nodes", "mcl_stairs:slab_concrete_"..c) + doc.add_entry_alias("nodes", "mcl_stairs:slab_concrete_"..canonical_color.."_double", "nodes", "mcl_stairs:slab_concrete_"..c.."_double") + doc.add_entry_alias("nodes", "mcl_stairs:stair_concrete_"..canonical_color, "nodes", "mcl_stairs:stair_concrete_"..c) + minetest.override_item("mcl_stairs:slab_concrete_"..c, { _doc_items_create_entry = false }) + minetest.override_item("mcl_stairs:slab_concrete_"..c.."_double", { _doc_items_create_entry = false }) + minetest.override_item("mcl_stairs:stair_concrete_"..c, { _doc_items_create_entry = false }) + else + minetest.override_item("mcl_stairs:slab_concrete_"..c, { _doc_items_entry_name = S("Concrete Slab") }) + minetest.override_item("mcl_stairs:slab_concrete_"..c.."_double", { _doc_items_entry_name = S("Double Concrete Slab") }) + minetest.override_item("mcl_stairs:stair_concrete_"..c, { _doc_items_entry_name = S("Concrete Stairs") }) + end + end end diff --git a/mods/ITEMS/mclx_stairs/locale/mclx_stairs.de.tr b/mods/ITEMS/mclx_stairs/locale/mclx_stairs.de.tr index a9973c77..c6f9f65d 100644 --- a/mods/ITEMS/mclx_stairs/locale/mclx_stairs.de.tr +++ b/mods/ITEMS/mclx_stairs/locale/mclx_stairs.de.tr @@ -77,3 +77,6 @@ Double Lime Concrete Slab=Doppelte Betonplatte Light Blue Concrete Stairs=Hellblaue Betontreppe Light Blue Concrete Slab=Hellblaue Betonplatte Double Light Blue Concrete Slab=Doppelte hellblaue Betonplatte +Concrete Slab=Betonplatte +Double Concrete Slab=Doppelte Betonplatte +Concrete Stairs=Betontreppe diff --git a/mods/ITEMS/mclx_stairs/locale/template.txt b/mods/ITEMS/mclx_stairs/locale/template.txt index fcadd57e..b6272dbc 100644 --- a/mods/ITEMS/mclx_stairs/locale/template.txt +++ b/mods/ITEMS/mclx_stairs/locale/template.txt @@ -77,3 +77,6 @@ Double Lime Concrete Slab= Light Blue Concrete Stairs= Light Blue Concrete Slab= Double Light Blue Concrete Slab= +Concrete Slab= +Double Concrete Slab= +Concrete Stairs= From 423d5f8ab85b9fd8d2b905c82321749d1e2d1ca1 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sun, 24 Mar 2019 09:06:35 +0100 Subject: [PATCH 219/737] Squash help entries of beds --- mods/ITEMS/mcl_beds/api.lua | 2 ++ mods/ITEMS/mcl_beds/beds.lua | 17 +++++++++++++++++ mods/ITEMS/mcl_beds/depends.txt | 1 + mods/ITEMS/mcl_beds/locale/mcl_beds.de.tr | 1 + mods/ITEMS/mcl_beds/locale/template.txt | 1 + 5 files changed, 22 insertions(+) diff --git a/mods/ITEMS/mcl_beds/api.lua b/mods/ITEMS/mcl_beds/api.lua index 7d76b76e..777fa222 100644 --- a/mods/ITEMS/mcl_beds/api.lua +++ b/mods/ITEMS/mcl_beds/api.lua @@ -66,6 +66,8 @@ function mcl_beds.register_bed(name, def) description = def.description, _doc_items_longdesc = def._doc_items_longdesc or beddesc, _doc_items_usagehelp = def._doc_items_usagehelp or beduse, + _doc_items_create_entry = def._doc_items_create_entry, + _doc_items_entry_name = def._doc_items_entry_name, inventory_image = def.inventory_image, wield_image = def.wield_image, drawtype = "nodebox", diff --git a/mods/ITEMS/mcl_beds/beds.lua b/mods/ITEMS/mcl_beds/beds.lua index 6ac2071e..8f41c7a3 100644 --- a/mods/ITEMS/mcl_beds/beds.lua +++ b/mods/ITEMS/mcl_beds/beds.lua @@ -1,4 +1,5 @@ local S = minetest.get_translator("mcl_beds") +local mod_doc = minetest.get_modpath("doc") local nodebox = { bottom = { @@ -32,9 +33,11 @@ local colors = { { "light_blue", S("Light Blue Bed"), "mcl_wool:light_blue", "mcl_dye:lightblue" }, { "white", S("White Bed"), "mcl_wool:white", "mcl_dye:white" }, } +local canonical_color = "red" for c=1, #colors do local colorid = colors[c][1] + local is_canonical = colorid == canonical_color -- Recoloring recipe for white bed if minetest.get_modpath("mcl_dye") then @@ -54,9 +57,19 @@ for c=1, #colors do } end + local entry_name, create_entry + if mod_doc then + if is_canonical then + entry_name = S("Bed") + else + create_entry = false + end + end -- Register bed mcl_beds.register_bed("mcl_beds:bed_"..colorid, { description = colors[c][2], + _doc_items_entry_name = entry_name, + _doc_items_create_entry = create_entry, inventory_image = "mcl_beds_bed_"..colorid..".png", wield_image = "mcl_beds_bed_"..colorid..".png", tiles = { @@ -89,6 +102,10 @@ for c=1, #colors do }, recipe = main_recipe, }) + if mod_doc and not is_canonical then + doc.add_entry_alias("nodes", "mcl_beds:bed_"..canonical_color.."_bottom", "nodes", "mcl_beds:bed_"..colorid.."_bottom") + doc.add_entry_alias("nodes", "mcl_beds:bed_"..canonical_color.."_bottom", "nodes", "mcl_beds:bed_"..colorid.."_top") + end end diff --git a/mods/ITEMS/mcl_beds/depends.txt b/mods/ITEMS/mcl_beds/depends.txt index 3285e591..34e12adc 100644 --- a/mods/ITEMS/mcl_beds/depends.txt +++ b/mods/ITEMS/mcl_beds/depends.txt @@ -6,3 +6,4 @@ mcl_dye? mcl_tnt? mcl_weather? mcl_spawn? +doc? diff --git a/mods/ITEMS/mcl_beds/locale/mcl_beds.de.tr b/mods/ITEMS/mcl_beds/locale/mcl_beds.de.tr index bcf26fc3..079951c8 100644 --- a/mods/ITEMS/mcl_beds/locale/mcl_beds.de.tr +++ b/mods/ITEMS/mcl_beds/locale/mcl_beds.de.tr @@ -5,6 +5,7 @@ You have heard of other worlds in which a bed would set the start point for your By using a bed, you set the starting point for your next life. If you die, you will start your next life at this bed, unless it is obstructed or destroyed.=Indem Sie ein Bett benutzen, setzen Sie den Startpunkt Ihres nächsten Lebens. Wenn Sie sterben, werden Sie Ihr nächstes Leben auf diesem Bett beginnen, es sei denn, es ist blockiert oder zerstört. In this world, going to bed won't skip the night, but it will skip thunderstorms.=In dieser Welt können mit dem Bett Nächte nicht übersprungen werden, nur Gewitterstürme. Sleeping allows you to skip the night. The night is skipped when all players in this world went to sleep. The night is skipped after sleeping for a few seconds. Thunderstorms can be skipped in the same manner.=Mit Schlaf können Sie die Nacht überspringen. Die Nacht wird übersprungen, wenn alle Spieler in dieser Welt sich schlafen gelegt haben. Die Nacht wird dann nach ein paar Sekunden übersprungen. Gewitterstürme werden auf die gleiche Weise übersprungen. +Bed=Bett Red Bed=Rotes Bett Blue Bed=Blaues Bett Cyan Bed=Türkises Bett diff --git a/mods/ITEMS/mcl_beds/locale/template.txt b/mods/ITEMS/mcl_beds/locale/template.txt index 0cba8424..9664c800 100644 --- a/mods/ITEMS/mcl_beds/locale/template.txt +++ b/mods/ITEMS/mcl_beds/locale/template.txt @@ -5,6 +5,7 @@ You have heard of other worlds in which a bed would set the start point for your By using a bed, you set the starting point for your next life. If you die, you will start your next life at this bed, unless it is obstructed or destroyed.= In this world, going to bed won't skip the night, but it will skip thunderstorms.= Sleeping allows you to skip the night. The night is skipped when all players in this world went to sleep. The night is skipped after sleeping for a few seconds. Thunderstorms can be skipped in the same manner.= +Bed= Red Bed= Blue Bed= Cyan Bed= From 5caa4b365946cb5b2b2a9c2de608da40ec94c0d7 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sun, 24 Mar 2019 09:07:42 +0100 Subject: [PATCH 220/737] Fix bed help WRT Minetest settings --- mods/ITEMS/mcl_beds/api.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_beds/api.lua b/mods/ITEMS/mcl_beds/api.lua index 777fa222..39a80e31 100644 --- a/mods/ITEMS/mcl_beds/api.lua +++ b/mods/ITEMS/mcl_beds/api.lua @@ -35,12 +35,12 @@ end local beddesc = S("Beds allow you to sleep at night and make the time pass faster.") local beduse = S("To use a bed, stand close to it and right-click the bed to sleep in it. Sleeping only works when the sun sets, at night or during a thunderstorm. The bed must also be clear of any danger.") -if true or minetest.settings:get_bool("enable_bed_respawn") == false then +if minetest.settings:get_bool("enable_bed_respawn") == false then beddesc = beddesc .. "\n" .. S("You have heard of other worlds in which a bed would set the start point for your next life. But this world is not one of them.") else beddesc = beddesc .. "\n" .. S("By using a bed, you set the starting point for your next life. If you die, you will start your next life at this bed, unless it is obstructed or destroyed.") end -if true or minetest.settings:get_bool("enable_bed_night_skip") == false then +if minetest.settings:get_bool("enable_bed_night_skip") == false then beddesc = beddesc .. "\n" .. S("In this world, going to bed won't skip the night, but it will skip thunderstorms.") else beddesc = beddesc .. "\n" .. S("Sleeping allows you to skip the night. The night is skipped when all players in this world went to sleep. The night is skipped after sleeping for a few seconds. Thunderstorms can be skipped in the same manner.") From 3a5df885e9da3abf01befd5bce7ec88c2bb8f1d0 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sun, 24 Mar 2019 09:23:26 +0100 Subject: [PATCH 221/737] Squash help entries for wool and carpet --- mods/ITEMS/mcl_wool/depends.txt | 1 + mods/ITEMS/mcl_wool/init.lua | 27 +++++++++++++++++++++-- mods/ITEMS/mcl_wool/locale/mcl_wool.de.tr | 2 ++ mods/ITEMS/mcl_wool/locale/template.txt | 2 ++ 4 files changed, 30 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_wool/depends.txt b/mods/ITEMS/mcl_wool/depends.txt index 3d96266d..9699080a 100644 --- a/mods/ITEMS/mcl_wool/depends.txt +++ b/mods/ITEMS/mcl_wool/depends.txt @@ -1 +1,2 @@ mcl_sounds +doc? diff --git a/mods/ITEMS/mcl_wool/init.lua b/mods/ITEMS/mcl_wool/init.lua index 40c2340b..912a6ccd 100644 --- a/mods/ITEMS/mcl_wool/init.lua +++ b/mods/ITEMS/mcl_wool/init.lua @@ -1,4 +1,5 @@ local S = minetest.get_translator("mcl_wool") +local mod_doc = minetest.get_modpath("doc") -- minetest/wool/init.lua @@ -29,6 +30,7 @@ wool.dyes = { {"lime", "mcl_wool_lime", S("Lime Wool"), S("Lime Carpet"), "green", "basecolor_green"}, {"light_blue", "mcl_wool_light_blue", S("Light Blue Wool"), S("Light Blue Carpet"), "lightblue", "unicolor_light_blue"}, } +local canonical_color = "white" for _, row in ipairs(wool.dyes) do local name = row[1] @@ -37,10 +39,24 @@ for _, row in ipairs(wool.dyes) do local desc_carpet = row[4] local dye = row[5] local color_group = row[6] + local longdesc_wool, longdesc_carpet, create_entry, name_wool, name_carpet + local is_canonical = name == canonical_color + if mod_doc then + if is_canonical then + longdesc_wool = S("Wool is a decorative block which comes in many different colors.") + longdesc_carpet = S("Carpets are thin floor covers which come in many different colors.") + name_wool = S("Wool") + name_carpet = S("Carpet") + else + create_entry = false + end + end -- Node Definition minetest.register_node("mcl_wool:"..name, { description = desc_wool, - _doc_items_longdesc = S("Wool is a decorative block which comes in many different colors."), + _doc_items_create_entry = create_entry, + _doc_items_entry_name = name_wool, + _doc_items_longdesc = longdesc_wool, stack_max = 64, is_ground_content = false, tiles = {texture..".png"}, @@ -51,7 +67,10 @@ for _, row in ipairs(wool.dyes) do }) minetest.register_node("mcl_wool:"..name.."_carpet", { description = desc_carpet, - _doc_items_longdesc = S("Carpets are thin floor covers which come in many different colors."), + _doc_items_create_entry = create_entry, + _doc_items_entry_name = name_carpet, + _doc_items_longdesc = longdesc_carpet, + walkable = false, -- See is_ground_content = false, tiles = {texture..".png"}, @@ -72,6 +91,10 @@ for _, row in ipairs(wool.dyes) do _mcl_hardness = 0.1, _mcl_blast_resistance = 0.5, }) + if mod_doc and not is_canonical then + doc.add_entry_alias("nodes", "mcl_wool:"..canonical_color, "nodes", "mcl_wool:"..name) + doc.add_entry_alias("nodes", "mcl_wool:"..canonical_color.."_carpet", "nodes", "mcl_wool:"..name.."_carpet") + end if dye then -- Crafting from dye and white wool minetest.register_craft({ diff --git a/mods/ITEMS/mcl_wool/locale/mcl_wool.de.tr b/mods/ITEMS/mcl_wool/locale/mcl_wool.de.tr index de758d1e..5b979d51 100644 --- a/mods/ITEMS/mcl_wool/locale/mcl_wool.de.tr +++ b/mods/ITEMS/mcl_wool/locale/mcl_wool.de.tr @@ -1,4 +1,6 @@ # textdomain: mcl_wool +Wool=Wolle +Carpet=Teppich White Wool=Weiße Wolle White Carpet=Weißer Teppich Grey Wool=Graue Wolle diff --git a/mods/ITEMS/mcl_wool/locale/template.txt b/mods/ITEMS/mcl_wool/locale/template.txt index 0358fb50..26de1ec7 100644 --- a/mods/ITEMS/mcl_wool/locale/template.txt +++ b/mods/ITEMS/mcl_wool/locale/template.txt @@ -1,4 +1,6 @@ # textdomain: mcl_wool +Wool= +Carpet= White Wool= White Carpet= Grey Wool= From 25048050a0c8e82c85e075f5305da8e340f19495 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sun, 24 Mar 2019 09:23:56 +0100 Subject: [PATCH 222/737] Remove dead code in mcl_chests --- mods/ITEMS/mcl_chests/init_new.lua | 878 ----------------------------- 1 file changed, 878 deletions(-) delete mode 100644 mods/ITEMS/mcl_chests/init_new.lua diff --git a/mods/ITEMS/mcl_chests/init_new.lua b/mods/ITEMS/mcl_chests/init_new.lua deleted file mode 100644 index 496740b5..00000000 --- a/mods/ITEMS/mcl_chests/init_new.lua +++ /dev/null @@ -1,878 +0,0 @@ -local S = minetest.get_translator("mcl_chests") - -local no_rotate, simple_rotate -if minetest.get_modpath("screwdriver") then - no_rotate = screwdriver.disallow - simple_rotate = screwdriver.rotate_simple -end - ---[[ List of open chests. -Key: Player name -Value: - If player is using a chest: { pos = } - Otherwise: nil ]] -local open_chests = {} --- To be called if a player opened a chest -local player_chest_open = function(player, pos) - open_chests[player:get_player_name()] = { pos = pos } -end - --- Simple protection checking functions -local protection_check_move = function(pos, from_list, from_index, to_list, to_index, count, player) - local name = player:get_player_name() - if minetest.is_protected(pos, name) then - minetest.record_protection_violation(pos, name) - return 0 - else - return count - end -end -local protection_check_put_take = function(pos, listname, index, stack, player) - local name = player:get_player_name() - if minetest.is_protected(pos, name) then - minetest.record_protection_violation(pos, name) - return 0 - else - return stack:get_count() - end -end - -local trapped_chest_mesecons_rules = mesecon.rules.pplate - --- To be called when a chest is closed (only relevant for trapped chest atm) -local chest_update_after_close = function(pos) - local node = minetest.get_node(pos) - - if node.name == "mcl_chests:trapped_chest_on" then - minetest.swap_node(pos, {name="mcl_chests:trapped_chest", param2 = node.param2}) - mesecon.receptor_off(pos, trapped_chest_mesecons_rules) - elseif node.name == "mcl_chests:trapped_chest_on_left" then - minetest.swap_node(pos, {name="mcl_chests:trapped_chest_left", param2 = node.param2}) - mesecon.receptor_off(pos, trapped_chest_mesecons_rules) - - local pos_other = mcl_util.get_double_container_neighbor_pos(pos, node.param2, "left") - minetest.swap_node(pos_other, {name="mcl_chests:trapped_chest_right", param2 = node.param2}) - mesecon.receptor_off(pos_other, trapped_chest_mesecons_rules) - elseif node.name == "mcl_chests:trapped_chest_on_right" then - minetest.swap_node(pos, {name="mcl_chests:trapped_chest_right", param2 = node.param2}) - mesecon.receptor_off(pos, trapped_chest_mesecons_rules) - - local pos_other = mcl_util.get_double_container_neighbor_pos(pos, node.param2, "right") - minetest.swap_node(pos_other, {name="mcl_chests:trapped_chest_left", param2 = node.param2}) - mesecon.receptor_off(pos_other, trapped_chest_mesecons_rules) - end -end - --- To be called if a player closed a chest -local player_chest_close = function(player) - local name = player:get_player_name() - if open_chests[name] == nil then - return - end - local pos = open_chests[name].pos - chest_update_after_close(pos) - - open_chests[name] = nil -end - --- This is a helper function to register both chests and trapped chests. Trapped chests will make use of the additional parameters -local register_chest = function(basename, desc, longdesc, usagehelp, tiles_table, hidden, mesecons, on_rightclick_addendum, on_rightclick_addendum_left, on_rightclick_addendum_right, drop, canonical_basename) --- START OF register_chest FUNCTION BODY -if not drop then - drop = "mcl_chests:"..basename -else - drop = "mcl_chests:"..drop -end --- The basename of the "canonical" version of the node, if set (e.g.: trapped_chest_on → trapped_chest). --- Used to get a shared formspec ID and to swap the node back to the canonical version in on_construct. -if not canonical_basename then - canonical_basename = basename -end - -minetest.register_node("mcl_chests:"..basename, { - description = desc, - _doc_items_longdesc = longdesc, - _doc_items_usagehelp = usagehelp, - _doc_items_hidden = hidden, - tiles = tiles_table.small, - paramtype = "light", - paramtype2 = "facedir", - stack_max = 64, - drop = drop, - groups = {handy=1,axey=1, container=2, deco_block=1, material_wood=1}, - is_ground_content = false, - sounds = mcl_sounds.node_sound_wood_defaults(), - on_construct = function(pos) - local param2 = minetest.get_node(pos).param2 - local meta = minetest.get_meta(pos) - --[[ This is a workaround for Minetest issue 5894 - . - Apparently if we don't do this, double chests initially don't work when - placed at chunk borders, and some chests randomly don't work after - placing. ]] - -- FIXME: Remove this workaround when the bug has been fixed. - -- BEGIN OF WORKAROUND -- - meta:set_string("workaround", "ignore_me") - meta:set_string("workaround", nil) -- Done to keep metadata clean - -- END OF WORKAROUND -- - local inv = meta:get_inventory() - inv:set_size("main", 9*3) - --[[ The "input" list is *another* workaround (hahahaha!) around the fact that Minetest - does not support listrings to put items into an alternative list if the first one - happens to be full. See . - This list is a hidden input-only list and immediately puts items into the appropriate chest. - It is only used for listrings and hoppers. This workaround is not that bad because it only - requires a simple “inventory allows” check for large chests.]] - -- FIXME: Refactor the listrings as soon Minetest supports alternative listrings - -- BEGIN OF LISTRING WORKAROUND - inv:set_size("input", 1) - -- END OF LISTRING WORKAROUND - if minetest.get_node(mcl_util.get_double_container_neighbor_pos(pos, param2, "right")).name == "mcl_chests:"..canonical_basename then - minetest.swap_node(pos, {name="mcl_chests:"..canonical_basename.."_right",param2=param2}) - local p = mcl_util.get_double_container_neighbor_pos(pos, param2, "right") - minetest.swap_node(p, { name = "mcl_chests:"..canonical_basename.."_left", param2 = param2 }) - elseif minetest.get_node(mcl_util.get_double_container_neighbor_pos(pos, param2, "left")).name == "mcl_chests:"..canonical_basename then - minetest.swap_node(pos, {name="mcl_chests:"..canonical_basename.."_left",param2=param2}) - local p = mcl_util.get_double_container_neighbor_pos(pos, param2, "left") - minetest.swap_node(p, { name = "mcl_chests:"..canonical_basename.."_right", param2 = param2 }) - else - minetest.swap_node(pos, { name = "mcl_chests:"..canonical_basename, param2 = param2 }) - end - end, - after_dig_node = function(pos, oldnode, oldmetadata, digger) - local meta = minetest.get_meta(pos) - local meta2 = meta - meta:from_table(oldmetadata) - local inv = meta:get_inventory() - for i=1,inv:get_size("main") do - local stack = inv:get_stack("main", i) - if not stack:is_empty() then - local p = {x=pos.x+math.random(0, 10)/10-0.5, y=pos.y, z=pos.z+math.random(0, 10)/10-0.5} - minetest.add_item(p, stack) - end - end - meta:from_table(meta2:to_table()) - end, - allow_metadata_inventory_move = protection_check_move, - allow_metadata_inventory_take = protection_check_put_take, - allow_metadata_inventory_put = protection_check_put_take, - on_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player) - minetest.log("action", player:get_player_name().. - " moves stuff in chest at "..minetest.pos_to_string(pos)) - end, - on_metadata_inventory_put = function(pos, listname, index, stack, player) - minetest.log("action", player:get_player_name().. - " moves stuff to chest at "..minetest.pos_to_string(pos)) - -- BEGIN OF LISTRING WORKAROUND - if listname == "input" then - local inv = minetest.get_inventory({type="node", pos=pos}) - inv:add_item("main", stack) - end - -- END OF LISTRING WORKAROUND - end, - on_metadata_inventory_take = function(pos, listname, index, stack, player) - minetest.log("action", player:get_player_name().. - " takes stuff from chest at "..minetest.pos_to_string(pos)) - end, - _mcl_blast_resistance = 2.5, - _mcl_hardness = 2.5, - - on_rightclick = function(pos, node, clicker) - minetest.show_formspec(clicker:get_player_name(), - "mcl_chests:"..canonical_basename.."_"..pos.x.."_"..pos.y.."_"..pos.z, - "size[9,8.75]".. - mcl_vars.inventory_header.. - "background[-0.19,-0.25;9.41,10.48;mcl_chests_inventory_chest.png]".. - "label[0,0;"..minetest.formspec_escape(minetest.colorize("#313131", S("Chest"))).."]".. - "list[nodemeta:"..pos.x..","..pos.y..","..pos.z..";main;0,0.5;9,3;]".. - "label[0,4.0;"..minetest.formspec_escape(minetest.colorize("#313131", S("Inventory"))).."]".. - "list[current_player;main;0,4.5;9,3;9]".. - "list[current_player;main;0,7.74;9,1;]".. - "listring[nodemeta:"..pos.x..","..pos.y..","..pos.z..";main]".. - "listring[current_player;main]") - - if on_rightclick_addendum then - on_rightclick_addendum(pos, node, clicker) - end - end, - - on_destruct = function(pos) - local players = minetest.get_connected_players() - for p=1, #players do - minetest.close_formspec(players[p]:get_player_name(), "mcl_chests:"..canonical_basename.."_"..pos.x.."_"..pos.y.."_"..pos.z) - end - end, - mesecons = mesecons, - on_rotate = simple_rotate, -}) - -minetest.register_node("mcl_chests:"..basename.."_left", { - tiles = tiles_table.left, - paramtype = "light", - paramtype2 = "facedir", - groups = {handy=1,axey=1, container=5,not_in_creative_inventory=1, material_wood=1}, - drop = drop, - is_ground_content = false, - sounds = mcl_sounds.node_sound_wood_defaults(), - on_construct = function(pos) - local n = minetest.get_node(pos) - local param2 = n.param2 - local p = mcl_util.get_double_container_neighbor_pos(pos, param2, "left") - if not p or minetest.get_node(p).name ~= "mcl_chests:"..canonical_basename.."_right" then - n.name = "mcl_chests:"..canonical_basename - minetest.swap_node(pos, n) - end - end, - on_destruct = function(pos) - local n = minetest.get_node(pos) - if n.name == "mcl_chests:"..basename then - return - end - - local players = minetest.get_connected_players() - for p=1, #players do - minetest.close_formspec(players[p]:get_player_name(), "mcl_chests:"..canonical_basename.."_"..pos.x.."_"..pos.y.."_"..pos.z) - end - - local param2 = n.param2 - local p = mcl_util.get_double_container_neighbor_pos(pos, param2, "left") - if not p or minetest.get_node(p).name ~= "mcl_chests:"..basename.."_right" then - return - end - for pl=1, #players do - minetest.close_formspec(players[pl]:get_player_name(), "mcl_chests:"..canonical_basename.."_"..p.x.."_"..p.y.."_"..p.z) - end - minetest.swap_node(p, { name = "mcl_chests:"..basename, param2 = param2 }) - end, - after_dig_node = function(pos, oldnode, oldmetadata, digger) - local meta = minetest.get_meta(pos) - local meta2 = meta - meta:from_table(oldmetadata) - local inv = meta:get_inventory() - for i=1,inv:get_size("main") do - local stack = inv:get_stack("main", i) - if not stack:is_empty() then - local p = {x=pos.x+math.random(0, 10)/10-0.5, y=pos.y, z=pos.z+math.random(0, 10)/10-0.5} - minetest.add_item(p, stack) - end - end - meta:from_table(meta2:to_table()) - end, - allow_metadata_inventory_move = protection_check_move, - allow_metadata_inventory_take = protection_check_put_take, - allow_metadata_inventory_put = function(pos, listname, index, stack, player) - local name = player:get_player_name() - if minetest.is_protected(pos, name) then - minetest.record_protection_violation(pos, name) - return 0 - -- BEGIN OF LISTRING WORKAROUND - elseif listname == "input" then - local inv = minetest.get_inventory({type="node", pos=pos}) - if inv:room_for_item("main", stack) then - return -1 - else - local other_pos = mcl_util.get_double_container_neighbor_pos(pos, minetest.get_node(pos).param2, "left") - local other_inv = minetest.get_inventory({type="node", pos=other_pos}) - if other_inv:room_for_item("main", stack) then - return -1 - else - return 0 - end - end - -- END OF LISTRING WORKAROUND - else - return stack:get_count() - end - end, - on_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player) - minetest.log("action", player:get_player_name().. - " moves stuff in chest at "..minetest.pos_to_string(pos)) - end, - on_metadata_inventory_put = function(pos, listname, index, stack, player) - minetest.log("action", player:get_player_name().. - " moves stuff to chest at "..minetest.pos_to_string(pos)) - -- BEGIN OF LISTRING WORKAROUND - if listname == "input" then - local inv = minetest.get_inventory({type="node", pos=pos}) - local leftover = inv:add_item("main", stack) - if not leftover:is_empty() then - local other_pos = mcl_util.get_double_container_neighbor_pos(pos, minetest.get_node(pos).param2, "left") - local other_inv = minetest.get_inventory({type="node", pos=other_pos}) - other_inv:add_item("main", leftover) - end - end - -- END OF LISTRING WORKAROUND - end, - on_metadata_inventory_take = function(pos, listname, index, stack, player) - minetest.log("action", player:get_player_name().. - " takes stuff from chest at "..minetest.pos_to_string(pos)) - end, - _mcl_blast_resistance = 2.5, - _mcl_hardness = 2.5, - - on_rightclick = function(pos, node, clicker) - local pos_other = mcl_util.get_double_container_neighbor_pos(pos, node.param2, "left") - - minetest.show_formspec(clicker:get_player_name(), - "mcl_chests:"..canonical_basename.."_"..pos.x.."_"..pos.y.."_"..pos.z, - "size[9,11.5]".. - "background[-0.19,-0.25;9.41,12.5;mcl_chests_inventory_chest_large.png]".. - mcl_vars.inventory_header.. - "label[0,0;"..minetest.formspec_escape(minetest.colorize("#313131", S("Large Chest"))).."]".. - "list[nodemeta:"..pos.x..","..pos.y..","..pos.z..";main;0,0.5;9,3;]".. - "list[nodemeta:"..pos_other.x..","..pos_other.y..","..pos_other.z..";main;0,3.5;9,3;]".. - "label[0,7;"..minetest.formspec_escape(minetest.colorize("#313131", S("Inventory"))).."]".. - "list[current_player;main;0,7.5;9,3;9]".. - "list[current_player;main;0,10.75;9,1;]".. - -- BEGIN OF LISTRING WORKAROUND - "listring[current_player;main]".. - "listring[nodemeta:"..pos.x..","..pos.y..","..pos.z..";input]".. - -- END OF LISTRING WORKAROUND - "listring[current_player;main]".. - "listring[nodemeta:"..pos.x..","..pos.y..","..pos.z..";main]".. - "listring[current_player;main]".. - "listring[nodemeta:"..pos_other.x..","..pos_other.y..","..pos_other.z..";main]") - - if on_rightclick_addendum_left then - on_rightclick_addendum_left(pos, node, clicker) - end - end, - mesecons = mesecons, - on_rotate = no_rotate, -}) - -minetest.register_node("mcl_chests:"..basename.."_right", { - tiles = tiles_table.right, - paramtype = "light", - paramtype2 = "facedir", - groups = {handy=1,axey=1, container=6,not_in_creative_inventory=1, material_wood=1}, - drop = drop, - is_ground_content = false, - sounds = mcl_sounds.node_sound_wood_defaults(), - on_construct = function(pos) - local n = minetest.get_node(pos) - local param2 = n.param2 - local p = mcl_util.get_double_container_neighbor_pos(pos, param2, "right") - if not p or minetest.get_node(p).name ~= "mcl_chests:"..canonical_basename.."_left" then - n.name = "mcl_chests:"..canonical_basename - minetest.swap_node(pos, n) - end - end, - on_destruct = function(pos) - local n = minetest.get_node(pos) - if n.name == "mcl_chests:"..basename then - return - end - - local players = minetest.get_connected_players() - for p=1, #players do - minetest.close_formspec(players[p]:get_player_name(), "mcl_chests:"..canonical_basename.."_"..pos.x.."_"..pos.y.."_"..pos.z) - end - - local param2 = n.param2 - local p = mcl_util.get_double_container_neighbor_pos(pos, param2, "right") - if not p or minetest.get_node(p).name ~= "mcl_chests:"..basename.."_left" then - return - end - for pl=1, #players do - minetest.close_formspec(players[pl]:get_player_name(), "mcl_chests:"..canonical_basename.."_"..p.x.."_"..p.y.."_"..p.z) - end - minetest.swap_node(p, { name = "mcl_chests:"..basename, param2 = param2 }) - end, - after_dig_node = function(pos, oldnode, oldmetadata, digger) - local meta = minetest.get_meta(pos) - local meta2 = meta - meta:from_table(oldmetadata) - local inv = meta:get_inventory() - for i=1,inv:get_size("main") do - local stack = inv:get_stack("main", i) - if not stack:is_empty() then - local p = {x=pos.x+math.random(0, 10)/10-0.5, y=pos.y, z=pos.z+math.random(0, 10)/10-0.5} - minetest.add_item(p, stack) - end - end - meta:from_table(meta2:to_table()) - end, - allow_metadata_inventory_move = protection_check_move, - allow_metadata_inventory_take = protection_check_put_take, - allow_metadata_inventory_put = function(pos, listname, index, stack, player) - local name = player:get_player_name() - if minetest.is_protected(pos, name) then - minetest.record_protection_violation(pos, name) - return 0 - -- BEGIN OF LISTRING WORKAROUND - elseif listname == "input" then - local other_pos = mcl_util.get_double_container_neighbor_pos(pos, minetest.get_node(pos).param2, "right") - local other_inv = minetest.get_inventory({type="node", pos=other_pos}) - if other_inv:room_for_item("main", stack) then - return -1 - else - local inv = minetest.get_inventory({type="node", pos=pos}) - if inv:room_for_item("main", stack) then - return -1 - else - return 0 - end - end - -- END OF LISTRING WORKAROUND - else - return stack:get_count() - end - end, - on_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player) - minetest.log("action", player:get_player_name().. - " moves stuff in chest at "..minetest.pos_to_string(pos)) - end, - on_metadata_inventory_put = function(pos, listname, index, stack, player) - minetest.log("action", player:get_player_name().. - " moves stuff to chest at "..minetest.pos_to_string(pos)) - -- BEGIN OF LISTRING WORKAROUND - if listname == "input" then - local other_pos = mcl_util.get_double_container_neighbor_pos(pos, minetest.get_node(pos).param2, "right") - local other_inv = minetest.get_inventory({type="node", pos=other_pos}) - local leftover = other_inv:add_item("main", stack) - if not leftover:is_empty() then - local inv = minetest.get_inventory({type="node", pos=pos}) - inv:add_item("main", leftover) - end - end - -- END OF LISTRING WORKAROUND - end, - on_metadata_inventory_take = function(pos, listname, index, stack, player) - minetest.log("action", player:get_player_name().. - " takes stuff from chest at "..minetest.pos_to_string(pos)) - end, - _mcl_blast_resistance = 2.5, - _mcl_hardness = 2.5, - - on_rightclick = function(pos, node, clicker) - local pos_other = mcl_util.get_double_container_neighbor_pos(pos, node.param2, "right") - - minetest.show_formspec(clicker:get_player_name(), - "mcl_chests:"..canonical_basename.."_"..pos.x.."_"..pos.y.."_"..pos.z, - - "size[9,11.5]".. - "background[-0.19,-0.25;9.41,12.5;mcl_chests_inventory_chest_large.png]".. - mcl_vars.inventory_header.. - "label[0,0;"..minetest.formspec_escape(minetest.colorize("#313131", S("Large Chest"))).."]".. - "list[nodemeta:"..pos_other.x..","..pos_other.y..","..pos_other.z..";main;0,0.5;9,3;]".. - "list[nodemeta:"..pos.x..","..pos.y..","..pos.z..";main;0,3.5;9,3;]".. - "label[0,7;"..minetest.formspec_escape(minetest.colorize("#313131", S("Inventory"))).."]".. - "list[current_player;main;0,7.5;9,3;9]".. - "list[current_player;main;0,10.75;9,1;]".. - -- BEGIN OF LISTRING WORKAROUND - "listring[current_player;main]".. - "listring[nodemeta:"..pos.x..","..pos.y..","..pos.z..";input]".. - -- END OF LISTRING WORKAROUND - "listring[current_player;main]".. - "listring[nodemeta:"..pos_other.x..","..pos_other.y..","..pos_other.z..";main]".. - "listring[current_player;main]".. - "listring[nodemeta:"..pos.x..","..pos.y..","..pos.z..";main]") - - if on_rightclick_addendum_right then - on_rightclick_addendum_right(pos, node, clicker) - end - end, - mesecons = mesecons, - on_rotate = no_rotate, -}) - -if minetest.get_modpath("doc") then - doc.add_entry_alias("nodes", "mcl_chests:"..basename, "nodes", "mcl_chests:"..basename.."_left") - doc.add_entry_alias("nodes", "mcl_chests:"..basename, "nodes", "mcl_chests:"..basename.."_right") -end - --- END OF register_chest FUNCTION BODY -end - -local chestusage = S("To access its inventory, rightclick it. When broken, the items will drop out.") - -register_chest("chest", - S("Chest"), - S("Chests are containers which provide 27 inventory slots. Chests can be turned into large chests with double the capacity by placing two chests next to each other."), - chestusage, - { - small = {"default_chest_top.png", "mcl_chests_chest_bottom.png", - "mcl_chests_chest_right.png", "mcl_chests_chest_left.png", - "mcl_chests_chest_back.png", "default_chest_front.png"}, - left = {"default_chest_top_big.png", "default_chest_top_big.png", - "mcl_chests_chest_right.png", "mcl_chests_chest_left.png", - "default_chest_side_big.png^[transformFX", "default_chest_front_big.png"}, - right = {"default_chest_top_big.png^[transformFX", "default_chest_top_big.png^[transformFX", - "mcl_chests_chest_right.png", "mcl_chests_chest_left.png", - "default_chest_side_big.png", "default_chest_front_big.png^[transformFX"}, - }, - false -) - -local traptiles = { - small = {"mcl_chests_chest_trapped_top.png", "mcl_chests_chest_trapped_bottom.png", - "mcl_chests_chest_trapped_right.png", "mcl_chests_chest_trapped_left.png", - "mcl_chests_chest_trapped_back.png", "mcl_chests_chest_trapped_front.png"}, - left = {"mcl_chests_chest_trapped_top_big.png", "mcl_chests_chest_trapped_top_big.png", - "mcl_chests_chest_trapped_right.png", "mcl_chests_chest_trapped_left.png", - "mcl_chests_chest_trapped_side_big.png^[transformFX", "mcl_chests_chest_trapped_front_big.png"}, - right = {"mcl_chests_chest_trapped_top_big.png^[transformFX", "mcl_chests_chest_trapped_top_big.png^[transformFX", - "mcl_chests_chest_trapped_right.png", "mcl_chests_chest_trapped_left.png", - "mcl_chests_chest_trapped_side_big.png", "mcl_chests_chest_trapped_front_big.png^[transformFX"}, -} - -register_chest("trapped_chest", - S("Trapped Chest"), - S("A trapped chest is a container which provides 27 inventory slots. When it is opened, it sends a redstone signal to its adjacent blocks as long it stays open. Trapped chests can be turned into large trapped chests with double the capacity by placing two trapped chests next to each other."), - chestusage, - traptiles, - nil, - {receptor = { - state = mesecon.state.off, - rules = trapped_chest_mesecons_rules, - }}, - function(pos, node, clicker) - minetest.swap_node(pos, {name="mcl_chests:trapped_chest_on", param2 = node.param2}) - mesecon.receptor_on(pos, trapped_chest_mesecons_rules) - player_chest_open(clicker, pos) - end, - function(pos, node, clicker) - local meta = minetest.get_meta(pos) - meta:set_int("players", 1) - - minetest.swap_node(pos, {name="mcl_chests:trapped_chest_on_left", param2 = node.param2}) - mesecon.receptor_on(pos, trapped_chest_mesecons_rules) - - local pos_other = mcl_util.get_double_container_neighbor_pos(pos, node.param2, "left") - minetest.swap_node(pos_other, {name="mcl_chests:trapped_chest_on_right", param2 = node.param2}) - mesecon.receptor_on(pos_other, trapped_chest_mesecons_rules) - - player_chest_open(clicker, pos) - end, - function(pos, node, clicker) - local pos_other = mcl_util.get_double_container_neighbor_pos(pos, node.param2, "right") - - minetest.swap_node(pos, {name="mcl_chests:trapped_chest_on_right", param2 = node.param2}) - mesecon.receptor_on(pos, trapped_chest_mesecons_rules) - - minetest.swap_node(pos_other, {name="mcl_chests:trapped_chest_on_left", param2 = node.param2}) - mesecon.receptor_on(pos_other, trapped_chest_mesecons_rules) - - player_chest_open(clicker, pos) - end -) - -register_chest("trapped_chest_on", - nil, nil, nil, traptiles, true, - {receptor = { - state = mesecon.state.on, - rules = trapped_chest_mesecons_rules, - }}, - function(pos, node, clicker) - player_chest_open(clicker, pos) - end, - function(pos, node, clicker) - player_chest_open(clicker, pos) - end, - function(pos, node, clicker) - player_chest_open(clicker, pos) - end, - "trapped_chest", - "trapped_chest" -) - -local function close_if_trapped_chest(pos, player) - local node = minetest.get_node(pos) - - if node.name == "mcl_chests:trapped_chest_on" then - minetest.swap_node(pos, {name="mcl_chests:trapped_chest", param2 = node.param2}) - mesecon.receptor_off(pos, trapped_chest_mesecons_rules) - - player_chest_close(player) - elseif node.name == "mcl_chests:trapped_chest_on_left" then - minetest.swap_node(pos, {name="mcl_chests:trapped_chest_left", param2 = node.param2}) - mesecon.receptor_off(pos, trapped_chest_mesecons_rules) - - local pos_other = mcl_util.get_double_container_neighbor_pos(pos, node.param2, "left") - minetest.swap_node(pos_other, {name="mcl_chests:trapped_chest_right", param2 = node.param2}) - mesecon.receptor_off(pos_other, trapped_chest_mesecons_rules) - - player_chest_close(player) - elseif node.name == "mcl_chests:trapped_chest_on_right" then - minetest.swap_node(pos, {name="mcl_chests:trapped_chest_right", param2 = node.param2}) - mesecon.receptor_off(pos, trapped_chest_mesecons_rules) - - local pos_other = mcl_util.get_double_container_neighbor_pos(pos, node.param2, "right") - minetest.swap_node(pos_other, {name="mcl_chests:trapped_chest_left", param2 = node.param2}) - mesecon.receptor_off(pos_other, trapped_chest_mesecons_rules) - - player_chest_close(player) - end -end - --- Disable trapped chest when it has been closed -minetest.register_on_player_receive_fields(function(player, formname, fields) - if formname:find("mcl_chests:trapped_chest_") == 1 then - if fields.quit then - player_chest_close(player) - end - end -end) - -minetest.register_on_leaveplayer(function(player) - player_chest_close(player) -end) - -minetest.register_craft({ - output = 'mcl_chests:chest', - recipe = { - {'group:wood', 'group:wood', 'group:wood'}, - {'group:wood', '', 'group:wood'}, - {'group:wood', 'group:wood', 'group:wood'}, - } -}) - -minetest.register_craft({ - type = 'fuel', - recipe = 'mcl_chests:chest', - burntime = 15 -}) - -minetest.register_craft({ - type = 'fuel', - recipe = 'mcl_chests:trapped_chest', - burntime = 15 -}) - -minetest.register_node("mcl_chests:ender_chest", { - description = S("Ender Chest"), - _doc_items_longdesc = S("Ender chests grant you access to a single personal interdimensional inventory with 27 slots. This inventory is the same no matter from which ender chest you access it from. If you put one item into one ender chest, you will find it in all other ender chests. Each player will only see their own items, but not the items of other players."), - _doc_items_usagehelp = S("Rightclick the ender chest to access your personal interdimensional inventory."), - tiles = {"mcl_chests_ender_chest_top.png", "mcl_chests_ender_chest_bottom.png", - "mcl_chests_ender_chest_right.png", "mcl_chests_ender_chest_left.png", - "mcl_chests_ender_chest_back.png", "mcl_chests_ender_chest_front.png"}, - -- Note: The “container” group is missing here because the ender chest does not - -- have an inventory on its own - groups = {pickaxey=1, deco_block=1, material_stone=1}, - is_ground_content = false, - paramtype = "light", - light_source = 7, - paramtype2 = "facedir", - sounds = mcl_sounds.node_sound_stone_defaults(), - drop = "mcl_core:obsidian 8", - on_construct = function(pos) - local meta = minetest.get_meta(pos) - meta:set_string("formspec", - "size[9,8.75]".. - mcl_vars.inventory_header.. - "background[-0.19,-0.25;9.41,10.48;mcl_chests_inventory_chest.png]".. - "label[0,0;"..minetest.formspec_escape(minetest.colorize("#313131", S("Ender Chest"))).."]".. - "list[current_player;enderchest;0,0.5;9,3;]".. - "label[0,4.0;"..minetest.formspec_escape(minetest.colorize("#313131", S("Inventory"))).."]".. - "list[current_player;main;0,4.5;9,3;9]".. - "list[current_player;main;0,7.74;9,1;]".. - "listring[current_player;enderchest]".. - "listring[current_player;main]") - end, - _mcl_blast_resistance = 3000, - _mcl_hardness = 22.5, - on_rotate = simple_rotate, -}) - -minetest.register_lbm({ - label = "Update ender chest + shulker box formspecs (0.51.0)", - name = "mcl_chests:update_formspecs_0_51_0", - nodenames = { "mcl_chests:ender_chest", "group:shulker_box" }, - action = function(pos, node) - minetest.registered_nodes[node.name].on_construct(pos) - minetest.log("action", "[mcl_chests] Node formspec updated at "..minetest.pos_to_string(pos)) - end, -}) - -minetest.register_on_joinplayer(function(player) - local inv = player:get_inventory() - inv:set_size("enderchest", 9*3) -end) - -minetest.register_craft({ - output = 'mcl_chests:ender_chest', - recipe = { - {'mcl_core:obsidian', 'mcl_core:obsidian', 'mcl_core:obsidian'}, - {'mcl_core:obsidian', 'mcl_end:ender_eye', 'mcl_core:obsidian'}, - {'mcl_core:obsidian', 'mcl_core:obsidian', 'mcl_core:obsidian'}, - } -}) - --- Shulker boxes -local boxtypes = { - white = S("White Shulker Box"), - grey = S("Light Grey Shulker Box"), - orange = S("Orange Shulker Box"), - cyan = S("Cyan Shulker Box"), - magenta = S("Magenta Shulker Box"), - violet = S("Purple Shulker Box"), - lightblue = S("Light Blue Shulker Box"), - blue = S("Blue Shulker Box"), - yellow = S("Yellow Shulker Box"), - brown = S("Brown Shulker Box"), - green = S("Lime Shulker Box"), - dark_green = S("Green Shulker Box"), - pink = S("Pink Shulker Box"), - red = S("Red Shulker Box"), - dark_grey = S("Grey Shulker Box"), - black = S("Black Shulker Box"), -} - -local shulker_mob_textures = { - white = "mobs_mc_shulker_white.png", - grey = "mobs_mc_shulker_silver.png", - orange = "mobs_mc_shulker_orange.png", - cyan = "mobs_mc_shulker_cyan.png", - magenta = "mobs_mc_shulker_magenta.png", - violet = "mobs_mc_shulker_purple.png", - lightblue = "mobs_mc_shulker_light_blue.png", - blue = "mobs_mc_shulker_blue.png", - yellow = "mobs_mc_shulker_yellow.png", - brown = "mobs_mc_shulker_brown.png", - green = "mobs_mc_shulker_lime.png", - dark_green = "mobs_mc_shulker_green.png", - pink = "mobs_mc_shulker_pink.png", - red = "mobs_mc_shulker_red.png", - dark_grey = "mobs_mc_shulker_gray.png", - black = "mobs_mc_shulker_black.png", -} - -for color, desc in pairs(boxtypes) do - local mob_texture = shulker_mob_textures[color] - minetest.register_node("mcl_chests:"..color.."_shulker_box", { - description = desc, - _doc_items_longdesc = S("A shulker box is a portable container which provides 27 inventory slots for any item except shulker boxes. Shulker boxes keep their inventory when broken, so shulker boxes as well as their contents can be taken as a single item. Shulker boxes come in many different colors."), - _doc_items_usagehelp = S("To access the inventory of a shulker box, place and right-click it. To take a shulker box and its contents with you, just break and collect it, the items will not fall out."), - tiles = { - "mcl_chests_"..color.."_shulker_box_top.png", -- top - "[combine:16x16:-32,-28="..mob_texture, -- bottom - "[combine:16x16:0,-36="..mob_texture..":0,-16="..mob_texture, -- side - "[combine:16x16:-32,-36="..mob_texture..":-32,-16="..mob_texture, -- side - "[combine:16x16:-16,-36="..mob_texture..":-16,-16="..mob_texture, -- side - "[combine:16x16:-48,-36="..mob_texture..":-48,-16="..mob_texture, -- side - }, - groups = {handy=1,pickaxey=1, container=3, deco_block=1, dig_by_piston=1, shulker_box=1}, - is_ground_content = false, - sounds = mcl_sounds.node_sound_stone_defaults(), - stack_max = 1, - drop = "", - paramtype = "light", - paramtype2 = "facedir", --- TODO: Make shulker boxes rotatable --- This doesn't work, it just destroys the inventory: --- on_place = minetest.rotate_node, - on_construct = function(pos) - local meta = minetest.get_meta(pos) - meta:set_string("formspec", - "size[9,8.75]".. - mcl_vars.inventory_header.. - "background[-0.19,-0.25;9.41,10.48;mcl_chests_inventory_chest.png]".. - "label[0,0;"..minetest.formspec_escape(minetest.colorize("#313131", S("Shulker Box"))).."]".. - "list[current_name;main;0,0.5;9,3;]".. - "label[0,4.0;"..minetest.formspec_escape(minetest.colorize("#313131", S("Inventory"))).."]".. - "list[current_player;main;0,4.5;9,3;9]".. - "list[current_player;main;0,7.74;9,1;]".. - "listring[current_name;main]".. - "listring[current_player;main]") - local inv = meta:get_inventory() - inv:set_size("main", 9*3) - end, - _on_dispense = function(stack, pos, droppos, dropnode, dropdir) - -- Place shulker box as node - if minetest.registered_nodes[dropnode.name].buildable_to then - minetest.set_node(droppos, {name = stack:get_name(), param2 = minetest.dir_to_facedir(dropdir)}) - local imeta = stack:get_metadata() - local iinv_main = minetest.deserialize(imeta) - local ninv = minetest.get_inventory({type="node", pos=droppos}) - ninv:set_list("main", iinv_main) - stack:take_item() - end - return stack - end, - after_place_node = function(pos, placer, itemstack, pointed_thing) - local nmeta = minetest.get_meta(pos) - local ninv = nmeta:get_inventory() - local imeta = itemstack:get_metadata() - local iinv_main = minetest.deserialize(imeta) - ninv:set_list("main", iinv_main) - ninv:set_size("main", 9*3) - if minetest.settings:get_bool("creative_mode") then - if not ninv:is_empty("main") then - return nil - else - return itemstack - end - else - return nil - end - end, - on_destruct = function(pos) - local meta = minetest.get_meta(pos) - local inv = meta:get_inventory() - local items = {} - for i=1, inv:get_size("main") do - local stack = inv:get_stack("main", i) - items[i] = stack:to_string() - end - local data = minetest.serialize(items) - local boxitem = ItemStack("mcl_chests:"..color.."_shulker_box") - boxitem:set_metadata(data) - - if minetest.settings:get_bool("creative_mode") then - if not inv:is_empty("main") then - minetest.add_item(pos, boxitem) - end - else - minetest.add_item(pos, boxitem) - end - end, - allow_metadata_inventory_move = protection_check_move, - allow_metadata_inventory_take = protection_check_put_take, - allow_metadata_inventory_put = function(pos, listname, index, stack, player) - local name = player:get_player_name() - if minetest.is_protected(pos, name) then - minetest.record_protection_violation(pos, name) - return 0 - end - -- Do not allow to place shulker boxes into shulker boxes - local group = minetest.get_item_group(stack:get_name(), "shulker_box") - if group == 0 or group == nil then - return stack:get_count() - else - return 0 - end - end, - _mcl_blast_resistance = 30, - _mcl_hardness = 6, - }) - - minetest.register_craft({ - type = "shapeless", - output = 'mcl_chests:'..color..'_shulker_box', - recipe = { 'group:shulker_box', 'mcl_dye:'..color } - }) -end - -minetest.register_craft({ - output = 'mcl_chests:violet_shulker_box', - recipe = { - {'mcl_mobitems:shulker_shell'}, - {'mcl_chests:chest'}, - {'mcl_mobitems:shulker_shell'}, - } -}) - -minetest.register_lbm({ - -- Disable active/open trapped chests when loaded because nobody could - -- have them open at loading time. - -- Fixes redstone weirdness. - label = "Disable active trapped chests", - name = "mcl_chests:reset_trapped_chests", - nodenames = { "mcl_chests:trapped_chest_on", "mcl_chests:trapped_chest_on_left", "mcl_chests:trapped_chest_on_right" }, - run_at_every_load = true, - action = function(pos, node) - minetest.log("error", "lbm!" ..minetest.pos_to_string(pos)) - chest_update_after_close(pos) - end, -}) From b404e8b5bd56e3a6b032f3ea8de70aa838f702a9 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sun, 24 Mar 2019 09:30:15 +0100 Subject: [PATCH 223/737] Squash help entries for shulker boxes --- mods/ITEMS/mcl_chests/init.lua | 26 ++++++++++++++++--- mods/ITEMS/mcl_chests/locale/mcl_chests.de.tr | 2 +- 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/mods/ITEMS/mcl_chests/init.lua b/mods/ITEMS/mcl_chests/init.lua index 496740b5..39af9a21 100644 --- a/mods/ITEMS/mcl_chests/init.lua +++ b/mods/ITEMS/mcl_chests/init.lua @@ -1,4 +1,5 @@ local S = minetest.get_translator("mcl_chests") +local mod_doc = minetest.get_modpath("doc") local no_rotate, simple_rotate if minetest.get_modpath("screwdriver") then @@ -477,7 +478,7 @@ minetest.register_node("mcl_chests:"..basename.."_right", { on_rotate = no_rotate, }) -if minetest.get_modpath("doc") then +if mod_doc then doc.add_entry_alias("nodes", "mcl_chests:"..basename, "nodes", "mcl_chests:"..basename.."_left") doc.add_entry_alias("nodes", "mcl_chests:"..basename, "nodes", "mcl_chests:"..basename.."_right") end @@ -737,13 +738,28 @@ local shulker_mob_textures = { dark_grey = "mobs_mc_shulker_gray.png", black = "mobs_mc_shulker_black.png", } +local canonical_shulker_color = "violet" for color, desc in pairs(boxtypes) do local mob_texture = shulker_mob_textures[color] + local is_canonical = color == canonical_shulker_color + local longdesc, usagehelp, create_entry, entry_name + if mod_doc then + if is_canonical then + longdesc = S("A shulker box is a portable container which provides 27 inventory slots for any item except shulker boxes. Shulker boxes keep their inventory when broken, so shulker boxes as well as their contents can be taken as a single item. Shulker boxes come in many different colors.") + usagehelp = S("To access the inventory of a shulker box, place and right-click it. To take a shulker box and its contents with you, just break and collect it, the items will not fall out.") + entry_name = S("Shulker Box") + else + create_entry = false + end + end + minetest.register_node("mcl_chests:"..color.."_shulker_box", { description = desc, - _doc_items_longdesc = S("A shulker box is a portable container which provides 27 inventory slots for any item except shulker boxes. Shulker boxes keep their inventory when broken, so shulker boxes as well as their contents can be taken as a single item. Shulker boxes come in many different colors."), - _doc_items_usagehelp = S("To access the inventory of a shulker box, place and right-click it. To take a shulker box and its contents with you, just break and collect it, the items will not fall out."), + _doc_items_create_entry = create_entry, + _doc_items_entry_name = entry_name, + _doc_items_longdesc = longdesc, + _doc_items_usagehelp = usagehelp, tiles = { "mcl_chests_"..color.."_shulker_box_top.png", -- top "[combine:16x16:-32,-28="..mob_texture, -- bottom @@ -847,6 +863,10 @@ for color, desc in pairs(boxtypes) do _mcl_hardness = 6, }) + if mod_doc and not is_canonical then + doc.add_entry_alias("nodes", "mcl_chests:"..canonical_shulker_color.."_shulker_box", "nodes", "mcl_chests:"..color.."_shulker_box") + end + minetest.register_craft({ type = "shapeless", output = 'mcl_chests:'..color..'_shulker_box', diff --git a/mods/ITEMS/mcl_chests/locale/mcl_chests.de.tr b/mods/ITEMS/mcl_chests/locale/mcl_chests.de.tr index 9a3d363f..6141c96a 100644 --- a/mods/ITEMS/mcl_chests/locale/mcl_chests.de.tr +++ b/mods/ITEMS/mcl_chests/locale/mcl_chests.de.tr @@ -23,7 +23,7 @@ Pink Shulker Box=Rosa Schulkerkiste Red Shulker Box=Rote Schulkerkiste Grey Shulker Box=Graue Schulkerkiste Black Shulker Box=Schwarze Schulkerkiste -A shulker box is a portable container which provides 27 inventory slots for any item except shulker boxes. Shulker boxes keep their inventory when broken, so shulker boxes as well as their contents can be taken as a single item. Shulker boxes come in many different colors.=Eine Schulkerkiste ist ein tragbarer Behälter der 27 Inventarplätze für alle Gegenstände außer Schulkerkisten bietet. Schulkerkisten behalten ihr Inventar, wenn sie abgebaut werden, also können Schulkerkisten so wie ihr Inhalt als einzelne Gegenstände mitgenommen werden. Schulkerkisten gibt es in vielen verschiedenen Farben. +A shulker box is a portable container which provides 27 inventory slots for any item except shulker boxes. Shulker boxes keep their inventory when broken, so shulker boxes as well as their contents can be taken as a single item. Shulker boxes come in many different colors.=Eine Schulkerkiste ist ein tragbarer Behälter, der 27 Inventarplätze für alle Gegenstände außer Schulkerkisten bietet. Schulkerkisten behalten ihr Inventar, wenn sie abgebaut werden, also können Schulkerkisten so wie ihr Inhalt als einzelne Gegenstände mitgenommen werden. Schulkerkisten gibt es in vielen verschiedenen Farben. To access the inventory of a shulker box, place and right-click it. To take a shulker box and its contents with you, just break and collect it, the items will not fall out.=Um auf das Inventar einer Schulkerkiste zuzugreifen, platzieren Sie sie und rechtsklicken sie auf ihr. Um eine Schulkerkiste und ihren Inhalt mitzunehmen, bauen Sie sie einfach ab und sammeln Sie sie auf, der Inhalt will nicht hinausfallen. Shulker Box=Schulkerkiste Large Chest=Große Truhe From 7604b77dd6497a4d0e225473d44e57201ebc0562 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sun, 24 Mar 2019 09:37:15 +0100 Subject: [PATCH 224/737] Add generic strings for stained glass --- mods/ITEMS/mcl_core/locale/mcl_core.de.tr | 1 + mods/ITEMS/mcl_core/locale/template.tr | 1 + mods/ITEMS/xpanes/locale/template.txt | 1 + mods/ITEMS/xpanes/locale/xpanes.de.tr | 1 + 4 files changed, 4 insertions(+) diff --git a/mods/ITEMS/mcl_core/locale/mcl_core.de.tr b/mods/ITEMS/mcl_core/locale/mcl_core.de.tr index 44d38070..e53bbf29 100644 --- a/mods/ITEMS/mcl_core/locale/mcl_core.de.tr +++ b/mods/ITEMS/mcl_core/locale/mcl_core.de.tr @@ -244,3 +244,4 @@ Water interacts with lava in various ways:=Wasser reagiert mit Lava auf untersch Lava interacts with water various ways:=Lava reagiert mit Wasser auf verschiedene Arten: • When a lava source is directly below or horizontally next to water, the lava turns into obsidian.=• Wenn sich eine Lavaquelle direkt unter oder horizontal neben Wasser befindet, verwandelt sich die Lava zu Obsidian. • When lava is directly above water, the water turns into stone.=• Wenn sich Lava direkt über Wasser befindet, verwandelt sich das Wasser zu Stein. +Stained Glass=Buntglas diff --git a/mods/ITEMS/mcl_core/locale/template.tr b/mods/ITEMS/mcl_core/locale/template.tr index 175107b7..e8313e80 100644 --- a/mods/ITEMS/mcl_core/locale/template.tr +++ b/mods/ITEMS/mcl_core/locale/template.tr @@ -243,3 +243,4 @@ Water interacts with lava in various ways:= Lava interacts with water various ways:= • When a lava source is directly below or horizontally next to water, the lava turns into obsidian.= • When lava is directly above water, the water turns into stone.= +Stained Glass= diff --git a/mods/ITEMS/xpanes/locale/template.txt b/mods/ITEMS/xpanes/locale/template.txt index ad8c1b5e..1c227e1c 100644 --- a/mods/ITEMS/xpanes/locale/template.txt +++ b/mods/ITEMS/xpanes/locale/template.txt @@ -3,6 +3,7 @@ Glass panes are thin layers of glass which neatly connect to their neighbors as Iron Bars= Iron bars neatly connect to their neighbors as you build them.= Glass Pane= +Stained Glass Pane= Red Stained Glass Pane= Green Stained Glass Pane= Blue Stained Glass Pane= diff --git a/mods/ITEMS/xpanes/locale/xpanes.de.tr b/mods/ITEMS/xpanes/locale/xpanes.de.tr index 1a024e74..c6e8bbfa 100644 --- a/mods/ITEMS/xpanes/locale/xpanes.de.tr +++ b/mods/ITEMS/xpanes/locale/xpanes.de.tr @@ -3,6 +3,7 @@ Glass panes are thin layers of glass which neatly connect to their neighbors as Iron Bars=Eisenstangen Iron bars neatly connect to their neighbors as you build them.=Eisenstangen verbinden sich mit den Nachbarn, wenn sie gebaut werden. Glass Pane=Glasscheibe +Stained Glass Pane=Buntglasscheibe Red Stained Glass Pane=Rote Buntglasscheibe Green Stained Glass Pane=Grüne Buntglasscheibe Blue Stained Glass Pane=Blaue Buntglasscheibe From 258235050434babea059d45bdc4e21e91faab482 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sun, 24 Mar 2019 09:37:48 +0100 Subject: [PATCH 225/737] mcl_core: Rename locale template --- mods/ITEMS/mcl_core/locale/{template.tr => template.txt} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename mods/ITEMS/mcl_core/locale/{template.tr => template.txt} (100%) diff --git a/mods/ITEMS/mcl_core/locale/template.tr b/mods/ITEMS/mcl_core/locale/template.txt similarity index 100% rename from mods/ITEMS/mcl_core/locale/template.tr rename to mods/ITEMS/mcl_core/locale/template.txt From 5c1717971b4b02fa2568e294149489eba2bc9640 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sun, 24 Mar 2019 10:31:58 +0100 Subject: [PATCH 226/737] Squash help entries for stained glass and panes --- mods/ITEMS/mcl_core/locale/mcl_core.de.tr | 2 +- mods/ITEMS/mcl_core/nodes_glass.lua | 55 +++++++++++++++-------- mods/ITEMS/xpanes/init.lua | 25 +++++++++-- 3 files changed, 58 insertions(+), 24 deletions(-) diff --git a/mods/ITEMS/mcl_core/locale/mcl_core.de.tr b/mods/ITEMS/mcl_core/locale/mcl_core.de.tr index e53bbf29..e5e52865 100644 --- a/mods/ITEMS/mcl_core/locale/mcl_core.de.tr +++ b/mods/ITEMS/mcl_core/locale/mcl_core.de.tr @@ -199,7 +199,7 @@ Spruce Sapling=Fichtensetzling Spruce Wood=Fichtenholz Spruce Wood Planks=Fichtenholzplanken Spruce leaves are grown from spruce trees.=Fichtenblätter wachsen an Fichten. -Stained glass is a decorative and mostly transparent block which comes in various different colors.=Farbglas ist ein dekorativer und größtenteils durchsichtiger Block, der in verschiedenen Farben daherkommt. +Stained glass is a decorative and mostly transparent block which comes in various different colors.=Buntglas ist ein dekorativer und größtenteils durchsichtiger Block, der in verschiedenen Farben daherkommt. Stick=Stock Sticks are a very versatile crafting material; used in countless crafting recipes.=Stöcke sind ein vielseitiges Material, sie werden in zahllosen Fertigungsrezepten gebraucht. Stone=Stein diff --git a/mods/ITEMS/mcl_core/nodes_glass.lua b/mods/ITEMS/mcl_core/nodes_glass.lua index f87ce79b..d1ab9986 100644 --- a/mods/ITEMS/mcl_core/nodes_glass.lua +++ b/mods/ITEMS/mcl_core/nodes_glass.lua @@ -1,5 +1,6 @@ -- Glass nodes local S = minetest.get_translator("mcl_core") +local mod_doc = minetest.get_modpath("doc") minetest.register_node("mcl_core:glass", { description = S("Glass"), @@ -20,11 +21,23 @@ minetest.register_node("mcl_core:glass", { ------------------------ -- Create Color Glass -- ------------------------ -function mcl_core.add_glass(desc, recipeitem, colorgroup, color) +local canonical_color = "blue" +function mcl_core.add_stained_glass(desc, recipeitem, colorgroup, color) + local longdesc, create_entry, entry_name + if mod_doc then + if color == canonical_color then + longdesc = S("Stained glass is a decorative and mostly transparent block which comes in various different colors.") + entry_name = S("Stained Glass") + else + create_entry = false + end + end minetest.register_node("mcl_core:glass_"..color, { description = desc, - _doc_items_longdesc = S("Stained glass is a decorative and mostly transparent block which comes in various different colors."), + _doc_items_create_entry = create_entry, + _doc_items_entry_name = entry_name, + _doc_items_longdesc = longdesc, drawtype = "glasslike", is_ground_content = false, tiles = {"mcl_core_glass_"..color..".png"}, @@ -48,23 +61,27 @@ function mcl_core.add_glass(desc, recipeitem, colorgroup, color) {'mcl_core:glass','mcl_core:glass','mcl_core:glass'}, } }) + + if mod_doc and color ~= canonical_color then + doc.add_entry_alias("nodes", "mcl_core:glass_"..canonical_color, "nodes", "mcl_core:glass_"..color) + end + end ---- colored glass -mcl_core.add_glass( S("Red Stained Glass"), "mcl_dye:red", "basecolor_red", "red") -mcl_core.add_glass( S("Green Stained Glass"), "mcl_dye:dark_green", "unicolor_dark_green", "green") -mcl_core.add_glass( S("Blue Stained Glass"), "mcl_dye:blue", "basecolor_blue", "blue") -mcl_core.add_glass( S("Light Blue Stained Glass"), "mcl_dye:lightblue", "unicolor_light_blue", "light_blue") -mcl_core.add_glass( S("Black Stained Glass"), "mcl_dye:black", "basecolor_black", "black") -mcl_core.add_glass( S("White Stained Glass"), "mcl_dye:white", "basecolor_white", "white") -mcl_core.add_glass( S("Yellow Stained Glass"), "mcl_dye:yellow", "basecolor_yellow", "yellow") -mcl_core.add_glass( S("Brown Stained Glass"), "mcl_dye:brown", "unicolor_dark_orange", "brown") -mcl_core.add_glass( S("Orange Stained Glass"), "mcl_dye:orange", "excolor_orange", "orange") -mcl_core.add_glass( S("Pink Stained Glass"), "mcl_dye:pink", "unicolor_light_red", "pink") -mcl_core.add_glass( S("Grey Stained Glass"), "mcl_dye:dark_grey", "unicolor_darkgrey", "gray") -mcl_core.add_glass( S("Lime Stained Glass"), "mcl_dye:green", "basecolor_green", "lime") -mcl_core.add_glass( S("Light Grey Stained Glass"), "mcl_dye:grey", "basecolor_grey", "silver") -mcl_core.add_glass( S("Magenta Stained Glass"), "mcl_dye:magenta", "basecolor_magenta", "magenta") -mcl_core.add_glass( S("Purple Stained Glass"), "mcl_dye:violet", "excolor_violet", "purple") -mcl_core.add_glass( S("Cyan Stained Glass"), "mcl_dye:cyan", "basecolor_cyan", "cyan") - +mcl_core.add_stained_glass( S("Red Stained Glass"), "mcl_dye:red", "basecolor_red", "red") +mcl_core.add_stained_glass( S("Green Stained Glass"), "mcl_dye:dark_green", "unicolor_dark_green", "green") +mcl_core.add_stained_glass( S("Blue Stained Glass"), "mcl_dye:blue", "basecolor_blue", "blue") +mcl_core.add_stained_glass( S("Light Blue Stained Glass"), "mcl_dye:lightblue", "unicolor_light_blue", "light_blue") +mcl_core.add_stained_glass( S("Black Stained Glass"), "mcl_dye:black", "basecolor_black", "black") +mcl_core.add_stained_glass( S("White Stained Glass"), "mcl_dye:white", "basecolor_white", "white") +mcl_core.add_stained_glass( S("Yellow Stained Glass"), "mcl_dye:yellow", "basecolor_yellow", "yellow") +mcl_core.add_stained_glass( S("Brown Stained Glass"), "mcl_dye:brown", "unicolor_dark_orange", "brown") +mcl_core.add_stained_glass( S("Orange Stained Glass"), "mcl_dye:orange", "excolor_orange", "orange") +mcl_core.add_stained_glass( S("Pink Stained Glass"), "mcl_dye:pink", "unicolor_light_red", "pink") +mcl_core.add_stained_glass( S("Grey Stained Glass"), "mcl_dye:dark_grey", "unicolor_darkgrey", "gray") +mcl_core.add_stained_glass( S("Lime Stained Glass"), "mcl_dye:green", "basecolor_green", "lime") +mcl_core.add_stained_glass( S("Light Grey Stained Glass"), "mcl_dye:grey", "basecolor_grey", "silver") +mcl_core.add_stained_glass( S("Magenta Stained Glass"), "mcl_dye:magenta", "basecolor_magenta", "magenta") +mcl_core.add_stained_glass( S("Purple Stained Glass"), "mcl_dye:violet", "excolor_violet", "purple") +mcl_core.add_stained_glass( S("Cyan Stained Glass"), "mcl_dye:cyan", "basecolor_cyan", "cyan") diff --git a/mods/ITEMS/xpanes/init.lua b/mods/ITEMS/xpanes/init.lua index e5e72b3e..d4c7370f 100644 --- a/mods/ITEMS/xpanes/init.lua +++ b/mods/ITEMS/xpanes/init.lua @@ -1,4 +1,5 @@ local S = minetest.get_translator("xpanes") +local mod_doc = minetest.get_modpath("doc") local function is_pane(pos) return minetest.get_item_group(minetest.get_node(pos).name, "pane") > 0 @@ -162,24 +163,35 @@ function xpanes.register_pane(name, def) recipe = def.recipe }) - if minetest.get_modpath("doc") then + if mod_doc and def._doc_items_create_entry ~= false then doc.add_entry_alias("nodes", "xpanes:" .. name .. "_flat", "nodes", "xpanes:" .. name) end end +local canonical_color = "blue" -- Register glass pane (stained and unstained) local pane = function(description, node, append) - local texture1 - + local texture1, longdesc, entry_name, create_entry + longdesc = S("Glass panes are thin layers of glass which neatly connect to their neighbors as you build them.") + local is_canonical = true -- Special case: Default (unstained) glass texture if append == "_natural" then texture1 = "default_glass.png" else + if append ~= "_"..canonical_color then + is_canonical = false + longdesc = nil + create_entry = false + else + entry_name = S("Stained Glass Pane") + end texture1 = "mcl_core_glass"..append..".png" end xpanes.register_pane("pane"..append, { description = description, - _doc_items_longdesc = S("Glass panes are thin layers of glass which neatly connect to their neighbors as you build them."), + _doc_items_create_entry = create_entry, + _doc_items_entry_name = entry_name, + _doc_items_longdesc = longdesc, textures = {texture1, texture1, "xpanes_top_glass"..append..".png"}, use_texture_alpha = true, inventory_image = texture1, @@ -194,6 +206,11 @@ local pane = function(description, node, append) _mcl_blast_resistance = 1.5, _mcl_hardness = 0.3, }) + + if mod_doc and not is_canonical then + doc.add_entry_alias("nodes", "xpanes:pane_".. canonical_color .. "_flat", "nodes", "xpanes:pane"..append) + doc.add_entry_alias("nodes", "xpanes:pane_".. canonical_color .. "_flat", "nodes", "xpanes:pane"..append.."_flat") + end end -- Iron Bars From 15880db54810c4df1f1734c8b43d3db238a69474 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sun, 24 Mar 2019 10:40:07 +0100 Subject: [PATCH 227/737] Add new help text for stained glass panes --- mods/ITEMS/xpanes/init.lua | 4 ++-- mods/ITEMS/xpanes/locale/template.txt | 1 + mods/ITEMS/xpanes/locale/xpanes.de.tr | 1 + 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/xpanes/init.lua b/mods/ITEMS/xpanes/init.lua index d4c7370f..dd8eae75 100644 --- a/mods/ITEMS/xpanes/init.lua +++ b/mods/ITEMS/xpanes/init.lua @@ -172,17 +172,17 @@ local canonical_color = "blue" -- Register glass pane (stained and unstained) local pane = function(description, node, append) local texture1, longdesc, entry_name, create_entry - longdesc = S("Glass panes are thin layers of glass which neatly connect to their neighbors as you build them.") local is_canonical = true -- Special case: Default (unstained) glass texture if append == "_natural" then texture1 = "default_glass.png" + longdesc = S("Glass panes are thin layers of glass which neatly connect to their neighbors as you build them.") else if append ~= "_"..canonical_color then is_canonical = false - longdesc = nil create_entry = false else + longdesc = S("Stained glass panes are thin layers of stained glass which neatly connect to their neighbors as you build them. They come in many different colors.") entry_name = S("Stained Glass Pane") end texture1 = "mcl_core_glass"..append..".png" diff --git a/mods/ITEMS/xpanes/locale/template.txt b/mods/ITEMS/xpanes/locale/template.txt index 1c227e1c..cae83797 100644 --- a/mods/ITEMS/xpanes/locale/template.txt +++ b/mods/ITEMS/xpanes/locale/template.txt @@ -1,5 +1,6 @@ # textdomain: xpanes Glass panes are thin layers of glass which neatly connect to their neighbors as you build them.= +Stained glass panes are thin layers of stained glass which neatly connect to their neighbors as you build them. They come in many different colors.= Iron Bars= Iron bars neatly connect to their neighbors as you build them.= Glass Pane= diff --git a/mods/ITEMS/xpanes/locale/xpanes.de.tr b/mods/ITEMS/xpanes/locale/xpanes.de.tr index c6e8bbfa..3c840b08 100644 --- a/mods/ITEMS/xpanes/locale/xpanes.de.tr +++ b/mods/ITEMS/xpanes/locale/xpanes.de.tr @@ -1,5 +1,6 @@ # textdomain: xpanes Glass panes are thin layers of glass which neatly connect to their neighbors as you build them.=Glasscheiben sind dünne Glasschichten, die sich mit ihren Nachbarn automatisch verbinden. +Stained glass panes are thin layers of stained glass which neatly connect to their neighbors as you build them. They come in many different colors.=Farbglasscheiben sind dünne Schichten aus Farbglas, die sich mit ihren Nachbarn automatisch verbinden. Es gibt sie in vielen verschiedenen Farben. Iron Bars=Eisenstangen Iron bars neatly connect to their neighbors as you build them.=Eisenstangen verbinden sich mit den Nachbarn, wenn sie gebaut werden. Glass Pane=Glasscheibe From 2f346cfc1db73d4d92c4c50827b0f8788a4388af Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sun, 24 Mar 2019 10:51:45 +0100 Subject: [PATCH 228/737] Change stained glass canonical color --- mods/ITEMS/mcl_core/nodes_glass.lua | 2 +- mods/ITEMS/xpanes/init.lua | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_core/nodes_glass.lua b/mods/ITEMS/mcl_core/nodes_glass.lua index d1ab9986..3ac2cb39 100644 --- a/mods/ITEMS/mcl_core/nodes_glass.lua +++ b/mods/ITEMS/mcl_core/nodes_glass.lua @@ -21,7 +21,7 @@ minetest.register_node("mcl_core:glass", { ------------------------ -- Create Color Glass -- ------------------------ -local canonical_color = "blue" +local canonical_color = "yellow" function mcl_core.add_stained_glass(desc, recipeitem, colorgroup, color) local longdesc, create_entry, entry_name diff --git a/mods/ITEMS/xpanes/init.lua b/mods/ITEMS/xpanes/init.lua index dd8eae75..42dbb807 100644 --- a/mods/ITEMS/xpanes/init.lua +++ b/mods/ITEMS/xpanes/init.lua @@ -168,7 +168,7 @@ function xpanes.register_pane(name, def) end end -local canonical_color = "blue" +local canonical_color = "yellow" -- Register glass pane (stained and unstained) local pane = function(description, node, append) local texture1, longdesc, entry_name, create_entry From 2d34a2982a593f67d44785a95bc4e68dd94817c6 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 25 Mar 2019 09:04:41 +0100 Subject: [PATCH 229/737] Add biome type to biome metadata --- mods/MAPGEN/mcl_biomes/init.lua | 88 +++++++++++++++++++++++++++++++++ 1 file changed, 88 insertions(+) diff --git a/mods/MAPGEN/mcl_biomes/init.lua b/mods/MAPGEN/mcl_biomes/init.lua index dee12faa..b0c8b2a2 100644 --- a/mods/MAPGEN/mcl_biomes/init.lua +++ b/mods/MAPGEN/mcl_biomes/init.lua @@ -15,6 +15,10 @@ local deco_id_chorus_plant -- Register biomes -- +--[[ Special biome field: _mcl_biome_type: +Rough categorization of biomes: One of "snowy", "cold", "medium" and "hot" +Based off ]] + local function register_classic_superflat_biome() -- Classic Superflat: bedrock (not part of biome), 2 dirt, 1 grass block minetest.register_biome({ @@ -28,6 +32,7 @@ local function register_classic_superflat_biome() y_max = mcl_vars.mg_overworld_max, humidity_point = 50, heat_point = 50, + _mcl_biome_type = "medium", }) end @@ -133,6 +138,7 @@ local function register_biomes() y_max = mcl_vars.mg_overworld_max, humidity_point = 24, heat_point = -5, + _mcl_biome_type = "snowy", }) minetest.register_biome({ name = "IcePlainsSpikes_ocean", @@ -147,6 +153,7 @@ local function register_biomes() y_max = 0, humidity_point = 24, heat_point = -5, + _mcl_biome_type = "snowy", }) -- Cold Taiga @@ -163,6 +170,7 @@ local function register_biomes() y_max = mcl_vars.mg_overworld_max, humidity_point = 58, heat_point = 8, + _mcl_biome_type = "snowy", }) -- A cold beach-like biome, implemented as low part of Cold Taiga @@ -181,6 +189,7 @@ local function register_biomes() y_max = 2, humidity_point = 58, heat_point = 8, + _mcl_biome_type = "snowy", }) -- Water part of the beach. Added to prevent snow being on the ice. minetest.register_biome({ @@ -197,6 +206,7 @@ local function register_biomes() y_max = 0, humidity_point = 58, heat_point = 8, + _mcl_biome_type = "snowy", }) minetest.register_biome({ name = "ColdTaiga_ocean", @@ -211,6 +221,7 @@ local function register_biomes() humidity_point = 58, heat_point = 8, vertical_blend = 1, + _mcl_biome_type = "snowy", }) -- Mega Taiga @@ -226,6 +237,7 @@ local function register_biomes() y_max = mcl_vars.mg_overworld_max, humidity_point = 76, heat_point = 10, + _mcl_biome_type = "cold", }) minetest.register_biome({ name = "MegaTaiga_ocean", @@ -239,6 +251,7 @@ local function register_biomes() y_max = 0, humidity_point = 76, heat_point = 10, + _mcl_biome_type = "cold", }) -- Mega Spruce Taiga @@ -254,6 +267,7 @@ local function register_biomes() y_max = mcl_vars.mg_overworld_max, humidity_point = 100, heat_point = 8, + _mcl_biome_type = "cold", }) minetest.register_biome({ name = "MegaSpruceTaiga_ocean", @@ -267,6 +281,7 @@ local function register_biomes() y_max = 0, humidity_point = 100, heat_point = 8, + _mcl_biome_type = "cold", }) -- Extreme Hills @@ -283,6 +298,7 @@ local function register_biomes() y_max = mcl_vars.mg_overworld_max, humidity_point = 10, heat_point = 45, + _mcl_biome_type = "cold", }) minetest.register_biome({ name = "ExtremeHills_beach", @@ -297,6 +313,7 @@ local function register_biomes() y_max = 3, humidity_point = 10, heat_point = 45, + _mcl_biome_type = "cold", }) minetest.register_biome({ name = "ExtremeHills_ocean", @@ -311,6 +328,7 @@ local function register_biomes() vertical_blend = 1, humidity_point = 10, heat_point = 45, + _mcl_biome_type = "cold", }) -- Extreme Hills M @@ -327,6 +345,7 @@ local function register_biomes() y_max = mcl_vars.mg_overworld_max, humidity_point = 0, heat_point = 25, + _mcl_biome_type = "cold", }) minetest.register_biome({ name = "ExtremeHillsM_ocean", @@ -340,6 +359,7 @@ local function register_biomes() y_max = 0, humidity_point = 0, heat_point = 25, + _mcl_biome_type = "cold", }) -- Extreme Hills+ @@ -358,6 +378,7 @@ local function register_biomes() humidity_point = 24, heat_point = 25, vertical_blend = 6, + _mcl_biome_type = "cold", }) ---- Sub-biome for Extreme Hills+ for those snow forests minetest.register_biome({ @@ -374,6 +395,7 @@ local function register_biomes() y_max = mcl_vars.mg_overworld_max, humidity_point = 24, heat_point = 25, + _mcl_biome_type = "cold", }) minetest.register_biome({ name = "ExtremeHills+_ocean", @@ -387,6 +409,7 @@ local function register_biomes() y_max = 0, humidity_point = 24, heat_point = 25, + _mcl_biome_type = "cold", }) -- Stone beach @@ -400,6 +423,7 @@ local function register_biomes() y_max = mcl_vars.mg_overworld_max, humidity_point = 0, heat_point = 8, + _mcl_biome_type = "cold", }) minetest.register_biome({ @@ -413,6 +437,7 @@ local function register_biomes() vertical_blend = 2, humidity_point = 0, heat_point = 8, + _mcl_biome_type = "cold", }) -- Ice Plains @@ -432,6 +457,7 @@ local function register_biomes() y_max = mcl_vars.mg_overworld_max, humidity_point = 24, heat_point = 8, + _mcl_biome_type = "snowy", }) minetest.register_biome({ name = "IcePlains_ocean", @@ -445,6 +471,7 @@ local function register_biomes() y_max = 0, humidity_point = 24, heat_point = 8, + _mcl_biome_type = "snowy", }) -- Plains @@ -460,6 +487,7 @@ local function register_biomes() y_max = mcl_vars.mg_overworld_max, humidity_point = 39, heat_point = 58, + _mcl_biome_type = "medium", }) minetest.register_biome({ name = "Plains_beach", @@ -473,6 +501,7 @@ local function register_biomes() y_max = 2, humidity_point = 39, heat_point = 58, + _mcl_biome_type = "medium", }) minetest.register_biome({ name = "Plains_ocean", @@ -486,6 +515,7 @@ local function register_biomes() y_max = -1, humidity_point = 39, heat_point = 58, + _mcl_biome_type = "medium", }) -- Sunflower Plains @@ -501,6 +531,7 @@ local function register_biomes() y_max = mcl_vars.mg_overworld_max, humidity_point = 28, heat_point = 45, + _mcl_biome_type = "medium", }) minetest.register_biome({ name = "SunflowerPlains_ocean", @@ -514,6 +545,7 @@ local function register_biomes() y_max = 0, humidity_point = 28, heat_point = 45, + _mcl_biome_type = "medium", }) -- Taiga @@ -529,6 +561,7 @@ local function register_biomes() y_max = mcl_vars.mg_overworld_max, humidity_point = 58, heat_point = 22, + _mcl_biome_type = "cold", }) minetest.register_biome({ name = "Taiga_beach", @@ -542,6 +575,7 @@ local function register_biomes() y_max = 3, humidity_point = 58, heat_point = 22, + _mcl_biome_type = "cold", }) minetest.register_biome({ name = "Taiga_ocean", @@ -555,6 +589,7 @@ local function register_biomes() y_max = 0, humidity_point = 58, heat_point = 22, + _mcl_biome_type = "cold", }) -- Forest @@ -570,6 +605,7 @@ local function register_biomes() y_max = mcl_vars.mg_overworld_max, humidity_point = 61, heat_point = 45, + _mcl_biome_type = "medium", }) minetest.register_biome({ name = "Forest_beach", @@ -583,6 +619,7 @@ local function register_biomes() y_max = 0, humidity_point = 61, heat_point = 45, + _mcl_biome_type = "medium", }) minetest.register_biome({ name = "Forest_ocean", @@ -596,6 +633,7 @@ local function register_biomes() y_max = -2, humidity_point = 61, heat_point = 45, + _mcl_biome_type = "medium", }) -- Flower Forest @@ -611,6 +649,7 @@ local function register_biomes() y_max = mcl_vars.mg_overworld_max, humidity_point = 44, heat_point = 32, + _mcl_biome_type = "medium", }) minetest.register_biome({ name = "FlowerForest_beach", @@ -624,6 +663,7 @@ local function register_biomes() y_max = 2, humidity_point = 44, heat_point = 32, + _mcl_biome_type = "medium", }) minetest.register_biome({ name = "FlowerForest_ocean", @@ -637,6 +677,7 @@ local function register_biomes() y_max = -3, humidity_point = 44, heat_point = 32, + _mcl_biome_type = "medium", }) -- Birch Forest @@ -652,6 +693,7 @@ local function register_biomes() y_max = mcl_vars.mg_overworld_max, humidity_point = 78, heat_point = 31, + _mcl_biome_type = "medium", }) minetest.register_biome({ name = "BirchForest_ocean", @@ -665,6 +707,7 @@ local function register_biomes() y_max = 0, humidity_point = 78, heat_point = 31, + _mcl_biome_type = "medium", }) -- Birch Forest M @@ -680,6 +723,7 @@ local function register_biomes() y_max = mcl_vars.mg_overworld_max, humidity_point = 77, heat_point = 27, + _mcl_biome_type = "medium", }) minetest.register_biome({ name = "BirchForestM_ocean", @@ -693,6 +737,7 @@ local function register_biomes() y_max = 0, humidity_point = 77, heat_point = 27, + _mcl_biome_type = "medium", }) -- Desert @@ -709,6 +754,7 @@ local function register_biomes() y_max = mcl_vars.mg_overworld_max, humidity_point = 26, heat_point = 94, + _mcl_biome_type = "hot", }) minetest.register_biome({ name = "Desert_ocean", @@ -722,6 +768,7 @@ local function register_biomes() y_max = 0, humidity_point = 26, heat_point = 94, + _mcl_biome_type = "hot", }) -- Roofed Forest @@ -737,6 +784,7 @@ local function register_biomes() y_max = mcl_vars.mg_overworld_max, humidity_point = 94, heat_point = 27, + _mcl_biome_type = "medium", }) minetest.register_biome({ name = "RoofedForest_ocean", @@ -750,6 +798,7 @@ local function register_biomes() y_max = 0, humidity_point = 94, heat_point = 27, + _mcl_biome_type = "medium", }) -- Mesa: Starts with a couple of sand-covered layers (the "sandlevel"), @@ -766,6 +815,7 @@ local function register_biomes() y_max = mcl_vars.mg_overworld_max, humidity_point = 0, heat_point = 100, + _mcl_biome_type = "hot", }) -- Helper biome for the red sand at the bottom of Mesas. minetest.register_biome({ @@ -781,6 +831,7 @@ local function register_biomes() y_max = 10, humidity_point = 0, heat_point = 100, + _mcl_biome_type = "hot", }) minetest.register_biome({ name = "Mesa_ocean", @@ -795,6 +846,7 @@ local function register_biomes() vertical_blend = 1, humidity_point = 0, heat_point = 100, + _mcl_biome_type = "hot", }) -- Mesa Bryce: Variant of Mesa, but with perfect strata and a much smaller red sand desert @@ -810,6 +862,7 @@ local function register_biomes() y_max = mcl_vars.mg_overworld_max, humidity_point = -5, heat_point = 100, + _mcl_biome_type = "hot", }) minetest.register_biome({ name = "MesaBryce_sandlevel", @@ -824,6 +877,7 @@ local function register_biomes() y_max = 3, humidity_point = -5, heat_point = 100, + _mcl_biome_type = "hot", }) minetest.register_biome({ name = "MesaBryce_ocean", @@ -838,6 +892,7 @@ local function register_biomes() vertical_blend = 1, humidity_point = -5, heat_point = 100, + _mcl_biome_type = "hot", }) @@ -857,6 +912,7 @@ local function register_biomes() humidity_point = 0, heat_point = 60, vertical_blend = 0, -- we want a sharp transition + _mcl_biome_type = "hot", }) -- The oak forest plateau of this biome. -- This is a plateau for grass blocks, dry shrubs, tall grass, coarse dirt and oaks. @@ -874,6 +930,7 @@ local function register_biomes() y_max = mcl_vars.mg_overworld_max, humidity_point = 0, heat_point = 60, + _mcl_biome_type = "hot", }) minetest.register_biome({ name = "MesaPlateauF_sandlevel", @@ -888,6 +945,7 @@ local function register_biomes() y_max = 10, humidity_point = 0, heat_point = 60, + _mcl_biome_type = "hot", }) minetest.register_biome({ name = "MesaPlateauF_ocean", @@ -902,6 +960,7 @@ local function register_biomes() vertical_blend = 1, humidity_point = 0, heat_point = 60, + _mcl_biome_type = "hot", }) -- Mesa Plateau FM @@ -921,6 +980,7 @@ local function register_biomes() humidity_point = -5, heat_point = 60, vertical_blend = 5, + _mcl_biome_type = "hot", }) -- Grass plateau minetest.register_biome({ @@ -936,6 +996,7 @@ local function register_biomes() y_max = mcl_vars.mg_overworld_max, humidity_point = -5, heat_point = 60, + _mcl_biome_type = "hot", }) minetest.register_biome({ name = "MesaPlateauFM_sandlevel", @@ -952,6 +1013,7 @@ local function register_biomes() humidity_point = -5, heat_point = 60, vertical_blend = 4, + _mcl_biome_type = "hot", }) minetest.register_biome({ name = "MesaPlateauFM_ocean", @@ -966,6 +1028,7 @@ local function register_biomes() vertical_blend = 2, humidity_point = -5, heat_point = 60, + _mcl_biome_type = "hot", }) @@ -982,6 +1045,7 @@ local function register_biomes() y_max = mcl_vars.mg_overworld_max, humidity_point = 36, heat_point = 79, + _mcl_biome_type = "hot", }) minetest.register_biome({ name = "Savanna_beach", @@ -995,6 +1059,7 @@ local function register_biomes() y_max = 0, humidity_point = 36, heat_point = 79, + _mcl_biome_type = "hot", }) minetest.register_biome({ name = "Savanna_ocean", @@ -1008,6 +1073,7 @@ local function register_biomes() y_max = -2, humidity_point = 36, heat_point = 79, + _mcl_biome_type = "hot", }) -- Savanna M @@ -1025,6 +1091,7 @@ local function register_biomes() y_max = mcl_vars.mg_overworld_max, humidity_point = 48, heat_point = 100, + _mcl_biome_type = "hot", }) minetest.register_biome({ name = "SavannaM_ocean", @@ -1038,6 +1105,7 @@ local function register_biomes() y_max = 0, humidity_point = 48, heat_point = 100, + _mcl_biome_type = "hot", }) -- Jungle @@ -1053,6 +1121,7 @@ local function register_biomes() y_max = mcl_vars.mg_overworld_max, humidity_point = 88, heat_point = 81, + _mcl_biome_type = "medium", }) minetest.register_biome({ name = "Jungle_shore", @@ -1066,6 +1135,7 @@ local function register_biomes() y_max = 0, humidity_point = 88, heat_point = 81, + _mcl_biome_type = "medium", }) minetest.register_biome({ name = "Jungle_ocean", @@ -1080,6 +1150,7 @@ local function register_biomes() vertical_blend = 1, humidity_point = 88, heat_point = 81, + _mcl_biome_type = "medium", }) -- Jungle M @@ -1096,6 +1167,7 @@ local function register_biomes() y_max = mcl_vars.mg_overworld_max, humidity_point = 92, heat_point = 81, + _mcl_biome_type = "medium", }) minetest.register_biome({ name = "JungleM_shore", @@ -1109,6 +1181,7 @@ local function register_biomes() y_max = 0, humidity_point = 92, heat_point = 81, + _mcl_biome_type = "medium", }) minetest.register_biome({ name = "JungleM_ocean", @@ -1123,6 +1196,7 @@ local function register_biomes() vertical_blend = 1, humidity_point = 92, heat_point = 81, + _mcl_biome_type = "medium", }) -- Jungle Edge @@ -1138,6 +1212,7 @@ local function register_biomes() y_max = mcl_vars.mg_overworld_max, humidity_point = 88, heat_point = 76, + _mcl_biome_type = "medium", }) minetest.register_biome({ name = "JungleEdge_ocean", @@ -1151,6 +1226,7 @@ local function register_biomes() y_max = 0, humidity_point = 88, heat_point = 76, + _mcl_biome_type = "medium", }) -- Jungle Edge M (very rare). @@ -1169,6 +1245,7 @@ local function register_biomes() y_max = mcl_vars.mg_overworld_max, humidity_point = 90, heat_point = 79, + _mcl_biome_type = "medium", }) minetest.register_biome({ name = "JungleEdgeM_ocean", @@ -1182,6 +1259,7 @@ local function register_biomes() y_max = 0, humidity_point = 90, heat_point = 79, + _mcl_biome_type = "medium", }) -- Swampland @@ -1198,6 +1276,7 @@ local function register_biomes() y_max = 23, humidity_point = 90, heat_point = 50, + _mcl_biome_type = "medium", }) minetest.register_biome({ name = "Swampland_shore", @@ -1211,6 +1290,7 @@ local function register_biomes() y_max = 0, humidity_point = 90, heat_point = 50, + _mcl_biome_type = "medium", }) minetest.register_biome({ name = "Swampland_ocean", @@ -1225,6 +1305,7 @@ local function register_biomes() vertical_blend = 1, humidity_point = 90, heat_point = 50, + _mcl_biome_type = "medium", }) -- Mushroom Island / Mushroom Island Shore (rare) @@ -1243,6 +1324,7 @@ local function register_biomes() vertical_blend = 1, humidity_point = 106, heat_point = 50, + _mcl_biome_type = "medium", }) minetest.register_biome({ @@ -1257,6 +1339,7 @@ local function register_biomes() y_max = 3, humidity_point = 106, heat_point = 50, + _mcl_biome_type = "medium", }) minetest.register_biome({ name = "MushroomIsland_ocean", @@ -1270,6 +1353,7 @@ local function register_biomes() y_max = 0, humidity_point = 106, heat_point = 50, + _mcl_biome_type = "medium", }) -- Add deep ocean and underground biomes automatically. @@ -1290,6 +1374,7 @@ local function register_biomes() node_riverbed = "mcl_core:gravel", depth_riverbed = 2, vertical_blend = 5, + _mcl_biome_type = minetest.registered_biomes[biome]._mcl_biome_type, }) -- Underground biomes are used to identify the underground and to prevent nodes from the surface @@ -1300,6 +1385,7 @@ local function register_biomes() humidity_point = minetest.registered_biomes[biome].humidity_point, y_min = mcl_vars.mg_overworld_min, y_max = DEEP_OCEAN_MIN - 1, + _mcl_biome_type = minetest.registered_biomes[biome]._mcl_biome_type, }) end @@ -1322,6 +1408,7 @@ local function register_dimension_biomes() y_max = mcl_vars.mg_nether_max + 80, heat_point = 100, humidity_point = 0, + _mcl_biome_type = "hot", }) --[[ THE END ]] @@ -1337,6 +1424,7 @@ local function register_dimension_biomes() y_max = mcl_vars.mg_end_max + 80, heat_point = 50, humidity_point = 50, + _mcl_biome_type = "medium", }) end From 1b7c41fc81d40cb43eee24631d65bba61b3dd98b Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 25 Mar 2019 09:22:08 +0100 Subject: [PATCH 230/737] Grass block: Change grass color depending on biome --- mods/ITEMS/mcl_core/functions.lua | 20 ++++++++++++++++++++ mods/ITEMS/mcl_core/nodes_base.lua | 15 +++------------ 2 files changed, 23 insertions(+), 12 deletions(-) diff --git a/mods/ITEMS/mcl_core/functions.lua b/mods/ITEMS/mcl_core/functions.lua index c040ce7e..bad9f3bd 100644 --- a/mods/ITEMS/mcl_core/functions.lua +++ b/mods/ITEMS/mcl_core/functions.lua @@ -639,6 +639,23 @@ end local grass_spread_randomizer = PseudoRandom(minetest.get_mapgen_setting("seed")) +-- Return appropriate grass block node for pos. Dry grass for dry/hot biomes, normal grass otherwise. +function mcl_core.get_grass_block_type(pos) + local biome_data = minetest.get_biome_data(pos) + local dry = false + if biome_data then + local biome = biome_data.biome + local biome_name = minetest.get_biome_name(biome) + local biome_type = minetest.registered_biomes[biome_name]._mcl_biome_type + dry = biome_type == "hot" + end + if dry then + return {name="mcl_core:dirt_with_dry_grass"} + else + return {name="mcl_core:dirt_with_grass"} + end +end + ------------------------------ -- Spread grass blocks and mycelium on neighbor dirt ------------------------------ @@ -681,6 +698,9 @@ minetest.register_abm({ if light_self >= 4 and light_source >= 9 then -- All checks passed! Let's spread the grass/mycelium! local n2 = minetest.get_node(p2) + if minetest.get_item_group(n2.name, "grass_block") ~= 0 then + n2 = mcl_core.get_grass_block_type(pos) + end minetest.set_node(pos, {name=n2.name}) -- If this was mycelium, uproot plant above diff --git a/mods/ITEMS/mcl_core/nodes_base.lua b/mods/ITEMS/mcl_core/nodes_base.lua index 0661bb43..bcef7d74 100644 --- a/mods/ITEMS/mcl_core/nodes_base.lua +++ b/mods/ITEMS/mcl_core/nodes_base.lua @@ -321,18 +321,9 @@ minetest.register_node("mcl_core:dirt_with_grass", { footstep = {name="default_grass_footstep", gain=0.4}, }), on_construct = function(pos) - local dim = mcl_worlds.pos_to_dimension(pos) - local dry - if dim == "nether" then - dry = true - else - local found_node = minetest.find_node_near(pos, 1, {"mcl_core:dirt_with_dry_grass", "mcl_core:dirt_with_dry_grass_snow"}) - if found_node then - dry = true - end - end - if dry then - minetest.set_node(pos, {name="mcl_core:dirt_with_dry_grass"}) + local new_node = mcl_core.get_grass_block_type(pos) + if new_node.name ~= "mcl_core:dirt_with_grass" then + minetest.set_node(pos, new_node) end return mcl_core.on_snowable_construct(pos) end, From 435ae85d68e832331a8e725badb87f11cdd99262 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 25 Mar 2019 09:38:39 +0100 Subject: [PATCH 231/737] Fix grass block crash in v6 --- mods/ITEMS/mcl_core/functions.lua | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_core/functions.lua b/mods/ITEMS/mcl_core/functions.lua index bad9f3bd..bcbab0e7 100644 --- a/mods/ITEMS/mcl_core/functions.lua +++ b/mods/ITEMS/mcl_core/functions.lua @@ -646,8 +646,11 @@ function mcl_core.get_grass_block_type(pos) if biome_data then local biome = biome_data.biome local biome_name = minetest.get_biome_name(biome) - local biome_type = minetest.registered_biomes[biome_name]._mcl_biome_type - dry = biome_type == "hot" + local reg_biome = minetest.registered_biomes[biome_name] + if reg_biome then + biome_type = reg_biome._mcl_biome_type + dry = biome_type == "hot" + end end if dry then return {name="mcl_core:dirt_with_dry_grass"} From c5db9987c3e1962c856820b2e22aa1df6675754b Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 25 Mar 2019 11:01:52 +0100 Subject: [PATCH 232/737] Fix various typos in German translation --- .../mcl_minecarts/locale/mcl_minecarts.de.tr | 4 ++-- mods/ENTITIES/mcl_mobs/locale/mcl_mobs.de.tr | 2 +- mods/ENTITIES/mobs_mc/locale/mobs_mc.de.tr | 2 +- mods/HELP/mcl_doc/locale/mcl_doc.de.tr | 2 +- .../mcl_dispensers/locale/mcl_dispensers.de.tr | 16 ++++++++-------- .../locale/mesecons_commandblock.de.tr | 2 +- mods/ITEMS/mcl_books/locale/mcl_books.de.tr | 2 +- mods/ITEMS/mcl_chests/locale/mcl_chests.de.tr | 2 +- mods/ITEMS/mcl_core/locale/mcl_core.de.tr | 17 +++++++++-------- mods/ITEMS/mcl_core/locale/template.txt | 1 + mods/ITEMS/mcl_core/nodes_base.lua | 2 +- mods/ITEMS/mcl_doors/locale/mcl_doors.de.tr | 4 ++-- mods/ITEMS/mcl_end/locale/mcl_end.de.tr | 4 ++-- mods/ITEMS/mcl_farming/locale/mcl_farming.de.tr | 6 +++--- mods/ITEMS/mcl_fire/locale/mcl_fire.de.tr | 2 +- mods/ITEMS/mcl_flowers/locale/mcl_flowers.de.tr | 2 +- mods/ITEMS/mcl_portals/locale/mcl_portals.de.tr | 2 +- mods/ITEMS/mcl_potions/locale/mcl_potions.de.tr | 2 +- .../mcl_throwing/locale/mcl_throwing.de.tr | 2 +- mods/ITEMS/mcl_tools/locale/mcl_tools.de.tr | 2 +- 20 files changed, 40 insertions(+), 38 deletions(-) diff --git a/mods/ENTITIES/mcl_minecarts/locale/mcl_minecarts.de.tr b/mods/ENTITIES/mcl_minecarts/locale/mcl_minecarts.de.tr index 9eb3d1a8..65df678e 100644 --- a/mods/ENTITIES/mcl_minecarts/locale/mcl_minecarts.de.tr +++ b/mods/ENTITIES/mcl_minecarts/locale/mcl_minecarts.de.tr @@ -9,11 +9,11 @@ Minecart with Furnace=Lore mit Ofen Minecart with Command Block=Lore mit Befehlsblock Minecart with Hopper=Lore mit Trichter Minecart with TNT=Lore mit TNT -Place them on the ground to build your railway, the rails will automatically connect to each other and will turn into curves, T-junctions, crossings and slopes as needed.=Bauen Sie sie auf den Boden, um Ihre Schienennetzwerk zu errichten, die Schienen werden sich automatisch verbinden und sich nach Bedarf in Kurven, Einmündungen, Kreuzungen und Steigungen verwandeln. +Place them on the ground to build your railway, the rails will automatically connect to each other and will turn into curves, T-junctions, crossings and slopes as needed.=Bauen Sie sie auf den Boden, um Ihr Schienennetzwerk zu errichten, die Schienen werden sich automatisch verbinden und sich nach Bedarf in Kurven, Einmündungen, Kreuzungen und Steigungen verwandeln. Rail=Schiene Rails can be used to build transport tracks for minecarts. Normal rails slightly slow down minecarts due to friction.=Schienen können benutzt werden, um Strecken für Loren zu bauen. Normale Schienen werden Loren aufgrund von Reibung leicht verlangsamen. Powered Rail=Antriebsschiene -Rails can be used to build transport tracks for minecarts. Powered rails are able to accelerate and brake minecarts.=Schienen können benutzt werden, um Strecken für Loren zu bauen. Antribsschienen können Loren beschleunigen und abbremsen. +Rails can be used to build transport tracks for minecarts. Powered rails are able to accelerate and brake minecarts.=Schienen können benutzt werden, um Strecken für Loren zu bauen. Antriebsschienen können Loren beschleunigen und abbremsen. Without redstone power, the rail will brake minecarts. To make this rail accelerate minecarts, power it with redstone power.=Ohne Redstone-Energie wird die Schiene Loren abbremsen. Mit Redstone-Energie wird sie sie beschleunigen. Activator Rail=Aktivierungsschiene Rails can be used to build transport tracks for minecarts. Activator rails are used to activate special minecarts.=Schienen können benutzt werden, um Strecken für Loren zu bauen. Aktivierungsschienen werden benutzt, um besondere Loren zu aktivieren. diff --git a/mods/ENTITIES/mcl_mobs/locale/mcl_mobs.de.tr b/mods/ENTITIES/mcl_mobs/locale/mcl_mobs.de.tr index f423547b..59f65eae 100644 --- a/mods/ENTITIES/mcl_mobs/locale/mcl_mobs.de.tr +++ b/mods/ENTITIES/mcl_mobs/locale/mcl_mobs.de.tr @@ -1,6 +1,6 @@ # textdomain: mcl_mobs Peaceful mode active! No monsters will spawn.=Friedlicher Modus aktiv! Es werden keine Monster auftauchen. -This allows you to place a single mob.=Damit kann man eine Mob platzieren. +This allows you to place a single mob.=Damit kann man einen Mob platzieren. Just place it where you want the mob to appear. Animals will spawn tamed, unless you hold down the sneak key while placing. If you place this on a mob spawner, you change the mob it spawns.=Platzieren Sie dies einfach dort, wo der Mob auftauchen soll. Tiere werden zahm erscheinen, außer, wenn Sie beim Platzieren die Schlichtaste drücken. Platzieren Sie dies auf einem Mobspawner, um den Mob im Mobspawner zu wechseln. You need the “maphack” privilege to change the mob spawner.=Sie brauchen das „maphack“-Privileg, um den Mobspawner ändern zu können. Name Tag=Namensschild diff --git a/mods/ENTITIES/mobs_mc/locale/mobs_mc.de.tr b/mods/ENTITIES/mobs_mc/locale/mobs_mc.de.tr index ecf058b4..a81891e2 100644 --- a/mods/ENTITIES/mobs_mc/locale/mobs_mc.de.tr +++ b/mods/ENTITIES/mobs_mc/locale/mobs_mc.de.tr @@ -1,7 +1,7 @@ # textdomain: mobs_mc Totem of Undying=Totem der Unsterblichkeit A totem of undying is a rare artifact which may safe you from certain death.=Ein Totem der Unsterblichkeit ist ein seltenes Artefakt, dass Sie vor dem sicheren Tod bewahren kann. -The totem only works while you hold it in your hand. If you receive fatal damage, you are saved from death and you get a second chance with 1 HP. The totem is destroyed in the process, however.=Der Totem funktioneirt nur, während Sie ihn halten. Wenn Sie normalerweise tödlich hohen Schaden erhalten, werden Sie vor dem Tod bewahrt und Sie erhalten eine zweite Chance mit 1 TP. Der Totem wird dabei zerstört. +The totem only works while you hold it in your hand. If you receive fatal damage, you are saved from death and you get a second chance with 1 HP. The totem is destroyed in the process, however.=Der Totem funktioniert nur, während Sie ihn halten. Wenn Sie normalerweise tödlich hohen Schaden erhalten, werden Sie vor dem Tod bewahrt und Sie erhalten eine zweite Chance mit 1 TP. Der Totem wird dabei zerstört. Agent=Akteur Bat=Fledermaus Blaze=Lohe diff --git a/mods/HELP/mcl_doc/locale/mcl_doc.de.tr b/mods/HELP/mcl_doc/locale/mcl_doc.de.tr index ff88f98a..b9207b4a 100644 --- a/mods/HELP/mcl_doc/locale/mcl_doc.de.tr +++ b/mods/HELP/mcl_doc/locale/mcl_doc.de.tr @@ -19,7 +19,7 @@ To drink it, wield it, then rightclick.=Um dies zu trinken, halten Sie es, dann You cannot drink this when your hunger bar is full.=Sie können dies nicht trinken, wenn Ihre Hungerleiste voll ist. To consume it, wield it, then rightclick.=Um dies zu konsumieren, halten Sie es, dann rechtsklicken Sie. You cannot consume this when your hunger bar is full.=Sie können dies nicht konsumieren, wenn Ihre Hungerleiste voll ist. -You have to wait for about 2 seconds before you can eat or drink again.=Sie müssen für etwa 2 Sekunden warten, bevor Sie erneut essen oder trinken können- +You have to wait for about 2 seconds before you can eat or drink again.=Sie müssen für etwa 2 Sekunden warten, bevor Sie erneut essen oder trinken können. Hunger points restored: @1=Erhaltene Hungerpunkte: @1 Saturation points restored: @1%.1f=Erhaltene Sättigungspunkte: @1 This item can be repaired at an anvil with: @1.=Dieser Gegenstand kann an einem Amboss repariert werden mit: @1 diff --git a/mods/ITEMS/REDSTONE/mcl_dispensers/locale/mcl_dispensers.de.tr b/mods/ITEMS/REDSTONE/mcl_dispensers/locale/mcl_dispensers.de.tr index a1f7b788..1fd2959d 100644 --- a/mods/ITEMS/REDSTONE/mcl_dispensers/locale/mcl_dispensers.de.tr +++ b/mods/ITEMS/REDSTONE/mcl_dispensers/locale/mcl_dispensers.de.tr @@ -1,21 +1,21 @@ # textdomain: mcl_dispensers Dispenser=Werfer -A dispenser is a block which acts as a redstone component which, when powered with redstone power, dispenses an item. It has a container with 9 inventory slots.=Ein Werfer ist eine Block, der als eine Redstonekomponente fungiert die, wenn sie mit Redstoneenergie versorgt ist, einen Gegenstand auswirft. Er hat einen Behälter mit 9 Inventarplätzen. -Place the dispenser in one of 6 possible directions. The “hole” is where items will fly out of the dispenser. Use the dispenser to access its inventory. Insert the items you wish to dispense. Supply the dispenser with redstone energy once to dispense a random item.=Platzieren Sie den Werfer in einer von 6 möglichen Richtungen. Das „Loch“ ist die Stelle, aus der Gegenstände aus dem Werfer fliegen. Benutzen Sie den Werfer, um auf das Inventar zuzugreifen. +A dispenser is a block which acts as a redstone component which, when powered with redstone power, dispenses an item. It has a container with 9 inventory slots.=Ein Werfer ist ein Block, der als eine Redstonekomponente fungiert, die, wenn sie mit Redstoneenergie versorgt ist, einen Gegenstand auswirft. Er hat einen Behälter mit 9 Inventarplätzen. +Place the dispenser in one of 6 possible directions. The “hole” is where items will fly out of the dispenser. Use the dispenser to access its inventory. Insert the items you wish to dispense. Supply the dispenser with redstone energy once to dispense a random item.=Platzieren Sie den Werfer in einer von 6 möglichen Richtungen. Das „Loch“ ist die Stelle, aus der Dinge aus dem Werfer fliegen. Benutzen Sie den Werfer, um auf das Inventar zuzugreifen. The dispenser will do different things, depending on the dispensed item:=Der Werfer wird, abhängig vom geworfenem Gegenstand, unterschiedliche Dinge tun: • Arrows: Are launched=• Pfeile: Werden gefeuert • Eggs and snowballs: Are thrown=• Eier und Schneebälle: Werden geworfen • Fire charges: Are fired in a straight line=• Feuerkugeln: Werden schnurgerade abgefeuert • Armor: Will be equipped to players and armor stands=• Rüstung: Spieler und Rüstungsständer werden ausgerüstet -• Boats: Are placed on water or are dropped=• Werden auf Wasser platziert oder abgeworfen -• Minecart: Are placed on rails or are dropped=• Werden auf Schienen platziert oder abgeworfen +• Boats: Are placed on water or are dropped=• Boote: Werden auf Wasser platziert oder abgeworfen +• Minecart: Are placed on rails or are dropped=• Loren: Werden auf Schienen platziert oder abgeworfen • Bone meal: Is applied on the block it is facing=• Knochenmehl: Wird auf den Block, auf den er zeigt, angewandt • Empty buckets: Are used to collect a liquid source=• Leere Eimer: Sammeln Flüssigkeitsquelle auf • Filled buckets: Are used to place a liquid source=• Volle Eimer: Platzieren eine Flüssigkeitsquelle -• Heads, pumpkins: Equipped to players and armor stands, or placed as a block=• Köpfe, Kürbisse: Spieler und Rüstungsständer werden ausgerüstet, oder wird als Block platziert -• Shulker boxes: Are placed as a block=Schulkerkisten: Werden als Block platziert -• TNT: Is placed and ignited=• TNT: Wird platzierd unt angezündet -• Flint and steel: Is used to ignite a fire in air and to ignite TNT=• Endzündet ein Feuer in der Luft und zündet TNT an +• Heads, pumpkins: Equipped to players and armor stands, or placed as a block=• Köpfe, Kürbisse: Spieler und Rüstungsständer werden ausgerüstet, alternativ werden diese Gegenstände als Block platziert +• Shulker boxes: Are placed as a block=• Schulkerkisten: Werden als Block platziert +• TNT: Is placed and ignited=• TNT: Wird platziert und angezündet +• Flint and steel: Is used to ignite a fire in air and to ignite TNT=• Feuerzeuge: Endzündet ein Feuer in der Luft und zündet TNT an • Spawn eggs: Will summon the mob they contain=• Spawn-Eier: Beschwören einen Mob • Other items: Are simply dropped=• Andere Gegenstände: Werden fallen gelassen Downwards-Facing Dispenser=Nach unten zeigender Werfer diff --git a/mods/ITEMS/REDSTONE/mesecons_commandblock/locale/mesecons_commandblock.de.tr b/mods/ITEMS/REDSTONE/mesecons_commandblock/locale/mesecons_commandblock.de.tr index 4517be9c..fe10965f 100644 --- a/mods/ITEMS/REDSTONE/mesecons_commandblock/locale/mesecons_commandblock.de.tr +++ b/mods/ITEMS/REDSTONE/mesecons_commandblock/locale/mesecons_commandblock.de.tr @@ -13,7 +13,7 @@ Command Block=Befehlsblock Command blocks are mighty redstone components which are able to alter reality itself. In other words, they cause the server to execute server commands when they are supplied with redstone power.=Befehlsblöcke sind mächtige Redstonekomponenten, die das Gefüge der Realität selbst verändern können. Mit anderen Worten, sie lassen den Server Serverbefehle ausführen, wenn sie mit Redstoneenergie versorgt werden. Everyone can activate a command block and look at its commands, but not everyone can edit and place them.=Jeder kann einen Befehlsblock aktivieren und sich seine Befehle ansehen, aber nicht jeder kann sie bearbeiten und platzieren. To view the commands in a command block, use it. To activate the command block, just supply it with redstone power. This will execute the commands once. To execute the commands again, turn the redstone power off and on again.=Um die Befehle in einem Befehlsblock zu betrachten, benutzen Sie ihn. Um ihn zu aktivieren, versorgen Sie ihn einfach mit Redstoneenergie. Das wird die Befehle einmalig ausführen. Um sie erneut auszuführen, schalten Sie die Redstoneenergie aus und wieder ein. -To be able to place a command block and change the commands, you need to be in Creative Mode and must have the “maphack” privilege. A new command block does not have any commands and does nothing. Use the command block (in Creative Mode!) to edit its commands. Read the help entry “Advanced topics > Server Commands” to understand how commands work. Each line contains a single command. You enter them like you would in the console, but without the leading slash. The commands will be executed from top to bottom.=Um einen Befehlsblock platzieren und die Befehle ändern zu können, müssen Sie im Kreativmodus sein und das „maphack“-Privileg habe. Ein neuer Befehlsblock hat keine Befehle und tut gar nichts. Benutzen Sie den Befehlsblock (im Kreativmodus!), um seine Befehle zu bearbeiten. Lesen Sie den Hilfeeintrag „Fortgeschrittenes > Serverbefehle“, um zu verstehen, wie Befehle funktionieren. Jede Zeile enthält einen einzigen Befehl. Sie geben Sie wie in der Konsole ein, aber ohne den Schrägstrich am Anfang. +To be able to place a command block and change the commands, you need to be in Creative Mode and must have the “maphack” privilege. A new command block does not have any commands and does nothing. Use the command block (in Creative Mode!) to edit its commands. Read the help entry “Advanced topics > Server Commands” to understand how commands work. Each line contains a single command. You enter them like you would in the console, but without the leading slash. The commands will be executed from top to bottom.=Um einen Befehlsblock platzieren und die Befehle ändern zu können, müssen Sie im Kreativmodus sein und das „maphack“-Privileg haben. Ein neuer Befehlsblock hat keine Befehle und tut gar nichts. Benutzen Sie den Befehlsblock (im Kreativmodus!), um seine Befehle zu bearbeiten. Lesen Sie den Hilfeeintrag „Fortgeschrittenes > Serverbefehle“, um zu verstehen, wie Befehle funktionieren. Jede Zeile enthält einen einzigen Befehl. Sie geben Sie wie in der Konsole ein, aber ohne den Schrägstrich am Anfang. All commands will be executed on behalf of the player who placed the command block, as if the player typed in the commands. This player is said to be the “commander” of the block.=Alle Befehle werden im Namen des Spielers, der den Befehlsblock platziert hat, ausgeführt, als ob der Spieler die Befehle eingegeben hätte. Diesen Spieler nennen wir den „Kommandanten“ des Blocks. Command blocks support placeholders, insert one of these placeholders and they will be replaced by some other text:=Befehlsblöcke unterstützen Platzhalter, geben sie einen dieser Platzhalter ein und sie werden durch einen anderen Text ersetzt: • “@c”: commander of this command block=• „@c“: Befehlshaber dieses Befehlsblocks diff --git a/mods/ITEMS/mcl_books/locale/mcl_books.de.tr b/mods/ITEMS/mcl_books/locale/mcl_books.de.tr index 261c099a..398843d9 100644 --- a/mods/ITEMS/mcl_books/locale/mcl_books.de.tr +++ b/mods/ITEMS/mcl_books/locale/mcl_books.de.tr @@ -9,7 +9,7 @@ by @1=von @1 Sign=Signieren Done=Fertig This item can be used to write down some notes.=Dies kann benutzt werden, um ein paar Notizen aufzuschreiben. -Hold it in the hand, then rightclick to read the current notes and edit then. You can edit the text as often as you like. You can also sign the book which turns it into a written book which you can stack, but it can't be edited anymore.=Halten Sie es in der Hand, dann rechtsklicken Sie, um die Notizen zu sehen zu zu ändern. Sie können den Text beliebig ändern. Sie können das Buch auch signieren und in ein geschriebenes Buch verwandeln, das gestapelt, aber nicht mehr geändert werden kann. +Hold it in the hand, then rightclick to read the current notes and edit then. You can edit the text as often as you like. You can also sign the book which turns it into a written book which you can stack, but it can't be edited anymore.=Halten Sie es in der Hand, dann rechtsklicken Sie, um die Notizen zu sehen und zu ändern. Sie können den Text beliebig ändern. Sie können das Buch auch signieren und in ein geschriebenes Buch verwandeln, das gestapelt, aber nicht mehr geändert werden kann. A book can hold up to 4500 characters. The title length is limited to 64 characters.=Ein Buch kann bis zu 4500 Zeichen enthalten. Die Titellänge ist begrenzt auf 64 Zeichen. Enter book title:=Buchtitel eingeben: Note: The book will no longer@nbe editable after signing.=Anmerkung: Das Buch kann nach@nder Signierung nicht länger@nbearbeitet werden. diff --git a/mods/ITEMS/mcl_chests/locale/mcl_chests.de.tr b/mods/ITEMS/mcl_chests/locale/mcl_chests.de.tr index 6141c96a..2fac283e 100644 --- a/mods/ITEMS/mcl_chests/locale/mcl_chests.de.tr +++ b/mods/ITEMS/mcl_chests/locale/mcl_chests.de.tr @@ -5,7 +5,7 @@ To access its inventory, rightclick it. When broken, the items will drop out.=Um Trapped Chest=Mechanismustruhe A trapped chest is a container which provides 27 inventory slots. When it is opened, it sends a redstone signal to its adjacent blocks as long it stays open. Trapped chests can be turned into large trapped chests with double the capacity by placing two trapped chests next to each other.=Mechanismustruhen sind Behälter, die 27 Inventarplätze Platz bieten. Wenn sie geöffnet wird, sendet sie ein Redstone-Signal zu benachbarten Blöcken, solange sie geöffnet bleibt. Mechanismustruhen verwandeln sich in große Mechanismustruhen mit der doppelten Kapazität, wenn zwei Mechanismustruhen nebeneinander platziert werden. Ender Chest=Endertruhe -Ender chests grant you access to a single personal interdimensional inventory with 27 slots. This inventory is the same no matter from which ender chest you access it from. If you put one item into one ender chest, you will find it in all other ender chests. Each player will only see their own items, but not the items of other players.=Endertruhen gewähren Ihnen Zugriff zu einem einzigartigen persönlichem interdimensionalem Inventar mit 27 Plätzen. Dieses Inventar ist das gleiche, egal, welche Endertruhe sie benutzen. Wenn Sie einen Gegenstand in eine Endertruhe platzieren, werden Sie sie in allen anderen Endertruhen vorhinden. Jeder Spieler wird nur seine eigenen Gegenstände sehen, aber nicht die der anderen Spieler. +Ender chests grant you access to a single personal interdimensional inventory with 27 slots. This inventory is the same no matter from which ender chest you access it from. If you put one item into one ender chest, you will find it in all other ender chests. Each player will only see their own items, but not the items of other players.=Endertruhen gewähren Ihnen Zugriff zu einem einzigartigen persönlichen interdimensionalen Inventar mit 27 Plätzen. Dieses Inventar ist das selbe, egal, welche Endertruhe sie benutzen. Wenn Sie einen Gegenstand in eine Endertruhe platzieren, werden Sie sie in allen anderen Endertruhen vorhinden. Jeder Spieler wird nur seine eigenen Gegenstände sehen, aber nicht die der anderen Spieler. Rightclick the ender chest to access your personal interdimensional inventory.=Rechtsklicken Sie die Endertruhe, um auf Ihr persönliches interdimensionales Inventar zuzugreifen. White Shulker Box=Weiße Schulkerkiste Light Grey Shulker Box=Hellgraue Schulkerkiste diff --git a/mods/ITEMS/mcl_core/locale/mcl_core.de.tr b/mods/ITEMS/mcl_core/locale/mcl_core.de.tr index e5e52865..bb7fc6d2 100644 --- a/mods/ITEMS/mcl_core/locale/mcl_core.de.tr +++ b/mods/ITEMS/mcl_core/locale/mcl_core.de.tr @@ -3,10 +3,10 @@ @1 died in lava.=@1 starb in Lava. @1 melted in lava.=@1 schmolz in der Lava. @1 took a bath in a hot lava tub.=@1 nahm ein Bad in einer heißen Lavawanne. -A block of diamond is mostly a shiny decorative block but also useful as a compact storage of diamonds.=Ein Diamantblock ist hauptsächlich ein glänzender Dekorationsblock, aber er ist auch nützlich zur kompakten Aufbewahrung von Diamanten. -A block of emerald is mostly a shiny decorative block but also useful as a compact storage of emeralds.=Ein Smaragdblock ist hauptsächlich ein glänzender Dekorationsblock, aber er ist auch nützlich zur kompakten Aufbewahrung von Smaragden. +A block of diamond is mostly a shiny decorative block but also useful as a compact storage of diamonds.=Ein Diamantblock ist hauptsächlich ein schicker Dekorationsblock, aber er ist auch nützlich zur kompakten Aufbewahrung von Diamanten. +A block of emerald is mostly a shiny decorative block but also useful as a compact storage of emeralds.=Ein Smaragdblock ist hauptsächlich ein schicker Dekorationsblock, aber er ist auch nützlich zur kompakten Aufbewahrung von Smaragden. A block of gold is mostly a shiny decorative block but also useful as a compact storage of gold ingots.=Ein Goldblock ist hauptsächlich ein glänzender Dekorationsblock, aber er ist auch nützlich zur kompakten Aufbewahrung von Goldbarren. -A block of iron is mostly a decorative block but also useful as a compact storage of iron ingots.=Ein Eisenblock ist hauptsächlich ein glänzender Dekorationsblock, aber er ist auch nützlich zur kompakten Aufbewahrung von Eisenbarren. +A block of iron is mostly a decorative block but also useful as a compact storage of iron ingots.=Ein Eisenblock ist hauptsächlich ein Dekorationsblock, aber er ist auch nützlich zur kompakten Aufbewahrung von Eisenbarren. A cactus can only be placed on top of another cactus or any sand.=Ein Kaktus kann nur auf einem anderen Kaktus oder auf beliebigem Sand platziert werden. A decorative and mostly transparent block.=Ein Dekoblock, der größtenteils transparent ist. A grass block is dirt with a grass cover. Grass blocks are resourceful blocks which allow the growth of all sorts of plants. They can be turned into farmland with a hoe and turned into grass paths with a shovel. In light, the grass slowly spreads onto dirt nearby. Under an opaque block or a liquid, a grass block may turn back to dirt.=Ein Grasblock ist Erde mit einer Grasschicht. Grasblöcke sind vielseitige Blöcke, die das Wachstum aller möglichen Pflanzen fördern. Mit einer Hacke kann man das Land bestellen und einen Ackerboden machen. Mit einer Schaufel verwandelt man ihn in einen Graspfad. Im Licht wird das Gras sich langsam auf benachbarte Erde ausbreiten. Unter einem lichtundurchlässigen Block kann sich dieser Block wieder zurück zu Erde verwandeln. @@ -65,7 +65,7 @@ Clay is a versatile kind of earth commonly found at beaches underwater.=Ton ist Coal=Kohle Coal Ore=Kohleerz Coarse Dirt=Grobe Erde -Coarse dirt acts as a soil for some plants and is similar to dirt, but it will never grow a cover.=Große Erde ist für einige Pflanzen ein Erdboden und ähnlich wie Erde, aber auf ihr wird nie eine Grasschicht oder ähnliches wachsen. +Coarse dirt acts as a soil for some plants and is similar to dirt, but it will never grow a cover.=Grobe Erde ist für einige Pflanzen ein Erdboden und ähnlich wie Erde, aber auf ihr wird nie eine Grasschicht oder ähnliches wachsen. Cobblestone=Kopfsteinpflaster Cobweb=Spinnennetz Cobwebs can be walked through, but significantly slow you down.=Spinnennetze können passiert werden, aber sie verlangsamen Sie beträchtlich. @@ -112,12 +112,12 @@ Golden apples are precious food items which can be eaten.=Goldene Äpfel sind ko Granite=Granit Grass Block=Grasblock Grass Path=Graspfad -Grass paths are a decorative variant of grass blocks. Their top has a different color and they are a bit lower than grass blocks, making them useful to build footpaths. Grass paths can be created with a shovel. A grass path turns into dirt when it is below a solid block.=Graspfade sind eine dekorative Variante von Grasblöcken. Ihre Oberseite hat eine andere Farbe und sie sind etwas niedriger als Grasblöcke, wodurch sie nützlich sind, um Fußwege zu errichten. Graspfade werden mit einer Schaufel errichtet. Ein Grasphad verwandelt sich in Erde, wenn er sich unter einem festen Block befindet. +Grass paths are a decorative variant of grass blocks. Their top has a different color and they are a bit lower than grass blocks, making them useful to build footpaths. Grass paths can be created with a shovel. A grass path turns into dirt when it is below a solid block.=Graspfade sind eine dekorative Variante von Grasblöcken. Ihre Oberseite hat eine andere Farbe und sie sind etwas niedriger als Grasblöcke, wodurch sie nützlich sind, um Fußwege zu errichten. Graspfade werden mit einer Schaufel errichtet. Ein Graspfad verwandelt sich in Erde, wenn er sich unter einem festen Block befindet. Gravel=Kies Green Stained Glass=Grünes Buntglas Grey Stained Glass=Graues Buntglas Ice=Eis -Ice is a translucent solid block usually found in cold areas. It melts near block light sources at a light level of 12 or higher. When it melts or is broken while resting on top of another block, it will turn into a water source.=Eis ist ein durchscheinender fester Block, der oft in kalten Gebieten gefunden werden kann. Er schmitzt in der nähe von Block-Lichtquellen bei einer Helligkeit von 12 oder höher. Wenn es schmilzt oder abgeaut wird, und darunter ein anderer Block war, wird er sich in eine Wasserquelle verwandeln. +Ice is a translucent solid block usually found in cold areas. It melts near block light sources at a light level of 12 or higher. When it melts or is broken while resting on top of another block, it will turn into a water source.=Eis ist ein durchscheinender fester Block, der oft in kalten Gebieten gefunden werden kann. Er schmilzt in der Nähe von Block-Lichtquellen bei einer Helligkeit von 12 oder höher. Wenn es schmilzt oder abgebaut wird, und darunter ein anderer Block war, wird er sich in eine Wasserquelle verwandeln. In the End dimension, starting a fire on this block will create an eternal fire.=In der Ende-Dimension wird Feuer auf diesem Block ewig brennen. Iron Ingot=Eisenbarren Iron Nugget=Eisenklumpen @@ -155,7 +155,7 @@ Oak Wood Planks=Eichenholzplanken Oak leaves are grown from oak trees.=Eichenblätter wachsen von Eichen. Obsidian=Obsidian Obsidian is an extremely hard mineral with an enourmous blast-resistance. Obsidian is formed when water meets lava.=Obsidian ist ein extrem hartes Mineral mit einem enormen Sprengwiderstand. -One of the most common blocks in the world, almost the entire underground consists of stone. It sometimes contains ores. Stone may be created when water meets lava.=Eines der häufigsten Blöcke der Welt, fast der ganze Untergrund besteht aus stein. Er enthält manchmal Erze. Stein kann entstehen, wenn Wasser auf Lava trifft. +One of the most common blocks in the world, almost the entire underground consists of stone. It sometimes contains ores. Stone may be created when water meets lava.=Eines der häufigsten Blöcke der Welt, fast der ganze Untergrund besteht aus Stein. Er enthält manchmal Erze. Stein kann entstehen, wenn Wasser auf Lava trifft. Orange Stained Glass=Orange Buntglas Packed Ice=Packeis Packed ice is a compressed form of ice. It is opaque and solid.=Packeis ist eine kompakte Eisform. Es ist undurchsichtig und fest. @@ -192,7 +192,7 @@ Smooth red sandstone is a decorative building block.=Glatter roter Sandstein ist Smooth sandstone is compressed sand and is a rather soft kind of stone.=Glatter Sandstein ist komprimierter Sand und ein relativ weiches Gestein. Snow=Schnee Some coal contained in stone, it is very common and can be found inside stone in medium to large clusters at nearly every height.=Etwas Kohle im Stein, es kommt sehr häufig vor und kann in mittelgroßen bis großen Ansammlungen im Stein bei fast jeder Höhe gefunden werden. -Some iron contained in stone, it is prety common and can be found below sea level.=Etwas Eisen umschlossen von Stein, es ist recht verbreitet und kann unter der Meeresoberfläche gefunden werden. +Some iron contained in stone, it is prety common and can be found below sea level.=Etwas Eisen umschlossen von Stein, es ist recht verbreitet und kann unter dem Meeresspiegel gefunden werden. Spruce Bark=Fichtenrinde Spruce Leaves=Fichtenblätter Spruce Sapling=Fichtensetzling @@ -245,3 +245,4 @@ Lava interacts with water various ways:=Lava reagiert mit Wasser auf verschieden • When a lava source is directly below or horizontally next to water, the lava turns into obsidian.=• Wenn sich eine Lavaquelle direkt unter oder horizontal neben Wasser befindet, verwandelt sich die Lava zu Obsidian. • When lava is directly above water, the water turns into stone.=• Wenn sich Lava direkt über Wasser befindet, verwandelt sich das Wasser zu Stein. Stained Glass=Buntglas +Granite is an igneous rock.=Granit ist ein magmatisches Gestein. diff --git a/mods/ITEMS/mcl_core/locale/template.txt b/mods/ITEMS/mcl_core/locale/template.txt index e8313e80..005aa673 100644 --- a/mods/ITEMS/mcl_core/locale/template.txt +++ b/mods/ITEMS/mcl_core/locale/template.txt @@ -244,3 +244,4 @@ Lava interacts with water various ways:= • When a lava source is directly below or horizontally next to water, the lava turns into obsidian.= • When lava is directly above water, the water turns into stone.= Stained Glass= +Granite is an igneous rock.= diff --git a/mods/ITEMS/mcl_core/nodes_base.lua b/mods/ITEMS/mcl_core/nodes_base.lua index bcef7d74..8c7db771 100644 --- a/mods/ITEMS/mcl_core/nodes_base.lua +++ b/mods/ITEMS/mcl_core/nodes_base.lua @@ -237,7 +237,7 @@ minetest.register_node("mcl_core:stone_smooth", { minetest.register_node("mcl_core:granite", { description = S("Granite"), - _doc_items_longdesc = "Granite is an igneous rock.", + _doc_items_longdesc = S("Granite is an igneous rock."), tiles = {"mcl_core_granite.png"}, is_ground_content = true, stack_max = 64, diff --git a/mods/ITEMS/mcl_doors/locale/mcl_doors.de.tr b/mods/ITEMS/mcl_doors/locale/mcl_doors.de.tr index 6b9273b7..7cb502c6 100644 --- a/mods/ITEMS/mcl_doors/locale/mcl_doors.de.tr +++ b/mods/ITEMS/mcl_doors/locale/mcl_doors.de.tr @@ -1,5 +1,5 @@ # textdomain: mcl_doors -Wooden doors are 2-block high barriers which can be opened or closed by hand and by a redstone signal.=Holztüren sind 2-Block hohe Barrieren, die von Hand oder mit einem Redstone-Signal geöffnet oder geschlossen werden können. +Wooden doors are 2-block high barriers which can be opened or closed by hand and by a redstone signal.=Holztüren sind 2 Blöcke hohe Barrieren, die von Hand oder mit einem Redstone-Signal geöffnet oder geschlossen werden können. To open or close a wooden door, rightclick it or supply its lower half with a redstone signal.=Um die Holztür zu öffnen oder zu schließen, rechtsklicken Sie sie oder versorgen Sie sie mit einem Redstone-Signal. Oak Door=Eichentür Acacia Door=Akazientür @@ -8,7 +8,7 @@ Dark Oak Door=Schwarzeichentür Jungle Door=Dschungeltür Spruce Door=Fichtentür Iron Door=Eisentür -Iron doors are 2-block high barriers which can only be opened or closed by a redstone signal, but not by hand.=Eisentüren sind 2-Block hohe Barrieren, die nur von einem Redstone-Signal geöffnet oder geschlossen werden können. +Iron doors are 2-block high barriers which can only be opened or closed by a redstone signal, but not by hand.=Eisentüren sind 2 Blöcke hohe Barrieren, die nur von einem Redstone-Signal geöffnet oder geschlossen werden können. To open or close an iron door, supply its lower half with a redstone signal.=Um eine Eisentür zu öffnen oder zu schließen, versorgen Sie die untere Hälfte mit einem Redstone-Signal. Oak Trapdoor=Eichenfalltür Acacia Trapdoor=Akazienfalltür diff --git a/mods/ITEMS/mcl_end/locale/mcl_end.de.tr b/mods/ITEMS/mcl_end/locale/mcl_end.de.tr index 08119ae7..1ed9858c 100644 --- a/mods/ITEMS/mcl_end/locale/mcl_end.de.tr +++ b/mods/ITEMS/mcl_end/locale/mcl_end.de.tr @@ -11,9 +11,9 @@ Chorus Flower=Chorusblume A chorus flower is the living part of a chorus plant. It can grow into a tall chorus plant, step by step. When it grows, it may die on old age eventually. It also dies when it is unable to grow.=Eine Chorusblume ist der lebendige Teil einer Choruspflanze. Sie kann zu einer großen Choruspflanze heranwachsen, Schritt für Schritt. Wenn sie wächst, wird sie irgendwann am Alter absterben. Sie stirbt auch ab, wenn sie nicht weiterwachsen kann. Place it and wait for it to grow. It can only be placed on top of end stone, on top of a chorus plant stem, or at the side of exactly one chorus plant stem.=Platzieren Sie sie und warten Sie darauf, dass sie wächst. Sie kann nur auf Endstein, auf einen anderen Choruspflanzenstängel oder an der Seite von genau einem Choruspflanzenstängel platziert werden. Dead Chorus Flower=Tote Chorusblume -This is a part of a chorus plant. It doesn't grow. Chorus flowers die of old age or when they are unable to grow. A dead chorus flower can be harvested to obtain a fresh chorus flower which is able to grow again.=Dies ist ein Teil einer Choruspflanze. Er wächst nicht. Choruspflanzen werden mit der Zeit alt und sterben ab, sie sterben auch ab, wenn sie nicht weiterwachsen können. Eine tote Chorusblume kann geerntet werden, um eine frische neue Choruspflanze zu erhalten, die wieder wachsen kann. +This is a part of a chorus plant. It doesn't grow. Chorus flowers die of old age or when they are unable to grow. A dead chorus flower can be harvested to obtain a fresh chorus flower which is able to grow again.=Dies ist ein Teil einer Choruspflanze. Er wächst nicht. Chorusblumen werden mit der Zeit alt und sterben ab, sie sterben auch ab, wenn sie nicht weiterwachsen können. Eine tote Chorusblume kann geerntet werden, um eine frische neue Choruspflanze zu erhalten, die wieder wachsen kann. Chorus Plant Stem=Choruspflanzenstängel -A chorus plant stem is the part of a chorus plant which holds the whole plant together. It needs end stone as its soil. Stems are grown from chorus flowers.=Ein Choruspflanzenstängel ist der Teil einer Choruspflanze, der die gesamte Pflanze zusammenhält. Sie braucht Endstein als Unterground. Stängel wachsen aus Chorusblumen. +A chorus plant stem is the part of a chorus plant which holds the whole plant together. It needs end stone as its soil. Stems are grown from chorus flowers.=Ein Choruspflanzenstängel ist der Teil einer Choruspflanze, der die gesamte Pflanze zusammenhält. Sie braucht Endstein als Untergrund. Stängel wachsen aus Chorusblumen. Chorus Fruit=Chorusfrucht A chorus fruit is an edible fruit from the chorus plant which is home to the End. Eating it teleports you to the top of a random solid block nearby, provided you won't end up inside a liquid, solid or harmful blocks. Teleportation might fail if there are very few or no places to teleport to.=Eine Chorusfrucht ist eine essbare Frucht von der Choruspflanze, die im Ende beheimatet ist. Wenn man sie isst, wird man auf einen zufälligen festen Block in der Nähe teleportiert, solange man nicht in eine Flüssigkeit, einen festen oder gefährlichen Block landen würde. Die Teleportation könnte fehlschlagen, wenn es sehr wenige oder keine Orte gibt, zu denen sie einen hinteleportieren könnte. Popped Chorus Fruit=Aufgeploppte Chorusfrucht diff --git a/mods/ITEMS/mcl_farming/locale/mcl_farming.de.tr b/mods/ITEMS/mcl_farming/locale/mcl_farming.de.tr index 90226967..f6e83573 100644 --- a/mods/ITEMS/mcl_farming/locale/mcl_farming.de.tr +++ b/mods/ITEMS/mcl_farming/locale/mcl_farming.de.tr @@ -13,12 +13,12 @@ Beetroot=Rote-Beete-Rübe Beetroots are both used as food item and a dye ingredient. Pigs like beetroots, too.=Rote-Beete-Rüben sind eine Speise und nützlich zur Herstellung von Farbstoffen. Schweine mögen sie auch. Hold it in your hand and right-click to eat it. Rightclick an animal to feed it.=Halten Sie es in der Hand und rechtsklicken Sie, um es zu essen. Rechtsklicken Sie auf ein Tier, um es zu füttern. Beetroot Soup=Rote-Beete-Suppe -Beetroot soup is a food item.=Rote-Beete-Suppe ist ein Lebensmittel +Beetroot soup is a food item.=Rote-Beete-Suppe ist ein Lebensmittel. Premature Carrot Plant=Junge Karottenpflanze Carrot plants are plants which grow on farmland under sunlight in 8 stages, but only 4 stages can be visually told apart. On hydrated farmland, they grow a bit faster. They can be harvested at any time but will only yield a profit when mature.=Karottenpflanzen sind Pflanzen, die auf Ackerboden im Sonnenlicht in 8 Stufen wachsen, aber es gibt nur 4 sichtbar unterscheidbare Stufen. Auf bewässertem Ackerboden wachsen sie etwas schneller. Sie können jederzeit abgeerntet werden, aber werden nur einen Ertrag abwerfen, wenn sie ausgewachsen sind. Premature Carrot Plant (Stage @1)=Junge Karottenpflanze (@1. Stufe) Mature Carrot Plant=Ausgewachsene Karottenpflanze -Mature carrot plants are ready to be harvested for carrots. They won't grow any further.=Ausgewachsene Karottenpflanze können für Karotten abgeerntet werden. Sie werden nicht weiter wachsen. +Mature carrot plants are ready to be harvested for carrots. They won't grow any further.=Ausgewachsene Karottenpflanzen können für Karotten abgeerntet werden. Sie werden nicht weiter wachsen. Carrot=Karotte Carrots can be eaten and planted. Pigs and rabbits like carrots.=Karotten können gegessen und gepflanzt werden. Schweine und Kaninchen mögen Karotten. Hold it in your hand and rightclick to eat it. Place it on top of farmland to plant the carrot. It grows in sunlight and grows faster on hydrated farmland. Rightclick an animal to feed it.=Halten Sie es in ihrer Hand und rechtsklicken Sie, um es zu essen. Platzieren Sie sie auf Ackerboden, um sie einzupflanzen. Sie wächst im Sonnenlicht und wächst auf bewässertem Ackerboden schneller. Rechtsklicken Sie auf ein Tier, um es zu füttern. @@ -76,7 +76,7 @@ Farmland is used for farming, a necessary surface to plant crops. It is created Hydrated Farmland=Bewässerter Ackerboden Hydrated farmland is used in farming, this is where you can plant and grow some plants. It is created when farmland is under rain or near water. Without water, this block will dry out eventually. This block will turn back to dirt when a solid block appears above it or a piston arm extends above it.=Bewässerter Ackerboden wird für den Ackerbau benutzt, auf ihm kann man Nutzpflanzen züchten. Er entsteht, wenn sich Ackerboden unter Regen oder in der Nähe von Wasser befindet. Ohne Wasser wird dieser Block irgendwann austrocknen. Dieser Block verwandelt sich zurück zu Erde, wenn über ihm ein fester Block auftaucht, oder ein Kolbenarm sich über ihn bewegt. Wheat Seeds=Weizensamen -Grows into a wheat plant. Chickens like wheat seeds.=Wachsen zu einer Weizenpflanze heran +Grows into a wheat plant. Chickens like wheat seeds.=Wachsen zu einer Weizenpflanze heran. Hühner mögen Weizensamen. Place the wheat seeds on farmland (which can be created with a hoe) to plant a wheat plant. They grow in sunlight and grow faster on hydrated farmland. Rightclick an animal to feed it wheat seeds.=Platzieren Sie die Weizensamen auf Ackerboden (welcher mit einer Hacke gemacht werden kann), um eine Weizenpflanze zu pflanzen. Sie wächst im Sonnenlicht und wächst schneller auf bewässertem Ackerboden. Rechtsklicken Sie auf ein Tier, um es mit Weizensamen zu füttern. Premature Wheat Plant=Junge Weizenpflanze Premature wheat plants grow on farmland under sunlight in 8 stages. On hydrated farmland, they grow faster. They can be harvested at any time but will only yield a profit when mature.=Junge Weizenpflanzen wachsen auf Ackerboden im Sonnenlicht in 8 Stufen. Auf bewässertem Ackerboden wachsen sie schneller. Sie können jederzeit abgeerntet werden, aber werden nur ertragreich sein, wenn sie ausgewachsen sind. diff --git a/mods/ITEMS/mcl_fire/locale/mcl_fire.de.tr b/mods/ITEMS/mcl_fire/locale/mcl_fire.de.tr index 6185ad46..feca7008 100644 --- a/mods/ITEMS/mcl_fire/locale/mcl_fire.de.tr +++ b/mods/ITEMS/mcl_fire/locale/mcl_fire.de.tr @@ -7,7 +7,7 @@ Flint and steel is a tool to start fires and ignite blocks.=Ein Feuerzeug ist ei Rightclick the surface of a block to attempt to light a fire in front of it or ignite the block. A few blocks have an unique reaction when ignited.=Rechtsklicken Sie auf die Oberfläche eines Blocks, um zu versuchen, ein Feuer auf ihm zu entfachen, oder den Block selbst anzuzünden. Ein paar Blocke reagieren besonders, wenn sie angezündet werden. Fire is a damaging and destructive but short-lived kind of block. It will destroy and spread towards near flammable blocks, but fire will disappear when there is nothing to burn left. It will be extinguished by nearby water and rain. Fire can be destroyed safely by punching it, but it is hurtful if you stand directly in it. If a fire is started above netherrack or a magma block, it will immediately turn into an eternal fire.=Feuer ist ein schädlicher und destruktiver aber kurzlebiger Block. Es wird sich zu entzündlichen Blöcken ausbreiten und sie zerstören, aber Feuer wird verschwinden, wenn es nichts brennbares mehr gibt. Es wird von Wasser und Regen gelöscht. Feuer kann sicher mit einem Schlag zerstört werden, aber es tut weh, wenn man direkt in ihm steht. Wird ein Feuer über Netherrack oder einem Magmablock entfacht, wird er sich sofort zu einem ewigen Feuer verwandeln. Fire is a damaging but non-destructive short-lived kind of block. It will disappear when there is no flammable block around. Fire does not destroy blocks, at least not in this world. It will be extinguished by nearby water and rain. Fire can be destroyed safely by punching it, but it is hurtful if you stand directly in it. If a fire is started above netherrack or a magma block, it will immediately turn into an eternal fire.=Feuer ist ein schädlicher aber nicht-destruktiver kurzlebiger Block. Es wird verschwinden, wenn sich keine entzündlichen Blöcke in der Nähe befinden. Feuer breitet sich nicht aus und zerstört keine Blöcke, zumindest nicht in dieser Welt. Es wird von Wasser und Regen gelöscht. Feuer kann sicher mit einem Schlag zerstört werden, aber es tut weh, wenn man direkt in ihm steht. Wird ein Feuer über Netherrack oder einem Magmablock entfacht, wird er sich sofort zu einem ewigen Feuer verwandeln. -Eternal fire is a damaging block that might create more fire. It will create fire around it when flammable blocks are nearby. Eternal fire can be extinguished by punches and nearby water blocks. Other than (normal) fire, eternal fire does not get extinguished on its own and also continues to burn under rain. Punching eternal fire is safe, but it hurts if you stand inside.=Ewiges Feuer ist ein schädlicher Block, der mehr Feuer machen kann. Er wird um sich Feuer machen, wenn entflammbare Blöcke in der Nähe sind. Ewiges Feuer kann von Schlägen und Wasserblöcken in der Nähe gelöscht werden. Anders als (normales) Feuer geht ein ewiges Fuer nicht von alleine aus, auf nicht unter Regen. Es ist sicher, ein ewiges Feuer zu schlagen, aber es tut weh, wenn man direkt in einem steht. +Eternal fire is a damaging block that might create more fire. It will create fire around it when flammable blocks are nearby. Eternal fire can be extinguished by punches and nearby water blocks. Other than (normal) fire, eternal fire does not get extinguished on its own and also continues to burn under rain. Punching eternal fire is safe, but it hurts if you stand inside.=Ewiges Feuer ist ein schädlicher Block, der mehr Feuer machen kann. Er wird um sich Feuer machen, wenn entflammbare Blöcke in der Nähe sind. Ewiges Feuer kann von Schlägen und Wasserblöcken in der Nähe gelöscht werden. Anders als (normales) Feuer geht ein ewiges Feuer nicht von alleine aus, auch nicht unter Regen. Es ist sicher, ein ewiges Feuer zu schlagen, aber es tut weh, wenn man direkt in einem steht. @1 has been cooked crisp.=@1 wurde knusprig gebraten. @1 felt the burn.=@1 ist völlig verbrannt. @1 died in the flames.=@1 starb in den Flammen. diff --git a/mods/ITEMS/mcl_flowers/locale/mcl_flowers.de.tr b/mods/ITEMS/mcl_flowers/locale/mcl_flowers.de.tr index 58634ad1..cf12fd51 100644 --- a/mods/ITEMS/mcl_flowers/locale/mcl_flowers.de.tr +++ b/mods/ITEMS/mcl_flowers/locale/mcl_flowers.de.tr @@ -29,4 +29,4 @@ Large fern is a variant of fern and occupies two blocks. It can be harvested for Double Tallgrass=Doppelhohes Gras Large Fern=Großer Farn Lily Pad=Seerosenblatt -A lily pad is a flat plant block which can be walked on. They can be placed on water sources, ice and frosted ice.=Ein Seerosenblatt ist eine flache Pflanze, die eine stabile begehbare Oberfläche sind. Sie können auf Wasserquellen, auf Eis und brüchigem Eis platziert werden. +A lily pad is a flat plant block which can be walked on. They can be placed on water sources, ice and frosted ice.=Ein Seerosenblatt ist eine flache Pflanze, die eine stabile begehbare Oberfläche ist. Sie kann auf Wasserquellen, auf Eis und brüchigem Eis platziert werden. diff --git a/mods/ITEMS/mcl_portals/locale/mcl_portals.de.tr b/mods/ITEMS/mcl_portals/locale/mcl_portals.de.tr index 23774062..6c16d66d 100644 --- a/mods/ITEMS/mcl_portals/locale/mcl_portals.de.tr +++ b/mods/ITEMS/mcl_portals/locale/mcl_portals.de.tr @@ -4,7 +4,7 @@ An End portal teleports creatures and objects to the mysterious End dimension (a Hop into the portal to teleport. Entering an End portal in the Overworld teleports you to a fixed position in the End dimension and creates a 5×5 obsidian platform at your destination. End portals in the End will lead back to your spawn point in the Overworld.=Springen Sie ins Portal, um sich zu teleportieren. Von der Oberwelt aus werden Sie zu einer festen Position im Ende hin teleportiert. Eine 5×5-Obsidianplattform wird am Zielort erzeugt. Im Ende werden Sie zurück zu Ihrem Startpunkt in der Oberwelt teleportiert. End Portal Frame=Endportalrahmen End portal frames are used in the construction of End portals. Each block has a socket for an eye of ender.=Endportalrahmen werden in der Konstruktion von Endportalen benutzt. Jeder Block hat einen Sockel für ein Enderauge. -To create an End portal, you need 12 end portal frames and 12 eyes of ender. The end portal frames have to be arranged around a horizontal 3×3 area with each block facing inward. Any other arrangement will fail.=Um ein Endportal zu pauen, brauchen sie 12 Endportalrahmen und 12 Enderaugen. Die Endportalrahmenblöcke muss um ein horizontales Feld von 3×3 platziert sein, wobei jeder von ihnen nach innen zeigt. Jede andere Anordnung wird nicht funktionieren. +To create an End portal, you need 12 end portal frames and 12 eyes of ender. The end portal frames have to be arranged around a horizontal 3×3 area with each block facing inward. Any other arrangement will fail.=Um ein Endportal zu bauen, brauchen sie 12 Endportalrahmen und 12 Enderaugen. Die Endportalrahmenblöcke muss um ein horizontales Feld von 3×3 platziert sein, wobei jeder von ihnen nach innen zeigt. Jede andere Anordnung wird nicht funktionieren. Place an eye of ender into each block. The end portal appears in the middle after placing the final eye.=Platzieren Sie ein Enderauge in jeden Block. Das Endportal wird sich in der Mitte öffnen, wenn das letzte Auge platziert wurde. End Portal Frame with Eye of Ender=Endportalrahmen mit Enderauge Nether Portal=Netherportal diff --git a/mods/ITEMS/mcl_potions/locale/mcl_potions.de.tr b/mods/ITEMS/mcl_potions/locale/mcl_potions.de.tr index efe6688c..324ac5dc 100644 --- a/mods/ITEMS/mcl_potions/locale/mcl_potions.de.tr +++ b/mods/ITEMS/mcl_potions/locale/mcl_potions.de.tr @@ -6,7 +6,7 @@ A glass bottle is used as a container for liquids and can be used to collect wat To collect water, it on a cauldron with water (which removes a level of water) or any water source (which removes no water).=Um Wasser aufzusammen, benutzen Sie sie an einem Kessel mit Wasser (was etwas Wasser entfernt) oder einer Wasserquelle (was kein Wasser entfernt). Water Bottle=Wasserflasche Water bottles can be used to fill cauldrons. Drinking water has no effect.=Wasserflaschen können benutzt werden, um Kessel aufzufüllen. Trinken hat keine Wirkung. -Rightclick to drink. Rightclick a cauldron to pour the water into the cauldron.=Rechtsklicken zum Trinken. Auf einem Kessel rechtsklicken, um das Wasser in den Kessen zu schütten. +Rightclick to drink. Rightclick a cauldron to pour the water into the cauldron.=Rechtsklicken zum Trinken. Auf einem Kessel rechtsklicken, um das Wasser in den Kessel zu schütten. River Water Bottle=Flusswasserflasche River water bottles can be used to fill cauldrons. Drinking it has no effect.=Flusswasserflaschen können benutzt werden, um Kessel aufzufüllen. Trinken hat keine Wirkung. Awkward Potion=Seltsamer Trank diff --git a/mods/ITEMS/mcl_throwing/locale/mcl_throwing.de.tr b/mods/ITEMS/mcl_throwing/locale/mcl_throwing.de.tr index 04eb6be2..61ad254f 100644 --- a/mods/ITEMS/mcl_throwing/locale/mcl_throwing.de.tr +++ b/mods/ITEMS/mcl_throwing/locale/mcl_throwing.de.tr @@ -6,4 +6,4 @@ Snowballs can be thrown or launched from a dispenser for fun. Hitting something Egg=Ei Eggs can be thrown or launched from a dispenser and breaks on impact. There is a small chance that 1 or even 4 chicks will pop out of the egg.=Eier können geworfen werden oder aus einem Werfer abgefeuert werden. Sie zerbrechen beim Einschlag. Mit etwas Glück werden aus dem Ei eines oder sogar 4 Küken hinausfallen. Ender Pearl=Enderperle -An ender pearl is an item which can be used for teleportation at the cost of health. It can be thrown and teleport the thrower to its impact location when it hits a solid block or a plant. Each teleportation hurts the user by 5 hit points.=Eine Enderperle ist eine Gegenstand, der zur Teleportation benutzt werden kann auf Kosten der Gesundheit. Sie kann geworfen werden und teleportiert den Werfer zur Einschlagsstelle, wenn sie einen Block oder eine Pflanze trifft. Jede Teleportation verletzt den Werfer um 5 Trefferpunkte. +An ender pearl is an item which can be used for teleportation at the cost of health. It can be thrown and teleport the thrower to its impact location when it hits a solid block or a plant. Each teleportation hurts the user by 5 hit points.=Eine Enderperle ist ein Gegenstand, der zur Teleportation benutzt werden kann auf Kosten der Gesundheit. Sie kann geworfen werden und teleportiert den Werfer zur Einschlagsstelle, wenn sie einen Block oder eine Pflanze trifft. Jede Teleportation verletzt den Werfer um 5 Trefferpunkte. diff --git a/mods/ITEMS/mcl_tools/locale/mcl_tools.de.tr b/mods/ITEMS/mcl_tools/locale/mcl_tools.de.tr index adb73a23..25ca32c4 100644 --- a/mods/ITEMS/mcl_tools/locale/mcl_tools.de.tr +++ b/mods/ITEMS/mcl_tools/locale/mcl_tools.de.tr @@ -1,5 +1,5 @@ # textdomain: mcl_tools -You use your bare hand whenever you are not wielding any item. With your hand you can mine most blocks, but this is the slowest method and only the weakest blocks will yield their useful drop. The hand also deals minor damage by punching. Using the hand is often a last resort, as proper mining tools and weapons are much better.=Sie benutzen Ihre nackte Hand, wenn Sie keinen Gegenstand halten. Mit Ihrer Hand können Sie die meisten Blöcke abbauen, aber dies ist die langsamste Methode und nur aus den schwächsten Blöcken werden ihren brauchbaren Gegenstände hinausfallen. Die Hand richtet auch geringfügigen Schaden mit Schlägen an. Die Hand ist oft die letzte Wahl, da richtige Grabewerkzeuge und Waffen viel besser sind. +You use your bare hand whenever you are not wielding any item. With your hand you can mine most blocks, but this is the slowest method and only the weakest blocks will yield their useful drop. The hand also deals minor damage by punching. Using the hand is often a last resort, as proper mining tools and weapons are much better.=Sie benutzen Ihre nackte Hand, wenn Sie keinen Gegenstand halten. Mit Ihrer Hand können Sie die meisten Blöcke abbauen, aber dies ist die langsamste Methode und nur aus den schwächsten Blöcken werden ihre brauchbaren Gegenstände hinausfallen. Die Hand richtet auch geringfügigen Schaden mit Schlägen an. Die Hand ist oft die letzte Wahl, da richtige Grabewerkzeuge und Waffen viel besser sind. When you are wielding an item which is not a mining tool or a weapon, it will behave as if it were the hand when you start mining or punching.=Wenn Sie einen Gegenstand tragen, der kein Grabewerkzeug oder eine Waffe ist, wird sie sich verhalten, als ob Sie die Hand benutzen würden, wenn Sie etwas abbauen oder schlagen. In Creative Mode, the hand is able to break all blocks instantly.=Im Kreativmodus kann die Hand alle Blöcke sofort zerstören. Pickaxes are mining tools to mine hard blocks, such as stone. A pickaxe can also be used as weapon, but it is rather inefficient.=Spitzhacken sind Grabewerkzeuge, um harte Blöcke wie Stein abzubauen. Eine Spitzhacke kann auch als Waffe benutzt werden, aber das ist recht ineffizient. From 967905264ddf652feefe5c57ac73d5fa2b091fe2 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 25 Mar 2019 12:05:57 +0100 Subject: [PATCH 233/737] Make many help texts translatable and fix bugs --- mods/ENTITIES/mobs_mc/1_items_default.lua | 2 +- mods/ENTITIES/mobs_mc/locale/mobs_mc.de.tr | 1 + mods/ENTITIES/mobs_mc/locale/template.txt | 1 + .../mcl_comparators/locale/mcl_comparators.de.tr | 2 +- .../mesecons_button/locale/mesecons_button.de.tr | 2 +- mods/ITEMS/REDSTONE/mesecons_commandblock/init.lua | 12 ++++++------ .../locale/mesecons_commandblock.de.tr | 12 ++++++------ .../mesecons_commandblock/locale/template.txt | 10 +++++----- .../mesecons_delayer/locale/mesecons_delayer.de.tr | 3 +-- .../REDSTONE/mesecons_delayer/locale/template.txt | 2 +- mods/ITEMS/mcl_core/locale/mcl_core.de.tr | 2 ++ mods/ITEMS/mcl_core/locale/template.txt | 2 ++ mods/ITEMS/mcl_core/nodes_base.lua | 4 ++-- mods/ITEMS/mcl_end/eye_of_ender.lua | 2 +- mods/ITEMS/mcl_end/locale/mcl_end.de.tr | 3 ++- mods/ITEMS/mcl_end/locale/template.txt | 1 + mods/ITEMS/mcl_farming/locale/mcl_farming.de.tr | 5 +++-- mods/ITEMS/mcl_farming/locale/template.txt | 5 +++-- mods/ITEMS/mcl_farming/wheat.lua | 2 +- mods/ITEMS/mcl_mobitems/init.lua | 4 ++-- mods/ITEMS/mcl_mobitems/locale/mcl_mobitems.de.tr | 2 ++ mods/ITEMS/mcl_mobitems/locale/template.txt | 2 ++ mods/ITEMS/mcl_nether/locale/mcl_nether.de.tr | 1 + mods/ITEMS/mcl_nether/locale/template.txt | 1 + mods/ITEMS/mcl_nether/nether_wart.lua | 2 +- mods/ITEMS/mcl_portals/locale/mcl_portals.de.tr | 2 ++ mods/ITEMS/mcl_portals/locale/template.txt | 4 ++-- mods/ITEMS/mcl_portals/portal_end.lua | 4 ++-- mods/ITEMS/mcl_potions/init.lua | 7 ++++--- mods/ITEMS/mcl_potions/locale/mcl_potions.de.tr | 3 +++ mods/ITEMS/mcl_potions/locale/template.txt | 3 +++ mods/ITEMS/mcl_tnt/locale/mcl_tnt.de.tr | 4 ++-- mods/ITEMS/mcl_tools/init.lua | 2 +- mods/ITEMS/mcl_tools/locale/mcl_tools.de.tr | 1 + mods/ITEMS/mcl_tools/locale/template.txt | 1 + mods/ITEMS/mcl_torches/init.lua | 6 +----- 36 files changed, 72 insertions(+), 50 deletions(-) diff --git a/mods/ENTITIES/mobs_mc/1_items_default.lua b/mods/ENTITIES/mobs_mc/1_items_default.lua index 9a36256a..f0e1301e 100644 --- a/mods/ENTITIES/mobs_mc/1_items_default.lua +++ b/mods/ENTITIES/mobs_mc/1_items_default.lua @@ -274,7 +274,7 @@ if c("saddle") and c("lether") and c("string") and c("iron_ingot") then end -- Horse Armor -local horse_armor_use = "Rightclick a horse to put on the horse armor. Donkeys and mules can't wear horse armor." +local horse_armor_use = S("Place it on a horse to put on the horse armor. Donkeys and mules can't wear horse armor.") -- TODO: Balance the horse armor strength, compare with MC armor strength if c("iron_horse_armor") then minetest.register_craftitem("mobs_mc:iron_horse_armor", { diff --git a/mods/ENTITIES/mobs_mc/locale/mobs_mc.de.tr b/mods/ENTITIES/mobs_mc/locale/mobs_mc.de.tr index a81891e2..1e514028 100644 --- a/mods/ENTITIES/mobs_mc/locale/mobs_mc.de.tr +++ b/mods/ENTITIES/mobs_mc/locale/mobs_mc.de.tr @@ -58,6 +58,7 @@ Golden Horse Armor=Goldpferderüstung Golden horse armor can be worn by horses to increase their protection from harm.=Eine Goldpferderüstung kann von Pferden getragen werden, um ihren Schutz vor Schaden zu erhöhen. Diamond Horse Armor=Diamantpferderüstung Diamond horse armor can be worn by horses to greatly increase their protection from harm.=Eine Diamantpferderüstung kann von Pferden getragen werden, um ihren Schutz vor Schaden beträchtlich zu erhöhen. +Place it on a horse to put on the horse armor. Donkeys and mules can't wear horse armor.=Platzieren Sie es auf einem Pferd, um die Pferderüstung aufzusetzen. Esel und Maultiere können keine Pferderüstung tragen. Farmer=Bauer Fisherman=Fischer Fletcher=Pfeilmacher diff --git a/mods/ENTITIES/mobs_mc/locale/template.txt b/mods/ENTITIES/mobs_mc/locale/template.txt index d2c7c239..3cd260ce 100644 --- a/mods/ENTITIES/mobs_mc/locale/template.txt +++ b/mods/ENTITIES/mobs_mc/locale/template.txt @@ -58,6 +58,7 @@ Golden Horse Armor= Golden horse armor can be worn by horses to increase their protection from harm.= Diamond Horse Armor= Diamond horse armor can be worn by horses to greatly increase their protection from harm.= +Place it on a horse to put on the horse armor. Donkeys and mules can't wear horse armor.= Farmer= Fisherman= Fletcher= diff --git a/mods/ITEMS/REDSTONE/mcl_comparators/locale/mcl_comparators.de.tr b/mods/ITEMS/REDSTONE/mcl_comparators/locale/mcl_comparators.de.tr index 2e378ef7..dbbd51a2 100644 --- a/mods/ITEMS/REDSTONE/mcl_comparators/locale/mcl_comparators.de.tr +++ b/mods/ITEMS/REDSTONE/mcl_comparators/locale/mcl_comparators.de.tr @@ -3,7 +3,7 @@ Redstone comparators are multi-purpose redstone components.=Redstonekomparatoren They can transmit a redstone signal, detect whether a block contains any items and compare multiple signals.=Sie können ein Redstonesignal übertragen, erkennen, ob ein Block Gegenstände enthält und mehrere Signale vergleichen. A redstone comparator has 1 main input, 2 side inputs and 1 output. The output is in arrow direction, the main input is in the opposite direction. The other 2 sides are the side inputs.=Ein Redstonekomparator hat 1 Haupteingang, 2 Seiteneingänge und 1 Ausgang. Der Ausgang ist in Pfeilrichtung, der Haupteingang ist in der gegenüberliegenden Richtung. Die anderen 2 Seiten sind die Seiteneingänge. The main input can powered in 2 ways: First, it can be powered directly by redstone power like any other component. Second, it is powered if, and only if a container (like a chest) is placed in front of it and the container contains at least one item.=Der Haupteingang kann auf 2 Weisen versorgt werden: Erstens, kann er direkt von Redstoneenergie wie bei jeder anderen Komponente versorgt werden. Zweitens wird er versorgt, wenn, und nur wenn ein Behälter (wie eine Truhe) vor dem Komporator platziert wurde und der Behälter mindestens einen Gegenstand enthält. -The side inputs are only powered by normal redstone power. The redstone can operate in two modes: Transmission mode and subtraction mode. It starts in transmission mode and the mode can be changed by using the block.=Die Seiteneingänge akzeptieren nur normale Redstoneenergie. Der Redstonekomparator kann in zwei Modi agieren: Übertragungsmodus und Subtraktionsmodus. Er fängt im Übertragungsmodus an. Der Modus wird beim Benutzen des Blocks geändert. +The side inputs are only powered by normal redstone power. The redstone comparator can operate in two modes: Transmission mode and subtraction mode. It starts in transmission mode and the mode can be changed by using the block.=Die Seiteneingänge akzeptieren nur normale Redstoneenergie. Der Redstonekomparator kann in zwei Modi agieren: Übertragungsmodus und Subtraktionsmodus. Er fängt im Übertragungsmodus an. Der Modus wird beim Benutzen des Blocks geändert. Transmission mode:@nThe front torch is unlit and lowered. The output is powered if, and only if the main input is powered. The two side inputs are ignored.=Übertragungsmodus:@nDie vordere Fackel ist eingefahren und leuchtet nicht auf. Die Ausgabe gibt ein Signal, wenn, nur nur wenn der Haupteingang bestromt wird. Die zwei Seiteneingänge werden ignoriert. Subtraction mode:@nThe front torch is lit. The output is powered if, and only if the main input is powered and none of the side inputs is powered.=Subtraktionsmodus:@nDie vordere Fackel leuchtet auf. Die Ausgabe gibt ein Signal wenn, nur nur wenn der Haupteingang versorgt wird und keiner der Seiteneingänge bestromt ist. Redstone Comparator=Redstonekomparator diff --git a/mods/ITEMS/REDSTONE/mesecons_button/locale/mesecons_button.de.tr b/mods/ITEMS/REDSTONE/mesecons_button/locale/mesecons_button.de.tr index da25ab73..60d64437 100644 --- a/mods/ITEMS/REDSTONE/mesecons_button/locale/mesecons_button.de.tr +++ b/mods/ITEMS/REDSTONE/mesecons_button/locale/mesecons_button.de.tr @@ -1,7 +1,7 @@ # textdomain: mesecons_button Use the button to push it.=Benutzen Sie den Knopf, um ihn zu drücken. Stone Button=Steinknopf -A stone button is a redstone component made out of stone which can be pushed to provide redstone power. When pushed, it powers adjacent redstone components for 1 second. =Ein Steinknopf ist eine Redstonekomponente aus Stein. Er kann gedrückt werden, um ein Redstonesignal zu senden. Im gedrückten Zustand versorgt er benachbarte Redstonekomponenten für 1 Sekunde mit Redstoneenergie. +A stone button is a redstone component made out of stone which can be pushed to provide redstone power. When pushed, it powers adjacent redstone components for 1 second.=Ein Steinknopf ist eine Redstonekomponente aus Stein. Er kann gedrückt werden, um ein Redstonesignal zu senden. Im gedrückten Zustand versorgt er benachbarte Redstonekomponenten für 1 Sekunde mit Redstoneenergie. Oak Button=Eichenknopf Acacia Button=Akazienknopf Birch Button=Birkenknopf diff --git a/mods/ITEMS/REDSTONE/mesecons_commandblock/init.lua b/mods/ITEMS/REDSTONE/mesecons_commandblock/init.lua index e8749f02..855eb86d 100644 --- a/mods/ITEMS/REDSTONE/mesecons_commandblock/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons_commandblock/init.lua @@ -217,15 +217,15 @@ S("To be able to place a command block and change the commands, you need to be i S("All commands will be executed on behalf of the player who placed the command block, as if the player typed in the commands. This player is said to be the “commander” of the block.").."\n\n".. S("Command blocks support placeholders, insert one of these placeholders and they will be replaced by some other text:").."\n".. -S("• “@c”: commander of this command block").."\n".. -S("• “@n” or “@p”: nearest player from the command block").."\n".. -S("• “@f” farthest player from the command block").."\n".. -S("• “@r”: random player currently in the world").."\n".. -S("• “@@”: literal “@” sign").."\n\n".. +S("• “@@c”: commander of this command block").."\n".. +S("• “@@n” or “@@p”: nearest player from the command block").."\n".. +S("• “@@f” farthest player from the command block").."\n".. +S("• “@@r”: random player currently in the world").."\n".. +S("• “@@@@”: literal “@@” sign").."\n\n".. S("Example 1:\n time 12000\nSets the game clock to 12:00").."\n\n".. -S("Example 2:\n give @n mcl_core:apple 5\n→ Gives the nearest player 5 apples"), +S("Example 2:\n give @@n mcl_core:apple 5\n→ Gives the nearest player 5 apples"), tiles = {{name="jeija_commandblock_off.png", animation={type="vertical_frames", aspect_w=32, aspect_h=32, length=2}}}, groups = {creative_breakable=1, mesecon_effector_off=1}, diff --git a/mods/ITEMS/REDSTONE/mesecons_commandblock/locale/mesecons_commandblock.de.tr b/mods/ITEMS/REDSTONE/mesecons_commandblock/locale/mesecons_commandblock.de.tr index fe10965f..307f26c6 100644 --- a/mods/ITEMS/REDSTONE/mesecons_commandblock/locale/mesecons_commandblock.de.tr +++ b/mods/ITEMS/REDSTONE/mesecons_commandblock/locale/mesecons_commandblock.de.tr @@ -15,12 +15,12 @@ Everyone can activate a command block and look at its commands, but not everyone To view the commands in a command block, use it. To activate the command block, just supply it with redstone power. This will execute the commands once. To execute the commands again, turn the redstone power off and on again.=Um die Befehle in einem Befehlsblock zu betrachten, benutzen Sie ihn. Um ihn zu aktivieren, versorgen Sie ihn einfach mit Redstoneenergie. Das wird die Befehle einmalig ausführen. Um sie erneut auszuführen, schalten Sie die Redstoneenergie aus und wieder ein. To be able to place a command block and change the commands, you need to be in Creative Mode and must have the “maphack” privilege. A new command block does not have any commands and does nothing. Use the command block (in Creative Mode!) to edit its commands. Read the help entry “Advanced topics > Server Commands” to understand how commands work. Each line contains a single command. You enter them like you would in the console, but without the leading slash. The commands will be executed from top to bottom.=Um einen Befehlsblock platzieren und die Befehle ändern zu können, müssen Sie im Kreativmodus sein und das „maphack“-Privileg haben. Ein neuer Befehlsblock hat keine Befehle und tut gar nichts. Benutzen Sie den Befehlsblock (im Kreativmodus!), um seine Befehle zu bearbeiten. Lesen Sie den Hilfeeintrag „Fortgeschrittenes > Serverbefehle“, um zu verstehen, wie Befehle funktionieren. Jede Zeile enthält einen einzigen Befehl. Sie geben Sie wie in der Konsole ein, aber ohne den Schrägstrich am Anfang. All commands will be executed on behalf of the player who placed the command block, as if the player typed in the commands. This player is said to be the “commander” of the block.=Alle Befehle werden im Namen des Spielers, der den Befehlsblock platziert hat, ausgeführt, als ob der Spieler die Befehle eingegeben hätte. Diesen Spieler nennen wir den „Kommandanten“ des Blocks. -Command blocks support placeholders, insert one of these placeholders and they will be replaced by some other text:=Befehlsblöcke unterstützen Platzhalter, geben sie einen dieser Platzhalter ein und sie werden durch einen anderen Text ersetzt: -• “@c”: commander of this command block=• „@c“: Befehlshaber dieses Befehlsblocks -• “@n” or “@p”: nearest player from the command block=• „@n“ oder „@p“: Nächster Spieler am Befehlsblock -• “@f” farthest player from the command block=• Der vom Befehelsblock am weitesten entfernte Spieler -• “@r”: random player currently in the world=• „@r“: Zufälliger Spieler in der Welt -• “@@”: literal “@” sign=• Nur das „@“-Zeichen +Command blocks support placeholders, insert one of these placeholders and they will be replaced by some other text:=Befehlsblöcke unterstützen Platzhalter. Geben Sie einen dieser Platzhalter ein und sie werden durch einen anderen Text ersetzt: +• “@@c”: commander of this command block=• „@@c“: Befehlshaber dieses Befehlsblocks +• “@@n” or “@@p”: nearest player from the command block=• „@@n“ oder „@@p“: Nächster Spieler am Befehlsblock +• “@@f” farthest player from the command block=• „@@f“: Der vom Befehlsblock am weitesten entfernte Spieler +• “@@r”: random player currently in the world=• „@@r“: Zufälliger Spieler in der Welt +• “@@@@”: literal “@@” sign=• „@@@@“: Nur das „@@“-Zeichen Example 1:@n time 12000@nSets the game clock to 12:00=1. Beispiel:@n time 12000@nSetzt die Spieluhr auf 12:00 Uhr Example 2:@n give @@n mcl_core:apple 5@n→ Gives the nearest player 5 apples=2. Beispiel:@n give @@n mcl_core:apple 5@n→ Gibt dem nächsten Spieler 5 Äpfel Access denied. You need the “maphack” privilege to edit command blocks.=Zugriff verweigert. Sie brauchen das „maphack“-Privileg, um Befehlsblöcke zu bearbeiten. diff --git a/mods/ITEMS/REDSTONE/mesecons_commandblock/locale/template.txt b/mods/ITEMS/REDSTONE/mesecons_commandblock/locale/template.txt index c20f5f08..a2ce9ebe 100644 --- a/mods/ITEMS/REDSTONE/mesecons_commandblock/locale/template.txt +++ b/mods/ITEMS/REDSTONE/mesecons_commandblock/locale/template.txt @@ -16,11 +16,11 @@ To view the commands in a command block, use it. To activate the command block, To be able to place a command block and change the commands, you need to be in Creative Mode and must have the “maphack” privilege. A new command block does not have any commands and does nothing. Use the command block (in Creative Mode!) to edit its commands. Read the help entry “Advanced topics > Server Commands” to understand how commands work. Each line contains a single command. You enter them like you would in the console, but without the leading slash. The commands will be executed from top to bottom.= All commands will be executed on behalf of the player who placed the command block, as if the player typed in the commands. This player is said to be the “commander” of the block.= Command blocks support placeholders, insert one of these placeholders and they will be replaced by some other text:= -• “@c”: commander of this command block= -• “@n” or “@p”: nearest player from the command block= -• “@f” farthest player from the command block= -• “@r”: random player currently in the world= -• “@@”: literal “@” sign= +• “@@c”: commander of this command block= +• “@@n” or “@@p”: nearest player from the command block= +• “@@f” farthest player from the command block= +• “@@r”: random player currently in the world= +• “@@@@”: literal “@@” sign= Example 1:@n time 12000@nSets the game clock to 12:00= Example 2:@n give @@n mcl_core:apple 5@n→ Gives the nearest player 5 apples= Access denied. You need the “maphack” privilege to edit command blocks.= diff --git a/mods/ITEMS/REDSTONE/mesecons_delayer/locale/mesecons_delayer.de.tr b/mods/ITEMS/REDSTONE/mesecons_delayer/locale/mesecons_delayer.de.tr index 1f031c64..db17d7f6 100644 --- a/mods/ITEMS/REDSTONE/mesecons_delayer/locale/mesecons_delayer.de.tr +++ b/mods/ITEMS/REDSTONE/mesecons_delayer/locale/mesecons_delayer.de.tr @@ -1,9 +1,8 @@ # textdomain: mesecons_delayer Redstone repeaters are versatile redstone components with multiple purposes: 1. They only allow signals to travel in one direction. 2. They delay the signal. 3. Optionally, they can lock their output in one state.=Redstoneverstärker sind vielseitige Komponenten mit den folgenden Verwendungszwecken: 1.: Sie lassen Signale nur in eine Richtung durch. 2.: Sie verzögern das Signal. 3.: Sie können optional ihr Ausgangssignal sperren -To power a redstone repeater, send a signal in “arrow” direction (the input). The signal goes out on the opposite side (the output) with a delay. To change the delay, user the redstone repeater. The delay is between 0.1 and 0.4 seconds long and can be changed in steps of 0.1 seconds. It is indicated by the position of the moving redstone torch.=Um einen Redstoneverstärker zu versorgen, senden Sie ein Signal in „Pfeilrichtung“ (dem Eingang). Das Signal geht aus der gegenüberliegenden Seite (dem Ausgang) mit einer Verzögerung hinaus. Um die Verzögerung zu ändern, benutzen Sie den Redstoneverstärker. Die Verzögerung ist zwischen 0,1 bis 0,4 Sekunden lang und kann in Schritten von 0,1 Sekunden geändert werden. Das wird mit der Position der verschiebbaren Redstonefackel angezeigt. +To power a redstone repeater, send a signal in “arrow” direction (the input). The signal goes out on the opposite side (the output) with a delay. To change the delay, use the redstone repeater. The delay is between 0.1 and 0.4 seconds long and can be changed in steps of 0.1 seconds. It is indicated by the position of the moving redstone torch.=Um einen Redstoneverstärker zu versorgen, senden Sie ein Signal in „Pfeilrichtung“ (dem Eingang). Das Signal geht aus der gegenüberliegenden Seite (dem Ausgang) mit einer Verzögerung hinaus. Um die Verzögerung zu ändern, benutzen Sie den Redstoneverstärker. Die Verzögerung ist zwischen 0,1 bis 0,4 Sekunden lang und kann in Schritten von 0,1 Sekunden geändert werden. Das wird mit der Position der verschiebbaren Redstonefackel angezeigt. To lock a repeater, send a signal from an adjacent repeater into one of its sides. While locked, the moving redstone torch disappears, the output doesn't change and the input signal is ignored.=Um einen Verstärker zu sperren, senden Sie ein Signal eines benachbarten Verstärkers in eines der Seiten. Im gesperrten Zustand verschwindet die verschiebbare Redstonefackel, die Ausgabe ändert sich nicht mehr und der Eingang wird ignoriert. Redstone Repeater=Redstoneverstärker Redstone Repeater (Powered)=Redstoneverstärker (bestromt) Redstone Repeater (Locked)=Redstoneverstärker (gesperrt) Redstone Repeater (Locked, Powered)=Redstoneverstärker (gesperrt, bestromt) - diff --git a/mods/ITEMS/REDSTONE/mesecons_delayer/locale/template.txt b/mods/ITEMS/REDSTONE/mesecons_delayer/locale/template.txt index 596a5b38..e694d70a 100644 --- a/mods/ITEMS/REDSTONE/mesecons_delayer/locale/template.txt +++ b/mods/ITEMS/REDSTONE/mesecons_delayer/locale/template.txt @@ -1,6 +1,6 @@ # textdomain: mesecons_delayer Redstone repeaters are versatile redstone components with multiple purposes: 1. They only allow signals to travel in one direction. 2. They delay the signal. 3. Optionally, they can lock their output in one state.= -To power a redstone repeater, send a signal in “arrow” direction (the input). The signal goes out on the opposite side (the output) with a delay. To change the delay, user the redstone repeater. The delay is between 0.1 and 0.4 seconds long and can be changed in steps of 0.1 seconds. It is indicated by the position of the moving redstone torch.= +To power a redstone repeater, send a signal in “arrow” direction (the input). The signal goes out on the opposite side (the output) with a delay. To change the delay, use the redstone repeater. The delay is between 0.1 and 0.4 seconds long and can be changed in steps of 0.1 seconds. It is indicated by the position of the moving redstone torch.= To lock a repeater, send a signal from an adjacent repeater into one of its sides. While locked, the moving redstone torch disappears, the output doesn't change and the input signal is ignored.= Redstone Repeater= Redstone Repeater (Powered)= diff --git a/mods/ITEMS/mcl_core/locale/mcl_core.de.tr b/mods/ITEMS/mcl_core/locale/mcl_core.de.tr index bb7fc6d2..3460001d 100644 --- a/mods/ITEMS/mcl_core/locale/mcl_core.de.tr +++ b/mods/ITEMS/mcl_core/locale/mcl_core.de.tr @@ -246,3 +246,5 @@ Lava interacts with water various ways:=Lava reagiert mit Wasser auf verschieden • When lava is directly above water, the water turns into stone.=• Wenn sich Lava direkt über Wasser befindet, verwandelt sich das Wasser zu Stein. Stained Glass=Buntglas Granite is an igneous rock.=Granit ist ein magmatisches Gestein. +Top snow can be stacked and has one of 8 different height levels. At levels 2-8, top snow is collidable. Top snow drops 2-9 snowballs, depending on its height.=Eine Schneeschicht kann gestapelt werden und hat eine von 8 verschiedenen Höhestufen. Bei den Höhestufen 2-8 ist die Schneeschnicht kollidierbar. Schneeschichten werfen 2-9 Schneebälle ab, abhängig von ihrer Höhe. +This block can only be placed on full solid blocks and on another top snow (which increases its height).=Dieser Block kann nur auf ganzen festen Blöcken und auf anderen Schneeschichten (was die Höhe erhöht) platziert werden. diff --git a/mods/ITEMS/mcl_core/locale/template.txt b/mods/ITEMS/mcl_core/locale/template.txt index 005aa673..8460b90f 100644 --- a/mods/ITEMS/mcl_core/locale/template.txt +++ b/mods/ITEMS/mcl_core/locale/template.txt @@ -245,3 +245,5 @@ Lava interacts with water various ways:= • When lava is directly above water, the water turns into stone.= Stained Glass= Granite is an igneous rock.= +Top snow can be stacked and has one of 8 different height levels. At levels 2-8, top snow is collidable. Top snow drops 2-9 snowballs, depending on its height.= +This block can only be placed on full solid blocks and on another top snow (which increases its height).= diff --git a/mods/ITEMS/mcl_core/nodes_base.lua b/mods/ITEMS/mcl_core/nodes_base.lua index 8c7db771..9062c8e7 100644 --- a/mods/ITEMS/mcl_core/nodes_base.lua +++ b/mods/ITEMS/mcl_core/nodes_base.lua @@ -881,8 +881,8 @@ for i=1,8 do if i == 1 then id = "mcl_core:snow" desc = S("Top Snow") - longdesc = S("Top snow is a layer of snow. It melts near light sources other than the sun with a light level of 12 or higher.".."\n".."Top snow can be stacked and has one of 8 different height levels. At levels 2-8, top snow is collidable. Top snow drops 2-9 snowballs, depending on its height.") - usagehelp = "This block can only be placed on full solid blocks and on another top snow (which increases its height)." + longdesc = S("Top snow is a layer of snow. It melts near light sources other than the sun with a light level of 12 or higher.").."\n"..S("Top snow can be stacked and has one of 8 different height levels. At levels 2-8, top snow is collidable. Top snow drops 2-9 snowballs, depending on its height.") + usagehelp = S("This block can only be placed on full solid blocks and on another top snow (which increases its height).") walkable = false else id = "mcl_core:snow_"..i diff --git a/mods/ITEMS/mcl_end/eye_of_ender.lua b/mods/ITEMS/mcl_end/eye_of_ender.lua index 3dbebebf..d074e392 100644 --- a/mods/ITEMS/mcl_end/eye_of_ender.lua +++ b/mods/ITEMS/mcl_end/eye_of_ender.lua @@ -74,7 +74,7 @@ minetest.register_entity("mcl_end:ender_eye", { minetest.register_craftitem("mcl_end:ender_eye", { description = S("Eye of Ender"), - _doc_items_longdesc = S("This item is used to locate End portal shrines in the Overworld and to activate End portals." .. "\n" .. "NOTE: The End dimension is currently incomplete and might change in future versions."), + _doc_items_longdesc = S("This item is used to locate End portal shrines in the Overworld and to activate End portals.") .. "\n" .. S("NOTE: The End dimension is currently incomplete and might change in future versions."), _doc_items_usagehelp = S("Use the attack key to release the eye of ender. It will rise and fly in the horizontal direction of the closest end portal shrine. If you're very close, the eye of ender will take the direct path to the End portal shrine instead. After a few seconds, it stops. It may drop as an item, but there's a 20% chance it shatters.") .. "\n" .. S("To activate an End portal, eyes of ender need to be placed into each block of an intact End portal frame."), wield_image = "mcl_end_ender_eye.png", inventory_image = "mcl_end_ender_eye.png", diff --git a/mods/ITEMS/mcl_end/locale/mcl_end.de.tr b/mods/ITEMS/mcl_end/locale/mcl_end.de.tr index 1ed9858c..b63cc849 100644 --- a/mods/ITEMS/mcl_end/locale/mcl_end.de.tr +++ b/mods/ITEMS/mcl_end/locale/mcl_end.de.tr @@ -19,5 +19,6 @@ A chorus fruit is an edible fruit from the chorus plant which is home to the End Popped Chorus Fruit=Aufgeploppte Chorusfrucht Eye of Ender=Enderauge This item is used to locate End portal shrines in the Overworld and to activate End portals.=Dieser Gegenstand wird benutzt, um Endportalschreine in der Oberwelt zu finden und Endportale zu aktivieren. -Use the attack key to release the eye of ender. It will rise and fly in the horizontal direction of the closest end portal shrine. If you're very close, the eye of ender will take the direct path to the End portal shrine instead. After a few seconds, it stops. It may drop as an item, but there's a 20% chance it shatters.=Benutzen Sie die Angriffstaste, um das Enderauge loszulassen. Er wird aufsteigen und in einer horizontalen Richtung zum nächsten Endportalschrein fliegen. Wenn Sie sehr nah dran sind, wird das Enderauge stattdessen den direkten Weg zum Endportalschrein nehmen. Nach ein paar Sekunden hält er an. Es könnte als Gegenstand wieder herunterfalle, aber er wird mit einer 20%-Chance zerbrechen. +Use the attack key to release the eye of ender. It will rise and fly in the horizontal direction of the closest end portal shrine. If you're very close, the eye of ender will take the direct path to the End portal shrine instead. After a few seconds, it stops. It may drop as an item, but there's a 20% chance it shatters.=Benutzen Sie die Angriffstaste, um das Enderauge loszulassen. Es wird aufsteigen und in einer horizontalen Richtung zum nächsten Endportalschrein fliegen. Wenn Sie sehr nah dran sind, wird das Enderauge stattdessen den direkten Weg zum Endportalschrein nehmen. Nach ein paar Sekunden hält es an. Es könnte als Gegenstand wieder herunterfallen, aber es wird mit einer 20%-Chance zerbrechen. To activate an End portal, eyes of ender need to be placed into each block of an intact End portal frame.=Um ein Endportal zu aktivieren, müssen Enderaugen in jeden Block eines intakten Endportalrahmens platziert werden. +NOTE: The End dimension is currently incomplete and might change in future versions.=ANMERKUNG: Die Ende-Dimension ist momentan unfertig und könnte sich in künftigen Versionen ändern. diff --git a/mods/ITEMS/mcl_end/locale/template.txt b/mods/ITEMS/mcl_end/locale/template.txt index 1d74608a..5e605eea 100644 --- a/mods/ITEMS/mcl_end/locale/template.txt +++ b/mods/ITEMS/mcl_end/locale/template.txt @@ -21,3 +21,4 @@ Eye of Ender= This item is used to locate End portal shrines in the Overworld and to activate End portals.= Use the attack key to release the eye of ender. It will rise and fly in the horizontal direction of the closest end portal shrine. If you're very close, the eye of ender will take the direct path to the End portal shrine instead. After a few seconds, it stops. It may drop as an item, but there's a 20% chance it shatters.= To activate an End portal, eyes of ender need to be placed into each block of an intact End portal frame.= +NOTE: The End dimension is currently incomplete and might change in future versions.= diff --git a/mods/ITEMS/mcl_farming/locale/mcl_farming.de.tr b/mods/ITEMS/mcl_farming/locale/mcl_farming.de.tr index f6e83573..bdb49662 100644 --- a/mods/ITEMS/mcl_farming/locale/mcl_farming.de.tr +++ b/mods/ITEMS/mcl_farming/locale/mcl_farming.de.tr @@ -34,7 +34,7 @@ Diamond Hoe=Diamanthacke Melon Seeds=Melonensamen Place the melon seeds on farmland (which can be created with a hoe) to plant a melon stem. Melon stems grow in sunlight and grow faster on hydrated farmland. When mature, the stem will attempt to grow a melon at the side. Rightclick an animal to feed it melon seeds.=Platzieren Sie die Melonensamen auf Ackerboden (der mit einer Hacke gemacht werden kann), um einen Melonenstängel zu pflanzen. Melonenstängel wachsen im Sonnenlicht und wachen auf bewässertem Ackerboden schneller. Ausgewachsen wird der Melonenstängel versuchen, an der Seite eine Melone wachsen zu lassen. Rechtsklicken Sie auf ein Tier, um es mit Melonensamen zu füttern. Melon=Melone -Grows into a melon stem which in turn is able to grow melons. Chickens like melon seeds.=Wächst zu einem Melonenstängel heran, aus dem wiederum Melonen wachsen können. Hühner mögen Melonensamen. +Grows into a melon stem which in turn grows melons. Chickens like melon seeds.=Wächst zu einem Melonenstängel heran, aus dem wiederum Melonen wachsen. Hühner mögen Melonensamen. A melon is a block which can be grown from melon stems, which in turn are grown from melon seeds. It can be harvested for melon slices.=Eine Melone ist ein Block, der von Melonenstängeln wächst, der wiederum aus Melonensamen wächst. Er kann für Melonenstücke abgeerntet werden. Premature Melon Stem=Junger Melonenstängel Melon stems grow on farmland in 8 stages. On hydrated farmland, the growth is a bit quicker. Mature melon stems are able to grow melons.=Melonenstängel wachsen auf Ackerboden in 8 Stufen. Auf bewässertem Ackerboden ist das Wachstum etwas schneller. Aus ausgewachsenen Melonenstängeln können Melonen wachsen. @@ -56,7 +56,7 @@ Baked potatoes are food items which are more filling than the unbaked ones.=Ofen Poisonous Potato=Giftige Kartoffel This potato doesn't look too healthy. You can eat it to restore hunger points, but there's a 60% chance it will poison you briefly.=Diese Kartoffel sieht nicht gerade gesund aus. Sie kann gegessen werden, um Hungerpunkte zu erhalten, aber es gibt eine Chance von 60%, dass das Sie kurz vergiften wird. Pumpkin Seeds=Kürbissamen -Grows into a pumpkin stem which in turn is able to grow pumpkins. Chickens like pumpkin seeds.=Wächst zu einem Kürbisstängel heran, aus dem wiederum Kürbisse wachsen können. Hühner mögen Kürbissamen. +Grows into a pumpkin stem which in turn grows pumpkins. Chickens like pumpkin seeds.=Wächst zu einem Kürbisstängel heran, aus dem wiederum Kürbisse wachsen. Hühner mögen Kürbissamen. Place the pumpkin seeds on farmland (which can be created with a hoe) to plant a pumpkin stem. Pumpkin stems grow in sunlight and grow faster on hydrated farmland. When mature, the stem attempts to grow a pumpkin next to it. Rightclick an animal to feed it pumpkin seeds.=Platzieren Sie die Kürbissamen auf Ackerboden (der mit einer Hacke gemacht werden kann), um einen Kürbisstängel zu pflanzen. Kürbisstängel wachsen im Sonnenlicht und wachsen auf bewässertem Ackerboden schneller. Ausgewachsen wird der Kürbisstängel versuchen, einen Kürbis an einem benachbartem Feld wachsen zu lassen. Rechtsklicken Sie auf ein Tier, um es mit Kürbissamen zu füttern. Premature Pumpkin Stem=Junger Kürbisstängel Pumpkin stems grow on farmland in 8 stages. On hydrated farmland, the growth is a bit quicker. Mature pumpkin stems are able to grow pumpkins.=Kürbisstängel wachsen auf Ackerboden in 8 Stufen. Auf bewässertem Ackerboden ist das Wachstum etwas schneller. Aus ausgewachsenen Kürbisstängeln können Kürbisse wachsen. @@ -90,3 +90,4 @@ Bread=Brot Hay Bale=Heuballen Hay bales are decorative blocks made from wheat.=Heuballen sind dekorative Blöcke, die aus Weizen gemacht sind. To carve a face into the pumpkin, use the shears on the side you want to carve.=Um ein Gesicht in den Kürbis zu schnitzen, benutzen Sie die Schere an der Seite, die Sie schnitzen wollen. +Use the “Place” key on an animal to try to feed it wheat.=Benutzen Sie die „Platzieren“-Taste auf einem Tier, um zu versuchen, es zu füttern. diff --git a/mods/ITEMS/mcl_farming/locale/template.txt b/mods/ITEMS/mcl_farming/locale/template.txt index 81a52b01..fb124df6 100644 --- a/mods/ITEMS/mcl_farming/locale/template.txt +++ b/mods/ITEMS/mcl_farming/locale/template.txt @@ -32,7 +32,7 @@ Iron Hoe= Golden Hoe= Diamond Hoe= Melon Seeds= -Grows into a melon stem which in turn is able to grow melons. Chickens like melon seeds.= +Grows into a melon stem which in turn grows melons. Chickens like melon seeds.= Place the melon seeds on farmland (which can be created with a hoe) to plant a melon stem. Melon stems grow in sunlight and grow faster on hydrated farmland. When mature, the stem will attempt to grow a melon at the side. Rightclick an animal to feed it melon seeds.= Melon= A melon is a block which can be grown from melon stems, which in turn are grown from melon seeds. It can be harvested for melon slices.= @@ -56,7 +56,7 @@ Baked potatoes are food items which are more filling than the unbaked ones.= Poisonous Potato= This potato doesn't look too healthy. You can eat it to restore hunger points, but there's a 60% chance it will poison you briefly.= Pumpkin Seeds= -Grows into a pumpkin stem which in turn is able to grow pumpkins. Chickens like pumpkin seeds.= +Grows into a pumpkin stem which in turn grows pumpkins. Chickens like pumpkin seeds.= Place the pumpkin seeds on farmland (which can be created with a hoe) to plant a pumpkin stem. Pumpkin stems grow in sunlight and grow faster on hydrated farmland. When mature, the stem attempts to grow a pumpkin next to it. Rightclick an animal to feed it pumpkin seeds.= Premature Pumpkin Stem= Pumpkin stems grow on farmland in 8 stages. On hydrated farmland, the growth is a bit quicker. Mature pumpkin stems are able to grow pumpkins.= @@ -90,3 +90,4 @@ Bread= Hay Bale= Hay bales are decorative blocks made from wheat.= To carve a face into the pumpkin, use the shears on the side you want to carve.= +Use the “Place” key on an animal to try to feed it wheat.= diff --git a/mods/ITEMS/mcl_farming/wheat.lua b/mods/ITEMS/mcl_farming/wheat.lua index 41c31c34..1a65d1d1 100644 --- a/mods/ITEMS/mcl_farming/wheat.lua +++ b/mods/ITEMS/mcl_farming/wheat.lua @@ -90,7 +90,7 @@ mcl_farming:add_plant("plant_wheat", "mcl_farming:wheat", {"mcl_farming:wheat_1" minetest.register_craftitem("mcl_farming:wheat_item", { description = S("Wheat"), _doc_items_longdesc = S("Wheat is used in crafting. Some animals like wheat."), - _doc_items_usagehelp = "Rightclick an animal to try to feed it wheat.", + _doc_items_usagehelp = S("Use the “Place” key on an animal to try to feed it wheat."), inventory_image = "farming_wheat_harvested.png", groups = { craftitem = 1 }, }) diff --git a/mods/ITEMS/mcl_mobitems/init.lua b/mods/ITEMS/mcl_mobitems/init.lua index 27c2a538..f2504311 100644 --- a/mods/ITEMS/mcl_mobitems/init.lua +++ b/mods/ITEMS/mcl_mobitems/init.lua @@ -172,7 +172,7 @@ minetest.register_craftitem("mcl_mobitems:spider_eye", { minetest.register_craftitem("mcl_mobitems:bone", { description = S("Bone"), _doc_items_longdesc = S("Bones can be used to tame wolves so they will protect you. They are also useful as a crafting ingredient."), - _doc_items_usagehelp = "Hold the bone in your hand near wolves to attract them. Rightclick the wolf to give it a bone and tame it. You can then give commands to the tamed wolf by rightclicking it.", + _doc_items_usagehelp = S("Wield the bone near wolves to attract them. Use the “Place” key on the wolf to give it a bone and tame it. You can then give commands to the tamed wolf by using the “Place” key on it."), inventory_image = "mcl_mobitems_bone.png", stack_max = 64, groups = { craftitem=1 }, @@ -317,7 +317,7 @@ minetest.register_craftitem("mcl_mobitems:gunpowder", { minetest.register_tool("mcl_mobitems:carrot_on_a_stick", { description = S("Carrot on a Stick"), _doc_items_longdesc = S("A carrot on a stick can be used on saddled pigs to ride them."), - _doc_items_usagehelp = "Rightclick a saddled pig with the carrot on a stick to mount it. You can now ride it like a horse. Pigs will also walk towards you when you just wield the carrot on a stick.", + _doc_items_usagehelp = S("Place it on a saddled pig to mount it. You can now ride the pig like a horse. Pigs will also walk towards you when you just wield the carrot on a stick."), wield_image = "mcl_mobitems_carrot_on_a_stick.png", inventory_image = "mcl_mobitems_carrot_on_a_stick.png", groups = { transport = 1 }, diff --git a/mods/ITEMS/mcl_mobitems/locale/mcl_mobitems.de.tr b/mods/ITEMS/mcl_mobitems/locale/mcl_mobitems.de.tr index 95e91814..a392ffc2 100644 --- a/mods/ITEMS/mcl_mobitems/locale/mcl_mobitems.de.tr +++ b/mods/ITEMS/mcl_mobitems/locale/mcl_mobitems.de.tr @@ -58,3 +58,5 @@ Slimeballs are used in crafting. They are dropped from slimes.=Schleimkugeln wer Gunpowder=Schießpulver Carrot on a Stick=Karottenrute A carrot on a stick can be used on saddled pigs to ride them.=Eine Karottenrute kann auf gesattelten Schweinen angewendet werden, um sie zu reiten. +Place it on a saddled pig to mount it. You can now ride the pig like a horse. Pigs will also walk towards you when you just wield the carrot on a stick.=Platzieren Sie sie auf einem Schwein mit Sattel, um sich aufzusatteln. Sie können nun das Schwein wie ein Pferd reiten. Schweine werden auch auf Sie zugehen, wenn Sie einfach nur die Karottenrute halten. +Wield the bone near wolves to attract them. Use the “Place” key on the wolf to give it a bone and tame it. You can then give commands to the tamed wolf by using the “Place” key on it.=Halten Sie den Knochen in der Nähe von Wölfen, um sie anzulocken. Benutzen Sie die „Platzieren“-Taste auf dem Wolf, um ihm den Knochen zu geben und ihn zu zähmen. Sie können dem gezähmten Wolf Befehle erteilen, indem Sie die „Platzieren“-Taste auf ihm benutzen. diff --git a/mods/ITEMS/mcl_mobitems/locale/template.txt b/mods/ITEMS/mcl_mobitems/locale/template.txt index aa28e6b0..2c2c15d1 100644 --- a/mods/ITEMS/mcl_mobitems/locale/template.txt +++ b/mods/ITEMS/mcl_mobitems/locale/template.txt @@ -58,3 +58,5 @@ Slimeballs are used in crafting. They are dropped from slimes.= Gunpowder= Carrot on a Stick= A carrot on a stick can be used on saddled pigs to ride them.= +Place it on a saddled pig to mount it. You can now ride the pig like a horse. Pigs will also walk towards you when you just wield the carrot on a stick.= +Wield the bone near wolves to attract them. Use the “Place” key on the wolf to give it a bone and tame it. You can then give commands to the tamed wolf by using the “Place” key on it.= diff --git a/mods/ITEMS/mcl_nether/locale/mcl_nether.de.tr b/mods/ITEMS/mcl_nether/locale/mcl_nether.de.tr index c114f8f3..4ceafbd9 100644 --- a/mods/ITEMS/mcl_nether/locale/mcl_nether.de.tr +++ b/mods/ITEMS/mcl_nether/locale/mcl_nether.de.tr @@ -34,3 +34,4 @@ Mature Nether Wart=Ausgewachsener Netherwurz The mature nether wart is a plant from the Nether and reached its full size and won't grow any further. It is ready to be harvested for its items.=Der ausgewachsene Netherwurz ist eine Pflanze aus dem Nether. Er hat seine volle Größe erreicht, ist erntereif und wächst nicht weiter. Nether Wart=Netherwurz Nether warts are plants home to the Nether. They can be planted on soul sand and grow in 4 stages.=Netherwurze sind Pflanzen, die im Nether beheimatet sind. Sie können auf Seelensand gepflanzt werden und wachsen in 4 Stufen. +Place this item on soul sand to plant it and watch it grow.=Platzieren Sie den Gegenstand auf Seelensand, um ihn zu pflanzen und sehen Sie dabei zu, wie es wächst. diff --git a/mods/ITEMS/mcl_nether/locale/template.txt b/mods/ITEMS/mcl_nether/locale/template.txt index 7ad879fd..cb0ba600 100644 --- a/mods/ITEMS/mcl_nether/locale/template.txt +++ b/mods/ITEMS/mcl_nether/locale/template.txt @@ -34,3 +34,4 @@ Mature Nether Wart= The mature nether wart is a plant from the Nether and reached its full size and won't grow any further. It is ready to be harvested for its items.= Nether Wart= Nether warts are plants home to the Nether. They can be planted on soul sand and grow in 4 stages.= +Place this item on soul sand to plant it and watch it grow.= diff --git a/mods/ITEMS/mcl_nether/nether_wart.lua b/mods/ITEMS/mcl_nether/nether_wart.lua index 6e9b21c9..7b01e462 100644 --- a/mods/ITEMS/mcl_nether/nether_wart.lua +++ b/mods/ITEMS/mcl_nether/nether_wart.lua @@ -98,7 +98,7 @@ minetest.register_node("mcl_nether:nether_wart", { minetest.register_craftitem("mcl_nether:nether_wart_item", { description = S("Nether Wart"), _doc_items_longdesc = S("Nether warts are plants home to the Nether. They can be planted on soul sand and grow in 4 stages."), - _doc_items_usagehelp = "Place this item on soul sand to plant it and watch it grow.", + _doc_items_usagehelp = S("Place this item on soul sand to plant it and watch it grow."), inventory_image = "mcl_nether_nether_wart.png", wield_image = "mcl_nether_nether_wart.png", on_place = function(itemstack, placer, pointed_thing) diff --git a/mods/ITEMS/mcl_portals/locale/mcl_portals.de.tr b/mods/ITEMS/mcl_portals/locale/mcl_portals.de.tr index 6c16d66d..55150a96 100644 --- a/mods/ITEMS/mcl_portals/locale/mcl_portals.de.tr +++ b/mods/ITEMS/mcl_portals/locale/mcl_portals.de.tr @@ -4,6 +4,7 @@ An End portal teleports creatures and objects to the mysterious End dimension (a Hop into the portal to teleport. Entering an End portal in the Overworld teleports you to a fixed position in the End dimension and creates a 5×5 obsidian platform at your destination. End portals in the End will lead back to your spawn point in the Overworld.=Springen Sie ins Portal, um sich zu teleportieren. Von der Oberwelt aus werden Sie zu einer festen Position im Ende hin teleportiert. Eine 5×5-Obsidianplattform wird am Zielort erzeugt. Im Ende werden Sie zurück zu Ihrem Startpunkt in der Oberwelt teleportiert. End Portal Frame=Endportalrahmen End portal frames are used in the construction of End portals. Each block has a socket for an eye of ender.=Endportalrahmen werden in der Konstruktion von Endportalen benutzt. Jeder Block hat einen Sockel für ein Enderauge. +NOTE: The End dimension is currently incomplete and might change in future versions.=ANMERKUNG: Die Ende-Dimension ist momentan unfertig und könnte sich in künftigen Versionen ändern. To create an End portal, you need 12 end portal frames and 12 eyes of ender. The end portal frames have to be arranged around a horizontal 3×3 area with each block facing inward. Any other arrangement will fail.=Um ein Endportal zu bauen, brauchen sie 12 Endportalrahmen und 12 Enderaugen. Die Endportalrahmenblöcke muss um ein horizontales Feld von 3×3 platziert sein, wobei jeder von ihnen nach innen zeigt. Jede andere Anordnung wird nicht funktionieren. Place an eye of ender into each block. The end portal appears in the middle after placing the final eye.=Platzieren Sie ein Enderauge in jeden Block. Das Endportal wird sich in der Mitte öffnen, wenn das letzte Auge platziert wurde. End Portal Frame with Eye of Ender=Endportalrahmen mit Enderauge @@ -12,3 +13,4 @@ A Nether portal teleports creatures and objects to the hot and dangerous Nether Stand in the portal for a moment to activate the teleportation. Entering a Nether portal for the first time will also create a new portal in the other dimension. If a Nether portal has been built in the Nether, it will lead to the Overworld. A Nether portal is destroyed if the any of the obsidian which surrounds it is destroyed, or if it was caught in an explosion.=Stellen Sie sich ins Portal für einen Moment, um sich zu teleportieren. Beim ersten Mal wird auch ein Portal in der anderen Dimension erschaffen. Wenn ein Netherportal im Nether gebaut wird, wird es zurück zur Oberwelt führen. Ein Netherportal wird zerstört, wenn das Obsidian, das ihn umgibt, zerstört wird, oder, wenn es einer Explosion ausgesetzt war. Obsidian is also used as the frame of Nether portals.=Obsidian wird auch als Rahmen von Netherportalen benutzt. To open a Nether portal, place an upright frame of obsidian with a width of 4 blocks and a height of 5 blocks, leaving only air in the center. After placing this frame, light a fire in the obsidian frame. Nether portals only work in the Overworld and the Nether.=Um ein Netherportal zu öffnen, platzieren Sie einen aufrechten Rahmen aus Obsidian mit einer Breite von 4 Blöcken und einer Höhe von 5 Blöcken, nur mit Luft in der Mitte. Nachdem Sie den Rahmen gebaut haben, entfachen Sie ein Feuer im Obsidianrahmen. Netherportale funktionieren nur in der Oberwelt und im Nether. +Once placed, an eye of ender can not be taken back.=Sobald platziert, kann ein Enderauge nicht mehr zurück genommen werden. diff --git a/mods/ITEMS/mcl_portals/locale/template.txt b/mods/ITEMS/mcl_portals/locale/template.txt index 3283da3f..02482652 100644 --- a/mods/ITEMS/mcl_portals/locale/template.txt +++ b/mods/ITEMS/mcl_portals/locale/template.txt @@ -4,11 +4,11 @@ An End portal teleports creatures and objects to the mysterious End dimension (a Hop into the portal to teleport. Entering an End portal in the Overworld teleports you to a fixed position in the End dimension and creates a 5×5 obsidian platform at your destination. End portals in the End will lead back to your spawn point in the Overworld.= End Portal Frame= End portal frames are used in the construction of End portals. Each block has a socket for an eye of ender.= -To create an End portal, you need 12 end portal frames and 12 eyes of ender. The end portal frames have to be arranged around a horizontal 3×3 area with each block facing inward. Any other arrangement will fail.= -Place an eye of ender into each block. The end portal appears in the middle after placing the final eye.= +NOTE: The End dimension is currently incomplete and might change in future versions.= End Portal Frame with Eye of Ender= Nether Portal= A Nether portal teleports creatures and objects to the hot and dangerous Nether dimension (and back!). Enter at your own risk!= Stand in the portal for a moment to activate the teleportation. Entering a Nether portal for the first time will also create a new portal in the other dimension. If a Nether portal has been built in the Nether, it will lead to the Overworld. A Nether portal is destroyed if the any of the obsidian which surrounds it is destroyed, or if it was caught in an explosion.= Obsidian is also used as the frame of Nether portals.= To open a Nether portal, place an upright frame of obsidian with a width of 4 blocks and a height of 5 blocks, leaving only air in the center. After placing this frame, light a fire in the obsidian frame. Nether portals only work in the Overworld and the Nether.= +Once placed, an eye of ender can not be taken back.= diff --git a/mods/ITEMS/mcl_portals/portal_end.lua b/mods/ITEMS/mcl_portals/portal_end.lua index eeb20dfe..84e98fee 100644 --- a/mods/ITEMS/mcl_portals/portal_end.lua +++ b/mods/ITEMS/mcl_portals/portal_end.lua @@ -302,8 +302,8 @@ end minetest.register_node("mcl_portals:end_portal_frame", { description = S("End Portal Frame"), - _doc_items_longdesc = S("End portal frames are used in the construction of End portals. Each block has a socket for an eye of ender." .. "\n" .. "NOTE: The End dimension is currently incomplete and might change in future versions."), - _doc_items_usagehelp = S("To create an End portal, you need 12 end portal frames and 12 eyes of ender. The end portal frames have to be arranged around a horizontal 3×3 area with each block facing inward. Any other arrangement will fail.") .. "\n" .. S("Place an eye of ender into each block. The end portal appears in the middle after placing the final eye." .. "\n" .. "Once placed, an eye of ender can not be taken back."), + _doc_items_longdesc = S("End portal frames are used in the construction of End portals. Each block has a socket for an eye of ender.") .. "\n" .. S("NOTE: The End dimension is currently incomplete and might change in future versions."), + _doc_items_usagehelp = S("To create an End portal, you need 12 end portal frames and 12 eyes of ender. The end portal frames have to be arranged around a horizontal 3×3 area with each block facing inward. Any other arrangement will fail.") .. "\n" .. S("Place an eye of ender into each block. The end portal appears in the middle after placing the final eye.") .. "\n" .. S("Once placed, an eye of ender can not be taken back."), groups = { creative_breakable = 1, deco_block = 1 }, tiles = { "mcl_portals_endframe_top.png", "mcl_portals_endframe_bottom.png", "mcl_portals_endframe_side.png" }, paramtype2 = "facedir", diff --git a/mods/ITEMS/mcl_potions/init.lua b/mods/ITEMS/mcl_potions/init.lua index 6c51840e..0fc24d65 100644 --- a/mods/ITEMS/mcl_potions/init.lua +++ b/mods/ITEMS/mcl_potions/init.lua @@ -160,7 +160,7 @@ end minetest.register_craftitem("mcl_potions:potion_water", { description = S("Water Bottle"), _doc_items_longdesc = S("Water bottles can be used to fill cauldrons. Drinking water has no effect."), - _doc_items_usagehelp = S("Rightclick to drink. Rightclick a cauldron to pour the water into the cauldron."), + _doc_items_usagehelp = S("Use the “Place” key to drink. Place this item on a cauldron to pour the water into the cauldron."), stack_max = 1, inventory_image = potion_image("#0000FF"), wield_image = potion_image("#0000FF"), @@ -204,7 +204,8 @@ minetest.register_craftitem("mcl_potions:potion_water", { minetest.register_craftitem("mcl_potions:potion_river_water", { description = S("River Water Bottle"), _doc_items_longdesc = S("River water bottles can be used to fill cauldrons. Drinking it has no effect."), - _doc_items_usagehelp = "Rightclick to drink. Rightclick a cauldron to pour the river water into the cauldron.", + _doc_items_usagehelp = S("Use the “Place” key to drink. Place this item on a cauldron to pour the river water into the cauldron."), + stack_max = 1, inventory_image = potion_image("#0044FF"), wield_image = potion_image("#0044FF"), @@ -247,7 +248,7 @@ minetest.register_craftitem("mcl_potions:potion_river_water", { -local how_to_drink = "To drink it, wield it, then rightclick." +local how_to_drink = S("Use the “Place” key to drink it.") minetest.register_craftitem("mcl_potions:potion_awkward", { description = S("Awkward Potion"), diff --git a/mods/ITEMS/mcl_potions/locale/mcl_potions.de.tr b/mods/ITEMS/mcl_potions/locale/mcl_potions.de.tr index 324ac5dc..87db24a0 100644 --- a/mods/ITEMS/mcl_potions/locale/mcl_potions.de.tr +++ b/mods/ITEMS/mcl_potions/locale/mcl_potions.de.tr @@ -18,3 +18,6 @@ This potion has a bitter taste and is used for brewing more potions. Drinking it Glistering Melon=Glitzermelone This shiny melon is full of tiny gold nuggets and would be nice in an item frame. It isn't edible and not useful for anything else.=Diese glänzende Melone ist voller winziger Goldnuggets und sähe ganz nett in einem Rahmen aus. Er ist nicht essbar und auch sonst zu nichts zu gebrauchen. Dragon's Breath=Drachenatem +Use the “Place” key to drink it.=Benutzen Sie die „Platzieren“-Taste zum Trinken. +Use the “Place” key to drink. Place this item on a cauldron to pour the water into the cauldron.=Benutzen Sie die „Platzieren“-Taste zum Trinken. Platzieren Sie diesen Gegenstand auf einen Kessel, um das Wasser in den Kessel zu schütten. +Use the “Place” key to drink. Place this item on a cauldron to pour the river water into the cauldron.=Benutzen Sie die „Platzieren“-Taste zum Trinken. Platzieren Sie diesen Gegenstand auf einen Kessel, um das Flusswasser in den Kessel zu schütten. diff --git a/mods/ITEMS/mcl_potions/locale/template.txt b/mods/ITEMS/mcl_potions/locale/template.txt index 850637b3..b7e08ebf 100644 --- a/mods/ITEMS/mcl_potions/locale/template.txt +++ b/mods/ITEMS/mcl_potions/locale/template.txt @@ -18,3 +18,6 @@ This potion has a bitter taste and is used for brewing more potions. Drinking it Glistering Melon= This shiny melon is full of tiny gold nuggets and would be nice in an item frame. It isn't edible and not useful for anything else.= Dragon's Breath= +Use the “Place” key to drink it.= +Use the “Place” key to drink. Place this item on a cauldron to pour the water into the cauldron.= +Use the “Place” key to drink. Place this item on a cauldron to pour the river water into the cauldron.= diff --git a/mods/ITEMS/mcl_tnt/locale/mcl_tnt.de.tr b/mods/ITEMS/mcl_tnt/locale/mcl_tnt.de.tr index 51a8ffab..d2378a8a 100644 --- a/mods/ITEMS/mcl_tnt/locale/mcl_tnt.de.tr +++ b/mods/ITEMS/mcl_tnt/locale/mcl_tnt.de.tr @@ -1,5 +1,5 @@ # textdomain: mcl_tnt @1 was caught in an explosion.=@1 wurde Opfer einer Explosion. TNT=TNT -An explosive device. When it explodes, it will hurt living beings and destroy blocks around it. TNT has an explosion radius of @1. With a small chance, blocks may drop as an item (as if being mined) rather than being destroyed. TNT can be ignited by tools, explosions, fire, lava and redstone signals.=Ein Sprengstoff. Wenn er explodiert, wird er Lebewesen verletzen und Blöcke in der Nähe zerstören. TNT hat einen Explosionsradius von @1. Mit einer geringen Wahrscheinlichkeit werden Blöcke als Gegenstand abfallen (als ob sie abgebaut worden wären), anstatt völlig zerstört zu werden. -Place the TNT and ignite it with one of the methods above. Quickly get in safe distance. The TNT will start to be affected by gravity and explodes in 4 seconds.=Platizeren sie das TNT und zünden Sie es mit einer der obigen Methoden ab. Begeben Sie sich rasch in eine sichere Entfernung. Das TNT wird anfangen, von der Schwerkraft beeinflusst zu sein und explodiert in 4 Sekunden. +An explosive device. When it explodes, it will hurt living beings and destroy blocks around it. TNT has an explosion radius of @1. With a small chance, blocks may drop as an item (as if being mined) rather than being destroyed. TNT can be ignited by tools, explosions, fire, lava and redstone signals.=Ein Sprengstoff. Wenn er explodiert, wird er Lebewesen verletzen und Blöcke in der Nähe zerstören. TNT hat einen Explosionsradius von @1. Mit einer geringen Wahrscheinlichkeit werden Blöcke als Gegenstand abfallen (als ob sie abgebaut worden wären), anstatt völlig zerstört zu werden. TNT kann mit Werkzeugen, Explosionen, Feuer, Lava und Redstone-Signalen angezündet werden. +Place the TNT and ignite it with one of the methods above. Quickly get in safe distance. The TNT will start to be affected by gravity and explodes in 4 seconds.=Platizeren sie das TNT und zünden Sie es mit einer der obigen Methoden an. Begeben Sie sich rasch in eine sichere Entfernung. Das TNT wird anfangen, von der Schwerkraft beeinflusst zu sein und explodiert in 4 Sekunden. diff --git a/mods/ITEMS/mcl_tools/init.lua b/mods/ITEMS/mcl_tools/init.lua index 0a568cb7..f660c12e 100644 --- a/mods/ITEMS/mcl_tools/init.lua +++ b/mods/ITEMS/mcl_tools/init.lua @@ -60,7 +60,7 @@ local sword_longdesc = S("Swords are great in melee combat, as they are fast, de local shovel_longdesc = S("Shovels are tools for digging coarse blocks, such as dirt, sand and gravel. They can also be used to turn grass blocks to grass paths. Shovels can be used as weapons, but they are very weak.") local shovel_use = S("To turn a grass block into a grass path, hold the shovel in your hand, then use (rightclick) the top or side of a grass block. This only works when there's air above the grass block.") local shears_longdesc = S("Shears are tools to shear sheep and to mine a few block types. Shears are a special mining tool and can be used to obtain the original item from grass, leaves and similar blocks that require cutting.") -local shears_use = "To shear a sheep and obtain its wool, rightclick it. To carve a face into a pumpkin and obtain 4 pumpkin seeds, rightclick it on one of its sides. Mining works are usual, but the drops are different for a few blocks." +local shears_use = S("To shear sheep or carve faceless pumpkins, use the “place” key on them. Faces can only be carved at the side of faceless pumpkins. Mining works as usual, but the drops are different for a few blocks.") -- Picks minetest.register_tool("mcl_tools:pick_wood", { diff --git a/mods/ITEMS/mcl_tools/locale/mcl_tools.de.tr b/mods/ITEMS/mcl_tools/locale/mcl_tools.de.tr index 25ca32c4..6c061dd0 100644 --- a/mods/ITEMS/mcl_tools/locale/mcl_tools.de.tr +++ b/mods/ITEMS/mcl_tools/locale/mcl_tools.de.tr @@ -8,6 +8,7 @@ Swords are great in melee combat, as they are fast, deal high damage and can end Shovels are tools for digging coarse blocks, such as dirt, sand and gravel. They can also be used to turn grass blocks to grass paths. Shovels can be used as weapons, but they are very weak.=Schaufeln sind Werkzeuge zum Ausgraben von groben Blöcken, wie Erde, Sand und Kies. Sie können auch benutzt werden, um Grasblöcke zu Graspfaden zu verwandeln. Schaufeln können als Waffen benutzt werden, aber sie sind sehr schwach. To turn a grass block into a grass path, hold the shovel in your hand, then use (rightclick) the top or side of a grass block. This only works when there's air above the grass block.=Um einen Grasblock in einen Graspfad zu verwandeln, benutzen Sie sie auf der Oberseite oder einer Seite eines Grasblocks. Das funktioniert nur, wenn sich Luft über dem Grasblock befindet. Shears are tools to shear sheep and to mine a few block types. Shears are a special mining tool and can be used to obtain the original item from grass, leaves and similar blocks that require cutting.=Eine Schere ist ein Werkzeug, um Schafe zu scheren und ein paar Blocktypen abzubauen. Sie ist ein besonderes Grabewerkzeug, das benutzt werden kann, um den ursprünglichen Gegenstand von Gras, Blättern und ähnlichen Blöcken, die abgeschnitten werden müssen, zu erhalten. +To shear sheep or carve faceless pumpkins, use the “place” key on them. Faces can only be carved at the side of faceless pumpkins. Mining works as usual, but the drops are different for a few blocks.=Um Schafe zu scheren oder gesichtslose Kürbisse zu schnitzen, benutzen Sie die „Platzieren“-Taste auf ihnen. Gesichter können nur an der Seite von gesichtslosen Kürbissen eingeschnitzt werden. Das Abbauen funktioniert wie bei anderen Werkzeugen, nur, dass die Abwürfe für ein paar Blöcke anders sind. Wooden Pickaxe=Holzspitzhacke Stone Pickaxe=Steinspitzhacke Iron Pickaxe=Eisenspitzhacke diff --git a/mods/ITEMS/mcl_tools/locale/template.txt b/mods/ITEMS/mcl_tools/locale/template.txt index 8e3fa90e..ecb94105 100644 --- a/mods/ITEMS/mcl_tools/locale/template.txt +++ b/mods/ITEMS/mcl_tools/locale/template.txt @@ -8,6 +8,7 @@ Swords are great in melee combat, as they are fast, deal high damage and can end Shovels are tools for digging coarse blocks, such as dirt, sand and gravel. They can also be used to turn grass blocks to grass paths. Shovels can be used as weapons, but they are very weak.= To turn a grass block into a grass path, hold the shovel in your hand, then use (rightclick) the top or side of a grass block. This only works when there's air above the grass block.= Shears are tools to shear sheep and to mine a few block types. Shears are a special mining tool and can be used to obtain the original item from grass, leaves and similar blocks that require cutting.= +To shear sheep or carve faceless pumpkins, use the “place” key on them. Faces can only be carved at the side of faceless pumpkins. Mining works as usual, but the drops are different for a few blocks.= Wooden Pickaxe= Stone Pickaxe= Iron Pickaxe= diff --git a/mods/ITEMS/mcl_torches/init.lua b/mods/ITEMS/mcl_torches/init.lua index 62a00940..24d61f9d 100644 --- a/mods/ITEMS/mcl_torches/init.lua +++ b/mods/ITEMS/mcl_torches/init.lua @@ -172,11 +172,7 @@ end mcl_torches.register_torch("torch", S("Torch"), S("Torches are light sources which can be placed at the side or on the top of most blocks."), - S([[Torches can generally be placed on full solid opaque blocks. The following exceptions apply: -• Glass, fence, wall, hopper: Can only be placed on top -• Upside-down slab/stair: Can only be placed on top -• Soul sand, mob spawner: Placement possible -• Glowstone and pistons: No placement possible]]), + nil, "default_torch_on_floor.png", "mcl_torches_torch_floor.obj", "mcl_torches_torch_wall.obj", {{ From 418368fbc532e455b5ed74cf491f10bd338768bb Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 25 Mar 2019 12:15:37 +0100 Subject: [PATCH 234/737] Squash daylight sensor help pages to 1 page --- mods/ITEMS/REDSTONE/mesecons_solarpanel/init.lua | 12 +++++++----- .../locale/mesecons_solarpanel.de.tr | 7 +++---- .../REDSTONE/mesecons_solarpanel/locale/template.txt | 5 ++--- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/mods/ITEMS/REDSTONE/mesecons_solarpanel/init.lua b/mods/ITEMS/REDSTONE/mesecons_solarpanel/init.lua index fa29e05c..0ea8ba63 100644 --- a/mods/ITEMS/REDSTONE/mesecons_solarpanel/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons_solarpanel/init.lua @@ -59,8 +59,9 @@ minetest.register_node("mesecons_solarpanel:solar_panel_off", { }, groups = {handy=1,axey=1, material_wood=1}, description=S("Daylight Sensor"), - _doc_items_longdesc = S("Daylight sensors are redstone components which provide redstone power when they are in sunlight and no power otherwise. They can also be inverted."), - _doc_items_usagehelp = S("Use the daylight sensor to turn it into an inverted daylight sensor, which supplies redstone energy when it is in moonlight."), + _doc_items_longdesc = S("Daylight sensors are redstone components which provide redstone power when they are in sunlight and no power otherwise. They can also be inverted.").."\n".. + S("In inverted state, they provide redstone power when they are not in sunlight and no power otherwise."), + _doc_items_usagehelp = S("Use the daylight sensor to toggle its state."), sounds = mcl_sounds.node_sound_glass_defaults(), mesecons = {receptor = { state = mesecon.state.off, @@ -177,8 +178,7 @@ minetest.register_node("mesecons_solarpanel:solar_panel_inverted_off", { drop = "mesecons_solarpanel:solar_panel_off", groups = {handy=1,axey=1, not_in_creative_inventory=1, material_wood=1}, description=S("Inverted Daylight Sensor"), - _doc_items_longdesc = S("An inverted daylight sensor is a variant of the daylight sensor. It is a redstone component which provides redstone power when it in moonlight and no power otherwise. It can turned back into an ordinary daylight sensor."), - _doc_items_usagehelp = S("Use the inverted daylight sensor to turn it into a daylight sensor."), + _doc_items_create_entry = false, sounds = mcl_sounds.node_sound_glass_defaults(), mesecons = {receptor = { state = mesecon.state.off, @@ -235,5 +235,7 @@ minetest.register_craft({ if minetest.get_modpath("doc") then doc.add_entry_alias("nodes", "mesecons_solarpanel:solar_panel_off", "nodes", "mesecons_solarpanel:solar_panel_on") - doc.add_entry_alias("nodes", "mesecons_solarpanel:solar_panel_inverted_off", "nodes", "mesecons_solarpanel:solar_panel_inverted_on") + doc.add_entry_alias("nodes", "mesecons_solarpanel:solar_panel_off", "nodes", "mesecons_solarpanel:solar_panel_inverted_off") + doc.add_entry_alias("nodes", "mesecons_solarpanel:solar_panel_off", "nodes", "mesecons_solarpanel:solar_panel_inverted_off") + doc.add_entry_alias("nodes", "mesecons_solarpanel:solar_panel_off", "nodes", "mesecons_solarpanel:solar_panel_inverted_on") end diff --git a/mods/ITEMS/REDSTONE/mesecons_solarpanel/locale/mesecons_solarpanel.de.tr b/mods/ITEMS/REDSTONE/mesecons_solarpanel/locale/mesecons_solarpanel.de.tr index 8b1a342c..b9272882 100644 --- a/mods/ITEMS/REDSTONE/mesecons_solarpanel/locale/mesecons_solarpanel.de.tr +++ b/mods/ITEMS/REDSTONE/mesecons_solarpanel/locale/mesecons_solarpanel.de.tr @@ -1,7 +1,6 @@ # textdomain: mesecons_solarpanel Daylight Sensor=Tageslichtsensor -Daylight sensors are redstone components which provide redstone power when they are in sunlight and no power otherwise. They can also be inverted.=Tageslichtsensoren sind Redstonekomponenten, die Redstoneenergie liefern, wenn sie im Sonnenlicht stehen, sonst nicht. -Use the daylight sensor to turn it into an inverted daylight sensor, which supplies redstone energy when it is in moonlight.=Benutzen Sie den Tageslichtsensor, um ihn zu einen invertierten Tageslichtsensor umzuwandeln, der Redstoneenergie liefert, wenn er sich im Mondlicht befindet. +Daylight sensors are redstone components which provide redstone power when they are in sunlight and no power otherwise. They can also be inverted.=Tageslichtsensoren sind Redstonekomponenten, die Redstoneenergie liefern, wenn sie im Sonnenlicht stehen, sonst nicht. Sie können auch invertiert werden. Inverted Daylight Sensor=Invertierter Tageslichtsensor -An inverted daylight sensor is a variant of the daylight sensor. It is a redstone component which provides redstone power when it in moonlight and no power otherwise. It can turned back into an ordinary daylight sensor.=Ein invertierter Tageslichtsensor ist eine Variante des Tageslichtsensors. Er ist eine Redstonekomponente, die Redstoneenergie liefert, wenn er sich im Mondlicht befindet, sonst nicht. Er kann zurück zu einem gewöhnlichen Tageslichtsensor umgewandelt werden. -Use the inverted daylight sensor to turn it into a daylight sensor.=Benutzen Sie den Tageslichtsensor, um ihn zu einem Tageslichtsensor umzuwandeln. +Use the daylight sensor to toggle its state.=Benutzen Sie den Tageslichtsensor, um seinen Zustand umzuschalten. +In inverted state, they provide redstone power when they are not in sunlight and no power otherwise.=Im invertierten Zustand erzeugen sie Redstoneenergie, wenn sie sich nicht im Tageslicht befinden, ansonsten nicht. diff --git a/mods/ITEMS/REDSTONE/mesecons_solarpanel/locale/template.txt b/mods/ITEMS/REDSTONE/mesecons_solarpanel/locale/template.txt index 4ad3b24c..b776f507 100644 --- a/mods/ITEMS/REDSTONE/mesecons_solarpanel/locale/template.txt +++ b/mods/ITEMS/REDSTONE/mesecons_solarpanel/locale/template.txt @@ -1,7 +1,6 @@ # textdomain: mesecons_solarpanel Daylight Sensor= Daylight sensors are redstone components which provide redstone power when they are in sunlight and no power otherwise. They can also be inverted.= -Use the daylight sensor to turn it into an inverted daylight sensor, which supplies redstone energy when it is in moonlight.= +Use the daylight sensor to toggle its state.= Inverted Daylight Sensor= -An inverted daylight sensor is a variant of the daylight sensor. It is a redstone component which provides redstone power when it in moonlight and no power otherwise. It can turned back into an ordinary daylight sensor.= -Use the inverted daylight sensor to turn it into a daylight sensor.= +In inverted state, they provide redstone power when they are not in sunlight and no power otherwise.= From d0a6244be90d0944418a93d7a0d39b7096ba1420 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 25 Mar 2019 12:31:22 +0100 Subject: [PATCH 235/737] Books: Move sign warning to tooltip Done because of translation problems with the newline --- mods/ITEMS/mcl_books/init.lua | 6 +++--- mods/ITEMS/mcl_books/locale/mcl_books.de.tr | 2 +- mods/ITEMS/mcl_books/locale/template.txt | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/mods/ITEMS/mcl_books/init.lua b/mods/ITEMS/mcl_books/init.lua index 645033b8..87ca3194 100644 --- a/mods/ITEMS/mcl_books/init.lua +++ b/mods/ITEMS/mcl_books/init.lua @@ -136,10 +136,10 @@ minetest.register_on_player_receive_fields(function ( player, formname, fields ) local name = player:get_player_name() local formspec = "size[8,9]".. "background[-0.5,-0.5;9,10;mcl_books_book_bg.png]".. - "field[0.75,1;7.25,1;title;"..core.colorize("#000000", S("Enter book title:"))..";]".. - "label[0.75,1.5;"..core.colorize("#404040", minetest.formspec_escape(S("by @1", name))).."]".. - "label[0.75,6.95;"..core.colorize("#000000", minetest.formspec_escape(S("Note: The book will no longer\nbe editable after signing."))).."]".. + "field[0.75,1;7.25,1;title;"..minetest.formspec_escape(core.colorize("#000000", S("Enter book title:")))..";]".. + "label[0.75,1.5;"..minetest.formspec_escape(core.colorize("#404040", S("by @1", name))).."]".. "button_exit[0.75,7.95;3,1;sign;"..minetest.formspec_escape(S("Sign and Close")).."]".. + "tooltip[sign;"..minetest.formspec_escape(S("Note: The book will no longer be editable after signing")).."]".. "button[4.25,7.95;3,1;cancel;"..minetest.formspec_escape(S("Cancel")).."]" minetest.show_formspec(player:get_player_name(), "mcl_books:signing", formspec) end diff --git a/mods/ITEMS/mcl_books/locale/mcl_books.de.tr b/mods/ITEMS/mcl_books/locale/mcl_books.de.tr index 398843d9..c4613fd9 100644 --- a/mods/ITEMS/mcl_books/locale/mcl_books.de.tr +++ b/mods/ITEMS/mcl_books/locale/mcl_books.de.tr @@ -12,7 +12,7 @@ This item can be used to write down some notes.=Dies kann benutzt werden, um ein Hold it in the hand, then rightclick to read the current notes and edit then. You can edit the text as often as you like. You can also sign the book which turns it into a written book which you can stack, but it can't be edited anymore.=Halten Sie es in der Hand, dann rechtsklicken Sie, um die Notizen zu sehen und zu ändern. Sie können den Text beliebig ändern. Sie können das Buch auch signieren und in ein geschriebenes Buch verwandeln, das gestapelt, aber nicht mehr geändert werden kann. A book can hold up to 4500 characters. The title length is limited to 64 characters.=Ein Buch kann bis zu 4500 Zeichen enthalten. Die Titellänge ist begrenzt auf 64 Zeichen. Enter book title:=Buchtitel eingeben: -Note: The book will no longer@nbe editable after signing.=Anmerkung: Das Buch kann nach@nder Signierung nicht länger@nbearbeitet werden. +Note: The book will no longer be editable after signing=Anmerkung: Das Buch kann nach der Signierung nicht länger@nbearbeitet werden Sign and Close=Signieren und schließen Cancel=Abbrechen Nameless Book=Namenloses Buch diff --git a/mods/ITEMS/mcl_books/locale/template.txt b/mods/ITEMS/mcl_books/locale/template.txt index acf614cd..22c4dae9 100644 --- a/mods/ITEMS/mcl_books/locale/template.txt +++ b/mods/ITEMS/mcl_books/locale/template.txt @@ -14,7 +14,7 @@ Hold it in the hand, then rightclick to read the current notes and edit then. Yo A book can hold up to 4500 characters. The title length is limited to 64 characters.= Enter book title:= by @1= -Note: The book will no longer@nbe editable after signing.= +Note: The book will no longer be editable after signing= Sign and Close= Cancel= Nameless Book= From 5b6cb0a44109fd921487a19fad2d3dfad1720489 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 25 Mar 2019 12:32:59 +0100 Subject: [PATCH 236/737] Minor tweaks in commandblock help texts --- mods/ITEMS/REDSTONE/mesecons_commandblock/init.lua | 2 +- .../mesecons_commandblock/locale/mesecons_commandblock.de.tr | 4 ++-- mods/ITEMS/REDSTONE/mesecons_commandblock/locale/template.txt | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/mods/ITEMS/REDSTONE/mesecons_commandblock/init.lua b/mods/ITEMS/REDSTONE/mesecons_commandblock/init.lua index 855eb86d..91c682cb 100644 --- a/mods/ITEMS/REDSTONE/mesecons_commandblock/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons_commandblock/init.lua @@ -225,7 +225,7 @@ S("• “@@@@”: literal “@@” sign").."\n\n".. S("Example 1:\n time 12000\nSets the game clock to 12:00").."\n\n".. -S("Example 2:\n give @@n mcl_core:apple 5\n→ Gives the nearest player 5 apples"), +S("Example 2:\n give @@n mcl_core:apple 5\nGives the nearest player 5 apples"), tiles = {{name="jeija_commandblock_off.png", animation={type="vertical_frames", aspect_w=32, aspect_h=32, length=2}}}, groups = {creative_breakable=1, mesecon_effector_off=1}, diff --git a/mods/ITEMS/REDSTONE/mesecons_commandblock/locale/mesecons_commandblock.de.tr b/mods/ITEMS/REDSTONE/mesecons_commandblock/locale/mesecons_commandblock.de.tr index 307f26c6..35df4998 100644 --- a/mods/ITEMS/REDSTONE/mesecons_commandblock/locale/mesecons_commandblock.de.tr +++ b/mods/ITEMS/REDSTONE/mesecons_commandblock/locale/mesecons_commandblock.de.tr @@ -16,13 +16,13 @@ To view the commands in a command block, use it. To activate the command block, To be able to place a command block and change the commands, you need to be in Creative Mode and must have the “maphack” privilege. A new command block does not have any commands and does nothing. Use the command block (in Creative Mode!) to edit its commands. Read the help entry “Advanced topics > Server Commands” to understand how commands work. Each line contains a single command. You enter them like you would in the console, but without the leading slash. The commands will be executed from top to bottom.=Um einen Befehlsblock platzieren und die Befehle ändern zu können, müssen Sie im Kreativmodus sein und das „maphack“-Privileg haben. Ein neuer Befehlsblock hat keine Befehle und tut gar nichts. Benutzen Sie den Befehlsblock (im Kreativmodus!), um seine Befehle zu bearbeiten. Lesen Sie den Hilfeeintrag „Fortgeschrittenes > Serverbefehle“, um zu verstehen, wie Befehle funktionieren. Jede Zeile enthält einen einzigen Befehl. Sie geben Sie wie in der Konsole ein, aber ohne den Schrägstrich am Anfang. All commands will be executed on behalf of the player who placed the command block, as if the player typed in the commands. This player is said to be the “commander” of the block.=Alle Befehle werden im Namen des Spielers, der den Befehlsblock platziert hat, ausgeführt, als ob der Spieler die Befehle eingegeben hätte. Diesen Spieler nennen wir den „Kommandanten“ des Blocks. Command blocks support placeholders, insert one of these placeholders and they will be replaced by some other text:=Befehlsblöcke unterstützen Platzhalter. Geben Sie einen dieser Platzhalter ein und sie werden durch einen anderen Text ersetzt: -• “@@c”: commander of this command block=• „@@c“: Befehlshaber dieses Befehlsblocks +• “@@c”: commander of this command block=• „@@c“: Kommandant dieses Befehlsblocks • “@@n” or “@@p”: nearest player from the command block=• „@@n“ oder „@@p“: Nächster Spieler am Befehlsblock • “@@f” farthest player from the command block=• „@@f“: Der vom Befehlsblock am weitesten entfernte Spieler • “@@r”: random player currently in the world=• „@@r“: Zufälliger Spieler in der Welt • “@@@@”: literal “@@” sign=• „@@@@“: Nur das „@@“-Zeichen Example 1:@n time 12000@nSets the game clock to 12:00=1. Beispiel:@n time 12000@nSetzt die Spieluhr auf 12:00 Uhr -Example 2:@n give @@n mcl_core:apple 5@n→ Gives the nearest player 5 apples=2. Beispiel:@n give @@n mcl_core:apple 5@n→ Gibt dem nächsten Spieler 5 Äpfel +Example 2:@n give @@n mcl_core:apple 5@nGives the nearest player 5 apples=2. Beispiel:@n give @@n mcl_core:apple 5@nGibt dem nächsten Spieler 5 Äpfel Access denied. You need the “maphack” privilege to edit command blocks.=Zugriff verweigert. Sie brauchen das „maphack“-Privileg, um Befehlsblöcke zu bearbeiten. Editing the command block has failed! You can only change the command block in Creative Mode!=Bearbeitung des Befehlsblocks fehlgeschlagen! Sie können den Befehlsblock nur im Kreativmodus ändern! Editing the command block has failed! The command block is gone.=Bearbeiten des Befehlsblocks fehlgeschlagen! Der Befehlsblock ist verschwunden. diff --git a/mods/ITEMS/REDSTONE/mesecons_commandblock/locale/template.txt b/mods/ITEMS/REDSTONE/mesecons_commandblock/locale/template.txt index a2ce9ebe..ffa7d2ab 100644 --- a/mods/ITEMS/REDSTONE/mesecons_commandblock/locale/template.txt +++ b/mods/ITEMS/REDSTONE/mesecons_commandblock/locale/template.txt @@ -22,7 +22,7 @@ Command blocks support placeholders, insert one of these placeholders and they w • “@@r”: random player currently in the world= • “@@@@”: literal “@@” sign= Example 1:@n time 12000@nSets the game clock to 12:00= -Example 2:@n give @@n mcl_core:apple 5@n→ Gives the nearest player 5 apples= +Example 2:@n give @@n mcl_core:apple 5@nGives the nearest player 5 apples= Access denied. You need the “maphack” privilege to edit command blocks.= Editing the command block has failed! You can only change the command block in Creative Mode!= Editing the command block has failed! The command block is gone.= From 7e9a9821c9a3273c71f0a2063bacd2670f3f47bb Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 25 Mar 2019 12:39:09 +0100 Subject: [PATCH 237/737] Fix progressive mode not disabable --- mods/HELP/mcl_craftguide/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/HELP/mcl_craftguide/init.lua b/mods/HELP/mcl_craftguide/init.lua index 9fed7642..fab6aa53 100644 --- a/mods/HELP/mcl_craftguide/init.lua +++ b/mods/HELP/mcl_craftguide/init.lua @@ -10,7 +10,7 @@ local recipes_cache = {} local usages_cache = {} local fuel_cache = {} -local progressive_mode = M.settings:get_bool("mcl_craftguide_progressive_mode") or true +local progressive_mode = M.settings:get_bool("mcl_craftguide_progressive_mode", true) local sfinv_only = false local colorize = M.colorize From 6188d7b528ff7d814d0c514440ec00067fb1729c Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 25 Mar 2019 12:42:37 +0100 Subject: [PATCH 238/737] Fix other boolean settings default fails --- mods/ENTITIES/mcl_item_entity/init.lua | 2 +- mods/MAPGEN/mcl_biomes/init.lua | 2 +- mods/PLAYER/mcl_death_drop/init.lua | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/mods/ENTITIES/mcl_item_entity/init.lua b/mods/ENTITIES/mcl_item_entity/init.lua index 54a568f9..f44917cc 100644 --- a/mods/ENTITIES/mcl_item_entity/init.lua +++ b/mods/ENTITIES/mcl_item_entity/init.lua @@ -212,7 +212,7 @@ function minetest.handle_node_drops(pos, drops, digger) -- This means there is no digger. This is a special case which allows this function to be called -- by hand. Creative Mode is intentionally ignored in this case. - local doTileDrops = minetest.settings:get_bool("mcl_doTileDrops") or true + local doTileDrops = minetest.settings:get_bool("mcl_doTileDrops", true) if (digger ~= nil and minetest.settings:get_bool("creative_mode")) or doTileDrops == false then return end diff --git a/mods/MAPGEN/mcl_biomes/init.lua b/mods/MAPGEN/mcl_biomes/init.lua index b0c8b2a2..19880f5b 100644 --- a/mods/MAPGEN/mcl_biomes/init.lua +++ b/mods/MAPGEN/mcl_biomes/init.lua @@ -4,7 +4,7 @@ local mg_seed = minetest.get_mapgen_setting("seed") -- Some mapgen settings local superflat = mg_name == "flat" and minetest.get_mapgen_setting("mcl_superflat_classic") == "true" -local generate_fallen_logs = minetest.settings:get_bool("mcl_generate_fallen_logs") or false +local generate_fallen_logs = minetest.settings:get_bool("mcl_generate_fallen_logs", false) -- Jungle bush schematic. In PC/Java Edition it's Jungle Wood + Oak Leaves local jungle_bush_schematic = minetest.get_modpath("mcl_core").."/schematics/mcl_core_jungle_bush_oak_leaves.mts" diff --git a/mods/PLAYER/mcl_death_drop/init.lua b/mods/PLAYER/mcl_death_drop/init.lua index 5f4b1ddb..54672a5d 100644 --- a/mods/PLAYER/mcl_death_drop/init.lua +++ b/mods/PLAYER/mcl_death_drop/init.lua @@ -1,5 +1,5 @@ minetest.register_on_dieplayer(function(player) - local keep = minetest.settings:get_bool("mcl_keepInventory") or false + local keep = minetest.settings:get_bool("mcl_keepInventory", false) if keep == false then -- Drop inventory, crafting grid and armor local inv = player:get_inventory() From 42a7baf4b4ac41c4865be0f550cbc56b28feaa68 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 25 Mar 2019 12:47:16 +0100 Subject: [PATCH 239/737] Version 0.53.0 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 268a530d..e1cae882 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ An unofficial Minecraft-like game for Minetest. Forked from MineClone by daredevils. Developed by Wuzzy and contributors. Not developed or endorsed by Mojang AB. -Version: 0.52.1 +Version: 0.53.0 ### Gameplay You start in a randomly-generated world made entirely of cubes. You can explore From 719f7b5b779e6ebaf6287053e8be443123b85d54 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 25 Mar 2019 13:28:45 +0100 Subject: [PATCH 240/737] Explain how characters work in mcl_signs --- mods/ITEMS/mcl_signs/README.txt | 7 +++++-- mods/ITEMS/mcl_signs/init.lua | 15 ++++++++++++--- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/mods/ITEMS/mcl_signs/README.txt b/mods/ITEMS/mcl_signs/README.txt index 8950bead..78087556 100644 --- a/mods/ITEMS/mcl_signs/README.txt +++ b/mods/ITEMS/mcl_signs/README.txt @@ -1,9 +1,12 @@ Mod based on reworked signs mod by PilzAdam: https://forum.minetest.net/viewtopic.php?t=3289 -License of code: WTFPL +License of code and font: MIT License -License of textures: See README.me in top directory. +Font source: 04.jp.org, some modifications and additions were made (added support for Latin-1 Supplement) +Original font license text states: “YOU MAY USE THEM AS YOU LIKE” (in about.gif file distributed with the font) + +License of textures: See README.me in top directory of MineClone 2. License of models: GPLv3 (https://www.gnu.org/licenses/gpl-3.0.html) Models author: 22i. diff --git a/mods/ITEMS/mcl_signs/init.lua b/mods/ITEMS/mcl_signs/init.lua index 7567f9a7..133c8dc6 100644 --- a/mods/ITEMS/mcl_signs/init.lua +++ b/mods/ITEMS/mcl_signs/init.lua @@ -1,11 +1,20 @@ local S = minetest.get_translator("mcl_signs") local F = minetest.formspec_escape --- Font: 04.jp.org +-- Load the characters map (characters.txt) +--[[ File format of characters.txt: +It's an UTF-8 encoded text file that contains metadata for all supported characters. It contains a sequence of info blocks, one for each character. Each info block is made out of 3 lines: +Line 1: The literal UTF-8 encoded character +Line 2: Name of the texture file for this character minus the “.png” suffix; found in the “textures/” sub-directory +Line 3: Currently ignored. Previously this was for the character width in pixels + +After line 3, another info block may follow. This repeats until the end of the file. + +All character files must be 5 or 6 pixels wide (5 pixels are preferred) +]] --- load characters map local chars_file = io.open(minetest.get_modpath("mcl_signs").."/characters.txt", "r") --- FIXME: Support more characters (many characters are missing) +-- FIXME: Support more characters (many characters are missing). Currently ASCII and Latin-1 Supplement are supported. local charmap = {} if not chars_file then minetest.log("error", "[mcl_signs] : character map file not found") From ba97dfd02ff849f8df53126834a8907b51794711 Mon Sep 17 00:00:00 2001 From: Oil_boi Date: Tue, 26 Mar 2019 10:23:52 +0100 Subject: [PATCH 241/737] Make item entities a bit more efficient --- mods/ENTITIES/mcl_item_entity/init.lua | 24 ++++++++++-------------- 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/mods/ENTITIES/mcl_item_entity/init.lua b/mods/ENTITIES/mcl_item_entity/init.lua index f44917cc..7491285c 100644 --- a/mods/ENTITIES/mcl_item_entity/init.lua +++ b/mods/ENTITIES/mcl_item_entity/init.lua @@ -88,6 +88,15 @@ minetest.register_globalstep(function(dtime) -- Magnet else + --move this to the front so players can see animation before collection + if not collected then + if object:get_luaentity()._magnet_timer > 1 then + object:get_luaentity()._magnet_timer = -item_drop_settings.magnet_time + object:get_luaentity()._magnet_active = false + elseif object:get_luaentity()._magnet_timer < 0 then + object:get_luaentity()._magnet_timer = object:get_luaentity()._magnet_timer + dtime + end + end object:get_luaentity()._magnet_active = true object:get_luaentity()._collector_timer = 0 @@ -95,11 +104,7 @@ minetest.register_globalstep(function(dtime) -- Move object to player disable_physics(object, object:get_luaentity()) - local opos = object:get_pos() - local vec = vector.subtract(checkpos, opos) - vec = vector.add(opos, vector.divide(vec, 2)) - object:move_to(vec) - + object:move_to(checkpos) --fix eternally falling items minetest.after(0, function(object) @@ -143,15 +148,6 @@ minetest.register_globalstep(function(dtime) end end - if not collected then - if object:get_luaentity()._magnet_timer > 1 then - object:get_luaentity()._magnet_timer = -item_drop_settings.magnet_time - object:get_luaentity()._magnet_active = false - elseif object:get_luaentity()._magnet_timer < 0 then - object:get_luaentity()._magnet_timer = object:get_luaentity()._magnet_timer + dtime - end - end - end end From c6e671376d19467cdbbdc23fb48a7fc996698265 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 26 Mar 2019 12:24:30 +0100 Subject: [PATCH 242/737] Make lightning glow in the dark --- mods/ENVIRONMENT/lightning/init.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/mods/ENVIRONMENT/lightning/init.lua b/mods/ENVIRONMENT/lightning/init.lua index 0d0b7d1e..bf077105 100644 --- a/mods/ENVIRONMENT/lightning/init.lua +++ b/mods/ENVIRONMENT/lightning/init.lua @@ -117,6 +117,7 @@ lightning.strike = function(pos) -- to make the texture lightning bolt hit exactly in the middle of the -- texture (e.g. 127/128 on a 256x wide texture) texture = "lightning_lightning_" .. rng:next(1,3) .. ".png", + glow = minetest.LIGHT_MAX, }) minetest.sound_play({ pos = pos, name = "lightning_thunder", gain = 10, max_hear_distance = 500 }) From 8533ff0b750056e77fd1ab5037d59482b1bc8e13 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Wed, 27 Mar 2019 13:07:33 +0100 Subject: [PATCH 243/737] Hoes and shovels now respect protection That is, their special action do so. --- mods/ITEMS/mcl_farming/hoes.lua | 109 +++++++++----------------------- mods/ITEMS/mcl_tools/init.lua | 8 ++- 2 files changed, 36 insertions(+), 81 deletions(-) diff --git a/mods/ITEMS/mcl_farming/hoes.lua b/mods/ITEMS/mcl_farming/hoes.lua index 453ede39..04105b0a 100644 --- a/mods/ITEMS/mcl_farming/hoes.lua +++ b/mods/ITEMS/mcl_farming/hoes.lua @@ -25,6 +25,30 @@ local function create_soil(pos, inv) return false end +local hoe_on_place_function = function(wear_divisor) + return function(itemstack, user, pointed_thing) + -- Call on_rightclick if the pointed node defines it + local node = minetest.get_node(pointed_thing.under) + if user and not user:get_player_control().sneak then + if minetest.registered_nodes[node.name] and minetest.registered_nodes[node.name].on_rightclick then + return minetest.registered_nodes[node.name].on_rightclick(pointed_thing.under, node, user, itemstack) or itemstack + end + end + + if minetest.is_protected(pointed_thing.under, user:get_player_name()) then + minetest.record_protection_violation(pointed_thing.under, user:get_player_name()) + return itemstack + end + + if create_soil(pointed_thing.under, user:get_inventory()) then + if not minetest.settings:get_bool("creative_mode") then + itemstack:add_wear(65535/wear_divisor) + end + return itemstack + end + end +end + local hoe_longdesc = S("Hoes are essential tools for growing crops. They are used to create farmland in order to plant seeds on it. Hoes can also be used as very weak weapons in a pinch.") local hoe_usagehelp = S("Use the hoe on a cultivatable block (by rightclicking it) to turn it into farmland. Dirt, grass blocks and grass paths are cultivatable blocks. Using a hoe on coarse dirt turns it into dirt.") @@ -34,22 +58,7 @@ minetest.register_tool("mcl_farming:hoe_wood", { _doc_items_usagehelp = hoe_usagehelp, _doc_items_hidden = false, inventory_image = "farming_tool_woodhoe.png", - on_place = function(itemstack, user, pointed_thing) - -- Call on_rightclick if the pointed node defines it - local node = minetest.get_node(pointed_thing.under) - if user and not user:get_player_control().sneak then - if minetest.registered_nodes[node.name] and minetest.registered_nodes[node.name].on_rightclick then - return minetest.registered_nodes[node.name].on_rightclick(pointed_thing.under, node, user, itemstack) or itemstack - end - end - - if create_soil(pointed_thing.under, user:get_inventory()) then - if not minetest.settings:get_bool("creative_mode") then - itemstack:add_wear(65535/60) - end - return itemstack - end - end, + on_place = hoe_on_place_function(60), groups = { tool=1, hoe=1 }, tool_capabilities = { full_punch_interval = 1, @@ -85,22 +94,7 @@ minetest.register_tool("mcl_farming:hoe_stone", { _doc_items_longdesc = hoe_longdesc, _doc_items_usagehelp = hoe_usagehelp, inventory_image = "farming_tool_stonehoe.png", - on_place = function(itemstack, user, pointed_thing) - -- Call on_rightclick if the pointed node defines it - local node = minetest.get_node(pointed_thing.under) - if user and not user:get_player_control().sneak then - if minetest.registered_nodes[node.name] and minetest.registered_nodes[node.name].on_rightclick then - return minetest.registered_nodes[node.name].on_rightclick(pointed_thing.under, node, user, itemstack) or itemstack - end - end - - if create_soil(pointed_thing.under, user:get_inventory()) then - if not minetest.settings:get_bool("creative_mode") then - itemstack:add_wear(65535/132) - end - return itemstack - end - end, + on_place = hoe_on_place_function(132), groups = { tool=1, hoe=1 }, tool_capabilities = { full_punch_interval = 0.5, @@ -131,22 +125,7 @@ minetest.register_tool("mcl_farming:hoe_iron", { _doc_items_longdesc = hoe_longdesc, _doc_items_usagehelp = hoe_usagehelp, inventory_image = "farming_tool_steelhoe.png", - on_place = function(itemstack, user, pointed_thing) - -- Call on_rightclick if the pointed node defines it - local node = minetest.get_node(pointed_thing.under) - if user and not user:get_player_control().sneak then - if minetest.registered_nodes[node.name] and minetest.registered_nodes[node.name].on_rightclick then - return minetest.registered_nodes[node.name].on_rightclick(pointed_thing.under, node, user, itemstack) or itemstack - end - end - - if create_soil(pointed_thing.under, user:get_inventory()) then - if not minetest.settings:get_bool("creative_mode") then - itemstack:add_wear(65535/251) - end - return itemstack - end - end, + on_place = hoe_on_place_function(251), groups = { tool=1, hoe=1 }, tool_capabilities = { -- 1/3 @@ -185,22 +164,7 @@ minetest.register_tool("mcl_farming:hoe_gold", { _doc_items_longdesc = hoe_longdesc, _doc_items_usagehelp = hoe_usagehelp, inventory_image = "farming_tool_goldhoe.png", - on_place = function(itemstack, user, pointed_thing) - -- Call on_rightclick if the pointed node defines it - local node = minetest.get_node(pointed_thing.under) - if user and not user:get_player_control().sneak then - if minetest.registered_nodes[node.name] and minetest.registered_nodes[node.name].on_rightclick then - return minetest.registered_nodes[node.name].on_rightclick(pointed_thing.under, node, user, itemstack) or itemstack - end - end - - if create_soil(pointed_thing.under, user:get_inventory()) then - if not minetest.settings:get_bool("creative_mode") then - itemstack:add_wear(65535/33) - end - return itemstack - end - end, + on_place = hoe_on_place_function(33), groups = { tool=1, hoe=1 }, tool_capabilities = { full_punch_interval = 1, @@ -240,22 +204,7 @@ minetest.register_tool("mcl_farming:hoe_diamond", { _doc_items_longdesc = hoe_longdesc, _doc_items_usagehelp = hoe_usagehelp, inventory_image = "farming_tool_diamondhoe.png", - on_place = function(itemstack, user, pointed_thing) - -- Call on_rightclick if the pointed node defines it - local node = minetest.get_node(pointed_thing.under) - if user and not user:get_player_control().sneak then - if minetest.registered_nodes[node.name] and minetest.registered_nodes[node.name].on_rightclick then - return minetest.registered_nodes[node.name].on_rightclick(pointed_thing.under, node, user, itemstack) or itemstack - end - end - - if create_soil(pointed_thing.under, user:get_inventory()) then - if not minetest.settings:get_bool("creative_mode") then - itemstack:add_wear(65535/1562) - end - return itemstack - end - end, + on_place = hoe_on_place_function(1562), groups = { tool=1, hoe=1 }, tool_capabilities = { full_punch_interval = 0.25, diff --git a/mods/ITEMS/mcl_tools/init.lua b/mods/ITEMS/mcl_tools/init.lua index f660c12e..3078d7f5 100644 --- a/mods/ITEMS/mcl_tools/init.lua +++ b/mods/ITEMS/mcl_tools/init.lua @@ -179,12 +179,18 @@ local make_grass_path = function(itemstack, placer, pointed_thing) -- Only make grass path if tool used on side or top of target node if pointed_thing.above.y < pointed_thing.under.y then - return + return itemstack end + if (minetest.get_item_group(node.name, "grass_block") == 1) then local above = table.copy(pointed_thing.under) above.y = above.y + 1 if minetest.get_node(above).name == "air" then + if minetest.is_protected(pointed_thing.under, placer:get_player_name()) then + minetest.record_protection_violation(pointed_thing.under, placer:get_player_name()) + return itemstack + end + if not minetest.settings:get_bool("creative_mode") then -- Add wear, as if digging a level 0 shovely node local toolname = itemstack:get_name() From 2203d0df530c559dc21e2f064b341694c264c22c Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 1 Apr 2019 10:59:36 +0200 Subject: [PATCH 244/737] Revert "Make item entities a bit more efficient" This reverts commit ba97dfd02ff849f8df53126834a8907b51794711 because it broke item entities. --- mods/ENTITIES/mcl_item_entity/init.lua | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/mods/ENTITIES/mcl_item_entity/init.lua b/mods/ENTITIES/mcl_item_entity/init.lua index 7491285c..f44917cc 100644 --- a/mods/ENTITIES/mcl_item_entity/init.lua +++ b/mods/ENTITIES/mcl_item_entity/init.lua @@ -88,15 +88,6 @@ minetest.register_globalstep(function(dtime) -- Magnet else - --move this to the front so players can see animation before collection - if not collected then - if object:get_luaentity()._magnet_timer > 1 then - object:get_luaentity()._magnet_timer = -item_drop_settings.magnet_time - object:get_luaentity()._magnet_active = false - elseif object:get_luaentity()._magnet_timer < 0 then - object:get_luaentity()._magnet_timer = object:get_luaentity()._magnet_timer + dtime - end - end object:get_luaentity()._magnet_active = true object:get_luaentity()._collector_timer = 0 @@ -104,7 +95,11 @@ minetest.register_globalstep(function(dtime) -- Move object to player disable_physics(object, object:get_luaentity()) - object:move_to(checkpos) + local opos = object:get_pos() + local vec = vector.subtract(checkpos, opos) + vec = vector.add(opos, vector.divide(vec, 2)) + object:move_to(vec) + --fix eternally falling items minetest.after(0, function(object) @@ -148,6 +143,15 @@ minetest.register_globalstep(function(dtime) end end + if not collected then + if object:get_luaentity()._magnet_timer > 1 then + object:get_luaentity()._magnet_timer = -item_drop_settings.magnet_time + object:get_luaentity()._magnet_active = false + elseif object:get_luaentity()._magnet_timer < 0 then + object:get_luaentity()._magnet_timer = object:get_luaentity()._magnet_timer + dtime + end + end + end end From 219ec1ddcbc9ac88c83f4d2ba59dc5037a61ab2c Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 1 Apr 2019 15:16:33 +0200 Subject: [PATCH 245/737] Remove old workaround in mcl_stairs --- mods/ITEMS/mcl_stairs/api.lua | 15 ++------------- 1 file changed, 2 insertions(+), 13 deletions(-) diff --git a/mods/ITEMS/mcl_stairs/api.lua b/mods/ITEMS/mcl_stairs/api.lua index 5c892f61..a6e6c659 100644 --- a/mods/ITEMS/mcl_stairs/api.lua +++ b/mods/ITEMS/mcl_stairs/api.lua @@ -4,19 +4,8 @@ local S = minetest.get_translator("mcl_stairs") -- Wrapper around mintest.pointed_thing_to_face_pos. local function get_fpos(placer, pointed_thing) - local fpos - -- Workaround: minetest.pointed_thing_to_face_pos crashes in MT 0.4.16 if - -- pointed_thing.under and pointed_thing.above are equal - -- FIXME: Remove this when MT got fixed. - if not vector.equals(pointed_thing.under, pointed_thing.above) then - -- The happy case: Everything is normal - local finepos = minetest.pointed_thing_to_face_pos(placer, pointed_thing) - fpos = finepos.y % 1 - else - -- Fallback if both above and under are equal - fpos = 0 - end - return fpos + local finepos = minetest.pointed_thing_to_face_pos(placer, pointed_thing) + return finepos.y % 1 end local function place_slab_normal(itemstack, placer, pointed_thing) From a7ceb2462a1ec03c6b0c53d15616baf95bd598a8 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 1 Apr 2019 15:22:44 +0200 Subject: [PATCH 246/737] Deal ender pearl damage as fall damage --- mods/ITEMS/mcl_throwing/init.lua | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/mods/ITEMS/mcl_throwing/init.lua b/mods/ITEMS/mcl_throwing/init.lua index d7e23660..7205a17b 100644 --- a/mods/ITEMS/mcl_throwing/init.lua +++ b/mods/ITEMS/mcl_throwing/init.lua @@ -268,11 +268,7 @@ local pearl_on_step = function(self, dtime) local oldpos = player:get_pos() -- Teleport and hurt player player:set_pos(telepos) - if mod_death_messages then - mcl_death_messages.player_damage(player, S("@1 used the ender pearl too often.", player:get_player_name())) - end - -- TODO: Deal as fall damage - player:set_hp(player:get_hp() - 5) + player:set_hp(player:get_hp() - 5, { type = "fall", origin = "mod" }) -- 5% chance to spawn endermite at the player's origin local r = math.random(1,20) From fbba40fe5c2f9a991f37a80e46734398d5ed58df Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Fri, 5 Apr 2019 15:30:32 +0200 Subject: [PATCH 247/737] Fix item container transfer destroying item metadata --- mods/CORE/mcl_util/init.lua | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/mods/CORE/mcl_util/init.lua b/mods/CORE/mcl_util/init.lua index 54d5e363..b5d5e1bb 100644 --- a/mods/CORE/mcl_util/init.lua +++ b/mods/CORE/mcl_util/init.lua @@ -174,14 +174,15 @@ function mcl_util.move_item(source_inventory, source_list, source_stack_id, dest if not source_inventory:is_empty(source_list) then local stack = source_inventory:get_stack(source_list, source_stack_id) - local item = stack:get_name() if not stack:is_empty() then - if not destination_inventory:room_for_item(destination_list, item) then + local new_stack = ItemStack(stack) + new_stack:set_count(1) + if not destination_inventory:room_for_item(destination_list, new_stack) then return false end stack:take_item() source_inventory:set_stack(source_list, source_stack_id, stack) - destination_inventory:add_item(destination_list, item) + destination_inventory:add_item(destination_list, new_stack) return true end end From ab81dfb4b471bc17eb241ad851fee2f2f6c5f859 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 9 Apr 2019 15:25:27 +0200 Subject: [PATCH 248/737] Stop fire spread if enable_fire=false --- mods/ITEMS/mcl_core/nodes_liquid.lua | 10 ++- mods/ITEMS/mcl_fire/init.lua | 98 +++++++++-------------- mods/ITEMS/mcl_fire/locale/mcl_fire.de.tr | 1 + mods/ITEMS/mcl_fire/locale/template.txt | 1 + settingtypes.txt | 6 +- 5 files changed, 52 insertions(+), 64 deletions(-) diff --git a/mods/ITEMS/mcl_core/nodes_liquid.lua b/mods/ITEMS/mcl_core/nodes_liquid.lua index 8910c389..815fd6fe 100644 --- a/mods/ITEMS/mcl_core/nodes_liquid.lua +++ b/mods/ITEMS/mcl_core/nodes_liquid.lua @@ -145,12 +145,20 @@ minetest.register_node("mcl_core:lava_flowing", { _mcl_hardness = -1, }) +local fire_text +local fire_enabled = minetest.settings:get_bool("enable_fire", true) +if fire_enabled then + fire_text = S("A lava source sets fire to a couple of air blocks above when they're next to a flammable block.") +else + fire_text = "" +end + minetest.register_node("mcl_core:lava_source", { description = S("Lava Source"), _doc_items_entry_name = "Lava", _doc_items_longdesc = S("Lava is hot and rather dangerous. Don't touch it, it will hurt you a lot and it is hard to get out.").."\n".. -S("A lava source sets fire to a couple of air blocks above when they're next to a flammable block.").."\n\n".. +fire_text.."\n\n".. S("Lava interacts with water various ways:").."\n".. S("• When a lava source is directly below or horizontally next to water, the lava turns into obsidian.").."\n".. S("• When flowing water touches flowing lava either from above or horizontally, the lava turns into cobblestone.").."\n".. diff --git a/mods/ITEMS/mcl_fire/init.lua b/mods/ITEMS/mcl_fire/init.lua index bbf1e4cd..cefeb046 100644 --- a/mods/ITEMS/mcl_fire/init.lua +++ b/mods/ITEMS/mcl_fire/init.lua @@ -14,30 +14,24 @@ local N = function(s) return s end -- Fire settings -- When enabled, fire destroys other blocks. -local fire_enabled = minetest.settings:get_bool("enable_fire") -if fire_enabled == nil then - -- New setting not specified, check for old setting. - -- If old setting is also not specified, 'not nil' is true. - fire_enabled = not minetest.settings:get_bool("disable_fire") -end +local fire_enabled = minetest.settings:get_bool("enable_fire", true) -- Enable sound -local flame_sound = minetest.settings:get_bool("flame_sound") -if flame_sound == nil then - -- Enable if no setting present - flame_sound = true -end - +local flame_sound = minetest.settings:get_bool("flame_sound", true) -- Help texts -local fire_help +local fire_help, eternal_fire_help if fire_enabled then fire_help = S("Fire is a damaging and destructive but short-lived kind of block. It will destroy and spread towards near flammable blocks, but fire will disappear when there is nothing to burn left. It will be extinguished by nearby water and rain. Fire can be destroyed safely by punching it, but it is hurtful if you stand directly in it. If a fire is started above netherrack or a magma block, it will immediately turn into an eternal fire.") else fire_help = S("Fire is a damaging but non-destructive short-lived kind of block. It will disappear when there is no flammable block around. Fire does not destroy blocks, at least not in this world. It will be extinguished by nearby water and rain. Fire can be destroyed safely by punching it, but it is hurtful if you stand directly in it. If a fire is started above netherrack or a magma block, it will immediately turn into an eternal fire.") end -local eternal_fire_help = S("Eternal fire is a damaging block that might create more fire. It will create fire around it when flammable blocks are nearby. Eternal fire can be extinguished by punches and nearby water blocks. Other than (normal) fire, eternal fire does not get extinguished on its own and also continues to burn under rain. Punching eternal fire is safe, but it hurts if you stand inside.") +if fire_enabled then + eternal_fire_help = S("Eternal fire is a damaging block that might create more fire. It will create fire around it when flammable blocks are nearby. Eternal fire can be extinguished by punches and nearby water blocks. Other than (normal) fire, eternal fire does not get extinguished on its own and also continues to burn under rain. Punching eternal fire is safe, but it hurts if you stand inside.") +else + eternal_fire_help = S("Eternal fire is a damaging block. Eternal fire can be extinguished by punches and nearby water blocks. Other than (normal) fire, eternal fire does not get extinguished on its own and also continues to burn under rain. Punching eternal fire is safe, but it hurts if you stand inside.") +end local fire_death_messages = { N("@1 has been cooked crisp."), @@ -79,10 +73,15 @@ minetest.register_node("mcl_fire:fire", { end, on_timer = function(pos) local airs = minetest.find_nodes_in_area({x=pos.x-1, y=pos.y-1, z=pos.z-1}, {x=pos.x+1, y=pos.y+4, z=pos.z+1}, {"air"}) - if #airs == 0 then + if (#airs == 0) or ((not fire_enabled) and math.random(1,3) == 1) then minetest.remove_node(pos) return end + if (not fire_enabled) then + -- Restart timer + minetest.get_node_timer(pos):start(math.random(3, 7)) + return + end local burned = false if math.random(1,2) == 1 then while #airs > 0 do @@ -158,14 +157,16 @@ minetest.register_node("mcl_fire:eternal_fire", { end end, on_timer = function(pos) - local airs = minetest.find_nodes_in_area({x=pos.x-1, y=pos.y-1, z=pos.z-1}, {x=pos.x+1, y=pos.y+4, z=pos.z+1}, {"air"}) - while #airs > 0 do - local r = math.random(1, #airs) - if minetest.find_node_near(airs[r], 1, {"group:flammable"}) then - minetest.set_node(airs[r], {name="mcl_fire:fire"}) - break - else - table.remove(airs, r) + if fire_enabled then + local airs = minetest.find_nodes_in_area({x=pos.x-1, y=pos.y-1, z=pos.z-1}, {x=pos.x+1, y=pos.y+4, z=pos.z+1}, {"air"}) + while #airs > 0 do + local r = math.random(1, #airs) + if minetest.find_node_near(airs[r], 1, {"group:flammable"}) then + minetest.set_node(airs[r], {name="mcl_fire:fire"}) + break + else + table.remove(airs, r) + end end end -- Restart timer @@ -184,36 +185,6 @@ minetest.register_node("mcl_fire:eternal_fire", { _mcl_blast_resistance = 0, }) --- Also make lava set fire to air blocks above -minetest.override_item("mcl_core:lava_source", { - on_timer = function(pos) - local function try_ignite(airs) - while #airs > 0 do - local r = math.random(1, #airs) - if minetest.find_node_near(airs[r], 1, {"group:flammable", "group:flammable_lava"}) then - minetest.set_node(airs[r], {name="mcl_fire:fire"}) - return true - else - table.remove(airs, r) - end - end - return false - end - local airs1 = minetest.find_nodes_in_area({x=pos.x-1, y=pos.y+1, z=pos.z-1}, {x=pos.x+1, y=pos.y+1, z=pos.z+1}, {"air"}) - local ok = try_ignite(airs1) - if not ok then - local airs2 = minetest.find_nodes_in_area({x=pos.x-2, y=pos.y+2, z=pos.z-2}, {x=pos.x+2, y=pos.y+2, z=pos.z+2}, {"air"}) - try_ignite(airs2) - end - - -- Restart timer - minetest.get_node_timer(pos):start(math.random(5, 10)) - end, - on_construct = function(pos) - minetest.get_node_timer(pos):start(math.random(5, 10)) - end -}) - -- -- Sound -- @@ -350,28 +321,37 @@ minetest.register_abm({ if not fire_enabled then - -- Remove fire only if fire disabled + -- Occasionally remove fire if fire disabled + -- NOTE: Fire is normally extinguished in timer function minetest.register_abm({ label = "Remove disabled fire", nodenames = {"mcl_fire:fire"}, - interval = 7, - chance = 3, + interval = 10, + chance = 10, catch_up = false, action = minetest.remove_node, }) +else -- Fire enabled + -- Set fire to air nodes (inverse pyramid pattern) above lava source minetest.register_abm({ label = "Ignite fire by lava", - nodenames = {"mcl_core:lava_source"}, + nodenames = {"group:lava"}, interval = 7, chance = 2, catch_up = false, action = function(pos) + local node = minetest.get_node(pos) + local def = minetest.registered_nodes[node.name] + -- Check if liquid source node + if def and def.liquidtype ~= "source" then + return + end local function try_ignite(airs) while #airs > 0 do local r = math.random(1, #airs) - if minetest.find_node_near(airs[r], 1, {"group:flammable", "group:flammable_lava"}) then + if minetest.find_node_near(airs[r], 1, {"group:flammable"}) then minetest.set_node(airs[r], {name="mcl_fire:fire"}) return true else @@ -389,8 +369,6 @@ if not fire_enabled then end, }) -else -- Fire enabled - -- Turn flammable nodes around fire into fire minetest.register_abm({ label = "Remove flammable nodes", diff --git a/mods/ITEMS/mcl_fire/locale/mcl_fire.de.tr b/mods/ITEMS/mcl_fire/locale/mcl_fire.de.tr index feca7008..22d91a5b 100644 --- a/mods/ITEMS/mcl_fire/locale/mcl_fire.de.tr +++ b/mods/ITEMS/mcl_fire/locale/mcl_fire.de.tr @@ -8,6 +8,7 @@ Rightclick the surface of a block to attempt to light a fire in front of it or i Fire is a damaging and destructive but short-lived kind of block. It will destroy and spread towards near flammable blocks, but fire will disappear when there is nothing to burn left. It will be extinguished by nearby water and rain. Fire can be destroyed safely by punching it, but it is hurtful if you stand directly in it. If a fire is started above netherrack or a magma block, it will immediately turn into an eternal fire.=Feuer ist ein schädlicher und destruktiver aber kurzlebiger Block. Es wird sich zu entzündlichen Blöcken ausbreiten und sie zerstören, aber Feuer wird verschwinden, wenn es nichts brennbares mehr gibt. Es wird von Wasser und Regen gelöscht. Feuer kann sicher mit einem Schlag zerstört werden, aber es tut weh, wenn man direkt in ihm steht. Wird ein Feuer über Netherrack oder einem Magmablock entfacht, wird er sich sofort zu einem ewigen Feuer verwandeln. Fire is a damaging but non-destructive short-lived kind of block. It will disappear when there is no flammable block around. Fire does not destroy blocks, at least not in this world. It will be extinguished by nearby water and rain. Fire can be destroyed safely by punching it, but it is hurtful if you stand directly in it. If a fire is started above netherrack or a magma block, it will immediately turn into an eternal fire.=Feuer ist ein schädlicher aber nicht-destruktiver kurzlebiger Block. Es wird verschwinden, wenn sich keine entzündlichen Blöcke in der Nähe befinden. Feuer breitet sich nicht aus und zerstört keine Blöcke, zumindest nicht in dieser Welt. Es wird von Wasser und Regen gelöscht. Feuer kann sicher mit einem Schlag zerstört werden, aber es tut weh, wenn man direkt in ihm steht. Wird ein Feuer über Netherrack oder einem Magmablock entfacht, wird er sich sofort zu einem ewigen Feuer verwandeln. Eternal fire is a damaging block that might create more fire. It will create fire around it when flammable blocks are nearby. Eternal fire can be extinguished by punches and nearby water blocks. Other than (normal) fire, eternal fire does not get extinguished on its own and also continues to burn under rain. Punching eternal fire is safe, but it hurts if you stand inside.=Ewiges Feuer ist ein schädlicher Block, der mehr Feuer machen kann. Er wird um sich Feuer machen, wenn entflammbare Blöcke in der Nähe sind. Ewiges Feuer kann von Schlägen und Wasserblöcken in der Nähe gelöscht werden. Anders als (normales) Feuer geht ein ewiges Feuer nicht von alleine aus, auch nicht unter Regen. Es ist sicher, ein ewiges Feuer zu schlagen, aber es tut weh, wenn man direkt in einem steht. +Eternal fire is a damaging block. Eternal fire can be extinguished by punches and nearby water blocks. Other than (normal) fire, eternal fire does not get extinguished on its own and also continues to burn under rain. Punching eternal fire is safe, but it hurts if you stand inside.=Ewiges Feuer ist ein schädlicher Block. Ewiges Feuer kann von Schlägen und Wasserblöcken in der Nähe gelöscht werden. Anders als (normales) Feuer geht ein ewiges Feuer nicht von alleine aus, auch nicht unter Regen. Es ist sicher, ein ewiges Feuer zu schlagen, aber es tut weh, wenn man direkt in einem steht. @1 has been cooked crisp.=@1 wurde knusprig gebraten. @1 felt the burn.=@1 ist völlig verbrannt. @1 died in the flames.=@1 starb in den Flammen. diff --git a/mods/ITEMS/mcl_fire/locale/template.txt b/mods/ITEMS/mcl_fire/locale/template.txt index 035834a3..065135ef 100644 --- a/mods/ITEMS/mcl_fire/locale/template.txt +++ b/mods/ITEMS/mcl_fire/locale/template.txt @@ -8,6 +8,7 @@ Rightclick the surface of a block to attempt to light a fire in front of it or i Fire is a damaging and destructive but short-lived kind of block. It will destroy and spread towards near flammable blocks, but fire will disappear when there is nothing to burn left. It will be extinguished by nearby water and rain. Fire can be destroyed safely by punching it, but it is hurtful if you stand directly in it. If a fire is started above netherrack or a magma block, it will immediately turn into an eternal fire.= Fire is a damaging but non-destructive short-lived kind of block. It will disappear when there is no flammable block around. Fire does not destroy blocks, at least not in this world. It will be extinguished by nearby water and rain. Fire can be destroyed safely by punching it, but it is hurtful if you stand directly in it. If a fire is started above netherrack or a magma block, it will immediately turn into an eternal fire.= Eternal fire is a damaging block that might create more fire. It will create fire around it when flammable blocks are nearby. Eternal fire can be extinguished by punches and nearby water blocks. Other than (normal) fire, eternal fire does not get extinguished on its own and also continues to burn under rain. Punching eternal fire is safe, but it hurts if you stand inside.= +Eternal fire is a damaging block. Eternal fire can be extinguished by punches and nearby water blocks. Other than (normal) fire, eternal fire does not get extinguished on its own and also continues to burn under rain. Punching eternal fire is safe, but it hurts if you stand inside.= @1 has been cooked crisp.= @1 felt the burn.= @1 died in the flames.= diff --git a/settingtypes.txt b/settingtypes.txt index d39f3379..f30ae36e 100644 --- a/settingtypes.txt +++ b/settingtypes.txt @@ -13,9 +13,9 @@ creative_mode (Creative mode) bool false # Fire spreads and flammable blocks might be destroyed by nearby fire. # Destructive fire may cause severe destruction. -# Fire blocks will be non-destructive when this setting is disabled, but they -# still deal damage to creatures. Eternal fire is unaffected. -enable_fire (Destructive fire) bool true +# Fire blocks will be non-destructive and stops spreading when this +# setting is disabled, but they still deal damage to creatures. +enable_fire (Destructive and spreading fire) bool true # If enabled, the weather will change naturally over time. mcl_doWeatherCycle (Change weather) bool true From 6842c4262526d32152495c13acb849ab81695b28 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 9 Apr 2019 17:05:16 +0200 Subject: [PATCH 249/737] Version 0.53.2 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index e1cae882..52e5be50 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ An unofficial Minecraft-like game for Minetest. Forked from MineClone by daredevils. Developed by Wuzzy and contributors. Not developed or endorsed by Mojang AB. -Version: 0.53.0 +Version: 0.53.2 ### Gameplay You start in a randomly-generated world made entirely of cubes. You can explore From 1ed1bdfadb2da0577061b4d1a903ccab8f88b9bf Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Thu, 11 Apr 2019 17:03:41 +0200 Subject: [PATCH 250/737] Use minetest.raillike_group for rails --- mods/ENTITIES/mcl_minecarts/rails.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ENTITIES/mcl_minecarts/rails.lua b/mods/ENTITIES/mcl_minecarts/rails.lua index f288ce04..cf1ebacf 100644 --- a/mods/ENTITIES/mcl_minecarts/rails.lua +++ b/mods/ENTITIES/mcl_minecarts/rails.lua @@ -2,7 +2,7 @@ local S = minetest.get_translator("mcl_minecarts") -- Template rail function local register_rail = function(itemstring, tiles, def_extras, creative) - local groups = {handy=1,pickaxey=1, attached_node=1,rail=1,connect_to_raillike=1,dig_by_water=1,destroy_by_lava_flow=1, transport=1} + local groups = {handy=1,pickaxey=1, attached_node=1,rail=1,connect_to_raillike=minetest.raillike_group("rail"),dig_by_water=1,destroy_by_lava_flow=1, transport=1} if creative == false then groups.not_in_creative_inventory = 1 end From b0c457f2ec67cb14e9eb3d9f2e2a4c567448c86a Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sat, 4 May 2019 12:59:53 +0200 Subject: [PATCH 251/737] Fix chorus plant stems not break in protected land --- mods/ITEMS/mcl_end/chorus_plant.lua | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/mods/ITEMS/mcl_end/chorus_plant.lua b/mods/ITEMS/mcl_end/chorus_plant.lua index be20e74a..d2071a61 100644 --- a/mods/ITEMS/mcl_end/chorus_plant.lua +++ b/mods/ITEMS/mcl_end/chorus_plant.lua @@ -26,7 +26,7 @@ end -- This detaches all chorus plants that are/were attached -- at start_pos. -mcl_end.detach_chorus_plant = function(start_pos) +mcl_end.detach_chorus_plant = function(start_pos, digger) local neighbors = { { x=0, y=1, z=0 }, { x=0, y=0, z=1 }, @@ -75,14 +75,14 @@ mcl_end.detach_chorus_plant = function(start_pos) -- If we traversed the entire chorus plant and it was not attached to end stone: -- Drop ALL the chorus nodes we found. for c=1, #chorus_nodes do - minetest.dig_node(chorus_nodes[c]) + minetest.node_dig(chorus_nodes[c], { name = "mcl_end:chorus_plant" }, digger) end end end end -mcl_end.check_detach_chorus_plant = function(pos) - mcl_end.detach_chorus_plant(pos) +mcl_end.check_detach_chorus_plant = function(pos, oldnode, oldmetadata, digger) + mcl_end.detach_chorus_plant(pos, digger) end minetest.register_node("mcl_end:chorus_flower", { From 80ee8172fe16049d275f1e5d00432a81218bc80f Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sat, 4 May 2019 13:33:37 +0200 Subject: [PATCH 252/737] Only allow placement of chorus stems on valid node --- mods/ITEMS/mcl_end/chorus_plant.lua | 53 +++++++++++++++++++++++++---- 1 file changed, 47 insertions(+), 6 deletions(-) diff --git a/mods/ITEMS/mcl_end/chorus_plant.lua b/mods/ITEMS/mcl_end/chorus_plant.lua index d2071a61..076fab30 100644 --- a/mods/ITEMS/mcl_end/chorus_plant.lua +++ b/mods/ITEMS/mcl_end/chorus_plant.lua @@ -103,7 +103,7 @@ minetest.register_node("mcl_end:chorus_flower", { node_box = chorus_flower_box, selection_box = { type = "regular" }, sounds = mcl_sounds.node_sound_wood_defaults(), - groups = {handy=1,axey=1, deco_block = 1, dig_by_piston = 1, destroy_by_lava_flow = 1,chorus_plant = 1}, + groups = {handy=1,axey=1, deco_block = 1, not_in_creative_inventory = 1, dig_by_piston = 1, destroy_by_lava_flow = 1,chorus_plant = 1}, node_placement_prediction = "", on_place = function(itemstack, placer, pointed_thing) @@ -116,7 +116,7 @@ minetest.register_node("mcl_end:chorus_flower", { end end - --[[ Part 1: Check placement rules. Placement is legal is one of the following + --[[ Part 1: Check placement rules. Placement is legal if one of the following conditions is met: 1) On top of end stone or chorus plant 2) On top of air and horizontally adjacent to exactly 1 chorus plant ]] @@ -159,8 +159,11 @@ minetest.register_node("mcl_end:chorus_flower", { end if plant_ok then -- Placement OK! Proceed normally - minetest.sound_play(mcl_sounds.node_sound_wood_defaults().place, {pos = pos}) - return minetest.item_place_node(itemstack, placer, pointed_thing) + local it, suc = minetest.item_place_node(itemstack, placer, pointed_thing) + if suc then + minetest.sound_play(mcl_sounds.node_sound_wood_defaults().place, {pos = pos}) + end + return it else return itemstack end @@ -219,14 +222,52 @@ minetest.register_node("mcl_end:chorus_plant", { connect_back = { -0.1875, -0.1875, 0.25, 0.1875, 0.1875, 0.5 }, }, connect_sides = { "top", "bottom", "front", "back", "left", "right" }, - connects_to = {"mcl_end:chorus_plant", "mcl_end:chorus_flower", "mcl_end:chorus_flower_dead", "mcl_end:end_stone"}, + connects_to = {"group:chorus_plant", "mcl_end:end_stone"}, sounds = mcl_sounds.node_sound_wood_defaults(), drop = { items = { { items = { "mcl_end:chorus_fruit"}, rarity = 2 }, } }, - groups = {handy=1,axey=1, not_in_creative_inventory = 1, dig_by_piston = 1, destroy_by_lava_flow = 1, chorus_plant = 1 }, + groups = {handy=1,axey=1, dig_by_piston = 1, destroy_by_lava_flow = 1, chorus_plant = 1 }, + + node_placement_prediction = "", + on_place = function(itemstack, placer, pointed_thing) + local node_under = minetest.get_node(pointed_thing.under) + local node_above = minetest.get_node(pointed_thing.above) + if placer and not placer:get_player_control().sneak then + -- Use pointed node's on_rightclick function first, if present + if minetest.registered_nodes[node_under.name] and minetest.registered_nodes[node_under.name].on_rightclick then + return minetest.registered_nodes[node_under.name].on_rightclick(pointed_thing.under, node_under, placer, itemstack) or itemstack + end + end + + --[[ Part 1: Check placement rules. Placement is legal if this + condition is met: + - placed on end stone or any chorus node ]] + local pos_place, node_check + if minetest.registered_nodes[node_under.name].buildable_to then + pos_place = pointed_thing.under + node_check = node_above + else + pos_place = pointed_thing.above + node_check = node_under + end + local plant_ok = false + if node_check.name == "mcl_end:end_stone" or minetest.get_item_group(node_check.name, "chorus_plant") > 0 then + plant_ok = true + end + if plant_ok then + -- Placement OK! Proceed normally + local it, suc = minetest.item_place_node(itemstack, placer, pointed_thing) + if suc then + minetest.sound_play(mcl_sounds.node_sound_wood_defaults().place, {pos = pos_place}) + end + return it + else + return itemstack + end + end, after_dig_node = mcl_end.check_detach_chorus_plant, _mcl_blast_resistance = 2, _mcl_hardness = 0.4, From 8830edfdf9240b8349879dc6039c95cb1161fffa Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sat, 4 May 2019 13:39:11 +0200 Subject: [PATCH 253/737] Add chorus plant stem usagehelp --- mods/ITEMS/mcl_end/chorus_plant.lua | 1 + mods/ITEMS/mcl_end/locale/mcl_end.de.tr | 1 + mods/ITEMS/mcl_end/locale/template.txt | 1 + 3 files changed, 3 insertions(+) diff --git a/mods/ITEMS/mcl_end/chorus_plant.lua b/mods/ITEMS/mcl_end/chorus_plant.lua index 076fab30..99c2b146 100644 --- a/mods/ITEMS/mcl_end/chorus_plant.lua +++ b/mods/ITEMS/mcl_end/chorus_plant.lua @@ -200,6 +200,7 @@ minetest.register_node("mcl_end:chorus_flower_dead", { minetest.register_node("mcl_end:chorus_plant", { description = S("Chorus Plant Stem"), _doc_items_longdesc = S("A chorus plant stem is the part of a chorus plant which holds the whole plant together. It needs end stone as its soil. Stems are grown from chorus flowers."), + _doc_items_usagehelp = S("The stem attaches itself to end stone and other chorus blocks."), tiles = { "mcl_end_chorus_plant.png", "mcl_end_chorus_plant.png", diff --git a/mods/ITEMS/mcl_end/locale/mcl_end.de.tr b/mods/ITEMS/mcl_end/locale/mcl_end.de.tr index b63cc849..0290bbfd 100644 --- a/mods/ITEMS/mcl_end/locale/mcl_end.de.tr +++ b/mods/ITEMS/mcl_end/locale/mcl_end.de.tr @@ -22,3 +22,4 @@ This item is used to locate End portal shrines in the Overworld and to activate Use the attack key to release the eye of ender. It will rise and fly in the horizontal direction of the closest end portal shrine. If you're very close, the eye of ender will take the direct path to the End portal shrine instead. After a few seconds, it stops. It may drop as an item, but there's a 20% chance it shatters.=Benutzen Sie die Angriffstaste, um das Enderauge loszulassen. Es wird aufsteigen und in einer horizontalen Richtung zum nächsten Endportalschrein fliegen. Wenn Sie sehr nah dran sind, wird das Enderauge stattdessen den direkten Weg zum Endportalschrein nehmen. Nach ein paar Sekunden hält es an. Es könnte als Gegenstand wieder herunterfallen, aber es wird mit einer 20%-Chance zerbrechen. To activate an End portal, eyes of ender need to be placed into each block of an intact End portal frame.=Um ein Endportal zu aktivieren, müssen Enderaugen in jeden Block eines intakten Endportalrahmens platziert werden. NOTE: The End dimension is currently incomplete and might change in future versions.=ANMERKUNG: Die Ende-Dimension ist momentan unfertig und könnte sich in künftigen Versionen ändern. +The stem attaches itself to end stone and other chorus blocks.=Der Stängel muss sich neben anderen Chorusblöcken oder Endstein befinden. diff --git a/mods/ITEMS/mcl_end/locale/template.txt b/mods/ITEMS/mcl_end/locale/template.txt index 5e605eea..14cc9ff4 100644 --- a/mods/ITEMS/mcl_end/locale/template.txt +++ b/mods/ITEMS/mcl_end/locale/template.txt @@ -22,3 +22,4 @@ This item is used to locate End portal shrines in the Overworld and to activate Use the attack key to release the eye of ender. It will rise and fly in the horizontal direction of the closest end portal shrine. If you're very close, the eye of ender will take the direct path to the End portal shrine instead. After a few seconds, it stops. It may drop as an item, but there's a 20% chance it shatters.= To activate an End portal, eyes of ender need to be placed into each block of an intact End portal frame.= NOTE: The End dimension is currently incomplete and might change in future versions.= +The stem attaches itself to end stone and other chorus blocks.= From 23630bbac04f2b41b5d3a4b46ad5c02ec3c1d4cb Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Fri, 31 May 2019 12:15:34 +0200 Subject: [PATCH 254/737] Version 0.53.3 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 52e5be50..f3c3b898 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ An unofficial Minecraft-like game for Minetest. Forked from MineClone by daredevils. Developed by Wuzzy and contributors. Not developed or endorsed by Mojang AB. -Version: 0.53.2 +Version: 0.53.3 ### Gameplay You start in a randomly-generated world made entirely of cubes. You can explore From 6e9d712c5eefd98a32b9a56f7bc615d448eca86b Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sun, 2 Jun 2019 10:12:36 +0200 Subject: [PATCH 255/737] Fix ice not melting properly by non-Sun light --- mods/ITEMS/mcl_core/functions.lua | 19 ++++++++++++++++++- mods/ITEMS/mcl_core/nodes_base.lua | 8 +------- 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/mods/ITEMS/mcl_core/functions.lua b/mods/ITEMS/mcl_core/functions.lua index bcbab0e7..215db3f0 100644 --- a/mods/ITEMS/mcl_core/functions.lua +++ b/mods/ITEMS/mcl_core/functions.lua @@ -1175,7 +1175,11 @@ minetest.register_abm({ chance = 8, action = function(pos, node) if minetest.get_node_light(pos, 0) >= 12 then - minetest.remove_node(pos) + if node.name == "mcl_core:ice" then + mcl_core.melt_ice(pos) + else + minetest.remove_node(pos) + end end end }) @@ -1206,6 +1210,19 @@ function mcl_core.check_vines_supported(pos, node) return supported end +-- Melt ice at pos. mcl_core:ice MUST be a post if you call this! +function mcl_core.melt_ice(pos) + -- Create a water source if ice is destroyed and there was something below it + local below = {x=pos.x, y=pos.y-1, z=pos.z} + local belownode = minetest.get_node(below) + local dim = mcl_worlds.pos_to_dimension(below) + if dim ~= "nether" and belownode.name ~= "air" and belownode.name ~= "ignore" and belownode.name ~= "mcl_core:void" then + minetest.set_node(pos, {name="mcl_core:water_source"}) + else + minetest.remove_node(pos) + end +end + ---- FUNCTIONS FOR SNOWED NODES ---- -- These are nodes which change their appearence when they are below a snow cover -- and turn back into “normal” when the snow cover is removed. diff --git a/mods/ITEMS/mcl_core/nodes_base.lua b/mods/ITEMS/mcl_core/nodes_base.lua index 9062c8e7..50c1d1cc 100644 --- a/mods/ITEMS/mcl_core/nodes_base.lua +++ b/mods/ITEMS/mcl_core/nodes_base.lua @@ -781,13 +781,7 @@ minetest.register_node("mcl_core:ice", { sounds = mcl_sounds.node_sound_glass_defaults(), node_dig_prediction = "mcl_core:water_source", after_dig_node = function(pos, oldnode) - -- Create a water source if ice is destroyed and there was something below it - local below = {x=pos.x, y=pos.y-1, z=pos.z} - local belownode = minetest.get_node(below) - local dim = mcl_worlds.pos_to_dimension(below) - if dim ~= "nether" and belownode.name ~= "air" and belownode.name ~= "ignore" and belownode.name ~= "mcl_core:void" then - minetest.set_node(pos, {name="mcl_core:water_source"}) - end + mcl_core.melt_ice(pos) end, _mcl_blast_resistance = 2.5, _mcl_hardness = 0.5, From 6cd1fb111992bb78ea43265ae8c6642578b1119f Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sun, 2 Jun 2019 10:21:35 +0200 Subject: [PATCH 256/737] Change German translation of Jack'o lantern --- mods/ITEMS/mcl_farming/locale/mcl_farming.de.tr | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_farming/locale/mcl_farming.de.tr b/mods/ITEMS/mcl_farming/locale/mcl_farming.de.tr index bdb49662..7f14774c 100644 --- a/mods/ITEMS/mcl_farming/locale/mcl_farming.de.tr +++ b/mods/ITEMS/mcl_farming/locale/mcl_farming.de.tr @@ -67,8 +67,8 @@ Faceless Pumpkin=Gesichtsloser Kürbis A faceless pumpkin is a decorative block. It can be carved with shears to obtain pumpkin seeds.=Ein gesichtsloser Kürbis ist ein dekorativer Block. Mit einer Schere kann man in ihm ein Muster schnitzen, um Kürbissamen zu erhalten. Pumpkin=Kürbis A pumpkin can be worn as a helmet for fun, but it doesn't offer any protection. Pumpkins grow from pumpkin stems, which in turn grow from pumpkin seeds.=Einen Kürbis kann zum Spaß als Helm getragen werden, aber er bietet keinen Schutz. Kürbisse wachsen aus Kürbisstängeln, welche wiederum aus Kürbissamen wachsen. -Jack o'Lantern=Halloweenkürbis -A jack o'lantern is a traditional Halloween decoration made from a pumpkin. It glows brightly.=Ein Halloweenkürbis ist eine traditionelle Dekoration für Halloween. Er leuchtet hell. +Jack o'Lantern=Kürbislaterne +A jack o'lantern is a traditional Halloween decoration made from a pumpkin. It glows brightly.=Eine Kürbislaterne ist eine traditionelle Dekoration für Halloween. Sie leuchtet hell. Pumpkin Pie=Kürbiskuchen A pumpkin pie is a tasty food item which can be eaten.=Ein Kürbiskuchen ist ein leckeres essbares Lebensmittel. Farmland=Ackerboden From 36adba2e0bc17a3eb282693ef9ab9cddb80d7ec1 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Thu, 13 Jun 2019 20:44:04 +0200 Subject: [PATCH 257/737] Add chorus plant stem to deco_block group --- mods/ITEMS/mcl_end/chorus_plant.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_end/chorus_plant.lua b/mods/ITEMS/mcl_end/chorus_plant.lua index 99c2b146..02ab50d4 100644 --- a/mods/ITEMS/mcl_end/chorus_plant.lua +++ b/mods/ITEMS/mcl_end/chorus_plant.lua @@ -230,7 +230,7 @@ minetest.register_node("mcl_end:chorus_plant", { { items = { "mcl_end:chorus_fruit"}, rarity = 2 }, } }, - groups = {handy=1,axey=1, dig_by_piston = 1, destroy_by_lava_flow = 1, chorus_plant = 1 }, + groups = {handy=1,axey=1, deco_block = 1, dig_by_piston = 1, destroy_by_lava_flow = 1, chorus_plant = 1 }, node_placement_prediction = "", on_place = function(itemstack, placer, pointed_thing) From c623860af88ce29a1e552a9b9dd536ced8703c54 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Fri, 14 Jun 2019 23:01:50 +0200 Subject: [PATCH 258/737] Add wool sounds --- mods/CORE/mcl_sounds/README.txt | 7 +++++++ mods/CORE/mcl_sounds/init.lua | 14 ++++++++++++++ .../mcl_sounds/sounds/mcl_sounds_cloth.1.ogg | Bin 0 -> 8903 bytes .../mcl_sounds/sounds/mcl_sounds_cloth.2.ogg | Bin 0 -> 8991 bytes .../mcl_sounds/sounds/mcl_sounds_cloth.3.ogg | Bin 0 -> 8652 bytes .../mcl_sounds/sounds/mcl_sounds_cloth.4.ogg | Bin 0 -> 7890 bytes mods/ITEMS/mcl_wool/init.lua | 4 ++-- 7 files changed, 23 insertions(+), 2 deletions(-) create mode 100644 mods/CORE/mcl_sounds/sounds/mcl_sounds_cloth.1.ogg create mode 100644 mods/CORE/mcl_sounds/sounds/mcl_sounds_cloth.2.ogg create mode 100644 mods/CORE/mcl_sounds/sounds/mcl_sounds_cloth.3.ogg create mode 100644 mods/CORE/mcl_sounds/sounds/mcl_sounds_cloth.4.ogg diff --git a/mods/CORE/mcl_sounds/README.txt b/mods/CORE/mcl_sounds/README.txt index 43e6cf30..9fc2ba28 100644 --- a/mods/CORE/mcl_sounds/README.txt +++ b/mods/CORE/mcl_sounds/README.txt @@ -4,6 +4,9 @@ Licenses of sounds Creative Commons Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) http://creativecommons.org/licenses/by-sa/3.0/ +Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) +http://creativecommons.org/licenses/by-sa/4.0/ + Creative Commons Attribution 3.0 Unported (CC BY-SA 3.0) http://creativecommons.org/licenses/by/3.0/ @@ -86,5 +89,9 @@ Adam_N (CC0 1.0): player_falling_damage.ogg Source: +Alecia Shepherd (CC BY-SA 4.0): + mcl_sounds_cloth.ogg + Source: SnowSong sound and music pack + Unknown authors (WTFPL): pedology_snow_soft_footstep.*.ogg diff --git a/mods/CORE/mcl_sounds/init.lua b/mods/CORE/mcl_sounds/init.lua index cd3ca96f..70010fda 100644 --- a/mods/CORE/mcl_sounds/init.lua +++ b/mods/CORE/mcl_sounds/init.lua @@ -97,6 +97,20 @@ function mcl_sounds.node_sound_wood_defaults(table) return table end +function mcl_sounds.node_sound_wool_defaults(table) + table = table or {} + table.footstep = table.footstep or + {name="mcl_sounds_cloth", gain=0.5} + table.dug = table.dug or + {name="mcl_sounds_cloth", gain=1.0} + table.dig = table.dig or + {name="mcl_sounds_cloth", gain=0.9} + table.place = table.dig or + {name="mcl_sounds_cloth", gain=1.0} + mcl_sounds.node_sound_defaults(table) + return table +end + function mcl_sounds.node_sound_leaves_defaults(table) table = table or {} table.footstep = table.footstep or diff --git a/mods/CORE/mcl_sounds/sounds/mcl_sounds_cloth.1.ogg b/mods/CORE/mcl_sounds/sounds/mcl_sounds_cloth.1.ogg new file mode 100644 index 0000000000000000000000000000000000000000..cc304a414050d9ae55edd85c3fc5054aa3f218a4 GIT binary patch literal 8903 zcmeZIPY-5bVt|6*IuM4k=CkRHa*Sp9MM;^(AR$JVH4F^@|NsBbP|gUZcQAr=g5fnocOP8WguAe9Jwju~Q*ECT~WL}o#To_|rgLQZB<7}$6PPX!|b10w@-LvuC; z1_nt628Q7Lyh;WC^mGNN3PU{u1-Hz+#2i5e28IyN5Fb}tx1!YI429s5)PiDl1_lOa z|A5FKPj`|%xdGzG_;)a1-Wh2V_Tf{fIn6a^y#Lo+c31_sBV5YONcTQq42 z1_lOKKX*?*SJxnPIccy3zP_%0A-2K!rFkh}^L;b(Qj?1k(@GdwA>Pw;at>o;;9y{2 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 literal 0 HcmV?d00001 diff --git a/mods/CORE/mcl_sounds/sounds/mcl_sounds_cloth.2.ogg b/mods/CORE/mcl_sounds/sounds/mcl_sounds_cloth.2.ogg new file mode 100644 index 0000000000000000000000000000000000000000..8a3c0963f1336c0fc36fed49e3844653846c8bb1 GIT binary patch literal 8991 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 Ybn`oh-q!E@dr#pAf86N~20n5C07;=XSpWb4 literal 0 HcmV?d00001 diff --git a/mods/CORE/mcl_sounds/sounds/mcl_sounds_cloth.3.ogg b/mods/CORE/mcl_sounds/sounds/mcl_sounds_cloth.3.ogg new file mode 100644 index 0000000000000000000000000000000000000000..2f682c72b969910d5b1c78f39897b685647ed550 GIT binary patch literal 8652 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

    vn%BRd1^<=;3oAht$ z>{~J&)~3^5Jyz4W{rRqJP1I%9{~?Pcd_Qwd<9QIGb)vWb)TQGS&TQ)!+r_@5f_bM~ z=+ZLod9VI5UFoulvw1IUm}AFh%>CuqCi_y82DYa44vsrqcJIiMli$Dh9@8Y|eJj`A z6Ya29>jTx`3=M{&wQ1X?i5oNUcs9&SFirUL_U(?E8?)b}UAOsnm9MnD`gct4%8&lD z|LmXL*~PXy%-zedPowI{4H@@?f6iS0d3e%4#e!AqjP82xIw~S?g12X*{e)ezr&>$q z7R8m7nQYYRUv{tPy<||S-rH-Fk|TG2535{N=eDe2{=$~MO}-P}e%P&Y(`RLd?fsjY zYoxR}riD6}XnkY$djCh^^vZe9-z#m*coycfcA3?B%|1@vSoV@9Ul!b{G76rMRC__^ zuJp+X3@;|dR@gKA+xd1jcU5k3gs#wUZU%=LGkztdq@+onVK88DXg*VIRB`+AnSJT$ zTMECNT(3~0de5bmS!nL!lJf`C{2n(Y|2taCqHh}hV8eq&5A&)UzglfS)9Z2RU`}*c z9P20LqT)#rj*%Ju^MZFJ|CfK&edMU3XWEHm8B34WsW*7aS)bkbZnHW0vurkhTomiN z-SKywcBzz3&T{I}HGA@>LzYeBbM#rMpd9`4hpIZ4uU~$&!c6;1V zQN9#tTzn(v~b0?w;g&W`zdwuf1zsf%Q|KE#Yd)IUA2Q2?M)=m^X zvET92VIj%CObjjY4J&6D8FK|jE@ODc#$ce3c0PKR{E1UjfDrop;k( zLM}vi*xRdf^A*i>%Vw8i_R?9S@uayx=~+N;_VvPGW!LgnC9cFr-x7XJ`M=q2$rk5w zk@d~It7YqFZRm~5)R-EOq#F7sZZl`J?(Fx^HMRO|mXtPWuZz^N@a|lC$WO=NdBl?H z62pea6K1XF-X+B7VfLS4%bR~OH!m{Ot(;@baYy0jp#sw{yXQDN*moHkEndXUV6bOy z%)MV}wKL61-%VzZliagC=I`uC|=1l&ik`_>M{_NX;-zR22 zzb&JZ&)cUkCDLoR;_?=I`xlxER?f{-M{VLi?-NPVLN>Dib!`crU~m z-?L8VZK~CUgqfZX8oI7#O}%$-^!7in5u*Vdz1*tuxJk~wC~tzS0juD`$d^sE5$Z}*H@7gal)ZtT4@@9|N? zi*rBat^CfjVCU=YvU9{YFPZ#x_2k70{in@W^*+{ikp9@d?5>7Em+5r>dhSh0+zHD6titzY|R zm(_gP<-fI$Iet1>KXcvBk3Y`bdGDNhx?yrdW$X9;71y5Z?Bl6D#6S0)oZ30olFGOH zC!W9bZL`^@}R8bNR5Y%EE7XJx_Xg`95CXey6nmdhp97 zN|u7p#Oj<%8Jyi8SWdb8qiR{{1fi1J4=2BTao*SeVAa-DX(2PN3mlsBZ2KnphK(w` QS&8oyXD>X-z(+0s051JRJOBUy literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_wool/init.lua b/mods/ITEMS/mcl_wool/init.lua index 912a6ccd..aabeb2e6 100644 --- a/mods/ITEMS/mcl_wool/init.lua +++ b/mods/ITEMS/mcl_wool/init.lua @@ -61,7 +61,7 @@ for _, row in ipairs(wool.dyes) do is_ground_content = false, tiles = {texture..".png"}, groups = {handy=1,shearsy_wool=1, flammable=1,wool=1,building_block=1}, - sounds = mcl_sounds.node_sound_defaults(), + sounds = mcl_sounds.node_sound_wool_defaults(), _mcl_hardness = 0.8, _mcl_blast_resistance = 4, }) @@ -77,7 +77,7 @@ for _, row in ipairs(wool.dyes) do wield_image = texture..".png", wield_scale = { x=1, y=1, z=0.5 }, groups = {handy=1, carpet=1,attached_node=1,dig_by_water=1,deco_block=1}, - sounds = mcl_sounds.node_sound_defaults(), + sounds = mcl_sounds.node_sound_wool_defaults(), paramtype = "light", sunlight_propagates = true, stack_max = 64, From d4facaf503335310d137d5cf4ac35ef20c364e5e Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Fri, 14 Jun 2019 23:03:12 +0200 Subject: [PATCH 259/737] Add wool sound for beds --- mods/ITEMS/mcl_beds/api.lua | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_beds/api.lua b/mods/ITEMS/mcl_beds/api.lua index 39a80e31..efc27b3e 100644 --- a/mods/ITEMS/mcl_beds/api.lua +++ b/mods/ITEMS/mcl_beds/api.lua @@ -48,7 +48,9 @@ end local default_sounds if minetest.get_modpath("mcl_sounds") then - default_sounds = mcl_sounds.node_sound_wood_defaults() + default_sounds = mcl_sounds.node_sound_wood_defaults({ + footstep = { gain = 0.5, name = "mcl_sounds_cloth" }, + }) end function mcl_beds.register_bed(name, def) From b1f201f5383ca98390eb2d0c07dcb8199fdbcb38 Mon Sep 17 00:00:00 2001 From: Rootyjr <41842051+Rootyjr@users.noreply.github.com> Date: Mon, 29 Jul 2019 00:13:16 -0500 Subject: [PATCH 260/737] Fix #530 (Players were stuck in sitting animation after being out of minecart). --- mods/ENTITIES/mcl_minecarts/init.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/mods/ENTITIES/mcl_minecarts/init.lua b/mods/ENTITIES/mcl_minecarts/init.lua index 0305dba2..2f9d6730 100644 --- a/mods/ENTITIES/mcl_minecarts/init.lua +++ b/mods/ENTITIES/mcl_minecarts/init.lua @@ -492,6 +492,7 @@ register_minecart( self._start_pos = nil clicker:set_detach() clicker:set_eye_offset({x=0, y=0, z=0},{x=0, y=0, z=0}) + mcl_player.player_set_animation(clicker, "stand" , 30) elseif not self._driver then self._driver = player_name self._start_pos = self.object:get_pos() From 1d5cdfe544ee0a7f777fd400a04edf19eaf9542a Mon Sep 17 00:00:00 2001 From: aligator Date: Wed, 31 Jul 2019 14:48:48 +0200 Subject: [PATCH 261/737] enable double doors (mirror) if left block is also a door of the same type --- mods/ITEMS/mcl_doors/api_doors.lua | 67 ++++++++++++++++++------------ 1 file changed, 41 insertions(+), 26 deletions(-) diff --git a/mods/ITEMS/mcl_doors/api_doors.lua b/mods/ITEMS/mcl_doors/api_doors.lua index e3e88279..1b32d238 100644 --- a/mods/ITEMS/mcl_doors/api_doors.lua +++ b/mods/ITEMS/mcl_doors/api_doors.lua @@ -123,21 +123,25 @@ function mcl_doors:register_door(name, def) return itemstack end + -- get left coordinate for checking if another door is there + local pt_left = {x=pt.x, y=pt.y, z=pt.z} local p2 = minetest.dir_to_facedir(placer:get_look_dir()) - local pt3 = {x=pt.x, y=pt.y, z=pt.z} + if p2 == 0 then - pt3.x = pt3.x-1 + pt_left.x = pt_left.x-1 elseif p2 == 1 then - pt3.z = pt3.z+1 + pt_left.z = pt_left.z+1 elseif p2 == 2 then - pt3.x = pt3.x+1 + pt_left.x = pt_left.x+1 elseif p2 == 3 then - pt3.z = pt3.z-1 + pt_left.z = pt_left.z-1 end + + local left_node = minetest.get_node(pt_left) + -- Set door nodes minetest.set_node(pt, {name=name.."_b_1", param2=p2}) minetest.set_node(pt2, {name=name.."_t_1", param2=p2}) - -- TODO: Mirror door when 2 doors are placed next to each other, to create double doors if def.sounds and def.sounds.place then minetest.sound_play(def.sounds.place, {pos=pt}) @@ -150,12 +154,19 @@ function mcl_doors:register_door(name, def) meta:set_string("doors_owner", "") end - -- Save open state. 1 = open. 0 = closed - local meta = minetest.get_meta(pt) - meta:set_int("is_open", 0) - meta = minetest.get_meta(pt2) - meta:set_int("is_open", 0) + local meta1 = minetest.get_meta(pt) + local meta2 = minetest.get_meta(pt2) + -- save mirror state for the correct door + if left_node.name:sub(1, #name) == name then + meta1:set_int("is_mirrored", 1) + meta2:set_int("is_mirrored", 1) + end + -- Save open state. 1 = open. 0 = closed + meta1:set_int("is_open", 0) + meta2:set_int("is_open", 0) + + if not minetest.settings:get_bool("creative_mode") then itemstack:take_item() end @@ -170,24 +181,28 @@ function mcl_doors:register_door(name, def) local tt = def.tiles_top local tb = def.tiles_bottom - local function on_open_close(pos, dir, check_name, replace, replace_dir, params) + local function on_open_close(pos, dir, check_name, replace, replace_dir) local meta1 = minetest.get_meta(pos) pos.y = pos.y+dir local meta2 = minetest.get_meta(pos) - if not minetest.get_node(pos).name == check_name then + + -- if name of other door is not the same as check_name -> return + if not minetest.get_node(pos).name == check_name then return end + + -- swap directions if mirrored + local params = {3,0,1,2} + if meta1:get_int("is_open") == 0 and meta2:get_int("is_mirrored") == 0 or meta1:get_int("is_open") == 1 and meta2:get_int("is_mirrored") == 1 then + params = {1,2,3,0} + end + local p2 = minetest.get_node(pos).param2 local np2 = params[p2+1] - local metatable = minetest.get_meta(pos):to_table() - minetest.set_node(pos, {name=replace_dir, param2=np2}) - minetest.get_meta(pos):from_table(metatable) - + minetest.swap_node(pos, {name=replace_dir, param2=np2}) pos.y = pos.y-dir - metatable = minetest.get_meta(pos):to_table() - minetest.set_node(pos, {name=replace, param2=np2}) - minetest.get_meta(pos):from_table(metatable) + minetest.swap_node(pos, {name=replace, param2=np2}) local door_switching_sound if meta1:get_int("is_open") == 1 then @@ -203,11 +218,11 @@ function mcl_doors:register_door(name, def) end local function on_mesecons_signal_open(pos, node) - on_open_close(pos, 1, name.."_t_1", name.."_b_2", name.."_t_2", {1,2,3,0}) + on_open_close(pos, 1, name.."_t_1", name.."_b_2", name.."_t_2") end local function on_mesecons_signal_close(pos, node) if not mesecon.is_powered({x=pos.x,y=pos.y+1,z=pos.z}) then - on_open_close(pos, 1, name.."_t_2", name.."_b_1", name.."_t_1", {3,0,1,2}) + on_open_close(pos, 1, name.."_t_2", name.."_b_1", name.."_t_1") end end local function on_mesecons_signal_open_top(pos, node) @@ -233,7 +248,7 @@ function mcl_doors:register_door(name, def) if not def.only_redstone_can_open then on_rightclick = function(pos, node, clicker) if check_player_priv(pos, clicker) then - on_open_close(pos, 1, name.."_t_1", name.."_b_2", name.."_t_2", {1,2,3,0}) + on_open_close(pos, 1, name.."_t_1", name.."_b_2", name.."_t_2") end end end @@ -282,7 +297,7 @@ function mcl_doors:register_door(name, def) else on_rightclick = function(pos, node, clicker) if check_player_priv(pos, clicker) then - on_open_close(pos, -1, name.."_b_1", name.."_t_2", name.."_b_2", {1,2,3,0}) + on_open_close(pos, -1, name.."_b_1", name.."_t_2", name.."_b_2") end end end @@ -331,7 +346,7 @@ function mcl_doors:register_door(name, def) else on_rightclick = function(pos, node, clicker) if check_player_priv(pos, clicker) then - on_open_close(pos, 1, name.."_t_2", name.."_b_1", name.."_t_1", {3,0,1,2}) + on_open_close(pos, 1, name.."_t_2", name.."_b_1", name.."_t_1") end end end @@ -380,7 +395,7 @@ function mcl_doors:register_door(name, def) else on_rightclick = function(pos, node, clicker) if check_player_priv(pos, clicker) then - on_open_close(pos, -1, name.."_b_2", name.."_t_1", name.."_b_1", {3,0,1,2}) + on_open_close(pos, -1, name.."_b_2", name.."_t_1", name.."_b_1") end end end From 839d74329cb564be33a8a717412b7a3f7c043389 Mon Sep 17 00:00:00 2001 From: Rootyjr <41842051+Rootyjr@users.noreply.github.com> Date: Wed, 31 Jul 2019 11:14:11 -0500 Subject: [PATCH 262/737] Fix #534.3 (Dyeing a sheep did not remove the dye from inventory.) --- mods/ENTITIES/mobs_mc/sheep.lua | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/mods/ENTITIES/mobs_mc/sheep.lua b/mods/ENTITIES/mobs_mc/sheep.lua index bf321bcc..2f069f85 100644 --- a/mods/ENTITIES/mobs_mc/sheep.lua +++ b/mods/ENTITIES/mobs_mc/sheep.lua @@ -185,6 +185,10 @@ mobs:register_mob("mobs_mc:sheep", { minetest.log("verbose", "[mobs_mc] " ..item:get_name() .. " " .. minetest.get_item_group(item:get_name(), "dye")) for group, colordata in pairs(colors) do if minetest.get_item_group(item:get_name(), group) == 1 then + if not minetest.settings:get_bool("creative_mode") then + item:take_item() + clicker:set_wielded_item(item) + end self.base_texture = sheep_texture(group) self.object:set_properties({ textures = self.base_texture, From 379dd847eedc1c93a28be53ca4a6c1504cc2382e Mon Sep 17 00:00:00 2001 From: Rootyjr <41842051+Rootyjr@users.noreply.github.com> Date: Tue, 30 Jul 2019 21:22:28 -0500 Subject: [PATCH 263/737] Completely rework fishing rod to simulate a much more MC-like behaviour --- mods/ITEMS/mcl_fishing/init.lua | 309 +++++++++++++++++- .../textures/mcl_fishing_bobber.png | Bin 0 -> 2281 bytes .../textures/mcl_fishing_fishing_rod.png | Bin 299 -> 2397 bytes mods/ITEMS/mcl_throwing/init.lua | 45 +++ 4 files changed, 342 insertions(+), 12 deletions(-) create mode 100644 mods/ITEMS/mcl_fishing/textures/mcl_fishing_bobber.png diff --git a/mods/ITEMS/mcl_fishing/init.lua b/mods/ITEMS/mcl_fishing/init.lua index 0c23daae..0d34779d 100644 --- a/mods/ITEMS/mcl_fishing/init.lua +++ b/mods/ITEMS/mcl_fishing/init.lua @@ -1,4 +1,9 @@ local S = minetest.get_translator("mcl_fishing") +local mod_throwing = minetest.get_modpath("mcl_throwing") + +local entity_mapping = { + ["mcl_fishing:bobber"] = "mcl_fishing:bobber_entity", +} local go_fishing = function(itemstack, user, pointed_thing) if pointed_thing and pointed_thing.under then @@ -83,26 +88,308 @@ local go_fishing = function(itemstack, user, pointed_thing) return nil end +local bobber_ENTITY={ + physical = false, + timer=0, + textures = {"mcl_fishing_bobber.png"}, + visual_size = {x=0.5, y=0.5}, + collisionbox = {0.45,0.45,0.45,0.45,0.45,0.45}, + pointable = false, + + get_staticdata = get_staticdata, + on_activate = on_activate, + + _lastpos={}, + _dive = false, + _waittick = nil, + _tick = 0, + player=nil, + _oldy = nil, + objtype="fishing", +} + +local fish = function(itemstack, player) + local pos = player:get_pos() + + local objs = minetest.get_objects_inside_radius(pos, 250) + local num = 0 + local ent = nil + local noent = true + + --Check for bobber if so handle. + for n = 1, #objs do + ent = objs[n]:get_luaentity() + if ent then + if ent.player and ent.objtype=="fishing" then + if (player:get_player_name() == ent.player) then + noent = false + if ent._dive == true then + local itemname + local itemcount = 1 + local itemwear = 0 + -- FIXME: Maybe use a better seeding + local pr = PseudoRandom(os.time() * math.random(1, 100)) + local r = pr:next(1, 100) + if r <= 85 then + -- Fish + items = mcl_loot.get_loot({ + items = { + { itemstring = "mcl_fishing:fish_raw", weight = 60 }, + { itemstring = "mcl_fishing:salmon_raw", weight = 25 }, + { itemstring = "mcl_fishing:clownfish_raw", weight = 2 }, + { itemstring = "mcl_fishing:pufferfish_raw", weight = 13 }, + } + }, pr) + elseif r <= 95 then + -- Junk + items = mcl_loot.get_loot({ + items = { + { itemstring = "mcl_core:bowl", weight = 10 }, + { itemstring = "mcl_fishing:fishing_rod", weight = 2, wear_min = 6554, wear_max = 65535 }, -- 10%-100% damage + { itemstring = "mcl_mobitems:leather", weight = 10 }, + { itemstring = "3d_armor:boots_leather", weight = 10, wear_min = 6554, wear_max = 65535 }, -- 10%-100% damage + { itemstring = "mcl_mobitems:rotten_flesh", weight = 10 }, + { itemstring = "mcl_core:stick", weight = 5 }, + { itemstring = "mcl_mobitems:string", weight = 5 }, + { itemstring = "mcl_potions:potion_water", weight = 10 }, + { itemstring = "mcl_mobitems:bone", weight = 10 }, + { itemstring = "mcl_dye:black", weight = 1, amount_min = 10, amount_max = 10 }, + { itemstring = "mcl_mobitems:string", weight = 10 }, -- TODO: Tripwire Hook + } + }, pr) + else + -- Treasure + items = mcl_loot.get_loot({ + items = { + -- TODO: Enchanted Bow + { itemstring = "mcl_bows:bow", wear_min = 49144, wear_max = 65535 }, -- 75%-100% damage + -- TODO: Enchanted Book + { itemstring = "mcl_books:book" }, + -- TODO: Enchanted Fishing Rod + { itemstring = "mcl_fishing:fishing_rod", wear_min = 49144, wear_max = 65535 }, -- 75%-100% damage + { itemstring = "mcl_mobs:nametag", }, + { itemstring = "mcl_mobitems:saddle", }, + { itemstring = "mcl_flowers:waterlily", }, + } + }, pr) + end + local item + if #items >= 1 then + item = ItemStack(items[1]) + else + item = ItemStack() + end + local inv = player:get_inventory() + if inv:room_for_item("main", item) then + inv:add_item("main", item) + end + if not minetest.settings:get_bool("creative_mode") then + local idef = itemstack:get_definition() + itemstack:add_wear(65535/65) -- 65 uses + if itemstack:get_count() == 0 and idef.sound and idef.sound.breaks then + minetest.sound_play(idef.sound.breaks, {pos=player.get_pos(), gain=0.5}) + end + end + end + --Check if object is on land. + local epos = ent.object:get_pos() + epos.y = math.floor(epos.y) + local node = minetest.get_node(epos) + local def = minetest.registered_nodes[node.name] + if def.walkable then + if not minetest.settings:get_bool("creative_mode") then + local idef = itemstack:get_definition() + itemstack:add_wear((65535/65)*2) -- if so and not creative then wear double like in MC. + if itemstack:get_count() == 0 and idef.sound and idef.sound.breaks then + minetest.sound_play(idef.sound.breaks, {pos=player.get_pos(), gain=0.5}) + end + end + end + --Destroy bobber. + ent.object:remove() + return itemstack + end + end + end + end + --Check for flying bobber. + for n = 1, #objs do + ent = objs[n]:get_luaentity() + if ent then + if ent._thrower and ent.objtype=="fishing" then + if player:get_player_name() == ent._thrower then + noent = false + break + end + end + end + end + --If no bobber or flying_bobber exists then throw bobber. + if noent == true then + local playerpos = player:get_pos() + local dir = player:get_look_dir() + local obj = mcl_throwing.throw("mcl_throwing:flying_bobber", {x=playerpos.x, y=playerpos.y+1.5, z=playerpos.z}, dir, 15) + obj:get_luaentity()._thrower = player:get_player_name() + end +end + +-- Movement function of bobber +local bobber_on_step = function(self, dtime) + self.timer=self.timer+dtime + local epos = self.object:get_pos() + epos.y = math.floor(epos.y) + local node = minetest.get_node(epos) + local def = minetest.registered_nodes[node.name] + + --If we have no player remove self. + if self.player == nil then + self.object:remove() + end + + --Check if player is nearby + if self._tick % 5 == 0 and self.player ~= nil then + --Destroy bobber if item not wielded. + if (minetest.get_player_by_name(self.player):get_wielded_item():get_name() ~= "mcl_fishing:fishing_rod") then + self.object:remove() + end + + --Destroy bobber if player is too far away. + local objpos = self.object:get_pos() + local playerpos = minetest.get_player_by_name(self.player):get_pos() + if (((playerpos.y - objpos.y) >= 33) or ((playerpos.y - objpos.y) <= -33)) then + self.object:remove() + elseif (((playerpos.x - objpos.x) >= 33) or ((playerpos.x - objpos.x) <= -33)) then + self.object:remove() + elseif (((playerpos.z - objpos.z) >= 33) or ((playerpos.z - objpos.z) <= -33)) then + self.object:remove() + elseif ((((playerpos.z + playerpos.x) - (objpos.z + objpos.x)) >= 33) or ((playerpos.z + playerpos.x) - (objpos.z + objpos.x)) <= -33) then + self.object:remove() + elseif ((((playerpos.y + playerpos.x) - (objpos.y + objpos.x)) >= 33) or ((playerpos.y + playerpos.x) - (objpos.y + objpos.x)) <= -33) then + self.object:remove() + elseif ((((playerpos.z + playerpos.y) - (objpos.z + objpos.y)) >= 33) or ((playerpos.z + playerpos.y) - (objpos.z + objpos.y)) <= -33) then + self.object:remove() + end + + end + --if in liquid then bob. + if def.liquidtype == "source" then + if self._oldy == nil then + self.object:set_pos({x=self.object:get_pos().x,y=math.floor(self.object:get_pos().y)+.5,z=self.object:get_pos().z}) + self._oldy = self.object:get_pos().y + end + minetest.log(self.object:get_pos().y.." "..self._oldy) + -- reset to original position after dive. + if self.object:get_pos().y > self._oldy then + self.object:set_pos({x=self.object:get_pos().x,y=self._oldy,z=self.object:get_pos().z}) + self.object:set_velocity({x=0,y=0,z=0}) + self.object:set_acceleration({x=0,y=0,z=0}) + end + if self._dive then + for i=1,2 do + --spray bubbles there's a fish. + minetest.add_particle({ + pos = {x=epos["x"]+math.random(-1,1)*math.random()/2,y=epos["y"]+0.1,z=epos["z"]+math.random(-1,1)*math.random()/2}, + velocity = {x=0, y=4, z=0}, + acceleration = {x=0, y=-5, z=0}, + expirationtime = math.random(), + size = math.random()+0.5, + collisiondetection = true, + vertical = false, + texture = "mcl_particles_bubble.png", + }) + end + if self._tick ~= self._waittick then + self._tick = self._tick + 1 + else + self._waittick = nil + self._tick = 0 + self._dive = false + end + else if self._waittick == nil then + --wait for random number of ticks. + self._waittick = math.random(50,800) + else + if self._tick ~= self._waittick then + self._tick = self._tick + 1 + else + --wait time is over time to dive. + self._dive = true + self.object:set_velocity({x=0,y=-2,z=0}) + self.object:set_acceleration({x=0,y=5,z=0}) + self._waittick = 30 + self._tick = 0 + end + end + end +end + + -- Destroy when hitting a solid node + --if self._lastpos.x~=nil then + -- if (def and def.walkable) or not def then + --self.object:remove() + -- return + -- end + --end + --self._lastpos={x=pos.x, y=pos.y, z=pos.z} -- Set lastpos-->Node will be added at last pos outside the node +end + +bobber_ENTITY.on_step = bobber_on_step + +minetest.register_entity("mcl_fishing:bobber_entity", bobber_ENTITY) + +--If player leaves area remove bobber. +minetest.register_on_leaveplayer(function(player) + local objs = minetest.get_objects_inside_radius(player:get_pos(), 250) + local num = 0 + local ent = nil + local noent = true + + for n = 1, #objs do + ent = objs[n]:get_luaentity() + if ent then + if ent.player and ent.objtype=="fishing" then + ent.object:remove() + elseif ent._thrower and ent.objtype=="fishing" then + ent.object:remove() + end + end + end +end) + +--if player dies remove bobber. +minetest.register_on_dieplayer(function(player) + local objs = minetest.get_objects_inside_radius(player:get_pos(), 250) + local num = 0 + local ent = nil + local noent = true + + for n = 1, #objs do + ent = objs[n]:get_luaentity() + if ent then + if ent.player and ent.objtype=="fishing" then + ent.object:remove() + elseif ent._thrower and ent.objtype=="fishing" then + ent.object:remove() + end + end + end +end) + -- Fishing Rod minetest.register_tool("mcl_fishing:fishing_rod", { description = S("Fishing Rod"), _doc_items_longdesc = S("Fishing rods can be used to catch fish."), - _doc_items_usagehelp = S("Rightclick a water source to try to go fishing. Who knows what you're going to catch?"), + _doc_items_usagehelp = S("Rightclick to launch the bobber. When it sinks right-click again to reel in an item. Who knows what you're going to catch?"), -- This item is incomplete, hide it from creative inventory - groups = { tool=1, not_in_creative_inventory=1 }, + groups = { tool=1}, inventory_image = "mcl_fishing_fishing_rod.png", stack_max = 1, - liquids_pointable = true, - on_place = go_fishing, + on_place = fish, + on_secondary_use = fish, sound = { breaks = "default_tool_breaks" }, }) ---[[ - -Temporarily removed from crafting as the fishing rod is massively overpowered atm. - -TODO: Re-enable crafting when fishing rod has been improved. - +--Make fishing rods craftable again. minetest.register_craft({ output = "mcl_fishing:fishing_rod", recipe = { @@ -119,8 +406,6 @@ minetest.register_craft({ {'mcl_mobitems:string','','mcl_core:stick'}, } }) -]] - minetest.register_craft({ type = "fuel", recipe = "mcl_fishing:fishing_rod", diff --git a/mods/ITEMS/mcl_fishing/textures/mcl_fishing_bobber.png b/mods/ITEMS/mcl_fishing/textures/mcl_fishing_bobber.png new file mode 100644 index 0000000000000000000000000000000000000000..0c93fd4f9009a8d22f4cee482f1f6ed2a425b57a GIT binary patch literal 2281 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 hq56J~g*3yOKV^@M called when snowball is moving. local snowball_on_step = function(self, dtime) self.timer=self.timer+dtime @@ -284,13 +303,39 @@ local pearl_on_step = function(self, dtime) self._lastpos={x=pos.x, y=pos.y, z=pos.z} -- Set lastpos-->Node will be added at last pos outside the node end +-- Movement function of flying bobber +local flying_bobber_on_step = function(self, dtime) + self.timer=self.timer+dtime + local pos = self.object:get_pos() + local node = minetest.get_node(pos) + local def = minetest.registered_nodes[node.name] + --local player = minetest.get_player_by_name(self._thrower) + + -- Destroy when hitting a solid node + if self._lastpos.x~=nil then + if (def and (def.walkable or def.liquidtype == "flowing" or def.liquidtype == "source")) or not def then + local make_child= function(object) + local ent = object:get_luaentity() + ent.player = self._thrower + ent.child = true + end + make_child(minetest.add_entity(self._lastpos, "mcl_fishing:bobber_entity")) + self.object:remove() + return + end + end + self._lastpos={x=pos.x, y=pos.y, z=pos.z} -- Set lastpos-->Node will be added at last pos outside the node +end + snowball_ENTITY.on_step = snowball_on_step egg_ENTITY.on_step = egg_on_step pearl_ENTITY.on_step = pearl_on_step +flying_bobber_ENTITY.on_step = flying_bobber_on_step minetest.register_entity("mcl_throwing:snowball_entity", snowball_ENTITY) minetest.register_entity("mcl_throwing:egg_entity", egg_ENTITY) minetest.register_entity("mcl_throwing:ender_pearl_entity", pearl_ENTITY) +minetest.register_entity("mcl_throwing:flying_bobber_entity", flying_bobber_ENTITY) local how_to_throw = S("Use the punch key to throw.") From 3da1c551a1d9c3515914d56771051503b2a70ea7 Mon Sep 17 00:00:00 2001 From: Rootyjr <41842051+Rootyjr@users.noreply.github.com> Date: Tue, 30 Jul 2019 22:24:27 -0500 Subject: [PATCH 264/737] Remove WIP and update descriptions. --- mods/ITEMS/mcl_fishing/depends.txt | 1 + mods/ITEMS/mcl_fishing/locale/template.txt | 2 +- mods/ITEMS/mcl_mobitems/init.lua | 3 --- mods/ITEMS/mcl_throwing/depends.txt | 1 + mods/MISC/mcl_wip/init.lua | 1 - 5 files changed, 3 insertions(+), 5 deletions(-) diff --git a/mods/ITEMS/mcl_fishing/depends.txt b/mods/ITEMS/mcl_fishing/depends.txt index 93ef0bf5..1fd904fe 100644 --- a/mods/ITEMS/mcl_fishing/depends.txt +++ b/mods/ITEMS/mcl_fishing/depends.txt @@ -2,3 +2,4 @@ mcl_core mcl_sounds mcl_loot mcl_mobs +mcl_throwing diff --git a/mods/ITEMS/mcl_fishing/locale/template.txt b/mods/ITEMS/mcl_fishing/locale/template.txt index c958e0b4..d2bac980 100644 --- a/mods/ITEMS/mcl_fishing/locale/template.txt +++ b/mods/ITEMS/mcl_fishing/locale/template.txt @@ -1,7 +1,7 @@ # textdomain: mcl_fishing Fishing Rod= Fishing rods can be used to catch fish.= -Rightclick a water source to try to go fishing. Who knows what you're going to catch?= +Rightclick to launch the bobber. When it sinks right-click again to reel in an item. Who knows what you're going to catch?= Raw Fish= Raw fish is obtained by fishing and is a food item which can be eaten safely. Cooking it improves its nutritional value.= Cooked Fish= diff --git a/mods/ITEMS/mcl_mobitems/init.lua b/mods/ITEMS/mcl_mobitems/init.lua index f2504311..8a670766 100644 --- a/mods/ITEMS/mcl_mobitems/init.lua +++ b/mods/ITEMS/mcl_mobitems/init.lua @@ -359,8 +359,6 @@ minetest.register_craft({ }, }) ---[[ -TODO: Re-enable this when fishing rod is available again minetest.register_craft({ output = "mcl_mobitems:carrot_on_a_stick", recipe = { @@ -376,7 +374,6 @@ minetest.register_craft({ { "mcl_farming:carrot_item", "" }, }, }) -]] minetest.register_craft({ type = "shapeless", diff --git a/mods/ITEMS/mcl_throwing/depends.txt b/mods/ITEMS/mcl_throwing/depends.txt index faf0d2d4..2787220e 100644 --- a/mods/ITEMS/mcl_throwing/depends.txt +++ b/mods/ITEMS/mcl_throwing/depends.txt @@ -1,3 +1,4 @@ mcl_core? mcl_mobitems? doc? +mcl_fishing diff --git a/mods/MISC/mcl_wip/init.lua b/mods/MISC/mcl_wip/init.lua index 0b042e21..4f8f0a56 100644 --- a/mods/MISC/mcl_wip/init.lua +++ b/mods/MISC/mcl_wip/init.lua @@ -3,7 +3,6 @@ local S = minetest.get_translator("mcl_wip") local wip_items = { - "mcl_fishing:fishing_rod", "mcl_maps:empty_map", "mcl_comparators:comparator_off_comp", "mcl_minecarts:hopper_minecart", From c50958a6407555471d2c8030fd64dfac4d004dc0 Mon Sep 17 00:00:00 2001 From: Rootyjr <41842051+Rootyjr@users.noreply.github.com> Date: Tue, 30 Jul 2019 22:39:07 -0500 Subject: [PATCH 265/737] Fix fishing depends.txt --- mods/ITEMS/mcl_fishing/depends.txt | 1 - 1 file changed, 1 deletion(-) diff --git a/mods/ITEMS/mcl_fishing/depends.txt b/mods/ITEMS/mcl_fishing/depends.txt index 1fd904fe..93ef0bf5 100644 --- a/mods/ITEMS/mcl_fishing/depends.txt +++ b/mods/ITEMS/mcl_fishing/depends.txt @@ -2,4 +2,3 @@ mcl_core mcl_sounds mcl_loot mcl_mobs -mcl_throwing From 48b73f5f2e11c73be39655c79fd7667a138bf65c Mon Sep 17 00:00:00 2001 From: Rootyjr <41842051+Rootyjr@users.noreply.github.com> Date: Tue, 30 Jul 2019 22:47:40 -0500 Subject: [PATCH 266/737] Add self-credit. --- mods/ITEMS/mcl_fishing/init.lua | 85 +-------------------------------- 1 file changed, 2 insertions(+), 83 deletions(-) diff --git a/mods/ITEMS/mcl_fishing/init.lua b/mods/ITEMS/mcl_fishing/init.lua index 0d34779d..65c2590e 100644 --- a/mods/ITEMS/mcl_fishing/init.lua +++ b/mods/ITEMS/mcl_fishing/init.lua @@ -1,3 +1,5 @@ +--Fishing Rod, Bobber, and Flying Bobber mechanics and Bobber artwork by Rootyjr. + local S = minetest.get_translator("mcl_fishing") local mod_throwing = minetest.get_modpath("mcl_throwing") @@ -5,89 +7,6 @@ local entity_mapping = { ["mcl_fishing:bobber"] = "mcl_fishing:bobber_entity", } -local go_fishing = function(itemstack, user, pointed_thing) - if pointed_thing and pointed_thing.under then - -- Use pointed node's on_rightclick function first, if present - local node = minetest.get_node(pointed_thing.under) - if user and not user:get_player_control().sneak then - if minetest.registered_nodes[node.name] and minetest.registered_nodes[node.name].on_rightclick then - return minetest.registered_nodes[node.name].on_rightclick(pointed_thing.under, node, user, itemstack) or itemstack - end - end - - if string.find(node.name, "mcl_core:water") then - local itemname - local itemcount = 1 - local itemwear = 0 - -- FIXME: Maybe use a better seeding - local pr = PseudoRandom(os.time() * math.random(1, 100)) - local r = pr:next(1, 100) - if r <= 85 then - -- Fish - items = mcl_loot.get_loot({ - items = { - { itemstring = "mcl_fishing:fish_raw", weight = 60 }, - { itemstring = "mcl_fishing:salmon_raw", weight = 25 }, - { itemstring = "mcl_fishing:clownfish_raw", weight = 2 }, - { itemstring = "mcl_fishing:pufferfish_raw", weight = 13 }, - } - }, pr) - elseif r <= 95 then - -- Junk - items = mcl_loot.get_loot({ - items = { - { itemstring = "mcl_core:bowl", weight = 10 }, - { itemstring = "mcl_fishing:fishing_rod", weight = 2, wear_min = 6554, wear_max = 65535 }, -- 10%-100% damage - { itemstring = "mcl_mobitems:leather", weight = 10 }, - { itemstring = "3d_armor:boots_leather", weight = 10, wear_min = 6554, wear_max = 65535 }, -- 10%-100% damage - { itemstring = "mcl_mobitems:rotten_flesh", weight = 10 }, - { itemstring = "mcl_core:stick", weight = 5 }, - { itemstring = "mcl_mobitems:string", weight = 5 }, - { itemstring = "mcl_potions:potion_water", weight = 10 }, - { itemstring = "mcl_mobitems:bone", weight = 10 }, - { itemstring = "mcl_dye:black", weight = 1, amount_min = 10, amount_max = 10 }, - { itemstring = "mcl_mobitems:string", weight = 10 }, -- TODO: Tripwire Hook - } - }, pr) - else - -- Treasure - items = mcl_loot.get_loot({ - items = { - -- TODO: Enchanted Bow - { itemstring = "mcl_bows:bow", wear_min = 49144, wear_max = 65535 }, -- 75%-100% damage - -- TODO: Enchanted Book - { itemstring = "mcl_books:book" }, - -- TODO: Enchanted Fishing Rod - { itemstring = "mcl_fishing:fishing_rod", wear_min = 49144, wear_max = 65535 }, -- 75%-100% damage - { itemstring = "mcl_mobs:nametag", }, - { itemstring = "mcl_mobitems:saddle", }, - { itemstring = "mcl_flowers:waterlily", }, - } - }, pr) - end - local item - if #items >= 1 then - item = ItemStack(items[1]) - else - item = ItemStack() - end - local inv = user:get_inventory() - if inv:room_for_item("main", item) then - inv:add_item("main", item) - end - if not minetest.settings:get_bool("creative_mode") then - local idef = itemstack:get_definition() - itemstack:add_wear(65535/65) -- 65 uses - if itemstack:get_count() == 0 and idef.sound and idef.sound.breaks then - minetest.sound_play(idef.sound.breaks, {pos=pointed_thing.above, gain=0.5}) - end - end - return itemstack - end - end - return nil -end - local bobber_ENTITY={ physical = false, timer=0, From 37af2dbba1b89945bce2ca51b923c65784924141 Mon Sep 17 00:00:00 2001 From: Rootyjr <41842051+Rootyjr@users.noreply.github.com> Date: Wed, 31 Jul 2019 22:34:53 -0500 Subject: [PATCH 267/737] Fix fishing allowed in lava. --- mods/ITEMS/mcl_fishing/init.lua | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mods/ITEMS/mcl_fishing/init.lua b/mods/ITEMS/mcl_fishing/init.lua index 65c2590e..6b5554f1 100644 --- a/mods/ITEMS/mcl_fishing/init.lua +++ b/mods/ITEMS/mcl_fishing/init.lua @@ -15,8 +15,8 @@ local bobber_ENTITY={ collisionbox = {0.45,0.45,0.45,0.45,0.45,0.45}, pointable = false, - get_staticdata = get_staticdata, - on_activate = on_activate, + --get_staticdata = get_staticdata, + --on_activate = on_activate, _lastpos={}, _dive = false, @@ -191,7 +191,7 @@ local bobber_on_step = function(self, dtime) end --if in liquid then bob. - if def.liquidtype == "source" then + if def.liquidtype == "source" and def.name == "mcl_core:water" then if self._oldy == nil then self.object:set_pos({x=self.object:get_pos().x,y=math.floor(self.object:get_pos().y)+.5,z=self.object:get_pos().z}) self._oldy = self.object:get_pos().y From 58d9fb874d96c1d0be599cf27f61324634189dc2 Mon Sep 17 00:00:00 2001 From: Rootyjr <41842051+Rootyjr@users.noreply.github.com> Date: Thu, 1 Aug 2019 01:18:53 -0500 Subject: [PATCH 268/737] Mobs now flash red when hurt. --- mods/ENTITIES/mcl_mobs/api.lua | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/mods/ENTITIES/mcl_mobs/api.lua b/mods/ENTITIES/mcl_mobs/api.lua index b7a8e22f..fc128885 100644 --- a/mods/ENTITIES/mcl_mobs/api.lua +++ b/mods/ENTITIES/mcl_mobs/api.lua @@ -453,8 +453,14 @@ local check_for_death = function(self, cause, cmi_cause) self.health = self.hp_max end - -- play damage sound if health was reduced + -- play damage sound if health was reduced and make mob flash red. if damaged then + self.object:set_texture_mod("^[colorize:#FF000040") + minetest.after(.2, function() + if self then + self.object:set_texture_mod("") + end + end) mob_sound(self, self.sounds.damage) end From d11b089baca4005f8ff3941c2d00e257d43a4b68 Mon Sep 17 00:00:00 2001 From: Rootyjr <41842051+Rootyjr@users.noreply.github.com> Date: Fri, 2 Aug 2019 14:38:00 -0500 Subject: [PATCH 269/737] Split search distance in half. --- mods/ITEMS/mcl_fishing/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_fishing/init.lua b/mods/ITEMS/mcl_fishing/init.lua index 6b5554f1..c27012f3 100644 --- a/mods/ITEMS/mcl_fishing/init.lua +++ b/mods/ITEMS/mcl_fishing/init.lua @@ -30,7 +30,7 @@ local bobber_ENTITY={ local fish = function(itemstack, player) local pos = player:get_pos() - local objs = minetest.get_objects_inside_radius(pos, 250) + local objs = minetest.get_objects_inside_radius(pos, 125) local num = 0 local ent = nil local noent = true From a765d3dd4f37b74d4a3619384e8f5ada3870b27c Mon Sep 17 00:00:00 2001 From: Rootyjr <41842051+Rootyjr@users.noreply.github.com> Date: Sat, 3 Aug 2019 21:34:33 -0500 Subject: [PATCH 270/737] Update init.lua --- mods/ITEMS/mcl_fishing/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_fishing/init.lua b/mods/ITEMS/mcl_fishing/init.lua index c27012f3..c5e351e4 100644 --- a/mods/ITEMS/mcl_fishing/init.lua +++ b/mods/ITEMS/mcl_fishing/init.lua @@ -191,7 +191,7 @@ local bobber_on_step = function(self, dtime) end --if in liquid then bob. - if def.liquidtype == "source" and def.name == "mcl_core:water" then + if def.liquidtype == "source" and def.name == "mcl_core:water_source" then if self._oldy == nil then self.object:set_pos({x=self.object:get_pos().x,y=math.floor(self.object:get_pos().y)+.5,z=self.object:get_pos().z}) self._oldy = self.object:get_pos().y From 248a6357498471878236aea07b6e9dc4427cb4f0 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Thu, 15 Aug 2019 02:45:35 +0200 Subject: [PATCH 271/737] =?UTF-8?q?Fix=20typo:=20daredevils=20=E2=86=92=20?= =?UTF-8?q?davedevils?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index f3c3b898..6c2e2a59 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ # MineClone 2 -An unofficial Minecraft-like game for Minetest. Forked from MineClone by daredevils. +An unofficial Minecraft-like game for Minetest. Forked from MineClone by davedevils. Developed by Wuzzy and contributors. Not developed or endorsed by Mojang AB. Version: 0.53.3 @@ -198,7 +198,7 @@ There are so many people to list (sorry). Check out the respective mod directori ### Coding * [Wuzzy](https://forum.minetest.net/memberlist.php?mode=viewprofile&u=3082): Main programmer of most mods -* daredevils: Creator of MineClone on which MineClone 2 is based on +* davedevils: Creator of MineClone on which MineClone 2 is based on * [ex-bart](https://github.com/ex-bart): Redstone comparators * Lots of other people: TO BE WRITTEN (see mod directories for details) @@ -219,7 +219,7 @@ Various sources. See the respective mod directories for details. ### Special thanks -* daredevils for starting MineClone, the original version of this game +* davedevils for starting MineClone, the original version of this game * celeron55 for creating Minetest * Minetest's modding community for providing a huge selection of mods, some of which ended up in MineClone 2 * Jordach for the jukebox music compilation from Big Freaking Dig @@ -242,10 +242,10 @@ Here's the detailed legalese for those who need it: ### License of source code MineClone 2 is a clean-room implementation of Minecraft and licensed under the -GNU LGPL v2.1 (Wuzzy, daredevils and countless others) (see `LICENSE.txt`). +GNU LGPL v2.1 (Wuzzy, davedevils and countless others) (see `LICENSE.txt`). MineClone 2 is a direct continuation of the discontinued MineClone -project by daredevils which fell under the same license. +project by davedevils which fell under the same license. Mods credit: See `README.txt` or `README.md` in each mod directory for information about other authors. From ce7015bb35d1941eb359bb157509f98de700638e Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 27 Aug 2019 03:34:13 +0200 Subject: [PATCH 272/737] Remove TNT sounds --- mods/ITEMS/mcl_tnt/sounds/tnt_explode.ogg | Bin 12808 -> 0 bytes mods/ITEMS/mcl_tnt/sounds/tnt_ignite.ogg | Bin 29271 -> 0 bytes 2 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 mods/ITEMS/mcl_tnt/sounds/tnt_explode.ogg delete mode 100644 mods/ITEMS/mcl_tnt/sounds/tnt_ignite.ogg diff --git a/mods/ITEMS/mcl_tnt/sounds/tnt_explode.ogg b/mods/ITEMS/mcl_tnt/sounds/tnt_explode.ogg deleted file mode 100644 index a414ea046bf76298f6f1406d574f15741c515248..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12808 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 diff --git a/mods/ITEMS/mcl_tnt/sounds/tnt_ignite.ogg b/mods/ITEMS/mcl_tnt/sounds/tnt_ignite.ogg deleted file mode 100644 index 199f20674da82970f6c33acece6f9fc9595f4253..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29271 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 Wz;4=~_iN&JF_}RwG5o;52L=EKNssyf From 02ed4b52c4bed5f2f0ff7ca551c43195ce3c5a67 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 27 Aug 2019 05:26:46 +0200 Subject: [PATCH 273/737] Add new sounds for mcl_tnt mod --- mods/ITEMS/mcl_tnt/README.txt | 22 +++++----------------- mods/ITEMS/mcl_tnt/sounds/tnt_explode.ogg | Bin 0 -> 48361 bytes mods/ITEMS/mcl_tnt/sounds/tnt_ignite.ogg | Bin 0 -> 92125 bytes 3 files changed, 5 insertions(+), 17 deletions(-) create mode 100644 mods/ITEMS/mcl_tnt/sounds/tnt_explode.ogg create mode 100644 mods/ITEMS/mcl_tnt/sounds/tnt_ignite.ogg diff --git a/mods/ITEMS/mcl_tnt/README.txt b/mods/ITEMS/mcl_tnt/README.txt index 14c73e07..5b1c1079 100644 --- a/mods/ITEMS/mcl_tnt/README.txt +++ b/mods/ITEMS/mcl_tnt/README.txt @@ -10,22 +10,10 @@ There are different ways to blow up TNT: 2. Activate it with redstone circuits Be aware of the damage radius! -License: -WTFPL (see below) +License of mod code and media: +MIT License -See also: -http://minetest.net/ +Sound credits: - DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE - Version 2, December 2004 - - Copyright (C) 2004 Sam Hocevar - - Everyone is permitted to copy and distribute verbatim or modified - copies of this license document, and changing it is allowed as long - as the name is changed. - - DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. You just DO WHAT THE FUCK YOU WANT TO. +* tnt_explode.ogg: Jose Ortiz 'MindChamber' (CC0) +* tnt_ignite.ogg: Own derivate work of sound by Ned Bouhalassa (CC0) created in 2005, source: diff --git a/mods/ITEMS/mcl_tnt/sounds/tnt_explode.ogg b/mods/ITEMS/mcl_tnt/sounds/tnt_explode.ogg new file mode 100644 index 0000000000000000000000000000000000000000..1691a41bc02ec629d24d4b883a7ce797b7ceccde GIT binary patch literal 48361 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≪2<$d#}HwZPfFt1n*p+vz4}$Fj|H{fflim!8s_ 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

    KmGaJf`ikNB5z(^Ds#+Rerw;tQ}1K!FGlE@ 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%0D0>011; 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 J+4%VQ_yC@M*P#Fa literal 0 HcmV?d00001 From f67c302c3d983bee21195c650fbac46e8567c2d3 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 27 Aug 2019 05:35:26 +0200 Subject: [PATCH 274/737] Version 0.53.4 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 6c2e2a59..50f08f4d 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ An unofficial Minecraft-like game for Minetest. Forked from MineClone by davedevils. Developed by Wuzzy and contributors. Not developed or endorsed by Mojang AB. -Version: 0.53.3 +Version: 0.53.4 ### Gameplay You start in a randomly-generated world made entirely of cubes. You can explore From 1cbee9de18325a9e7c6208e96ec37d5dc096ed37 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 27 Aug 2019 13:08:54 +0200 Subject: [PATCH 275/737] Fix item entity force-out bias to positive dir --- mods/ENTITIES/mcl_item_entity/init.lua | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/mods/ENTITIES/mcl_item_entity/init.lua b/mods/ENTITIES/mcl_item_entity/init.lua index f44917cc..36282449 100644 --- a/mods/ENTITIES/mcl_item_entity/init.lua +++ b/mods/ENTITIES/mcl_item_entity/init.lua @@ -543,8 +543,8 @@ core.register_entity(":__builtin:item", { -- Push item out when stuck inside solid opaque node if def and def.walkable and def.groups and def.groups.opaque == 1 then local shootdir - local cx = p.x % 1 - local cz = p.z % 1 + local cx = (p.x % 1) - 0.5 + local cz = (p.z % 1) - 0.5 local order = {} -- First prepare the order in which the 4 sides are to be checked. @@ -552,7 +552,7 @@ core.register_entity(":__builtin:item", { -- 2nd: other direction -- 3rd and 4th: other axis local cxcz = function(o, cw, one, zero) - if cw > 0 then + if cw < 0 then table.insert(o, { [one]=1, y=0, [zero]=0 }) table.insert(o, { [one]=-1, y=0, [zero]=0 }) else @@ -561,7 +561,7 @@ core.register_entity(":__builtin:item", { end return o end - if math.abs(cx) > math.abs(cz) then + if math.abs(cx) < math.abs(cz) then order = cxcz(order, cx, "x", "z") order = cxcz(order, cz, "z", "x") else From 2478d8817eeddb9d1fe9682b17f911bb67e0c433 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 27 Aug 2019 22:01:51 +0200 Subject: [PATCH 276/737] Apply pitch to arrows --- mods/ITEMS/mcl_bows/arrow.lua | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_bows/arrow.lua b/mods/ITEMS/mcl_bows/arrow.lua index 0b41a282..a4ecb7e0 100644 --- a/mods/ITEMS/mcl_bows/arrow.lua +++ b/mods/ITEMS/mcl_bows/arrow.lua @@ -9,6 +9,12 @@ local GRAVITY = 9.81 local YAW_OFFSET = -math.pi/2 +local dir_to_pitch = function(dir) + local dir2 = vector.normalize(dir) + local xz = math.abs(dir.x) + math.abs(dir.z) + return -math.atan2(-dir.y, xz) +end + local mod_awards = minetest.get_modpath("awards") and minetest.get_modpath("mcl_achievements") local mod_button = minetest.get_modpath("mesecons_button") @@ -108,7 +114,7 @@ ARROW_ENTITY.on_step = function(self, dtime) return end -- Drop arrow as item when it is no longer stuck - -- FIXME: Arrows are a bit slot to react and continue to float in mid air for a few seconds. + -- FIXME: Arrows are a bit slow to react and continue to float in mid air for a few seconds. if self._stuckrechecktimer > STUCK_RECHECK_TIME then local stuckin_def if self._stuckin then @@ -290,7 +296,9 @@ ARROW_ENTITY.on_step = function(self, dtime) -- Update yaw if not self._stuck then local vel = self.object:get_velocity() - self.object:set_yaw(minetest.dir_to_yaw(vel)+YAW_OFFSET) + local yaw = minetest.dir_to_yaw(vel)+YAW_OFFSET + local pitch = dir_to_pitch(vel) + self.object:set_rotation({ x = 0, y = yaw, z = pitch }) end -- Update internal variable From c7d111219d84e6c0e5343934b86261d98961e15e Mon Sep 17 00:00:00 2001 From: Nicholas Niro Date: Fri, 30 Aug 2019 04:30:22 +0200 Subject: [PATCH 277/737] Make fence collisionbox larger --- mods/ITEMS/mcl_fences/init.lua | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/mods/ITEMS/mcl_fences/init.lua b/mods/ITEMS/mcl_fences/init.lua index c46997e7..e40e7cf4 100644 --- a/mods/ITEMS/mcl_fences/init.lua +++ b/mods/ITEMS/mcl_fences/init.lua @@ -14,11 +14,11 @@ local z2 = {-1/16, 4/16, 2/16, 1/16, 7/16, 0.5} --oben(quer) z local z22 = {-1/16, -2/16, 2/16, 1/16, 1/16, 0.5} --unten(quer) z -- Collision box -local cp = {-2/16, -0.5, -2/16, 2/16, 1.01, 2/16} -local cx1 = {-0.5, -2/16, -2/16, -2/16, 1.01, 2/16} --unten(quer) -x -local cx2 = {2/16, -2/16, -2/16, 0.5, 1.01, 2/16} --unten(quer) x -local cz1 = {-2/16, -2/16, -0.5, 2/16, 1.01, -2/16} --unten(quer) -z -local cz2 = {-2/16, -2/16, 2/16, 2/16, 1.01, 0.5} --unten(quer) z +local cp = {-0.5, -0.5, -0.5, 0.5, 1.01, 0.5} +local cx1 = {-0.5, -0.5, -0.5, -0.5, 1.01, 0.5} --unten(quer) -x +local cx2 = {0.5, -0.5, -0.5, 0.5, 1.01, 0.5} --unten(quer) x +local cz1 = {-0.5, -0.5, -0.5, 0.5, 1.01, -0.5} --unten(quer) -z +local cz2 = {-0.5, -0.5, 0.5, 0.5, 1.01, 0.5} --unten(quer) z mcl_fences = {} From 995024b47bc2c79b272cc6f2d8ab411fbef9a8de Mon Sep 17 00:00:00 2001 From: Nicholas Niro Date: Fri, 30 Aug 2019 04:31:14 +0200 Subject: [PATCH 278/737] Teach mobs not to jump if they'd hurt their head --- mods/ENTITIES/mcl_mobs/api.lua | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/mods/ENTITIES/mcl_mobs/api.lua b/mods/ENTITIES/mcl_mobs/api.lua index b7a8e22f..c5cacd92 100644 --- a/mods/ENTITIES/mcl_mobs/api.lua +++ b/mods/ENTITIES/mcl_mobs/api.lua @@ -781,6 +781,19 @@ local do_jump = function(self) z = pos.z + dir_z }) + -- this is used to detect if there's a block on top of the block in front of the mob. + -- If there is, there is no point in jumping as we won't manage. + local nodTop = node_ok({ + x = pos.x + dir_x, + y = pos.y + 1.5, + z = pos.z + dir_z + }) + + -- we don't attempt to jump if there's a stack of blocks blocking + if nodTop ~= nil then + return false + end + -- thin blocks that do not need to be jumped if nod.name == node_snow then return false From 2627742b365d9351b06bd8fa2af493bb88d47057 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Fri, 30 Aug 2019 04:43:25 +0200 Subject: [PATCH 279/737] Restore original fence collisionbox, but deeper --- mods/ITEMS/mcl_fences/init.lua | 10 +- mods/ITEMS/mcl_fences/init.lua.orig | 312 ++++++++++++++++++++++++++++ mods/ITEMS/mcl_fences/init.lua.rej | 19 ++ 3 files changed, 336 insertions(+), 5 deletions(-) create mode 100644 mods/ITEMS/mcl_fences/init.lua.orig create mode 100644 mods/ITEMS/mcl_fences/init.lua.rej diff --git a/mods/ITEMS/mcl_fences/init.lua b/mods/ITEMS/mcl_fences/init.lua index e40e7cf4..bb2ca0fc 100644 --- a/mods/ITEMS/mcl_fences/init.lua +++ b/mods/ITEMS/mcl_fences/init.lua @@ -14,11 +14,11 @@ local z2 = {-1/16, 4/16, 2/16, 1/16, 7/16, 0.5} --oben(quer) z local z22 = {-1/16, -2/16, 2/16, 1/16, 1/16, 0.5} --unten(quer) z -- Collision box -local cp = {-0.5, -0.5, -0.5, 0.5, 1.01, 0.5} -local cx1 = {-0.5, -0.5, -0.5, -0.5, 1.01, 0.5} --unten(quer) -x -local cx2 = {0.5, -0.5, -0.5, 0.5, 1.01, 0.5} --unten(quer) x -local cz1 = {-0.5, -0.5, -0.5, 0.5, 1.01, -0.5} --unten(quer) -z -local cz2 = {-0.5, -0.5, 0.5, 0.5, 1.01, 0.5} --unten(quer) z +local cp = {-2/16, -0.5, -2/16, 2/16, 1.01, 2/16} +local cx1 = {-0.5, -0.5, -2/16, -2/16, 1.01, 2/16} --unten(quer) -x +local cx2 = {2/16, -0.5, -2/16, 0.5, 1.01, 2/16} --unten(quer) x +local cz1 = {-2/16, -0.5, -0.5, 2/16, 1.01, -2/16} --unten(quer) -z +local cz2 = {-2/16, -0.5, 2/16, 2/16, 1.01, 0.5} --unten(quer) z mcl_fences = {} diff --git a/mods/ITEMS/mcl_fences/init.lua.orig b/mods/ITEMS/mcl_fences/init.lua.orig new file mode 100644 index 00000000..c46997e7 --- /dev/null +++ b/mods/ITEMS/mcl_fences/init.lua.orig @@ -0,0 +1,312 @@ +local init = os.clock() + +local S = minetest.get_translator("mcl_fences") + +-- Node box +local p = {-2/16, -0.5, -2/16, 2/16, 0.5, 2/16} +local x1 = {-0.5, 4/16, -1/16, -2/16, 7/16, 1/16} --oben(quer) -x +local x12 = {-0.5, -2/16, -1/16, -2/16, 1/16, 1/16} --unten(quer) -x +local x2 = {2/16, 4/16, -1/16, 0.5, 7/16, 1/16} --oben(quer) x +local x22 = {2/16, -2/16, -1/16, 0.5, 1/16, 1/16} --unten(quer) x +local z1 = {-1/16, 4/16, -0.5, 1/16, 7/16, -2/16} --oben(quer) -z +local z12 = {-1/16, -2/16, -0.5, 1/16, 1/16, -2/16} --unten(quer) -z +local z2 = {-1/16, 4/16, 2/16, 1/16, 7/16, 0.5} --oben(quer) z +local z22 = {-1/16, -2/16, 2/16, 1/16, 1/16, 0.5} --unten(quer) z + +-- Collision box +local cp = {-2/16, -0.5, -2/16, 2/16, 1.01, 2/16} +local cx1 = {-0.5, -2/16, -2/16, -2/16, 1.01, 2/16} --unten(quer) -x +local cx2 = {2/16, -2/16, -2/16, 0.5, 1.01, 2/16} --unten(quer) x +local cz1 = {-2/16, -2/16, -0.5, 2/16, 1.01, -2/16} --unten(quer) -z +local cz2 = {-2/16, -2/16, 2/16, 2/16, 1.01, 0.5} --unten(quer) z + +mcl_fences = {} + +mcl_fences.register_fence = function(id, fence_name, texture, groups, hardness, blast_resistance, connects_to, sounds) + local cgroups = table.copy(groups) + if cgroups == nil then cgroups = {} end + cgroups.fence = 1 + cgroups.deco_block = 1 + if connects_to == nil then + connects_to = {} + else + connects_to = table.copy(connects_to) + end + local fence_id = minetest.get_current_modname()..":"..id + table.insert(connects_to, "group:solid") + table.insert(connects_to, "group:fence_gate") + table.insert(connects_to, fence_id) + minetest.register_node(fence_id, { + description = fence_name, + _doc_items_longdesc = S("Fences are structures which block the way. Fences will connect to each other and solid blocks. They cannot be jumped over with a simple jump."), + tiles = {texture}, + inventory_image = "mcl_fences_fence_mask.png^" .. texture .. "^mcl_fences_fence_mask.png^[makealpha:255,126,126", + wield_image = "mcl_fences_fence_mask.png^" .. texture .. "^mcl_fences_fence_mask.png^[makealpha:255,126,126", + paramtype = "light", + is_ground_content = false, + groups = cgroups, + stack_max = 64, + sunlight_propagates = true, + drawtype = "nodebox", + connect_sides = { "front", "back", "left", "right" }, + connects_to = connects_to, + node_box = { + type = "connected", + fixed = {p}, + connect_front = {z1,z12}, + connect_back = {z2,z22,}, + connect_left = {x1,x12}, + connect_right = {x2,x22}, + }, + collision_box = { + type = "connected", + fixed = {cp}, + connect_front = {cz1}, + connect_back = {cz2,}, + connect_left = {cx1}, + connect_right = {cx2}, + }, + sounds = sounds, + _mcl_blast_resistance = blast_resistance, + _mcl_hardness = hardness, + }) + + return fence_id +end + +mcl_fences.register_fence_gate = function(id, fence_gate_name, texture, groups, hardness, blast_resistance, sounds, sound_open, sound_close, sound_gain_open, sound_gain_close) + local meta2 + local state2 = 0 + + local function update_gate(pos, node) + minetest.set_node(pos, node) + end + + local gate_id = minetest.get_current_modname()..":"..id.."_gate" + local open_gate_id = gate_id .. "_open" + if not sound_open then + sound_open = "doors_fencegate_open" + end + if not sound_close then + sound_close = "doors_fencegate_close" + end + if not sound_gain_open then + sound_gain_open = 0.3 + end + if not sound_gain_close then + sound_gain_close = 0.3 + end + local function punch_gate(pos, node) + meta2 = minetest.get_meta(pos) + state2 = meta2:get_int("state") + local tmp_node2 + if state2 == 1 then + state2 = 0 + minetest.sound_play(sound_close, {gain = sound_gain_close, max_hear_distance = 10, pos = pos}) + tmp_node2 = {name=gate_id, param1=node.param1, param2=node.param2} + else + state2 = 1 + minetest.sound_play(sound_open, {gain = sound_gain_open, max_hear_distance = 10, pos = pos}) + tmp_node2 = {name=open_gate_id, param1=node.param1, param2=node.param2} + end + update_gate(pos, tmp_node2) + meta2:set_int("state", state2) + end + + local on_rotate + if minetest.get_modpath("screwdriver") then + on_rotate = screwdriver.rotate_simple + end + + local cgroups = table.copy(groups) + if cgroups == nil then cgroups = {} end + cgroups.fence_gate = 1 + cgroups.deco_block = 1 + + cgroups.mesecon_ignore_opaque_dig = 1 + cgroups.mesecon_effector_on = 1 + cgroups.fence_gate = 1 + minetest.register_node(open_gate_id, { + tiles = {texture}, + paramtype = "light", + paramtype2 = "facedir", + is_ground_content = false, + sunlight_propagates = true, + walkable = false, + groups = cgroups, + drop = gate_id, + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = { + {-0.5, -3/16, -1/16, -6/16, 0.5, 1/16}, --links abschluss + {6/16, -3/16, -1/16, 0.5, 0.5, 1/16}, --rechts abschluss + {-0.5, 4/16, 1/16, -6/16, 7/16, 6/16}, --oben-links(quer) x + {-0.5, -2/16, 1/16, -6/16, 1/16, 6/16}, --unten-links(quer) x + {6/16, 4/16, 1/16, 0.5, 7/16, 0.5}, --oben-rechts(quer) x + {6/16, -2/16, 1/16, 0.5, 1/16, 0.5}, --unten-rechts(quer) x + {-0.5, -2/16, 6/16, -6/16, 7/16, 0.5}, --mitte links + {6/16, 1/16, 0.5, 0.5, 4/16, 6/16}, --mitte rechts + } + }, + selection_box = { + type = "fixed", + fixed = { + {-0.5, -3/16, -1/16, 0.5, 0.5, 1/16}, --gate + } + }, + on_rightclick = function(pos, node, clicker) + punch_gate(pos, node) + end, + mesecons = {effector = { + action_off = (function(pos, node) + punch_gate(pos, node) + end), + }}, + on_rotate = on_rotate, + sounds = sounds, + _mcl_blast_resistance = blast_resistance, + _mcl_hardness = hardness, + }) + + local cgroups_closed = table.copy(cgroups) + cgroups_closed.mesecon_effector_on = nil + cgroups_closed.mesecon_effector_off = nil + minetest.register_node(gate_id, { + description = fence_gate_name, + _doc_items_longdesc = S("Fence gates can be opened or closed and can't be jumped over. Fences will connect nicely to fence gates."), + _doc_items_usagehelp = S("Right-click the fence gate to open or close it."), + tiles = {texture}, + inventory_image = "mcl_fences_fence_gate_mask.png^" .. texture .. "^mcl_fences_fence_gate_mask.png^[makealpha:255,126,126", + wield_image = "mcl_fences_fence_gate_mask.png^" .. texture .. "^mcl_fences_fence_gate_mask.png^[makealpha:255,126,126", + paramtype = "light", + is_ground_content = false, + stack_max = 64, + paramtype2 = "facedir", + sunlight_propagates = true, + walkable = true, + groups = cgroups_closed, + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = { + {-0.5, -3/16, -1/16, -6/16, 0.5, 1/16}, --links abschluss + {6/16, -3/16, -1/16, 0.5, 0.5, 1/16}, --rechts abschluss + {-2/16, -2/16, -1/16, 0, 7/16, 1/16}, --mitte links + {0, -2/16, -1/16, 2/16, 7/16, 1/16}, --mitte rechts + {-0.5, 4/16, -1/16, -2/16, 7/16, 1/16}, --oben(quer) -z + {-0.5, -2/16, -1/16, -2/16, 1/16, 1/16}, --unten(quer) -z + {2/16, 4/16, -1/16, 0.5, 7/16, 1/16}, --oben(quer) z + {2/16, -2/16, -1/16, 0.5, 1/16, 1/16}, --unten(quer) z + } + }, + collision_box = { + type = "fixed", + fixed = { + {-0.5, -3/16, -2/16, 0.5, 1, 2/16}, --gate + } + }, + selection_box = { + type = "fixed", + fixed = { + {-0.5, -3/16, -1/16, 0.5, 0.5, 1/16}, --gate + } + }, + on_construct = function(pos) + meta2 = minetest.get_meta(pos) + meta2:set_int("state", 0) + state2 = 0 + end, + mesecons = {effector = { + action_on = (function(pos, node) + punch_gate(pos, node) + end), + }}, + on_rotate = on_rotate, + on_rightclick = function(pos, node, clicker) + punch_gate(pos, node) + end, + sounds = sounds, + _mcl_blast_resistance = blast_resistance, + _mcl_hardness = hardness, + }) + + if minetest.get_modpath("doc") then + doc.add_entry_alias("nodes", gate_id, "nodes", open_gate_id) + end + + return gate_id, open_gate_id +end + +mcl_fences.register_fence_and_fence_gate = function(id, fence_name, fence_gate_name, texture_fence, groups, hardness, blast_resistance, connects_to, sounds, sound_open, sound_close, sound_gain_open, sound_gain_close, texture_fence_gate) + if texture_fence_gate == nil then + texture_fence_gate = texture_fence + end + local fence_id = mcl_fences.register_fence(id, fence_name, texture_fence, groups, hardness, blast_resistance, connects_to, sounds) + local gate_id, open_gate_id = mcl_fences.register_fence_gate(id, fence_gate_name, texture_fence_gate, groups, hardness, blast_resistance, sounds, sound_open, sound_close, sound_gain_open, sound_gain_close) + return fence_id, gate_id, open_gate_id +end + +local wood_groups = {handy=1,axey=1, flammable=2,fence_wood=1} +local wood_connect = {"group:fence_wood"} +local wood_sounds = mcl_sounds.node_sound_wood_defaults() + +local woods = { + {"", S("Oak Fence"), S("Oak Fence Gate"), "mcl_fences_fence_oak.png", "mcl_fences_fence_gate_oak.png", "mcl_core:wood"}, + {"spruce", S("Spruce Fence"), S("Spruce Fence Gate"), "mcl_fences_fence_spruce.png", "mcl_fences_fence_gate_spruce.png", "mcl_core:sprucewood"}, + {"birch", S("Birch Fence"), S("Birch Fence Gate"), "mcl_fences_fence_birch.png", "mcl_fences_fence_gate_birch.png", "mcl_core:birchwood"}, + {"jungle", S("Jungle Fence"), S("Jungle Fence Gate"), "mcl_fences_fence_jungle.png", "mcl_fences_fence_gate_jungle.png", "mcl_core:junglewood"}, + {"dark_oak", S("Dark Oak Fence"), S("Dark Oak Fence Gate"), "mcl_fences_fence_big_oak.png", "mcl_fences_fence_gate_big_oak.png", "mcl_core:darkwood"}, + {"acacia", S("Acacia Fence"), S("Acacia Fence Gate"), "mcl_fences_fence_acacia.png", "mcl_fences_fence_gate_acacia.png", "mcl_core:acaciawood"}, +} + +for w=1, #woods do + local wood = woods[w] + local id, id_gate + if wood[1] == "" then + id = "fence" + id_gate = "fence_gate" + else + id = wood[1].."_fence" + id_gate = wood[1].."_fence_gate" + end + mcl_fences.register_fence_and_fence_gate(id, wood[2], wood[3], wood[4], wood_groups, 2, 15, wood_connect, wood_sounds) + + minetest.register_craft({ + output = 'mcl_fences:'..id..' 3', + recipe = { + {wood[6], 'mcl_core:stick', wood[6]}, + {wood[6], 'mcl_core:stick', wood[6]}, + } + }) + minetest.register_craft({ + output = 'mcl_fences:'..id_gate, + recipe = { + {'mcl_core:stick', wood[6], 'mcl_core:stick'}, + {'mcl_core:stick', wood[6], 'mcl_core:stick'}, + } + }) +end + + +-- Nether Brick Fence (without fence gate!) +mcl_fences.register_fence("nether_brick_fence", S("Nether Brick Fence"), "mcl_fences_fence_nether_brick.png", {pickaxey=1, deco_block=1, fence_nether_brick=1}, 2, 30, {"group:fence_nether_brick"}, mcl_sounds.node_sound_stone_defaults()) + +minetest.register_craft({ + output = 'mcl_fences:nether_brick_fence 6', + recipe = { + {"mcl_nether:nether_brick", "mcl_nether:netherbrick", "mcl_nether:nether_brick"}, + {"mcl_nether:nether_brick", "mcl_nether:netherbrick", "mcl_nether:nether_brick"}, + } +}) + +minetest.register_craft({ + type = "fuel", + recipe = "group:fence_wood", + burntime = 15, +}) + +local time_to_load= os.clock() - init +print(string.format("[MOD] "..minetest.get_current_modname().." loaded in %.4f s", time_to_load)) + + diff --git a/mods/ITEMS/mcl_fences/init.lua.rej b/mods/ITEMS/mcl_fences/init.lua.rej new file mode 100644 index 00000000..0d85f640 --- /dev/null +++ b/mods/ITEMS/mcl_fences/init.lua.rej @@ -0,0 +1,19 @@ +--- mods/ITEMS/mcl_fences/init.lua ++++ mods/ITEMS/mcl_fences/init.lua +@@ -14,11 +14,11 @@ local z2 = {-1/16, 4/16, 2/16, 1/16, 7/16, 0.5} --oben(quer) z + local z22 = {-1/16, -2/16, 2/16, 1/16, 1/16, 0.5} --unten(quer) z + + -- Collision box +-local cp = {-2/16, -0.5, -2/16, 2/16, 1.01, 2/16} +-local cx1 = {-0.5, -2/16, -2/16, -2/16, 1.01, 2/16} --unten(quer) -x +-local cx2 = {2/16, -2/16, -2/16, 0.5, 1.01, 2/16} --unten(quer) x +-local cz1 = {-2/16, -2/16, -0.5, 2/16, 1.01, -2/16} --unten(quer) -z +-local cz2 = {-2/16, -2/16, 2/16, 2/16, 1.01, 0.5} --unten(quer) z ++local cp = {-0.5, -0.5, -0.5, 0.5, 1.01, 0.5} ++local cx1 = {-0.5, -0.5, -0.5, -0.5, 1.01, 0.5} --unten(quer) -x ++local cx2 = {0.5, -0.5, -0.5, 0.5, 1.01, 0.5} --unten(quer) x ++local cz1 = {-0.5, -0.5, -0.5, 0.5, 1.01, -0.5} --unten(quer) -z ++local cz2 = {-0.5, -0.5, 0.5, 0.5, 1.01, 0.5} --unten(quer) z + + mcl_fences = {} + From aced401c6c78b12917cd29011f525ee7aed72ac9 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Fri, 30 Aug 2019 19:42:47 +0200 Subject: [PATCH 280/737] Remove useless files --- mods/ITEMS/mcl_fences/init.lua.orig | 312 ---------------------------- mods/ITEMS/mcl_fences/init.lua.rej | 19 -- 2 files changed, 331 deletions(-) delete mode 100644 mods/ITEMS/mcl_fences/init.lua.orig delete mode 100644 mods/ITEMS/mcl_fences/init.lua.rej diff --git a/mods/ITEMS/mcl_fences/init.lua.orig b/mods/ITEMS/mcl_fences/init.lua.orig deleted file mode 100644 index c46997e7..00000000 --- a/mods/ITEMS/mcl_fences/init.lua.orig +++ /dev/null @@ -1,312 +0,0 @@ -local init = os.clock() - -local S = minetest.get_translator("mcl_fences") - --- Node box -local p = {-2/16, -0.5, -2/16, 2/16, 0.5, 2/16} -local x1 = {-0.5, 4/16, -1/16, -2/16, 7/16, 1/16} --oben(quer) -x -local x12 = {-0.5, -2/16, -1/16, -2/16, 1/16, 1/16} --unten(quer) -x -local x2 = {2/16, 4/16, -1/16, 0.5, 7/16, 1/16} --oben(quer) x -local x22 = {2/16, -2/16, -1/16, 0.5, 1/16, 1/16} --unten(quer) x -local z1 = {-1/16, 4/16, -0.5, 1/16, 7/16, -2/16} --oben(quer) -z -local z12 = {-1/16, -2/16, -0.5, 1/16, 1/16, -2/16} --unten(quer) -z -local z2 = {-1/16, 4/16, 2/16, 1/16, 7/16, 0.5} --oben(quer) z -local z22 = {-1/16, -2/16, 2/16, 1/16, 1/16, 0.5} --unten(quer) z - --- Collision box -local cp = {-2/16, -0.5, -2/16, 2/16, 1.01, 2/16} -local cx1 = {-0.5, -2/16, -2/16, -2/16, 1.01, 2/16} --unten(quer) -x -local cx2 = {2/16, -2/16, -2/16, 0.5, 1.01, 2/16} --unten(quer) x -local cz1 = {-2/16, -2/16, -0.5, 2/16, 1.01, -2/16} --unten(quer) -z -local cz2 = {-2/16, -2/16, 2/16, 2/16, 1.01, 0.5} --unten(quer) z - -mcl_fences = {} - -mcl_fences.register_fence = function(id, fence_name, texture, groups, hardness, blast_resistance, connects_to, sounds) - local cgroups = table.copy(groups) - if cgroups == nil then cgroups = {} end - cgroups.fence = 1 - cgroups.deco_block = 1 - if connects_to == nil then - connects_to = {} - else - connects_to = table.copy(connects_to) - end - local fence_id = minetest.get_current_modname()..":"..id - table.insert(connects_to, "group:solid") - table.insert(connects_to, "group:fence_gate") - table.insert(connects_to, fence_id) - minetest.register_node(fence_id, { - description = fence_name, - _doc_items_longdesc = S("Fences are structures which block the way. Fences will connect to each other and solid blocks. They cannot be jumped over with a simple jump."), - tiles = {texture}, - inventory_image = "mcl_fences_fence_mask.png^" .. texture .. "^mcl_fences_fence_mask.png^[makealpha:255,126,126", - wield_image = "mcl_fences_fence_mask.png^" .. texture .. "^mcl_fences_fence_mask.png^[makealpha:255,126,126", - paramtype = "light", - is_ground_content = false, - groups = cgroups, - stack_max = 64, - sunlight_propagates = true, - drawtype = "nodebox", - connect_sides = { "front", "back", "left", "right" }, - connects_to = connects_to, - node_box = { - type = "connected", - fixed = {p}, - connect_front = {z1,z12}, - connect_back = {z2,z22,}, - connect_left = {x1,x12}, - connect_right = {x2,x22}, - }, - collision_box = { - type = "connected", - fixed = {cp}, - connect_front = {cz1}, - connect_back = {cz2,}, - connect_left = {cx1}, - connect_right = {cx2}, - }, - sounds = sounds, - _mcl_blast_resistance = blast_resistance, - _mcl_hardness = hardness, - }) - - return fence_id -end - -mcl_fences.register_fence_gate = function(id, fence_gate_name, texture, groups, hardness, blast_resistance, sounds, sound_open, sound_close, sound_gain_open, sound_gain_close) - local meta2 - local state2 = 0 - - local function update_gate(pos, node) - minetest.set_node(pos, node) - end - - local gate_id = minetest.get_current_modname()..":"..id.."_gate" - local open_gate_id = gate_id .. "_open" - if not sound_open then - sound_open = "doors_fencegate_open" - end - if not sound_close then - sound_close = "doors_fencegate_close" - end - if not sound_gain_open then - sound_gain_open = 0.3 - end - if not sound_gain_close then - sound_gain_close = 0.3 - end - local function punch_gate(pos, node) - meta2 = minetest.get_meta(pos) - state2 = meta2:get_int("state") - local tmp_node2 - if state2 == 1 then - state2 = 0 - minetest.sound_play(sound_close, {gain = sound_gain_close, max_hear_distance = 10, pos = pos}) - tmp_node2 = {name=gate_id, param1=node.param1, param2=node.param2} - else - state2 = 1 - minetest.sound_play(sound_open, {gain = sound_gain_open, max_hear_distance = 10, pos = pos}) - tmp_node2 = {name=open_gate_id, param1=node.param1, param2=node.param2} - end - update_gate(pos, tmp_node2) - meta2:set_int("state", state2) - end - - local on_rotate - if minetest.get_modpath("screwdriver") then - on_rotate = screwdriver.rotate_simple - end - - local cgroups = table.copy(groups) - if cgroups == nil then cgroups = {} end - cgroups.fence_gate = 1 - cgroups.deco_block = 1 - - cgroups.mesecon_ignore_opaque_dig = 1 - cgroups.mesecon_effector_on = 1 - cgroups.fence_gate = 1 - minetest.register_node(open_gate_id, { - tiles = {texture}, - paramtype = "light", - paramtype2 = "facedir", - is_ground_content = false, - sunlight_propagates = true, - walkable = false, - groups = cgroups, - drop = gate_id, - drawtype = "nodebox", - node_box = { - type = "fixed", - fixed = { - {-0.5, -3/16, -1/16, -6/16, 0.5, 1/16}, --links abschluss - {6/16, -3/16, -1/16, 0.5, 0.5, 1/16}, --rechts abschluss - {-0.5, 4/16, 1/16, -6/16, 7/16, 6/16}, --oben-links(quer) x - {-0.5, -2/16, 1/16, -6/16, 1/16, 6/16}, --unten-links(quer) x - {6/16, 4/16, 1/16, 0.5, 7/16, 0.5}, --oben-rechts(quer) x - {6/16, -2/16, 1/16, 0.5, 1/16, 0.5}, --unten-rechts(quer) x - {-0.5, -2/16, 6/16, -6/16, 7/16, 0.5}, --mitte links - {6/16, 1/16, 0.5, 0.5, 4/16, 6/16}, --mitte rechts - } - }, - selection_box = { - type = "fixed", - fixed = { - {-0.5, -3/16, -1/16, 0.5, 0.5, 1/16}, --gate - } - }, - on_rightclick = function(pos, node, clicker) - punch_gate(pos, node) - end, - mesecons = {effector = { - action_off = (function(pos, node) - punch_gate(pos, node) - end), - }}, - on_rotate = on_rotate, - sounds = sounds, - _mcl_blast_resistance = blast_resistance, - _mcl_hardness = hardness, - }) - - local cgroups_closed = table.copy(cgroups) - cgroups_closed.mesecon_effector_on = nil - cgroups_closed.mesecon_effector_off = nil - minetest.register_node(gate_id, { - description = fence_gate_name, - _doc_items_longdesc = S("Fence gates can be opened or closed and can't be jumped over. Fences will connect nicely to fence gates."), - _doc_items_usagehelp = S("Right-click the fence gate to open or close it."), - tiles = {texture}, - inventory_image = "mcl_fences_fence_gate_mask.png^" .. texture .. "^mcl_fences_fence_gate_mask.png^[makealpha:255,126,126", - wield_image = "mcl_fences_fence_gate_mask.png^" .. texture .. "^mcl_fences_fence_gate_mask.png^[makealpha:255,126,126", - paramtype = "light", - is_ground_content = false, - stack_max = 64, - paramtype2 = "facedir", - sunlight_propagates = true, - walkable = true, - groups = cgroups_closed, - drawtype = "nodebox", - node_box = { - type = "fixed", - fixed = { - {-0.5, -3/16, -1/16, -6/16, 0.5, 1/16}, --links abschluss - {6/16, -3/16, -1/16, 0.5, 0.5, 1/16}, --rechts abschluss - {-2/16, -2/16, -1/16, 0, 7/16, 1/16}, --mitte links - {0, -2/16, -1/16, 2/16, 7/16, 1/16}, --mitte rechts - {-0.5, 4/16, -1/16, -2/16, 7/16, 1/16}, --oben(quer) -z - {-0.5, -2/16, -1/16, -2/16, 1/16, 1/16}, --unten(quer) -z - {2/16, 4/16, -1/16, 0.5, 7/16, 1/16}, --oben(quer) z - {2/16, -2/16, -1/16, 0.5, 1/16, 1/16}, --unten(quer) z - } - }, - collision_box = { - type = "fixed", - fixed = { - {-0.5, -3/16, -2/16, 0.5, 1, 2/16}, --gate - } - }, - selection_box = { - type = "fixed", - fixed = { - {-0.5, -3/16, -1/16, 0.5, 0.5, 1/16}, --gate - } - }, - on_construct = function(pos) - meta2 = minetest.get_meta(pos) - meta2:set_int("state", 0) - state2 = 0 - end, - mesecons = {effector = { - action_on = (function(pos, node) - punch_gate(pos, node) - end), - }}, - on_rotate = on_rotate, - on_rightclick = function(pos, node, clicker) - punch_gate(pos, node) - end, - sounds = sounds, - _mcl_blast_resistance = blast_resistance, - _mcl_hardness = hardness, - }) - - if minetest.get_modpath("doc") then - doc.add_entry_alias("nodes", gate_id, "nodes", open_gate_id) - end - - return gate_id, open_gate_id -end - -mcl_fences.register_fence_and_fence_gate = function(id, fence_name, fence_gate_name, texture_fence, groups, hardness, blast_resistance, connects_to, sounds, sound_open, sound_close, sound_gain_open, sound_gain_close, texture_fence_gate) - if texture_fence_gate == nil then - texture_fence_gate = texture_fence - end - local fence_id = mcl_fences.register_fence(id, fence_name, texture_fence, groups, hardness, blast_resistance, connects_to, sounds) - local gate_id, open_gate_id = mcl_fences.register_fence_gate(id, fence_gate_name, texture_fence_gate, groups, hardness, blast_resistance, sounds, sound_open, sound_close, sound_gain_open, sound_gain_close) - return fence_id, gate_id, open_gate_id -end - -local wood_groups = {handy=1,axey=1, flammable=2,fence_wood=1} -local wood_connect = {"group:fence_wood"} -local wood_sounds = mcl_sounds.node_sound_wood_defaults() - -local woods = { - {"", S("Oak Fence"), S("Oak Fence Gate"), "mcl_fences_fence_oak.png", "mcl_fences_fence_gate_oak.png", "mcl_core:wood"}, - {"spruce", S("Spruce Fence"), S("Spruce Fence Gate"), "mcl_fences_fence_spruce.png", "mcl_fences_fence_gate_spruce.png", "mcl_core:sprucewood"}, - {"birch", S("Birch Fence"), S("Birch Fence Gate"), "mcl_fences_fence_birch.png", "mcl_fences_fence_gate_birch.png", "mcl_core:birchwood"}, - {"jungle", S("Jungle Fence"), S("Jungle Fence Gate"), "mcl_fences_fence_jungle.png", "mcl_fences_fence_gate_jungle.png", "mcl_core:junglewood"}, - {"dark_oak", S("Dark Oak Fence"), S("Dark Oak Fence Gate"), "mcl_fences_fence_big_oak.png", "mcl_fences_fence_gate_big_oak.png", "mcl_core:darkwood"}, - {"acacia", S("Acacia Fence"), S("Acacia Fence Gate"), "mcl_fences_fence_acacia.png", "mcl_fences_fence_gate_acacia.png", "mcl_core:acaciawood"}, -} - -for w=1, #woods do - local wood = woods[w] - local id, id_gate - if wood[1] == "" then - id = "fence" - id_gate = "fence_gate" - else - id = wood[1].."_fence" - id_gate = wood[1].."_fence_gate" - end - mcl_fences.register_fence_and_fence_gate(id, wood[2], wood[3], wood[4], wood_groups, 2, 15, wood_connect, wood_sounds) - - minetest.register_craft({ - output = 'mcl_fences:'..id..' 3', - recipe = { - {wood[6], 'mcl_core:stick', wood[6]}, - {wood[6], 'mcl_core:stick', wood[6]}, - } - }) - minetest.register_craft({ - output = 'mcl_fences:'..id_gate, - recipe = { - {'mcl_core:stick', wood[6], 'mcl_core:stick'}, - {'mcl_core:stick', wood[6], 'mcl_core:stick'}, - } - }) -end - - --- Nether Brick Fence (without fence gate!) -mcl_fences.register_fence("nether_brick_fence", S("Nether Brick Fence"), "mcl_fences_fence_nether_brick.png", {pickaxey=1, deco_block=1, fence_nether_brick=1}, 2, 30, {"group:fence_nether_brick"}, mcl_sounds.node_sound_stone_defaults()) - -minetest.register_craft({ - output = 'mcl_fences:nether_brick_fence 6', - recipe = { - {"mcl_nether:nether_brick", "mcl_nether:netherbrick", "mcl_nether:nether_brick"}, - {"mcl_nether:nether_brick", "mcl_nether:netherbrick", "mcl_nether:nether_brick"}, - } -}) - -minetest.register_craft({ - type = "fuel", - recipe = "group:fence_wood", - burntime = 15, -}) - -local time_to_load= os.clock() - init -print(string.format("[MOD] "..minetest.get_current_modname().." loaded in %.4f s", time_to_load)) - - diff --git a/mods/ITEMS/mcl_fences/init.lua.rej b/mods/ITEMS/mcl_fences/init.lua.rej deleted file mode 100644 index 0d85f640..00000000 --- a/mods/ITEMS/mcl_fences/init.lua.rej +++ /dev/null @@ -1,19 +0,0 @@ ---- mods/ITEMS/mcl_fences/init.lua -+++ mods/ITEMS/mcl_fences/init.lua -@@ -14,11 +14,11 @@ local z2 = {-1/16, 4/16, 2/16, 1/16, 7/16, 0.5} --oben(quer) z - local z22 = {-1/16, -2/16, 2/16, 1/16, 1/16, 0.5} --unten(quer) z - - -- Collision box --local cp = {-2/16, -0.5, -2/16, 2/16, 1.01, 2/16} --local cx1 = {-0.5, -2/16, -2/16, -2/16, 1.01, 2/16} --unten(quer) -x --local cx2 = {2/16, -2/16, -2/16, 0.5, 1.01, 2/16} --unten(quer) x --local cz1 = {-2/16, -2/16, -0.5, 2/16, 1.01, -2/16} --unten(quer) -z --local cz2 = {-2/16, -2/16, 2/16, 2/16, 1.01, 0.5} --unten(quer) z -+local cp = {-0.5, -0.5, -0.5, 0.5, 1.01, 0.5} -+local cx1 = {-0.5, -0.5, -0.5, -0.5, 1.01, 0.5} --unten(quer) -x -+local cx2 = {0.5, -0.5, -0.5, 0.5, 1.01, 0.5} --unten(quer) x -+local cz1 = {-0.5, -0.5, -0.5, 0.5, 1.01, -0.5} --unten(quer) -z -+local cz2 = {-0.5, -0.5, 0.5, 0.5, 1.01, 0.5} --unten(quer) z - - mcl_fences = {} - From ed336829b4ad355e8b051757411d222e7a1c1276 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Thu, 5 Sep 2019 00:07:32 +0200 Subject: [PATCH 281/737] Fade out rain and fire sounds --- mods/ENVIRONMENT/mcl_weather/rain.lua | 4 ++-- mods/ITEMS/mcl_fire/init.lua | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/mods/ENVIRONMENT/mcl_weather/rain.lua b/mods/ENVIRONMENT/mcl_weather/rain.lua index 8a4cff08..76e38608 100644 --- a/mods/ENVIRONMENT/mcl_weather/rain.lua +++ b/mods/ENVIRONMENT/mcl_weather/rain.lua @@ -127,7 +127,7 @@ mcl_weather.rain.update_sound = function(player) if player_meta.sound_handler ~= nil then if mcl_weather.rain.last_rp_count == 0 then - minetest.sound_stop(player_meta.sound_handler) + minetest.sound_fade(player_meta.sound_handler, -0.5, 0.0) player_meta.sound_handler = nil end elseif mcl_weather.rain.last_rp_count > 0 then @@ -142,7 +142,7 @@ end mcl_weather.rain.remove_sound = function(player) local player_meta = mcl_weather.players[player:get_player_name()] if player_meta ~= nil and player_meta.sound_handler ~= nil then - minetest.sound_stop(player_meta.sound_handler) + minetest.sound_fade(player_meta.sound_handler, -0.5, 0.0) player_meta.sound_handler = nil player_meta.sound_updated = nil end diff --git a/mods/ITEMS/mcl_fire/init.lua b/mods/ITEMS/mcl_fire/init.lua index cefeb046..ea36d1ce 100644 --- a/mods/ITEMS/mcl_fire/init.lua +++ b/mods/ITEMS/mcl_fire/init.lua @@ -217,7 +217,7 @@ if flame_sound then (num["mcl_fire:eternal_fire"] or 0) -- Stop previous sound if handles[player_name] then - minetest.sound_stop(handles[player_name]) + minetest.sound_fade(handles[player_name], -0.4, 0.0) handles[player_name] = nil end -- If flames From 2423acb297a47a7d36eb3f4b10a3beafc6f57233 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Thu, 5 Sep 2019 00:17:52 +0200 Subject: [PATCH 282/737] Fix slimes not jumping at all --- mods/ENTITIES/mcl_mobs/api.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/ENTITIES/mcl_mobs/api.lua b/mods/ENTITIES/mcl_mobs/api.lua index c5cacd92..80d5745d 100644 --- a/mods/ENTITIES/mcl_mobs/api.lua +++ b/mods/ENTITIES/mcl_mobs/api.lua @@ -787,10 +787,10 @@ local do_jump = function(self) x = pos.x + dir_x, y = pos.y + 1.5, z = pos.z + dir_z - }) + }, "air") -- we don't attempt to jump if there's a stack of blocks blocking - if nodTop ~= nil then + if minetest.registered_nodes[nodTop.name] == true then return false end From c7908cc020c812314ef0d968460a679371554649 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 10 Sep 2019 15:10:12 +0200 Subject: [PATCH 283/737] Fishing: Clean up comments --- mods/ITEMS/mcl_fishing/init.lua | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/mods/ITEMS/mcl_fishing/init.lua b/mods/ITEMS/mcl_fishing/init.lua index c5e351e4..e3eea80a 100644 --- a/mods/ITEMS/mcl_fishing/init.lua +++ b/mods/ITEMS/mcl_fishing/init.lua @@ -15,9 +15,6 @@ local bobber_ENTITY={ collisionbox = {0.45,0.45,0.45,0.45,0.45,0.45}, pointable = false, - --get_staticdata = get_staticdata, - --on_activate = on_activate, - _lastpos={}, _dive = false, _waittick = nil, @@ -242,7 +239,7 @@ local bobber_on_step = function(self, dtime) end end - -- Destroy when hitting a solid node + -- TODO: Destroy when hitting a solid node --if self._lastpos.x~=nil then -- if (def and def.walkable) or not def then --self.object:remove() @@ -256,7 +253,7 @@ bobber_ENTITY.on_step = bobber_on_step minetest.register_entity("mcl_fishing:bobber_entity", bobber_ENTITY) ---If player leaves area remove bobber. +-- If player leaves area, remove bobber. minetest.register_on_leaveplayer(function(player) local objs = minetest.get_objects_inside_radius(player:get_pos(), 250) local num = 0 @@ -275,7 +272,7 @@ minetest.register_on_leaveplayer(function(player) end end) ---if player dies remove bobber. +-- If player dies, remove bobber. minetest.register_on_dieplayer(function(player) local objs = minetest.get_objects_inside_radius(player:get_pos(), 250) local num = 0 @@ -308,7 +305,6 @@ minetest.register_tool("mcl_fishing:fishing_rod", { sound = { breaks = "default_tool_breaks" }, }) ---Make fishing rods craftable again. minetest.register_craft({ output = "mcl_fishing:fishing_rod", recipe = { From 055d6ecc96b6764062224a68a0c0ebe72594059c Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 10 Sep 2019 15:12:36 +0200 Subject: [PATCH 284/737] Allow fishing in river water, too --- mods/ITEMS/mcl_fishing/init.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_fishing/init.lua b/mods/ITEMS/mcl_fishing/init.lua index e3eea80a..f02b8f8b 100644 --- a/mods/ITEMS/mcl_fishing/init.lua +++ b/mods/ITEMS/mcl_fishing/init.lua @@ -187,8 +187,8 @@ local bobber_on_step = function(self, dtime) end end - --if in liquid then bob. - if def.liquidtype == "source" and def.name == "mcl_core:water_source" then + -- If in water, then bob. + if def.liquidtype == "source" and minetest.get_item_group(def.name, "water") ~= 0 then if self._oldy == nil then self.object:set_pos({x=self.object:get_pos().x,y=math.floor(self.object:get_pos().y)+.5,z=self.object:get_pos().z}) self._oldy = self.object:get_pos().y From 06be98a676e4b184f1cac72a9a63ffdf58bc311f Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 10 Sep 2019 15:14:46 +0200 Subject: [PATCH 285/737] Remove legacy carrot on a stick recipe --- mods/MISC/mcl_temp_helper_recipes/init.lua | 18 ------------------ 1 file changed, 18 deletions(-) diff --git a/mods/MISC/mcl_temp_helper_recipes/init.lua b/mods/MISC/mcl_temp_helper_recipes/init.lua index 139e6d50..fc18727a 100644 --- a/mods/MISC/mcl_temp_helper_recipes/init.lua +++ b/mods/MISC/mcl_temp_helper_recipes/init.lua @@ -73,24 +73,6 @@ minetest.register_craft({ } }) -minetest.register_craft({ - output = "mcl_mobitems:carrot_on_a_stick", - recipe = { - { "", "", "mcl_core:stick", }, - { "", "mcl_core:stick", "mcl_mobitems:string", }, - { "mcl_core:stick", "", "mcl_farming:carrot_item" }, - }, -}) - -minetest.register_craft({ - output = "mcl_mobitems:carrot_on_a_stick", - recipe = { - { "mcl_core:stick", "", "" }, - { "mcl_mobitems:string", "mcl_core:stick", "", }, - { "mcl_farming:carrot_item", "", "mcl_core:stick" }, - }, -}) - -- Make red sand, red sandstone and more craftable in v6 -- NOTE: When you change these, also update mcl_craftguide for the "v6" icon in -- the craft guide! From 5dd002b598b2a4d91dbd0343702103ea537d8f41 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 10 Sep 2019 15:16:49 +0200 Subject: [PATCH 286/737] Fishing: More comment cleanup --- mods/ITEMS/mcl_fishing/init.lua | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/mods/ITEMS/mcl_fishing/init.lua b/mods/ITEMS/mcl_fishing/init.lua index f02b8f8b..be7bdbda 100644 --- a/mods/ITEMS/mcl_fishing/init.lua +++ b/mods/ITEMS/mcl_fishing/init.lua @@ -193,7 +193,6 @@ local bobber_on_step = function(self, dtime) self.object:set_pos({x=self.object:get_pos().x,y=math.floor(self.object:get_pos().y)+.5,z=self.object:get_pos().z}) self._oldy = self.object:get_pos().y end - minetest.log(self.object:get_pos().y.." "..self._oldy) -- reset to original position after dive. if self.object:get_pos().y > self._oldy then self.object:set_pos({x=self.object:get_pos().x,y=self._oldy,z=self.object:get_pos().z}) @@ -202,7 +201,7 @@ local bobber_on_step = function(self, dtime) end if self._dive then for i=1,2 do - --spray bubbles there's a fish. + -- Spray bubbles when there's a fish. minetest.add_particle({ pos = {x=epos["x"]+math.random(-1,1)*math.random()/2,y=epos["y"]+0.1,z=epos["z"]+math.random(-1,1)*math.random()/2}, velocity = {x=0, y=4, z=0}, @@ -222,7 +221,7 @@ local bobber_on_step = function(self, dtime) self._dive = false end else if self._waittick == nil then - --wait for random number of ticks. + -- wait for random number of ticks. self._waittick = math.random(50,800) else if self._tick ~= self._waittick then @@ -296,8 +295,7 @@ minetest.register_tool("mcl_fishing:fishing_rod", { description = S("Fishing Rod"), _doc_items_longdesc = S("Fishing rods can be used to catch fish."), _doc_items_usagehelp = S("Rightclick to launch the bobber. When it sinks right-click again to reel in an item. Who knows what you're going to catch?"), - -- This item is incomplete, hide it from creative inventory - groups = { tool=1}, + groups = { tool=1 }, inventory_image = "mcl_fishing_fishing_rod.png", stack_max = 1, on_place = fish, From 18069b069c200e58c3ec5d8a9ab78594602a7b07 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 10 Sep 2019 15:19:18 +0200 Subject: [PATCH 287/737] Update German fishing rod translation --- mods/ITEMS/mcl_fishing/locale/mcl_fishing.de.tr | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_fishing/locale/mcl_fishing.de.tr b/mods/ITEMS/mcl_fishing/locale/mcl_fishing.de.tr index 32500e0b..75120cd3 100644 --- a/mods/ITEMS/mcl_fishing/locale/mcl_fishing.de.tr +++ b/mods/ITEMS/mcl_fishing/locale/mcl_fishing.de.tr @@ -1,7 +1,7 @@ # textdomain: mcl_fishing Fishing Rod=Angel Fishing rods can be used to catch fish.=Mit Angeln fängt man Fische. -Rightclick a water source to try to go fishing. Who knows what you're going to catch?=Rechtsklicken sie auf eine Wasserquelle, um zu angeln. Wer weiß, was Sie wohl fangen werfen? +Rightclick to launch the bobber. When it sinks right-click again to reel in an item. Who knows what you're going to catch?=Rechtsklicken, um den Schwimmer auszuwerfen. Wenn er sinkt, erneut rechtsklicken, um etwas zu fangen. Wer weiß, was Sie fangen werden? Raw Fish=Roher Fisch Raw fish is obtained by fishing and is a food item which can be eaten safely. Cooking it improves its nutritional value.=Rohen Fisch kann man mit Angeln fangen. Er ist ein Lebensmittel, den man sicher verzehren kann. Er kann gekocht werden, um seinen Nährwert zu erhöhen. Cooked Fish=Gekochter Fisch From 955638bccd53528d03ea63c214e1ebc965f8e0e2 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 10 Sep 2019 15:45:26 +0200 Subject: [PATCH 288/737] Harden minetest.after check --- mods/ENTITIES/mcl_mobs/api.lua | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/mods/ENTITIES/mcl_mobs/api.lua b/mods/ENTITIES/mcl_mobs/api.lua index b3e87178..912cfaf8 100644 --- a/mods/ENTITIES/mcl_mobs/api.lua +++ b/mods/ENTITIES/mcl_mobs/api.lua @@ -453,14 +453,14 @@ local check_for_death = function(self, cause, cmi_cause) self.health = self.hp_max end - -- play damage sound if health was reduced and make mob flash red. + -- play damage sound if health was reduced and make mob flash red. if damaged then self.object:set_texture_mod("^[colorize:#FF000040") - minetest.after(.2, function() - if self then + minetest.after(.2, function(self) + if self and self.object then self.object:set_texture_mod("") end - end) + end, self) mob_sound(self, self.sounds.damage) end From 2fecf0336c546c216050ee234a9635b3a3145a39 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 10 Sep 2019 16:00:41 +0200 Subject: [PATCH 289/737] Mobs: Stack texture mod effects --- mods/ENTITIES/mcl_mobs/api.lua | 43 ++++++++++++++++++++++++++++++---- 1 file changed, 38 insertions(+), 5 deletions(-) diff --git a/mods/ENTITIES/mcl_mobs/api.lua b/mods/ENTITIES/mcl_mobs/api.lua index 912cfaf8..4324aa69 100644 --- a/mods/ENTITIES/mcl_mobs/api.lua +++ b/mods/ENTITIES/mcl_mobs/api.lua @@ -199,6 +199,36 @@ function mobs:yaw(self, yaw, delay) set_yaw(self, yaw, delay) end +local add_texture_mod = function(self, mod) + local full_mod = "" + local already_added = false + for i=1, #self.texture_mods do + if mod == self.texture_mods[i] then + already_added = true + end + full_mod = full_mod .. self.texture_mods[i] + end + if not already_added then + full_mod = full_mod .. mod + table.insert(self.texture_mods, mod) + end + self.object:set_texture_mod(full_mod) +end +local remove_texture_mod = function(self, mod) + local full_mod = "" + local remove = {} + for i=1, #self.texture_mods do + if self.texture_mods[i] ~= mod then + full_mod = full_mod .. self.texture_mods[i] + else + table.insert(remove, i) + end + end + for i=#remove, 1 do + table.remove(self.texture_mods, remove[i]) + end + self.object:set_texture_mod(full_mod) +end -- set defined animation local set_animation = function(self, anim) @@ -455,10 +485,10 @@ local check_for_death = function(self, cause, cmi_cause) -- play damage sound if health was reduced and make mob flash red. if damaged then - self.object:set_texture_mod("^[colorize:#FF000040") + add_texture_mod(self, "^[colorize:#FF000040") minetest.after(.2, function(self) if self and self.object then - self.object:set_texture_mod("") + remove_texture_mod(self, "^[colorize:#FF000040") end end, self) mob_sound(self, self.sounds.damage) @@ -1978,7 +2008,7 @@ local do_states = function(self, dtime) self.timer = 0 self.blinktimer = 0 self.blinkstatus = false - self.object:set_texture_mod("") + remove_texture_mod(self, "^[brighten") end -- walk right up to player unless the timer is active @@ -2004,9 +2034,9 @@ local do_states = function(self, dtime) self.blinktimer = 0 if self.blinkstatus then - self.object:set_texture_mod("") + remove_texture_mod(self, "^[brighten") else - self.object:set_texture_mod("^[brighten") + add_texture_mod(self, "^[brighten") end self.blinkstatus = not self.blinkstatus @@ -2773,6 +2803,8 @@ local mob_activate = function(self, staticdata, def, dtime) self.jump_sound_cooloff = 0 -- used to prevent jump sound from being played too often in short time self.opinion_sound_cooloff = 0 -- used to prevent sound spam of particular sound types + self.texture_mods = {} + -- check existing nametag if not self.nametag then self.nametag = def.nametag @@ -3127,6 +3159,7 @@ minetest.register_entity(name, { glow = def.glow, can_despawn = can_despawn, child = def.child or false, + texture_mods = {}, -- End of MCL2 extensions on_spawn = def.on_spawn, From cf47e7de9e00278d140e4d875323393a4cac6e8f Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 10 Sep 2019 16:13:11 +0200 Subject: [PATCH 290/737] Add Rootyjr to credits --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 50f08f4d..c748769c 100644 --- a/README.md +++ b/README.md @@ -200,6 +200,7 @@ There are so many people to list (sorry). Check out the respective mod directori * [Wuzzy](https://forum.minetest.net/memberlist.php?mode=viewprofile&u=3082): Main programmer of most mods * davedevils: Creator of MineClone on which MineClone 2 is based on * [ex-bart](https://github.com/ex-bart): Redstone comparators +* [Rootyjr](https://github.com/Rootyjr): Fishing rod and bugfixes * Lots of other people: TO BE WRITTEN (see mod directories for details) ### Textures From dae4dc6924c5d91b8a0dbed79f540556379eae80 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 10 Sep 2019 16:27:32 +0200 Subject: [PATCH 291/737] Remove legacy polished stone recipe --- mods/MISC/mcl_temp_helper_recipes/init.lua | 8 -------- 1 file changed, 8 deletions(-) diff --git a/mods/MISC/mcl_temp_helper_recipes/init.lua b/mods/MISC/mcl_temp_helper_recipes/init.lua index fc18727a..2bb7ff61 100644 --- a/mods/MISC/mcl_temp_helper_recipes/init.lua +++ b/mods/MISC/mcl_temp_helper_recipes/init.lua @@ -112,14 +112,6 @@ minetest.register_craft({ }, }) -minetest.register_craft({ - output = "mcl_core:stone_smooth 2", - recipe = { - { "mcl_stairs:slab_stone" }, - { "mcl_stairs:slab_stone" }, - }, -}) - minetest.register_craft({ output = "mcl_core:gold_ingot 9", recipe = {{ "mcl_core:emerald" }}, From 9416305fa60118d9f4a8d60e823d2ce46901766c Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 10 Sep 2019 17:09:17 +0200 Subject: [PATCH 292/737] Fix sheep not regrow wool if mobs_griefing=false --- mods/ENTITIES/mcl_mobs/api.lua | 7 ++++--- mods/ENTITIES/mcl_mobs/api.txt | 5 +++-- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/mods/ENTITIES/mcl_mobs/api.lua b/mods/ENTITIES/mcl_mobs/api.lua index 4324aa69..0cb272fb 100644 --- a/mods/ENTITIES/mcl_mobs/api.lua +++ b/mods/ENTITIES/mcl_mobs/api.lua @@ -1101,8 +1101,7 @@ end -- find and replace what mob is looking for (grass, wheat etc.) local replace = function(self, pos) - if not mobs_griefing - or not self.replace_rate + if not self.replace_rate or not self.replace_what or self.child == true or self.object:get_velocity().y ~= 0 @@ -1139,7 +1138,9 @@ local replace = function(self, pos) if on_replace_return ~= false then - minetest.set_node(pos, {name = with}) + if mobs_griefing then + minetest.set_node(pos, {name = with}) + end -- when cow/sheep eats grass, replace wool and milk if self.gotten == true then diff --git a/mods/ENTITIES/mcl_mobs/api.txt b/mods/ENTITIES/mcl_mobs/api.txt index b3e2f03e..999ba4a8 100644 --- a/mods/ENTITIES/mcl_mobs/api.txt +++ b/mods/ENTITIES/mcl_mobs/api.txt @@ -243,8 +243,9 @@ eating. 'replace_rate' how random should the replace rate be (typically 10) 'replace_offset' +/- value to check specific node to replace - 'on_replace(self, pos, oldnode, newnode)' is called when mob is about to - replace a node. + 'on_replace(self, pos, oldnode, newnode)' + is called when mob is about to replace a node. Also called + when not actually replacing due to mobs_griefing setting being false. 'self' ObjectRef of mob 'pos' Position of node to replace 'oldnode' Current node From 44bd5dba6c4d1bdb962f3fffb4231c7ff0d827c4 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 10 Sep 2019 17:14:34 +0200 Subject: [PATCH 293/737] Mobs: Don't set gotten in API anymore --- mods/ENTITIES/mcl_mobs/api.lua | 7 ------- mods/ENTITIES/mcl_mobs/api.txt | 6 ++++-- 2 files changed, 4 insertions(+), 9 deletions(-) diff --git a/mods/ENTITIES/mcl_mobs/api.lua b/mods/ENTITIES/mcl_mobs/api.lua index 0cb272fb..0f028e8d 100644 --- a/mods/ENTITIES/mcl_mobs/api.lua +++ b/mods/ENTITIES/mcl_mobs/api.lua @@ -1142,11 +1142,6 @@ local replace = function(self, pos) minetest.set_node(pos, {name = with}) end - -- when cow/sheep eats grass, replace wool and milk - if self.gotten == true then - self.gotten = false - self.object:set_properties(self) - end end end end @@ -3780,8 +3775,6 @@ function mobs:feed_tame(self, clicker, feed_count, breed, tame) self.horny = true end - self.gotten = false - if tame then self.tamed = true diff --git a/mods/ENTITIES/mcl_mobs/api.txt b/mods/ENTITIES/mcl_mobs/api.txt index 999ba4a8..7c2f658e 100644 --- a/mods/ENTITIES/mcl_mobs/api.txt +++ b/mods/ENTITIES/mcl_mobs/api.txt @@ -303,8 +303,10 @@ for each mob. 'self.child_texture' contains mob child texture when growing up 'self.base_texture' contains current skin texture which was randomly selected from textures list - 'self.gotten' this is used for obtaining milk from cow and wool from - sheep + 'self.gotten' this is used to track whether some special item has been + gotten from the mob, for example, wool from sheep. + Initialized as false, and the mob must set this value + manually. 'self.horny' when animal fed enough it is set to true and animal can breed with same animal 'self.hornytimer' background timer that controls breeding functions and From b3bbf38fd76dd092fc35c1cdddb0bbe45785b090 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 10 Sep 2019 17:36:47 +0200 Subject: [PATCH 294/737] Add aligator to credits --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index c748769c..ab2d7c53 100644 --- a/README.md +++ b/README.md @@ -201,6 +201,7 @@ There are so many people to list (sorry). Check out the respective mod directori * davedevils: Creator of MineClone on which MineClone 2 is based on * [ex-bart](https://github.com/ex-bart): Redstone comparators * [Rootyjr](https://github.com/Rootyjr): Fishing rod and bugfixes +* [aligator](https://github.com/aligator): Improvement of doors * Lots of other people: TO BE WRITTEN (see mod directories for details) ### Textures From 3cba55703a2c7caf0e054d1e265fb5ce22eb144b Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Wed, 11 Sep 2019 11:17:42 +0200 Subject: [PATCH 295/737] Boats: Allow very slow movement on ground --- mods/ENTITIES/mcl_boats/init.lua | 47 +++++++++++++++++--------------- 1 file changed, 25 insertions(+), 22 deletions(-) diff --git a/mods/ENTITIES/mcl_boats/init.lua b/mods/ENTITIES/mcl_boats/init.lua index 32815855..56f6e5ec 100644 --- a/mods/ENTITIES/mcl_boats/init.lua +++ b/mods/ENTITIES/mcl_boats/init.lua @@ -34,6 +34,7 @@ local boat_visual_size = {x = 3, y = 3} local driver_visual_size = { x = 1/boat_visual_size.x, y = 1/boat_visual_size.y } local paddling_speed = 22 local boat_y_offset = 0.35 +local boat_y_offset_ground = boat_y_offset + 0.6 -- -- Boat entity @@ -145,12 +146,21 @@ end function boat.on_step(self, dtime) self._v = get_v(self.object:get_velocity()) * get_sign(self._v) + local in_water = true + local v_factor = 1 + local v_slowdown = 0.02 + local p = self.object:get_pos() + if not is_water({x=p.x, y=p.y-boat_y_offset, z=p.z}) then + in_water = false + v_factor = 0.405 + v_slowdown = 0.04 + end if self._driver then local ctrl = self._driver:get_player_control() local yaw = self.object:get_yaw() if ctrl.up then -- Forwards - self._v = self._v + 0.1 + self._v = self._v + 0.1 * v_factor -- Paddling animation if self._animation ~= 1 then @@ -159,7 +169,7 @@ function boat.on_step(self, dtime) end elseif ctrl.down then -- Backwards - self._v = self._v - 0.1 + self._v = self._v - 0.1 * v_factor -- Paddling animation, reversed if self._animation ~= -1 then @@ -175,15 +185,15 @@ function boat.on_step(self, dtime) end if ctrl.left then if self._v < 0 then - self.object:set_yaw(yaw - (1 + dtime) * 0.03) + self.object:set_yaw(yaw - (1 + dtime) * 0.03 * v_factor) else - self.object:set_yaw(yaw + (1 + dtime) * 0.03) + self.object:set_yaw(yaw + (1 + dtime) * 0.03 * v_factor) end elseif ctrl.right then if self._v < 0 then - self.object:set_yaw(yaw + (1 + dtime) * 0.03) + self.object:set_yaw(yaw + (1 + dtime) * 0.03 * v_factor) else - self.object:set_yaw(yaw - (1 + dtime) * 0.03) + self.object:set_yaw(yaw - (1 + dtime) * 0.03 * v_factor) end end else @@ -193,13 +203,11 @@ function boat.on_step(self, dtime) self._animation = 0 end end - local velo = self.object:get_velocity() - if self._v == 0 and velo.x == 0 and velo.y == 0 and velo.z == 0 then - self.object:set_pos(self.object:get_pos()) - return - end local s = get_sign(self._v) - self._v = self._v - 0.02 * s + if not in_water and math.abs(self._v) > 0.1 then + v_slowdown = v_slowdown * 5 + end + self._v = self._v - v_slowdown * s if s ~= get_sign(self._v) then self.object:set_velocity({x = 0, y = 0, z = 0}) self._v = 0 @@ -209,18 +217,12 @@ function boat.on_step(self, dtime) self._v = 5 * get_sign(self._v) end - local p = self.object:get_pos() p.y = p.y - boat_y_offset local new_velo local new_acce = {x = 0, y = 0, z = 0} if not is_water(p) then local nodedef = minetest.registered_nodes[minetest.get_node(p).name] - if (not nodedef) or nodedef.walkable then - self._v = 0 - new_acce = {x = 0, y = 1, z = 0} - else - new_acce = {x = 0, y = -9.8, z = 0} - end + new_acce = {x = 0, y = -9.8, z = 0} new_velo = get_velocity(self._v, self.object:get_yaw(), self.object:get_velocity().y) self.object:set_pos(self.object:get_pos()) @@ -302,10 +304,11 @@ for b=1, #boat_ids do end end - if not is_water(pointed_thing.under) then - return + if is_water(pointed_thing.under) then + pointed_thing.under.y = pointed_thing.under.y + boat_y_offset + else + pointed_thing.under.y = pointed_thing.under.y + boat_y_offset_ground end - pointed_thing.under.y = pointed_thing.under.y + boat_y_offset local boat = minetest.add_entity(pointed_thing.under, "mcl_boats:boat") boat:get_luaentity()._itemstring = itemstring boat:set_properties({textures = { "mcl_boats_texture_"..images[b].."_boat.png" }}) From b6c3cc0ed78b8b6bac0b6e1dc4e23236e35f9a7c Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Wed, 11 Sep 2019 12:11:04 +0200 Subject: [PATCH 296/737] Tweak boat physics when inside water --- mods/ENTITIES/mcl_boats/init.lua | 41 ++++++++++++++++++-------------- 1 file changed, 23 insertions(+), 18 deletions(-) diff --git a/mods/ENTITIES/mcl_boats/init.lua b/mods/ENTITIES/mcl_boats/init.lua index 56f6e5ec..eeba2b6c 100644 --- a/mods/ENTITIES/mcl_boats/init.lua +++ b/mods/ENTITIES/mcl_boats/init.lua @@ -146,15 +146,22 @@ end function boat.on_step(self, dtime) self._v = get_v(self.object:get_velocity()) * get_sign(self._v) - local in_water = true + local on_water = true + local in_water = false local v_factor = 1 local v_slowdown = 0.02 local p = self.object:get_pos() - if not is_water({x=p.x, y=p.y-boat_y_offset, z=p.z}) then - in_water = false - v_factor = 0.405 + if (not is_water({x=p.x, y=p.y-boat_y_offset, z=p.z})) then + on_water = false + v_factor = 0.5 v_slowdown = 0.04 + elseif (is_water({x=p.x, y=p.y-boat_y_offset+1, z=p.z})) then + on_water = false + in_water = true + v_factor = 0.75 + v_slowdown = 0.05 end + if self._driver then local ctrl = self._driver:get_player_control() local yaw = self.object:get_yaw() @@ -204,14 +211,14 @@ function boat.on_step(self, dtime) end end local s = get_sign(self._v) - if not in_water and math.abs(self._v) > 0.1 then - v_slowdown = v_slowdown * 5 + if not on_water and not in_water and math.abs(self._v) > 0.25 then + v_slowdown = math.min(self._v - 0.25, v_slowdown * 5) + elseif in_water and math.abs(self._v) > 0.5 then + v_slowdown = math.min(self._v - 0.5, v_slowdown * 5) end self._v = self._v - v_slowdown * s if s ~= get_sign(self._v) then - self.object:set_velocity({x = 0, y = 0, z = 0}) self._v = 0 - return end if math.abs(self._v) > 5 then self._v = 5 * get_sign(self._v) @@ -221,35 +228,33 @@ function boat.on_step(self, dtime) local new_velo local new_acce = {x = 0, y = 0, z = 0} if not is_water(p) then + -- Not on water or inside water: Free fall local nodedef = minetest.registered_nodes[minetest.get_node(p).name] new_acce = {x = 0, y = -9.8, z = 0} new_velo = get_velocity(self._v, self.object:get_yaw(), self.object:get_velocity().y) - self.object:set_pos(self.object:get_pos()) else p.y = p.y + 1 if is_water(p) then + -- Inside water: Slowly sink local y = self.object:get_velocity().y - if y >= 5 then - y = 5 - elseif y < 0 then - new_acce = {x = 0, y = 20, z = 0} - else - new_acce = {x = 0, y = 5, z = 0} + y = y - 0.01 + if y < -0.2 then + y = -0.2 end + new_acce = {x = 0, y = 0, z = 0} new_velo = get_velocity(self._v, self.object:get_yaw(), y) - self.object:set_pos(self.object:get_pos()) else + -- On top of water new_acce = {x = 0, y = 0, z = 0} if math.abs(self.object:get_velocity().y) < 1 then local pos = self.object:get_pos() pos.y = math.floor(pos.y) + boat_y_offset - self.object:set_pos(pos) new_velo = get_velocity(self._v, self.object:get_yaw(), 0) + self.object:set_pos(pos) else new_velo = get_velocity(self._v, self.object:get_yaw(), self.object:get_velocity().y) - self.object:set_pos(self.object:get_pos()) end end end From df7acfc8ae68c39227aa3c5bd33bbccb4783ff2e Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Wed, 11 Sep 2019 12:23:56 +0200 Subject: [PATCH 297/737] Boats: Can place properly at all sides --- mods/ENTITIES/mcl_boats/init.lua | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/mods/ENTITIES/mcl_boats/init.lua b/mods/ENTITIES/mcl_boats/init.lua index eeba2b6c..58b8d5b2 100644 --- a/mods/ENTITIES/mcl_boats/init.lua +++ b/mods/ENTITIES/mcl_boats/init.lua @@ -35,6 +35,7 @@ local driver_visual_size = { x = 1/boat_visual_size.x, y = 1/boat_visual_size.y local paddling_speed = 22 local boat_y_offset = 0.35 local boat_y_offset_ground = boat_y_offset + 0.6 +local boat_side_offset = 1.001 -- -- Boat entity @@ -298,7 +299,7 @@ for b=1, #boat_ids do stack_max = 1, on_place = function(itemstack, placer, pointed_thing) if pointed_thing.type ~= "node" then - return + return itemstack end -- Call on_rightclick if the pointed node defines it @@ -309,12 +310,17 @@ for b=1, #boat_ids do end end - if is_water(pointed_thing.under) then - pointed_thing.under.y = pointed_thing.under.y + boat_y_offset + local pos = table.copy(pointed_thing.under) + local dir = vector.subtract(pointed_thing.above, pointed_thing.under) + + if math.abs(dir.x) > 0.9 or math.abs(dir.z) > 0.9 then + pos = vector.add(pos, vector.multiply(dir, boat_side_offset)) + elseif is_water(pos) then + pos = vector.add(pos, vector.multiply(dir, boat_y_offset)) else - pointed_thing.under.y = pointed_thing.under.y + boat_y_offset_ground + pos = vector.add(pos, vector.multiply(dir, boat_y_offset_ground)) end - local boat = minetest.add_entity(pointed_thing.under, "mcl_boats:boat") + local boat = minetest.add_entity(pos, "mcl_boats:boat") boat:get_luaentity()._itemstring = itemstring boat:set_properties({textures = { "mcl_boats_texture_"..images[b].."_boat.png" }}) boat:set_yaw(placer:get_look_horizontal()) From e633f15eedab750525b06d840307598d02979b75 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Wed, 11 Sep 2019 12:50:58 +0200 Subject: [PATCH 298/737] Fix boat behavior a bit when falling on water --- mods/ENTITIES/mcl_boats/init.lua | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/mods/ENTITIES/mcl_boats/init.lua b/mods/ENTITIES/mcl_boats/init.lua index 58b8d5b2..9ce552c9 100644 --- a/mods/ENTITIES/mcl_boats/init.lua +++ b/mods/ENTITIES/mcl_boats/init.lua @@ -248,11 +248,8 @@ function boat.on_step(self, dtime) else -- On top of water new_acce = {x = 0, y = 0, z = 0} - if math.abs(self.object:get_velocity().y) < 1 then - local pos = self.object:get_pos() - pos.y = math.floor(pos.y) + boat_y_offset + if math.abs(self.object:get_velocity().y) < 0 then new_velo = get_velocity(self._v, self.object:get_yaw(), 0) - self.object:set_pos(pos) else new_velo = get_velocity(self._v, self.object:get_yaw(), self.object:get_velocity().y) From 30a954b8749f1b7363a799e2328f3c2ace716ea3 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Wed, 11 Sep 2019 13:28:14 +0200 Subject: [PATCH 299/737] Increase max. speed of boats --- mods/ENTITIES/mcl_boats/init.lua | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/mods/ENTITIES/mcl_boats/init.lua b/mods/ENTITIES/mcl_boats/init.lua index 9ce552c9..f5c14940 100644 --- a/mods/ENTITIES/mcl_boats/init.lua +++ b/mods/ENTITIES/mcl_boats/init.lua @@ -221,9 +221,6 @@ function boat.on_step(self, dtime) if s ~= get_sign(self._v) then self._v = 0 end - if math.abs(self._v) > 5 then - self._v = 5 * get_sign(self._v) - end p.y = p.y - boat_y_offset local new_velo @@ -256,6 +253,14 @@ function boat.on_step(self, dtime) end end end + + -- Terminal velocity: 8 m/s per axis of travel + for _,axis in pairs({"z","y","x"}) do + if math.abs(new_velo[axis]) > 8 then + new_velo[axis] = 8 * get_sign(new_velo[axis]) + end + end + self.object:set_velocity(new_velo) self.object:set_acceleration(new_acce) end From 2913acc6e9598cd4a673ddd00ba10a0806b5ac05 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Wed, 11 Sep 2019 13:45:32 +0200 Subject: [PATCH 300/737] Version 0.54.0 --- README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/README.md b/README.md index ab2d7c53..aef3a429 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ An unofficial Minecraft-like game for Minetest. Forked from MineClone by davedevils. Developed by Wuzzy and contributors. Not developed or endorsed by Mojang AB. -Version: 0.53.4 +Version: 0.54.0 ### Gameplay You start in a randomly-generated world made entirely of cubes. You can explore @@ -67,7 +67,6 @@ an explanation. #### Incomplete items These items do not work yet, but you can get them with `/giveme` for testing: -* Fishing Rod: `mcl_fishing:fishing_rod` * Activator Rail: `mcl_minecarts:activator_rail` * Minecart with Chest: `mcl_minecarts:chest_minecart` * Minecart with Furnace: `mcl_minecarts:furnace_minecart` From 25e2bd106f1ae6a3e7c5922a7faf3e1d9bba9ef3 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Wed, 11 Sep 2019 13:56:52 +0200 Subject: [PATCH 301/737] Re-enable cookFish achievement --- mods/HUD/mcl_achievements/init.lua | 3 --- 1 file changed, 3 deletions(-) diff --git a/mods/HUD/mcl_achievements/init.lua b/mods/HUD/mcl_achievements/init.lua index cfeea18b..7473568d 100644 --- a/mods/HUD/mcl_achievements/init.lua +++ b/mods/HUD/mcl_achievements/init.lua @@ -132,14 +132,11 @@ awards.register_achievement("mcl:acquireIron", { description = S("Take an iron ingot from a furnace's output slot.\nHint: To smelt an iron ingot, put a fuel (like coal) and iron ore into a furnace."), icon = "default_steel_ingot.png", }) ---[[ --- TODO: Re-enable when fishing rod is available awards.register_achievement("mcl:cookFish", { title = S("Delicious Fish"), description = S("Take a cooked fish from a furnace.\nHint: Use a fishing rod to catch a fish and cook it in a furnace."), icon = "mcl_fishing_fish_cooked.png", }) -]] -- Other achievements triggered outside of mcl_achievements From 31ae28e66ef159651b161844ba2f4f69ac4a076a Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Wed, 11 Sep 2019 14:07:15 +0200 Subject: [PATCH 302/737] Add fishing rod in mob mods --- mods/ENTITIES/mobs_mc/villager.lua | 4 ++-- mods/ENTITIES/mobs_mc_gameconfig/init.lua | 3 +-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/mods/ENTITIES/mobs_mc/villager.lua b/mods/ENTITIES/mobs_mc/villager.lua index 4c73524f..e42cb690 100644 --- a/mods/ENTITIES/mobs_mc/villager.lua +++ b/mods/ENTITIES/mobs_mc/villager.lua @@ -98,9 +98,9 @@ local professions = { { { { "mcl_fishing:fish_raw", 6, 6, "mcl_core:emerald", 1, 1 }, { "mcl_fishing:fish_cooked", 6, 6 } }, { { "mcl_mobitems:string", 15, 20 }, E1 }, - { { "mcl_core:coal_lump", 16, 24 }, E1 }, + -- TODO: replace with enchanted fishing rod + { { "mcl_core:emerald", 3, 11 }, { "mcl_fishing:fishing_rod", 1, 1} }, }, - -- TODO: enchanted fishing rod }, }, fletcher = { diff --git a/mods/ENTITIES/mobs_mc_gameconfig/init.lua b/mods/ENTITIES/mobs_mc_gameconfig/init.lua index f24952e9..4fe025bb 100644 --- a/mods/ENTITIES/mobs_mc_gameconfig/init.lua +++ b/mods/ENTITIES/mobs_mc_gameconfig/init.lua @@ -88,8 +88,7 @@ mobs_mc.override.items = { mycelium = "mcl_core:mycelium", carrot = "mcl_farming:carrot_item", golden_carrot = "mcl_farming:carrot_item_gold", - fishing_rod = "mcl_core:stick", - --TODO: Re-enable: fishing_rod = "mcl_fishing:fishing_rod", + fishing_rod = "mcl_fishing:fishing_rod", fish_raw = "mcl_fishing:fish_raw", salmon_raw = "mcl_fishing:salmon_raw", clownfish_raw = "mcl_fishing:clownfish_raw", From a8a875a7b419e613735db3ac9c0d0413f89b59b4 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Wed, 11 Sep 2019 16:06:34 +0200 Subject: [PATCH 303/737] Add biomeinfo mod --- mods/CORE/biomeinfo/API.md | 42 ++++++++ mods/CORE/biomeinfo/README.md | 11 +++ mods/CORE/biomeinfo/init.lua | 179 ++++++++++++++++++++++++++++++++++ mods/CORE/biomeinfo/mod.conf | 2 + 4 files changed, 234 insertions(+) create mode 100644 mods/CORE/biomeinfo/API.md create mode 100644 mods/CORE/biomeinfo/README.md create mode 100644 mods/CORE/biomeinfo/init.lua create mode 100644 mods/CORE/biomeinfo/mod.conf diff --git a/mods/CORE/biomeinfo/API.md b/mods/CORE/biomeinfo/API.md new file mode 100644 index 00000000..7713bf2a --- /dev/null +++ b/mods/CORE/biomeinfo/API.md @@ -0,0 +1,42 @@ +# Biome Info API +This document explains the API of this mod. + +## v6 mapgen functions +These are functions for the v6 mapgen only. + +Use these functions only in worlds in which the v6 mapgen is used. +If you use these in any other mapgen, bad things might happen. + +### `biomeinfo.get_v6_humidity(pos)` +Get the biome humidity at pos (for v6 mapgen). + +### `biomeinfo.get_v6_heat(pos)` +Get the biome heat/temperature at pos (for v6 mapgen). + +### `biomeinfo.get_v6_biome(pos)` +Get the v6 biome at pos. +Returns a string, which is the unique biome name. + +Note: This function currently ignores the `biomeblend` v6 mapgen flag, +it just pretends this setting is disabled. +This is normally not a problem, but at areas where biomes blend, +the result is not perfectly accurate and just an estimate. + +### `biomeinfo.get_active_v6_biomes()` +Returns a table containing the names of all v6 biomes that are actively +used in the current world, e.g. those that have been activated +by the use of the mapgen v6 flags (`mgv6_spflags`). + +### `biomeinfo.all_v6_biomes` +This is a table containing all v6 biomes (as strings), even those that +might not be used in the current world. + +### v6 biome names + +These are the biome names used in this mod: + +* Normal +* Desert +* Jungle +* Tundra +* Taiga diff --git a/mods/CORE/biomeinfo/README.md b/mods/CORE/biomeinfo/README.md new file mode 100644 index 00000000..d895dadb --- /dev/null +++ b/mods/CORE/biomeinfo/README.md @@ -0,0 +1,11 @@ +# Biome Info API [`biomeinfo`] +This is an API mod for mod developers to add a couple of missing +biome-related functions. +Currently, this mod only adds v6-related functions. +Most importantly, you can get the heat, humidity and biome in the v6 mapgen. + +See `API.md` for the API documentation. + +Current version: 1.0.1 (this is a [SemVer](https://semver.org/)) + +License: MIT License diff --git a/mods/CORE/biomeinfo/init.lua b/mods/CORE/biomeinfo/init.lua new file mode 100644 index 00000000..1ba18284 --- /dev/null +++ b/mods/CORE/biomeinfo/init.lua @@ -0,0 +1,179 @@ +biomeinfo = {} + +-- Copied from mapgen_v6.h +local MGV6_FREQ_HOT = 0.4 +local MGV6_FREQ_SNOW = -0.4 +local MGV6_FREQ_TAIGA = 0.5 +local MGV6_FREQ_JUNGLE = 0.5 + +-- Biome types +local BT_NORMAL = "Normal" +local BT_TUNDRA = "Tundra" +local BT_TAIGA = "Taiga" +local BT_DESERT = "Desert" +local BT_JUNGLE = "Jungle" + +-- Get mapgen settings + +local seed = tonumber(minetest.get_mapgen_setting("seed")) or 0 + +local mgv6_perlin_biome, mgv6_perlin_humidity, mgv6_np_biome + +local v6_flags_str = minetest.get_mapgen_setting("mgv6_spflags") +if v6_flags_str == nil then + v6_flags_str = "" +end +local v6_flags = string.split(v6_flags_str) +local v6_use_snow_biomes = true +local v6_use_jungles = true +-- TODO: Implement biome blend. +-- Currently we pretend biome blend is disabled. +-- This just makes the calculations inaccurate near biome boundaries, +-- but should be fine otherwise. +local v6_use_biome_blend = false +for f=1, #v6_flags do + local flag = v6_flags[f]:trim() + if flag == "nosnowbiomes" then + v6_use_snow_biomes = false + end + if flag == "snowbiomes" then + v6_use_snow_biomes = true + end + if flag == "nojungles" then + v6_use_jungles = false + end + if flag == "jungles" then + v6_use_jungles = true + end + if flag == "nobiomeblend" then + v6_use_biome_blend = false + end +-- TODO +-- if flag == "biomeblend" then +-- v6_use_biome_blend = true +-- end +end +-- Force-enable jungles when snowbiomes flag is set +if v6_use_snow_biomes then + v6_use_jungles = true +end +local v6_freq_desert = tonumber(minetest.get_mapgen_setting("mgv6_freq_desert") or 0.45) + +local NOISE_MAGIC_X = 1619 +local NOISE_MAGIC_Y = 31337 +local NOISE_MAGIC_Z = 52591 +local NOISE_MAGIC_SEED = 1013 +local noise2d = function(x, y, seed) + -- TODO: implement noise2d function for biome blend + return 0 +--[[ + local n = (NOISE_MAGIC_X * x + NOISE_MAGIC_Y * y + + NOISE_MAGIC_SEED * seed) & 0x7fffffff; + n = (n >> 13) ^ n; + n = (n * (n * n * 60493 + 19990303) + 1376312589) & 0x7fffffff; + return 1.0 - n / 0x40000000; +]] +end + +biomeinfo.all_v6_biomes = { + BT_NORMAL, + BT_DESERT, + BT_JUNGLE, + BT_TUNDRA, + BT_TAIGA +} + +local function init_perlins() + if not mgv6_perlin_biome then + mgv6_np_biome = minetest.get_mapgen_setting_noiseparams("mgv6_np_biome") + if mgv6_np_biome then + mgv6_perlin_biome = minetest.get_perlin(mgv6_np_biome) + end + end + if not mgv6_perlin_humidity then + local np_humidity = minetest.get_mapgen_setting_noiseparams("mgv6_np_humidity") + if np_humidity then + mgv6_perlin_humidity = minetest.get_perlin(np_humidity) + end + end +end + +function biomeinfo.get_active_v6_biomes() + local biomes = { BT_NORMAL, BT_DESERT } + if v6_use_jungles then + table.insert(biomes, BT_JUNGLE) + end + if v6_use_snow_biomes then + table.insert(biomes, BT_TUNDRA) + table.insert(biomes, BT_TAIGA) + end + return biomes +end + +function biomeinfo.get_v6_heat(pos) + init_perlins() + local bpos = vector.floor(pos) + -- The temperature noise needs a special offset (see calculateNoise in mapgen_v6.cpp) + return mgv6_perlin_biome:get_2d({x=bpos.x + mgv6_np_biome.spread.x*0.6, y=bpos.z + mgv6_np_biome.spread.z*0.2}) +end + +function biomeinfo.get_v6_humidity(pos) + init_perlins() + local bpos = vector.floor(pos) + return mgv6_perlin_humidity:get_2d({x=bpos.x, y=bpos.z}) +end + +-- Returns the v6 biome at pos. +-- Returns a string representing the biome name. +function biomeinfo.get_v6_biome(pos) + init_perlins() + local bpos = vector.floor(pos) + -- Based on the algorithm MapgenV6::getBiome in mapgen_v6.cpp + + local pos2d = {x=bpos.x, y=bpos.z} + if not mgv6_perlin_biome or not mgv6_perlin_humidity then + return "???" + end + local d = biomeinfo.get_v6_heat(bpos) + local h = biomeinfo.get_v6_humidity(bpos) + + if (v6_use_snow_biomes) then + local blend + if v6_use_biome_blend then + blend = noise2d(pos2d.x, pos2d.y, seed) / 40 + else + blend = 0 + end + + if (d > MGV6_FREQ_HOT + blend) then + if (h > MGV6_FREQ_JUNGLE + blend) then + return BT_JUNGLE + end + return BT_DESERT + end + if (d < MGV6_FREQ_SNOW + blend) then + if (h > MGV6_FREQ_TAIGA + blend) then + return BT_TAIGA + end + return BT_TUNDRA + end + return BT_NORMAL + end + + if (d > v6_freq_desert) then + return BT_DESERT + end + + if ((v6_use_biome_blend) and (d > v6_freq_desert - 0.10) and + ((noise2d(pos2d.x, pos2d.y, seed) + 1.0) > (v6_freq_desert - d) * 20.0)) then + return BT_DESERT + end + + if ((v6_use_jungles) and (h > 0.75)) then + return BT_JUNGLE + end + + return BT_NORMAL +end + + diff --git a/mods/CORE/biomeinfo/mod.conf b/mods/CORE/biomeinfo/mod.conf new file mode 100644 index 00000000..95be561a --- /dev/null +++ b/mods/CORE/biomeinfo/mod.conf @@ -0,0 +1,2 @@ +name = biomeinfo +description = Simple API to get data about biomes. From 76ed6ff8263f6b645a722179604d5bf91024d275 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Wed, 11 Sep 2019 16:06:41 +0200 Subject: [PATCH 304/737] MGV6: Generate witch huts only in Normal biome --- mods/MAPGEN/mcl_mapgen_core/depends.txt | 1 + mods/MAPGEN/mcl_mapgen_core/init.lua | 16 +++++++++------- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/mods/MAPGEN/mcl_mapgen_core/depends.txt b/mods/MAPGEN/mcl_mapgen_core/depends.txt index 9dc58fe6..783a7da4 100644 --- a/mods/MAPGEN/mcl_mapgen_core/depends.txt +++ b/mods/MAPGEN/mcl_mapgen_core/depends.txt @@ -1,5 +1,6 @@ mcl_init mcl_core +biomeinfo mclx_core? mcl_worlds mcl_cocoas diff --git a/mods/MAPGEN/mcl_mapgen_core/init.lua b/mods/MAPGEN/mcl_mapgen_core/init.lua index 7d3fbf21..8675b123 100644 --- a/mods/MAPGEN/mcl_mapgen_core/init.lua +++ b/mods/MAPGEN/mcl_mapgen_core/init.lua @@ -1170,7 +1170,8 @@ local function generate_structures(minp, maxp, seed, biomemap) -- Witch hut if ground_y <= 0 and nn == "mcl_core:dirt" then - local prob = minecraft_chunk_probability(48, minp, maxp) + local prob = minecraft_chunk_probability(48, minp, maxp) + if math.random(1, prob) == 1 then local swampland = minetest.get_biome_id("Swampland") local swampland_shore = minetest.get_biome_id("Swampland_shore") @@ -1179,19 +1180,19 @@ local function generate_structures(minp, maxp, seed, biomemap) local here_be_witches = false if mg_name == "v6" then - -- In ye good ol' landes of v6, witches will settle at any - -- shores of dirt. - here_be_witches = true + -- v6: In Normal biome + if biomeinfo.get_v6_biome(p) == "Normal" then + here_be_witches = true + end else - -- The townsfolk told me that witches live in the swamplands! + -- Other mapgens: In swampland biome local bi = xz_to_biomemap_index(p.x, p.z, minp, maxp) if biomemap[bi] == swampland or biomemap[bi] == swampland_shore then here_be_witches = true end end - -- We still need a bit of luck! - if here_be_witches and math.random(1, prob) == 1 then + if here_be_witches then local r = tostring(math.random(0, 3) * 90) -- "0", "90", "180" or 270" local p1 = {x=p.x-1, y=WITCH_HUT_HEIGHT+2, z=p.z-1} local size @@ -1268,6 +1269,7 @@ local function generate_structures(minp, maxp, seed, biomemap) end end end + end -- Ice spikes in v6 -- In other mapgens, ice spikes are generated as decorations. From 748b5d4a4bee6d876b5c346af69771f3b67b24dd Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Thu, 19 Sep 2019 00:35:28 +0200 Subject: [PATCH 305/737] Localize a variable --- mods/ITEMS/mcl_core/functions.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_core/functions.lua b/mods/ITEMS/mcl_core/functions.lua index 215db3f0..9eec03d0 100644 --- a/mods/ITEMS/mcl_core/functions.lua +++ b/mods/ITEMS/mcl_core/functions.lua @@ -648,7 +648,7 @@ function mcl_core.get_grass_block_type(pos) local biome_name = minetest.get_biome_name(biome) local reg_biome = minetest.registered_biomes[biome_name] if reg_biome then - biome_type = reg_biome._mcl_biome_type + local biome_type = reg_biome._mcl_biome_type dry = biome_type == "hot" end end From e64ef6e2546700c1b094a53fd981d26bf7567bea Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Thu, 19 Sep 2019 12:04:41 +0200 Subject: [PATCH 306/737] Prevent placement of meshhand nodes --- mods/PLAYER/mcl_meshhand/init.lua | 37 ++++++++++++++++++++++++++++--- 1 file changed, 34 insertions(+), 3 deletions(-) diff --git a/mods/PLAYER/mcl_meshhand/init.lua b/mods/PLAYER/mcl_meshhand/init.lua index 0ef9e201..2ccbc0b9 100644 --- a/mods/PLAYER/mcl_meshhand/init.lua +++ b/mods/PLAYER/mcl_meshhand/init.lua @@ -6,18 +6,34 @@ local def = minetest.registered_items[""] if has_mcl_skins == true then --generate a node for every skin for _,texture in pairs(mcl_skins.list) do + -- This is a fake node that should never be placed in the world minetest.register_node("mcl_meshhand:"..texture, { description = "", tiles = {texture..".png"}, - inventory_image = "blank.png", + inventory_image = "wieldhand.png", visual_scale = 1, wield_scale = {x=1,y=1,z=1}, paramtype = "light", drawtype = "mesh", mesh = "mcl_meshhand.b3d", + -- Prevent placement node_placement_prediction = "", + on_construct = function(pos) + minetest.log("error", "[mcl_meshhand] Trying to construct mcl_meshhand:"..texture.." at "..minetest.pos_to_string(pos)) + minetest.remove_node(pos) + end, + on_place = function(itemstack, placer, pointed_thing) + local spos = "" + if pointed_thing.above then + spos = minetest.pos_to_string(pointed_thing.above) + end + minetest.log("error", "[mcl_meshhand] Player tried to place mcl_meshhand:"..texture.." at "..spos) + itemstack:set_count(0) + return itemstack + end, + groups = { dig_immediate = 3, not_in_creative_inventory = 1 }, range = def.range, - }) + }) end --change the player's hand to their skin mcl_skins.register_on_set_skin(function(player, skin) @@ -30,13 +46,28 @@ else minetest.register_node("mcl_meshhand:hand", { description = "", tiles = {"character.png"}, - inventory_image = "blank.png", + inventory_image = "wieldhand.png", visual_scale = 1, wield_scale = {x=1,y=1,z=1}, paramtype = "light", drawtype = "mesh", mesh = "mcl_meshhand.b3d", + -- Prevent placement node_placement_prediction = "", + on_construct = function(pos) + minetest.log("error", "[mcl_meshhand] Trying to construct mcl_meshhand:hand at "..minetest.pos_to_string(pos)) + minetest.remove_node(pos) + end, + on_place = function(itemstack, placer, pointed_thing) + local spos = "" + if pointed_thing.above then + spos = minetest.pos_to_string(pointed_thing.above ) + end + minetest.log("error", "[mcl_meshhand] Player tried to place mcl_meshhand:hand at "..spos) + itemstack:set_count(0) + return itemstack + end, + groups = { dig_immediate = 3, not_in_creative_inventory = 1 }, range = def.range, }) From 1aac4713a4b00d316f9eb12d6af0fbd2a7cb34e2 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Thu, 19 Sep 2019 12:20:31 +0200 Subject: [PATCH 307/737] Simplify mcl_meshhand code --- mods/PLAYER/mcl_meshhand/init.lua | 70 ++++++++++++------------------- 1 file changed, 26 insertions(+), 44 deletions(-) diff --git a/mods/PLAYER/mcl_meshhand/init.lua b/mods/PLAYER/mcl_meshhand/init.lua index 2ccbc0b9..5dc72992 100644 --- a/mods/PLAYER/mcl_meshhand/init.lua +++ b/mods/PLAYER/mcl_meshhand/init.lua @@ -2,50 +2,20 @@ local has_mcl_skins = minetest.get_modpath("mcl_skins") ~= nil local def = minetest.registered_items[""] +local list -- mcl_skins is enabled if has_mcl_skins == true then - --generate a node for every skin - for _,texture in pairs(mcl_skins.list) do - -- This is a fake node that should never be placed in the world - minetest.register_node("mcl_meshhand:"..texture, { - description = "", - tiles = {texture..".png"}, - inventory_image = "wieldhand.png", - visual_scale = 1, - wield_scale = {x=1,y=1,z=1}, - paramtype = "light", - drawtype = "mesh", - mesh = "mcl_meshhand.b3d", - -- Prevent placement - node_placement_prediction = "", - on_construct = function(pos) - minetest.log("error", "[mcl_meshhand] Trying to construct mcl_meshhand:"..texture.." at "..minetest.pos_to_string(pos)) - minetest.remove_node(pos) - end, - on_place = function(itemstack, placer, pointed_thing) - local spos = "" - if pointed_thing.above then - spos = minetest.pos_to_string(pointed_thing.above) - end - minetest.log("error", "[mcl_meshhand] Player tried to place mcl_meshhand:"..texture.." at "..spos) - itemstack:set_count(0) - return itemstack - end, - groups = { dig_immediate = 3, not_in_creative_inventory = 1 }, - range = def.range, - }) - end - --change the player's hand to their skin - mcl_skins.register_on_set_skin(function(player, skin) - local name = player:get_player_name() - player:get_inventory():set_stack("hand", 1, "mcl_meshhand:"..skin) - end) - ---do default skin if no skin mod installed + list = mcl_skins.list else - minetest.register_node("mcl_meshhand:hand", { + list = { "hand" } +end + +--generate a node for every skin +for _,texture in pairs(list) do + -- This is a fake node that should never be placed in the world + minetest.register_node("mcl_meshhand:"..texture, { description = "", - tiles = {"character.png"}, + tiles = {texture..".png"}, inventory_image = "wieldhand.png", visual_scale = 1, wield_scale = {x=1,y=1,z=1}, @@ -55,22 +25,34 @@ else -- Prevent placement node_placement_prediction = "", on_construct = function(pos) - minetest.log("error", "[mcl_meshhand] Trying to construct mcl_meshhand:hand at "..minetest.pos_to_string(pos)) + minetest.log("error", "[mcl_meshhand] Trying to construct mcl_meshhand:"..texture.." at "..minetest.pos_to_string(pos)) minetest.remove_node(pos) end, on_place = function(itemstack, placer, pointed_thing) local spos = "" if pointed_thing.above then - spos = minetest.pos_to_string(pointed_thing.above ) + spos = minetest.pos_to_string(pointed_thing.above) end - minetest.log("error", "[mcl_meshhand] Player tried to place mcl_meshhand:hand at "..spos) + minetest.log("error", "[mcl_meshhand] Player tried to place mcl_meshhand:"..texture.." at "..spos) itemstack:set_count(0) return itemstack end, + drop = "", + on_drop = function() + return "" + end, groups = { dig_immediate = 3, not_in_creative_inventory = 1 }, range = def.range, - }) + }) +end +if has_mcl_skins == true then + --change the player's hand to their skin + mcl_skins.register_on_set_skin(function(player, skin) + local name = player:get_player_name() + player:get_inventory():set_stack("hand", 1, "mcl_meshhand:"..skin) + end) +else minetest.register_on_joinplayer(function(player) player:get_inventory():set_stack("hand", 1, "mcl_meshhand:hand") end) From 67f33c925625215ad74755e9ba6b101afeb666d2 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Thu, 19 Sep 2019 12:27:27 +0200 Subject: [PATCH 308/737] Prevent constructing arrow boxes --- mods/ENTITIES/mobs_mc/2_throwing.lua | 20 ++++++++++++++++---- mods/ITEMS/mcl_bows/arrow.lua | 6 ++++++ 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/mods/ENTITIES/mobs_mc/2_throwing.lua b/mods/ENTITIES/mobs_mc/2_throwing.lua index 59b03741..f3b40691 100644 --- a/mods/ENTITIES/mobs_mc/2_throwing.lua +++ b/mods/ENTITIES/mobs_mc/2_throwing.lua @@ -15,15 +15,18 @@ local c = mobs_mc.is_item_variable_overridden minetest.register_node("mobs_mc:arrow_box", { drawtype = "nodebox", + is_ground_content = false, node_box = { type = "fixed", fixed = { -- Shaft - {-6.5/17, -1.5/17, -1.5/17, 6.5/17, 1.5/17, 1.5/17}, - --Spitze + {-6.5/17, -1.5/17, -1.5/17, -4.5/17, 1.5/17, 1.5/17}, + {-4.5/17, -0.5/17, -0.5/17, 5.5/17, 0.5/17, 0.5/17}, + {5.5/17, -1.5/17, -1.5/17, 6.5/17, 1.5/17, 1.5/17}, + -- Tip {-4.5/17, 2.5/17, 2.5/17, -3.5/17, -2.5/17, -2.5/17}, {-8.5/17, 0.5/17, 0.5/17, -6.5/17, -0.5/17, -0.5/17}, - --Federn + -- Fletching {6.5/17, 1.5/17, 1.5/17, 7.5/17, 2.5/17, 2.5/17}, {7.5/17, -2.5/17, 2.5/17, 6.5/17, -1.5/17, 1.5/17}, {7.5/17, 2.5/17, -2.5/17, 6.5/17, 1.5/17, -1.5/17}, @@ -36,7 +39,16 @@ minetest.register_node("mobs_mc:arrow_box", { } }, tiles = {"mcl_bows_arrow.png^[transformFX", "mcl_bows_arrow.png^[transformFX", "mcl_bows_arrow_back.png", "mcl_bows_arrow_front.png", "mcl_bows_arrow.png", "mcl_bows_arrow.png^[transformFX"}, - groups = {not_in_creative_inventory=1}, + paramtype = "light", + paramtype2 = "facedir", + sunlight_propagates = true, + groups = {not_in_creative_inventory=1, dig_immediate=3}, + node_placement_prediction = "", + on_construct = function(pos) + minetest.log("error", "[mobs_mc] Trying to construct mobs_mc:arrow_box at "..minetest.pos_to_string(pos)) + minetest.remove_node(pos) + end, + drop = "", }) local THROWING_ARROW_ENTITY={ diff --git a/mods/ITEMS/mcl_bows/arrow.lua b/mods/ITEMS/mcl_bows/arrow.lua index a4ecb7e0..94474869 100644 --- a/mods/ITEMS/mcl_bows/arrow.lua +++ b/mods/ITEMS/mcl_bows/arrow.lua @@ -67,6 +67,12 @@ minetest.register_node("mcl_bows:arrow_box", { paramtype2 = "facedir", sunlight_propagates = true, groups = {not_in_creative_inventory=1, dig_immediate=3}, + drop = "", + node_placement_prediction = "", + on_construct = function(pos) + minetest.log("error", "[mcl_bows] Trying to construct mcl_bows:arrow_box at "..minetest.pos_to_string(pos)) + minetest.remove_node(pos) + end, }) local ARROW_ENTITY={ From dfe68e6820d3f7554edcafcab8314ab7add7a23a Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Thu, 19 Sep 2019 12:31:50 +0200 Subject: [PATCH 309/737] Simplify meshhand error handling --- mods/PLAYER/mcl_meshhand/init.lua | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/mods/PLAYER/mcl_meshhand/init.lua b/mods/PLAYER/mcl_meshhand/init.lua index 5dc72992..14bf1009 100644 --- a/mods/PLAYER/mcl_meshhand/init.lua +++ b/mods/PLAYER/mcl_meshhand/init.lua @@ -16,27 +16,17 @@ for _,texture in pairs(list) do minetest.register_node("mcl_meshhand:"..texture, { description = "", tiles = {texture..".png"}, - inventory_image = "wieldhand.png", visual_scale = 1, wield_scale = {x=1,y=1,z=1}, paramtype = "light", drawtype = "mesh", mesh = "mcl_meshhand.b3d", - -- Prevent placement + -- Prevent construction node_placement_prediction = "", on_construct = function(pos) minetest.log("error", "[mcl_meshhand] Trying to construct mcl_meshhand:"..texture.." at "..minetest.pos_to_string(pos)) minetest.remove_node(pos) end, - on_place = function(itemstack, placer, pointed_thing) - local spos = "" - if pointed_thing.above then - spos = minetest.pos_to_string(pointed_thing.above) - end - minetest.log("error", "[mcl_meshhand] Player tried to place mcl_meshhand:"..texture.." at "..spos) - itemstack:set_count(0) - return itemstack - end, drop = "", on_drop = function() return "" From 21317aa7c7d39ba5e84eb175d34ceee54c315a82 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 24 Sep 2019 18:17:27 +0200 Subject: [PATCH 310/737] Fix eating/drinking sounds to user --- mods/PLAYER/mcl_hunger/hunger.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/PLAYER/mcl_hunger/hunger.lua b/mods/PLAYER/mcl_hunger/hunger.lua index 7d7306bd..eacec1bc 100644 --- a/mods/PLAYER/mcl_hunger/hunger.lua +++ b/mods/PLAYER/mcl_hunger/hunger.lua @@ -145,10 +145,10 @@ function mcl_hunger.item_eat(hunger_change, replace_with_item, poisontime, poiso if foodtype == 3 then -- Item is a drink, only play drinking sound (no particle) minetest.sound_play("survival_thirst_drink", { - pos = pos, max_hear_distance = 12, gain = 1.0, pitch = 1 + math.random(-10, 10)*0.005, + object = user, }) else -- Assume the item is a food @@ -184,10 +184,10 @@ function mcl_hunger.item_eat(hunger_change, replace_with_item, poisontime, poiso }) end minetest.sound_play("mcl_hunger_bite", { - pos = pos, max_hear_distance = 12, gain = 1.0, pitch = 1 + math.random(-10, 10)*0.005, + object = user, }) end From 5ba4f1b8992a170d5c6da5a5e96d263ba44c97a7 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 24 Sep 2019 18:41:33 +0200 Subject: [PATCH 311/737] Disable valleys heat/humidity changes by default --- minetest.conf | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/minetest.conf b/minetest.conf index f7042f5a..6b6a4d67 100644 --- a/minetest.conf +++ b/minetest.conf @@ -1,7 +1,9 @@ -# This is a game specify minetest.conf file, do not edit +# This is a game specific minetest.conf file, do not edit +# Basic game rules time_speed = 72 +# Player physics movement_acceleration_default = 2.4 movement_acceleration_air = 1.2 #movement_acceleration_fast = 10 @@ -20,4 +22,12 @@ movement_liquid_sink = 23 movement_gravity = 10.4 +# Mapgen stuff + +# altitude_chill and altitude_dry doesn't go well together with MCL2 biomes +# which already include "snowed" variants as you go higher. +# humid_rivers would cause the MushroomIsland biome to appear frequently around rivers. +mgvalleys_spflags = noaltitude_chill,noaltitude_dry,nohumid_rivers,vary_river_depth + +# MCL2-specific stuff keepInventory = false From d9d1e5c08cc29ab21a73a4c540ffc79b8d1fa3f5 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Fri, 27 Sep 2019 12:09:03 +0200 Subject: [PATCH 312/737] Fix crash in mcl_fishing --- mods/ITEMS/mcl_fishing/init.lua | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_fishing/init.lua b/mods/ITEMS/mcl_fishing/init.lua index be7bdbda..ebef9ca9 100644 --- a/mods/ITEMS/mcl_fishing/init.lua +++ b/mods/ITEMS/mcl_fishing/init.lua @@ -41,6 +41,7 @@ local fish = function(itemstack, player) noent = false if ent._dive == true then local itemname + local items local itemcount = 1 local itemwear = 0 -- FIXME: Maybe use a better seeding @@ -103,7 +104,7 @@ local fish = function(itemstack, player) local idef = itemstack:get_definition() itemstack:add_wear(65535/65) -- 65 uses if itemstack:get_count() == 0 and idef.sound and idef.sound.breaks then - minetest.sound_play(idef.sound.breaks, {pos=player.get_pos(), gain=0.5}) + minetest.sound_play(idef.sound.breaks, {pos=player:get_pos(), gain=0.5}) end end end @@ -117,7 +118,7 @@ local fish = function(itemstack, player) local idef = itemstack:get_definition() itemstack:add_wear((65535/65)*2) -- if so and not creative then wear double like in MC. if itemstack:get_count() == 0 and idef.sound and idef.sound.breaks then - minetest.sound_play(idef.sound.breaks, {pos=player.get_pos(), gain=0.5}) + minetest.sound_play(idef.sound.breaks, {pos=player:get_pos(), gain=0.5}) end end end From 40b5c5c2a56b879a21211bb7f7fb8dd8c000ca7f Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Fri, 27 Sep 2019 12:19:37 +0200 Subject: [PATCH 313/737] Version 0.54.1 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index aef3a429..aaef3eba 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ An unofficial Minecraft-like game for Minetest. Forked from MineClone by davedevils. Developed by Wuzzy and contributors. Not developed or endorsed by Mojang AB. -Version: 0.54.0 +Version: 0.54.1 ### Gameplay You start in a randomly-generated world made entirely of cubes. You can explore From 14d4bec8a921a72b0982f820e048a5da31e1b842 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Wed, 2 Oct 2019 18:28:28 +0200 Subject: [PATCH 314/737] Implement proper drowning for mobs --- mods/ENTITIES/mcl_mobs/api.lua | 62 +++++++++++++++++++++++++++++----- mods/ENTITIES/mcl_mobs/api.txt | 15 ++++++-- 2 files changed, 66 insertions(+), 11 deletions(-) diff --git a/mods/ENTITIES/mcl_mobs/api.lua b/mods/ENTITIES/mcl_mobs/api.lua index 0f028e8d..4c34e3a5 100644 --- a/mods/ENTITIES/mcl_mobs/api.lua +++ b/mods/ENTITIES/mcl_mobs/api.lua @@ -720,22 +720,22 @@ local do_env_damage = function(self) self.health = self.health - self.water_damage + -- TODO: Damage particle effect(pos, 5, "bubble.png", nil, nil, 1, nil) if check_for_death(self, "water", {type = "environment", pos = pos, node = self.standing_in}) then return end end - -- lava or fire + -- lava elseif self.lava_damage - and (nodef.groups.lava - or self.standing_in == node_fire - or self.standing_in == node_permanent_flame) then + and (nodef.groups.lava) then if self.lava_damage ~= 0 then self.health = self.health - self.lava_damage + -- TODO: Damage particle effect(pos, 5, "fire_basic_flame.png", nil, nil, 1, nil) if check_for_death(self, "lava", {type = "environment", @@ -747,12 +747,44 @@ local do_env_damage = function(self) self.health = self.health - nodef.damage_per_second + -- TODO: Damage particle effect(pos, 5, "tnt_smoke.png") if check_for_death(self, "dps", {type = "environment", pos = pos, node = self.standing_in}) then return end end + -- Drowning damage + if self.breath_max ~= -1 then + local drowning = false + if self.breathes_in_water then + if minetest.get_item_group(self.standing_in, "water") == 0 then + drowning = true + end + elseif nodef.drowning > 0 then + drowning = true + end + if drowning then + + self.breath = math.max(0, self.breath - 1) + + effect(pos, 2, "bubble.png", nil, nil, 1, nil) + if self.breath <= 0 then + -- TODO: Damage particle + effect(pos, 5, "bubble.png", nil, nil, 1, nil) + if nodef.drowning > 0 then + self.health = self.health - nodef.drowning + else + self.health = self.health - 4 + end + end + if check_for_death(self, "drowning", {type = "environment", + pos = pos, node = self.standing_in}) then return end + else + self.breath = math.min(self.breath_max, self.breath + 1) + end + end + --- suffocation inside solid node -- FIXME: Redundant with mcl_playerplus if (self.suffocation == true) @@ -2776,6 +2808,9 @@ local mob_activate = function(self, staticdata, def, dtime) if self.health == 0 then self.health = random (self.hp_min, self.hp_max) end + if self.breath == nil then + self.breath = self.breath_max + end -- pathfinding init self.path = {} @@ -3052,6 +3087,15 @@ if def.can_despawn ~= nil then else can_despawn = true end + +local function scale_difficulty(value, default, min, special) + if (not value) or (value == default) or (value == special) then + return default + else + return max(min, value) * difficulty + end +end + minetest.register_entity(name, { stepheight = def.stepheight or 1.1, -- was 0.6 @@ -3069,8 +3113,10 @@ minetest.register_entity(name, { drawtype = def.drawtype, -- DEPRECATED, use rotate instead rotate = math.rad(def.rotate or 0), -- 0=front, 90=side, 180=back, 270=side2 lifetimer = def.lifetimer or 57.73, - hp_min = max(1, (def.hp_min or 5) * difficulty), - hp_max = max(1, (def.hp_max or 10) * difficulty), + hp_min = scale_difficulty(def.hp_min, 5, 1), + hp_max = scale_difficulty(def.hp_max, 10, 1), + breath_max = scale_difficulty(def.breath_max, 15, 1, -1), + breathes_in_water = def.breathes_in_water or false, physical = true, collisionbox = def.collisionbox or {-0.25, -0.25, -0.25, 0.25, 0.25, 0.25}, selectionbox = def.selectionbox or def.collisionbox, @@ -3081,11 +3127,11 @@ minetest.register_entity(name, { view_range = def.view_range or 16, walk_velocity = def.walk_velocity or 1, run_velocity = def.run_velocity or 2, - damage = max(0, (def.damage or 0) * difficulty), + damage = scale_difficulty(def.damage, 0, 0), light_damage = def.light_damage or 0, sunlight_damage = def.sunlight_damage or 0, water_damage = def.water_damage or 0, - lava_damage = def.lava_damage or 0, + lava_damage = def.lava_damage or 8, suffocation = def.suffocation or true, fall_damage = def.fall_damage or 1, fall_speed = def.fall_speed or -10, -- must be lower than -2 (default: -10) diff --git a/mods/ENTITIES/mcl_mobs/api.txt b/mods/ENTITIES/mcl_mobs/api.txt index 7c2f658e..283bc6a2 100644 --- a/mods/ENTITIES/mcl_mobs/api.txt +++ b/mods/ENTITIES/mcl_mobs/api.txt @@ -28,8 +28,13 @@ functions needed for the mob to work properly which contains the following: "monster" attacks player or npc on sight. "npc" walk around and will defend themselves if hit first, they kill monsters. - 'hp_min' has the minimum health value the mob can spawn with. - 'hp_max' has the maximum health value the mob can spawn with. + 'hp_min' the minimum health value the mob can spawn with. + 'hp_max' the maximum health value the mob can spawn with. + 'breath_max' The maximum breath value the mob can spawn with and can have. + If -1 (default), mob does not take drowning damage. + 'breathes_in_water' If true, mob loses breath when not in water. Otherwise, + mob loses breath when inside a node with `drowning` attribute + set (default: false). 'armor' holds strength of mob, 100 is normal, lower is more powerful and needs more hits and better weapons to kill. 'passive' when true allows animals to defend themselves when hit, @@ -58,7 +63,7 @@ functions needed for the mob to work properly which contains the following: 'water_damage' holds the damage per second infliced to mobs when standing in water. 'lava_damage' holds the damage per second inflicted to mobs when standing - in lava or fire. + in lava (default: 8). 'light_damage' holds the damage per second inflicted to mobs when it's too bright (above 13 light). 'suffocation' when true causes mobs to suffocate inside solid blocks (2 damage per second). @@ -299,6 +304,10 @@ for each mob. 'self.health' contains current health of mob (cannot exceed self.hp_max) + 'self.breath' contains current breath of mob, if mob takes drowning + damage at all (cannot exceed self.breath_max). Breath + decreases by 1 each second while in a node with drowning + damage and increases by 1 each second otherwise. 'self.texture_list' contains list of all mob textures 'self.child_texture' contains mob child texture when growing up 'self.base_texture' contains current skin texture which was randomly From b71c9204eca2c114674ab826746cb63e2164eb9c Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Wed, 2 Oct 2019 18:31:16 +0200 Subject: [PATCH 315/737] Update drowning settings in mobs_mc --- mods/ENTITIES/mobs_mc/bat.lua | 3 --- mods/ENTITIES/mobs_mc/chicken.lua | 3 --- mods/ENTITIES/mobs_mc/cow+mooshroom.lua | 3 --- mods/ENTITIES/mobs_mc/ender_dragon.lua | 2 -- mods/ENTITIES/mobs_mc/enderman.lua | 2 -- mods/ENTITIES/mobs_mc/endermite.lua | 3 --- mods/ENTITIES/mobs_mc/ghast.lua | 2 -- mods/ENTITIES/mobs_mc/guardian.lua | 4 +--- mods/ENTITIES/mobs_mc/guardian_elder.lua | 4 +--- mods/ENTITIES/mobs_mc/horse.lua | 4 ++-- mods/ENTITIES/mobs_mc/iron_golem.lua | 4 +--- mods/ENTITIES/mobs_mc/llama.lua | 3 --- mods/ENTITIES/mobs_mc/ocelot.lua | 3 --- mods/ENTITIES/mobs_mc/parrot.lua | 3 --- mods/ENTITIES/mobs_mc/pig.lua | 3 --- mods/ENTITIES/mobs_mc/polar_bear.lua | 4 +--- mods/ENTITIES/mobs_mc/rabbit.lua | 3 --- mods/ENTITIES/mobs_mc/sheep.lua | 3 --- mods/ENTITIES/mobs_mc/shulker.lua | 3 --- mods/ENTITIES/mobs_mc/silverfish.lua | 3 --- mods/ENTITIES/mobs_mc/skeleton+stray.lua | 3 +-- mods/ENTITIES/mobs_mc/skeleton_wither.lua | 1 + mods/ENTITIES/mobs_mc/slime+magma_cube.lua | 3 --- mods/ENTITIES/mobs_mc/spider.lua | 3 --- mods/ENTITIES/mobs_mc/squid.lua | 4 +--- mods/ENTITIES/mobs_mc/vex.lua | 3 --- mods/ENTITIES/mobs_mc/villager.lua | 3 --- mods/ENTITIES/mobs_mc/villager_evoker.lua | 3 --- mods/ENTITIES/mobs_mc/villager_illusioner.lua | 1 - mods/ENTITIES/mobs_mc/villager_vindicator.lua | 3 --- mods/ENTITIES/mobs_mc/villager_zombie.lua | 3 +-- mods/ENTITIES/mobs_mc/witch.lua | 3 --- mods/ENTITIES/mobs_mc/wither.lua | 2 -- mods/ENTITIES/mobs_mc/wolf.lua | 3 --- mods/ENTITIES/mobs_mc/zombie.lua | 2 +- mods/ENTITIES/mobs_mc/zombiepig.lua | 3 +-- 36 files changed, 12 insertions(+), 93 deletions(-) diff --git a/mods/ENTITIES/mobs_mc/bat.lua b/mods/ENTITIES/mobs_mc/bat.lua index 10e7a3ad..36415470 100644 --- a/mods/ENTITIES/mobs_mc/bat.lua +++ b/mods/ENTITIES/mobs_mc/bat.lua @@ -40,9 +40,6 @@ mobs:register_mob("mobs_mc:bat", { ]] }, - water_damage = 1, - lava_damage = 4, - light_damage = 0, fall_damage = 0, view_range = 16, diff --git a/mods/ENTITIES/mobs_mc/chicken.lua b/mods/ENTITIES/mobs_mc/chicken.lua index fec0bb53..c6ce8550 100644 --- a/mods/ENTITIES/mobs_mc/chicken.lua +++ b/mods/ENTITIES/mobs_mc/chicken.lua @@ -35,9 +35,6 @@ mobs:register_mob("mobs_mc:chicken", { min = 0, max = 2,}, }, - water_damage = 1, - lava_damage = 4, - light_damage = 0, fall_damage = 0, fall_speed = -2.25, sounds = { diff --git a/mods/ENTITIES/mobs_mc/cow+mooshroom.lua b/mods/ENTITIES/mobs_mc/cow+mooshroom.lua index 83d89ff1..cfc4991f 100644 --- a/mods/ENTITIES/mobs_mc/cow+mooshroom.lua +++ b/mods/ENTITIES/mobs_mc/cow+mooshroom.lua @@ -26,9 +26,6 @@ local cow_def = { min = 0, max = 2,}, }, - water_damage = 1, - lava_damage = 5, - light_damage = 0, runaway = true, sounds = { random = "mobs_mc_cow", diff --git a/mods/ENTITIES/mobs_mc/ender_dragon.lua b/mods/ENTITIES/mobs_mc/ender_dragon.lua index a06f1c46..fd5543ae 100644 --- a/mods/ENTITIES/mobs_mc/ender_dragon.lua +++ b/mods/ENTITIES/mobs_mc/ender_dragon.lua @@ -47,9 +47,7 @@ mobs:register_mob("mobs_mc:enderdragon", { min = 1, max = 1}, }, - water_damage = 0, lava_damage = 0, - light_damage = 0, on_rightclick = nil, attack_type = "dogshoot", arrow = "mobs_mc:fireball2", diff --git a/mods/ENTITIES/mobs_mc/enderman.lua b/mods/ENTITIES/mobs_mc/enderman.lua index 6af9ebe4..ad74768b 100644 --- a/mods/ENTITIES/mobs_mc/enderman.lua +++ b/mods/ENTITIES/mobs_mc/enderman.lua @@ -320,8 +320,6 @@ mobs:register_mob("mobs_mc:enderman", { end end, water_damage = 8, - lava_damage = 4, - light_damage = 0, -- TODO: Increase view range when it detects being seen -- Low view range to emulate that behaviour somehow view_range = 4, diff --git a/mods/ENTITIES/mobs_mc/endermite.lua b/mods/ENTITIES/mobs_mc/endermite.lua index 0776ca47..ebec262d 100644 --- a/mods/ENTITIES/mobs_mc/endermite.lua +++ b/mods/ENTITIES/mobs_mc/endermite.lua @@ -27,9 +27,6 @@ mobs:register_mob("mobs_mc:endermite", { walk_velocity = 1, run_velocity = 2, jump = true, - water_damage = 0, - lava_damage = 4, - light_damage = 0, fear_height = 4, view_range = 16, damage = 2, diff --git a/mods/ENTITIES/mobs_mc/ghast.lua b/mods/ENTITIES/mobs_mc/ghast.lua index 029d517a..f840653c 100644 --- a/mods/ENTITIES/mobs_mc/ghast.lua +++ b/mods/ENTITIES/mobs_mc/ghast.lua @@ -53,8 +53,6 @@ mobs:register_mob("mobs_mc:ghast", { walk_start = 0, walk_end = 40, run_start = 0, run_end = 40, }, - lava_damage = 4, - light_damage = 0, fall_damage = 0, view_range = 100, --attack_type = "dogshoot", diff --git a/mods/ENTITIES/mobs_mc/guardian.lua b/mods/ENTITIES/mobs_mc/guardian.lua index 89ad0964..24d0ebd0 100644 --- a/mods/ENTITIES/mobs_mc/guardian.lua +++ b/mods/ENTITIES/mobs_mc/guardian.lua @@ -10,6 +10,7 @@ mobs:register_mob("mobs_mc:guardian", { type = "monster", hp_min = 30, hp_max = 30, + breath_max = -1, passive = false, attack_type = "dogfight", pathfinding = 1, @@ -76,9 +77,6 @@ mobs:register_mob("mobs_mc:guardian", { stepheight = 0.1, jump = false, view_range = 16, - water_damage = 0, - lava_damage = 4, - light_damage = 0, blood_amount = 0, }) diff --git a/mods/ENTITIES/mobs_mc/guardian_elder.lua b/mods/ENTITIES/mobs_mc/guardian_elder.lua index 85ad5053..f3799baf 100644 --- a/mods/ENTITIES/mobs_mc/guardian_elder.lua +++ b/mods/ENTITIES/mobs_mc/guardian_elder.lua @@ -10,6 +10,7 @@ mobs:register_mob("mobs_mc:guardian_elder", { type = "monster", hp_min = 80, hp_max = 80, + breath_max = -1, passive = false, attack_type = "dogfight", pathfinding = 1, @@ -80,9 +81,6 @@ mobs:register_mob("mobs_mc:guardian_elder", { fly_in = { mobs_mc.items.water_source, mobs_mc.items.river_water_source }, stepheight = 0.1, jump = false, - water_damage = 0, - lava_damage = 4, - light_damage = 0, view_range = 16, blood_amount = 0, }) diff --git a/mods/ENTITIES/mobs_mc/horse.lua b/mods/ENTITIES/mobs_mc/horse.lua index c2054300..d51a1c66 100644 --- a/mods/ENTITIES/mobs_mc/horse.lua +++ b/mods/ENTITIES/mobs_mc/horse.lua @@ -116,8 +116,6 @@ local horse = { hp_min = 15, hp_max = 30, floats = 1, - lava_damage = 4, - water_damage = 1, makes_footstep_sound = true, jump = true, jump_height = 5.75, -- can clear 2.5 blocks @@ -324,6 +322,7 @@ mobs:register_mob("mobs_mc:horse", horse) -- Skeleton horse local skeleton_horse = table.copy(horse) +skeleton_horse.breath_max = -1 skeleton_horse.textures = {{"blank.png", "mobs_mc_horse_skeleton.png", "blank.png"}} skeleton_horse.drops = { {name = mobs_mc.items.bone, @@ -342,6 +341,7 @@ mobs:register_mob("mobs_mc:skeleton_horse", skeleton_horse) -- Zombie horse local zombie_horse = table.copy(horse) +zombie_horse.breath_max = -1 zombie_horse.textures = {{"blank.png", "mobs_mc_horse_zombie.png", "blank.png"}} zombie_horse.drops = { {name = mobs_mc.items.rotten_flesh, diff --git a/mods/ENTITIES/mobs_mc/iron_golem.lua b/mods/ENTITIES/mobs_mc/iron_golem.lua index 9ca88ba5..95a088de 100644 --- a/mods/ENTITIES/mobs_mc/iron_golem.lua +++ b/mods/ENTITIES/mobs_mc/iron_golem.lua @@ -16,6 +16,7 @@ mobs:register_mob("mobs_mc:iron_golem", { passive = true, hp_min = 100, hp_max = 100, + breath_max = -1, collisionbox = {-0.7, -0.01, -0.7, 0.7, 2.69, 0.7}, visual = "mesh", mesh = "mobs_mc_iron_golem.b3d", @@ -48,9 +49,6 @@ mobs:register_mob("mobs_mc:iron_golem", { min = 0, max = 2,}, }, - water_damage = 0, - lava_damage = 4, - light_damage = 0, fall_damage = 0, animation = { stand_speed = 15, walk_speed = 15, run_speed = 25, punch_speed = 15, diff --git a/mods/ENTITIES/mobs_mc/llama.lua b/mods/ENTITIES/mobs_mc/llama.lua index a69db0ba..92da233a 100644 --- a/mods/ENTITIES/mobs_mc/llama.lua +++ b/mods/ENTITIES/mobs_mc/llama.lua @@ -32,9 +32,6 @@ mobs:register_mob("mobs_mc:llama", { min = 0, max = 2,}, }, - water_damage = 0, - lava_damage = 4, - light_damage = 0, fear_height = 4, sounds = { random = "mobs_mc_llama", diff --git a/mods/ENTITIES/mobs_mc/ocelot.lua b/mods/ENTITIES/mobs_mc/ocelot.lua index 634d77a3..e2b37220 100644 --- a/mods/ENTITIES/mobs_mc/ocelot.lua +++ b/mods/ENTITIES/mobs_mc/ocelot.lua @@ -42,9 +42,6 @@ local ocelot = { run_velocity = 3, floats = 1, runaway = true, - water_damage = 0, - lava_damage = 4, - light_damage = 0, fall_damage = 0, fear_height = 4, sounds = { diff --git a/mods/ENTITIES/mobs_mc/parrot.lua b/mods/ENTITIES/mobs_mc/parrot.lua index 7e465e8f..9474c2b7 100644 --- a/mods/ENTITIES/mobs_mc/parrot.lua +++ b/mods/ENTITIES/mobs_mc/parrot.lua @@ -44,9 +44,6 @@ mobs:register_mob("mobs_mc:parrot", { --fly_end = 45, }, walk_chance = 100, - water_damage = 0, - lava_damage = 4, - light_damage = 0, fall_damage = 0, fall_speed = -2.25, attack_type = "dogfight", diff --git a/mods/ENTITIES/mobs_mc/pig.lua b/mods/ENTITIES/mobs_mc/pig.lua index 2b10c99b..472d8f77 100644 --- a/mods/ENTITIES/mobs_mc/pig.lua +++ b/mods/ENTITIES/mobs_mc/pig.lua @@ -25,9 +25,6 @@ mobs:register_mob("mobs_mc:pig", { min = 1, max = 3,}, }, - water_damage = 1, - lava_damage = 4, - light_damage = 0, fear_height = 4, sounds = { random = "mobs_pig", diff --git a/mods/ENTITIES/mobs_mc/polar_bear.lua b/mods/ENTITIES/mobs_mc/polar_bear.lua index 1db07e0f..438ea320 100644 --- a/mods/ENTITIES/mobs_mc/polar_bear.lua +++ b/mods/ENTITIES/mobs_mc/polar_bear.lua @@ -14,6 +14,7 @@ mobs:register_mob("mobs_mc:polar_bear", { stepheight = 1.2, hp_min = 30, hp_max = 30, + breath_max = -1, collisionbox = {-0.7, -0.01, -0.7, 0.7, 1.39, 0.7}, visual = "mesh", mesh = "mobs_mc_polarbear.b3d", @@ -41,10 +42,7 @@ mobs:register_mob("mobs_mc:polar_bear", { max = 2,}, }, - water_damage = 0, floats = 1, - lava_damage = 5, - light_damage = 0, fear_height = 4, -- TODO: sounds animation = { diff --git a/mods/ENTITIES/mobs_mc/rabbit.lua b/mods/ENTITIES/mobs_mc/rabbit.lua index ea71d788..8803b754 100644 --- a/mods/ENTITIES/mobs_mc/rabbit.lua +++ b/mods/ENTITIES/mobs_mc/rabbit.lua @@ -35,9 +35,6 @@ local rabbit = { -- TODO: Drop rabbit's foot when it's useful --{name = mobs_mc.items.rabbit_foot, chance = 10, min = 1, max = 1}, }, - water_damage = 1, - lava_damage = 4, - light_damage = 0, fear_height = 4, animation = { speed_normal = 25, speed_run = 50, diff --git a/mods/ENTITIES/mobs_mc/sheep.lua b/mods/ENTITIES/mobs_mc/sheep.lua index 2f069f85..3d643ec8 100644 --- a/mods/ENTITIES/mobs_mc/sheep.lua +++ b/mods/ENTITIES/mobs_mc/sheep.lua @@ -67,9 +67,6 @@ mobs:register_mob("mobs_mc:sheep", { min = 1, max = 1,}, }, - water_damage = 1, - lava_damage = 4, - light_damage = 0, fear_height = 4, sounds = { random = "mobs_sheep", diff --git a/mods/ENTITIES/mobs_mc/shulker.lua b/mods/ENTITIES/mobs_mc/shulker.lua index b3cd3c6e..28d60dd1 100644 --- a/mods/ENTITIES/mobs_mc/shulker.lua +++ b/mods/ENTITIES/mobs_mc/shulker.lua @@ -47,9 +47,6 @@ mobs:register_mob("mobs_mc:shulker", { blood_amount = 0, view_range = 16, fear_height = 4, - water_damage = 1, - lava_damage = 4, - light_damage = 0, }) -- bullet arrow (weapon) diff --git a/mods/ENTITIES/mobs_mc/silverfish.lua b/mods/ENTITIES/mobs_mc/silverfish.lua index 7f19d9a2..5bd077a7 100644 --- a/mods/ENTITIES/mobs_mc/silverfish.lua +++ b/mods/ENTITIES/mobs_mc/silverfish.lua @@ -29,9 +29,6 @@ mobs:register_mob("mobs_mc:silverfish", { walk_velocity = 0.6, run_velocity = 2, jump = true, - water_damage = 1, - lava_damage = 4, - light_damage = 0, fear_height = 4, replace_what = mobs_mc.replace.silverfish, replace_rate = 2, diff --git a/mods/ENTITIES/mobs_mc/skeleton+stray.lua b/mods/ENTITIES/mobs_mc/skeleton+stray.lua index 35cc9ed8..128f60c8 100644 --- a/mods/ENTITIES/mobs_mc/skeleton+stray.lua +++ b/mods/ENTITIES/mobs_mc/skeleton+stray.lua @@ -15,6 +15,7 @@ local skeleton = { type = "monster", hp_min = 20, hp_max = 20, + breath_max = -1, collisionbox = {-0.3, -0.01, -0.3, 0.3, 1.98, 0.3}, pathfinding = 1, group_attack = true, @@ -73,8 +74,6 @@ local skeleton = { die_speed = 15, die_loop = false, }, - water_damage = 1, - lava_damage = 4, sunlight_damage = 1, view_range = 16, fear_height = 4, diff --git a/mods/ENTITIES/mobs_mc/skeleton_wither.lua b/mods/ENTITIES/mobs_mc/skeleton_wither.lua index 16f353ce..8d8ebb3b 100644 --- a/mods/ENTITIES/mobs_mc/skeleton_wither.lua +++ b/mods/ENTITIES/mobs_mc/skeleton_wither.lua @@ -13,6 +13,7 @@ mobs:register_mob("mobs_mc:witherskeleton", { type = "monster", hp_min = 20, hp_max = 20, + breath_max = -1, pathfinding = 1, group_attack = true, collisionbox = {-0.35, -0.01, -0.35, 0.35, 2.39, 0.35}, diff --git a/mods/ENTITIES/mobs_mc/slime+magma_cube.lua b/mods/ENTITIES/mobs_mc/slime+magma_cube.lua index 4fbeea76..8cb9dc8c 100644 --- a/mods/ENTITIES/mobs_mc/slime+magma_cube.lua +++ b/mods/ENTITIES/mobs_mc/slime+magma_cube.lua @@ -94,9 +94,6 @@ local slime_big = { death_start = 88, death_end = 118, }, - water_damage = 0, - lava_damage = 4, - light_damage = 0, fall_damage = 0, view_range = 16, attack_type = "dogfight", diff --git a/mods/ENTITIES/mobs_mc/spider.lua b/mods/ENTITIES/mobs_mc/spider.lua index 9ec7f44b..f6ba05e4 100644 --- a/mods/ENTITIES/mobs_mc/spider.lua +++ b/mods/ENTITIES/mobs_mc/spider.lua @@ -46,9 +46,6 @@ local spider = { {name = mobs_mc.items.spider_eye, chance = 3, min = 1, max = 1,}, }, specific_attack = { "player", "mobs_mc:iron_golem" }, - water_damage = 0, - lava_damage = 4, - light_damage = 0, fear_height = 4, animation = { stand_speed = 10, diff --git a/mods/ENTITIES/mobs_mc/squid.lua b/mods/ENTITIES/mobs_mc/squid.lua index b22ca08f..28d2fe73 100644 --- a/mods/ENTITIES/mobs_mc/squid.lua +++ b/mods/ENTITIES/mobs_mc/squid.lua @@ -45,12 +45,10 @@ mobs:register_mob("mobs_mc:squid", { stepheight = 0.1, fly = true, fly_in = { mobs_mc.items.water_source, mobs_mc.items.river_water_source }, + breathes_in_water = true, jump = false, fall_speed = 0.5, view_range = 16, - water_damage = 0, - lava_damage = 4, - light_damage = 0, runaway = true, fear_height = 4, blood_texture = "mobs_mc_squid_blood.png", diff --git a/mods/ENTITIES/mobs_mc/vex.lua b/mods/ENTITIES/mobs_mc/vex.lua index 692783e0..938e2198 100644 --- a/mods/ENTITIES/mobs_mc/vex.lua +++ b/mods/ENTITIES/mobs_mc/vex.lua @@ -84,9 +84,6 @@ mobs:register_mob("mobs_mc:vex", { end end end, - water_damage = 0, - lava_damage = 4, - light_damage = 0, fly = true, fly_in = {"air"}, }) diff --git a/mods/ENTITIES/mobs_mc/villager.lua b/mods/ENTITIES/mobs_mc/villager.lua index e42cb690..fe1ff526 100644 --- a/mods/ENTITIES/mobs_mc/villager.lua +++ b/mods/ENTITIES/mobs_mc/villager.lua @@ -945,9 +945,6 @@ mobs:register_mob("mobs_mc:villager", { die_end = 220, die_loop = false, }, - water_damage = 0, - lava_damage = 4, - light_damage = 0, view_range = 16, fear_height = 4, jump = true, diff --git a/mods/ENTITIES/mobs_mc/villager_evoker.lua b/mods/ENTITIES/mobs_mc/villager_evoker.lua index 22af9d4b..7bb48e72 100644 --- a/mods/ENTITIES/mobs_mc/villager_evoker.lua +++ b/mods/ENTITIES/mobs_mc/villager_evoker.lua @@ -74,9 +74,6 @@ mobs:register_mob("mobs_mc:evoker", { die_end = 200, die_loop = false, }, - water_damage = 0, - lava_damage = 4, - light_damage = 0, view_range = 16, fear_height = 4, }) diff --git a/mods/ENTITIES/mobs_mc/villager_illusioner.lua b/mods/ENTITIES/mobs_mc/villager_illusioner.lua index de4ee89d..fe3efa8a 100644 --- a/mods/ENTITIES/mobs_mc/villager_illusioner.lua +++ b/mods/ENTITIES/mobs_mc/villager_illusioner.lua @@ -48,7 +48,6 @@ mobs:register_mob("mobs_mc:illusioner", { }, view_range = 16, fear_height = 4, - lava_damage = 4, }) mobs:register_egg("mobs_mc:illusioner", S("Illusioner"), "mobs_mc_spawn_icon_illusioner.png", 0) diff --git a/mods/ENTITIES/mobs_mc/villager_vindicator.lua b/mods/ENTITIES/mobs_mc/villager_vindicator.lua index 9558074a..a228aa56 100644 --- a/mods/ENTITIES/mobs_mc/villager_vindicator.lua +++ b/mods/ENTITIES/mobs_mc/villager_vindicator.lua @@ -61,9 +61,6 @@ mobs:register_mob("mobs_mc:vindicator", { die_end = 180, die_loop = false, }, - water_damage = 1, - lava_damage = 4, - light_damage = 0, view_range = 16, fear_height = 4, diff --git a/mods/ENTITIES/mobs_mc/villager_zombie.lua b/mods/ENTITIES/mobs_mc/villager_zombie.lua index e23f86bb..bc974277 100644 --- a/mods/ENTITIES/mobs_mc/villager_zombie.lua +++ b/mods/ENTITIES/mobs_mc/villager_zombie.lua @@ -16,6 +16,7 @@ mobs:register_mob("mobs_mc:villager_zombie", { type = "monster", hp_min = 20, hp_max = 20, + breath_max = -1, armor = 90, collisionbox = {-0.3, -0.01, -0.3, 0.3, 1.94, 0.3}, visual = "mesh", @@ -71,8 +72,6 @@ mobs:register_mob("mobs_mc:villager_zombie", { run_start = 0, run_end = 20, }, - water_damage = 1, - lava_damage = 5, sunlight_damage = 1, view_range = 16, fear_height = 4, diff --git a/mods/ENTITIES/mobs_mc/witch.lua b/mods/ENTITIES/mobs_mc/witch.lua index 8e8d8025..db183e67 100644 --- a/mods/ENTITIES/mobs_mc/witch.lua +++ b/mods/ENTITIES/mobs_mc/witch.lua @@ -63,9 +63,6 @@ mobs:register_mob("mobs_mc:witch", { shoot_start = 50, shoot_end = 82, }, - water_damage = 1, - lava_damage = 5, - light_damage = 0, view_range = 16, fear_height = 4, diff --git a/mods/ENTITIES/mobs_mc/wither.lua b/mods/ENTITIES/mobs_mc/wither.lua index 05431ce9..a6e6c70a 100644 --- a/mods/ENTITIES/mobs_mc/wither.lua +++ b/mods/ENTITIES/mobs_mc/wither.lua @@ -48,9 +48,7 @@ mobs:register_mob("mobs_mc:wither", { min = 1, max = 1}, }, - water_damage = 0, lava_damage = 0, - light_damage = 0, attack_type = "dogshoot", explosion_radius = 3, explosion_fire = false, diff --git a/mods/ENTITIES/mobs_mc/wolf.lua b/mods/ENTITIES/mobs_mc/wolf.lua index b7e69864..e8e5de1f 100644 --- a/mods/ENTITIES/mobs_mc/wolf.lua +++ b/mods/ENTITIES/mobs_mc/wolf.lua @@ -45,9 +45,6 @@ local wolf = { reach = 2, attack_type = "dogfight", fear_height = 4, - water_damage = 0, - lava_damage = 4, - light_damage = 0, follow = mobs_mc.follow.wolf, on_rightclick = function(self, clicker) -- Try to tame wolf (intentionally does NOT use mobs:feed_tame) diff --git a/mods/ENTITIES/mobs_mc/zombie.lua b/mods/ENTITIES/mobs_mc/zombie.lua index f08d364d..48e7fedf 100644 --- a/mods/ENTITIES/mobs_mc/zombie.lua +++ b/mods/ENTITIES/mobs_mc/zombie.lua @@ -42,6 +42,7 @@ local zombie = { type = "monster", hp_min = 20, hp_max = 20, + breath_max = -1, armor = 90, collisionbox = {-0.3, -0.01, -0.3, 0.3, 1.94, 0.3}, visual = "mesh", @@ -99,7 +100,6 @@ mobs:register_mob("mobs_mc:baby_zombie", baby_zombie) local husk = table.copy(zombie) husk.textures = {{"mobs_mc_husk.png"}} husk.sunlight_damage = 0 -husk.water_damage = 3 husk.drops = drops_common -- TODO: Husks avoid water diff --git a/mods/ENTITIES/mobs_mc/zombiepig.lua b/mods/ENTITIES/mobs_mc/zombiepig.lua index f21ea4fa..66034601 100644 --- a/mods/ENTITIES/mobs_mc/zombiepig.lua +++ b/mods/ENTITIES/mobs_mc/zombiepig.lua @@ -16,6 +16,7 @@ local pigman = { passive = false, hp_min = 20, hp_max = 20, + breath_max = -1, armor = 90, attack_type = "dogfight", group_attack = { "mobs_mc:pigman", "mobs_mc:baby_pigman" }, @@ -73,9 +74,7 @@ local pigman = { punch_start = 90, punch_end = 130, }, - water_damage = 1, lava_damage = 0, - light_damage = 0, fear_height = 4, view_range = 16, } From f9e46b914dd530df021661b6985a8340b0fddf2a Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Wed, 2 Oct 2019 18:43:48 +0200 Subject: [PATCH 316/737] Mobs: Separate fire damage from lava damage --- mods/ENTITIES/mcl_mobs/api.lua | 24 ++++++++++++++++------ mods/ENTITIES/mcl_mobs/api.txt | 4 +++- mods/ENTITIES/mobs_mc/blaze.lua | 1 + mods/ENTITIES/mobs_mc/creeper.lua | 2 -- mods/ENTITIES/mobs_mc/ender_dragon.lua | 1 + mods/ENTITIES/mobs_mc/skeleton_wither.lua | 1 + mods/ENTITIES/mobs_mc/slime+magma_cube.lua | 1 + mods/ENTITIES/mobs_mc/snowman.lua | 4 +--- mods/ENTITIES/mobs_mc/wither.lua | 1 + mods/ENTITIES/mobs_mc/zombie.lua | 1 - mods/ENTITIES/mobs_mc/zombiepig.lua | 1 + 11 files changed, 28 insertions(+), 13 deletions(-) diff --git a/mods/ENTITIES/mcl_mobs/api.lua b/mods/ENTITIES/mcl_mobs/api.lua index 4c34e3a5..9dd6cb6e 100644 --- a/mods/ENTITIES/mcl_mobs/api.lua +++ b/mods/ENTITIES/mcl_mobs/api.lua @@ -712,7 +712,7 @@ local do_env_damage = function(self) pos.y = pos.y + 1 -- for particle effect position - -- water + -- water damage if self.water_damage and nodef.groups.water then @@ -720,14 +720,13 @@ local do_env_damage = function(self) self.health = self.health - self.water_damage - -- TODO: Damage particle - effect(pos, 5, "bubble.png", nil, nil, 1, nil) + effect(pos, 5, "tnt_smoke.png", nil, nil, 1, nil) if check_for_death(self, "water", {type = "environment", pos = pos, node = self.standing_in}) then return end end - -- lava + -- lava damage elseif self.lava_damage and (nodef.groups.lava) then @@ -735,19 +734,31 @@ local do_env_damage = function(self) self.health = self.health - self.lava_damage - -- TODO: Damage particle effect(pos, 5, "fire_basic_flame.png", nil, nil, 1, nil) if check_for_death(self, "lava", {type = "environment", pos = pos, node = self.standing_in}) then return end end + -- fire damage + elseif self.fire_damage + and (nodef.groups.fire) then + + if self.fire_damage ~= 0 then + + self.health = self.health - self.fire_damage + + effect(pos, 5, "fire_basic_flame.png", nil, nil, 1, nil) + + if check_for_death(self, "fire", {type = "environment", + pos = pos, node = self.standing_in}) then return end + end + -- damage_per_second node check elseif nodef.damage_per_second ~= 0 then self.health = self.health - nodef.damage_per_second - -- TODO: Damage particle effect(pos, 5, "tnt_smoke.png") if check_for_death(self, "dps", {type = "environment", @@ -3132,6 +3143,7 @@ minetest.register_entity(name, { sunlight_damage = def.sunlight_damage or 0, water_damage = def.water_damage or 0, lava_damage = def.lava_damage or 8, + fire_damage = def.fire_damage or 1, suffocation = def.suffocation or true, fall_damage = def.fall_damage or 1, fall_speed = def.fall_speed or -10, -- must be lower than -2 (default: -10) diff --git a/mods/ENTITIES/mcl_mobs/api.txt b/mods/ENTITIES/mcl_mobs/api.txt index 283bc6a2..70ce89ff 100644 --- a/mods/ENTITIES/mcl_mobs/api.txt +++ b/mods/ENTITIES/mcl_mobs/api.txt @@ -61,9 +61,11 @@ functions needed for the mob to work properly which contains the following: 'fall_speed' has the maximum speed the mob can fall at, default is -10. 'fall_damage' when true causes falling to inflict damage. 'water_damage' holds the damage per second infliced to mobs when standing in - water. + water (default: 0). 'lava_damage' holds the damage per second inflicted to mobs when standing in lava (default: 8). + 'fire_damage' holds the damage per second inflicted to mobs when standing + in fire (default: 1). 'light_damage' holds the damage per second inflicted to mobs when it's too bright (above 13 light). 'suffocation' when true causes mobs to suffocate inside solid blocks (2 damage per second). diff --git a/mods/ENTITIES/mobs_mc/blaze.lua b/mods/ENTITIES/mobs_mc/blaze.lua index 421a90d4..0af66913 100644 --- a/mods/ENTITIES/mobs_mc/blaze.lua +++ b/mods/ENTITIES/mobs_mc/blaze.lua @@ -53,6 +53,7 @@ mobs:register_mob("mobs_mc:blaze", { -- MC Wiki: takes 1 damage every half second while in water water_damage = 2, lava_damage = 0, + fire_damage = 0, fall_damage = 0, fall_speed = -2.25, light_damage = 0, diff --git a/mods/ENTITIES/mobs_mc/creeper.lua b/mods/ENTITIES/mobs_mc/creeper.lua index 77737997..184d9cbe 100644 --- a/mods/ENTITIES/mobs_mc/creeper.lua +++ b/mods/ENTITIES/mobs_mc/creeper.lua @@ -114,8 +114,6 @@ mobs:register_mob("mobs_mc:creeper", { }, floats = 1, fear_height = 4, - lava_damage = 4, - light_damage = 0, view_range = 16, blood_amount = 0, }) diff --git a/mods/ENTITIES/mobs_mc/ender_dragon.lua b/mods/ENTITIES/mobs_mc/ender_dragon.lua index fd5543ae..0653c6d0 100644 --- a/mods/ENTITIES/mobs_mc/ender_dragon.lua +++ b/mods/ENTITIES/mobs_mc/ender_dragon.lua @@ -48,6 +48,7 @@ mobs:register_mob("mobs_mc:enderdragon", { max = 1}, }, lava_damage = 0, + fire_damage = 0, on_rightclick = nil, attack_type = "dogshoot", arrow = "mobs_mc:fireball2", diff --git a/mods/ENTITIES/mobs_mc/skeleton_wither.lua b/mods/ENTITIES/mobs_mc/skeleton_wither.lua index 8d8ebb3b..1816b177 100644 --- a/mods/ENTITIES/mobs_mc/skeleton_wither.lua +++ b/mods/ENTITIES/mobs_mc/skeleton_wither.lua @@ -75,6 +75,7 @@ mobs:register_mob("mobs_mc:witherskeleton", { }, water_damage = 0, lava_damage = 0, + fire_damage = 0, light_damage = 0, view_range = 16, attack_type = "dogfight", diff --git a/mods/ENTITIES/mobs_mc/slime+magma_cube.lua b/mods/ENTITIES/mobs_mc/slime+magma_cube.lua index 8cb9dc8c..f3f6ba4a 100644 --- a/mods/ENTITIES/mobs_mc/slime+magma_cube.lua +++ b/mods/ENTITIES/mobs_mc/slime+magma_cube.lua @@ -201,6 +201,7 @@ local magma_cube_big = { }, water_damage = 0, lava_damage = 0, + fire_damage = 0, light_damage = 0, fall_damage = 0, view_range = 16, diff --git a/mods/ENTITIES/mobs_mc/snowman.lua b/mods/ENTITIES/mobs_mc/snowman.lua index f0f8fc4f..c238925e 100644 --- a/mods/ENTITIES/mobs_mc/snowman.lua +++ b/mods/ENTITIES/mobs_mc/snowman.lua @@ -28,7 +28,7 @@ mobs:register_mob("mobs_mc:snowman", { view_range = 10, fall_damage = 0, water_damage = 4, - lava_damage = 20, + rain_damage = 4, attacks_monsters = true, collisionbox = {-0.35, -0.01, -0.35, 0.35, 1.89, 0.35}, visual = "mesh", @@ -119,8 +119,6 @@ mobs:register_mob("mobs_mc:snowman", { end end end, - - rain_damage = 4, }) -- This is to be called when a pumpkin or jack'o lantern has been placed. Recommended: In the on_construct function diff --git a/mods/ENTITIES/mobs_mc/wither.lua b/mods/ENTITIES/mobs_mc/wither.lua index a6e6c70a..547abd75 100644 --- a/mods/ENTITIES/mobs_mc/wither.lua +++ b/mods/ENTITIES/mobs_mc/wither.lua @@ -49,6 +49,7 @@ mobs:register_mob("mobs_mc:wither", { max = 1}, }, lava_damage = 0, + fire_damage = 0, attack_type = "dogshoot", explosion_radius = 3, explosion_fire = false, diff --git a/mods/ENTITIES/mobs_mc/zombie.lua b/mods/ENTITIES/mobs_mc/zombie.lua index 48e7fedf..d7548988 100644 --- a/mods/ENTITIES/mobs_mc/zombie.lua +++ b/mods/ENTITIES/mobs_mc/zombie.lua @@ -75,7 +75,6 @@ local zombie = { walk_start = 0, walk_end = 40, run_start = 0, run_end = 40, }, - lava_damage = 4, sunlight_damage = 2, view_range = 16, attack_type = "dogfight", diff --git a/mods/ENTITIES/mobs_mc/zombiepig.lua b/mods/ENTITIES/mobs_mc/zombiepig.lua index 66034601..77bd0e19 100644 --- a/mods/ENTITIES/mobs_mc/zombiepig.lua +++ b/mods/ENTITIES/mobs_mc/zombiepig.lua @@ -75,6 +75,7 @@ local pigman = { punch_end = 130, }, lava_damage = 0, + fire_damage = 0, fear_height = 4, view_range = 16, } From aae360db4c3be2c9f91b6295739d35a26dae394a Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Wed, 2 Oct 2019 18:57:06 +0200 Subject: [PATCH 317/737] Remove spawn icon for unused agent mob --- .../mobs_mc/textures/mobs_mc_spawn_icon_agent.png | Bin 417 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 mods/ENTITIES/mobs_mc/textures/mobs_mc_spawn_icon_agent.png diff --git a/mods/ENTITIES/mobs_mc/textures/mobs_mc_spawn_icon_agent.png b/mods/ENTITIES/mobs_mc/textures/mobs_mc_spawn_icon_agent.png deleted file mode 100644 index 08e0688915ca513a0bcacecb9c8f58f37bd34acd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 417 zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4kiW$hCdQ-7c($0u$2V)1v7v_-ZJ)y3=E86 zo-U3d6^w7EG`ceviX3O(V6VpE&=ACOh#}h0YWkrtV+}=?83&YR+-B06wD#e@2Ip|` z!;J2~xzDlk{Q5F4+9;`9T>AUR(tG!QSKZ(Jd#-59oH?Fnp645JCtP2haNF#YWbzfMrLv8UB#-(eob}!DolC`z%@It-R-_;v`TzjiDtHj6D`x(BI1>0PCZ|JXmDH-s7+Uc{C*{s%GoyEJZbW8Y3gF_9%sy~~n z#nSSFvuiDQ_8F8nq( Date: Wed, 2 Oct 2019 18:58:29 +0200 Subject: [PATCH 318/737] Set walk chance of agent mob to 0 --- mods/ENTITIES/mobs_mc/agent.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/mods/ENTITIES/mobs_mc/agent.lua b/mods/ENTITIES/mobs_mc/agent.lua index cc4bc0da..0a5f0354 100644 --- a/mods/ENTITIES/mobs_mc/agent.lua +++ b/mods/ENTITIES/mobs_mc/agent.lua @@ -19,6 +19,7 @@ mobs:register_mob("mobs_mc:agent", { }, -- TODO: sounds visual_size = {x=3, y=3}, + walk_chance = 0, walk_velocity = 0.6, run_velocity = 2, jump = true, From 041839fd1a51088d96b21b8996c825bd51c05ebd Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Wed, 2 Oct 2019 19:06:55 +0200 Subject: [PATCH 319/737] Update falling node when anvil got destroyed --- mods/ITEMS/mcl_anvils/init.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/mods/ITEMS/mcl_anvils/init.lua b/mods/ITEMS/mcl_anvils/init.lua index 45e27182..b2608cd8 100644 --- a/mods/ITEMS/mcl_anvils/init.lua +++ b/mods/ITEMS/mcl_anvils/init.lua @@ -228,6 +228,7 @@ local function damage_anvil(pos) drop_anvil_items(pos, meta) minetest.sound_play(mcl_sounds.node_sound_metal_defaults().dug, {pos=pos, max_hear_distance=16}) minetest.remove_node(pos) + minetest.check_single_for_falling({x=pos.x, y=pos.y+1, z=pos.z}) return true end end From a9ed14c4af5733a036c21954bee6522450eb9aed Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Wed, 2 Oct 2019 20:51:02 +0200 Subject: [PATCH 320/737] Fix boats moving too fast backwards --- mods/ENTITIES/mcl_boats/init.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/ENTITIES/mcl_boats/init.lua b/mods/ENTITIES/mcl_boats/init.lua index f5c14940..4b3cf82f 100644 --- a/mods/ENTITIES/mcl_boats/init.lua +++ b/mods/ENTITIES/mcl_boats/init.lua @@ -213,9 +213,9 @@ function boat.on_step(self, dtime) end local s = get_sign(self._v) if not on_water and not in_water and math.abs(self._v) > 0.25 then - v_slowdown = math.min(self._v - 0.25, v_slowdown * 5) + v_slowdown = math.min(math.abs(self._v) - 0.25, v_slowdown * 5) elseif in_water and math.abs(self._v) > 0.5 then - v_slowdown = math.min(self._v - 0.5, v_slowdown * 5) + v_slowdown = math.min(math.abs(self._v) - 0.5, v_slowdown * 5) end self._v = self._v - v_slowdown * s if s ~= get_sign(self._v) then From 4a7aaa902456b20df2e59754a8034e98234256da Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Wed, 2 Oct 2019 20:53:47 +0200 Subject: [PATCH 321/737] Increase boat speed on land --- mods/ENTITIES/mcl_boats/init.lua | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/mods/ENTITIES/mcl_boats/init.lua b/mods/ENTITIES/mcl_boats/init.lua index 4b3cf82f..9999b2b7 100644 --- a/mods/ENTITIES/mcl_boats/init.lua +++ b/mods/ENTITIES/mcl_boats/init.lua @@ -212,10 +212,10 @@ function boat.on_step(self, dtime) end end local s = get_sign(self._v) - if not on_water and not in_water and math.abs(self._v) > 0.25 then - v_slowdown = math.min(math.abs(self._v) - 0.25, v_slowdown * 5) - elseif in_water and math.abs(self._v) > 0.5 then - v_slowdown = math.min(math.abs(self._v) - 0.5, v_slowdown * 5) + if not on_water and not in_water and math.abs(self._v) > 1.0 then + v_slowdown = math.min(math.abs(self._v) - 1.0, v_slowdown * 5) + elseif in_water and math.abs(self._v) > 1.5 then + v_slowdown = math.min(math.abs(self._v) - 1.5, v_slowdown * 5) end self._v = self._v - v_slowdown * s if s ~= get_sign(self._v) then From b3e1df7e9b374bde37492a72c23ee9b4efe5a8c3 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Wed, 2 Oct 2019 21:18:29 +0200 Subject: [PATCH 322/737] Round pos in spawnstruct chatcommand --- mods/MAPGEN/mcl_structures/init.lua | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mods/MAPGEN/mcl_structures/init.lua b/mods/MAPGEN/mcl_structures/init.lua index 26fd7b2c..132c7089 100644 --- a/mods/MAPGEN/mcl_structures/init.lua +++ b/mods/MAPGEN/mcl_structures/init.lua @@ -463,10 +463,11 @@ minetest.register_chatcommand("spawnstruct", { description = S("Generate a pre-defined structure near your position."), privs = {debug = true}, func = function(name, param) - local pos= minetest.get_player_by_name(name):get_pos() + local pos = minetest.get_player_by_name(name):get_pos() if not pos then return end + pos = vector.round(pos) local errord = false local message = S("Structure placed.") if param == "village" then From da149d5a587eca29d78190ce34e661ab5d87be0d Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Wed, 2 Oct 2019 22:06:26 +0200 Subject: [PATCH 323/737] Apply more checks in igloo basement generation --- mods/MAPGEN/mcl_structures/init.lua | 33 ++++++++++++++++++++++------- 1 file changed, 25 insertions(+), 8 deletions(-) diff --git a/mods/MAPGEN/mcl_structures/init.lua b/mods/MAPGEN/mcl_structures/init.lua index 132c7089..0c01a788 100644 --- a/mods/MAPGEN/mcl_structures/init.lua +++ b/mods/MAPGEN/mcl_structures/init.lua @@ -78,16 +78,23 @@ end mcl_structures.generate_igloo = function(pos) -- TODO: Check if we're allowed to destroy nodes - -- FIXME: Some nodes (water, ice) don't get overwritten by ladder - -- FIXME: Nodes at Y=0 don't get overwritten by ladder - -- FIXME: Apply basement height limit in other dimensions -- TODO: Check if basement generation would not be too obvious -- TODO: Generate basement with 50% chance only local success, rotation = mcl_structures.generate_igloo_top(pos) if success then - local buffer = pos.y - (mcl_vars.mg_lava_overworld_max + 10) + local dim = mcl_worlds.pos_to_dimension(pos) + buffer = pos.y - (mcl_vars.mg_lava_overworld_max + 10) + if dim == "nether" then + buffer = pos.y - (mcl_vars.mg_lava_nether_max + 10) + elseif dim == "end" then + buffer = pos.y - (mcl_vars.mg_end_min + 1) + elseif dim == "overworld" then + buffer = pos.y - (mcl_vars.mg_lava_overworld_max + 10) + else + return success + end if buffer <= 19 then - return + return success end local depth = math.random(19, buffer) local bpos = {x=pos.x, y=pos.y-depth, z=pos.z} @@ -113,8 +120,6 @@ mcl_structures.generate_igloo = function(pos) else return success end - -- TODO: more reliable param2 - minetest.set_node(tpos, {name="mcl_doors:trapdoor", param2=20+minetest.dir_to_facedir(dir)}) local set_brick = function(pos) local c = math.random(1, 3) -- cracked chance local m = math.random(1, 10) -- chance for monster egg @@ -135,14 +140,26 @@ mcl_structures.generate_igloo = function(pos) minetest.set_node(pos, {name=brick}) end local ladder_param2 = minetest.dir_to_wallmounted(tdir) + local real_depth = 0 for y=1, depth-5 do + real_depth = real_depth + 1 + local node = minetest.get_node({x=tpos.x,y=tpos.y-y,z=tpos.z}) + local def = minetest.registered_nodes[node.name] + if (not def) or (not def.walkable) or (def.liquidtype ~= "none") then + bpos.y = tpos.y-y-4 + break + end set_brick({x=tpos.x-1,y=tpos.y-y,z=tpos.z }) set_brick({x=tpos.x+1,y=tpos.y-y,z=tpos.z }) set_brick({x=tpos.x ,y=tpos.y-y,z=tpos.z-1}) set_brick({x=tpos.x ,y=tpos.y-y,z=tpos.z+1}) minetest.set_node({x=tpos.x,y=tpos.y-y,z=tpos.z}, {name="mcl_core:ladder", param2=ladder_param2}) end - mcl_structures.generate_igloo_basement(bpos, rotation) + if real_depth > 1 then + -- TODO: more reliable param2 + minetest.set_node(tpos, {name="mcl_doors:trapdoor", param2=20+minetest.dir_to_facedir(dir)}) + mcl_structures.generate_igloo_basement(bpos, rotation) + end end return success end From 5198f5cdecdde1f69ece8e6a31878a58fa1c69b5 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Wed, 2 Oct 2019 22:29:25 +0200 Subject: [PATCH 324/737] More igloo basement placement tweaks --- mods/MAPGEN/mcl_structures/init.lua | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/mods/MAPGEN/mcl_structures/init.lua b/mods/MAPGEN/mcl_structures/init.lua index 0c01a788..786f156f 100644 --- a/mods/MAPGEN/mcl_structures/init.lua +++ b/mods/MAPGEN/mcl_structures/init.lua @@ -80,8 +80,11 @@ mcl_structures.generate_igloo = function(pos) -- TODO: Check if we're allowed to destroy nodes -- TODO: Check if basement generation would not be too obvious -- TODO: Generate basement with 50% chance only + -- Place igloo local success, rotation = mcl_structures.generate_igloo_top(pos) + -- Generate optional basement if success then + -- Select basement depth local dim = mcl_worlds.pos_to_dimension(pos) buffer = pos.y - (mcl_vars.mg_lava_overworld_max + 10) if dim == "nether" then @@ -141,25 +144,31 @@ mcl_structures.generate_igloo = function(pos) end local ladder_param2 = minetest.dir_to_wallmounted(tdir) local real_depth = 0 + -- Check how deep we can actuall dig for y=1, depth-5 do real_depth = real_depth + 1 local node = minetest.get_node({x=tpos.x,y=tpos.y-y,z=tpos.z}) local def = minetest.registered_nodes[node.name] if (not def) or (not def.walkable) or (def.liquidtype ~= "none") then - bpos.y = tpos.y-y-4 + bpos.y = tpos.y-y+1 break end + end + if real_depth <= 6 then + return success + end + -- Place hidden trapdoor + minetest.set_node(tpos, {name="mcl_doors:trapdoor", param2=20+minetest.dir_to_facedir(dir)}) -- TODO: more reliable param2 + -- Generate ladder to basement + for y=1, real_depth-5 do set_brick({x=tpos.x-1,y=tpos.y-y,z=tpos.z }) set_brick({x=tpos.x+1,y=tpos.y-y,z=tpos.z }) set_brick({x=tpos.x ,y=tpos.y-y,z=tpos.z-1}) set_brick({x=tpos.x ,y=tpos.y-y,z=tpos.z+1}) minetest.set_node({x=tpos.x,y=tpos.y-y,z=tpos.z}, {name="mcl_core:ladder", param2=ladder_param2}) end - if real_depth > 1 then - -- TODO: more reliable param2 - minetest.set_node(tpos, {name="mcl_doors:trapdoor", param2=20+minetest.dir_to_facedir(dir)}) - mcl_structures.generate_igloo_basement(bpos, rotation) - end + -- Place basement + mcl_structures.generate_igloo_basement(bpos, rotation) end return success end From 332236645726d86dad6193390c27d4900ec5cb5d Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Wed, 2 Oct 2019 22:31:19 +0200 Subject: [PATCH 325/737] Enable igloo basements with 50% chance --- mods/MAPGEN/mcl_structures/init.lua | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/mods/MAPGEN/mcl_structures/init.lua b/mods/MAPGEN/mcl_structures/init.lua index 786f156f..bb51004a 100644 --- a/mods/MAPGEN/mcl_structures/init.lua +++ b/mods/MAPGEN/mcl_structures/init.lua @@ -44,7 +44,7 @@ mcl_structures.call_struct = function(pos, struct_style, rotation) elseif struct_style == "desert_well" then return mcl_structures.generate_desert_well(pos, rotation) elseif struct_style == "igloo" then - return mcl_structures.generate_igloo_top(pos, rotation) + return mcl_structures.generate_igloo(pos, rotation) elseif struct_style == "witch_hut" then return mcl_structures.generate_witch_hut(pos, rotation) elseif struct_style == "ice_spike_small" then @@ -77,13 +77,11 @@ mcl_structures.generate_desert_well = function(pos) end mcl_structures.generate_igloo = function(pos) - -- TODO: Check if we're allowed to destroy nodes - -- TODO: Check if basement generation would not be too obvious - -- TODO: Generate basement with 50% chance only -- Place igloo local success, rotation = mcl_structures.generate_igloo_top(pos) - -- Generate optional basement - if success then + -- Place igloo basement with 50% chance + local r = math.random(1,2) + if success and r == 1 then -- Select basement depth local dim = mcl_worlds.pos_to_dimension(pos) buffer = pos.y - (mcl_vars.mg_lava_overworld_max + 10) @@ -149,7 +147,7 @@ mcl_structures.generate_igloo = function(pos) real_depth = real_depth + 1 local node = minetest.get_node({x=tpos.x,y=tpos.y-y,z=tpos.z}) local def = minetest.registered_nodes[node.name] - if (not def) or (not def.walkable) or (def.liquidtype ~= "none") then + if (not def) or (not def.walkable) or (def.liquidtype ~= "none") or (not def.is_ground_content) then bpos.y = tpos.y-y+1 break end @@ -160,7 +158,7 @@ mcl_structures.generate_igloo = function(pos) -- Place hidden trapdoor minetest.set_node(tpos, {name="mcl_doors:trapdoor", param2=20+minetest.dir_to_facedir(dir)}) -- TODO: more reliable param2 -- Generate ladder to basement - for y=1, real_depth-5 do + for y=1, real_depth-1 do set_brick({x=tpos.x-1,y=tpos.y-y,z=tpos.z }) set_brick({x=tpos.x+1,y=tpos.y-y,z=tpos.z }) set_brick({x=tpos.x ,y=tpos.y-y,z=tpos.z-1}) @@ -504,7 +502,7 @@ minetest.register_chatcommand("spawnstruct", { elseif param == "desert_well" then mcl_structures.generate_desert_well(pos) elseif param == "igloo" then - mcl_structures.generate_igloo_top(pos) + mcl_structures.generate_igloo(pos) elseif param == "witch_hut" then mcl_structures.generate_witch_hut(pos) elseif param == "boulder" then From 5bd19c03f6e9e7521f48b41114b421da9f14407b Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Thu, 3 Oct 2019 00:00:25 +0200 Subject: [PATCH 326/737] Wither no longer floats in water --- mods/ENTITIES/mobs_mc/wither.lua | 1 - 1 file changed, 1 deletion(-) diff --git a/mods/ENTITIES/mobs_mc/wither.lua b/mods/ENTITIES/mobs_mc/wither.lua index 547abd75..db936853 100644 --- a/mods/ENTITIES/mobs_mc/wither.lua +++ b/mods/ENTITIES/mobs_mc/wither.lua @@ -41,7 +41,6 @@ mobs:register_mob("mobs_mc:wither", { dogshoot_switch = 1, dogshoot_count_max =1, attack_animals = true, - floats=1, drops = { {name = mobs_mc.items.nether_star, chance = 1, From d9424ad82e6fc6ddcd9601dab230fe421f535633 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Thu, 3 Oct 2019 11:53:26 +0200 Subject: [PATCH 327/737] Make dmg particles proportional to dmg --- mods/ENTITIES/mcl_mobs/api.lua | 70 +++++++++++++++-------- mods/ENTITIES/mcl_mobs/api.txt | 2 - mods/ENTITIES/mobs_mc/blaze.lua | 1 - mods/ENTITIES/mobs_mc/creeper.lua | 1 - mods/ENTITIES/mobs_mc/ender_dragon.lua | 1 - mods/ENTITIES/mobs_mc/enderman.lua | 1 - mods/ENTITIES/mobs_mc/endermite.lua | 1 - mods/ENTITIES/mobs_mc/ghast.lua | 1 - mods/ENTITIES/mobs_mc/guardian.lua | 1 - mods/ENTITIES/mobs_mc/guardian_elder.lua | 1 - mods/ENTITIES/mobs_mc/horse.lua | 1 - mods/ENTITIES/mobs_mc/iron_golem.lua | 1 - mods/ENTITIES/mobs_mc/shulker.lua | 1 - mods/ENTITIES/mobs_mc/silverfish.lua | 1 - mods/ENTITIES/mobs_mc/skeleton+stray.lua | 1 - mods/ENTITIES/mobs_mc/skeleton_wither.lua | 1 - mods/ENTITIES/mobs_mc/snowman.lua | 1 - mods/ENTITIES/mobs_mc/spider.lua | 1 - mods/ENTITIES/mobs_mc/wither.lua | 1 - 19 files changed, 45 insertions(+), 44 deletions(-) diff --git a/mods/ENTITIES/mcl_mobs/api.lua b/mods/ENTITIES/mcl_mobs/api.lua index 9dd6cb6e..2b610912 100644 --- a/mods/ENTITIES/mcl_mobs/api.lua +++ b/mods/ENTITIES/mcl_mobs/api.lua @@ -375,20 +375,28 @@ end -- custom particle effects -local effect = function(pos, amount, texture, min_size, max_size, radius, gravity, glow) +local effect = function(pos, amount, texture, min_size, max_size, radius, gravity, glow, go_down) radius = radius or 2 min_size = min_size or 0.5 max_size = max_size or 1 gravity = gravity or -10 glow = glow or 0 + go_down = go_down or false + + local ym + if go_down then + ym = 0 + else + ym = -radius + end minetest.add_particlespawner({ amount = amount, time = 0.25, minpos = pos, maxpos = pos, - minvel = {x = -radius, y = -radius, z = -radius}, + minvel = {x = -radius, y = ym, z = -radius}, maxvel = {x = radius, y = radius, z = radius}, minacc = {x = 0, y = gravity, z = 0}, maxacc = {x = 0, y = gravity, z = 0}, @@ -401,6 +409,35 @@ local effect = function(pos, amount, texture, min_size, max_size, radius, gravit }) end +local damage_effect = function(self, damage) + -- damage particles + if (not disable_blood) and damage > 0 then + + local amount_large = math.floor(damage / 2) + local amount_small = damage % 2 + + local pos = self.object:get_pos() + + pos.y = pos.y + (self.collisionbox[5] - self.collisionbox[2]) * .5 + + local texture + -- do we have a single blood texture or multiple? + if type(self.blood_texture) == "table" then + texture = self.blood_texture[random(1, #self.blood_texture)] + else + texture = self.blood_texture + end + -- full heart damage (one particle for each 2 HP damage) + if amount_large > 0 then + effect(pos, amount_large, texture, 2, 2, 1.75, 0, nil, true) + end + -- half heart damage (one additional particle if damage is an odd number) + if amount_small > 0 then + -- TODO: Use "half heart" + effect(pos, amount_small, texture, 1, 1, 1.75, 0, nil, true) + end + end +end local update_tag = function(self) self.object:set_properties({ @@ -781,13 +818,14 @@ local do_env_damage = function(self) effect(pos, 2, "bubble.png", nil, nil, 1, nil) if self.breath <= 0 then - -- TODO: Damage particle - effect(pos, 5, "bubble.png", nil, nil, 1, nil) + local dmg if nodef.drowning > 0 then - self.health = self.health - nodef.drowning + dmg = nodef.drowning else - self.health = self.health - 4 + dmg = 4 end + damage_effect(self, dmg) + self.health = self.health - dmg end if check_for_death(self, "drowning", {type = "environment", pos = pos, node = self.standing_in}) then return end @@ -2540,24 +2578,7 @@ local mob_punch = function(self, hitter, tflp, tool_capabilities, dir) }) end - -- blood_particles - if self.blood_amount > 0 - and not disable_blood then - - local pos = self.object:get_pos() - - pos.y = pos.y + (-self.collisionbox[2] + self.collisionbox[5]) * .5 - - -- do we have a single blood texture or multiple? - if type(self.blood_texture) == "table" then - - local blood = self.blood_texture[random(1, #self.blood_texture)] - - effect(pos, self.blood_amount, blood, nil, nil, 1, nil) - else - effect(pos, self.blood_amount, self.blood_texture, nil, nil, 1, nil) - end - end + damage_effect(self, damage) -- do damage self.health = self.health - floor(damage) @@ -3161,7 +3182,6 @@ minetest.register_entity(name, { group_attack = def.group_attack or false, passive = def.passive or false, knock_back = def.knock_back ~= false, - blood_amount = def.blood_amount or 5, blood_texture = def.blood_texture or "mobs_blood.png", shoot_offset = def.shoot_offset or 0, floats = def.floats or 1, -- floats in water by default diff --git a/mods/ENTITIES/mcl_mobs/api.txt b/mods/ENTITIES/mcl_mobs/api.txt index 70ce89ff..3ae95dc5 100644 --- a/mods/ENTITIES/mcl_mobs/api.txt +++ b/mods/ENTITIES/mcl_mobs/api.txt @@ -123,8 +123,6 @@ functions needed for the mob to work properly which contains the following: e.g. {"player", "mobs_animal:chicken"}. 'runaway_from' contains a table with mob names to run away from, add "player" to list to runaway from player also. - 'blood_amount' contains the number of blood droplets to appear when - mob is hit. 'blood_texture' has the texture name to use for droplets e.g. "mobs_blood.png", or table {"blood1.png", "blood2.png"} 'pathfinding' set to 1 for mobs to use pathfinder feature to locate diff --git a/mods/ENTITIES/mobs_mc/blaze.lua b/mods/ENTITIES/mobs_mc/blaze.lua index 0af66913..400a5339 100644 --- a/mods/ENTITIES/mobs_mc/blaze.lua +++ b/mods/ENTITIES/mobs_mc/blaze.lua @@ -67,7 +67,6 @@ mobs:register_mob("mobs_mc:blaze", { fly = true, jump_chance = 98, fear_height = 0, - blood_amount = 0, glow = 14, }) diff --git a/mods/ENTITIES/mobs_mc/creeper.lua b/mods/ENTITIES/mobs_mc/creeper.lua index 184d9cbe..07750ff2 100644 --- a/mods/ENTITIES/mobs_mc/creeper.lua +++ b/mods/ENTITIES/mobs_mc/creeper.lua @@ -115,7 +115,6 @@ mobs:register_mob("mobs_mc:creeper", { floats = 1, fear_height = 4, view_range = 16, - blood_amount = 0, }) diff --git a/mods/ENTITIES/mobs_mc/ender_dragon.lua b/mods/ENTITIES/mobs_mc/ender_dragon.lua index 0653c6d0..ccd2fe30 100644 --- a/mods/ENTITIES/mobs_mc/ender_dragon.lua +++ b/mods/ENTITIES/mobs_mc/ender_dragon.lua @@ -60,7 +60,6 @@ mobs:register_mob("mobs_mc:enderdragon", { walk_start = 0, walk_end = 20, run_start = 0, run_end = 20, }, - blood_amount = 0, ignores_nametag = true, }) diff --git a/mods/ENTITIES/mobs_mc/enderman.lua b/mods/ENTITIES/mobs_mc/enderman.lua index ad74768b..124a2c9d 100644 --- a/mods/ENTITIES/mobs_mc/enderman.lua +++ b/mods/ENTITIES/mobs_mc/enderman.lua @@ -325,7 +325,6 @@ mobs:register_mob("mobs_mc:enderman", { view_range = 4, fear_height = 4, attack_type = "dogfight", - blood_amount = 0, }) diff --git a/mods/ENTITIES/mobs_mc/endermite.lua b/mods/ENTITIES/mobs_mc/endermite.lua index ebec262d..5a9793cd 100644 --- a/mods/ENTITIES/mobs_mc/endermite.lua +++ b/mods/ENTITIES/mobs_mc/endermite.lua @@ -31,7 +31,6 @@ mobs:register_mob("mobs_mc:endermite", { view_range = 16, damage = 2, reach = 1, - blood_amount = 0, }) mobs:register_egg("mobs_mc:endermite", S("Endermite"), "mobs_mc_spawn_icon_endermite.png", 0) diff --git a/mods/ENTITIES/mobs_mc/ghast.lua b/mods/ENTITIES/mobs_mc/ghast.lua index f840653c..fe14e0e6 100644 --- a/mods/ENTITIES/mobs_mc/ghast.lua +++ b/mods/ENTITIES/mobs_mc/ghast.lua @@ -71,7 +71,6 @@ mobs:register_mob("mobs_mc:ghast", { fly = true, fly_in = {"air"}, jump_chance = 98, - blood_amount = 0, }) diff --git a/mods/ENTITIES/mobs_mc/guardian.lua b/mods/ENTITIES/mobs_mc/guardian.lua index 24d0ebd0..503417d2 100644 --- a/mods/ENTITIES/mobs_mc/guardian.lua +++ b/mods/ENTITIES/mobs_mc/guardian.lua @@ -77,7 +77,6 @@ mobs:register_mob("mobs_mc:guardian", { stepheight = 0.1, jump = false, view_range = 16, - blood_amount = 0, }) mobs:spawn_specific("mobs_mc:guardian", mobs_mc.spawn.water, mobs_mc.spawn_water, 0, minetest.LIGHT_MAX+1, 30, 25000, 2, mobs_mc.spawn_height.overworld_min, mobs_mc.spawn_height.water - 10) diff --git a/mods/ENTITIES/mobs_mc/guardian_elder.lua b/mods/ENTITIES/mobs_mc/guardian_elder.lua index f3799baf..61f5097d 100644 --- a/mods/ENTITIES/mobs_mc/guardian_elder.lua +++ b/mods/ENTITIES/mobs_mc/guardian_elder.lua @@ -82,7 +82,6 @@ mobs:register_mob("mobs_mc:guardian_elder", { stepheight = 0.1, jump = false, view_range = 16, - blood_amount = 0, }) mobs:spawn_specific("mobs_mc:guardian_elder", mobs_mc.spawn.water, mobs_mc.spawn_water, 0, minetest.LIGHT_MAX+1, 30, 40000, 2, mobs_mc.spawn_height.overworld_min, mobs_mc.spawn_height.water-18) diff --git a/mods/ENTITIES/mobs_mc/horse.lua b/mods/ENTITIES/mobs_mc/horse.lua index d51a1c66..7eea999a 100644 --- a/mods/ENTITIES/mobs_mc/horse.lua +++ b/mods/ENTITIES/mobs_mc/horse.lua @@ -336,7 +336,6 @@ skeleton_horse.sounds = { damage = "mobs_mc_skeleton_hurt", distance = 16, } -skeleton_horse.blood_amount = 0 mobs:register_mob("mobs_mc:skeleton_horse", skeleton_horse) -- Zombie horse diff --git a/mods/ENTITIES/mobs_mc/iron_golem.lua b/mods/ENTITIES/mobs_mc/iron_golem.lua index 95a088de..046c655a 100644 --- a/mods/ENTITIES/mobs_mc/iron_golem.lua +++ b/mods/ENTITIES/mobs_mc/iron_golem.lua @@ -58,7 +58,6 @@ mobs:register_mob("mobs_mc:iron_golem", { punch_start = 40, punch_end = 50, }, jump = true, - blood_amount = 0, }) diff --git a/mods/ENTITIES/mobs_mc/shulker.lua b/mods/ENTITIES/mobs_mc/shulker.lua index 28d60dd1..0a06fe89 100644 --- a/mods/ENTITIES/mobs_mc/shulker.lua +++ b/mods/ENTITIES/mobs_mc/shulker.lua @@ -44,7 +44,6 @@ mobs:register_mob("mobs_mc:shulker", { run_start = 0, run_end = 45, punch_start = 80, punch_end = 100, }, - blood_amount = 0, view_range = 16, fear_height = 4, }) diff --git a/mods/ENTITIES/mobs_mc/silverfish.lua b/mods/ENTITIES/mobs_mc/silverfish.lua index 5bd077a7..f2c11198 100644 --- a/mods/ENTITIES/mobs_mc/silverfish.lua +++ b/mods/ENTITIES/mobs_mc/silverfish.lua @@ -42,7 +42,6 @@ mobs:register_mob("mobs_mc:silverfish", { attack_type = "dogfight", damage = 1, reach = 1, - blood_amount = 0, }) mobs:register_egg("mobs_mc:silverfish", S("Silverfish"), "mobs_mc_spawn_icon_silverfish.png", 0) diff --git a/mods/ENTITIES/mobs_mc/skeleton+stray.lua b/mods/ENTITIES/mobs_mc/skeleton+stray.lua index 128f60c8..04d402d8 100644 --- a/mods/ENTITIES/mobs_mc/skeleton+stray.lua +++ b/mods/ENTITIES/mobs_mc/skeleton+stray.lua @@ -83,7 +83,6 @@ local skeleton = { shoot_offset = 1, dogshoot_switch = 1, dogshoot_count_max =1.8, - blood_amount = 0, } mobs:register_mob("mobs_mc:skeleton", skeleton) diff --git a/mods/ENTITIES/mobs_mc/skeleton_wither.lua b/mods/ENTITIES/mobs_mc/skeleton_wither.lua index 1816b177..896df69a 100644 --- a/mods/ENTITIES/mobs_mc/skeleton_wither.lua +++ b/mods/ENTITIES/mobs_mc/skeleton_wither.lua @@ -81,7 +81,6 @@ mobs:register_mob("mobs_mc:witherskeleton", { attack_type = "dogfight", dogshoot_switch = 1, dogshoot_count_max =0.5, - blood_amount = 0, fear_height = 4, }) diff --git a/mods/ENTITIES/mobs_mc/snowman.lua b/mods/ENTITIES/mobs_mc/snowman.lua index c238925e..48143b44 100644 --- a/mods/ENTITIES/mobs_mc/snowman.lua +++ b/mods/ENTITIES/mobs_mc/snowman.lua @@ -69,7 +69,6 @@ mobs:register_mob("mobs_mc:snowman", { die_speed = 25, die_loop = false, }, - blood_amount = 0, do_custom = function(self, dtime) if not mobs_griefing then return diff --git a/mods/ENTITIES/mobs_mc/spider.lua b/mods/ENTITIES/mobs_mc/spider.lua index f6ba05e4..5a353c88 100644 --- a/mods/ENTITIES/mobs_mc/spider.lua +++ b/mods/ENTITIES/mobs_mc/spider.lua @@ -58,7 +58,6 @@ local spider = { run_start = 0, run_end = 20, }, - blood_amount = 0, } mobs:register_mob("mobs_mc:spider", spider) diff --git a/mods/ENTITIES/mobs_mc/wither.lua b/mods/ENTITIES/mobs_mc/wither.lua index db936853..871496d0 100644 --- a/mods/ENTITIES/mobs_mc/wither.lua +++ b/mods/ENTITIES/mobs_mc/wither.lua @@ -63,7 +63,6 @@ mobs:register_mob("mobs_mc:wither", { walk_start = 0, walk_end = 20, run_start = 0, run_end = 20, }, - blood_amount = 0, }) local mobs_griefing = minetest.settings:get_bool("mobs_griefing") ~= false From 8b9ac5c6a6944da58448bc830b70412fd9d345f2 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Thu, 3 Oct 2019 12:03:36 +0200 Subject: [PATCH 328/737] Remove custom damage particles --- mods/ENTITIES/mcl_mobs/api.lua | 9 +-------- mods/ENTITIES/mcl_mobs/api.txt | 2 -- mods/ENTITIES/mobs_mc/slime+magma_cube.lua | 2 -- mods/ENTITIES/mobs_mc/squid.lua | 1 - .../mobs_mc/textures/mobs_mc_magmacube_blood.png | Bin 86 -> 0 bytes .../mobs_mc/textures/mobs_mc_slime_blood.png | Bin 86 -> 0 bytes .../mobs_mc/textures/mobs_mc_squid_blood.png | Bin 82 -> 0 bytes 7 files changed, 1 insertion(+), 13 deletions(-) delete mode 100644 mods/ENTITIES/mobs_mc/textures/mobs_mc_magmacube_blood.png delete mode 100644 mods/ENTITIES/mobs_mc/textures/mobs_mc_slime_blood.png delete mode 100644 mods/ENTITIES/mobs_mc/textures/mobs_mc_squid_blood.png diff --git a/mods/ENTITIES/mcl_mobs/api.lua b/mods/ENTITIES/mcl_mobs/api.lua index 2b610912..21a6b39d 100644 --- a/mods/ENTITIES/mcl_mobs/api.lua +++ b/mods/ENTITIES/mcl_mobs/api.lua @@ -420,13 +420,7 @@ local damage_effect = function(self, damage) pos.y = pos.y + (self.collisionbox[5] - self.collisionbox[2]) * .5 - local texture - -- do we have a single blood texture or multiple? - if type(self.blood_texture) == "table" then - texture = self.blood_texture[random(1, #self.blood_texture)] - else - texture = self.blood_texture - end + local texture = "mobs_blood.png" -- full heart damage (one particle for each 2 HP damage) if amount_large > 0 then effect(pos, amount_large, texture, 2, 2, 1.75, 0, nil, true) @@ -3182,7 +3176,6 @@ minetest.register_entity(name, { group_attack = def.group_attack or false, passive = def.passive or false, knock_back = def.knock_back ~= false, - blood_texture = def.blood_texture or "mobs_blood.png", shoot_offset = def.shoot_offset or 0, floats = def.floats or 1, -- floats in water by default replace_rate = def.replace_rate, diff --git a/mods/ENTITIES/mcl_mobs/api.txt b/mods/ENTITIES/mcl_mobs/api.txt index 3ae95dc5..0373b369 100644 --- a/mods/ENTITIES/mcl_mobs/api.txt +++ b/mods/ENTITIES/mcl_mobs/api.txt @@ -123,8 +123,6 @@ functions needed for the mob to work properly which contains the following: e.g. {"player", "mobs_animal:chicken"}. 'runaway_from' contains a table with mob names to run away from, add "player" to list to runaway from player also. - 'blood_texture' has the texture name to use for droplets e.g. - "mobs_blood.png", or table {"blood1.png", "blood2.png"} 'pathfinding' set to 1 for mobs to use pathfinder feature to locate player, set to 2 so they can build/break also (only works with dogfight attack and when 'mobs_griefing' diff --git a/mods/ENTITIES/mobs_mc/slime+magma_cube.lua b/mods/ENTITIES/mobs_mc/slime+magma_cube.lua index f3f6ba4a..00486499 100644 --- a/mods/ENTITIES/mobs_mc/slime+magma_cube.lua +++ b/mods/ENTITIES/mobs_mc/slime+magma_cube.lua @@ -66,7 +66,6 @@ local slime_big = { textures = {{"mobs_mc_slime.png"}}, visual = "mesh", mesh = "mobs_mc_slime.b3d", - blood_texture ="mobs_mc_slime_blood.png", makes_footstep_sound = true, sounds = { jump = "green_slime_jump", @@ -165,7 +164,6 @@ local magma_cube_big = { textures = {{ "mobs_mc_magmacube.png" }}, visual = "mesh", mesh = "mobs_mc_magmacube.b3d", - blood_texture = "mobs_mc_magmacube_blood.png", makes_footstep_sound = true, sounds = { jump = "mobs_mc_magma_cube_big", diff --git a/mods/ENTITIES/mobs_mc/squid.lua b/mods/ENTITIES/mobs_mc/squid.lua index 28d2fe73..d2a45f44 100644 --- a/mods/ENTITIES/mobs_mc/squid.lua +++ b/mods/ENTITIES/mobs_mc/squid.lua @@ -51,7 +51,6 @@ mobs:register_mob("mobs_mc:squid", { view_range = 16, runaway = true, fear_height = 4, - blood_texture = "mobs_mc_squid_blood.png", }) -- TODO: Behaviour: squirt diff --git a/mods/ENTITIES/mobs_mc/textures/mobs_mc_magmacube_blood.png b/mods/ENTITIES/mobs_mc/textures/mobs_mc_magmacube_blood.png deleted file mode 100644 index 46b699beeb1bf12a959127b8010342b1c98d2a7f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 86 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4kiW$h6xih%orFLWIbIRLn;`PE2b+r2{C0x nD4+FJk;>p*Eahf8p@o4p?DN4d=0>#)3=9mOu6{1-oD!M<%M=tp diff --git a/mods/ENTITIES/mobs_mc/textures/mobs_mc_slime_blood.png b/mods/ENTITIES/mobs_mc/textures/mobs_mc_slime_blood.png deleted file mode 100644 index 29e94a0e55d2cf72b5f5fbb5a9c8a47e0473ed1b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 86 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4kiW$h6xih%orFLWIbIRLn;`P13qn0 Date: Thu, 3 Oct 2019 12:04:30 +0200 Subject: [PATCH 329/737] Rename dmg particle setting --- mods/ENTITIES/mcl_mobs/api.txt | 2 +- settingtypes.txt | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/mods/ENTITIES/mcl_mobs/api.txt b/mods/ENTITIES/mcl_mobs/api.txt index 0373b369..ba4e92d2 100644 --- a/mods/ENTITIES/mcl_mobs/api.txt +++ b/mods/ENTITIES/mcl_mobs/api.txt @@ -592,7 +592,7 @@ External Settings for "minetest.conf" 'enable_damage' if true monsters will attack players (default is true) 'only_peaceful_mobs' if true only animals will spawn in game (default is false) - 'mobs_disable_blood' if false blood effects appear when mob is hit (default + 'mobs_disable_blood' if false, damage effects appear when mob is hit (default is false) 'mobs_spawn_protected' if set to false then mobs will not spawn in protected areas (default is true) diff --git a/settingtypes.txt b/settingtypes.txt index f30ae36e..2c3eae7a 100644 --- a/settingtypes.txt +++ b/settingtypes.txt @@ -70,9 +70,8 @@ mobs_drop_items (Mobs drop items) bool true # If enabled, mobs can take, place, change and destroy blocks around them. mobs_griefing (Mobs change blocks) bool true -# If enable, mobs won't bleed or emit other damage particles when -# they got hurt. -mobs_disable_blood (Disable mob blood) bool false +# If enable, mobs won't damage particles when they got hurt. +mobs_disable_blood (Disable mob damage particles) bool false [Audio] # Enable flame sound. From 0e733f1677a63008d3f2a086e2db8b4243a68062 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Thu, 3 Oct 2019 12:12:50 +0200 Subject: [PATCH 330/737] Fix outdated mob settings help --- mods/ENTITIES/mcl_mobs/api.lua | 2 +- mods/ENTITIES/mcl_mobs/api.txt | 10 ++-------- settingtypes.txt | 2 +- 3 files changed, 4 insertions(+), 10 deletions(-) diff --git a/mods/ENTITIES/mcl_mobs/api.lua b/mods/ENTITIES/mcl_mobs/api.lua index 21a6b39d..5533ac08 100644 --- a/mods/ENTITIES/mcl_mobs/api.lua +++ b/mods/ENTITIES/mcl_mobs/api.lua @@ -3141,7 +3141,7 @@ minetest.register_entity(name, { lifetimer = def.lifetimer or 57.73, hp_min = scale_difficulty(def.hp_min, 5, 1), hp_max = scale_difficulty(def.hp_max, 10, 1), - breath_max = scale_difficulty(def.breath_max, 15, 1, -1), + breath_max = def.breath_max or 15, breathes_in_water = def.breathes_in_water or false, physical = true, collisionbox = def.collisionbox or {-0.25, -0.25, -0.25, 0.25, 0.25, 0.25}, diff --git a/mods/ENTITIES/mcl_mobs/api.txt b/mods/ENTITIES/mcl_mobs/api.txt index ba4e92d2..f9759e8b 100644 --- a/mods/ENTITIES/mcl_mobs/api.txt +++ b/mods/ENTITIES/mcl_mobs/api.txt @@ -596,15 +596,9 @@ External Settings for "minetest.conf" is false) 'mobs_spawn_protected' if set to false then mobs will not spawn in protected areas (default is true) - 'remove_far_mobs' if true then untamed mobs that are outside players - visual range will be removed (default is true) - 'mobname' can change specific mob chance rate (0 to disable) and - spawn number e.g. mobs_animal:cow = 1000,5 - 'mob_difficulty' sets difficulty level (health and hit damage + 'mob_difficulty' [EXPERIMENTAL] sets difficulty level (health and hit damage multiplied by this number), defaults to 1.0. - 'mob_show_health' if false then punching mob will not show health status - (true by default) - 'mob_chance_multiplier' multiplies chance of all mobs spawning and can be set + 'mob_spawn_chance' multiplies chance of all mobs spawning and can be set to 0.5 to have mobs spawn more or 2.0 to spawn less. e.g. 1 in 7000 * 0.5 = 1 in 3500 so better odds of spawning. diff --git a/settingtypes.txt b/settingtypes.txt index 2c3eae7a..76ff1e03 100644 --- a/settingtypes.txt +++ b/settingtypes.txt @@ -70,7 +70,7 @@ mobs_drop_items (Mobs drop items) bool true # If enabled, mobs can take, place, change and destroy blocks around them. mobs_griefing (Mobs change blocks) bool true -# If enable, mobs won't damage particles when they got hurt. +# If enabled, mobs won't damage particles when they got hurt. mobs_disable_blood (Disable mob damage particles) bool false [Audio] From c6903b48f133be7fcfef9254d84b01e8c70260f2 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Thu, 3 Oct 2019 12:19:54 +0200 Subject: [PATCH 331/737] Fix mobs spawn with 0 health if mob_difficulty=0 --- mods/ENTITIES/mcl_mobs/api.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ENTITIES/mcl_mobs/api.lua b/mods/ENTITIES/mcl_mobs/api.lua index 5533ac08..7c574af1 100644 --- a/mods/ENTITIES/mcl_mobs/api.lua +++ b/mods/ENTITIES/mcl_mobs/api.lua @@ -3118,7 +3118,7 @@ local function scale_difficulty(value, default, min, special) if (not value) or (value == default) or (value == special) then return default else - return max(min, value) * difficulty + return max(min, value * difficulty) end end From 6d5bfacb8c3be476bf05997a855c59b2451930ad Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Thu, 3 Oct 2019 12:24:37 +0200 Subject: [PATCH 332/737] Make mob_difficulty no longer experimental --- mods/ENTITIES/mcl_mobs/api.txt | 2 +- settingtypes.txt | 11 +++++------ 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/mods/ENTITIES/mcl_mobs/api.txt b/mods/ENTITIES/mcl_mobs/api.txt index f9759e8b..3321b3e7 100644 --- a/mods/ENTITIES/mcl_mobs/api.txt +++ b/mods/ENTITIES/mcl_mobs/api.txt @@ -596,7 +596,7 @@ External Settings for "minetest.conf" is false) 'mobs_spawn_protected' if set to false then mobs will not spawn in protected areas (default is true) - 'mob_difficulty' [EXPERIMENTAL] sets difficulty level (health and hit damage + 'mob_difficulty' sets difficulty level (health and hit damage multiplied by this number), defaults to 1.0. 'mob_spawn_chance' multiplies chance of all mobs spawning and can be set to 0.5 to have mobs spawn more or 2.0 to spawn less. diff --git a/settingtypes.txt b/settingtypes.txt index 76ff1e03..ac9ba89b 100644 --- a/settingtypes.txt +++ b/settingtypes.txt @@ -64,6 +64,11 @@ only_peaceful_mobs (Spawn only peaceful mobs) bool false # mob spawners. mobs_spawn_protected (Mobs spawn in protected areas) bool false +# Mobs difficulty. This is a number that will affect the initial and maximum +# health and the amount of damage that mobs deal. Health and damage will +# be multiplied with this number. +mob_difficulty (Mob difficulty factor) float 1.0 0.0 + # If enabled, mobs might drop items when they die. mobs_drop_items (Mobs drop items) bool true @@ -78,12 +83,6 @@ mobs_disable_blood (Disable mob damage particles) bool false flame_sound (Flame sound) bool true [Experimental] -# Mobs difficulty. This is a number that will affect the initial and maximum -# health and the amount of damage that mobs deal. Health and damage will -# be multiplied with this number. -# This feature is not finished yet! -mob_difficulty (Mob difficulty factor) float 1.0 0.0 - # Whether to generate fallen logs in some biomes. # They might not always look pretty and have strange overhangs. mcl_generate_fallen_logs (Generate fallen logs) bool false From 7b24ede5826ba0158934e6cbee7e20d6f0cde455 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Wed, 16 Oct 2019 08:33:22 +0200 Subject: [PATCH 333/737] Remove a couple of FIXMEs and legacy --- mods/ITEMS/REDSTONE/mcl_dispensers/init.lua | 3 --- mods/ITEMS/mcl_farming/melon.lua | 2 +- mods/ITEMS/mcl_farming/pumpkin.lua | 2 +- mods/ITEMS/mcl_portals/portal_end.lua | 11 ----------- 4 files changed, 2 insertions(+), 16 deletions(-) diff --git a/mods/ITEMS/REDSTONE/mcl_dispensers/init.lua b/mods/ITEMS/REDSTONE/mcl_dispensers/init.lua index 2e5e3c6a..30d70406 100644 --- a/mods/ITEMS/REDSTONE/mcl_dispensers/init.lua +++ b/mods/ITEMS/REDSTONE/mcl_dispensers/init.lua @@ -166,9 +166,6 @@ local dispenserdef = { local dropinv = dropmeta:get_inventory() if dropinv:room_for_item(armor_type, dropitem) then dropinv:add_item(armor_type, dropitem) - --[[ FIXME: For some reason, this function is not called after calling add_item, - so we call it manually to update the armor stand entity. - This may need investigation and the following line may be a small hack. ]] minetest.registered_nodes["3d_armor_stand:armor_stand"].on_metadata_inventory_put(standpos) stack:take_item() inv:set_stack("main", stack_id, stack) diff --git a/mods/ITEMS/mcl_farming/melon.lua b/mods/ITEMS/mcl_farming/melon.lua index 809cc01c..18eb7faa 100644 --- a/mods/ITEMS/mcl_farming/melon.lua +++ b/mods/ITEMS/mcl_farming/melon.lua @@ -39,7 +39,7 @@ local melon_base_def = { -- Drop proabilities for melon stem local stem_drop = { max_items = 1, - -- FIXME: The probabilities are slightly off from the original. + -- The probabilities are slightly off from the original. -- Update this drop list when the Minetest drop probability system -- is more powerful. items = { diff --git a/mods/ITEMS/mcl_farming/pumpkin.lua b/mods/ITEMS/mcl_farming/pumpkin.lua index 9050bdab..d1043747 100644 --- a/mods/ITEMS/mcl_farming/pumpkin.lua +++ b/mods/ITEMS/mcl_farming/pumpkin.lua @@ -15,7 +15,7 @@ minetest.register_craftitem("mcl_farming:pumpkin_seeds", { local stem_drop = { max_items = 1, - -- FIXME: The probabilities are slightly off from the original. + -- The probabilities are slightly off from the original. -- Update this drop list when the Minetest drop probability system -- is more powerful. items = { diff --git a/mods/ITEMS/mcl_portals/portal_end.lua b/mods/ITEMS/mcl_portals/portal_end.lua index 84e98fee..4b9a0bbb 100644 --- a/mods/ITEMS/mcl_portals/portal_end.lua +++ b/mods/ITEMS/mcl_portals/portal_end.lua @@ -209,17 +209,6 @@ minetest.register_abm({ interval = 1, chance = 1, action = function(pos, node) - -- Destroy legacy end portals created with quartz block frame - -- by turning them into cobwebs. - -- We can tell if a end portal is legacy if it has portal_target as metadata. - -- FIXME: Remove this after some time. - local meta = minetest.get_meta(pos) - local legacy_portal_target = meta:get_string("portal_frame1") - if legacy_portal_target and legacy_portal_target ~= "" then - minetest.set_node(pos, {name="mcl_core:cobweb"}) - return - end - for _,obj in ipairs(minetest.get_objects_inside_radius(pos, 1)) do local lua_entity = obj:get_luaentity() --maikerumine added for objects to travel if obj:is_player() or lua_entity then From c9b642a7066c57510f8184a37acfabd155bea00f Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Wed, 16 Oct 2019 08:35:15 +0200 Subject: [PATCH 334/737] Remove unused file in mcl_dispensers --- .../REDSTONE/mcl_dispensers/init_new.lua | 372 ------------------ 1 file changed, 372 deletions(-) delete mode 100644 mods/ITEMS/REDSTONE/mcl_dispensers/init_new.lua diff --git a/mods/ITEMS/REDSTONE/mcl_dispensers/init_new.lua b/mods/ITEMS/REDSTONE/mcl_dispensers/init_new.lua deleted file mode 100644 index dbe802c2..00000000 --- a/mods/ITEMS/REDSTONE/mcl_dispensers/init_new.lua +++ /dev/null @@ -1,372 +0,0 @@ ---[[ This mod registers 3 nodes: -- One node for the horizontal-facing dispensers (mcl_dispensers:dispenser) -- One node for the upwards-facing dispensers (mcl_dispenser:dispenser_up) -- One node for the downwards-facing dispensers (mcl_dispenser:dispenser_down) - -3 node definitions are needed because of the way the textures are defined. -All node definitions share a lot of code, so this is the reason why there -are so many weird tables below. -]] -local S = minetest.get_translator("mcl_dispensers") - --- For after_place_node -local setup_dispenser = function(pos) - -- Set formspec and inventory - local form = "size[9,8.75]".. - "background[-0.19,-0.25;9.41,9.49;crafting_inventory_9_slots.png]".. - mcl_vars.inventory_header.. - "label[0,4.0;"..minetest.formspec_escape(minetest.colorize("#313131", S("Inventory"))).."]".. - "list[current_player;main;0,4.5;9,3;9]".. - "list[current_player;main;0,7.74;9,1;]".. - "label[3,0;"..minetest.formspec_escape(minetest.colorize("#313131", S("Dispenser"))).."]".. - "list[current_name;main;3,0.5;3,3;]".. - "listring[current_name;main]".. - "listring[current_player;main]" - local meta = minetest.get_meta(pos) - meta:set_string("formspec", form) - local inv = meta:get_inventory() - inv:set_size("main", 9) -end - -local orientate_dispenser = function(pos, placer) - -- Not placed by player - if not placer then return end - - -- Pitch in degrees - local pitch = placer:get_look_vertical() * (180 / math.pi) - - local node = minetest.get_node(pos) - if pitch > 55 then - minetest.swap_node(pos, {name="mcl_dispensers:dispenser_up", param2 = node.param2}) - elseif pitch < -55 then - minetest.swap_node(pos, {name="mcl_dispensers:dispenser_down", param2 = node.param2}) - end -end - -local on_rotate -if minetest.get_modpath("screwdriver") then - on_rotate = screwdriver.rotate_simple -end - --- Shared core definition table -local dispenserdef = { - is_ground_content = false, - sounds = mcl_sounds.node_sound_stone_defaults(), - allow_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player) - local name = player:get_player_name() - if minetest.is_protected(pos, name) then - minetest.record_protection_violation(pos, name) - return 0 - else - return count - end - end, - allow_metadata_inventory_take = function(pos, listname, index, stack, player) - local name = player:get_player_name() - if minetest.is_protected(pos, name) then - minetest.record_protection_violation(pos, name) - return 0 - else - return stack:get_count() - end - end, - allow_metadata_inventory_put = function(pos, listname, index, stack, player) - local name = player:get_player_name() - if minetest.is_protected(pos, name) then - minetest.record_protection_violation(pos, name) - return 0 - else - return stack:get_count() - end - end, - after_dig_node = function(pos, oldnode, oldmetadata, digger) - local meta = minetest.get_meta(pos) - local meta2 = meta - meta:from_table(oldmetadata) - local inv = meta:get_inventory() - for i=1, inv:get_size("main") do - local stack = inv:get_stack("main", i) - if not stack:is_empty() then - local p = {x=pos.x+math.random(0, 10)/10-0.5, y=pos.y, z=pos.z+math.random(0, 10)/10-0.5} - minetest.add_item(p, stack) - end - end - meta:from_table(meta2:to_table()) - end, - _mcl_blast_resistance = 17.5, - _mcl_hardness = 3.5, - mesecons = {effector = { - -- Dispense random item when triggered - action_on = function (pos, node) - local meta = minetest.get_meta(pos) - local inv = meta:get_inventory() - local droppos, dropdir - if node.name == "mcl_dispensers:dispenser" then - dropdir = vector.multiply(minetest.facedir_to_dir(node.param2), -1) - droppos = vector.add(pos, dropdir) - elseif node.name == "mcl_dispensers:dispenser_up" then - dropdir = {x=0, y=1, z=0} - droppos = {x=pos.x, y=pos.y+1, z=pos.z} - elseif node.name == "mcl_dispensers:dispenser_down" then - dropdir = {x=0, y=-1, z=0} - droppos = {x=pos.x, y=pos.y-1, z=pos.z} - end - local dropnode = minetest.get_node(droppos) - local dropnodedef = minetest.registered_nodes[dropnode.name] - local stacks = {} - for i=1,inv:get_size("main") do - local stack = inv:get_stack("main", i) - if not stack:is_empty() then - table.insert(stacks, {stack = stack, stackpos = i}) - end - end - if #stacks >= 1 then - local r = math.random(1, #stacks) - local stack = stacks[r].stack - local dropitem = ItemStack(stack) - dropitem:set_count(1) - local stack_id = stacks[r].stackpos - local stackdef = stack:get_definition() - local iname = stack:get_name() - local igroups = minetest.registered_items[iname].groups - - --[===[ Dispense item ]===] - - -- Hardcoded dispensions -- - - -- Armor, mob heads and pumpkins - if igroups.armor_head or igroups.armor_torso or igroups.armor_legs or igroups.armor_feet then - local armor_type, armor_slot - local armor_dispensed = false - if igroups.armor_head then - armor_type = "armor_head" - armor_slot = 2 - elseif igroups.armor_torso then - armor_type = "armor_torso" - armor_slot = 3 - elseif igroups.armor_legs then - armor_type = "armor_legs" - armor_slot = 4 - elseif igroups.armor_feet then - armor_type = "armor_feet" - armor_slot = 5 - end - - local droppos_below = {x=droppos.x, y=droppos.y-1, z=droppos.z} - local dropnode_below = minetest.get_node(droppos_below) - -- Put armor on player or armor stand - local standpos - if dropnode.name == "3d_armor_stand:armor_stand" then - standpos = droppos - elseif dropnode_below.name == "3d_armor_stand:armor_stand" then - standpos = droppos_below - end - if standpos then - local dropmeta = minetest.get_meta(standpos) - local dropinv = dropmeta:get_inventory() - if dropinv:room_for_item(armor_type, dropitem) then - dropinv:add_item(armor_type, dropitem) - --[[ FIXME: For some reason, this function is not called after calling add_item, - so we call it manually to update the armor stand entity. - This may need investigation and the following line may be a small hack. ]] - minetest.registered_nodes["3d_armor_stand:armor_stand"].on_metadata_inventory_put(standpos) - stack:take_item() - inv:set_stack("main", stack_id, stack) - armor_dispensed = true - end - else - -- Put armor on nearby player - -- First search for player in front of dispenser (check 2 nodes) - local objs1 = minetest.get_objects_inside_radius(droppos, 1) - local objs2 = minetest.get_objects_inside_radius(droppos_below, 1) - local objs_table = {objs1, objs2} - local player - for oi=1, #objs_table do - local objs_inner = objs_table[oi] - for o=1, #objs_inner do - --[[ First player in list is the lucky one. The other player get nothing :-( - If multiple players are close to the dispenser, it can be a bit - -- unpredictable on who gets the armor. ]] - if objs_inner[o]:is_player() then - player = objs_inner[o] - break - end - end - if player then - break - end - end - -- If player found, add armor - if player then - local ainv = minetest.get_inventory({type="detached", name=player:get_player_name().."_armor"}) - local pinv = player:get_inventory() - if ainv:get_stack("armor", armor_slot):is_empty() and pinv:get_stack("armor", armor_slot):is_empty() then - ainv:set_stack("armor", armor_slot, dropitem) - pinv:set_stack("armor", armor_slot, dropitem) - armor:set_player_armor(player) - armor:update_inventory(player) - - stack:take_item() - inv:set_stack("main", stack_id, stack) - armor_dispensed = true - end - end - - -- Place head or pumpkin as node, if equipping it as armor has failed - if not armor_dispensed then - if igroups.head or iname == "mcl_farming:pumpkin_face" then - if dropnodedef.buildable_to then - minetest.set_node(droppos, {name = iname, param2 = node.param2}) - stack:take_item() - inv:set_stack("main", stack_id, stack) - end - end - end - end - - -- Spawn Egg - elseif igroups.spawn_egg then - -- Spawn mob - if not dropnodedef.walkable then - pointed_thing = { above = droppos, under = { x=droppos.x, y=droppos.y-1, z=droppos.z } } - minetest.add_entity(droppos, stack:get_name()) - - stack:take_item() - inv:set_stack("main", stack_id, stack) - end - - -- Generalized dispension - elseif (not dropnodedef.walkable or stackdef._dispense_into_walkable) then - --[[ _on_dispense(stack, pos, droppos, dropnode, dropdir) - * stack: Itemstack which is dispense - * pos: Position of dispenser - * droppos: Position to which to dispense item - * dropnode: Node of droppos - * dropdir: Drop direction - - _dispense_into_walkable: If true, can dispense into walkable nodes - ]] - if stackdef._on_dispense then - -- Item-specific dispension (if defined) - local od_ret = stackdef._on_dispense(dropitem, pos, droppos, dropnode, dropdir) - if od_ret then - local newcount = stack:get_count() - 1 - stack:set_count(newcount) - inv:set_stack("main", stack_id, stack) - if newcount == 0 then - inv:set_stack("main", stack_id, od_ret) - elseif inv:room_for_item("main", od_ret) then - inv:add_item("main", od_ret) - else - minetest.add_item(droppos, dropitem) - end - else - stack:take_item() - inv:set_stack("main", stack_id, stack) - end - else - -- Drop item otherwise - minetest.add_item(droppos, dropitem) - stack:take_item() - inv:set_stack("main", stack_id, stack) - end - end - - - end - end, - rules = mesecon.rules.alldirs, - }}, - on_rotate = on_rotate, -} - --- Horizontal dispenser - -local horizontal_def = table.copy(dispenserdef) -horizontal_def.description = S("Dispenser") -horizontal_def._doc_items_longdesc = S("A dispenser is a block which acts as a redstone component which, when powered with redstone power, dispenses an item. It has a container with 9 inventory slots.") -horizontal_def._doc_items_usagehelp = S("Place the dispenser in one of 6 possible directions. The “hole” is where items will fly out of the dispenser. Use the dispenser to access its inventory. Insert the items you wish to dispense. Supply the dispenser with redstone energy once to dispense a random item.").."\n\n".. - -S("The dispenser will do different things, depending on the dispensed item:").."\n\n".. - -S("• Arrows: Are launched").."\n".. -S("• Eggs and snowballs: Are thrown").."\n".. -S("• Fire charges: Are fired in a straight line").."\n".. -S("• Armor: Will be equipped to players and armor stands").."\n".. -S("• Boats: Are placed on water or are dropped").."\n".. -S("• Minecart: Are placed on rails or are dropped").."\n".. -S("• Bone meal: Is applied on the block it is facing").."\n".. -S("• Empty buckets: Are used to collect a liquid source").."\n".. -S("• Filled buckets: Are used to place a liquid source").."\n".. -S("• Heads, pumpkins: Equipped to players and armor stands, or placed as a block").."\n".. -S("• Shulker boxes: Are placed as a block").."\n".. -S("• TNT: Is placed and ignited").."\n".. -S("• Flint and steel: Is used to ignite a fire in air and to ignite TNT").."\n".. -S("• Spawn eggs: Will summon the mob they contain").."\n".. -S("• Other items: Are simply dropped") - -horizontal_def.after_place_node = function(pos, placer, itemstack, pointed_thing) - setup_dispenser(pos) - orientate_dispenser(pos, placer) -end -horizontal_def.tiles = { - "default_furnace_top.png", "default_furnace_bottom.png", - "default_furnace_side.png", "default_furnace_side.png", - "default_furnace_side.png", "mcl_dispensers_dispenser_front_horizontal.png" -} -horizontal_def.paramtype2 = "facedir" -horizontal_def.groups = {pickaxey=1, container=2, material_stone=1} - -minetest.register_node("mcl_dispensers:dispenser", horizontal_def) - --- Down dispenser -local down_def = table.copy(dispenserdef) -down_def.description = S("Downwards-Facing Dispenser") -down_def.after_place_node = setup_dispenser -down_def.tiles = { - "default_furnace_top.png", "mcl_dispensers_dispenser_front_vertical.png", - "default_furnace_side.png", "default_furnace_side.png", - "default_furnace_side.png", "default_furnace_side.png" -} -down_def.groups = {pickaxey=1, container=2,not_in_creative_inventory=1, material_stone=1} -down_def._doc_items_create_entry = false -down_def.drop = "mcl_dispensers:dispenser" -minetest.register_node("mcl_dispensers:dispenser_down", down_def) - --- Up dispenser --- The up dispenser is almost identical to the down dispenser , it only differs in textures -local up_def = table.copy(down_def) -up_def.description = S("Upwards-Facing Dispenser") -up_def.tiles = { - "mcl_dispensers_dispenser_front_vertical.png", "default_furnace_bottom.png", - "default_furnace_side.png", "default_furnace_side.png", - "default_furnace_side.png", "default_furnace_side.png" -} -minetest.register_node("mcl_dispensers:dispenser_up", up_def) - - -minetest.register_craft({ - output = 'mcl_dispensers:dispenser', - recipe = { - {"mcl_core:cobble", "mcl_core:cobble", "mcl_core:cobble",}, - {"mcl_core:cobble", "mcl_bows:bow", "mcl_core:cobble",}, - {"mcl_core:cobble", "mesecons:redstone", "mcl_core:cobble",}, - } -}) - --- Add entry aliases for the Help -if minetest.get_modpath("doc") then - doc.add_entry_alias("nodes", "mcl_dispensers:dispenser", "nodes", "mcl_dispensers:dispenser_down") - doc.add_entry_alias("nodes", "mcl_dispensers:dispenser", "nodes", "mcl_dispensers:dispenser_up") -end - -minetest.register_lbm({ - label = "Update dispenser formspecs (0.51.0)", - name = "mcl_dispensers:update_formspecs_0_51_0", - nodenames = { "mcl_dispensers:dispenser", "mcl_dispensers:dispenser_down", "mcl_dispensers:dispenser_up" }, - action = function(pos, node) - minetest.registered_nodes[node.name].on_construct(pos) - minetest.log("action", "[mcl_dispenser] Node formspec updated at "..minetest.pos_to_string(pos)) - end, -}) - From 219b2464a1e82ad30608d4003f843f3424252f7a Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Fri, 25 Oct 2019 00:42:30 +0200 Subject: [PATCH 335/737] Give llamas an appetite for hay bales --- mods/ENTITIES/mobs_mc/0_gameconfig.lua | 1 + mods/ENTITIES/mobs_mc/llama.lua | 2 +- mods/ENTITIES/mobs_mc_gameconfig/init.lua | 3 ++- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/mods/ENTITIES/mobs_mc/0_gameconfig.lua b/mods/ENTITIES/mobs_mc/0_gameconfig.lua index 6b1180b7..81229aa2 100644 --- a/mods/ENTITIES/mobs_mc/0_gameconfig.lua +++ b/mods/ENTITIES/mobs_mc/0_gameconfig.lua @@ -157,6 +157,7 @@ mobs_mc.follow = { chicken = { "farming:seed_wheat", "farming:seed_cotton" }, -- seeds in general parrot = { "farming:seed_wheat", "farming:seed_cotton" }, -- seeds in general horse = { mobs_mc.items.apple, mobs_mc.items.sugar, mobs_mc.items.wheat, mobs_mc.items.hay_bale, mobs_mc.items.golden_apple, mobs_mc.items.golden_carrot }, + llama = { mobs_mc.items.wheat, mobs_mc.items.hay_bale, }, pig = { mobs_mc.items.potato, mobs_mc.items.carrot, mobs_mc.items.carrot_on_a_stick, mobs_mc.items.apple, -- Minetest Game extra }, diff --git a/mods/ENTITIES/mobs_mc/llama.lua b/mods/ENTITIES/mobs_mc/llama.lua index 92da233a..07956761 100644 --- a/mods/ENTITIES/mobs_mc/llama.lua +++ b/mods/ENTITIES/mobs_mc/llama.lua @@ -53,7 +53,7 @@ mobs:register_mob("mobs_mc:llama", { look_start = 78, look_end = 108, }, - follow = mobs_mc.items.horse, + follow = mobs_mc.follow.llama, view_range = 16, do_custom = function(self, dtime) diff --git a/mods/ENTITIES/mobs_mc_gameconfig/init.lua b/mods/ENTITIES/mobs_mc_gameconfig/init.lua index 4fe025bb..ab86cd2a 100644 --- a/mods/ENTITIES/mobs_mc_gameconfig/init.lua +++ b/mods/ENTITIES/mobs_mc_gameconfig/init.lua @@ -73,7 +73,7 @@ mobs_mc.override.items = { wheat = "mcl_farming:wheat_item", cookie = "mcl_farming:cookie", potato = "mcl_farming:potato_item", - hay_bale = "mcl_farming:hay_bale", + hay_bale = "mcl_farming:hay_block", prismarine_shard = "mcl_ocean:prismarine_shard", prismarine_crystals = "mcl_ocean:prismarine_crystals", apple = "mcl_core:apple", @@ -136,6 +136,7 @@ mobs_mc.override.follow = { sheep = { mobs_mc.override.items.wheat }, cow = { mobs_mc.override.items.wheat }, horse = { mobs_mc.override.items.apple, mobs_mc.override.items.sugar, mobs_mc.override.items.wheat, mobs_mc.override.items.hay_bale, mobs_mc.override.items.golden_apple, mobs_mc.override.items.golden_carrot }, + llama = { mobs_mc.override.items.wheat, mobs_mc.override.items.hay_bale }, rabbit = { mobs_mc.override.items.dandelion, mobs_mc.override.items.carrot, mobs_mc.override.items.golden_carrot }, } From 55171a12c6a61793453990f46b6253bca1f80ea4 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Fri, 25 Oct 2019 00:56:31 +0200 Subject: [PATCH 336/737] Make dogs accept food Thanks, emanresu! --- mods/ENTITIES/mobs_mc_gameconfig/init.lua | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mods/ENTITIES/mobs_mc_gameconfig/init.lua b/mods/ENTITIES/mobs_mc_gameconfig/init.lua index ab86cd2a..f1f185b7 100644 --- a/mods/ENTITIES/mobs_mc_gameconfig/init.lua +++ b/mods/ENTITIES/mobs_mc_gameconfig/init.lua @@ -138,6 +138,8 @@ mobs_mc.override.follow = { horse = { mobs_mc.override.items.apple, mobs_mc.override.items.sugar, mobs_mc.override.items.wheat, mobs_mc.override.items.hay_bale, mobs_mc.override.items.golden_apple, mobs_mc.override.items.golden_carrot }, llama = { mobs_mc.override.items.wheat, mobs_mc.override.items.hay_bale }, rabbit = { mobs_mc.override.items.dandelion, mobs_mc.override.items.carrot, mobs_mc.override.items.golden_carrot }, + wolf = { mobs_mc.override.items.bone }, + dog = { mobs_mc.override.items.rabbit_raw, mobs_mc.override.items.rabbit_cooked, mobs_mc.override.items.mutton_raw, mobs_mc.override.items.mutton_cooked, mobs_mc.override.items.beef_raw, mobs_mc.override.items.beef_cooked, mobs_mc.override.items.chicken_raw, mobs_mc.override.items.chicken_cooked, mobs_mc.override.items.rotten_flesh, mobs_mc.override.items.porkchop_raw, mobs_mc.override.items.porkchop_cooked }, } mobs_mc.override.replace = { From fd089b2470546255675c471aad8179f9425a40c4 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Fri, 25 Oct 2019 01:03:54 +0200 Subject: [PATCH 337/737] Version 0.55.0 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index aaef3eba..e7120ee1 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ An unofficial Minecraft-like game for Minetest. Forked from MineClone by davedevils. Developed by Wuzzy and contributors. Not developed or endorsed by Mojang AB. -Version: 0.54.1 +Version: 0.55.0 ### Gameplay You start in a randomly-generated world made entirely of cubes. You can explore From f6f259dce0760ba0836488cacdc01fd1a98d36cd Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 19 Nov 2019 01:19:47 +0100 Subject: [PATCH 338/737] Add some sanity checks to fishing bobber --- mods/ITEMS/mcl_fishing/init.lua | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/mods/ITEMS/mcl_fishing/init.lua b/mods/ITEMS/mcl_fishing/init.lua index ebef9ca9..02fa27fd 100644 --- a/mods/ITEMS/mcl_fishing/init.lua +++ b/mods/ITEMS/mcl_fishing/init.lua @@ -14,6 +14,7 @@ local bobber_ENTITY={ visual_size = {x=0.5, y=0.5}, collisionbox = {0.45,0.45,0.45,0.45,0.45,0.45}, pointable = false, + static_save = false, _lastpos={}, _dive = false, @@ -158,33 +159,47 @@ local bobber_on_step = function(self, dtime) local node = minetest.get_node(epos) local def = minetest.registered_nodes[node.name] - --If we have no player remove self. - if self.player == nil then + --If we have no player, remove self. + if self.player == nil or self.player == "" then self.object:remove() + return + end + local player = minetest.get_player_by_name(self.player) + if not player then + self.object:remove() + return end --Check if player is nearby - if self._tick % 5 == 0 and self.player ~= nil then + if self._tick % 5 == 0 and self.player ~= nil and player ~= nil then --Destroy bobber if item not wielded. - if (minetest.get_player_by_name(self.player):get_wielded_item():get_name() ~= "mcl_fishing:fishing_rod") then + local wield = player:get_wielded_item() + if ((not wield) or (wield:get_name() ~= "mcl_fishing:fishing_rod")) then self.object:remove() + return end --Destroy bobber if player is too far away. local objpos = self.object:get_pos() - local playerpos = minetest.get_player_by_name(self.player):get_pos() + local playerpos = player:get_pos() if (((playerpos.y - objpos.y) >= 33) or ((playerpos.y - objpos.y) <= -33)) then self.object:remove() + return elseif (((playerpos.x - objpos.x) >= 33) or ((playerpos.x - objpos.x) <= -33)) then self.object:remove() + return elseif (((playerpos.z - objpos.z) >= 33) or ((playerpos.z - objpos.z) <= -33)) then self.object:remove() + return elseif ((((playerpos.z + playerpos.x) - (objpos.z + objpos.x)) >= 33) or ((playerpos.z + playerpos.x) - (objpos.z + objpos.x)) <= -33) then self.object:remove() + return elseif ((((playerpos.y + playerpos.x) - (objpos.y + objpos.x)) >= 33) or ((playerpos.y + playerpos.x) - (objpos.y + objpos.x)) <= -33) then self.object:remove() + return elseif ((((playerpos.z + playerpos.y) - (objpos.z + objpos.y)) >= 33) or ((playerpos.z + playerpos.y) - (objpos.z + objpos.y)) <= -33) then self.object:remove() + return end end From 05e6362303ffb0d1a0e73a7bd4d65fab2216d0b4 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 19 Nov 2019 01:20:13 +0100 Subject: [PATCH 339/737] Version 0.55.1 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index e7120ee1..76718595 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ An unofficial Minecraft-like game for Minetest. Forked from MineClone by davedevils. Developed by Wuzzy and contributors. Not developed or endorsed by Mojang AB. -Version: 0.55.0 +Version: 0.55.1 ### Gameplay You start in a randomly-generated world made entirely of cubes. You can explore From 5f1973aecdad52a59873d0bfcccd105dcac2a9b6 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sun, 8 Dec 2019 18:48:49 +0100 Subject: [PATCH 340/737] Mobs: Refactor distance calculation --- mods/ENTITIES/mcl_mobs/api.lua | 30 ++++++++++-------------------- 1 file changed, 10 insertions(+), 20 deletions(-) diff --git a/mods/ENTITIES/mcl_mobs/api.lua b/mods/ENTITIES/mcl_mobs/api.lua index 7c574af1..a7ee8b27 100644 --- a/mods/ENTITIES/mcl_mobs/api.lua +++ b/mods/ENTITIES/mcl_mobs/api.lua @@ -31,7 +31,6 @@ end -- localize math functions local pi = math.pi -local square = math.sqrt local sin = math.sin local cos = math.cos local abs = math.abs @@ -260,15 +259,6 @@ function mobs:set_animation(self, anim) end --- calculate distance -local get_distance = function(a, b) - - local x, y, z = a.x - b.x, a.y - b.y, a.z - b.z - - return square(x * x + y * y + z * z) -end - - -- check line of sight (BrunoMine) local line_of_sight = function(self, pos1, pos2, stepsize) @@ -293,7 +283,7 @@ local line_of_sight = function(self, pos1, pos2, stepsize) local nn = minetest.get_node(pos).name -- Target Distance (td) to travel - local td = get_distance(pos1, pos2) + local td = vector.distance(pos1, pos2) -- Actual Distance (ad) traveled local ad = 0 @@ -309,7 +299,7 @@ local line_of_sight = function(self, pos1, pos2, stepsize) end -- Moves the analyzed pos - local d = get_distance(pos1, pos2) + local d = vector.distance(pos1, pos2) npos1.x = ((pos2.x - pos1.x) / d * stepsize) + pos1.x npos1.y = ((pos2.y - pos1.y) / d * stepsize) + pos1.y @@ -980,7 +970,7 @@ local entity_physics = function(pos, radius) obj_pos = objs[n]:get_pos() - dist = get_distance(pos, obj_pos) + dist = vector.distance(pos, obj_pos) if dist < 1 then dist = 1 end local damage = floor((4 / dist) * radius) @@ -1531,7 +1521,7 @@ local monster_attack = function(self) p = player:get_pos() sp = s - dist = get_distance(p, s) + dist = vector.distance(p, s) -- aim higher to make looking up hills more realistic p.y = p.y + 1 @@ -1577,7 +1567,7 @@ local npc_attack = function(self) p = obj.object:get_pos() sp = s - local dist = get_distance(p, s) + local dist = vector.distance(p, s) -- aim higher to make looking up hills more realistic p.y = p.y + 1 @@ -1665,7 +1655,7 @@ local runaway_from = function(self) p.y = p.y + 1 sp.y = sp.y + 1 - dist = get_distance(p, s) + dist = vector.distance(p, s) -- choose closest player/mpb to runaway from @@ -1715,7 +1705,7 @@ local follow_flop = function(self) for n = 1, #players do - if get_distance(players[n]:get_pos(), s) < self.view_range + if vector.distance(players[n]:get_pos(), s) < self.view_range and not mobs.invis[ players[n]:get_player_name() ] then self.following = players[n] @@ -1763,7 +1753,7 @@ local follow_flop = function(self) if p then - local dist = get_distance(p, s) + local dist = vector.distance(p, s) -- dont follow if out of range if dist > self.view_range then @@ -2022,7 +2012,7 @@ local do_states = function(self, dtime) -- calculate distance from mob and enemy local s = self.object:get_pos() local p = self.attack:get_pos() or s - local dist = get_distance(p, s) + local dist = vector.distance(p, s) -- stop attacking if player invisible or out of range if dist > self.view_range @@ -2331,7 +2321,7 @@ local do_states = function(self, dtime) p.y = p.y - .5 s.y = s.y + .5 - local dist = get_distance(p, s) + local dist = vector.distance(p, s) local vec = { x = p.x - s.x, y = p.y - s.y, From 89ba84a45647c380c914d02e862336906039d13e Mon Sep 17 00:00:00 2001 From: Jared Moody Date: Mon, 9 Dec 2019 08:24:38 +0100 Subject: [PATCH 341/737] Fixes #583 - Eating chorus plant restores 4 HP --- mods/ITEMS/mcl_end/chorus_plant.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_end/chorus_plant.lua b/mods/ITEMS/mcl_end/chorus_plant.lua index 02ab50d4..4e1575c8 100644 --- a/mods/ITEMS/mcl_end/chorus_plant.lua +++ b/mods/ITEMS/mcl_end/chorus_plant.lua @@ -501,7 +501,7 @@ local eat_chorus_fruit = function(itemstack, player, pointed_thing) end end local count = itemstack:get_count() - local new_itemstack = minetest.do_item_eat(0, nil, itemstack, player, pointed_thing) + local new_itemstack = minetest.do_item_eat(4, nil, itemstack, player, pointed_thing) local new_count = new_itemstack:get_count() if count ~= new_count or new_itemstack:get_name() ~= "mcl_end:chorus_fruit" or (minetest.settings:get_bool("creative_mode") == true) then random_teleport(player) From 7175ffb975c77dbef3f3444368d18dfbbe192243 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 9 Dec 2019 08:36:34 +0100 Subject: [PATCH 342/737] Add workaround for broken eat sound --- mods/PLAYER/mcl_hunger/hunger.lua | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/mods/PLAYER/mcl_hunger/hunger.lua b/mods/PLAYER/mcl_hunger/hunger.lua index eacec1bc..53799a05 100644 --- a/mods/PLAYER/mcl_hunger/hunger.lua +++ b/mods/PLAYER/mcl_hunger/hunger.lua @@ -148,7 +148,9 @@ function mcl_hunger.item_eat(hunger_change, replace_with_item, poisontime, poiso max_hear_distance = 12, gain = 1.0, pitch = 1 + math.random(-10, 10)*0.005, - object = user, + -- FIXME: Should be linked to object, but it's broken in Minetest 5.1.0 + -- See https://github.com/minetest/minetest/issues/9183 + pos = pos, }) else -- Assume the item is a food @@ -187,7 +189,9 @@ function mcl_hunger.item_eat(hunger_change, replace_with_item, poisontime, poiso max_hear_distance = 12, gain = 1.0, pitch = 1 + math.random(-10, 10)*0.005, - object = user, + -- FIXME: Should be linked to object, but it's broken in Minetest 5.1.0 + -- See https://github.com/minetest/minetest/issues/9183 + pos = pos, }) end From 7471836c2d3139fe7f5000de4b6b3ae658f332f3 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 9 Dec 2019 08:51:25 +0100 Subject: [PATCH 343/737] Fix side hopper not collecting non-fuel items --- mods/ITEMS/mcl_hoppers/init.lua | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/mods/ITEMS/mcl_hoppers/init.lua b/mods/ITEMS/mcl_hoppers/init.lua index f798977b..39f5f3e5 100644 --- a/mods/ITEMS/mcl_hoppers/init.lua +++ b/mods/ITEMS/mcl_hoppers/init.lua @@ -445,6 +445,14 @@ minetest.register_abm({ local g = minetest.registered_nodes[abovenode.name].groups.container mcl_util.move_item_container(above, pos) + -- Also suck in non-fuel items from furnace fuel slot + if not sucked and g == 4 then + local finv = minetest.get_inventory({type="node", pos=above}) + if finv and not mcl_util.is_fuel(finv:get_stack("fuel", 1)) then + mcl_util.move_item_container(above, pos, "fuel") + end + end + -- Move an item from the hopper into the container to which the hopper points to local g = minetest.registered_nodes[frontnode.name].groups.container if g == 2 or g == 3 or g == 5 or g == 6 then From 8a2e6d434d9246d8fa1b938421a7f96053bc7f8b Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 9 Dec 2019 09:29:19 +0100 Subject: [PATCH 344/737] Mobs now shoot mcl_bows:arrow_entity --- mods/ENTITIES/mcl_mobs/api.lua | 31 +++++++++++++------ mods/ENTITIES/mcl_mobs/api.txt | 3 ++ mods/ENTITIES/mobs_mc/skeleton+stray.lua | 5 ++- mods/ENTITIES/mobs_mc/villager_illusioner.lua | 5 ++- mods/ITEMS/mcl_bows/bow.lua | 2 +- 5 files changed, 33 insertions(+), 13 deletions(-) diff --git a/mods/ENTITIES/mcl_mobs/api.lua b/mods/ENTITIES/mcl_mobs/api.lua index a7ee8b27..b9b67078 100644 --- a/mods/ENTITIES/mcl_mobs/api.lua +++ b/mods/ENTITIES/mcl_mobs/api.lua @@ -2350,23 +2350,33 @@ local do_states = function(self, dtime) p.y = p.y + (self.collisionbox[2] + self.collisionbox[5]) / 2 + -- Shoot arrow if minetest.registered_entities[self.arrow] then - local obj = minetest.add_entity(p, self.arrow) - local ent = obj:get_luaentity() + local arrow, ent + local v = 1 + if not self.shoot_arrow then + arrow = minetest.add_entity(p, self.arrow) + ent = arrow:get_luaentity() + if ent.velocity then + v = ent.velocity + end + ent.switch = 1 + ent.owner_id = tostring(self.object) -- add unique owner id to arrow + end + local amount = (vec.x * vec.x + vec.y * vec.y + vec.z * vec.z) ^ 0.5 - local v = ent.velocity or 1 -- or set to default - - ent.switch = 1 - ent.owner_id = tostring(self.object) -- add unique owner id to arrow - - -- offset makes shoot aim accurate + -- offset makes shoot aim accurate vec.y = vec.y + self.shoot_offset vec.x = vec.x * (v / amount) vec.y = vec.y * (v / amount) vec.z = vec.z * (v / amount) - - obj:set_velocity(vec) + if self.shoot_arrow then + vec = vector.normalize(vec) + self:shoot_arrow(p, vec) + else + arrow:set_velocity(vec) + end end end end @@ -3217,6 +3227,7 @@ minetest.register_entity(name, { can_despawn = can_despawn, child = def.child or false, texture_mods = {}, + shoot_arrow = def.shoot_arrow, -- End of MCL2 extensions on_spawn = def.on_spawn, diff --git a/mods/ENTITIES/mcl_mobs/api.txt b/mods/ENTITIES/mcl_mobs/api.txt index 3321b3e7..0430bbc0 100644 --- a/mods/ENTITIES/mcl_mobs/api.txt +++ b/mods/ENTITIES/mcl_mobs/api.txt @@ -226,6 +226,9 @@ functions needed for the mob to work properly which contains the following: spawning fails due to space requirements 'glow' same as in entity definition 'child' if true, spawn mob as child + 'shoot_arrow(self, pos, dir)' function that is called when mob wants to shoot an arrow. + You can spawn your own arrow here. pos is mob position, + dir is mob's aiming direction Node Replacement diff --git a/mods/ENTITIES/mobs_mc/skeleton+stray.lua b/mods/ENTITIES/mobs_mc/skeleton+stray.lua index 04d402d8..bb0b8d2e 100644 --- a/mods/ENTITIES/mobs_mc/skeleton+stray.lua +++ b/mods/ENTITIES/mobs_mc/skeleton+stray.lua @@ -78,7 +78,10 @@ local skeleton = { view_range = 16, fear_height = 4, attack_type = "dogshoot", - arrow = "mobs_mc:arrow_entity", + arrow = "mcl_bows:arrow_entity", + shoot_arrow = function(self, pos, dir) + mcl_bows.shoot_arrow("mcl_bows:arrow", pos, dir, self.object:get_yaw(), self.object) + end, shoot_interval = 2.5, shoot_offset = 1, dogshoot_switch = 1, diff --git a/mods/ENTITIES/mobs_mc/villager_illusioner.lua b/mods/ENTITIES/mobs_mc/villager_illusioner.lua index fe3efa8a..82ce54a1 100644 --- a/mods/ENTITIES/mobs_mc/villager_illusioner.lua +++ b/mods/ENTITIES/mobs_mc/villager_illusioner.lua @@ -9,8 +9,11 @@ mobs:register_mob("mobs_mc:illusioner", { type = "monster", attack_type = "shoot", shoot_interval = 0.5, - arrow = "mobs_mc:arrow_entity", shoot_offset = 1.5, + arrow = "mcl_bows:arrow_entity", + shoot_arrow = function(self, pos, dir) + mcl_bows.shoot_arrow("mcl_bows:arrow", pos, dir, self.object:get_yaw(), self.object) + end, hp_min = 32, hp_max = 32, collisionbox = {-0.3, -0.01, -0.3, 0.3, 1.94, 0.3}, diff --git a/mods/ITEMS/mcl_bows/bow.lua b/mods/ITEMS/mcl_bows/bow.lua index 543c573d..4f39331d 100644 --- a/mods/ITEMS/mcl_bows/bow.lua +++ b/mods/ITEMS/mcl_bows/bow.lua @@ -49,7 +49,7 @@ mcl_bows.shoot_arrow = function(arrow_item, pos, dir, yaw, shooter, power, damag le._damage = damage le._startpos = pos minetest.sound_play("mcl_bows_bow_shoot", {pos=pos}) - if shooter ~= nil then + if shooter ~= nil and shooter:is_player() then if obj:get_luaentity().player == "" then obj:get_luaentity().player = shooter end From 84ff24f8ed83f44ea32f37d917151c107ea41e2b Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 9 Dec 2019 09:56:38 +0100 Subject: [PATCH 345/737] Tweak mob shooting behaviour --- mods/ENTITIES/mobs_mc/skeleton+stray.lua | 12 ++++++++---- mods/ENTITIES/mobs_mc/snowman.lua | 8 +++++++- mods/ENTITIES/mobs_mc/villager_illusioner.lua | 10 +++++++--- 3 files changed, 22 insertions(+), 8 deletions(-) diff --git a/mods/ENTITIES/mobs_mc/skeleton+stray.lua b/mods/ENTITIES/mobs_mc/skeleton+stray.lua index bb0b8d2e..4157f750 100644 --- a/mods/ENTITIES/mobs_mc/skeleton+stray.lua +++ b/mods/ENTITIES/mobs_mc/skeleton+stray.lua @@ -4,6 +4,7 @@ --License for code WTFPL and otherwise stated in readmes local S = minetest.get_translator("mobs_mc") +local mod_bows = minetest.get_modpath("mcl_bows") ~= nil --################### --################### SKELETON @@ -31,7 +32,6 @@ local skeleton = { random = "mobs_mc_skeleton_random", death = "mobs_mc_skeleton_death", damage = "mobs_mc_skeleton_hurt", - shoot_attack = "mcl_bows_bow_shoot", distance = 16, }, walk_velocity = 1.2, @@ -80,10 +80,14 @@ local skeleton = { attack_type = "dogshoot", arrow = "mcl_bows:arrow_entity", shoot_arrow = function(self, pos, dir) - mcl_bows.shoot_arrow("mcl_bows:arrow", pos, dir, self.object:get_yaw(), self.object) + if mod_bows then + -- 2-4 damage per arrow + local dmg = math.max(4, math.random(2, 8)) + mcl_bows.shoot_arrow("mcl_bows:arrow", pos, dir, self.object:get_yaw(), self.object, nil, dmg) + end end, - shoot_interval = 2.5, - shoot_offset = 1, + shoot_interval = 2, + shoot_offset = 1.5, dogshoot_switch = 1, dogshoot_count_max =1.8, } diff --git a/mods/ENTITIES/mobs_mc/snowman.lua b/mods/ENTITIES/mobs_mc/snowman.lua index 48143b44..401950a3 100644 --- a/mods/ENTITIES/mobs_mc/snowman.lua +++ b/mods/ENTITIES/mobs_mc/snowman.lua @@ -8,6 +8,7 @@ local S = minetest.get_translator("mobs_mc") local snow_trail_frequency = 0.5 -- Time in seconds for checking to add a new snow trail local mobs_griefing = minetest.settings:get_bool("mobs_griefing") ~= false +local mod_throwing = minetest.get_modpath("mcl_throwing") ~= nil local gotten_texture = { "mobs_mc_snowman.png", @@ -51,7 +52,12 @@ mobs:register_mob("mobs_mc:snowman", { jump = true, makes_footstep_sound = true, attack_type = "shoot", - arrow = "mobs_mc:snowball_entity", + arrow = "mcl_throwing:snowball_entity", + shoot_arrow = function(self, pos, dir) + if mod_throwing then + mcl_throwing.throw("mcl_throwing:snowball", pos, dir) + end + end, shoot_interval = 1, shoot_offset = 1, animation = { diff --git a/mods/ENTITIES/mobs_mc/villager_illusioner.lua b/mods/ENTITIES/mobs_mc/villager_illusioner.lua index 82ce54a1..9c0429ec 100644 --- a/mods/ENTITIES/mobs_mc/villager_illusioner.lua +++ b/mods/ENTITIES/mobs_mc/villager_illusioner.lua @@ -4,15 +4,20 @@ --License for code WTFPL and otherwise stated in readmes local S = minetest.get_translator("mobs_mc") +local mod_bows = minetest.get_modpath("mcl_bows") ~= nil mobs:register_mob("mobs_mc:illusioner", { type = "monster", attack_type = "shoot", - shoot_interval = 0.5, + shoot_interval = 2.5, shoot_offset = 1.5, arrow = "mcl_bows:arrow_entity", shoot_arrow = function(self, pos, dir) - mcl_bows.shoot_arrow("mcl_bows:arrow", pos, dir, self.object:get_yaw(), self.object) + if mod_bows then + -- 1-4 damage per arrow + local dmg = math.random(1, 4) + mcl_bows.shoot_arrow("mcl_bows:arrow", pos, dir, self.object:get_yaw(), self.object, nil, dmg) + end end, hp_min = 32, hp_max = 32, @@ -26,7 +31,6 @@ mobs:register_mob("mobs_mc:illusioner", { }, }, sounds = { -- TODO: more sounds - shoot_attack = "mcl_bows_bow_shoot", distance = 16, }, visual_size = {x=3, y=3}, From e2fb3a562d63d07bb4030b46af030e75b680ba6c Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 9 Dec 2019 10:11:15 +0100 Subject: [PATCH 346/737] Add some arrow-related death messages --- mods/HUD/mcl_death_messages/init.lua | 27 ++++++++++++++++--- .../locale/mcl_death_messages.de.tr | 6 ++++- .../mcl_death_messages/locale/template.txt | 4 +++ 3 files changed, 32 insertions(+), 5 deletions(-) diff --git a/mods/HUD/mcl_death_messages/init.lua b/mods/HUD/mcl_death_messages/init.lua index 7a55f499..b212e36d 100644 --- a/mods/HUD/mcl_death_messages/init.lua +++ b/mods/HUD/mcl_death_messages/init.lua @@ -7,11 +7,23 @@ mcl_death_messages = {} local msgs = { ["arrow"] = { N("@1 was fatally hit by an arrow."), - N("@1 has been killed with an arrow."), + N("@1 has been killed by an arrow."), }, ["arrow_name"] = { N("@1 was shot by an arrow from @2."), }, + ["arrow_skeleton"] = { + N("@1 was shot by an arrow from a skeleton."), + }, + ["arrow_stray"] = { + N("@1 was shot by an arrow from a stray."), + }, + ["arrow_illusioner"] = { + N("@1 was shot by an arrow from an illusioner."), + }, + ["arrow_mob"] = { + N("@1 was shot by an arrow."), + }, ["drown"] = { N("@1 forgot to breathe."), N("@1 drowned."), @@ -186,15 +198,22 @@ minetest.register_on_dieplayer(function(player, reason) if hitter:get_luaentity()._shooter then shooter = hitter:get_luaentity()._shooter end + local s_ent = shooter:get_luaentity() if shooter == nil then msg = dmsg("arrow", name) elseif shooter:is_player() then msg = dmsg("arrow_name", name, shooter:get_player_name()) - elseif shooter:get_luaentity()._cmi_is_mob then - if shooter:get_luaentity().nametag ~= "" then + elseif s_ent._cmi_is_mob then + if s_ent.nametag ~= "" then msg = dmsg("arrow_name", name, shooter:get_player_name()) + elseif s_ent.name == "mobs_mc:skeleton" then + msg = dmsg("arrow_skeleton", name) + elseif s_ent.name == "mobs_mc:stray" then + msg = dmsg("arrow_stray", name) + elseif s_ent.name == "mobs_mc:illusioner" then + msg = dmsg("arrow_illusioner", name) else - msg = dmsg("arrow", name) + msg = dmsg("arrow_mob", name) end else msg = dmsg("arrow", name) diff --git a/mods/HUD/mcl_death_messages/locale/mcl_death_messages.de.tr b/mods/HUD/mcl_death_messages/locale/mcl_death_messages.de.tr index cc143805..a37f556d 100644 --- a/mods/HUD/mcl_death_messages/locale/mcl_death_messages.de.tr +++ b/mods/HUD/mcl_death_messages/locale/mcl_death_messages.de.tr @@ -1,7 +1,11 @@ # textdomain: mcl_death_messages @1 was fatally hit by an arrow.=@1 wurde tödlich von einem Pfeil getroffen. -@1 has been killed with an arrow.=@1 wurde mit einem Pfeil getötet. +@1 has been killed by an arrow.=@1 wurde von einem Pfeil getötet. @1 was shot by an arrow from @2.=@1 wurde mit einem Pfeil von @2 abgeschossen. +@1 was shot by an arrow from a skeleton.=@1 wurde von einem Skelett mit Pfeil und Bogen abgeschossen. +@1 was shot by an arrow from a stray.=@1 wurde von einem Eiswanderer mit Pfeil und Bogen abgeschossen. +@1 was shot by an arrow from an illusioner.=@1 wurde von einem Illusionisten mit Pfeil und Bogen abgeschossen. +@1 was shot by an arrow.=@1 wurde mit einem Pfeil abgeschossen. @1 forgot to breathe.=@1 vergaß, zu atmen. @1 drowned.=@1 ertrank. @1 ran out of oxygen.=@1 ging die Luft aus. diff --git a/mods/HUD/mcl_death_messages/locale/template.txt b/mods/HUD/mcl_death_messages/locale/template.txt index 95b2375b..fc83e296 100644 --- a/mods/HUD/mcl_death_messages/locale/template.txt +++ b/mods/HUD/mcl_death_messages/locale/template.txt @@ -2,6 +2,10 @@ @1 was fatally hit by an arrow.= @1 has been killed with an arrow.= @1 was shot by an arrow from @2.= +@1 was shot by an arrow from a skeleton.= +@1 was shot by an arrow from a stray.= +@1 was shot by an arrow from an illusioner.= +@1 was shot by an arrow.= @1 forgot to breathe.= @1 drowned.= @1 ran out of oxygen.= From 9e31c2b62bd4db01131830915801b08dfc80bbb0 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 9 Dec 2019 11:03:48 +0100 Subject: [PATCH 347/737] Snow golems use mcl_throwing snowball --- mods/ENTITIES/mobs_mc/snowman.lua | 2 +- mods/ITEMS/mcl_fishing/init.lua | 3 +- mods/ITEMS/mcl_throwing/init.lua | 78 +++++++++++++++++++++++++++---- 3 files changed, 71 insertions(+), 12 deletions(-) diff --git a/mods/ENTITIES/mobs_mc/snowman.lua b/mods/ENTITIES/mobs_mc/snowman.lua index 401950a3..7e74d8d6 100644 --- a/mods/ENTITIES/mobs_mc/snowman.lua +++ b/mods/ENTITIES/mobs_mc/snowman.lua @@ -55,7 +55,7 @@ mobs:register_mob("mobs_mc:snowman", { arrow = "mcl_throwing:snowball_entity", shoot_arrow = function(self, pos, dir) if mod_throwing then - mcl_throwing.throw("mcl_throwing:snowball", pos, dir) + mcl_throwing.throw("mcl_throwing:snowball", pos, dir, nil, self.object) end end, shoot_interval = 1, diff --git a/mods/ITEMS/mcl_fishing/init.lua b/mods/ITEMS/mcl_fishing/init.lua index 02fa27fd..fd469781 100644 --- a/mods/ITEMS/mcl_fishing/init.lua +++ b/mods/ITEMS/mcl_fishing/init.lua @@ -146,8 +146,7 @@ local fish = function(itemstack, player) if noent == true then local playerpos = player:get_pos() local dir = player:get_look_dir() - local obj = mcl_throwing.throw("mcl_throwing:flying_bobber", {x=playerpos.x, y=playerpos.y+1.5, z=playerpos.z}, dir, 15) - obj:get_luaentity()._thrower = player:get_player_name() + local obj = mcl_throwing.throw("mcl_throwing:flying_bobber", {x=playerpos.x, y=playerpos.y+1.5, z=playerpos.z}, dir, 15, player:get_player_name()) end end diff --git a/mods/ITEMS/mcl_throwing/init.lua b/mods/ITEMS/mcl_throwing/init.lua index 1c579bd8..e3dbd5ca 100644 --- a/mods/ITEMS/mcl_throwing/init.lua +++ b/mods/ITEMS/mcl_throwing/init.lua @@ -24,7 +24,7 @@ local velocities = { ["mcl_throwing:ender_pearl_entity"] = 22, } -mcl_throwing.throw = function(throw_item, pos, dir, velocity) +mcl_throwing.throw = function(throw_item, pos, dir, velocity, thrower) if velocity == nil then velocity = velocities[throw_item] end @@ -36,16 +36,18 @@ mcl_throwing.throw = function(throw_item, pos, dir, velocity) local obj = minetest.add_entity(pos, entity_mapping[itemstring]) obj:set_velocity({x=dir.x*velocity, y=dir.y*velocity, z=dir.z*velocity}) obj:set_acceleration({x=dir.x*-3, y=-GRAVITY, z=dir.z*-3}) + if thrower then + obj:get_luaentity()._thrower = thrower + end return obj end -- Throw item -local throw_function = function(entity_name, velocity) +local player_throw_function = function(entity_name, velocity) local func = function(item, player, pointed_thing) local playerpos = player:get_pos() local dir = player:get_look_dir() - local obj = mcl_throwing.throw(item, {x=playerpos.x, y=playerpos.y+1.5, z=playerpos.z}, dir, velocity) - obj:get_luaentity()._thrower = player:get_player_name() + local obj = mcl_throwing.throw(item, {x=playerpos.x, y=playerpos.y+1.5, z=playerpos.z}, dir, velocity, player:get_player_name()) if not minetest.settings:get_bool("creative_mode") then item:take_item() end @@ -62,9 +64,14 @@ end -- Staticdata handling because objects may want to be reloaded local get_staticdata = function(self) + local thrower + -- Only save thrower if it's a player name + if type(self._thrower) == "string" then + thrower = self._thrower + end local data = { _lastpos = self._lastpos, - _thrower = self._thrower, + _thrower = thrower, } return minetest.serialize(data) end @@ -88,6 +95,7 @@ local snowball_ENTITY={ get_staticdata = get_staticdata, on_activate = on_activate, + _thrower = nil, _lastpos={}, } @@ -101,6 +109,7 @@ local egg_ENTITY={ get_staticdata = get_staticdata, on_activate = on_activate, + _thrower = nil, _lastpos={}, } @@ -136,6 +145,38 @@ local flying_bobber_ENTITY={ objtype="fishing", } +local check_object_hit = function(self, pos, mob_damage) + for _,object in pairs(minetest.get_objects_inside_radius(pos, 1.5)) do + + local entity = object:get_luaentity() + + if entity + and entity.name ~= self.object:get_luaentity().name then + + if object:is_player() and self._thrower ~= object:get_player_name() then + -- TODO: Deal knockback + self.object:remove() + return true + elseif entity._cmi_is_mob == true and (self._thrower ~= object) then + local dmg = {} + if mob_damage then + dmg = mob_damage(entity.name) + end + + -- FIXME: Knockback is broken + object:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups = dmg, + }, nil) + + self.object:remove() + return true + end + end + end + return false +end + -- Snowball on_step()--> called when snowball is moving. local snowball_on_step = function(self, dtime) self.timer=self.timer+dtime @@ -150,6 +191,19 @@ local snowball_on_step = function(self, dtime) return end end + + local mob_damage = function(mobname) + if mobname == "mobs_mc:blaze" then + return {fleshy = 3} + else + return {} + end + end + + if check_object_hit(self, pos, mob_damage) then + return + end + self._lastpos={x=pos.x, y=pos.y, z=pos.z} -- Set _lastpos-->Node will be added at last pos outside the node end @@ -160,7 +214,7 @@ local egg_on_step = function(self, dtime) local node = minetest.get_node(pos) local def = minetest.registered_nodes[node.name] - -- Destroy when hitting a solid node + -- Destroy when hitting a solid node with chance to spawn chicks if self._lastpos.x~=nil then if (def and def.walkable) or not def then -- 1/8 chance to spawn a chick @@ -204,6 +258,12 @@ local egg_on_step = function(self, dtime) return end end + + -- Destroy when hitting a mob or player (no chick spawning) + if check_object_hit(self, pos) then + return + end + self._lastpos={x=pos.x, y=pos.y, z=pos.z} -- Set lastpos-->Node will be added at last pos outside the node end @@ -347,7 +407,7 @@ minetest.register_craftitem("mcl_throwing:snowball", { inventory_image = "mcl_throwing_snowball.png", stack_max = 16, groups = { weapon_ranged = 1 }, - on_use = throw_function("mcl_throwing:snowball_entity"), + on_use = player_throw_function("mcl_throwing:snowball_entity"), _on_dispense = dispense_function, }) @@ -358,7 +418,7 @@ minetest.register_craftitem("mcl_throwing:egg", { _doc_items_usagehelp = how_to_throw, inventory_image = "mcl_throwing_egg.png", stack_max = 16, - on_use = throw_function("mcl_throwing:egg_entity"), + on_use = player_throw_function("mcl_throwing:egg_entity"), _on_dispense = dispense_function, groups = { craftitem = 1 }, }) @@ -371,7 +431,7 @@ minetest.register_craftitem("mcl_throwing:ender_pearl", { wield_image = "mcl_throwing_ender_pearl.png", inventory_image = "mcl_throwing_ender_pearl.png", stack_max = 16, - on_use = throw_function("mcl_throwing:ender_pearl_entity"), + on_use = player_throw_function("mcl_throwing:ender_pearl_entity"), groups = { transport = 1 }, }) From 1c7e3500953e9e8c4743500574b4b4751d41f313 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 9 Dec 2019 11:52:19 +0100 Subject: [PATCH 348/737] Add snowball and egg impact sounds --- mods/ITEMS/mcl_throwing/README.md | 26 ++++++++++++++++++ mods/ITEMS/mcl_throwing/init.lua | 4 +++ .../sounds/mcl_throwing_egg_impact.ogg | Bin 0 -> 29927 bytes .../mcl_throwing_snowball_impact_hard.ogg | Bin 0 -> 22044 bytes .../mcl_throwing_snowball_impact_soft.ogg | Bin 0 -> 36884 bytes 5 files changed, 30 insertions(+) create mode 100644 mods/ITEMS/mcl_throwing/README.md create mode 100644 mods/ITEMS/mcl_throwing/sounds/mcl_throwing_egg_impact.ogg create mode 100644 mods/ITEMS/mcl_throwing/sounds/mcl_throwing_snowball_impact_hard.ogg create mode 100644 mods/ITEMS/mcl_throwing/sounds/mcl_throwing_snowball_impact_soft.ogg diff --git a/mods/ITEMS/mcl_throwing/README.md b/mods/ITEMS/mcl_throwing/README.md new file mode 100644 index 00000000..c91a537e --- /dev/null +++ b/mods/ITEMS/mcl_throwing/README.md @@ -0,0 +1,26 @@ +# `mcl_throwing` + +It's a MineClone 2 mod containing throwable items like snowballs. + +## License of code + +- MIT License + +## License of media + +- `mcl_throwing_snowball_impact_soft.ogg`: + - License: CC BY 3.0 + - Author: YleArkisto (freesound.org) + - Source: + - Original title: `sfx_snowball_hit-03.wav` (file was edited) +- `mcl_throwing_snowball_impact_hard.ogg`: + - License: CC0 + - Author: Julien Matthey (freesound.org) + - Source: + - Original title: `JM_IMPACT_01c - Snow on cement.wav` (file was edited) +- `mcl_throwing_egg_impact.ogg`: + - License: CC0 + - Author: dav0r (freesound.org) + - Source: + - Original title: `d0_step_on_egg_04` (file was edited) +- Everything else: See MineClone 2 license infos diff --git a/mods/ITEMS/mcl_throwing/init.lua b/mods/ITEMS/mcl_throwing/init.lua index e3dbd5ca..5897a692 100644 --- a/mods/ITEMS/mcl_throwing/init.lua +++ b/mods/ITEMS/mcl_throwing/init.lua @@ -187,6 +187,7 @@ local snowball_on_step = function(self, dtime) -- Destroy when hitting a solid node if self._lastpos.x~=nil then if (def and def.walkable) or not def then + minetest.sound_play("mcl_throwing_snowball_impact_hard", { pos = self.object:get_pos(), max_hear_distance=16, gain=0.7 }) self.object:remove() return end @@ -201,6 +202,7 @@ local snowball_on_step = function(self, dtime) end if check_object_hit(self, pos, mob_damage) then + minetest.sound_play("mcl_throwing_snowball_impact_soft", { pos = self.object:get_pos(), max_hear_distance=16, gain=0.7 }) return end @@ -254,6 +256,7 @@ local egg_on_step = function(self, dtime) end end end + minetest.sound_play("mcl_throwing_egg_impact", { pos = self.object:get_pos(), max_hear_distance=10, gain=0.5 }) self.object:remove() return end @@ -261,6 +264,7 @@ local egg_on_step = function(self, dtime) -- Destroy when hitting a mob or player (no chick spawning) if check_object_hit(self, pos) then + minetest.sound_play("mcl_throwing_egg_impact", { pos = self.object:get_pos(), max_hear_distance=10, gain=0.5 }) return end diff --git a/mods/ITEMS/mcl_throwing/sounds/mcl_throwing_egg_impact.ogg b/mods/ITEMS/mcl_throwing/sounds/mcl_throwing_egg_impact.ogg new file mode 100644 index 0000000000000000000000000000000000000000..c4adf57a49286bcba83dbdef63747943f7f945a2 GIT binary patch literal 29927 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 literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_throwing/sounds/mcl_throwing_snowball_impact_hard.ogg b/mods/ITEMS/mcl_throwing/sounds/mcl_throwing_snowball_impact_hard.ogg new file mode 100644 index 0000000000000000000000000000000000000000..a3e0a00ab3226ef7f9a9a039798d520331353b6b GIT binary patch literal 22044 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 F007%Uy>0*i literal 0 HcmV?d00001 From 1e354f63c0ce46c58de9be4aa74b06598790a0b5 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 9 Dec 2019 12:17:51 +0100 Subject: [PATCH 349/737] Add chick sounds --- mods/ENTITIES/mcl_mobs/api.lua | 37 ++++++++++++------ mods/ENTITIES/mcl_mobs/api.txt | 2 + mods/ENTITIES/mobs_mc/LICENSE-media.md | 3 ++ mods/ENTITIES/mobs_mc/chicken.lua | 6 +++ .../mobs_mc/sounds/mobs_mc_chicken_child.ogg | Bin 0 -> 9978 bytes 5 files changed, 35 insertions(+), 13 deletions(-) create mode 100644 mods/ENTITIES/mobs_mc/sounds/mobs_mc_chicken_child.ogg diff --git a/mods/ENTITIES/mcl_mobs/api.lua b/mods/ENTITIES/mcl_mobs/api.lua index b9b67078..fb823270 100644 --- a/mods/ENTITIES/mcl_mobs/api.lua +++ b/mods/ENTITIES/mcl_mobs/api.lua @@ -96,19 +96,29 @@ local mod_mobspawners = minetest.get_modpath("mcl_mobspawners") ~= nil local mod_hunger = minetest.get_modpath("mcl_hunger") ~= nil -- play sound -local mob_sound = function(self, sound, is_opinion, fixed_pitch) +local mob_sound = function(self, soundname, is_opinion, fixed_pitch) + local soundinfo + if self.sounds_child and self.child then + soundinfo = self.sounds_child + elseif self.sounds then + soundinfo = self.sounds + end + if not soundinfo then + return + end + local sound = soundinfo[soundname] if sound then if is_opinion and self.opinion_sound_cooloff > 0 then return end local pitch if not fixed_pitch then - local base_pitch = self.sounds.base_pitch + local base_pitch = soundinfo.base_pitch if not base_pitch then base_pitch = 1 end - if self.child then + if self.child and (not self.sounds_child) then -- Children have higher pitch pitch = base_pitch * 1.5 else @@ -140,7 +150,7 @@ local do_attack = function(self, player) -- TODO: Implement war_cry sound without being annoying --if random(0, 100) < 90 then - --mob_sound(self, self.sounds.war_cry, true) + --mob_sound(self, "war_cry", true) --end end @@ -512,7 +522,7 @@ local check_for_death = function(self, cause, cmi_cause) remove_texture_mod(self, "^[colorize:#FF000040") end end, self) - mob_sound(self, self.sounds.damage) + mob_sound(self, "damage") end -- backup nametag so we can show health stats @@ -539,7 +549,7 @@ local check_for_death = function(self, cause, cmi_cause) item_drop(self, nil) end - mob_sound(self, self.sounds.death) + mob_sound(self, "death") local pos = self.object:get_pos() @@ -928,7 +938,7 @@ local do_jump = function(self) end, self, v) if self.jump_sound_cooloff <= 0 then - mob_sound(self, self.sounds.jump) + mob_sound(self, "jump") self.jump_sound_cooloff = 0.5 end else @@ -1443,7 +1453,7 @@ local smart_mobs = function(self, s, p, dist, dtime) else -- yay i found path -- TODO: Implement war_cry sound without being annoying - --mob_sound(self, self.sounds.war_cry, true) + --mob_sound(self, "war_cry", true) set_velocity(self, self.walk_velocity) -- follow path now that it has it @@ -2058,7 +2068,7 @@ local do_states = function(self, dtime) self.v_start = true self.timer = 0 self.blinktimer = 0 - mob_sound(self, self.sounds.fuse, nil, false) + mob_sound(self, "fuse", nil, false) -- stop timer if out of reach or direct line of sight elseif self.allow_fuse_reset @@ -2290,7 +2300,7 @@ local do_states = function(self, dtime) if line_of_sight(self, p2, s2) == true then -- play attack sound - mob_sound(self, self.sounds.attack) + mob_sound(self, "attack") -- punch player (or what player is attached to) local attached = self.attack:get_attach() @@ -2344,7 +2354,7 @@ local do_states = function(self, dtime) set_animation(self, "shoot") -- play shoot attack sound - mob_sound(self, self.sounds.shoot_attack) + mob_sound(self, "shoot_attack") local p = self.object:get_pos() @@ -3017,7 +3027,7 @@ local mob_step = function(self, dtime) -- mob plays random sound at times if random(1, 100) == 1 then - mob_sound(self, self.sounds.random, true) + mob_sound(self, "random", true) end -- environmental damage timer (every 1 second) @@ -3228,6 +3238,7 @@ minetest.register_entity(name, { child = def.child or false, texture_mods = {}, shoot_arrow = def.shoot_arrow, + sounds_child = def.sounds_child, -- End of MCL2 extensions on_spawn = def.on_spawn, @@ -3857,7 +3868,7 @@ function mobs:feed_tame(self, clicker, feed_count, breed, tame) end -- make sound when fed so many times - mob_sound(self, self.sounds.random, true) + mob_sound(self, "random", true) end return true diff --git a/mods/ENTITIES/mcl_mobs/api.txt b/mods/ENTITIES/mcl_mobs/api.txt index 0430bbc0..96ae363b 100644 --- a/mods/ENTITIES/mcl_mobs/api.txt +++ b/mods/ENTITIES/mcl_mobs/api.txt @@ -229,6 +229,8 @@ functions needed for the mob to work properly which contains the following: 'shoot_arrow(self, pos, dir)' function that is called when mob wants to shoot an arrow. You can spawn your own arrow here. pos is mob position, dir is mob's aiming direction + 'sounds_child' same as sounds, but for childs. If not defined, childs will use same + sound as adults but with higher pitch Node Replacement diff --git a/mods/ENTITIES/mobs_mc/LICENSE-media.md b/mods/ENTITIES/mobs_mc/LICENSE-media.md index 7cad2241..69615048 100644 --- a/mods/ENTITIES/mobs_mc/LICENSE-media.md +++ b/mods/ENTITIES/mobs_mc/LICENSE-media.md @@ -81,6 +81,9 @@ Origin of those models: * PilzAdam and Wuzzy (CC0) * `mobs_mc_chicken_lay_egg.ogg` +* [AGFX](http://www.freesound.org/people/DrMinky/sounds/) (CC0) + * `mobs_mc_chicken_child.ogg` + * Source: * Randomation (CC0) * `green_slime_damage.ogg` * `green_slime_attack.ogg` diff --git a/mods/ENTITIES/mobs_mc/chicken.lua b/mods/ENTITIES/mobs_mc/chicken.lua index c6ce8550..e5c9ba80 100644 --- a/mods/ENTITIES/mobs_mc/chicken.lua +++ b/mods/ENTITIES/mobs_mc/chicken.lua @@ -42,6 +42,12 @@ mobs:register_mob("mobs_mc:chicken", { -- TODO: death, damage distance = 16, }, + sounds_child = { + random = "mobs_mc_chicken_child", + damage = "mobs_mc_chicken_child", + death = "mobs_mc_chicken_child", + distance = 16, + }, animation = { stand_speed = 25, walk_speed = 25, run_speed = 50, stand_start = 0, stand_end = 0, diff --git a/mods/ENTITIES/mobs_mc/sounds/mobs_mc_chicken_child.ogg b/mods/ENTITIES/mobs_mc/sounds/mobs_mc_chicken_child.ogg new file mode 100644 index 0000000000000000000000000000000000000000..5ea33fc0781f1cd52b3b6427b0e75fc3f8d925ff GIT binary patch literal 9978 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 literal 0 HcmV?d00001 From 5868790b4f825229fbee4a249026aaf70383b0fe Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 9 Dec 2019 12:35:24 +0100 Subject: [PATCH 350/737] Tweak parrot colors --- .../mobs_mc/textures/mobs_mc_parrot_blue.png | Bin 312 -> 573 bytes .../mobs_mc/textures/mobs_mc_parrot_green.png | Bin 306 -> 547 bytes .../textures/mobs_mc_parrot_red_blue.png | Bin 312 -> 561 bytes .../textures/mobs_mc_parrot_yellow_blue.png | Bin 302 -> 558 bytes .../textures/mobs_mc_spawn_icon_parrot.png | Bin 444 -> 440 bytes 5 files changed, 0 insertions(+), 0 deletions(-) diff --git a/mods/ENTITIES/mobs_mc/textures/mobs_mc_parrot_blue.png b/mods/ENTITIES/mobs_mc/textures/mobs_mc_parrot_blue.png index b21c4f25fe35fdec303a46cbbf2012ae6b514ebf..9181de260592c11756a7010a2ba676598fc0082a 100644 GIT binary patch delta 560 zcmdnNw3lUqL_G%^0|P^GRn->;1_rhyZ+91l#|-}&p8hzmlEuKlz**oCSAu>Eaj?arkYRuQyYmh;6>eMk%)D6+JF9 zd{gw4G6erMiADX+xVbF;!YS7+8JGDr%yVyv>-}O)6sY&?w#!iNxYQxgB{9=%pP1og zi^q?9AG^oTJA3DM+P%Hc=T<-e#37@!VS|5f-MhSYi_XVx@{0PZC6kgLpPn)I8w0~R zf2S7D13Newj9%(q$}M83(2RY!@yl1g?%U?9e;P#@8YX$a+;;K&68qYulr_^Hd#J@T zGF*JY5wkD0Hu>?}`kl&5506SPEC|YV5@J0atnJ**6jgLK?*5xSC;grVG8|A$GKpXD zx^#WWeZ@{Wk3|hN3)j{AN0=HP&eZ=R<9O4*dDHw)*WNVUc$vVPWqI#Wx-plb`nfcb zq@IJp>lW`%NV=4+c46xxA12?eYzLp_M(*BMvtf>#^~T_W*&Ad9r){bClZt#`Xri9K z%Jg>g35$jqA0rP&mRXxd1YgK0=9FmOoU{9+YG8v3SB#L;?pe13Tc^ipnk^8KjuFa> zJ8K>I=#frN<|gSsr82Ve7vdeAW($4_YI3`l_wv;-+pVVTRke;YXZJgtTpF;_jD7W_ zvZQai=3Cqu6TI%pW%#zrU%hx=b7@oS5e3c&uYmQo2OrNpDB%1@x`rY2%I*y&ce3v= QFfcH9y85}Sb4q9e02!C>+W-In delta 297 zcmdnXvV&=YL_G^L0|P^2NcwRG1_s>#pAc6D1_oK}4ke@6y3Q9oqpw-}Uy)amoPAYb zgA$jqg{Ff3WCPcWvljHqYPE7@+Aga*l1?7Xu~Hng&(9M(By!zV7a+(Do&RUB$>ZI3`CSbB9RUHQ4x$_d zTn?dZ)AoO02o+EYZkW!0_fPc;rhLf^K88$Y<*g~JG$k1r7#KWV{an^LB{Ts5kEnFv diff --git a/mods/ENTITIES/mobs_mc/textures/mobs_mc_parrot_green.png b/mods/ENTITIES/mobs_mc/textures/mobs_mc_parrot_green.png index 448444e34c4f2ccd3304922a8cf3e0819dc83fd2..152acb8f412765da7c8c9ed9ed82984bc27801be 100644 GIT binary patch delta 534 zcmdnQw3uarL_G%^0|P^GRn->;1_rhyZ+91l#|-}&p8hzmlEuKlz**oCS?{}OYL|P}I|Q)QJN#)5;u5`8DqiojKtyWQZ2?(lW4){-A!DCe zc1P!3o!fG!`rS_Rc14d4pW61{=iT;sPI?k~L}KCAV!4xlf*7?=88JM_dpnDR^M^eX zL+xhAHeEi3ujiv4%$;4H!}VrWHA92e>WYp3*DMwcamapNvHr$E%|1qk@T1;3Q_T1H z-P?W5!P=4YYe#@nePXfnlz{g#mQ9~Oxhm*AEPJ3@edSkiT@{3K(4J2xNHt2*lU;LaspA-y}7cpsft49;7yUt#Y)DK&#F zi=3Ex3|Fj@s<^h|Z=B2a$4e&YC5i}6+~O$~Inj_uJiX_rnbLm7&IR=yle!;in7Zgm z^etuibJDf&&ZBiNPk3kq8uu^mTC?M2gn_KLm(n)jb8C$KWX->;{!{nZp?vL@W!;ae zL;d&8Rp`h|d}U3wFKy6Tec;)*l+Yq;vHKZWf2DnYC1x)&4o%BiynLaP1LNWgDtetO pdk@t8WVq{hmN&2Of3tqoirqrC{3k0`FfcGMc)I$ztaD0e0s!WW;vWD2 delta 291 zcmZ3?vWaPeL_G^L0|P^2NcwRG1_rGFpAc6D1_sG9@k)>L!d^~DdOaid)f9Op$*GUm zZBXJew$PNmlRj%fujGk1k;Oi%GxmLCU|`@Z3GxeO_zwXLQVb=L3=9nGJY5_^Di~W% z8}c7{rkmmjdAiJQ?oDA<=l4F vmp@=yrLc^FUw_xnbeW5+?+h-;FfjC8R@(l5kx&i;0|SGntDnm{r-UW|-8p_o diff --git a/mods/ENTITIES/mobs_mc/textures/mobs_mc_parrot_red_blue.png b/mods/ENTITIES/mobs_mc/textures/mobs_mc_parrot_red_blue.png index 03eefc74f5e429ce6c3dd09aaa80f621ea7ae7bf..2f14ef1a59f808e04ec61cafa3863cdec4b5d248 100644 GIT binary patch delta 548 zcmdnNw2@_kL_G%^0|P^GRn->;1_rhyZ+91l#|-}&p8hzmlEuKlz**oCSL)X&Z|kz z(|CS!GF+Po}!$0zl24mK_oM=LkZ zm)fIw;+PZDyGMI0UOamlv)=w=+vJWPm2xhk7oX*B?%Z}$WYPrJdHsuyC~ce_^=aMf zABQdWTP)k()MBg5KqO%IyRC%Hjh3G&P#pAc6D28InvT*uUTY_je-l>I&QUteBHa_ZxC z82s`2F{WozhH*{5WpbCP!h?&z_8KN#WAFU zvE{V77?Yt$>qGaiHyNK_y7>6ztY0Rw{`Z-Ly3ZQDsP|URoi!_d@8_p&F-|*_xiTws zYnk~LbTLlfx#rxdRL;a#zRQDIub!4$vb(H0Zu+75AGb}JKRI4%Mb7ivx{58o{)(}7 zGQE^xn9v~kik)|s$%a<8l*2lwZ1}{bb{rR5GEd;?vh)88HhH}JF29R`zat=^)IpS^ zfXgA2ZQA}1450!_!41>-@BXQN!IUqV!N-uvth_a4m8K*E0|SGntDnm{r-UW|^dxst diff --git a/mods/ENTITIES/mobs_mc/textures/mobs_mc_parrot_yellow_blue.png b/mods/ENTITIES/mobs_mc/textures/mobs_mc_parrot_yellow_blue.png index 1979d9076c893357d8f1cf66c34fc749b70b38a5..f35adfd029f202acd5d7bd9cd37b5dd448c51fc5 100644 GIT binary patch delta 544 zcmZ3-w2ozhWIY=L14D6D)fWZ^2DT(`cNd1o4F4IP{y49a#lXP8S>O>_%)r1c48n{I zv*t)JFfg!}c>21sKjz`&mN#K>FFDJ=z_{Df#W5t}aB_-*u*BOR|K(@apKG2tQKmRT zB7{HM}g%0Au|(QMn)94sjzAtABr&1T6d&uyBs|9t2+VP`q%^x}QJgoH(; zL1u)>f)<7|MH1C-b1wq&kU?RI*}@=!xxN<|*96F&NvfaW95K`2s=y|h zuonVFEW-O1xchM*X<^#*G{4@-K+!$nEb9wJha8P9ulOfjnzSzATGPG%&W8jy7#+&I z|NsA0@&EtxcXB;6zIb}#2A3Bqe3?^f{yRSpX!Pxg%d_Vg@vaiF4OrOl zu!CQom+c&*yq(k^^BW)k+aK1DkYrV6WnggFcc4Gi#(y>g0|SGntDnm{r-UW|Oy1tR delta 286 zcmZ3-vW{tjWIZzj1B1(wu44=g48{RIA+8Jz3`RTtJMH_QfA)XN)&JEO|H~^$PJO&? zgA$jqh31+E`a3=v*zWmXc<%qK1-%A4{vZ0U-)Yjdm4ShQvn0qbnBhMJFi0_!L^3ci zEcA4745?sTa*ma$$w8#$VPVZ?joSa0^EB>$(EOX9@Ty)k;kdwrn%NKg51KraYh(&d(FdJa~NG2HtOx=ncgvqX4v`yP$1 zITvfLJ5TUu&Xk!_spGZj4HIj%u}9h^iw@SuA{{ELR|Vvp`w&pOPeJ20H_PG;hd*3j paCDu7jULw><-fhzz2 diff --git a/mods/ENTITIES/mobs_mc/textures/mobs_mc_spawn_icon_parrot.png b/mods/ENTITIES/mobs_mc/textures/mobs_mc_spawn_icon_parrot.png index 0deacd4c1c22d71d22eb68358edd68f263f56cf2..a9a2895f8d4e46b73b1a71fa48daae52a77aab48 100644 GIT binary patch delta 371 zcmdnPyn}gymf>TD{|rxmoL9+WU|`@Z@Q5sCVBi)8VMc~ob0ioT7}!fZeO=if^Kf#@ zOPI}<(3=>oQLo_X;usQf`0X@9Z)Qh<*8P^vC!RTQ3%=>;)oj_K)zs9RF!|Umvn7JF zzuMopef*lqH^zgv+b%v{9#UhmXu>0gog8`f*LwG9yTq4mRaaFP zIC=kD@H#n*)WWp8GpkvHyxuoHovQlguIlXe=sWpGqN4a2W;R(rcJbQFx{_<NMcxLSpB)aYRc?O=@ zhWfKKK4dFTT+gU{YJ+63_z`nCn}QNM)`acWn*VmneOYraZth%`zoNWVVa?s_rhyBa c^z9fPPl@If-qFy>z`(%Z>FVdQ&MBb@0GyDXg#Z8m delta 375 zcmdnNyoY&$mf?Sf{|x^Z>|H*Yfq{Xuz$3Dlfq`2Xgc%uT&5>YWU|=ut^mS!_$RWq0 z#OcPz$2Bopqh7_+#W5t}@Y`v7y_g+ETK8M)IkGu&3%>CQn&GrzgWyDs8xgl6Zg=(G zz4enJ$%{Mq=rxmlO=8oW)=Wy8Jbl8}&NyztdWEdAJCZH7cSVZN?Rfs$->}&t5{dKzaWbc}oiQN;+ZoYb_AS%u$93+!auhX=;>uNgd=fvxN z_lud_{*}!;HmlKjnf==D>T-=D?~M(t&7Es%k6rqvwY@v|RW4h@#HQ@M>>sPRf<%L+ z%J)7^JJ6N%G`9H0+FzLm%dhh74t;e=FkknFmYqk~jh^`?-&x$2PEc(;@m0w)RO74G z`jo9L(y?I=uDkWDX4Liy@wQ&!?fz(ObzlEGh6wu?&;Q4mNAue5x46swOFL_ulvIq( gicTihn2$`agyYzLUM>w|U|?YIboFyt=akR{0F2k79smFU From eeac1435f9063bdb9d01bfd95e072ea6240ab4ff Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 9 Dec 2019 15:14:16 +0100 Subject: [PATCH 351/737] Update screwdriver mod for MT 5.0.0 --- mods/ITEMS/screwdriver/init.lua | 5 ++++- mods/ITEMS/screwdriver/locale/screwdriver.de.tr | 2 ++ mods/ITEMS/screwdriver/locale/template.txt | 2 ++ 3 files changed, 8 insertions(+), 1 deletion(-) create mode 100644 mods/ITEMS/screwdriver/locale/screwdriver.de.tr create mode 100644 mods/ITEMS/screwdriver/locale/template.txt diff --git a/mods/ITEMS/screwdriver/init.lua b/mods/ITEMS/screwdriver/init.lua index 4d38bbc2..ca77e400 100644 --- a/mods/ITEMS/screwdriver/init.lua +++ b/mods/ITEMS/screwdriver/init.lua @@ -1,3 +1,5 @@ +local S = minetest.get_translator("screwdriver") + screwdriver = {} screwdriver.ROTATE_FACE = 1 @@ -143,8 +145,9 @@ end -- Screwdriver minetest.register_tool("screwdriver:screwdriver", { - description = "Screwdriver", + description = S("Screwdriver"), inventory_image = "screwdriver.png", + groups = { tool = 1 }, on_use = function(itemstack, user, pointed_thing) screwdriver.handler(itemstack, user, pointed_thing, screwdriver.ROTATE_FACE, 200) return itemstack diff --git a/mods/ITEMS/screwdriver/locale/screwdriver.de.tr b/mods/ITEMS/screwdriver/locale/screwdriver.de.tr new file mode 100644 index 00000000..35c99c05 --- /dev/null +++ b/mods/ITEMS/screwdriver/locale/screwdriver.de.tr @@ -0,0 +1,2 @@ +# textdomain: screwdriver +Screwdriver=Schraubendreher diff --git a/mods/ITEMS/screwdriver/locale/template.txt b/mods/ITEMS/screwdriver/locale/template.txt new file mode 100644 index 00000000..b3871a11 --- /dev/null +++ b/mods/ITEMS/screwdriver/locale/template.txt @@ -0,0 +1,2 @@ +#textdomain: screwdriver +Screwdriver= From 5fd746710fc92a2590d2fbe1105fbb68e658f1bf Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 9 Dec 2019 16:08:24 +0100 Subject: [PATCH 352/737] Add rotation support for pistons --- mods/ITEMS/REDSTONE/mesecons_pistons/init.lua | 70 ++++++++++++++----- 1 file changed, 51 insertions(+), 19 deletions(-) diff --git a/mods/ITEMS/REDSTONE/mesecons_pistons/init.lua b/mods/ITEMS/REDSTONE/mesecons_pistons/init.lua index 65b1e9be..09309e5f 100644 --- a/mods/ITEMS/REDSTONE/mesecons_pistons/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons_pistons/init.lua @@ -177,7 +177,9 @@ local usagehelp_piston = S("This block can have one of 6 possible orientations." local on_rotate if minetest.get_modpath("screwdriver") then - on_rotate = screwdriver.disallow + on_rotate = function(pos, node, user, mode, new_param2) + return false + end end -- offstate @@ -206,7 +208,12 @@ minetest.register_node("mesecons_pistons:piston_normal_off", { }}, _mcl_blast_resistance = 2.5, _mcl_hardness = 0.5, - on_rotate = on_rotate, + on_rotate = function(pos, node, user, mode) + if mode == screwdriver.ROTATE_AXIS then + minetest.set_node(pos, {name="mesecons_pistons:piston_up_normal_off"}) + return false + end + end, }) -- onstate @@ -236,7 +243,7 @@ minetest.register_node("mesecons_pistons:piston_normal_on", { }}, _mcl_blast_resistance = 2.5, _mcl_hardness = 0.5, - on_rotate = on_rotate, + on_rotate = false, }) -- pusher @@ -260,7 +267,7 @@ minetest.register_node("mesecons_pistons:piston_pusher_normal", { node_box = piston_pusher_box, sounds = mcl_sounds.node_sound_wood_defaults(), _mcl_blast_resistance = 2.5, - on_rotate = on_rotate, + on_rotate = false, }) -- Sticky ones @@ -302,7 +309,12 @@ minetest.register_node("mesecons_pistons:piston_sticky_off", { }}, _mcl_blast_resistance = 2.5, _mcl_hardness = 0.5, - on_rotate = on_rotate, + on_rotate = function(pos, node, user, mode) + if mode == screwdriver.ROTATE_AXIS then + minetest.set_node(pos, {name="mesecons_pistons:piston_up_sticky_off"}) + return false + end + end, }) -- onstate @@ -332,7 +344,7 @@ minetest.register_node("mesecons_pistons:piston_sticky_on", { }}, _mcl_blast_resistance = 2.5, _mcl_hardness = 0.5, - on_rotate = on_rotate, + on_rotate = false, }) -- pusher @@ -356,7 +368,7 @@ minetest.register_node("mesecons_pistons:piston_pusher_sticky", { node_box = piston_pusher_box, sounds = mcl_sounds.node_sound_wood_defaults(), _mcl_blast_resistance = 2.5, - on_rotate = on_rotate, + on_rotate = false, }) -- @@ -414,7 +426,12 @@ minetest.register_node("mesecons_pistons:piston_up_normal_off", { }), _mcl_blast_resistance = 2.5, _mcl_hardness = 0.5, - on_rotate = on_rotate, + on_rotate = function(pos, node, user, mode) + if mode == screwdriver.ROTATE_AXIS then + minetest.set_node(pos, {name="mesecons_pistons:piston_down_normal_off"}) + end + return false + end, }) -- onstate @@ -444,7 +461,7 @@ minetest.register_node("mesecons_pistons:piston_up_normal_on", { }}, _mcl_blast_resistance = 2.5, _mcl_hardness = 0.5, - on_rotate = on_rotate, + on_rotate = false, }) -- pusher @@ -468,7 +485,7 @@ minetest.register_node("mesecons_pistons:piston_up_pusher_normal", { node_box = piston_up_pusher_box, sounds = mcl_sounds.node_sound_wood_defaults(), _mcl_blast_resistance = 2.5, - on_rotate = on_rotate, + on_rotate = false, }) @@ -509,7 +526,12 @@ minetest.register_node("mesecons_pistons:piston_up_sticky_off", { }}, _mcl_blast_resistance = 2.5, _mcl_hardness = 0.5, - on_rotate = on_rotate, + on_rotate = function(pos, node, user, mode) + if mode == screwdriver.ROTATE_AXIS then + minetest.set_node(pos, {name="mesecons_pistons:piston_down_sticky_off"}) + end + return false + end, }) -- onstate @@ -539,7 +561,7 @@ minetest.register_node("mesecons_pistons:piston_up_sticky_on", { }}, _mcl_blast_resistance = 2.5, _mcl_hardness = 0.5, - on_rotate = on_rotate, + on_rotate = false, }) -- pusher @@ -563,7 +585,7 @@ minetest.register_node("mesecons_pistons:piston_up_pusher_sticky", { node_box = piston_up_pusher_box, sounds = mcl_sounds.node_sound_wood_defaults(), _mcl_blast_resistance = 2.5, - on_rotate = on_rotate, + on_rotate = false, }) -- @@ -621,7 +643,12 @@ minetest.register_node("mesecons_pistons:piston_down_normal_off", { }}, _mcl_blast_resistance = 2.5, _mcl_hardness = 0.5, - on_rotate = on_rotate, + on_rotate = function(pos, node, user, mode) + if mode == screwdriver.ROTATE_AXIS then + minetest.set_node(pos, {name="mesecons_pistons:piston_normal_off"}) + end + return false + end, }) -- onstate @@ -651,7 +678,7 @@ minetest.register_node("mesecons_pistons:piston_down_normal_on", { }}, _mcl_blast_resistance = 2.5, _mcl_hardness = 0.5, - on_rotate = on_rotate, + on_rotate = false, }) -- pusher @@ -675,7 +702,7 @@ minetest.register_node("mesecons_pistons:piston_down_pusher_normal", { node_box = piston_down_pusher_box, sounds = mcl_sounds.node_sound_wood_defaults(), _mcl_blast_resistance = 2.5, - on_rotate = on_rotate, + on_rotate = false, }) -- Sticky @@ -711,7 +738,12 @@ minetest.register_node("mesecons_pistons:piston_down_sticky_off", { }}, _mcl_blast_resistance = 2.5, _mcl_hardness = 0.5, - on_rotate = on_rotate, + on_rotate = function(pos, node, user, mode) + if mode == screwdriver.ROTATE_AXIS then + minetest.set_node(pos, {name="mesecons_pistons:piston_sticky_off"}) + end + return false + end, }) -- onstate @@ -741,7 +773,7 @@ minetest.register_node("mesecons_pistons:piston_down_sticky_on", { }}, _mcl_blast_resistance = 2.5, _mcl_hardness = 0.5, - on_rotate = on_rotate, + on_rotate = false, }) -- pusher @@ -765,7 +797,7 @@ minetest.register_node("mesecons_pistons:piston_down_pusher_sticky", { node_box = piston_down_pusher_box, sounds = mcl_sounds.node_sound_wood_defaults(), _mcl_blast_resistance = 2.5, - on_rotate = on_rotate, + on_rotate = false, }) From 644187e204c9b4777a28f57e836eb2da7fb9e69d Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 9 Dec 2019 16:27:11 +0100 Subject: [PATCH 353/737] Add secondary screwdriver support for stairs --- mods/ITEMS/mcl_stairs/api.lua | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/mods/ITEMS/mcl_stairs/api.lua b/mods/ITEMS/mcl_stairs/api.lua index a6e6c659..b28d2d24 100644 --- a/mods/ITEMS/mcl_stairs/api.lua +++ b/mods/ITEMS/mcl_stairs/api.lua @@ -121,6 +121,31 @@ function mcl_stairs.register_stair(subname, recipeitem, groups, images, descript return place_stair(itemstack, placer, pointed_thing) end, + on_rotate = function(pos, node, user, mode, param2) + -- Flip stairs vertically + if mode == screwdriver.ROTATE_AXIS then + local minor = node.param2 + if node.param2 >= 20 then + minor = node.param2 - 20 + if minor == 3 then + minor = 1 + elseif minor == 1 then + minor = 3 + end + node.param2 = minor + else + if minor == 3 then + minor = 1 + elseif minor == 1 then + minor = 3 + end + node.param2 = minor + node.param2 = node.param2 + 20 + end + minetest.set_node(pos, node) + return false + end + end, _mcl_hardness = hardness, }) From d502ac3bec40472abb4013f2ef676d874ad00a43 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 9 Dec 2019 16:44:10 +0100 Subject: [PATCH 354/737] Add screwdriver support for itemframes --- mods/ITEMS/mcl_itemframes/init.lua | 40 +++++++++++++++++++++++------- 1 file changed, 31 insertions(+), 9 deletions(-) diff --git a/mods/ITEMS/mcl_itemframes/init.lua b/mods/ITEMS/mcl_itemframes/init.lua index e844e95d..2d5ec5c0 100644 --- a/mods/ITEMS/mcl_itemframes/init.lua +++ b/mods/ITEMS/mcl_itemframes/init.lua @@ -56,14 +56,17 @@ local remove_item_entity = function(pos, node) end end -local update_item_entity = function(pos, node) +local update_item_entity = function(pos, node, param2) remove_item_entity(pos, node) local meta = minetest.get_meta(pos) local inv = meta:get_inventory() local item = inv:get_stack("main", 1) if not item:is_empty() then + if not param2 then + param2 = node.param2 + end if node.name == "mcl_itemframes:item_frame" then - local posad = facedir[node.param2] + local posad = facedir[param2] pos.x = pos.x + posad.x*6.5/16 pos.y = pos.y + posad.y*6.5/16 pos.z = pos.z + posad.z*6.5/16 @@ -78,7 +81,7 @@ local update_item_entity = function(pos, node) end lua:_update_texture() if node.name == "mcl_itemframes:item_frame" then - local yaw = math.pi*2 - node.param2 * math.pi/2 + local yaw = math.pi*2 - param2 * math.pi/2 e:set_yaw(yaw) end end @@ -96,11 +99,6 @@ local drop_item = function(pos, node, meta) remove_item_entity(pos, node) end -local on_rotate -if minetest.get_modpath("screwdriver") then - on_rotate = screwdriver.disallow -end - minetest.register_node("mcl_itemframes:item_frame",{ description = S("Item Frame"), _doc_items_longdesc = S("Item frames are decorative blocks in which items can be placed."), @@ -189,7 +187,31 @@ minetest.register_node("mcl_itemframes:item_frame",{ local node = minetest.get_node(pos) drop_item(pos, node, meta) end, - on_rotate = on_rotate, + on_rotate = function(pos, node, user, mode, param2) + if mode == screwdriver.ROTATE_FACE then + -- Rotate face + local meta = minetest.get_meta(pos) + local node = minetest.get_node(pos) + + local objs = nil + if node.name == "mcl_itemframes:item_frame" then + objs = minetest.get_objects_inside_radius(pos, .5) + end + if objs then + for _, obj in ipairs(objs) do + if obj and obj:get_luaentity() and obj:get_luaentity().name == "mcl_itemframes:item" then + update_item_entity(pos, node, (node.param2+1) % 4) + break + end + end + end + return + elseif mode == screwdriver.ROTATE_AXIS then + -- Place screwdriver into itemframe + minetest.registered_nodes["mcl_itemframes:item_frame"].on_rightclick(pos, node, user, ItemStack("screwdriver:screwdriver")) + return false + end + end, }) minetest.register_craft({ From f218180eaad251bac6373965e900d0ca118b7585 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 9 Dec 2019 16:58:25 +0100 Subject: [PATCH 355/737] Disable rotation of torches and signs --- mods/ITEMS/mcl_signs/init.lua | 8 ++------ mods/ITEMS/mcl_torches/init.lua | 1 + 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/mods/ITEMS/mcl_signs/init.lua b/mods/ITEMS/mcl_signs/init.lua index 133c8dc6..a643bbf7 100644 --- a/mods/ITEMS/mcl_signs/init.lua +++ b/mods/ITEMS/mcl_signs/init.lua @@ -390,15 +390,11 @@ minetest.register_node("mcl_signs:wall_sign", { on_punch = function(pos, node, puncher) update_sign(pos) end, + on_rotate = false, _mcl_hardness = 1, _mcl_blast_resistance = 5, }) -local on_rotate -if minetest.get_modpath("screwdriver") then - on_rotate = screwdriver.disallow -end - -- Standing sign nodes. -- 4 rotations at 0°, 22.5°, 45° and 67.5°. -- These are 4 out of 16 possible rotations. @@ -424,8 +420,8 @@ local ssign = { on_punch = function(pos, node, puncher) update_sign(pos) end, + on_rotate = false, - on_rotate = on_rotate, _mcl_hardness = 1, _mcl_blast_resistance = 5, } diff --git a/mods/ITEMS/mcl_torches/init.lua b/mods/ITEMS/mcl_torches/init.lua index 24d61f9d..35cdf259 100644 --- a/mods/ITEMS/mcl_torches/init.lua +++ b/mods/ITEMS/mcl_torches/init.lua @@ -153,6 +153,7 @@ mcl_torches.register_torch = function(substring, description, doc_items_longdesc wall_side = {-0.5, -0.5, -0.1, -0.2, 0.1, 0.1}, }, sounds = sounds, + on_rotate = false, } if moredef ~= nil then for k,v in pairs(moredef) do From d25922b325e0a6ba13458cf33bf63cffee98caa8 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 9 Dec 2019 17:46:55 +0100 Subject: [PATCH 356/737] Implement sign rotation --- mods/ITEMS/mcl_signs/init.lua | 104 +++++++++++++++++++++++++++------- 1 file changed, 85 insertions(+), 19 deletions(-) diff --git a/mods/ITEMS/mcl_signs/init.lua b/mods/ITEMS/mcl_signs/init.lua index a643bbf7..168d1083 100644 --- a/mods/ITEMS/mcl_signs/init.lua +++ b/mods/ITEMS/mcl_signs/init.lua @@ -201,7 +201,7 @@ local destruct_sign = function(pos) end end -local update_sign = function(pos, fields, sender) +local update_sign = function(pos, fields, sender, force_remove) local meta = minetest.get_meta(pos) if not meta then return @@ -214,16 +214,7 @@ local update_sign = function(pos, fields, sender) if text == nil then text = "" end - local objects = minetest.get_objects_inside_radius(pos, 0.5) - for _, v in ipairs(objects) do - local ent = v:get_luaentity() - if ent and ent.name == "mcl_signs:text" then - v:set_properties({textures={generate_texture(create_lines(text), ent._signnodename)}}) - return - end - end - - -- if there is no entity + local sign_info local n = minetest.get_node(pos) local nn = n.name @@ -233,12 +224,30 @@ local update_sign = function(pos, fields, sender) sign_info = signtext_info_wall[get_wall_signtext_info(n.param2)] end if sign_info == nil then + minetest.log("error", "[mcl_signs] Missing sign_info!") return end - local text_entity = minetest.add_entity({ + + local objects = minetest.get_objects_inside_radius(pos, 0.5) + local text_entity + for _, v in ipairs(objects) do + local ent = v:get_luaentity() + if ent and ent.name == "mcl_signs:text" then + if force_remove then + v:remove() + else + text_entity = v + break + end + end + end + + if not text_entity then + text_entity = minetest.add_entity({ x = pos.x + sign_info.delta.x, y = pos.y + sign_info.delta.y, z = pos.z + sign_info.delta.z}, "mcl_signs:text") + end text_entity:get_luaentity()._signnodename = nn text_entity:set_properties({textures={generate_texture(create_lines(text), nn)}}) @@ -390,7 +399,17 @@ minetest.register_node("mcl_signs:wall_sign", { on_punch = function(pos, node, puncher) update_sign(pos) end, - on_rotate = false, + on_rotate = function(pos, node, user, mode) + if mode == screwdriver.ROTATE_FACE then + local r = screwdriver.rotate.wallmounted(pos, node, mode) + node.param2 = r + minetest.swap_node(pos, node) + update_sign(pos, nil, nil, true) + return true + else + return false + end + end, _mcl_hardness = 1, _mcl_blast_resistance = 5, }) @@ -420,27 +439,74 @@ local ssign = { on_punch = function(pos, node, puncher) update_sign(pos) end, - on_rotate = false, + on_rotate = function(pos, node, user, mode) + if mode == screwdriver.ROTATE_FACE then + node.name = "mcl_signs:standing_sign22_5" + minetest.swap_node(pos, node) + -- reverse rotation + elseif mode == screwdriver.ROTATE_AXIS then + node.name = "mcl_signs:standing_sign67_5" + node.param2 = (node.param2 - 1) % 4 + minetest.swap_node(pos, node) + end + update_sign(pos, nil, nil, true) + return true + end, _mcl_hardness = 1, _mcl_blast_resistance = 5, } --- 22.5° minetest.register_node("mcl_signs:standing_sign", ssign) + +-- 22.5° local ssign22_5 = table.copy(ssign) ssign22_5.mesh = "mcl_signs_sign22.5.obj" +ssign22_5.on_rotate = function(pos, node, user, mode) + if mode == screwdriver.ROTATE_FACE then + node.name = "mcl_signs:standing_sign45" + minetest.swap_node(pos, node) + elseif mode == screwdriver.ROTATE_AXIS then + node.name = "mcl_signs:standing_sign" + minetest.swap_node(pos, node) + end + update_sign(pos, nil, nil, true) + return true +end +minetest.register_node("mcl_signs:standing_sign22_5", ssign22_5) -- 45° -minetest.register_node("mcl_signs:standing_sign22_5", ssign22_5) local ssign45 = table.copy(ssign) ssign45.mesh = "mcl_signs_sign45.obj" +ssign45.on_rotate = function(pos, node, user, mode) + if mode == screwdriver.ROTATE_FACE then + node.name = "mcl_signs:standing_sign67_5" + minetest.swap_node(pos, node) + elseif mode == screwdriver.ROTATE_AXIS then + node.name = "mcl_signs:standing_sign22_5" + minetest.swap_node(pos, node) + end + update_sign(pos, nil, nil, true) + return true +end minetest.register_node("mcl_signs:standing_sign45", ssign45) -- 67.5° -local ssign67 = table.copy(ssign) -ssign67.mesh = "mcl_signs_sign67.5.obj" -minetest.register_node("mcl_signs:standing_sign67_5", ssign67) +local ssign67_5 = table.copy(ssign) +ssign67_5.mesh = "mcl_signs_sign67.5.obj" +ssign67_5.on_rotate = function(pos, node, user, mode) + if mode == screwdriver.ROTATE_FACE then + node.name = "mcl_signs:standing_sign" + node.param2 = (node.param2 + 1) % 4 + minetest.swap_node(pos, node) + elseif mode == screwdriver.ROTATE_AXIS then + node.name = "mcl_signs:standing_sign45" + minetest.swap_node(pos, node) + end + update_sign(pos, nil, nil, true) + return true +end +minetest.register_node("mcl_signs:standing_sign67_5", ssign67_5) -- FIXME: Prevent entity destruction by /clearobjects minetest.register_entity("mcl_signs:text", { From bbcab7275e6e7751b4f4aaf44f0c3ecdf9432bfc Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 9 Dec 2019 17:51:35 +0100 Subject: [PATCH 357/737] Make ladders rotatable --- mods/ITEMS/mcl_core/nodes_climb.lua | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_core/nodes_climb.lua b/mods/ITEMS/mcl_core/nodes_climb.lua index 2c71f677..9e372d4a 100644 --- a/mods/ITEMS/mcl_core/nodes_climb.lua +++ b/mods/ITEMS/mcl_core/nodes_climb.lua @@ -1,6 +1,16 @@ -- Climbable nodes local S = minetest.get_translator("mcl_core") +local rotate_climbable = function(pos, node, user, mode) + if mode == screwdriver.ROTATE_FACE then + local r = screwdriver.rotate.wallmounted(pos, node, mode) + node.param2 = r + minetest.swap_node(pos, node) + return true + end + return false +end + minetest.register_node("mcl_core:ladder", { description = S("Ladder"), _doc_items_longdesc = S("A piece of ladder which allows you to climb vertically. Ladders can only be placed on the side of solid blocks and not on glass, leaves, ice, slabs, glowstone, nor sea lanterns."), @@ -73,7 +83,7 @@ minetest.register_node("mcl_core:ladder", { _mcl_blast_resistance = 2, _mcl_hardness = 0.4, - on_rotate = function() return false end, + on_rotate = rotate_climbable, }) @@ -156,5 +166,5 @@ minetest.register_node("mcl_core:vine", { _mcl_blast_resistance = 1, _mcl_hardness = 0.2, - on_rotate = function() return false end, + on_rotate = false, }) From 643b1e79336eed128dcbc168158831f7ba4a0b9e Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 9 Dec 2019 18:27:30 +0100 Subject: [PATCH 358/737] Implement banner rotation with screwdriver --- mods/ITEMS/mcl_banners/init.lua | 58 ++++++++++++++++++++++++++------- 1 file changed, 47 insertions(+), 11 deletions(-) diff --git a/mods/ITEMS/mcl_banners/init.lua b/mods/ITEMS/mcl_banners/init.lua index fc871511..d10b6847 100644 --- a/mods/ITEMS/mcl_banners/init.lua +++ b/mods/ITEMS/mcl_banners/init.lua @@ -50,6 +50,10 @@ local layer_ratio = 255 local standing_banner_entity_offset = { x=0, y=-0.499, z=0 } local hanging_banner_entity_offset = { x=0, y=-1.7, z=0 } +local rotation_level_to_yaw = function(rotation_level) + return (rotation_level * (math.pi/8)) + math.pi +end + local on_dig_banner = function(pos, node, digger) -- Check protection local name = digger:get_player_name() @@ -151,7 +155,7 @@ local spawn_banner_entity = function(pos, hanging, itemstack) return banner end -local respawn_banner_entity = function(pos, node) +local respawn_banner_entity = function(pos, node, force) local hanging = node.name == "mcl_banners:hanging_banner" local offset if hanging then @@ -165,7 +169,11 @@ local respawn_banner_entity = function(pos, node) for _, v in ipairs(objects) do local ent = v:get_luaentity() if ent and (ent.name == "mcl_banners:standing_banner" or ent.name == "mcl_banners:hanging_banner") then - return + if force then + v:remove() + else + return + end end end -- Spawn new entity @@ -174,17 +182,11 @@ local respawn_banner_entity = function(pos, node) local banner_entity = spawn_banner_entity(bpos, hanging, banner_item) -- Set rotation - local final_yaw local rotation_level = meta:get_int("rotation_level") - final_yaw = (rotation_level * (math.pi/8)) + math.pi + local final_yaw = rotation_level_to_yaw(rotation_level) banner_entity:set_yaw(final_yaw) end -local on_rotate -if minetest.get_modpath("screwdriver") then - on_rotate = screwdriver.disallow -end - -- Banner nodes. -- These are an invisible nodes which are only used to destroy the banner entity. -- All the important banner information (such as color) is stored in the entity. @@ -229,6 +231,18 @@ S("You can copy the pattern of a banner by placing two banners of the same color end, _mcl_hardness = 1, _mcl_blast_resistance = 5, + on_rotate = function(pos, node, user, mode, param2) + if mode == screwdriver.ROTATE_FACE then + local meta = minetest.get_meta(pos) + local rot = meta:get_int("rotation_level") + rot = (rot - 1) % 16 + meta:set_int("rotation_level", rot) + respawn_banner_entity(pos, node, true) + return true + else + return false + end + end, }) -- Hanging banner node @@ -261,7 +275,29 @@ minetest.register_node("mcl_banners:hanging_banner", { end, _mcl_hardness = 1, _mcl_blast_resistance = 5, - on_rotate = on_rotate, + on_rotate = function(pos, node, user, mode, param2) + if mode == screwdriver.ROTATE_FACE then + local r = screwdriver.rotate.wallmounted(pos, node, mode) + node.param2 = r + minetest.swap_node(pos, node) + local meta = minetest.get_meta(pos) + local rot = 0 + if node.param2 == 2 then + rot = 12 + elseif node.param2 == 3 then + rot = 4 + elseif node.param2 == 4 then + rot = 0 + elseif node.param2 == 5 then + rot = 8 + end + meta:set_int("rotation_level", rot) + respawn_banner_entity(pos, node, true) + return true + else + return false + end + end, }) for colorid, colortab in pairs(mcl_banners.colors) do @@ -410,7 +446,7 @@ for colorid, colortab in pairs(mcl_banners.colors) do if rotation_level >= 16 then rotation_level = 0 end - final_yaw = (rotation_level * (math.pi/8)) + math.pi + final_yaw = rotation_level_to_yaw(rotation_level) end meta:set_int("rotation_level", rotation_level) From 2528463db6f5f075ddf738c3d7439c35fb1461ac Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 9 Dec 2019 18:28:31 +0100 Subject: [PATCH 359/737] Remove reverse sign rotation --- mods/ITEMS/mcl_signs/init.lua | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/mods/ITEMS/mcl_signs/init.lua b/mods/ITEMS/mcl_signs/init.lua index 168d1083..a4e6b3b1 100644 --- a/mods/ITEMS/mcl_signs/init.lua +++ b/mods/ITEMS/mcl_signs/init.lua @@ -443,11 +443,8 @@ local ssign = { if mode == screwdriver.ROTATE_FACE then node.name = "mcl_signs:standing_sign22_5" minetest.swap_node(pos, node) - -- reverse rotation elseif mode == screwdriver.ROTATE_AXIS then - node.name = "mcl_signs:standing_sign67_5" - node.param2 = (node.param2 - 1) % 4 - minetest.swap_node(pos, node) + return false end update_sign(pos, nil, nil, true) return true @@ -467,8 +464,7 @@ ssign22_5.on_rotate = function(pos, node, user, mode) node.name = "mcl_signs:standing_sign45" minetest.swap_node(pos, node) elseif mode == screwdriver.ROTATE_AXIS then - node.name = "mcl_signs:standing_sign" - minetest.swap_node(pos, node) + return false end update_sign(pos, nil, nil, true) return true @@ -483,8 +479,7 @@ ssign45.on_rotate = function(pos, node, user, mode) node.name = "mcl_signs:standing_sign67_5" minetest.swap_node(pos, node) elseif mode == screwdriver.ROTATE_AXIS then - node.name = "mcl_signs:standing_sign22_5" - minetest.swap_node(pos, node) + return false end update_sign(pos, nil, nil, true) return true @@ -500,8 +495,7 @@ ssign67_5.on_rotate = function(pos, node, user, mode) node.param2 = (node.param2 + 1) % 4 minetest.swap_node(pos, node) elseif mode == screwdriver.ROTATE_AXIS then - node.name = "mcl_signs:standing_sign45" - minetest.swap_node(pos, node) + return false end update_sign(pos, nil, nil, true) return true From 33ef45245ccd00b9d857714242418667630684d4 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 9 Dec 2019 18:30:19 +0100 Subject: [PATCH 360/737] Fix incorrect return value of piston on_rotate --- mods/ITEMS/REDSTONE/mesecons_pistons/init.lua | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/mods/ITEMS/REDSTONE/mesecons_pistons/init.lua b/mods/ITEMS/REDSTONE/mesecons_pistons/init.lua index 09309e5f..7c2feb7c 100644 --- a/mods/ITEMS/REDSTONE/mesecons_pistons/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons_pistons/init.lua @@ -175,13 +175,6 @@ local pistonspec_normal = { local usagehelp_piston = S("This block can have one of 6 possible orientations.") -local on_rotate -if minetest.get_modpath("screwdriver") then - on_rotate = function(pos, node, user, mode, new_param2) - return false - end -end - -- offstate minetest.register_node("mesecons_pistons:piston_normal_off", { description = S("Piston"), @@ -211,7 +204,7 @@ minetest.register_node("mesecons_pistons:piston_normal_off", { on_rotate = function(pos, node, user, mode) if mode == screwdriver.ROTATE_AXIS then minetest.set_node(pos, {name="mesecons_pistons:piston_up_normal_off"}) - return false + return true end end, }) @@ -312,7 +305,7 @@ minetest.register_node("mesecons_pistons:piston_sticky_off", { on_rotate = function(pos, node, user, mode) if mode == screwdriver.ROTATE_AXIS then minetest.set_node(pos, {name="mesecons_pistons:piston_up_sticky_off"}) - return false + return true end end, }) @@ -429,6 +422,7 @@ minetest.register_node("mesecons_pistons:piston_up_normal_off", { on_rotate = function(pos, node, user, mode) if mode == screwdriver.ROTATE_AXIS then minetest.set_node(pos, {name="mesecons_pistons:piston_down_normal_off"}) + return true end return false end, @@ -529,6 +523,7 @@ minetest.register_node("mesecons_pistons:piston_up_sticky_off", { on_rotate = function(pos, node, user, mode) if mode == screwdriver.ROTATE_AXIS then minetest.set_node(pos, {name="mesecons_pistons:piston_down_sticky_off"}) + return true end return false end, @@ -646,6 +641,7 @@ minetest.register_node("mesecons_pistons:piston_down_normal_off", { on_rotate = function(pos, node, user, mode) if mode == screwdriver.ROTATE_AXIS then minetest.set_node(pos, {name="mesecons_pistons:piston_normal_off"}) + return true end return false end, @@ -741,6 +737,7 @@ minetest.register_node("mesecons_pistons:piston_down_sticky_off", { on_rotate = function(pos, node, user, mode) if mode == screwdriver.ROTATE_AXIS then minetest.set_node(pos, {name="mesecons_pistons:piston_sticky_off"}) + return true end return false end, From ad13c71bf1f84ffbefbcc89e6649081be4aa6c0c Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 9 Dec 2019 18:49:59 +0100 Subject: [PATCH 361/737] Add partial rotation of levers --- .../REDSTONE/mesecons_walllever/init.lua | 28 +++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/REDSTONE/mesecons_walllever/init.lua b/mods/ITEMS/REDSTONE/mesecons_walllever/init.lua index 3c04f72a..035c32e0 100644 --- a/mods/ITEMS/REDSTONE/mesecons_walllever/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons_walllever/init.lua @@ -2,6 +2,30 @@ local S = minetest.get_translator("mesecons_wallever") local lever_get_output_rules = mesecon.rules.buttonlike_get +local on_rotate = function(pos, node, user, mode) + if mode == screwdriver.ROTATE_FACE then + if node.param2 == 10 then + node.param2 = 13 + minetest.swap_node(pos, node) + return true + elseif node.param2 == 13 then + node.param2 = 10 + minetest.swap_node(pos, node) + return true + elseif node.param2 == 8 then + node.param2 = 15 + minetest.swap_node(pos, node) + return true + elseif node.param2 == 15 then + node.param2 = 8 + minetest.swap_node(pos, node) + return true + end + end + -- TODO: Rotate axis + return false +end + -- LEVER minetest.register_node("mesecons_walllever:wall_lever_off", { drawtype = "mesh", @@ -102,7 +126,7 @@ minetest.register_node("mesecons_walllever:wall_lever_off", { rules = lever_get_output_rules, state = mesecon.state.off }}, - on_rotate = false, + on_rotate = on_rotate, _mcl_blast_resistance = 2.5, _mcl_hardness = 0.5, }) @@ -136,7 +160,7 @@ minetest.register_node("mesecons_walllever:wall_lever_on", { rules = lever_get_output_rules, state = mesecon.state.on }}, - on_rotate = false, + on_rotate = on_rotate, _mcl_blast_resistance = 2.5, _mcl_hardness = 0.5, }) From da47d7917cf30c8baa24be790a92072bccd3991d Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 9 Dec 2019 19:06:18 +0100 Subject: [PATCH 362/737] Disable rotation of corner stairs --- mods/ITEMS/mcl_stairs/cornerstair.lua | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mods/ITEMS/mcl_stairs/cornerstair.lua b/mods/ITEMS/mcl_stairs/cornerstair.lua index 33d52e98..2d5f214e 100644 --- a/mods/ITEMS/mcl_stairs/cornerstair.lua +++ b/mods/ITEMS/mcl_stairs/cornerstair.lua @@ -664,6 +664,7 @@ function mcl_stairs.cornerstair.add(name, stairtiles) stairs = {name, name.."_outer", name.."_inner"}, after_dig_node = function(pos, oldnode) after_dig_node(pos, oldnode) end, _mcl_hardness = node_def._mcl_hardness, + on_rotate = false, }) minetest.register_node(":"..name.."_inner", { description = node_def.description, @@ -687,6 +688,7 @@ function mcl_stairs.cornerstair.add(name, stairtiles) stairs = {name, name.."_outer", name.."_inner"}, after_dig_node = function(pos, oldnode) after_dig_node(pos, oldnode) end, _mcl_hardness = node_def._mcl_hardness, + on_rotate = false, }) if minetest.get_modpath("doc") then From 26ac17f1adeedfaf64c6f190060bc610ce1cd20e Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 9 Dec 2019 19:09:44 +0100 Subject: [PATCH 363/737] Can flip slabs with screwdriver --- mods/ITEMS/mcl_stairs/api.lua | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_stairs/api.lua b/mods/ITEMS/mcl_stairs/api.lua index b28d2d24..9f396473 100644 --- a/mods/ITEMS/mcl_stairs/api.lua +++ b/mods/ITEMS/mcl_stairs/api.lua @@ -143,7 +143,7 @@ function mcl_stairs.register_stair(subname, recipeitem, groups, images, descript node.param2 = node.param2 + 20 end minetest.set_node(pos, node) - return false + return true end end, _mcl_hardness = hardness, @@ -262,6 +262,15 @@ function mcl_stairs.register_slab(subname, recipeitem, groups, images, descripti end, _mcl_hardness = hardness, _mcl_other_slab_half = upper_slab, + on_rotate = function(pos, node, user, mode, param2) + -- Flip slab + if mode == screwdriver.ROTATE_AXIS then + node.name = upper_slab + minetest.set_node(pos, node) + return true + end + return false + end, } minetest.register_node(":"..lower_slab, slabdef) @@ -280,6 +289,15 @@ function mcl_stairs.register_slab(subname, recipeitem, groups, images, descripti topdef._doc_items_usagehelp = nil topdef.drop = lower_slab topdef._mcl_other_slab_half = lower_slab + topdef.on_rotate = function(pos, node, user, mode, param2) + -- Flip slab + if mode == screwdriver.ROTATE_AXIS then + node.name = lower_slab + minetest.set_node(pos, node) + return true + end + return false + end topdef.node_box = { type = "fixed", fixed = {-0.5, 0, -0.5, 0.5, 0.5, 0.5}, From 31fbe97e4ee8f1a604e2bc6403ee8ca8e654b8db Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 9 Dec 2019 19:28:08 +0100 Subject: [PATCH 364/737] Allow axis rotation of trapdoors --- mods/ITEMS/mcl_doors/api_trapdoors.lua | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_doors/api_trapdoors.lua b/mods/ITEMS/mcl_doors/api_trapdoors.lua index 9e69a552..dc507023 100644 --- a/mods/ITEMS/mcl_doors/api_trapdoors.lua +++ b/mods/ITEMS/mcl_doors/api_trapdoors.lua @@ -19,7 +19,31 @@ end local on_rotate if minetest.get_modpath("screwdriver") then - on_rotate = screwdriver.rotate_simple + on_rotate = function(pos, node, user, mode, param2) + -- Flip trapdoor vertically + if mode == screwdriver.ROTATE_AXIS then + local minor = node.param2 + if node.param2 >= 20 then + minor = node.param2 - 20 + if minor == 3 then + minor = 1 + elseif minor == 1 then + minor = 3 + end + node.param2 = minor + else + if minor == 3 then + minor = 1 + elseif minor == 1 then + minor = 3 + end + node.param2 = minor + node.param2 = node.param2 + 20 + end + minetest.set_node(pos, node) + return true + end + end end function mcl_doors:register_trapdoor(name, def) From 4e08e978f555ee15298936722ecf506e469f56ba Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 9 Dec 2019 19:41:10 +0100 Subject: [PATCH 365/737] Add screwdriver support for armor stand --- .../minetest-3d_armor/3d_armor_stand/init.lua | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor_stand/init.lua b/mods/ITEMS/minetest-3d_armor/3d_armor_stand/init.lua index c2282f2c..85c7c3de 100644 --- a/mods/ITEMS/minetest-3d_armor/3d_armor_stand/init.lua +++ b/mods/ITEMS/minetest-3d_armor/3d_armor_stand/init.lua @@ -83,11 +83,6 @@ local drop_armor = function(pos) end end -local on_rotate -if minetest.get_modpath("screwdriver") then - on_rotate = screwdriver.disallow -end - -- TODO: The armor stand should be an entity minetest.register_node("3d_armor_stand:armor_stand", { description = S("Armor Stand"), @@ -231,7 +226,15 @@ minetest.register_node("3d_armor_stand:armor_stand", { update_entity(pos) end, pos) end, - on_rotate = on_rotate, + on_rotate = function(pos, node, user, mode) + if mode == screwdriver.ROTATE_FACE then + node.param2 = (node.param2 + 1) % 4 + minetest.swap_node(pos, node) + update_entity(pos) + return true + end + return false + end, }) minetest.register_entity("3d_armor_stand:armor_entity", { From b71cf5e9c22c119d99b9cf11957f79375143201f Mon Sep 17 00:00:00 2001 From: ZedekThePD Date: Mon, 9 Dec 2019 20:44:55 +0100 Subject: [PATCH 366/737] Boost performance of chorus plant digging --- mods/ITEMS/mcl_end/chorus_plant.lua | 49 ++++++++++++++++++++--------- 1 file changed, 35 insertions(+), 14 deletions(-) diff --git a/mods/ITEMS/mcl_end/chorus_plant.lua b/mods/ITEMS/mcl_end/chorus_plant.lua index 4e1575c8..adbd872c 100644 --- a/mods/ITEMS/mcl_end/chorus_plant.lua +++ b/mods/ITEMS/mcl_end/chorus_plant.lua @@ -24,9 +24,21 @@ local function round(num, idp) return math.floor(num * mult + 0.5) / mult end +-- This is a list of nodes that SHOULD NOT call their detach function +local no_detach = {} + -- This detaches all chorus plants that are/were attached -- at start_pos. mcl_end.detach_chorus_plant = function(start_pos, digger) + -- This node should not call a detach function, do NOTHING + local hash = minetest.hash_node_position(start_pos) + if no_detach[hash] ~= nil then + return + end + + -- This node SHOULD be detached, make sure no others are + no_detach = {} + local neighbors = { { x=0, y=1, z=0 }, { x=0, y=0, z=1 }, @@ -52,33 +64,42 @@ mcl_end.detach_chorus_plant = function(start_pos, digger) local break_tree = true while #check_posses > 0 do local pos = check_posses[1] - local node = minetest.get_node(pos) - touched_nodes_hashes[minetest.hash_node_position(pos)] = true - if node.name == "mcl_end:end_stone" then - -- End stone found, the algorithm ends here (haha!) - -- without destroying any nodes, because chorus plants - -- attach to end stone. - break_tree = false - break - elseif minetest.get_item_group(node.name, "chorus_plant") == 1 then - table.insert(chorus_nodes, pos) - for i=1, #neighbors do - local newpos = vector.add(pos, neighbors[i]) - if not touched_nodes_hashes[minetest.hash_node_position(newpos)] then - table.insert(check_posses, vector.add(pos, neighbors[i])) + + -- Don't just count neighbors as being touched, count THIS NODE as well + -- This will prevent it from getting stuck in an endless loop + if not touched_nodes_hashes[minetest.hash_node_position(pos)] then + local node = minetest.get_node(pos) + touched_nodes_hashes[minetest.hash_node_position(pos)] = true + if node.name == "mcl_end:end_stone" then + -- End stone found, the algorithm ends here (haha!) + -- without destroying any nodes, because chorus plants + -- attach to end stone. + break_tree = false + break + elseif minetest.get_item_group(node.name, "chorus_plant") == 1 then + table.insert(chorus_nodes, pos) + for i=1, #neighbors do + local newpos = vector.add(pos, neighbors[i]) + if not touched_nodes_hashes[minetest.hash_node_position(newpos)] then + table.insert(check_posses, vector.add(pos, neighbors[i])) + end end end end + table.remove(check_posses, 1) end if break_tree then -- If we traversed the entire chorus plant and it was not attached to end stone: -- Drop ALL the chorus nodes we found. for c=1, #chorus_nodes do + no_detach[ minetest.hash_node_position(chorus_nodes[c]) ] = true minetest.node_dig(chorus_nodes[c], { name = "mcl_end:chorus_plant" }, digger) end end end + + no_detach = {} end mcl_end.check_detach_chorus_plant = function(pos, oldnode, oldmetadata, digger) From a1ab325920c818a083557a2ccc136438d89fb982 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 9 Dec 2019 21:06:08 +0100 Subject: [PATCH 367/737] Add on_blast support --- mods/ITEMS/mcl_tnt/init.lua | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/mods/ITEMS/mcl_tnt/init.lua b/mods/ITEMS/mcl_tnt/init.lua index 6fa0728f..342e0c58 100644 --- a/mods/ITEMS/mcl_tnt/init.lua +++ b/mods/ITEMS/mcl_tnt/init.lua @@ -221,14 +221,21 @@ tnt.boom = function(pos, info) -- TODO: Implement the real blast resistance algorithm if def and n.name ~= "air" and n.name ~= "ignore" and (def._mcl_blast_resistance == nil or def._mcl_blast_resistance < 1000) then activate_if_tnt(n.name, np, pos, 3) - minetest.remove_node(np) - core.check_for_falling(np) - if n.name ~= "mcl_tnt:tnt" and math.random() > 0.9 then - local drop = minetest.get_node_drops(n.name, "") - for _,item in ipairs(drop) do - if type(item) == "string" then - if math.random(1,100) > 40 then - local obj = minetest.add_item(np, item) + -- Custom blast function defined by node. + -- Node removal and drops must be handled manually. + if def.on_blast then + def.on_blast(np, 1.0) + -- Default destruction handling: Remove nodes, drop items + else + minetest.remove_node(np) + core.check_for_falling(np) + if n.name ~= "mcl_tnt:tnt" and math.random() > 0.9 then + local drop = minetest.get_node_drops(n.name, "") + for _,item in ipairs(drop) do + if type(item) == "string" then + if math.random(1,100) > 40 then + local obj = minetest.add_item(np, item) + end end end end From 28505885f283d6fed1251ffb1e4de7d4997dc99e Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 9 Dec 2019 21:06:17 +0100 Subject: [PATCH 368/737] Add on_blast handling to chorus plant --- mods/ITEMS/mcl_end/chorus_plant.lua | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_end/chorus_plant.lua b/mods/ITEMS/mcl_end/chorus_plant.lua index adbd872c..c6c22336 100644 --- a/mods/ITEMS/mcl_end/chorus_plant.lua +++ b/mods/ITEMS/mcl_end/chorus_plant.lua @@ -94,7 +94,11 @@ mcl_end.detach_chorus_plant = function(start_pos, digger) -- Drop ALL the chorus nodes we found. for c=1, #chorus_nodes do no_detach[ minetest.hash_node_position(chorus_nodes[c]) ] = true - minetest.node_dig(chorus_nodes[c], { name = "mcl_end:chorus_plant" }, digger) + if digger then + minetest.node_dig(chorus_nodes[c], { name = "mcl_end:chorus_plant" }, digger) + else + minetest.remove_node(chorus_nodes[c]) + end end end end @@ -106,6 +110,10 @@ mcl_end.check_detach_chorus_plant = function(pos, oldnode, oldmetadata, digger) mcl_end.detach_chorus_plant(pos, digger) end +mcl_end.check_blast_chorus_plant = function(pos) + mcl_end.detach_chorus_plant(pos) +end + minetest.register_node("mcl_end:chorus_flower", { description = S("Chorus Flower"), _doc_items_longdesc = S("A chorus flower is the living part of a chorus plant. It can grow into a tall chorus plant, step by step. When it grows, it may die on old age eventually. It also dies when it is unable to grow."), @@ -190,6 +198,7 @@ minetest.register_node("mcl_end:chorus_flower", { end end, after_dig_node = mcl_end.check_detach_chorus_plant, + on_blast = mcl_end.check_blast_chorus_plant, _mcl_blast_resistance = 2, _mcl_hardness = 0.4, }) @@ -214,6 +223,7 @@ minetest.register_node("mcl_end:chorus_flower_dead", { drop = "mcl_end:chorus_flower", groups = {handy=1,axey=1, deco_block = 1, dig_by_piston = 1, destroy_by_lava_flow = 1,chorus_plant = 1}, after_dig_node = mcl_end.check_detach_chorus_plant, + on_blast = mcl_end.check_blast_chorus_plant, _mcl_blast_resistance = 2, _mcl_hardness = 0.4, }) @@ -291,6 +301,7 @@ minetest.register_node("mcl_end:chorus_plant", { end end, after_dig_node = mcl_end.check_detach_chorus_plant, + on_blast = mcl_end.check_blast_chorus_plant, _mcl_blast_resistance = 2, _mcl_hardness = 0.4, }) From f04170d66bd1713b792c08ae821287a1c02a613e Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 9 Dec 2019 21:25:27 +0100 Subject: [PATCH 369/737] Piston heads no longer drop themselves --- mods/ITEMS/REDSTONE/mesecons_pistons/init.lua | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/mods/ITEMS/REDSTONE/mesecons_pistons/init.lua b/mods/ITEMS/REDSTONE/mesecons_pistons/init.lua index 65b1e9be..efe7ae38 100644 --- a/mods/ITEMS/REDSTONE/mesecons_pistons/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons_pistons/init.lua @@ -255,6 +255,7 @@ minetest.register_node("mesecons_pistons:piston_pusher_normal", { is_ground_content = false, after_destruct = piston_remove_base, diggable = false, + drop = "", corresponding_piston = "mesecons_pistons:piston_normal_on", selection_box = piston_pusher_box, node_box = piston_pusher_box, @@ -351,6 +352,7 @@ minetest.register_node("mesecons_pistons:piston_pusher_sticky", { is_ground_content = false, after_destruct = piston_remove_base, diggable = false, + drop = "", corresponding_piston = "mesecons_pistons:piston_sticky_on", selection_box = piston_pusher_box, node_box = piston_pusher_box, @@ -463,6 +465,7 @@ minetest.register_node("mesecons_pistons:piston_up_pusher_normal", { is_ground_content = false, after_destruct = piston_remove_base, diggable = false, + drop = "", corresponding_piston = "mesecons_pistons:piston_up_normal_on", selection_box = piston_up_pusher_box, node_box = piston_up_pusher_box, @@ -558,6 +561,7 @@ minetest.register_node("mesecons_pistons:piston_up_pusher_sticky", { is_ground_content = false, after_destruct = piston_remove_base, diggable = false, + drop = "", corresponding_piston = "mesecons_pistons:piston_up_sticky_on", selection_box = piston_up_pusher_box, node_box = piston_up_pusher_box, @@ -670,6 +674,7 @@ minetest.register_node("mesecons_pistons:piston_down_pusher_normal", { is_ground_content = false, after_destruct = piston_remove_base, diggable = false, + drop = "", corresponding_piston = "mesecons_pistons:piston_down_normal_on", selection_box = piston_down_pusher_box, node_box = piston_down_pusher_box, @@ -760,6 +765,7 @@ minetest.register_node("mesecons_pistons:piston_down_pusher_sticky", { is_ground_content = false, after_destruct = piston_remove_base, diggable = false, + drop = "", corresponding_piston = "mesecons_pistons:piston_down_sticky_on", selection_box = piston_down_pusher_box, node_box = piston_down_pusher_box, From 47f7b211903472c68b7026b26cb2496e8bb189ec Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 9 Dec 2019 22:02:35 +0100 Subject: [PATCH 370/737] Add missing translation for some redstone nodes --- mods/ITEMS/REDSTONE/mcl_comparators/init.lua | 16 +++++++++------- .../mcl_comparators/locale/mcl_comparators.de.tr | 3 +++ .../REDSTONE/mcl_comparators/locale/template.txt | 3 +++ mods/ITEMS/REDSTONE/mesecons_torch/init.lua | 4 ++-- .../mesecons_torch/locale/mesecons_torch.de.tr | 2 ++ .../REDSTONE/mesecons_torch/locale/template.txt | 2 ++ 6 files changed, 21 insertions(+), 9 deletions(-) diff --git a/mods/ITEMS/REDSTONE/mcl_comparators/init.lua b/mods/ITEMS/REDSTONE/mcl_comparators/init.lua index f85586b5..48bd18bf 100644 --- a/mods/ITEMS/REDSTONE/mcl_comparators/init.lua +++ b/mods/ITEMS/REDSTONE/mcl_comparators/init.lua @@ -287,16 +287,18 @@ for _, state in pairs{mesecon.state.on, mesecon.state.off} do nodedef.groups = table.copy(nodedef.groups) nodedef.groups.not_in_creative_inventory = 1 local extra_desc = {} - if mode == "sub" then - table.insert(extra_desc, "Subtract") + if mode == "sub" or state == mesecon.state.on then nodedef.inventory_image = nil end - if state == mesecon.state.on then - table.insert(extra_desc, "Powered") - nodedef.inventory_image = nil + local desc = nodedef.description + if mode ~= "sub" and state == mesecon.state.on then + desc = S("Redstone Comparator (Powered)") + elseif mode == "sub" and state ~= mesecon.state.on then + desc = S("Redstone Comparator (Subtract)") + elseif mode == "sub" and state == mesecon.state.on then + desc = S("Redstone Comparator (Subtract, Powered)") end - nodedef.description = nodedef.description.. - " ("..table.concat(extra_desc, ", ")..")" + nodedef.description = desc end minetest.register_node(nodename, nodedef) diff --git a/mods/ITEMS/REDSTONE/mcl_comparators/locale/mcl_comparators.de.tr b/mods/ITEMS/REDSTONE/mcl_comparators/locale/mcl_comparators.de.tr index dbbd51a2..d9f6eb46 100644 --- a/mods/ITEMS/REDSTONE/mcl_comparators/locale/mcl_comparators.de.tr +++ b/mods/ITEMS/REDSTONE/mcl_comparators/locale/mcl_comparators.de.tr @@ -7,3 +7,6 @@ The side inputs are only powered by normal redstone power. The redstone comparat Transmission mode:@nThe front torch is unlit and lowered. The output is powered if, and only if the main input is powered. The two side inputs are ignored.=Übertragungsmodus:@nDie vordere Fackel ist eingefahren und leuchtet nicht auf. Die Ausgabe gibt ein Signal, wenn, nur nur wenn der Haupteingang bestromt wird. Die zwei Seiteneingänge werden ignoriert. Subtraction mode:@nThe front torch is lit. The output is powered if, and only if the main input is powered and none of the side inputs is powered.=Subtraktionsmodus:@nDie vordere Fackel leuchtet auf. Die Ausgabe gibt ein Signal wenn, nur nur wenn der Haupteingang versorgt wird und keiner der Seiteneingänge bestromt ist. Redstone Comparator=Redstonekomparator +Redstone Comparator (Subtract)=Redstonekomparator (subtrahieren) +Redstone Comparator (Powered)=Redstonekomparator (bestromt) +Redstone Comparator (Subtract, Powered)=Redstonekomparator (subtrahieren, bestromt) diff --git a/mods/ITEMS/REDSTONE/mcl_comparators/locale/template.txt b/mods/ITEMS/REDSTONE/mcl_comparators/locale/template.txt index 0f7cb9ab..d22d0176 100644 --- a/mods/ITEMS/REDSTONE/mcl_comparators/locale/template.txt +++ b/mods/ITEMS/REDSTONE/mcl_comparators/locale/template.txt @@ -7,3 +7,6 @@ The side inputs are only powered by normal redstone power. The redstone comparat Transmission mode:@nThe front torch is unlit and lowered. The output is powered if, and only if the main input is powered. The two side inputs are ignored.= Subtraction mode:@nThe front torch is lit. The output is powered if, and only if the main input is powered and none of the side inputs is powered.= Redstone Comparator= +Redstone Comparator (Subtract)= +Redstone Comparator (Powered)= +Redstone Comparator (Subtract, Powered)= diff --git a/mods/ITEMS/REDSTONE/mesecons_torch/init.lua b/mods/ITEMS/REDSTONE/mesecons_torch/init.lua index dabc292e..81ca4cc4 100644 --- a/mods/ITEMS/REDSTONE/mesecons_torch/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons_torch/init.lua @@ -117,7 +117,7 @@ minetest.register_craft({ {"mcl_core:stick"},} }) -mcl_torches.register_torch("mesecon_torch_off", "Redstone Torch (off)", +mcl_torches.register_torch("mesecon_torch_off", S("Redstone Torch (off)"), nil, nil, "jeija_torches_off.png", @@ -143,7 +143,7 @@ mcl_torches.register_torch("mesecon_torch_off", "Redstone Torch (off)", } ) -mcl_torches.register_torch("mesecon_torch_overheated", "Redstone Torch (overheated)", +mcl_torches.register_torch("mesecon_torch_overheated", S("Redstone Torch (overheated)"), nil, nil, "jeija_torches_off.png", diff --git a/mods/ITEMS/REDSTONE/mesecons_torch/locale/mesecons_torch.de.tr b/mods/ITEMS/REDSTONE/mesecons_torch/locale/mesecons_torch.de.tr index 2166ccdd..c10fb7dc 100644 --- a/mods/ITEMS/REDSTONE/mesecons_torch/locale/mesecons_torch.de.tr +++ b/mods/ITEMS/REDSTONE/mesecons_torch/locale/mesecons_torch.de.tr @@ -1,5 +1,7 @@ # textdomain: mesecons_torch Redstone Torch=Redstonefackel +Redstone Torch (off)=Redstonefackel (aus) +Redstone Torch (overheated)=Redstonefackel (überhitzt) A redstone torch is a redstone component which can be used to invert a redstone signal. It supplies its surrounding blocks with redstone power, except for the block it is attached to. A redstone torch is normally lit, but it can also be turned off by powering the block it is attached to. While unlit, a redstone torch does not power anything.=Eine Redstonefackel ist eine Redstonekomponente, die benutzt werden kann, um ein Redstonesignal zu invertieren. Sie versorgt die benachbarten Blöcke mit Redstoneenergie, ausgenommen den Block, an dem sie befestigt wurde. Eine Redstonefackel leuchtet normalerweise, aber sie kann auch ausgeschaltet werden, indem der Block, an dem sie befestigt ist, bestromt wird. Wenn sie aus ist, wird sie nichts mit Redstoneenergie versorgen. Redstone torches can be placed at the side and on the top of full solid opaque blocks.=Redstonefackeln können an der Seite und auf der Oberseite der meisten undurchsichtigen ganzen Blöcke platziert werden. Block of Redstone=Redstoneblock diff --git a/mods/ITEMS/REDSTONE/mesecons_torch/locale/template.txt b/mods/ITEMS/REDSTONE/mesecons_torch/locale/template.txt index fb5ba71f..387462c9 100644 --- a/mods/ITEMS/REDSTONE/mesecons_torch/locale/template.txt +++ b/mods/ITEMS/REDSTONE/mesecons_torch/locale/template.txt @@ -1,5 +1,7 @@ # textdomain: mesecons_torch Redstone Torch= +Redstone Torch (off)= +Redstone Torch (overheated)= A redstone torch is a redstone component which can be used to invert a redstone signal. It supplies its surrounding blocks with redstone power, except for the block it is attached to. A redstone torch is normally lit, but it can also be turned off by powering the block it is attached to. While unlit, a redstone torch does not power anything.= Redstone torches can be placed at the side and on the top of full solid opaque blocks.= Block of Redstone= From e09a72ed592a02d0dac9d25c7a361df068113945 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 9 Dec 2019 22:32:40 +0100 Subject: [PATCH 371/737] Tweak item appearance of internal items --- mods/ITEMS/REDSTONE/mesecons_button/init.lua | 1 - mods/ITEMS/REDSTONE/mesecons_delayer/init.lua | 11 +++++++++-- .../mesecons_delayer/locale/mesecons_delayer.de.tr | 2 ++ .../REDSTONE/mesecons_delayer/locale/template.txt | 2 ++ mods/ITEMS/REDSTONE/mesecons_pressureplates/init.lua | 1 + mods/ITEMS/REDSTONE/mesecons_solarpanel/init.lua | 2 -- mods/ITEMS/REDSTONE/mesecons_walllever/init.lua | 2 -- mods/ITEMS/mcl_hoppers/init.lua | 1 + mods/ITEMS/xpanes/init.lua | 1 - 9 files changed, 15 insertions(+), 8 deletions(-) diff --git a/mods/ITEMS/REDSTONE/mesecons_button/init.lua b/mods/ITEMS/REDSTONE/mesecons_button/init.lua index 9f659983..b397be4b 100644 --- a/mods/ITEMS/REDSTONE/mesecons_button/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons_button/init.lua @@ -136,7 +136,6 @@ mesecon.register_button = function(basename, description, texture, recipeitem, s drawtype = "nodebox", tiles = {texture}, wield_image = "mesecons_button_wield_mask.png^"..texture.."^mesecons_button_wield_mask.png^[makealpha:255,126,126", - inventory_image = "mesecons_button_wield_mask.png^"..texture.."^mesecons_button_wield_mask.png^[makealpha:255,126,126", wield_scale = { x=1, y=1, z=0.5}, paramtype = "light", paramtype2 = "wallmounted", diff --git a/mods/ITEMS/REDSTONE/mesecons_delayer/init.lua b/mods/ITEMS/REDSTONE/mesecons_delayer/init.lua index 01bd1901..c91b36ac 100644 --- a/mods/ITEMS/REDSTONE/mesecons_delayer/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons_delayer/init.lua @@ -220,8 +220,15 @@ else help = false end +local desc_off +if i == 1 then + desc_off = S("Redstone Repeater") +else + desc_off = S("Redstone Repeater (Delay @1)", i) +end + minetest.register_node("mesecons_delayer:delayer_off_"..tostring(i), { - description = S("Redstone Repeater"), + description = desc_off, inventory_image = icon, wield_image = icon, _doc_items_create_entry = help, @@ -294,7 +301,7 @@ minetest.register_node("mesecons_delayer:delayer_off_"..tostring(i), { minetest.register_node("mesecons_delayer:delayer_on_"..tostring(i), { - description = S("Redstone Repeater (Powered)"), + description = S("Redstone Repeater (Delay @1, Powered)", i), _doc_items_create_entry = false, drawtype = "nodebox", tiles = { diff --git a/mods/ITEMS/REDSTONE/mesecons_delayer/locale/mesecons_delayer.de.tr b/mods/ITEMS/REDSTONE/mesecons_delayer/locale/mesecons_delayer.de.tr index db17d7f6..0d50d6e5 100644 --- a/mods/ITEMS/REDSTONE/mesecons_delayer/locale/mesecons_delayer.de.tr +++ b/mods/ITEMS/REDSTONE/mesecons_delayer/locale/mesecons_delayer.de.tr @@ -6,3 +6,5 @@ Redstone Repeater=Redstoneverstärker Redstone Repeater (Powered)=Redstoneverstärker (bestromt) Redstone Repeater (Locked)=Redstoneverstärker (gesperrt) Redstone Repeater (Locked, Powered)=Redstoneverstärker (gesperrt, bestromt) +Redstone Repeater (Delay @1)=Redstoneverstärker (Verzögerung @1) +Redstone Repeater (Delay @1, Powered)=Redstoneverstärker (Verzögerung @1, bestromt) diff --git a/mods/ITEMS/REDSTONE/mesecons_delayer/locale/template.txt b/mods/ITEMS/REDSTONE/mesecons_delayer/locale/template.txt index e694d70a..90460893 100644 --- a/mods/ITEMS/REDSTONE/mesecons_delayer/locale/template.txt +++ b/mods/ITEMS/REDSTONE/mesecons_delayer/locale/template.txt @@ -6,3 +6,5 @@ Redstone Repeater= Redstone Repeater (Powered)= Redstone Repeater (Locked)= Redstone Repeater (Locked, Powered)= +Redstone Repeater (Delay @1)= +Redstone Repeater (Delay @1, Powered)= diff --git a/mods/ITEMS/REDSTONE/mesecons_pressureplates/init.lua b/mods/ITEMS/REDSTONE/mesecons_pressureplates/init.lua index 6148c700..c56b3f78 100644 --- a/mods/ITEMS/REDSTONE/mesecons_pressureplates/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons_pressureplates/init.lua @@ -130,6 +130,7 @@ function mesecon.register_pressure_plate(basename, description, textures_off, te selection_box = pp_box_on, groups = groups_on, tiles = textures_on, + description = "", mesecons = {receptor = { state = mesecon.state.on, rules = mesecon.rules.pplate }}, _doc_items_create_entry = false, diff --git a/mods/ITEMS/REDSTONE/mesecons_solarpanel/init.lua b/mods/ITEMS/REDSTONE/mesecons_solarpanel/init.lua index 0ea8ba63..3571688f 100644 --- a/mods/ITEMS/REDSTONE/mesecons_solarpanel/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons_solarpanel/init.lua @@ -20,7 +20,6 @@ minetest.register_node("mesecons_solarpanel:solar_panel_on", { fixed = boxes }, drop = "mesecons_solarpanel:solar_panel_off", - description=S("Daylight Sensor"), _doc_items_create_entry = false, groups = {handy=1,axey=1, not_in_creative_inventory = 1, material_wood=1}, sounds = mcl_sounds.node_sound_glass_defaults(), @@ -139,7 +138,6 @@ minetest.register_node("mesecons_solarpanel:solar_panel_inverted_on", { }, drop = "mesecons_solarpanel:solar_panel_off", groups = {handy=1,axey=1, not_in_creative_inventory = 1, material_wood=1}, - description=S("Inverted Daylight Sensor"), _doc_items_create_entry = false, sounds = mcl_sounds.node_sound_glass_defaults(), mesecons = {receptor = { diff --git a/mods/ITEMS/REDSTONE/mesecons_walllever/init.lua b/mods/ITEMS/REDSTONE/mesecons_walllever/init.lua index 3c04f72a..41de711e 100644 --- a/mods/ITEMS/REDSTONE/mesecons_walllever/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons_walllever/init.lua @@ -111,7 +111,6 @@ minetest.register_node("mesecons_walllever:wall_lever_on", { tiles = { "jeija_wall_lever_lever_light_on.png", }, - inventory_image = "jeija_wall_lever.png", paramtype = "light", paramtype2 = "facedir", mesh = "jeija_wall_lever_on.obj", @@ -124,7 +123,6 @@ minetest.register_node("mesecons_walllever:wall_lever_on", { groups = {handy=1, not_in_creative_inventory = 1, dig_by_water=1, destroy_by_lava_flow=1, dig_by_piston=1, attached_node_facedir=1}, is_ground_content = false, drop = '"mesecons_walllever:wall_lever_off" 1', - description=S("Lever"), _doc_items_create_entry = false, on_rightclick = function (pos, node) minetest.swap_node(pos, {name="mesecons_walllever:wall_lever_off", param2=node.param2}) diff --git a/mods/ITEMS/mcl_hoppers/init.lua b/mods/ITEMS/mcl_hoppers/init.lua index 39f5f3e5..964e94f2 100644 --- a/mods/ITEMS/mcl_hoppers/init.lua +++ b/mods/ITEMS/mcl_hoppers/init.lua @@ -183,6 +183,7 @@ minetest.register_node("mcl_hoppers:hopper", def_hopper_enabled) -- Disabled downwards hopper local def_hopper_disabled = table.copy(def_hopper) def_hopper_disabled.description = S("Disabled Hopper") +def_hopper_disabled.inventory_image = nil def_hopper_disabled._doc_items_create_entry = false def_hopper_disabled.groups.not_in_creative_inventory = 1 def_hopper_disabled.drop = "mcl_hoppers:hopper" diff --git a/mods/ITEMS/xpanes/init.lua b/mods/ITEMS/xpanes/init.lua index 42dbb807..6f8ff22b 100644 --- a/mods/ITEMS/xpanes/init.lua +++ b/mods/ITEMS/xpanes/init.lua @@ -137,7 +137,6 @@ function xpanes.register_pane(name, def) paramtype = "light", is_ground_content = false, sunlight_propagates = true, - description = def.description, _doc_items_create_entry = false, tiles = {def.textures[3], def.textures[2], def.textures[1]}, use_texture_alpha = def.use_texture_alpha, From e85c999e4c6f8bb0816ed619d010ba123e4e2ade Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 9 Dec 2019 22:34:56 +0100 Subject: [PATCH 372/737] Fix typo in mcl_banners mod --- mods/ITEMS/mcl_banners/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_banners/init.lua b/mods/ITEMS/mcl_banners/init.lua index fc871511..64637ea9 100644 --- a/mods/ITEMS/mcl_banners/init.lua +++ b/mods/ITEMS/mcl_banners/init.lua @@ -63,7 +63,7 @@ local on_dig_banner = function(pos, node, digger) if not item:is_empty() then minetest.handle_node_drops(pos, {item:to_string()}, digger) else - minetest.handle_node_drops(pos, {"mcl_bannes:banner_item_white"}, digger) + minetest.handle_node_drops(pos, {"mcl_banners:banner_item_white"}, digger) end -- Remove node minetest.remove_node(pos) From 046f9ab223fa6eb407ff92687b36c38588599b9f Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 10 Dec 2019 00:16:09 +0100 Subject: [PATCH 373/737] Make blaze attacks a bit better --- mods/ENTITIES/mobs_mc/blaze.lua | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mods/ENTITIES/mobs_mc/blaze.lua b/mods/ENTITIES/mobs_mc/blaze.lua index 400a5339..b7a29ecc 100644 --- a/mods/ENTITIES/mobs_mc/blaze.lua +++ b/mods/ENTITIES/mobs_mc/blaze.lua @@ -61,6 +61,7 @@ mobs:register_mob("mobs_mc:blaze", { attack_type = "dogshoot", arrow = "mobs_mc:blaze_fireball", shoot_interval = 3.5, + shoot_offset = 1.0, passive = false, jump = true, jump_height = 4, @@ -77,7 +78,7 @@ mobs:register_arrow("mobs_mc:blaze_fireball", { visual = "sprite", visual_size = {x = 0.3, y = 0.3}, textures = {"mcl_fire_fire_charge.png"}, - velocity = 12, + velocity = 15, -- Direct hit, no fire... just plenty of pain hit_player = function(self, player) From 2ff5bafd9151f12cd1f9db2c0b0a38425a74c6dc Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 10 Dec 2019 01:01:04 +0100 Subject: [PATCH 374/737] Refactor mob projectiles --- mods/ENTITIES/mobs_mc/creeper.lua | 2 +- mods/ENTITIES/mobs_mc/ender_dragon.lua | 70 +++----------------------- mods/ENTITIES/mobs_mc/ghast.lua | 25 +++++---- mods/ENTITIES/mobs_mc/witch.lua | 6 +-- mods/ENTITIES/mobs_mc/wither.lua | 68 ++++--------------------- mods/HUD/mcl_death_messages/init.lua | 2 +- 6 files changed, 34 insertions(+), 139 deletions(-) diff --git a/mods/ENTITIES/mobs_mc/creeper.lua b/mods/ENTITIES/mobs_mc/creeper.lua index 07750ff2..b1c31054 100644 --- a/mods/ENTITIES/mobs_mc/creeper.lua +++ b/mods/ENTITIES/mobs_mc/creeper.lua @@ -69,7 +69,7 @@ mobs:register_mob("mobs_mc:creeper", { if self._forced_explosion_countdown_timer ~= nil then self._forced_explosion_countdown_timer = self._forced_explosion_countdown_timer - dtime if self._forced_explosion_countdown_timer <= 0 then - mobs:explosion(self.object:get_pos(), self.explosion_radius, 0, 1, self.sounds.explode) + mobs:boom(self, self.object:get_pos(), self.explosion_radius) self.object:remove() end end diff --git a/mods/ENTITIES/mobs_mc/ender_dragon.lua b/mods/ENTITIES/mobs_mc/ender_dragon.lua index ccd2fe30..fd8652da 100644 --- a/mods/ENTITIES/mobs_mc/ender_dragon.lua +++ b/mods/ENTITIES/mobs_mc/ender_dragon.lua @@ -51,9 +51,9 @@ mobs:register_mob("mobs_mc:enderdragon", { fire_damage = 0, on_rightclick = nil, attack_type = "dogshoot", - arrow = "mobs_mc:fireball2", + arrow = "mobs_mc:dragon_fireball", shoot_interval = 0.5, - shoot_offset = -1, + shoot_offset = -1.0, animation = { fly_speed = 8, stand_speed = 8, stand_start = 0, stand_end = 20, @@ -67,69 +67,19 @@ mobs:register_mob("mobs_mc:enderdragon", { local mobs_griefing = minetest.settings:get_bool("mobs_griefing") ~= false -mobs:register_arrow("mobs_mc:roar_of_the_dragon2", { +-- dragon fireball (projectile) +mobs:register_arrow("mobs_mc:dragon_fireball", { visual = "sprite", - visual_size = {x = 1, y = 1}, - --textures = {"transparent.png"}, - textures = {"mese_egg.png"}, - velocity = 10, - - on_step = function(self, dtime) - - local pos = self.object:get_pos() - - local n = minetest.get_node(pos).name - - if self.timer == 0 then - self.timer = os.time() - end - - if os.time() - self.timer > 8 or minetest.is_protected(pos, "") then - self.object:remove() - end - - local objects = minetest.get_objects_inside_radius(pos, 1) - for _,obj in ipairs(objects) do - local name = self.name - if name~="mobs_mc:roar_of_the_dragon2" and name ~= "mobs_mc:enderdragon" then - obj:set_hp(obj:get_hp()-5) - if (obj:get_hp() <= 0) then - if (not obj:is_player()) and name ~= self.object:get_luaentity().name then - obj:remove() - end - end - end - end - - if mobs_griefing then - minetest.set_node(pos, {name="air"}) - if math.random(1,2)==1 then - local dx = math.random(-1,1) - local dy = math.random(-1,1) - local dz = math.random(-1,1) - local p = {x=pos.x+dx, y=pos.y+dy, z=pos.z+dz} - minetest.set_node(p, {name="air"}) - end - end - end -}) ---GOOD LUCK LOL! --- fireball (weapon) -mobs:register_arrow(":mobs_mc:fireball2", { - visual = "sprite", - visual_size = {x = 1.5, y = 1.5}, + visual_size = {x = 1.25, y = 1.25}, textures = {"mobs_mc_dragon_fireball.png"}, - --textures = {"mobs_skeleton2_front.png^[makealpha:255,255,255 "}, velocity = 6, -- direct hit, no fire... just plenty of pain hit_player = function(self, player) - minetest.sound_play("tnt_explode", {pos = player:get_pos(), gain = 1.5, max_hear_distance = 2*64}) player:punch(self.object, 1.0, { full_punch_interval = 0.5, - damage_groups = {fleshy = 6}, + damage_groups = {fleshy = 12}, }, nil) - end, hit_mob = function(self, mob) @@ -138,15 +88,11 @@ mobs:register_arrow(":mobs_mc:fireball2", { full_punch_interval = 0.5, damage_groups = {fleshy = 12}, }, nil) - end, - -- node hit, bursts into flame + -- node hit, explode hit_node = function(self, pos, node) - mobs:explosion(pos, 3, 0, 1) - --from tnt - minetest.sound_play("tnt_explode", {pos = pos, gain = 1.5, max_hear_distance = 2*64}) - + mobs:boom(self, pos, 2) end }) diff --git a/mods/ENTITIES/mobs_mc/ghast.lua b/mods/ENTITIES/mobs_mc/ghast.lua index fe14e0e6..1e8c3903 100644 --- a/mods/ENTITIES/mobs_mc/ghast.lua +++ b/mods/ENTITIES/mobs_mc/ghast.lua @@ -55,13 +55,10 @@ mobs:register_mob("mobs_mc:ghast", { }, fall_damage = 0, view_range = 100, - --attack_type = "dogshoot", attack_type = "dogshoot", - arrow = "mobs_monster:fireball", + arrow = "mobs_mc:fireball", shoot_interval = 3.5, - shoot_offset = 1, - --'dogshoot_switch' allows switching between shoot and dogfight modes inside dogshoot using timer (1 = shoot, 2 = dogfight) - --'dogshoot_count_max' number of seconds before switching above modes. + shoot_offset = -5, dogshoot_switch = 1, dogshoot_count_max =1, passive = false, @@ -76,31 +73,33 @@ mobs:register_mob("mobs_mc:ghast", { mobs:spawn_specific("mobs_mc:ghast", mobs_mc.spawn.nether, {"air"}, 0, minetest.LIGHT_MAX+1, 30, 18000, 2, mobs_mc.spawn_height.nether_min, mobs_mc.spawn_height.nether_max) --- fireball (weapon) -mobs:register_arrow(":mobs_monster:fireball", { +-- fireball (projectile) +mobs:register_arrow("mobs_mc:fireball", { visual = "sprite", - visual_size = {x = 0.5, y = 0.5}, + visual_size = {x = 1, y = 1}, textures = {"mcl_fire_fire_charge.png"}, - velocity = 6, + velocity = 15, -- direct hit, no fire... just plenty of pain hit_player = function(self, player) player:punch(self.object, 1.0, { full_punch_interval = 1.0, - damage_groups = {fleshy = 8}, + damage_groups = {fleshy = 6}, }, nil) + mobs:boom(self, self.object:get_pos(), 3) end, hit_mob = function(self, mob) mob:punch(self.object, 1.0, { full_punch_interval = 1.0, - damage_groups = {fleshy = 8}, + damage_groups = {fleshy = 6}, }, nil) + mobs:boom(self, self.object:get_pos(), 3) end, - -- node hit, bursts into flame + -- node hit, explode hit_node = function(self, pos, node) - mobs:explosion(pos, 1, 1, 0) + mobs:boom(self, pos, 3) end }) diff --git a/mods/ENTITIES/mobs_mc/witch.lua b/mods/ENTITIES/mobs_mc/witch.lua index db183e67..ed3b81a6 100644 --- a/mods/ENTITIES/mobs_mc/witch.lua +++ b/mods/ENTITIES/mobs_mc/witch.lua @@ -31,7 +31,7 @@ mobs:register_mob("mobs_mc:witch", { pathfinding = 1, group_attack = true, attack_type = "dogshoot", - arrow = "mobs:potion_arrow", + arrow = "mobs_mc:potion_arrow", shoot_interval = 2.5, shoot_offset = 1, dogshoot_switch = 1, @@ -68,8 +68,8 @@ mobs:register_mob("mobs_mc:witch", { }) --- fireball (weapon) -mobs:register_arrow(":mobs:potion_arrow", { +-- potion projectile (EXPERIMENTAL) +mobs:register_arrow("mobs_mc:potion_arrow", { visual = "sprite", visual_size = {x = 0.5, y = 0.5}, --textures = {"vessels_glass_bottle.png"}, --TODO fix to else if default diff --git a/mods/ENTITIES/mobs_mc/wither.lua b/mods/ENTITIES/mobs_mc/wither.lua index 871496d0..6557c288 100644 --- a/mods/ENTITIES/mobs_mc/wither.lua +++ b/mods/ENTITIES/mobs_mc/wither.lua @@ -53,7 +53,7 @@ mobs:register_mob("mobs_mc:wither", { explosion_radius = 3, explosion_fire = false, dogshoot_stop = true, - arrow = "mobs_mc:fireball", + arrow = "mobs_mc:wither_skull", reach = 5, shoot_interval = 0.5, shoot_offset = -1, @@ -67,87 +67,37 @@ mobs:register_mob("mobs_mc:wither", { local mobs_griefing = minetest.settings:get_bool("mobs_griefing") ~= false -mobs:register_arrow("mobs_mc:roar_of_the_dragon", { - visual = "sprite", - visual_size = {x = 1, y = 1}, - textures = {"blank.png"}, - velocity = 10, - - on_step = function(self, dtime) - - local pos = self.object:get_pos() - - local n = minetest.get_node(pos).name - - if self.timer == 0 then - self.timer = os.time() - end - - if os.time() - self.timer > 8 or minetest.is_protected(pos, "") then - self.object:remove() - end - - local objects = minetest.get_objects_inside_radius(pos, 1) - for _,obj in ipairs(objects) do - local name = self.name - if name~="mobs_mc:roar_of_the_dragon" and name ~= "mobs_mc:wither" then - obj:set_hp(obj:get_hp()-5) - if (obj:get_hp() <= 0) then - if (not obj:is_player()) and name ~= self.object:get_luaentity().name then - obj:remove() - end - end - end - end - - if mobs_griefing then - minetest.set_node(pos, {name="air"}) - if math.random(1,2)==1 then - local dx = math.random(-1,1) - local dy = math.random(-1,1) - local dz = math.random(-1,1) - local p = {x=pos.x+dx, y=pos.y+dy, z=pos.z+dz} - minetest.set_node(p, {name="air"}) - end - end - end -}) ---GOOD LUCK LOL! --- fireball (weapon) -mobs:register_arrow(":mobs_mc:fireball", { +mobs:register_arrow("mobs_mc:wither_skull", { visual = "sprite", visual_size = {x = 0.75, y = 0.75}, -- TODO: 3D projectile, replace tetxture textures = {"mobs_mc_TEMP_wither_projectile.png"}, velocity = 6, - -- direct hit, no fire... just plenty of pain + -- direct hit hit_player = function(self, player) - minetest.sound_play("tnt_explode", {pos = player:get_pos(), gain = 1.5, max_hear_distance = 16}) player:punch(self.object, 1.0, { full_punch_interval = 0.5, damage_groups = {fleshy = 8}, }, nil) - + mobs:boom(self, self.object:get_pos(), 1) end, hit_mob = function(self, mob) - minetest.sound_play("tnt_explode", {pos = mob:get_pos(), gain = 1.5,max_hear_distance = 16}) mob:punch(self.object, 1.0, { full_punch_interval = 0.5, damage_groups = {fleshy = 8}, }, nil) - + mobs:boom(self, self.object:get_pos(), 1) end, - -- node hit, bursts into flame + -- node hit, explode hit_node = function(self, pos, node) - -- FIXME: Deprecated, switch to mobs:boom instead - mobs:explosion(pos, 3, 0, 1) + mobs:boom(self, pos, 1) end }) +-- TODO: Add blue wither skull + --Spawn egg mobs:register_egg("mobs_mc:wither", S("Wither"), "mobs_mc_spawn_icon_wither.png", 0) ---Compatibility -mobs:alias_mob("nssm:mese_dragon", "mobs_mc:wither") diff --git a/mods/HUD/mcl_death_messages/init.lua b/mods/HUD/mcl_death_messages/init.lua index b212e36d..ce87118d 100644 --- a/mods/HUD/mcl_death_messages/init.lua +++ b/mods/HUD/mcl_death_messages/init.lua @@ -68,7 +68,7 @@ local mobkills = { ["mobs_mc:wolf"] = N("@1 was killed by a wolf."), ["mobs_mc:cat"] = N("@1 was killed by a cat."), ["mobs_mc:ocelot"] = N("@1 was killed by an ocelot."), - ["mobs_mc:ender_dragon"] = N("@1 was killed by an ender dragon."), + ["mobs_mc:enderdragon"] = N("@1 was killed by an ender dragon."), ["mobs_mc:wither"] = N("@1 was killed by a wither."), ["mobs_mc:enderman"] = N("@1 was killed by an enderman."), ["mobs_mc:endermite"] = N("@1 was killed by an endermite."), From 0d3b8e11c3b7d073166cca0dc1fd42cf5b64ce90 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Wed, 11 Dec 2019 00:46:55 +0100 Subject: [PATCH 375/737] Hide WIP mobs in creative inventory --- mods/ENTITIES/mobs_mc/ender_dragon.lua | 2 +- mods/ENTITIES/mobs_mc/parrot.lua | 2 +- mods/ENTITIES/mobs_mc/witch.lua | 2 +- mods/ENTITIES/mobs_mc/wither.lua | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/mods/ENTITIES/mobs_mc/ender_dragon.lua b/mods/ENTITIES/mobs_mc/ender_dragon.lua index ccd2fe30..10a82ce3 100644 --- a/mods/ENTITIES/mobs_mc/ender_dragon.lua +++ b/mods/ENTITIES/mobs_mc/ender_dragon.lua @@ -150,4 +150,4 @@ mobs:register_arrow(":mobs_mc:fireball2", { end }) -mobs:register_egg("mobs_mc:enderdragon", S("Ender Dragon"), "mobs_mc_spawn_icon_dragon.png", 0) +mobs:register_egg("mobs_mc:enderdragon", S("Ender Dragon"), "mobs_mc_spawn_icon_dragon.png", 0, true) diff --git a/mods/ENTITIES/mobs_mc/parrot.lua b/mods/ENTITIES/mobs_mc/parrot.lua index 9474c2b7..ab798842 100644 --- a/mods/ENTITIES/mobs_mc/parrot.lua +++ b/mods/ENTITIES/mobs_mc/parrot.lua @@ -85,7 +85,7 @@ mobs:register_mob("mobs_mc:parrot", { --mobs:spawn_specific("mobs_mc:parrot", mobs_mc.spawn.jungle, {"air"}, 0, minetest.LIGHT_MAX+1, 30, 30000, 1, mobs_mc.spawn_height.water+1, mobs_mc.spawn_height.overworld_max) -- spawn eggs -mobs:register_egg("mobs_mc:parrot", S("Parrot"), "mobs_mc_spawn_icon_parrot.png", 0) +mobs:register_egg("mobs_mc:parrot", S("Parrot"), "mobs_mc_spawn_icon_parrot.png", 0, true) if minetest.settings:get_bool("log_mods") then minetest.log("action", "MC Parrot loaded") diff --git a/mods/ENTITIES/mobs_mc/witch.lua b/mods/ENTITIES/mobs_mc/witch.lua index db183e67..be7fda08 100644 --- a/mods/ENTITIES/mobs_mc/witch.lua +++ b/mods/ENTITIES/mobs_mc/witch.lua @@ -101,7 +101,7 @@ mobs:register_arrow(":mobs:potion_arrow", { --mobs:spawn_specific("mobs_mc:witch", mobs_mc.spawn.jungle, {"air"}, 0, minetest.LIGHT_MAX-6, 12, 20000, 2, mobs_mc.spawn_height.water-6, mobs_mc.spawn_height.overworld_max) -- spawn eggs -mobs:register_egg("mobs_mc:witch", S("Witch"), "mobs_mc_spawn_icon_witch.png", 0) +mobs:register_egg("mobs_mc:witch", S("Witch"), "mobs_mc_spawn_icon_witch.png", 0, true) if minetest.settings:get_bool("log_mods") then minetest.log("action", "MC mobs loaded") diff --git a/mods/ENTITIES/mobs_mc/wither.lua b/mods/ENTITIES/mobs_mc/wither.lua index 871496d0..31fa0ada 100644 --- a/mods/ENTITIES/mobs_mc/wither.lua +++ b/mods/ENTITIES/mobs_mc/wither.lua @@ -147,7 +147,7 @@ mobs:register_arrow(":mobs_mc:fireball", { end }) --Spawn egg -mobs:register_egg("mobs_mc:wither", S("Wither"), "mobs_mc_spawn_icon_wither.png", 0) +mobs:register_egg("mobs_mc:wither", S("Wither"), "mobs_mc_spawn_icon_wither.png", 0, true) --Compatibility mobs:alias_mob("nssm:mese_dragon", "mobs_mc:wither") From a177d3cbbae17f8bfb3d39a34e88ea02b1350636 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Wed, 11 Dec 2019 02:02:16 +0100 Subject: [PATCH 376/737] More saturated grass color --- mods/ITEMS/mcl_core/textures/default_grass.png | Bin 428 -> 428 bytes .../mcl_core/textures/default_grass_side.png | Bin 306 -> 423 bytes .../textures/mcl_core_palette_grass.png | Bin 93 -> 138 bytes .../mcl_flowers_double_plant_fern_inv.png | Bin 178 -> 429 bytes .../mcl_flowers_double_plant_grass_inv.png | Bin 166 -> 421 bytes .../textures/mcl_flowers_fern_inv.png | Bin 202 -> 454 bytes .../textures/mcl_flowers_tallgrass_inv.png | Bin 196 -> 447 bytes 7 files changed, 0 insertions(+), 0 deletions(-) diff --git a/mods/ITEMS/mcl_core/textures/default_grass.png b/mods/ITEMS/mcl_core/textures/default_grass.png index 56176e5ee73cfa906cbd7c0155f3fb9241849247..dd57bb1ce169daf7c0464f2cb9fcab335b7d5f6f 100644 GIT binary patch delta 96 zcmZ3(yoPx~s<5`dhE9xuezuvKyVC#v|4-f8`)Oi@HrHbwZUzmhcc=cvOkCR{WvOdm xq-$UvVq|D#Xk=wKdAa7#Ug_8(0~bXd4(>85oF1r*cj9W>gR~wKA}@GO^G$FtRc*U@}Ounq0$Z000vA B976yA diff --git a/mods/ITEMS/mcl_core/textures/default_grass_side.png b/mods/ITEMS/mcl_core/textures/default_grass_side.png index a44b9788f982748a830d7f5ff105e19f296e588d..d3db928d371940a541344c99c38fb6653a7ddb94 100644 GIT binary patch literal 423 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd7G?$phPQVgfdp969eo`c7&i8E|4C$JU|>*4 z_6YK2V5m}KU}$JzVEDzrz|io5fuYoZf#FpG1B2BJ1_tqhIlBUF7#J8t1AIbU85kIJ zVhr@N&9wbBOe$?u?B)Oe|G&03y@i2+fw3gWFPOpM*^M+1C&}C0g)K2{M=b*b180Fp zWHAE+-vJP2%(~Xe$-uzCUgGKN%Kn&#n?XbB-Kl>u3=9mOo-U3d9M{(#j23NB5MVvv z%_7FTL7b_gfcwPb_=*1_ukf8auzJs4rAvK6s!hw5N|tX}#qzlI%FNPh4Qut4d#5to zx%b84L^zswJ)wB`Jv|saDBFsfi`23`Pcqmb!*Ux`u`!1_o9p z23AI9+6D$z1_rgt*6UF;(0r%WME);?n}*I_Q!oACTH?c~xkltqhbsrSct*Iw(ICDD;b-^MelEMW z&T3AdaDzDK^|S-m4&1F}^KouwY0%sM zV7X!Lzr)vmM(^GCe);q5w*O_C{=QQL70(Y)*J~21_t&LPhVH| z$2{B&`qI~WB6t}X7{onY978nDCwEv$)%|l5JFFqWy11c{k>Q9fbH{zI3tt!*7#KWV L{an^LB{Ts5SJ@u? delta 63 zcmeBTjGdrj$yglZ?!>U}oXkrG1_p6Y7sn8d^T`?()9e1Zi5=FEU|rnM$jA`N_!@hljQC0!j_n}qn3ezfwRCPvY3H^TbqZ0ft!cX-a+XE0|NtliKnkC z`(qw%1`Wyb!|R_hFfjOgx;Tb#Tu)9=V3-(bUcVtJE!Ekbb;E>>N&&hInZoSKMj~(S zGcYiymbgZgq$HN4S|t~yCYGc!7#SE^>KYp98XATe7+9GYSQ(jW8yHv_82Fr4G(ypk zo1c=IR*74K?X;PF3=9ksC9V;gCBgY=CFO}lsSE{)nRz98d8s7|CVB>Xrm3w)sSFGZ N44$rjF6*2UngIMwUyT3& delta 98 zcmZ3>yoqswim6b5Plzi61A}$GgL#6bS&+VKySIUtrrqmBHVh05j3q&S!3+-1Zlp0V zF!*`8IEGX(CM&Q^JZG-NxFIUl*`0O6gpEo8x(u1Z?8*4 z_6YK2V5m}KU}$JzVEDzrz|io5fuYoZf#FpG1B2BJ1_tqhIlBUF7#J8N0(?ST85kIh z{gw5z%}gq7^j+n3VhptXHU9tqpVhbI4g&)NV@Z%-FoVOh8)+a;lDE4HyI5k!YX$}e z&H|6fVg?3o0T5D)|xP@lztbBWME)WEpd$~Nl7e8wMs5ZO)N=eFfuT-)HO8HH8cz{Ft9Q)ure~$ zHZZUx@zOxsIk6UZPtimMd(Zj&Nz~JfX=dzC3DWM4f=ejWl diff --git a/mods/ITEMS/mcl_flowers/textures/mcl_flowers_fern_inv.png b/mods/ITEMS/mcl_flowers/textures/mcl_flowers_fern_inv.png index 66a58b7b46c89d4c761cb46410f86f9738d4d031..1bdac2d248599feba1561f6d562287ae49ed9332 100644 GIT binary patch delta 403 zcmX@bc#L_1NO>_tjEB>w-w!`V_P1w^g@X0f>|53T-mTifQ^CU4lhr<-cb(* z1_sp<*NBpo#FA927!w>@lD-#1NBU5by11kdqpVNv)Fbz>) z9l7}_nQ4`{b=Xdu*~h@ZAPKS}I6tkVJh3R1p&&6cuS72|wM4;0&p^-6$eAVk4FdxM NgQu&X%Q~loCIH5Ea=icm delta 149 zcmX@ce2Q^`iiK!^Plzi61A}$GgL#6bW4*gskiLPJrmmyP?zeeY7#J8BOM?7@862M7 zNMm4NNcMDb45?sDKEOZmqD)Ye1EaI3dZM~3;{v&*3R4Bx+1SFwuM4;*hc9SYv7lp7 z#sUWB#X$>J1$8W9Vr~vz6_l|`D8M%&Dk~z2gPDQj4lj?>1d$>J1_lOCS3j3^P6O>_tjEB>cL0PLv#xb=GB7Z(mw5WR zvOnhGX3&r Date: Wed, 11 Dec 2019 02:02:34 +0100 Subject: [PATCH 377/737] Change menu icon to match new grass color --- menu/icon.png | Bin 1471 -> 4158 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/menu/icon.png b/menu/icon.png index 4db6979f81b6de3e4a53e577b99f2730431459e7..caed255e6ad79c83af2837e199ea2b0a49a11977 100644 GIT binary patch literal 4158 zcmeAS@N?(olHy`uVBq!ia0y~yU`PRB4mJh`hJr^^Ll_ts*pj^6T^JrS{AYOj?NMQuI!I_xEUFQPj@z@GB7YmmbgZgIOpf) zrskC}I2WZRmZYXAlxLP?D7bt2281{Ai8C@hEd`e7Eb(`{NmCJgbk>Sp-+rG(6Clr|+9R(-fy*I&eQySN; z>$bcHWL`)lh+Jtwr_|Dyi@&>O_Wk(#i`PGUx@ENOxkvd7410d< zK3ex|ja_8mUxynjpE@iQRe8m{ba~(zhvV7oQjhP|uDPS#wC(FxE1kcu+cz>FJ5s-8 z8e6Au<3-bwDbqgO|8nJ(3CntKv9%BR7cjPdGr#lQd^IbphhWa0{k!)t`|jtiUiwVepQkC;f}3G%9)Mg zrNRsf6TKN34&2L2|Djf8d*k-ohN&FOHP>0aD2@u~o~E?Vs%z1LS7#Wm+MK@|%-?sL zbL;oxn*T0Md};pop#3*SCWegn`{h~G-eo>tp{iAx80z8Z+I8qu2eZo^yVn+tow0}C z?sZgMs-&a-%5PH!t7jLJ;knOSZe{d0O+A{~(zj}n)V;?HZofPyPo49}%_M}4q48MH zrEnP*j@YjYJRQWZe_7nRE4-MIVL{1HpEt`st!PZ__sh=>XX;pNw92rMy=l?!jV#+m zpS?Qd@Z^Y;>7jxrRbq`Di+t889zA*Va?F(0plLh#9rAtu?a~h6$?B2(#8zs{xmL}~ zeNkS=dC8w9Z*+3q_gS*6s#v#V?m^j<=AR~wh71gG{|~p?u^!sLo%P$!Oil)4_4zx# zWqB{O*nG9~u11${%pEm@J~x%Q2d|$Dv%VtM|ClY9n}dO6fr7#c)oU?s+#UhXdXBwF ziz#$dUF4>qu=0~ar|ov_%$DFyTbI||F`pr%u!ZSQb@ZfZFBlH4chx$a{Wi(!+ltoB zyL)y0S2A&NxK;6Qk^Sd+Ghvp-qbrF=J6-fdD|_R=FR^ob^Wv~ji$g((i>CJ3Eizjk zefZj+)ZDqhw0MHzGEJ-1-O`^6vJc9B%1C~&PKGJ0daGzi>$Wem?Ia?j1?%4m6vsb! z{oU;5IV;T&<}hy7N0~VWk8dQ&X0UHO&Bkz``hCo+`<}T6qdO}Z8W^S=JA1X(QAhi4 zM}*>(SG#u4Jz&+npyT@z@4hcTu3di}wCQ_PtVhZj2k|voc3YH6IIS|J&n$2fv%Y+R zMSRmXVb4Gji73OpTVpqz_hpxA`QG*YVTq)sZ+avn!=zMpD^q^1^yPIK_n%~O{%zQ22XL;8$`X!5GOW38>$4E$n_LK%VjH)dYX;{N4pzu^>vfQ1Q*l2`Gs zJaz|`Lxzl}_)>C(518F_OuO=?$8Y}pYiz+w+?!4IEDo5-$nfEJdHqFqgCi$y@%`ET zkKxTurw7YitQNh~X2_D~d9~+-$$=BM9$dHWoHZ$xy~J+TKY=+2n+Xnu0O-WR``8-xJW_*f5b1&NtV+C8H|fHDArBScU~l;>l^1CZ5Pih6`5tUY1^g61!q;4?*Ddg!^tB@j@W(- zyk0uJd`e^TjT!DXBJb`V7xKM${nMSj5z#)WvlW||7`QYT807bS607-eD*DZexEwx9 zNB85$qWskV=__ve&ai7{$ckD~|J+R(o>K+c{N_A=%yjw7?o$#P6AiaU`v@~6@-@cFYg%^wK zB|(OaZ80m0>h@ai_&52E*NO|w3^$lK{x0KBP+eUAA-$wobMLu-#cE6nT{~WEF({j@ zXY%)9#?qTb4_kjePb{vs-Xitqs_eHZ-#g6aRGU;Je}DFM-OI?E3100BZ?e7Kxn`B3 ze)xHhsSCT8y+3q#YN%)NEZv=7#H=qD6gpq)(mu+%BPeFV3ysK=j_aR!Ew%pN{LA)e zVNb<+4w0)Hu3hq5U})ugq4ZS>RVP*JGkSc2T z_fwlo@|DKeI~pDeJoj>V@9Z`;<;>;3vu&T%iw#2BMyvE+r3E#fE9mrHy7s`WZ?E1q zEPIq=u+neIsm#nwH~#1wJp7ryOfBE=wq4cBHgRW04IV2{|m zSJQV@R;-+TJ!nc^w`7&lbEB@m-(JTVL@qmb;>7Z$SsT;1q8jsaD&KtS*>%*S?_!mn z_C?WX#lQs&3`=CWFZI znWZ8N`yX$65y9rT@QTRt{s&E$B%2hE&Hic3WzqHa>z!>^I*S(+ET5w`r#NAbS!dzz zd$lWakKUdcUvzrXgyMJF=Q`rkH*1=1oi5!K(ak%TuP5Z1)Jje>Mh3fmWp^1ED!xB| z{yRy1UYX9cRR(o6U+m|7PY#)8A-?+Um4(|De|mW%$3Rkg_K6u6x(i}Nc-F89_IxT~ zjJf_?`^l^D?LDjG?;5Re2v+P@{x|1B@b5ccV#PW%xSqIK-toMyd-~BAGpp57UnQ2C zuFrk?VC&jBmsq;bZF>6CCiP{*LkGc?ya^k=i7r1DlOKG0-DbWuQ8Qb!Qp3D{S>zh* zJks4?cxb&ecjw;l+-!9QXKs#T$FHxG_DH`{+Ihw8VAYOIQoFk}1Oolu?J%EFt^4(T z@QM%RS@Rwp$e7=n;Nn-k^T&r*>Bri`?Ts}w7A?J-yUI7_a(Qy6EkncWUyRd>zKAX7 z{G0o4~CJD_tZ51$6)3ZeET4Qq0W47Xp@*!_zt9LN}O#LZS9lJAV!m38*=F-T; z$KvgGtzwvb+Uj71>+}yR3cXK%R-C-;;hR5iZsZzd?q^{5uzIt7qPDE#;q|V)3=Iq3 zFX}(OY>h#Jz??vt8J8{!Cpv#PmfGyOea6f!x~j73yo+jG4UWv1uX*@SPmWW@RU1Kt z!~+4@QL|c{2mUz710!&k?yKo@=vm z=`)ALdOgRcK4N-uP4>t6H_OC0j&EGLs^IoKC+9o0S5K{RIX!2ByrjYvz3u}FS8KL! zS+lp_Y>twKQfS};i+1<9QsrlFzgGQm@m8>q*W83TlkHyEaxMIxRIkKTwq*W`)&qOK zpHux7T(NIQ?R5r*9UoqK|1G?oQ1tBZwx3@*zXvTp+Ni@PBV54q@#EIlla9sgEt9IuZ_uzUU%WBC!m z$k|clFpopXxrFYcZ7Na|zMMW*hnX5Z#>bxQl#+}y>hwpJi-#Yxi{a|#da zsC{3j^V(ZGvohEAl9T<9kAk~RWnTMNiJ8y1k>3&GI@#0FVfF1C-r2$Hj3!8J-o{+F zT-!8nhKG;byl2y%vxl@cta%&GeDD45*ctOR+23hR-ln>|b-m`LZxP`fdM8~HR_qp< zY^kLh^!xUg*cI>F*0&hmeAF4AoN;pFr2xGflePuiKK=4}=dbflEbw!)f8lUvzfDYJ z>!*;wRSJJvdo4mmw(S*>6|{ZZZCe>jVP@zm(Ps4hb2bTp9C!=~d)euV7ds z_A68LN2%TH$yFRaHenpKcXF!_-bmN7FNpHUUSVGU|M~O9wKkVM`3nP&aoXvfKQhtR z?D2uWPeqqz38e*j)~MxbZ(cLaJm*Ego|WecqzbhdE;1@hF}&JzBysT#iLM3(i8}>? zj0}H`~$~{u*H&A zS`TBcBr+5##a?rao#~O<_4jH|a)7+S%b5R#GaTl0aXnn&bN#OJ-kF_KF6A=wxWDb2 z+Ls!y-XL>8ue;2AK~Js2i+~H;&NA;@#;Ksp)ZB1^ciE1hWxHo_D!42BlTmQzJfdPE s_4(ZSNB`^V)Il9%L?2m3;~)Q$1*vui9785DFfcH9y85}Sb4q9e05amKM*si- literal 1471 zcmeAS@N?(olHy`uVBq!ia0y~yV2A@@4rT@hhPgb!F$@e0fdM`tt_%zex;}=6=}vl) zHX5#4YFj~k_L{m$wkm#x3PuXyF4jJ_MtPCG$^I@4nXzu>29g?* zE+#s*h8mF`cIhEr0ruu*S}MY}XTC5nFff(``2{mLJiC#`z`!cw>Eakt!I&gbl_1i? zy@5)l0XOJ28lZ19set{o84FBr3-@(yqvf{64V}kblP?7MGuv!Bimw!cvb}xCZ-rv>GYkaG(@*i8=`?jN+c5Dx= z4lCwqm!$02A7ymb@!{?a+egJ>dhzjnvl5QDFRI=hbgrUh(}xA^v0Fa;pS$Gsx5(x*SRI?wxdw>sVZ z(Bj9|_fD-?F5dU!+~V{fGLE19F8Kuf(Ck}jzpJ2O`@QESC%?D-a1cB`(a25q`eyES z8>M}^_q2=VukB&1v)Na0!TOVXwCsizea?Y0?W`rQ{DhNlNnd{d-|>5W-ug3k6FS50 zF(&`6_>(m`<($l)>*s|3hM#4$aD29Wf4s#9&9^om!!HKC{w06D({jGr$969D=X2E$ z#&g(we=tk@?a|8z51nL@%eCJpUa@wgJzuSrc00HFQlGRmyC2;@EKaJ|S#;?IN9Ni(N^{u20*MZbPtt=qE)o%1jGbFu&9iuXFiTlcT||GyOlUc2Jfe^7lG zx25#K)8g%)!zm{op+AXd0`?P%JtiACTQq!NB{O#9QUGL(};D5s*e)7a}?)2vu%l934E@b!R z-<~-)=0CW4PkYXT<(JQ?zdiY&SSbF^^`ra4vbUCVsaLSs2H5yKl2l1+Js$gb(WGxx z59d5(t5^GQw02v6{^@rXjRN@o_gfTo%e629uj=NUUA;WYpE}7{c;13+|T>hQ~EUQrEFb{#XmF}(S=Vm{9cenk?ZEK~QLpP*Pu%p-GD<&E3`;r@DVYP5p-;TtV{15wE?`Lo8=pT)Z(>j)(!<2yc>dVg Date: Wed, 11 Dec 2019 03:37:53 +0100 Subject: [PATCH 378/737] Update sand, sandstone, TNT, iron nugget textures --- mods/ITEMS/mcl_core/textures/default_sand.png | Bin 215 -> 315 bytes .../mcl_core/textures/mcl_core_iron_nugget.png | Bin 136 -> 255 bytes .../mcl_core/textures/mcl_core_red_sand.png | Bin 215 -> 341 bytes .../textures/mcl_core_red_sandstone_bottom.png | Bin 438 -> 350 bytes .../textures/mcl_core_red_sandstone_carved.png | Bin 222 -> 357 bytes .../textures/mcl_core_red_sandstone_normal.png | Bin 209 -> 355 bytes .../textures/mcl_core_red_sandstone_smooth.png | Bin 217 -> 350 bytes .../textures/mcl_core_red_sandstone_top.png | Bin 167 -> 333 bytes .../textures/mcl_core_sandstone_bottom.png | Bin 449 -> 330 bytes .../textures/mcl_core_sandstone_carved.png | Bin 225 -> 337 bytes .../textures/mcl_core_sandstone_normal.png | Bin 207 -> 338 bytes .../textures/mcl_core_sandstone_smooth.png | Bin 217 -> 330 bytes .../textures/mcl_core_sandstone_top.png | Bin 167 -> 318 bytes .../mcl_tnt/textures/default_tnt_bottom.png | Bin 227 -> 274 bytes .../ITEMS/mcl_tnt/textures/default_tnt_side.png | Bin 252 -> 339 bytes mods/ITEMS/mcl_tnt/textures/default_tnt_top.png | Bin 223 -> 380 bytes 16 files changed, 0 insertions(+), 0 deletions(-) diff --git a/mods/ITEMS/mcl_core/textures/default_sand.png b/mods/ITEMS/mcl_core/textures/default_sand.png index 6411f86e08d993991a3762062bfa4f5c35889b7e..7fc254aa232078d5edd22ecf598146297d5f740d 100644 GIT binary patch delta 300 zcmcc4xSMH$L_G%+0|Uc^i5X@L3=Aykj=qiz3>*8o|0J?9FfecyctjR6F!1dKVMh1g z6V@^?Fi4iTMwA5Sr)5S5w!oPLm zK~5$|9@pTnaeFwLzOOyNW>X!{y@6SJL-XFBhvfgY@zg8XOjE417fyRzYTfz$FVFnr zOE=lC-?FWgF;h7~n%QE-rJRmsT%w{Y0yyJyGcvMd-v~->I90iA;)>VYjmuZu+8p(k zXN7rlNWR#d#eF8PZeHVZ&}N<#^VLRD^hu28rTFNc^tIcjbP0l+XkK DYYcP% delta 199 zcmdnZbe(a6L_G^L0|Ud`yN`kx7#Ji1d_r80&#$|^zU9&W3GdI(-QH9F=I()2hAK}N$B+s}-cuWSn+*gUF7j`3nQhIv^r-kohkzBa6--L^8APre?7iN< zI{puP^S&HT&XhWC$t7hsnV6REnEdqEpK-9BbFtF4;t=<)a!`ya-C-l8s(3YeZVFfcH9y85}S Ib4q9e0Q#p`;Q#;t diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_iron_nugget.png b/mods/ITEMS/mcl_core/textures/mcl_core_iron_nugget.png index 6d9f6c7c477ad944497b49b9c9587db932464e99..bbb89d6a3d07d60846fa4ab517ed6dddb0b13515 100644 GIT binary patch delta 239 zcmeBR{LeT+qMn0|fq_B(^Z!H!1_qXNM_)$E)e-c?47#KJUJR*x382Ao>Fr%o3 zR|5kBgJg+oL`iUdT1k0gQ7S`0VrE{6US4X6f{C7io}uNHYnxIS7#M0iT^vI!{Fk0L zT z%zW(5Ha#Q%#deRr8|?ag7srqa#$*L)11`tRL}68q!$(Yc&m? e%F3gs>rc3Lv#p`(w-y5f1B0ilpUXO@geCy5`hT+k delta 199 zcmcc0be(a6L_G^L0|Ud`yN`kx7#Ji1d_r6gHx^#)ExtLY?&<1|%|+SQ*H3!5W9Heq zoQ$a0s|*YbRh}-6Ar*|gr#A978wfaDbP0 Hl+XkKh#Xdj diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_red_sandstone_bottom.png b/mods/ITEMS/mcl_core/textures/mcl_core_red_sandstone_bottom.png index 0f2b5517e64b3d7e44ea2eea30e888b30101d099..f6e6ea499e864420eca14012065cf2fd7415fefc 100644 GIT binary patch delta 334 zcmdnSe2-~@WIYoD1H*)g8D4nJaPxyOg}{*Rdc{l|aSS}u5>`>yqBxJ#PHFU$8bNBuOEj1z9}^{bwxdn~G939DF? z0joh*M21evxqb5#8XT_%+&ob=-z}srbFP`nV`a_-Tq?_bxMy$&Gl<>vX<$3nyW-HU zGq1OQD+>Q@=eyQj{Y9>3W|np1xz*CQf~uQeGDvV*Zn+k3)KyekVIw~|kvZl|8~eJM lOc~#kvY01(UN!m0C>*if>s-~Bp9~BP44$rjF6*2UngB{6eyIQe delta 423 zcmcb|w2gU!WIZzj1A~Sxe=q|B!_oks5Z5d7x=v1Mdb4fW+3BrU=XPD2-~C|i-22NW zo|)EiYHIU^+3knm*OyJNf3bP-gXNRn z?O1+uVehRKGjA@RvA4VG_R3jDCe&Y?({Xxw%eAG`PETz}hsM3=9lsJY5_^Di~Q0wl+R?5MVhV_j>zuowR9Z-q@e9-?Ex1Mfgwfm19=>c_kJ7 zF8LIl7HD-^X~MBGVz+?rYipqwH%~oisyBSxa>(z9PQ;F7m(OuuI8!ZhwIGAV{r0>z zrO6T-?N86Scq-(}TUI94w4J+pcHG<4`kl*lN}{894twd;?v#Mb%DXMK4=C1|oqAAO zdTw9niT}d-U#~RxPYzjR_V>s?<@t=uJVP%%oNV&XwV_2~=d;qktZud+|8B12j(Nb* qD*Y}(A?}lO^`2e3qISn!vlnF(IOiId%FDpOz~JfX=d#Wzp$P!au;H%& diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_red_sandstone_carved.png b/mods/ITEMS/mcl_core/textures/mcl_core_red_sandstone_carved.png index 675e923a62ac495c347f9be2ecc05648acd4fa7c..fc8b2a09ea3c424ced4c8e2ddaa4ddf2b39343a3 100644 GIT binary patch delta 342 zcmcb|_>^gaL_G%+0|Uc^i5X@L3=Aykj=qiz3>*8o|0J?9FfecyctjR6FmUsOFyo}3 z%u5*<7}!fZeO=k_ajlsBHx}LBtVAWc{p{1arp1Q_T zx0>B!@z=V0w|5tRx5$g1{`a%VJ$~t=w!prIWzJ{W*F8QJ*5fR);HAXmyJgv2lj`M? z4Ht+-@%An^3h+7YS|C>yApY-^!`i-e6U<-rH_lq2c)!sjnAt$Lf11G)<9dllELj0> ztE~MxpL(S{;_(l;UC6pqTD!S|*YRN3thb#17|U7A6y+oCEs&b=GedOR#hJWf3&Ys; tre%mVyULx|o^EDw;>g?LAc9dpRyM(3a`WF^EBl_!@6A_`R^KkJ;F73wg^PiK Ofx*+&&t;ucLK6W0WLr@H diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_red_sandstone_normal.png b/mods/ITEMS/mcl_core/textures/mcl_core_red_sandstone_normal.png index 04475f3234bfb6a61f1477d8e5b9b5848928a970..446f35cd265d6d7765e7cc2d6e290714a0924177 100644 GIT binary patch delta 340 zcmcb}_?T&eL_G%+0|Uc^i5X@L3=Aykj=qiz3>*8o|0J?9FfecyctjR6FmUsMFr&l1 zhmH&k4D2PIzOL-|I9Pc!B$lKup2EPuAW`BPQ4*Y=R#Ki=l*&+$n3-3imzP?iV4`QJ zXPV+35yZg2aL&`kF~q_@chW}QLk1!)wyL5f0ShNgt8e0Q=sv=7q3$HZ4K2W+j=o*{GS>34)3`&>(?w$16WoGF1ZTrKsPW+hlvc>1? zx;0)Wgaa9@UCoco^>y$uEpFhN&&SngCK>c>y1S?@l*@69>3+mi3D_yWe|47?w2W-u@?FnGH9xvXxBcydb9#?s6y^SU0ao!jE& zYJK4J6b1%{5>FS$kP1f8a|byOIY_WRyx7aSX94REAI9$4Ow*oxm*aSSvpY=T#=etZ zn;RPsubnc-;Zx-%m*~%hyJ`|tCFJxqSngXkU;X_&n?LqS6ze1_v&}EFzopr0D%ot AHvj+t diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_red_sandstone_smooth.png b/mods/ITEMS/mcl_core/textures/mcl_core_red_sandstone_smooth.png index 6e3839a09326e82110d6e058ace96672449e9e47..f6e6ea499e864420eca14012065cf2fd7415fefc 100644 GIT binary patch delta 335 zcmcb~c#mm*8o|0J?9FfecyctjR6FmUsOFyo}3 z%u5*<7}!fZeO=k_aj^2J%kQ13^@D+dL88Ppq9iy!t)x7$D3zfgF*C13FE6!3!9>qc z&osq7B8Y*3;iRXFV~B-+>4e?9ha3c4VpllJC>D4z)U!?qV%p-sD&ol6@?^=L%hqS- z=0r-Z{Z{tuZvKy${{6>))>6dD|_2HZSRHQz0yE_1G#%422D1zal2eYj_E2Q!G>^l4x_*1O`+ zt~0NYsZ7Tt2V4|+ALdRe`Kbl!bFWHpBW~d zedbXb;CyNEgym9Q=OkvVUFZ_v`b)#JY^j)dg||%6A=bE6YCKN0drtnp`(Ju_(J%AJ z-?O{UT>Y}mRn_Y7!D|{_t1s=U;K|*8pMTenb$bE?I8L2r)Cy407P+AQj)8%J!PC{x JWt~$(695(_R+az& diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_red_sandstone_top.png b/mods/ITEMS/mcl_core/textures/mcl_core_red_sandstone_top.png index 4df752ae783b27bb5f846a0cd0fb569f21b2854f..807094464a20423249dc7be05bbe3522d051b42c 100644 GIT binary patch delta 318 zcmZ3^c$R5`L_G%+0|Uc^i5X@L3=Aykj=qiz3>*8o|0J?9FfecyctjR6FmUsOFyo}3 z%u5*<7}!fZeO=k_aj^1eDDB#d>VE`riw3ZWeptfs%_O77tI4GB z-0Rr+N$FMh_12f(yZrUagsPz0xbq(Ke_xV)Wso}Wda`BU8{>uPtC;hcq|XGTui;y? z{_(v4*^>9h(&aq+8ONuP9#?TZHK;A3YeUOD=e*J0`In@gF_89p?- zd{;Cd7Bq;l`TFy_v-Pp@nzpg_`04S;td(ix z;p*#_kP!2G51B0ilpUXO@ GgeCxzYcw|i diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_sandstone_bottom.png b/mods/ITEMS/mcl_core/textures/mcl_core_sandstone_bottom.png index b8851e24628b2180590a0a39def8ed1f89ae2c25..51d4174d4de27a8bbe2b15465c9755ab81c89ca8 100644 GIT binary patch delta 314 zcmX@ee2Qs;WIYoD1H*)g8D4nJ@a+R(##c@o z4=^w=NR+rnlmzFem6RtIr7{#GX6BXX<)xM=nCKbmnWnf$1Tio$obYsU46*PpooLN> z$UwlQ_|6p(4?$ibUS0JC3zoLpi9cYAX$bzXCcRhJy?&zG>aXW)>L!1XEMaBi^i8Q#H2`^|YR9>|~@AEf#rSh%sFJGx@x;JmqvTedI z_Uu|{yVZOKU&F)+#?IM)z1#xV@%2AXHp*$}zW3pPZZN~!IG@}Eqm@z5?DZn-J13yuWwy?#TsP`f^S#slU9r`@*W` zdwV7woKbRRbI*khop*Ony0*1<-|UKGi)wdH%0E26dSiFiu{q`E*LPgq(sOQI$C+h~ z=T|o0*xq+-ef#xoea9EoZJ&^LZbj39xs|tfPT16w{b>KxZT-1N7uM9DUe<7PNB_aO zRR^XQKiD_r((2ZW8@rAysJXbR<_KzP3x_l6AsTT-8Z%9?7H^TYufhC zDnGuW`O4b1t6ehR85kJOdAc};R4}q0WOia@WMH{4bL-g++g6|d9lz!~1J@!IZKIW0 zS9palFh(tMx?%KUhrz>}On(>>1x^;$Pf|MVdj9`{=JWdYNCL9e z*=6FR{W|>^x9*gZn%hPT#qOJhmHUe~M*9C_UaKIS@Tz|?D+2=qgQu&X%Q~loCIFWf BL_G%+0|Uc^i5X@L3=Aykj=qiz3>*8o|0J?9FfecyctjR6F!1dIVa8WZ z8xJrrFi4cRMwA5SrY1jvM+7l2Fr4>vaSXBWFP&h^ zbtplAwK#NlNmHvp4vTcObToH#^xM4+<{y~m9pc<w@<8WI2z1zN*_U8XS|CnL@ z>2oR;UMwcEto%FV&9@o#X)Mq@{CUe#g`dw2r!j85Fw5|>56|i3h~8oh(<;uJ;k8L5WGykA-;{d>~HwZtvs>XBU+q^=|~ z{AY~r{LHn?ZM7F&o|Fqshn;b*zY-GMn~Rdy?N7mw%Q!td@&@;*8o|0J?9FfecyctjR6F!1dGVaBO@ ziaZ$@7$izuBT9nv(@M${i&7a15;OBk^zu?m6ioCC^-NRTBZ3$h7%q6aIEGmGr%o{B zJLJH_@;7u>$wZ9_O0zsnwwP=Y*^;^NIrEC*C%7 zP@NI_nCY+4H;0V2J7@MT-7!r!#7wAr%U;xbK501Vzjf*9I;ZHa db^eF>8<(GZYu@))kb!}L!PC{xWt~$(69B|via7uP delta 191 zcmcb_be?g7L_G^L0|Ud`yN`kx7#KtYd_r9JOes9ExNcK>=C!T8J;`1RN+KQ{n8v^0 zvMd7wL#d~WV@L&~sE@f2lOxaNrFEq%)xOIa|882UK6Bce|MrZJWmFcfntEscw1m0y zJ(3YNZFkpE@r5o2cd#IkyeBvXyn>r9)IRxfZ` z{qfnmu8`i{?nfmobcH837*0?)7rlA^1^(=9;tReOXT&iuFfe$!`njxgN@xNASEo`p diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_sandstone_smooth.png b/mods/ITEMS/mcl_core/textures/mcl_core_sandstone_smooth.png index b4dc2654df51bc4f3a6c5438ddcefcc360ccd8ea..51d4174d4de27a8bbe2b15465c9755ab81c89ca8 100644 GIT binary patch delta 315 zcmcb~c#3I)L_G%+0|Uc^i5X@L3=Aykj=qiz3>*8o|0J?9FfecyctjR6F!1dIVa8WZ z8xJrrFi4cRMwA5SrY1jvM+7l2Fr4soaSXBWFP&)3 zcgR4%rTESj5f4FLAzoee1q+t8+KE44i)je{uqM4%x88lC+v>09Z0aYy{B869-t_Z- zTQaILmnszu@lwF_MWTz_eJmMs+%uke;BI>Z{cN{z>*8o|0J?9FfecyctjR6F!1dGVaBO@ ziaZ$@7$izuBT9nv(@M${i&7a15;OBk^zu?m6ioCC^-NRTBZ3$h81{I&IEGmG*G@3x zV>0And4EB|ZmJ$8ji9rphDza@{c$OKByadZ)NU0dj!|3OFV@sAI`FYZzgTy?N_XXkZk z?**64mrO|Of3_p^R{SitR~{^Pt+JVC`rnC{O`UVq%)-t>C$BGvw`Pj5b)Kx-YN=I? z83$GJIyAn%_~N6n;I^3m{RGGO3+AuBPM`Ac%ay|D{mBjYQfsrerZO-vFnGH9xvXB%~KRq6qwK9!7 zTz%aV5@LRjJQ6d!FT6>JkT|-jL-BB+t`#PdS841e6ZHlwe?BVDNPHb6Mw< G&;$Sv7Be6K diff --git a/mods/ITEMS/mcl_tnt/textures/default_tnt_bottom.png b/mods/ITEMS/mcl_tnt/textures/default_tnt_bottom.png index df411b6840ba0c2f09e6f519202c56e46894fade..61b911be9f93f988d1c183e546c20088e5a707ea 100644 GIT binary patch delta 258 zcmaFNIEiV3L_G%+0|Uc^i5X@L3=Aykj=qiz3>*8o|0J?9FfecyctjR6Fz_7!VaBX$ zotz8|3=$=-5hcO-X(i=}MX3x0iJ5sNdU>fO3MP7ndZsDv5kVmHJY5_^Ec~}lyvx~O zz|(Sfg+7;7(}SdQ4|w<<^5i|Ri1V=Q`_bMZ@M3zk_ocWD!>M;;OgS1h9iGT7;~l%c z_BCtj0W+7oYz`;(Ht_K^tlWHDr?N+L_pbEngUmaPE+62xz93X89dLiS@2dLSjE?&* zJ?6{uFWtm@VZQi}$W@;g)&Fz+n(?xW@#Z8o^D_^pTQ5mtPo5$8v}T3MTLuOO22WQ% Jmvv4FO#p}WW9t9_ delta 211 zcmbQl^q6siL_G^L0|Ud`yN`kx7#Ji1d_r7Z%(VmUjgoz=y{+|Z^wq*$OiVQt3PK#K z4;!&EFfg=vx;TbZFpByvZE6V+v5ly&IHLGSV4`|y?dMk^U;eva+Iw8l^@v917oI~$ z=I=1ze1B^B-G7rLdnKh!do?*8o|0J?9FfecyctjR6Fz_7!VaBX$ zotz8|3=$=-5hcO-X(i=}MX3x0iJ5sNdU>fO3MP7ndZsDv5kU+L3>Q6J978PpdnZ}* z9WoGbsaJ>qwx z_f^@wJ85T^&EdIdSg=YfLj0?MEVE1Gir}#2;XzTeW@U2ESUz7NIIR76rM_PKTm3zX zHt&zG+uQYW2TN8CQ`Od(2+xvb{dOpLvsmP%~U z*q|!!! c@vq$fqU-K@&$IStU|?YIboFyt=akR{02~~Bw2d(V z0TUkn{r$aXx8y&WgoMI`gan=t)3OvEk%Xj#6oHHfi3Q0?sVO%C&KERJY;1ifz%HI_ z$;>R=?7Vmv(_u!1=7+&&LfM$vmbEbROy>E=wDg(rhq{h?pBfrFTNge$T-?XcK11lA rrGd|ng9jSUu2WzY diff --git a/mods/ITEMS/mcl_tnt/textures/default_tnt_top.png b/mods/ITEMS/mcl_tnt/textures/default_tnt_top.png index eb52ab5abe950a53f0ab4f84f0dad8d5d60ddb39..b8f8d39a63126c2a34b686fb6b199bb62af66b71 100644 GIT binary patch delta 365 zcmcc5_=jnNL_G%+0|Uc^i5X@L3=Aykj=qiz3>*8o|0J?9FfecyctjR6Fz_7!VaBX$ zotz8|3=$=-5hcO-X(i=}MX3x0iJ5sNdU>fO3MP7ndZsDv5kU+L48J^G978PpTPGgm zJmetYs_XhejK9i5g|lmgxnREB5jK|Y4Q$yPII=e|*Ps5VtKXAm%V9rxzw!U`Z&aG2 zE%%4>Hq;cK)R+HIb>(aE&8Q#Gj@+*?Ie0^xu zi$P0J#wXc;#SU-N_!#_ne77@e&SrHw8}ak_0lo@}=dq4APB56PFTJgMmN|qu{7Hvy zU%~YkZyyA7#!e`@lGFL*`R1Y%7DxOw->*C3IJfnOqh!0l2FfcTEx;TbZFpBmbs40f`8eUwm+-hngzvAa771?E{&V<-myzQ{iv-UX0yS;7B#rFFd+r(b% zm{2q`FnsYUKF)t>@lDIKPy9Fcnl$@_t?IFaTjwojl{ZM=Iw&6Wk1@_ns=7oWrh$Qh Ofx*+&&t;ucLK6U7$XCe# From f91619cae1814d9fba80a5b1907d2ee2d14a42f0 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Wed, 11 Dec 2019 04:17:38 +0100 Subject: [PATCH 379/737] New PP cobblestone and brick block textures --- mods/ITEMS/mcl_core/textures/default_brick.png | Bin 185 -> 333 bytes mods/ITEMS/mcl_core/textures/default_cobble.png | Bin 219 -> 560 bytes .../mcl_core/textures/default_mossycobble.png | Bin 255 -> 710 bytes mods/ITEMS/mcl_walls/register.lua | 4 ++-- .../mcl_walls_cobble_mossy_wall_side.png | Bin 0 -> 684 bytes .../mcl_walls_cobble_mossy_wall_top.png | Bin 0 -> 588 bytes .../textures/mcl_walls_cobble_wall_side.png | Bin 0 -> 527 bytes .../textures/mcl_walls_cobble_wall_top.png | Bin 0 -> 414 bytes tools/Conversion_Table.csv | 4 ++++ 9 files changed, 6 insertions(+), 2 deletions(-) create mode 100644 mods/ITEMS/mcl_walls/textures/mcl_walls_cobble_mossy_wall_side.png create mode 100644 mods/ITEMS/mcl_walls/textures/mcl_walls_cobble_mossy_wall_top.png create mode 100644 mods/ITEMS/mcl_walls/textures/mcl_walls_cobble_wall_side.png create mode 100644 mods/ITEMS/mcl_walls/textures/mcl_walls_cobble_wall_top.png diff --git a/mods/ITEMS/mcl_core/textures/default_brick.png b/mods/ITEMS/mcl_core/textures/default_brick.png index cb57018f86dd1b6d76e510b28f8322b697eb8e26..78555439559eaca6b314590993594899f3af12ab 100644 GIT binary patch delta 318 zcmdnVc$R5`L_G%+0|Uc^i5X@L3=Aykj=qiz3>*8o|0J?9FfecyctjR6F!1dGVaBO@ ziaZ$@7$izuBT9nv(@M${i&7a15;OBk^zu?m6ioCC^^AK}{-!f9Fr4;uaSXBWPo21t zi^)*H<+Ha~S8qhrPswRX>Dn6C+NZAlv2@>uzMZOvCe+`ad-JBxj&D{u2Xpt=#rcWM zf6Ny$DLANvIppe=Q0IyZZ_dvSHHrRM7sI~E@cZ0%jKYpjC53g%H#YAR^I%;2gX)rv=Ahf>gnPb zQo$&Dx{>p+1CMjy&a({DYK3R;6|6JkxL3a{?w8{S29}nV(r1cFvl6ycTU-oZ#q4x8 z*8c)q_^a;iOK#dI{LQm2_^h(KEKibnvvkAX(B{2w&)-haZ+5(qAmGGS*1LDdq1RLDgJ*Ae^UzASYLegb`^W#5 zeEN6y_R}oc*B)M+4CgHGF*sZAtrOmj`7TJg&cd`l^+8+Pn#G_f^)Ob(f!S zA;)_7$DY$ka!Pq?LpxlKbaK9rP^|m$qtkv7fAx#sKRy*@uYJ#XW08|ecKqHo7ViHK zG9K?e+QlHxVPiTjkf*!9$l*60)W5o=A zd@~+#s+-mN9%xn+y%+zPh{{8V@<3#CO;w~HAe&z?OndseJW$ya- zmTBRt0&BZzf*%;1bX1Dg?)n-tA+$7GV8Tg}vpjj5f9L&Uma`PUC1LTrf`Ng7!PC{x JWt~$(695}~Q9A$t diff --git a/mods/ITEMS/mcl_core/textures/default_mossycobble.png b/mods/ITEMS/mcl_core/textures/default_mossycobble.png index de3ce82554830e9d9900a2949686b70605302b65..0cbd5a5ba7b0a046f503318eecae59b0e4b09c51 100644 GIT binary patch delta 698 zcmey*c#L&|L_G%+0|Uc^i5X@L3=C{Z-tI08j~V_mJpFNAC5wT9fwRCPvY3H^Zzl*d z?qCz&&%nUIUgGKN%Kn&#o0*NjD{So{1_q{JPZ!4!jq|pX4*Cl_iX7YTSAN@X`|h0C zyl1zGahfPD6A_wnMB||fd$0N7gWdHlo#y|Q)(i2e#q`u~ce4qx@Cf$u-kcZPR=WLl zj^v!G87Hjwp82z{GXLIhqxbjszWvJHm-|$c)!=cAD#NjP@#U-87j4de8+7G_mzIJ!jve(Jy`P^c3!1dNqi(4NBit3SW{*%`aC;2dMh(RGF^k6k-&GxN0Tb=Clro}E*4 zKku7&nlZsqz<=`R?u)$wA5AWX+&|v>@YRMlW>T()cg*r(Xz6L~VdOaUqP$*Yz24Qk zZq4ePH*NO2`%Ef5*_66TA;9Fh4TrL6{PAsKI>8qiwv_F@>c-6w@9A_bZO&@{)hB|j z9^cuhE5Q2cAy6$|+~oh4h_TZZz$)rcB;b&Cpqg4~0vf+z!4 zdWP}zHuIvhdCU0Egg<@M|Leke%j;W@sO-IP{oShXznXVNhyGlB=3M*B=L)@L z^X$UD%BDS(a+FFnms_)RPJC6J`n$P;^=kuySzjMobM;PZQ6$I0=S5B&_6ZCp=IR$o zx9;DcSM}HNM8tagfZ6+I`E<1{obl{b(eArSd5ah7C?x-^`aE;fwB+dMmy;f?QxncN z`Biaup>Z3dL-6I=iFPe~TWd_uS}ooC@4*g(GgBCNqhC%^`p;MvsI9+Xft(iu0|SGn LtDnm{r-UW|AFoRB delta 239 zcmX@c`k!%vL_G^L0|Ud`yN`kx7#LInd_r6&cQ$7yCR)z2wz0O3^mDH(DO4%f*KIOs zZ>TBAN%M8Il1$V2=qBLGz`!ug)5S5Qf|2)3Bio?>5w-{SOC%3umh*35VbVD4V4j|I z@K_(4!$uA*!-fUyJH9Y!ZctcqBW~Sq+XL(g7Qrj{1tcXFWnAPd+PmbMpHs-xbSKW5 z1J;J0Kk@!Ei!}N>x3Ml*s_VFh#l2U`?h1R~h0RsGaa)NyYg@+8i3O9j?=UV^7ThuI vROJk1)kT-uowQun-{rmj{`T|NpV>FPR+(LHz5Y7`0|SGntDnm{r-UW|0#9LF diff --git a/mods/ITEMS/mcl_walls/register.lua b/mods/ITEMS/mcl_walls/register.lua index 363ef55c..0ccefd62 100644 --- a/mods/ITEMS/mcl_walls/register.lua +++ b/mods/ITEMS/mcl_walls/register.lua @@ -1,7 +1,7 @@ local S = minetest.get_translator("mcl_walls") -mcl_walls.register_wall("mcl_walls:cobble", S("Cobblestone Wall"), "mcl_core:cobble") -mcl_walls.register_wall("mcl_walls:mossycobble", S("Mossy Cobblestone Wall"), "mcl_core:mossycobble") +mcl_walls.register_wall("mcl_walls:cobble", S("Cobblestone Wall"), "mcl_core:cobble", {"mcl_walls_cobble_wall_top.png", "default_cobble.png", "mcl_walls_cobble_wall_side.png"}) +mcl_walls.register_wall("mcl_walls:mossycobble", S("Mossy Cobblestone Wall"), "mcl_core:mossycobble", {"mcl_walls_cobble_mossy_wall_top.png", "default_mossycobble.png", "mcl_walls_cobble_mossy_wall_side.png"}) mcl_walls.register_wall("mcl_walls:andesite", S("Andesite Wall"), "mcl_core:andesite") mcl_walls.register_wall("mcl_walls:granite", S("Granite Wall"), "mcl_core:granite") mcl_walls.register_wall("mcl_walls:diorite", S("Diorite Wall"), "mcl_core:diorite") diff --git a/mods/ITEMS/mcl_walls/textures/mcl_walls_cobble_mossy_wall_side.png b/mods/ITEMS/mcl_walls/textures/mcl_walls_cobble_mossy_wall_side.png new file mode 100644 index 0000000000000000000000000000000000000000..69d575d986f3caa45ad6a6088056b8efb570de06 GIT binary patch literal 684 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4kiW$h6xih%orFL*pj^6T^JrS{AYOj z!j2NPyCW}cIeF%oN$$;--n0DN(_BJUuurv(2>Oua`O=fczsdc-(tl1z{&_Z{x(h|U za!vCtw;d}jFIzVIuF1<|hdo>h`3@hi&cA2=es*BqzFp$o6-AA!<)?SHrW^|R_`S>3 z=HIvWpkzVsq~0sbx+0E*@4f%qzWu7$)~GADv?3VHf=U_A7Rnw7JD3%itsFW(CLwhb zOTyh~)&=L5U1pf^`dx?e%fuOJ-BAo_mopEWERV}y{8w!2l5o%jEf z3Wf8#vsQ9A6ia;H$xyIjj`N)LA5=Z%wVoTz@H^RO(ZqD)f@UD&izzbtRVSlYng;!j z`j|4=H0biFlVv+^>y>XU5^~rYawdJ{w%OZfKdyQ-YuCHAY1%ve)6Ie=lxO$7c00z? z%pl^vg!#eTZSyNWW>|9_X6G*NT-Wcu_)!PLj|o4EY+gLhdGdRoRp(*@8JEM3COIl+ zT@D&N3o@47EgjFd*q}s0-sN!btG~BDo8ROA{w(I}<2`pT&YgEm%JXt!O!oBM8#`v- z+;zBO?WUX=&+gqzXGj##kSyW(pZUzNA%Jtn>vzv`bAu~6xSs8@6aVC!HTCKBz2;hh z?=6;^z5M3qw`u1bnZoX<&Zfj2a<9M6&01M;aObj2hBQC*y|3evBUZU^^F20dJG|qy zp>NbVeLcP=1sFdh=n1`F0mDO>bxI6;`<4sQ&#}JFtwUh5> zNjXX!tvA*_&9&RqyEQ>DI@nWl(W14L44$*>T;Ba=s+}44jIn6$C69GQ>8mA9x(eSu zq14hK-X^G|c-N)?Z&{$xw6Oy=wJ`BfHoxO*T2^>fvbwet4<`tzLr ztGGt@uLp`%@74a4kh*4mSETurY}Ct$yr)*&4(9eO4<6QZ#gU&gw9%% z>5s(Lnh3nzdTGmChK8HHeUV!)$;8P9&we)Hn8D$UYp*oiOGPAalrgn%_ZCikTVQ-_ z%Up$7O$Ev;OV@8G*gw6F>*2ZOMY{?eU$u&_?(w}dcj|}jHNWcFKlb}sMVx5NycAR` zlxcnMbODq4ciX;0#!;*MlVe<}jHcypN~kevc{Zy^KQd}U?XJScuvvaq9W#3;`Wv=6 z>^qgV(Wpq(WA|pEFgGRJ&Z!eQrnjn;eRkgUQ!&X>BHw=M;kN~oy$iV=?rL8Msy%aa zzWnp^`&oCtF<5cuqvdzT-ES^9;`uDx9 tAOCJY*tlDMcg~@p+0Pz@?~M7+u)TkSdm`IYV+IBW22WQ%mvv4FO#si%3G)B| literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_walls/textures/mcl_walls_cobble_wall_side.png b/mods/ITEMS/mcl_walls/textures/mcl_walls_cobble_wall_side.png new file mode 100644 index 0000000000000000000000000000000000000000..01937236d1b6d063a42b23db450dc972d27b2034 GIT binary patch literal 527 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7*pj^6T^JrS{AYOjZ#GC}Xn zPLH26r>;9UXQpNPvnRK|UO&FJ_|2T;jWH8vwRlc5rgyIxu1w!_g7L?{WIx?&Tag(Tw)r)^3N5>;C^donSUw&Sch+@VRG~ z?Tsye`r?IE;sVZB8(!&m&+!fYc`#F%LI0i`ny3cMk>zMr}_Q#}JFtt-+_W zS`0*Nv&^ajcXF&_|5$&^w>~Xl*9@onWwXCIbG7DqzqC?tR87k?pFF`L?OEQDC-Z(= zJXblniKlLk|M9CCZ~ql5NvxeH%*Ze=K2F%){^;Bd3Hw*bE3s+l$xi1s2z#>X!1?#` z$1>ewr@qUX^Xx^-qZ+Gq+deP*XkBk%Ux_KWTK`sv#v`8%`b-}%$- Sv4DYrfx*+&&t;ucLK6V{)vQ$j literal 0 HcmV?d00001 diff --git a/tools/Conversion_Table.csv b/tools/Conversion_Table.csv index a01d38f2..242381c6 100644 --- a/tools/Conversion_Table.csv +++ b/tools/Conversion_Table.csv @@ -958,3 +958,7 @@ Source path,Source file,Target path,Target file,xs,ys,xl,yl,xt,yt,Blacklisted? /assets/minecraft/textures/blocks,red_nether_brick.png,,mcl_fences_fence_gate_red_nether_brick.png,,,,,,, /assets/minecraft/textures/blocks,nether_brick.png,,mcl_fences_fence_gate_nether_brick.png,,,,,,, /assets/minecraft/textures/blocks,stonebrick_carved.png,,mcl_supplemental_stonebrick_carved_slab.png,,,,,,, +/assets/minecraft/textures/blocks,cobblestone.png,/mods/ITEMS/mcl_walls/textures,mcl_walls_cobble_wall_top.png,,,,,,, +/assets/minecraft/textures/blocks,cobblestone.png,/mods/ITEMS/mcl_walls/textures,mcl_walls_cobble_wall_side.png,,,,,,, +/assets/minecraft/textures/blocks,cobblestone_mossy.png,/mods/ITEMS/mcl_walls/textures,mcl_walls_cobble_mossy_wall_top.png,,,,,,, +/assets/minecraft/textures/blocks,cobblestone_mossy.png,/mods/ITEMS/mcl_walls/textures,mcl_walls_cobble_mossy_wall_side.png,,,,,,, From 2e09febaae7420a6d8b2fe751a78989ab25637d8 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Wed, 11 Dec 2019 04:23:26 +0100 Subject: [PATCH 380/737] Rename Moss Stone to Mossy Cobblestone --- mods/ITEMS/mcl_core/locale/mcl_core.de.tr | 3 +-- mods/ITEMS/mcl_core/locale/template.txt | 2 +- mods/ITEMS/mcl_core/nodes_base.lua | 2 +- mods/ITEMS/mcl_stairs/locale/mcl_stairs.de.tr | 8 ++++---- mods/ITEMS/mcl_stairs/locale/template.txt | 6 +++--- mods/ITEMS/mcl_stairs/register.lua | 2 +- mods/MAPGEN/mcl_biomes/init.lua | 4 ++-- mods/MAPGEN/mcl_dungeons/init.lua | 2 +- 8 files changed, 14 insertions(+), 15 deletions(-) diff --git a/mods/ITEMS/mcl_core/locale/mcl_core.de.tr b/mods/ITEMS/mcl_core/locale/mcl_core.de.tr index 3460001d..cab01c2e 100644 --- a/mods/ITEMS/mcl_core/locale/mcl_core.de.tr +++ b/mods/ITEMS/mcl_core/locale/mcl_core.de.tr @@ -142,8 +142,7 @@ Lit Redstone Ore=Leuchtendes Redstoneerz Magenta Stained Glass=Magenta Buntglas Molten gold. It is used to craft armor, tools, and whatnot.=Geschmolzenes Gold. Es wird benutzt, um Rüstungen, Werkzeuge, und anderes herzustellen. Molten iron. It is used to craft armor, tools, and whatnot.=Geschmolzenes Eisen. Es wird benutzt, um Rüstungen, Werkzeuge, und vieles mehr herzustellen. - -Moss Stone=Moosstein +Mossy Cobblestone=Moosiges Kopfsteinpflaster Mossy Stone Bricks=Moosige Steinziegel Mycelium=Myzel Mycelium is a type of dirt and the ideal soil for mushrooms. Unlike other dirt-type blocks, it can not be turned into farmland with a hoe. In light, mycelium slowly spreads over nearby dirt. Under an opaque block or a liquid, it eventually turns back into dirt.=Myzel ist eine Art Erde und der perfekte Nährboden für Pilze. Anders als bei anderen erdähnlichen Blöcken kann es mit einer Hacke nicht zu Ackerboden verwandelt werden. Im Licht wird sich Myzel langsam auf benachbarte Erde ausbreiten. Unter einem lichtundurchlässigen Block oder einer Flüssigkeit wird es sich früher oder später zurück zu Erde verwandeln. diff --git a/mods/ITEMS/mcl_core/locale/template.txt b/mods/ITEMS/mcl_core/locale/template.txt index 8460b90f..5ad9a8d9 100644 --- a/mods/ITEMS/mcl_core/locale/template.txt +++ b/mods/ITEMS/mcl_core/locale/template.txt @@ -142,7 +142,7 @@ Lit Redstone Ore= Magenta Stained Glass= Molten gold. It is used to craft armor, tools, and whatnot.= Molten iron. It is used to craft armor, tools, and whatnot.= -Moss Stone= +Mossy Cobblestone= Mossy Stone Bricks= Mycelium= Mycelium is a type of dirt and the ideal soil for mushrooms. Unlike other dirt-type blocks, it can not be turned into farmland with a hoe. In light, mycelium slowly spreads over nearby dirt. Under an opaque block or a liquid, it eventually turns back into dirt.= diff --git a/mods/ITEMS/mcl_core/nodes_base.lua b/mods/ITEMS/mcl_core/nodes_base.lua index 50c1d1cc..75df8e5e 100644 --- a/mods/ITEMS/mcl_core/nodes_base.lua +++ b/mods/ITEMS/mcl_core/nodes_base.lua @@ -672,7 +672,7 @@ minetest.register_node("mcl_core:cobble", { }) minetest.register_node("mcl_core:mossycobble", { - description = S("Moss Stone"), + description = S("Mossy Cobblestone"), _doc_items_longdesc = doc.sub.items.temp.build, tiles = {"default_mossycobble.png"}, is_ground_content = false, diff --git a/mods/ITEMS/mcl_stairs/locale/mcl_stairs.de.tr b/mods/ITEMS/mcl_stairs/locale/mcl_stairs.de.tr index 495aa577..8b53d8d1 100644 --- a/mods/ITEMS/mcl_stairs/locale/mcl_stairs.de.tr +++ b/mods/ITEMS/mcl_stairs/locale/mcl_stairs.de.tr @@ -39,9 +39,9 @@ Double Diorite Slab=Doppeldioritplatte Cobblestone Stairs=Kopfsteinpflastertreppe Cobblestone Slab=Kopfsteinpflasterplatte Double Cobblestone Slab=Doppelkopfsteinpflasterplatte -Moss Stone Stairs=Moossteintreppe -Moss Stone Slab=Moossteinplatte -Double Moss Stone Slab=Doppelmoossteinplatte +Mossy Cobblestone Slab=Moosige Kopfsteinpflasterplatte +Mossy Cobblestone Stairs=Moosige Kopfsteinpflastertreppe +Double Mossy Cobblestone Slab=Doppelte moosige Kopfsteinpflasterplatte Brick Stairs=Ziegeltreppe Brick Slab=Ziegelplatte Double Brick Slab=Doppelziegelplatte @@ -98,4 +98,4 @@ Double Polished Diorite Slab=Doppelte polierte Dioritplatte Polished Diorite Stairs=Polierte Diorittreppe Mossy Stone Brick Stairs=Moosige Steinziegeltreppe Mossy Stone Brick Slab=Moosige Steinziegelplatte -Double Mossy Stone Brick Slab=Doppelte Steinziegelplatte +Double Mossy Stone Brick Slab=Doppelte moosige Steinziegelplatte diff --git a/mods/ITEMS/mcl_stairs/locale/template.txt b/mods/ITEMS/mcl_stairs/locale/template.txt index bec58b3a..0638af3d 100644 --- a/mods/ITEMS/mcl_stairs/locale/template.txt +++ b/mods/ITEMS/mcl_stairs/locale/template.txt @@ -39,9 +39,9 @@ Double Diorite Slab= Cobblestone Stairs= Cobblestone Slab= Double Cobblestone Slab= -Moss Stone Stairs= -Moss Stone Slab= -Double Moss Stone Slab= +Mossy Cobblestone Stairs= +Mossy Cobblestone Slab= +Double Mossy Cobblestone Slab= Brick Stairs= Brick Slab= Double Brick Slab= diff --git a/mods/ITEMS/mcl_stairs/register.lua b/mods/ITEMS/mcl_stairs/register.lua index fbbedf2c..9f4c3425 100644 --- a/mods/ITEMS/mcl_stairs/register.lua +++ b/mods/ITEMS/mcl_stairs/register.lua @@ -45,7 +45,7 @@ mcl_stairs.register_stair_and_slab_simple("granite", "mcl_core:granite", S("Gran mcl_stairs.register_stair_and_slab_simple("diorite", "mcl_core:diorite", S("Diorite Stairs"), S("Diorite Slab"), S("Double Diorite Slab")) mcl_stairs.register_stair_and_slab_simple("cobble", "mcl_core:cobble", S("Cobblestone Stairs"), S("Cobblestone Slab"), S("Double Cobblestone Slab")) -mcl_stairs.register_stair_and_slab_simple("mossycobble", "mcl_core:mossycobble", S("Moss Stone Stairs"), S("Moss Stone Slab"), S("Double Moss Stone Slab")) +mcl_stairs.register_stair_and_slab_simple("mossycobble", "mcl_core:mossycobble", S("Mossy Cobblestone Stairs"), S("Mossy Cobblestone Slab"), S("Double Mossy Cobblestone Slab")) mcl_stairs.register_stair_and_slab_simple("brick_block", "mcl_core:brick_block", S("Brick Stairs"), S("Brick Slab"), S("Double Brick Slab")) diff --git a/mods/MAPGEN/mcl_biomes/init.lua b/mods/MAPGEN/mcl_biomes/init.lua index 19880f5b..3727dfcf 100644 --- a/mods/MAPGEN/mcl_biomes/init.lua +++ b/mods/MAPGEN/mcl_biomes/init.lua @@ -2765,7 +2765,7 @@ local function register_decorations() rotation = "0", }) - -- Moss stone boulder (3×3) + -- Mossy cobblestone boulder (3×3) minetest.register_decoration({ deco_type = "schematic", place_on = {"mcl_core:podzol", "mcl_core:dirt", "mcl_core:coarse_dirt"}, @@ -2785,7 +2785,7 @@ local function register_decorations() flags = "place_center_x, place_center_z", }) - -- Small moss stone boulder (2×2) + -- Small mossy cobblestone boulder (2×2) minetest.register_decoration({ deco_type = "schematic", place_on = {"mcl_core:podzol", "mcl_core:dirt", "mcl_core:coarse_dirt"}, diff --git a/mods/MAPGEN/mcl_dungeons/init.lua b/mods/MAPGEN/mcl_dungeons/init.lua index dc19a6e1..b10f73be 100644 --- a/mods/MAPGEN/mcl_dungeons/init.lua +++ b/mods/MAPGEN/mcl_dungeons/init.lua @@ -253,7 +253,7 @@ minetest.register_on_generated(function(minp, maxp) local p_pos = area:index(tx, ty, tz) -- Do not overwrite nodes with is_ground_content == false (e.g. bedrock) - -- Exceptions: cobblestone and moss stone so neighborings dungeons nicely connect to each other + -- Exceptions: cobblestone and mossy cobblestone so neighborings dungeons nicely connect to each other local name = minetest.get_name_from_content_id(data[p_pos]) if name == "mcl_core:cobble" or name == "mcl_core:mossycobble" or minetest.registered_nodes[name].is_ground_content then -- Floor From febcb96bb0cf28aa80af9333fa8e0a264c07a1d7 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Wed, 11 Dec 2019 04:53:01 +0100 Subject: [PATCH 381/737] Hide screwdriver --- mods/ITEMS/screwdriver/init.lua | 2 +- mods/MISC/mcl_wip/init.lua | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/mods/ITEMS/screwdriver/init.lua b/mods/ITEMS/screwdriver/init.lua index ca77e400..17d2706d 100644 --- a/mods/ITEMS/screwdriver/init.lua +++ b/mods/ITEMS/screwdriver/init.lua @@ -147,7 +147,7 @@ end minetest.register_tool("screwdriver:screwdriver", { description = S("Screwdriver"), inventory_image = "screwdriver.png", - groups = { tool = 1 }, + groups = { tool = 1, not_in_creative_inventory = 1 }, on_use = function(itemstack, user, pointed_thing) screwdriver.handler(itemstack, user, pointed_thing, screwdriver.ROTATE_FACE, 200) return itemstack diff --git a/mods/MISC/mcl_wip/init.lua b/mods/MISC/mcl_wip/init.lua index 4f8f0a56..03d33849 100644 --- a/mods/MISC/mcl_wip/init.lua +++ b/mods/MISC/mcl_wip/init.lua @@ -15,6 +15,7 @@ local wip_items = { "mobs_mc:wither", "mobs_mc:parrot", "mobs_mc:witch", + "screwdriver:screwdriver", } local experimental_items = { } From 506e039fc56379c9731d79e7109a767cbb89dc98 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Wed, 11 Dec 2019 19:54:58 +0100 Subject: [PATCH 382/737] Add unicolor groups to wool and carpet --- mods/ITEMS/mcl_wool/init.lua | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/mods/ITEMS/mcl_wool/init.lua b/mods/ITEMS/mcl_wool/init.lua index aabeb2e6..95958ddf 100644 --- a/mods/ITEMS/mcl_wool/init.lua +++ b/mods/ITEMS/mcl_wool/init.lua @@ -13,21 +13,21 @@ local wool = {} -- colors available. When crafting, the last recipes will be checked first. wool.dyes = { -- name, texture, wool desc., carpet desc., dye, color_group - {"white", "wool_white", S("White Wool"), S("White Carpet"), nil, "basecolor_white"}, + {"white", "wool_white", S("White Wool"), S("White Carpet"), nil, "unicolor_white"}, {"grey", "wool_dark_grey", S("Grey Wool"), S("Grey Carpet"), "dark_grey", "unicolor_darkgrey"}, - {"silver", "wool_grey", S("Light Grey Wool"), S("Light Grey Carpet"), "grey", "basecolor_grey"}, - {"black", "wool_black", S("Black Wool"), S("Black Carpet"), "black", "basecolor_black"}, - {"red", "wool_red", S("Red Wool"), S("Red Carpet"), "red", "basecolor_red"}, - {"yellow", "wool_yellow", S("Yellow Wool"), S("Yellow Carpet"), "yellow", "basecolor_yellow"}, + {"silver", "wool_grey", S("Light Grey Wool"), S("Light Grey Carpet"), "grey", "unicolor_grey"}, + {"black", "wool_black", S("Black Wool"), S("Black Carpet"), "black", "unicolor_black"}, + {"red", "wool_red", S("Red Wool"), S("Red Carpet"), "red", "unicolor_red"}, + {"yellow", "wool_yellow", S("Yellow Wool"), S("Yellow Carpet"), "yellow", "unicolor_yellow"}, {"green", "wool_dark_green", S("Green Wool"), S("Green Carpet"), "dark_green", "unicolor_dark_green"}, - {"cyan", "wool_cyan", S("Cyan Wool"), S("Cyan Carpet"), "cyan", "basecolor_cyan"}, - {"blue", "wool_blue", S("Blue Wool"), S("Blue Carpet"), "blue", "basecolor_blue"}, - {"magenta", "wool_magenta", S("Magenta Wool"), S("Magenta Carpet"), "magenta", "basecolor_magenta"}, - {"orange", "wool_orange", S("Orange Wool"), S("Orange Carpet"), "orange", "excolor_orange"}, - {"purple", "wool_violet", S("Purple Wool"), S("Purple Carpet"), "violet", "excolor_violet"}, + {"cyan", "wool_cyan", S("Cyan Wool"), S("Cyan Carpet"), "cyan", "unicolor_cyan"}, + {"blue", "wool_blue", S("Blue Wool"), S("Blue Carpet"), "blue", "unicolor_blue"}, + {"magenta", "wool_magenta", S("Magenta Wool"), S("Magenta Carpet"), "magenta", "unicolor_red_violet"}, + {"orange", "wool_orange", S("Orange Wool"), S("Orange Carpet"), "orange", "unicolor_orange"}, + {"purple", "wool_violet", S("Purple Wool"), S("Purple Carpet"), "violet", "unicolor_violet"}, {"brown", "wool_brown", S("Brown Wool"), S("Brown Carpet"), "brown", "unicolor_dark_orange"}, {"pink", "wool_pink", S("Pink Wool"), S("Pink Carpet"), "pink", "unicolor_light_red"}, - {"lime", "mcl_wool_lime", S("Lime Wool"), S("Lime Carpet"), "green", "basecolor_green"}, + {"lime", "mcl_wool_lime", S("Lime Wool"), S("Lime Carpet"), "green", "unicolor_green"}, {"light_blue", "mcl_wool_light_blue", S("Light Blue Wool"), S("Light Blue Carpet"), "lightblue", "unicolor_light_blue"}, } local canonical_color = "white" @@ -60,7 +60,7 @@ for _, row in ipairs(wool.dyes) do stack_max = 64, is_ground_content = false, tiles = {texture..".png"}, - groups = {handy=1,shearsy_wool=1, flammable=1,wool=1,building_block=1}, + groups = {handy=1,shearsy_wool=1, flammable=1,wool=1,building_block=1,[color_group]=1}, sounds = mcl_sounds.node_sound_wool_defaults(), _mcl_hardness = 0.8, _mcl_blast_resistance = 4, @@ -76,7 +76,7 @@ for _, row in ipairs(wool.dyes) do tiles = {texture..".png"}, wield_image = texture..".png", wield_scale = { x=1, y=1, z=0.5 }, - groups = {handy=1, carpet=1,attached_node=1,dig_by_water=1,deco_block=1}, + groups = {handy=1, carpet=1,attached_node=1,dig_by_water=1,deco_block=1,[color_group]=1}, sounds = mcl_sounds.node_sound_wool_defaults(), paramtype = "light", sunlight_propagates = true, From 5b4f33c8f1f8e250f490a559db51304ecae15133 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Wed, 11 Dec 2019 19:55:33 +0100 Subject: [PATCH 383/737] Add dummy support for placing carpets on llamas --- mods/ENTITIES/mobs_mc/llama.lua | 82 +++++++++++++++++++++++++++++++-- 1 file changed, 79 insertions(+), 3 deletions(-) diff --git a/mods/ENTITIES/mobs_mc/llama.lua b/mods/ENTITIES/mobs_mc/llama.lua index 07956761..49183980 100644 --- a/mods/ENTITIES/mobs_mc/llama.lua +++ b/mods/ENTITIES/mobs_mc/llama.lua @@ -4,6 +4,26 @@ local S = minetest.get_translator("mobs_mc") --################### LLAMA --################### +local carpets = { + -- group = { carpet , short_texture_name } + unicolor_white = { "mcl_wool:white_carpet", "white" }, + unicolor_dark_orange = { "mcl_wool:brown_carpet", "brown" }, + unicolor_grey = { "mcl_wool:silver_carpet", "light_gray" }, + unicolor_darkgrey = { "mcl_wool:grey_carpet", "gray" }, + unicolor_blue = { "mcl_wool:blue_carpet", "blue" }, + unicolor_dark_green = { "mcl_wool:green_carpet", "green" }, + unicolor_green = { "mcl_wool:lime_carpet", "lime" }, + unicolor_violet = { "mcl_wool:purple_carpet", "purple" }, + unicolor_light_red = { "mcl_wool:pink_carpet", "pink" }, + unicolor_yellow = { "mcl_wool:yellow_carpet", "yellow" }, + unicolor_orange = { "mcl_wool:orange_carpet", "orange" }, + unicolor_red = { "mcl_wool:red_carpet", "red" }, + unicolor_cyan = { "mcl_wool:cyan_carpet", "cyan" }, + unicolor_red_violet = { "mcl_wool:magenta_carpet", "magenta" }, + unicolor_black = { "mcl_wool:black_carpet", "black" }, + unicolor_light_blue = { "mcl_wool:light_blue_carpet", "light_blue" }, +} + mobs:register_mob("mobs_mc:llama", { type = "animal", hp_min = 15, @@ -18,7 +38,7 @@ mobs:register_mob("mobs_mc:llama", { {"blank.png", "blank.png", "mobs_mc_llama_gray.png"}, {"blank.png", "blank.png", "mobs_mc_llama_white.png"}, {"blank.png", "blank.png", "mobs_mc_llama.png"}, - -- TODO: Implement carpet (aka decor) on llama + -- TODO: Add llama carpet textures (Pixel Perfection seems to use verbatim copy from Minecraft :-( ) }, visual_size = {x=3, y=3}, makes_footstep_sound = true, @@ -109,7 +129,38 @@ mobs:register_mob("mobs_mc:llama", { -- Make sure tamed llama is mature and being clicked by owner only if self.tamed and not self.child and self.owner == clicker:get_player_name() then - local inv = clicker:get_inventory() + -- Place carpet + --[[ TODO: Re-enable this code when carpet textures arrived. + if minetest.get_item_group(item:get_name(), "carpet") == 1 and not self.carpet then + for group, carpetdata in pairs(carpets) do + if minetest.get_item_group(item:get_name(), group) == 1 then + if not minetest.settings:get_bool("creative_mode") then + item:take_item() + clicker:set_wielded_item(item) + end + local substr = carpetdata[2] + local tex_carpet = "mobs_mc_llama_decor_"..substr..".png" + self.base_texture = table.copy(self.base_texture) + self.base_texture[2] = tex_carpet + self.object:set_properties({ + textures = self.base_texture, + }) + self.carpet = item:get_name() + self.drops = { + {name = mobs_mc.items.leather, + chance = 1, + min = 0, + max = 2,}, + {name = item:get_name(), + chance = 1, + min = 1, + max = 1,}, + } + return + end + end + end + ]] -- detatch player already riding llama if self.driver and clicker == self.driver then @@ -127,7 +178,32 @@ mobs:register_mob("mobs_mc:llama", { elseif not self.driver and clicker:get_wielded_item():get_name() ~= "" then mobs:capture_mob(self, clicker, 0, 5, 60, false, nil) end - end + end, + + --[[ + TODO: Enable this code when carpet textures arrived. + on_breed = function(parent1, parent2) + -- When breeding, make sure the child has no carpet + local pos = parent1.object:get_pos() + local child, parent + if math.random(1,2) == 1 then + parent = parent1 + else + parent = parent2 + end + child = mobs:spawn_child(pos, parent.name) + if child then + local ent_c = child:get_luaentity() + ent_c.base_texture = table.copy(ent_c.base_texture) + ent_c.base_texture[2] = "blank.png" + child:set_properties({textures = ent_c.base_texture}) + ent_c.tamed = true + ent_c.carpet = nil + ent_c.owner = parent.owner + return false + end + end, + ]] }) From ec50b19fa01b272c77208273bbb33a652e749823 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Fri, 13 Dec 2019 08:56:23 +0100 Subject: [PATCH 384/737] Tweak screwdriver img --- mods/ITEMS/screwdriver/textures/screwdriver.png | Bin 182 -> 371 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/mods/ITEMS/screwdriver/textures/screwdriver.png b/mods/ITEMS/screwdriver/textures/screwdriver.png index b2a56d558b34392a3275da443c0ba32a3b4db340..f8324701afadc78285240298e8453fa31c4c3c17 100644 GIT binary patch delta 356 zcmdnS_?c;fL_G%^0|SHn=l_We3=C{Z-tI08j~V_mJpFNAC5wT9fwRCPvY3H^TNs2H z8D`CqU|?WiFY)wsWq-`W%Wlr{b9c)R1_nk3PZ!4!i_>!_?e99|AkbcKtif*PbSWe8 zaihzLy$y5M{@}V5U)gF_$-MrIv_@s`mbh}Ub!{U92l}jUX7st-BEVGc%CTsM z+hN6;`|itcyPE#j-^##c^z(=6`Ogn5{GMsl*v|MXbF%dAX3t9NsZk6J0cvYcF&?|m z)jz*@B`ZV2`lHtS%3~F0on_PFXIGi2!gOeo?_<-%%`*8dPdU|?YI MboFyt=akR{0B4w#DgXcg delta 166 zcmey&w2g6sL_G^L0|Ud`yN`kx7#MT|d_r7(G7EiF`7$#yc628s7z)39`EqWWSx=l* zxtH3CQum7&FUG~i<>uyAR#xuYw{K^Hk@fK_H)R%)Y32O5POM=Q-*yMdNzVcl<)@`QYDrMzFgn1 Date: Fri, 13 Dec 2019 09:41:38 +0100 Subject: [PATCH 385/737] Fix torch screwdriver rotation --- mods/ITEMS/mcl_torches/init.lua | 118 +++++++++++++++++++++++--------- 1 file changed, 84 insertions(+), 34 deletions(-) diff --git a/mods/ITEMS/mcl_torches/init.lua b/mods/ITEMS/mcl_torches/init.lua index 35cdf259..4b2288ad 100644 --- a/mods/ITEMS/mcl_torches/init.lua +++ b/mods/ITEMS/mcl_torches/init.lua @@ -1,9 +1,52 @@ local S = minetest.get_translator("mcl_torches") +local on_rotate_wall, on_rotate_floor +local mod_screwdriver = minetest.get_modpath("screwdriver") ~= nil + -- -- 3d torch part -- +-- Check if placement at given node is allowed +local function check_placement_allowed(node, wdir) + -- Torch placement rules: Disallow placement on some nodes. General rule: Solid, opaque, full cube collision box nodes are allowed. + -- Special allowed nodes: + -- * soul sand + -- * end portal frame (TODO) + -- * mob spawner + -- * Fence, wall, glass, hopper: Only on top + -- * Slab: Only on top if upside down + -- * Stairs: Only on top if upside down + + -- Special forbidden nodes: + -- * Piston + -- * Sticky piston + local def = minetest.registered_nodes[node.name] + if not def then + return false + -- No ceiling torches + elseif wdir == 0 then + return false + elseif not def.buildable_to then + if node.name ~= "mcl_nether:soul_sand" and node.name ~= "mcl_mobspawners:spawner" and + ((not def.groups.solid) or (not def.groups.opaque)) then + -- Only allow top placement on these nodes + if def.groups.glass or node.name == "mcl_hoppers:hopper" or node.name == "mcl_hoppers:hopper_side" or node.name == "mcl_hoppers:hopper_disabled" or node.name == "mcl_hoppers:hopper_side_disabled" or def.groups.fence == 1 or def.groups.wall or def.groups.slab_top == 1 or (def.groups.stair == 1 and minetest.facedir_to_dir(node.param2).y ~= 0) then + if wdir ~= 1 then + return false + end + else + return false + end + elseif node.name == "mesecons_pistons:piston_up_normal_off" or node.name == "mesecons_pistons:piston_up_sticky_off" or + node.name == "mesecons_pistons:piston_normal_off" or node.name == "mesecons_pistons:piston_sticky_off" or + node.name == "mesecons_pistons:piston_down_normal_off" or node.name == "mesecons_pistons:piston_down_sticky_off" then + return false + end + end + return true +end + mcl_torches = {} mcl_torches.register_torch = function(substring, description, doc_items_longdesc, doc_items_usagehelp, icon, mesh_floor, mesh_wall, tiles, light, groups, sounds, moredef) @@ -67,34 +110,8 @@ mcl_torches.register_torch = function(substring, description, doc_items_longdesc local above = pointed_thing.above local wdir = minetest.dir_to_wallmounted({x = under.x - above.x, y = under.y - above.y, z = under.z - above.z}) - -- Torch placement rules: Disallow placement on some nodes. General rule: Solid, opaque, full cube collision box nodes are allowed. - -- Special allowed nodes: - -- * soul sand - -- * end portal frame (TODO) - -- * mob spawner - -- * Fence, wall, glass, hopper: Only on top - -- * Slab: Only on top if upside down - -- * Stairs: Only on top if upside down - - -- Special forbidden nodes: - -- * Piston - -- * Sticky piston - if not def.buildable_to then - if node.name ~= "mcl_nether:soul_sand" and node.name ~= "mcl_mobspawners:spawner" and - ((not def.groups.solid) or (not def.groups.opaque)) then - -- Only allow top placement on these nodes - if def.groups.glass or node.name == "mcl_hoppers:hopper" or node.name == "mcl_hoppers:hopper_side" or node.name == "mcl_hoppers:hopper_disabled" or node.name == "mcl_hoppers:hopper_side_disabled" or def.groups.fence == 1 or def.groups.wall or def.groups.slab_top == 1 or (def.groups.stair == 1 and minetest.facedir_to_dir(node.param2).y ~= 0) then - if wdir ~= 1 then - return itemstack - end - else - return itemstack - end - elseif node.name == "mesecons_pistons:piston_up_normal_off" or node.name == "mesecons_pistons:piston_up_sticky_off" or - node.name == "mesecons_pistons:piston_normal_off" or node.name == "mesecons_pistons:piston_sticky_off" or - node.name == "mesecons_pistons:piston_down_normal_off" or node.name == "mesecons_pistons:piston_down_sticky_off" then - return itemstack - end + if check_placement_allowed(node, wdir) == false then + return itemstack end local itemstring = itemstack:get_name() @@ -102,10 +119,7 @@ mcl_torches.register_torch = function(substring, description, doc_items_longdesc local idef = fakestack:get_definition() local retval - if wdir == 0 then - -- Prevent placement of ceiling torches - return itemstack - elseif wdir == 1 then + if wdir == 1 then retval = fakestack:set_name(itemstring) else retval = fakestack:set_name(itemstring_wall) @@ -122,7 +136,31 @@ mcl_torches.register_torch = function(substring, description, doc_items_longdesc minetest.sound_play(idef.sounds.place, {pos=under, gain=1}) end return itemstack - end + end, + on_rotate = function(pos, node, user, mode) + if mode == screwdriver.ROTATE_AXIS then + local posses = { + { { x=-1, y=0, z=0 }, 3 }, + { { x=1, y=0, z=0 }, 2 }, + { { x=0, y=0, z=-1 }, 5 }, + { { x=0, y=0, z=1 }, 4 }, + } + node.name = itemstring_wall + for p=1, #posses do + local pos2 = vector.add(pos, posses[p][1]) + node.param2 = posses[p][2] + local node2 = minetest.get_node(pos2) + local def2 = minetest.registered_nodes[node2.name] + if def2 and def2.walkable and check_placement_allowed(node2, node.param2) then + minetest.set_node(pos, node) + return true + end + end + return false + else + return false + end + end, } if moredef ~= nil then for k,v in pairs(moredef) do @@ -153,7 +191,19 @@ mcl_torches.register_torch = function(substring, description, doc_items_longdesc wall_side = {-0.5, -0.5, -0.1, -0.2, 0.1, 0.1}, }, sounds = sounds, - on_rotate = false, + on_rotate = function(pos, node, user, mode) + if mode == screwdriver.ROTATE_AXIS then + node.name = itemstring + node.param2 = 1 + minetest.set_node(pos, node) + return true + elseif mode == screwdriver.ROTATE_FACE then + node.param2 = screwdriver.rotate.wallmounted(pos, node, mode) + minetest.set_node(pos, node) + return true + end + return false + end, } if moredef ~= nil then for k,v in pairs(moredef) do From 7df94278cfcbaa09ae65497942beb80c21a0b926 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Fri, 13 Dec 2019 09:47:27 +0100 Subject: [PATCH 386/737] Disallow all torch rotation by screwdriver --- mods/ITEMS/mcl_torches/init.lua | 42 ++------------------------------- 1 file changed, 2 insertions(+), 40 deletions(-) diff --git a/mods/ITEMS/mcl_torches/init.lua b/mods/ITEMS/mcl_torches/init.lua index 4b2288ad..3635cecb 100644 --- a/mods/ITEMS/mcl_torches/init.lua +++ b/mods/ITEMS/mcl_torches/init.lua @@ -1,8 +1,5 @@ local S = minetest.get_translator("mcl_torches") -local on_rotate_wall, on_rotate_floor -local mod_screwdriver = minetest.get_modpath("screwdriver") ~= nil - -- -- 3d torch part -- @@ -137,30 +134,7 @@ mcl_torches.register_torch = function(substring, description, doc_items_longdesc end return itemstack end, - on_rotate = function(pos, node, user, mode) - if mode == screwdriver.ROTATE_AXIS then - local posses = { - { { x=-1, y=0, z=0 }, 3 }, - { { x=1, y=0, z=0 }, 2 }, - { { x=0, y=0, z=-1 }, 5 }, - { { x=0, y=0, z=1 }, 4 }, - } - node.name = itemstring_wall - for p=1, #posses do - local pos2 = vector.add(pos, posses[p][1]) - node.param2 = posses[p][2] - local node2 = minetest.get_node(pos2) - local def2 = minetest.registered_nodes[node2.name] - if def2 and def2.walkable and check_placement_allowed(node2, node.param2) then - minetest.set_node(pos, node) - return true - end - end - return false - else - return false - end - end, + on_rotate = false, } if moredef ~= nil then for k,v in pairs(moredef) do @@ -191,19 +165,7 @@ mcl_torches.register_torch = function(substring, description, doc_items_longdesc wall_side = {-0.5, -0.5, -0.1, -0.2, 0.1, 0.1}, }, sounds = sounds, - on_rotate = function(pos, node, user, mode) - if mode == screwdriver.ROTATE_AXIS then - node.name = itemstring - node.param2 = 1 - minetest.set_node(pos, node) - return true - elseif mode == screwdriver.ROTATE_FACE then - node.param2 = screwdriver.rotate.wallmounted(pos, node, mode) - minetest.set_node(pos, node) - return true - end - return false - end, + on_rotate = false, } if moredef ~= nil then for k,v in pairs(moredef) do From 1a02ccd36f8617d65b7e504ac9ea092d2b427e92 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Fri, 13 Dec 2019 10:20:08 +0100 Subject: [PATCH 387/737] Add more node groups --- GROUPS.md | 5 ++++ mods/ITEMS/REDSTONE/mesecons_pistons/init.lua | 30 +++++++++++-------- mods/ITEMS/mcl_hoppers/init.lua | 4 +-- mods/ITEMS/mcl_portals/portal_end.lua | 6 ++-- mods/ITEMS/mcl_portals/portal_nether.lua | 2 +- 5 files changed, 29 insertions(+), 18 deletions(-) diff --git a/GROUPS.md b/GROUPS.md index cb1f531e..f2cc0ddd 100644 --- a/GROUPS.md +++ b/GROUPS.md @@ -56,6 +56,11 @@ Please read to learn how digging times * `anvil`: Anvil. 1: No damage. 2-3: Higher damage levels * `no_rename=1`: Item cannot be renamed by anvil * `comparator_signal=X`: If set, this node outputs a constant (!) comparator signal output of strength X. +* `piston=X`: Piston (main body) (1 = normal, 2 = sticky) +* `piston_pusher=X`: Piston pusher (1 = normal, 2 = sticky) +* `hopper=X`: Hopper (1 = downwards, 2 = sideways) +* `portal=1`: Portal (node that teleports players and things by standing inside) +* `end_portal_frame=X`: End portal frame (1 = no eye, 2 = with eye) #### Footnotes diff --git a/mods/ITEMS/REDSTONE/mesecons_pistons/init.lua b/mods/ITEMS/REDSTONE/mesecons_pistons/init.lua index 8ce7bcf6..ce0e17a2 100644 --- a/mods/ITEMS/REDSTONE/mesecons_pistons/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons_pistons/init.lua @@ -188,7 +188,7 @@ minetest.register_node("mesecons_pistons:piston_normal_off", { "mesecons_piston_back.png", "mesecons_piston_pusher_front.png" }, - groups = {handy = 1}, + groups = {handy = 1, piston=1}, paramtype = "light", paramtype2 = "facedir", is_ground_content = false, @@ -220,7 +220,7 @@ minetest.register_node("mesecons_pistons:piston_normal_on", { "mesecons_piston_back.png", "mesecons_piston_on_front.png" }, - groups = {handy=1, not_in_creative_inventory = 1}, + groups = {handy=1, piston=1, not_in_creative_inventory = 1}, paramtype = "light", paramtype2 = "facedir", is_ground_content = false, @@ -252,6 +252,7 @@ minetest.register_node("mesecons_pistons:piston_pusher_normal", { }, paramtype = "light", paramtype2 = "facedir", + groups = { piston_pusher = 1 }, is_ground_content = false, after_destruct = piston_remove_base, diggable = false, @@ -290,7 +291,7 @@ minetest.register_node("mesecons_pistons:piston_sticky_off", { "mesecons_piston_back.png", "mesecons_piston_pusher_front_sticky.png" }, - groups = {handy=1}, + groups = {handy=1, piston=2}, paramtype = "light", paramtype2 = "facedir", is_ground_content = false, @@ -322,7 +323,7 @@ minetest.register_node("mesecons_pistons:piston_sticky_on", { "mesecons_piston_back.png", "mesecons_piston_on_front.png" }, - groups = {handy=1, not_in_creative_inventory = 1}, + groups = {handy=1, piston=2, not_in_creative_inventory = 1}, paramtype = "light", paramtype2 = "facedir", is_ground_content = false, @@ -354,6 +355,7 @@ minetest.register_node("mesecons_pistons:piston_pusher_sticky", { }, paramtype = "light", paramtype2 = "facedir", + groups = { piston_pusher = 2 }, is_ground_content = false, after_destruct = piston_remove_base, diggable = false, @@ -406,7 +408,7 @@ minetest.register_node("mesecons_pistons:piston_up_normal_off", { "mesecons_piston_bottom.png", "mesecons_piston_bottom.png", }, - groups = {handy=1, not_in_creative_inventory = 1}, + groups = {handy=1, piston=1, not_in_creative_inventory = 1}, paramtype = "light", paramtype2 = "facedir", is_ground_content = false, @@ -441,7 +443,7 @@ minetest.register_node("mesecons_pistons:piston_up_normal_on", { "mesecons_piston_bottom.png", "mesecons_piston_bottom.png", }, - groups = {hanry=1, not_in_creative_inventory = 1}, + groups = {handy=1, piston_=1, not_in_creative_inventory = 1}, paramtype = "light", paramtype2 = "facedir", is_ground_content = false, @@ -473,6 +475,7 @@ minetest.register_node("mesecons_pistons:piston_up_pusher_normal", { }, paramtype = "light", paramtype2 = "facedir", + groups = { piston_pusher = 1 }, is_ground_content = false, after_destruct = piston_remove_base, diggable = false, @@ -508,7 +511,7 @@ minetest.register_node("mesecons_pistons:piston_up_sticky_off", { "mesecons_piston_bottom.png", "mesecons_piston_bottom.png", }, - groups = {handy=1, not_in_creative_inventory = 1}, + groups = {handy=1, piston=2, not_in_creative_inventory = 1}, paramtype = "light", paramtype2 = "facedir", is_ground_content = false, @@ -543,7 +546,7 @@ minetest.register_node("mesecons_pistons:piston_up_sticky_on", { "mesecons_piston_bottom.png", "mesecons_piston_bottom.png", }, - groups = {handy=1, not_in_creative_inventory = 1}, + groups = {handy=1, piston=2, not_in_creative_inventory = 1}, paramtype = "light", paramtype2 = "facedir", is_ground_content = false, @@ -575,6 +578,7 @@ minetest.register_node("mesecons_pistons:piston_up_pusher_sticky", { }, paramtype = "light", paramtype2 = "facedir", + groups = { piston_pusher = 2 }, is_ground_content = false, after_destruct = piston_remove_base, diggable = false, @@ -629,7 +633,7 @@ minetest.register_node("mesecons_pistons:piston_down_normal_off", { "mesecons_piston_bottom.png^[transformR180", "mesecons_piston_bottom.png^[transformR180", }, - groups = {handy=1, not_in_creative_inventory = 1}, + groups = {handy=1, piston=1, not_in_creative_inventory = 1}, paramtype = "light", paramtype2 = "facedir", is_ground_content = false, @@ -662,7 +666,7 @@ minetest.register_node("mesecons_pistons:piston_down_normal_on", { "mesecons_piston_bottom.png^[transformR180", "mesecons_piston_bottom.png^[transformR180", }, - groups = {handy=1, not_in_creative_inventory = 1}, + groups = {handy=1, piston=1, not_in_creative_inventory = 1}, paramtype = "light", paramtype2 = "facedir", is_ground_content = false, @@ -694,6 +698,7 @@ minetest.register_node("mesecons_pistons:piston_down_pusher_normal", { }, paramtype = "light", paramtype2 = "facedir", + groups = { piston_pusher = 1 }, is_ground_content = false, after_destruct = piston_remove_base, diggable = false, @@ -726,7 +731,7 @@ minetest.register_node("mesecons_pistons:piston_down_sticky_off", { "mesecons_piston_bottom.png^[transformR180", "mesecons_piston_bottom.png^[transformR180", }, - groups = {handy=1, not_in_creative_inventory = 1}, + groups = {handy=1, piston=2, not_in_creative_inventory = 1}, paramtype = "light", paramtype2 = "facedir", is_ground_content = false, @@ -759,7 +764,7 @@ minetest.register_node("mesecons_pistons:piston_down_sticky_on", { "mesecons_piston_bottom.png^[transformR180", "mesecons_piston_bottom.png^[transformR180", }, - groups = {handy=1, not_in_creative_inventory = 1}, + groups = {handy=1, piston=1, not_in_creative_inventory = 1}, paramtype = "light", paramtype2 = "facedir", is_ground_content = false, @@ -791,6 +796,7 @@ minetest.register_node("mesecons_pistons:piston_down_pusher_sticky", { }, paramtype = "light", paramtype2 = "facedir", + groups = { piston_pusher = 2 }, is_ground_content = false, after_destruct = piston_remove_base, diggable = false, diff --git a/mods/ITEMS/mcl_hoppers/init.lua b/mods/ITEMS/mcl_hoppers/init.lua index 964e94f2..78a0d431 100644 --- a/mods/ITEMS/mcl_hoppers/init.lua +++ b/mods/ITEMS/mcl_hoppers/init.lua @@ -21,7 +21,7 @@ local mcl_hoppers_formspec = local def_hopper = { inventory_image = "mcl_hoppers_item.png", wield_image = "mcl_hoppers_item.png", - groups = {pickaxey=1, container=2,deco_block=1,}, + groups = {pickaxey=1, container=2,deco_block=1,hopper=1}, drawtype = "nodebox", paramtype = "light", -- FIXME: mcl_hoppers_hopper_inside.png is unused by hoppers. @@ -208,7 +208,7 @@ end local def_hopper_side = { _doc_items_create_entry = false, drop = "mcl_hoppers:hopper", - groups = {pickaxey=1, container=2,not_in_creative_inventory=1}, + groups = {pickaxey=1, container=2,not_in_creative_inventory=1,hopper=2}, drawtype = "nodebox", paramtype = "light", paramtype2 = "facedir", diff --git a/mods/ITEMS/mcl_portals/portal_end.lua b/mods/ITEMS/mcl_portals/portal_end.lua index 4b9a0bbb..0b13a321 100644 --- a/mods/ITEMS/mcl_portals/portal_end.lua +++ b/mods/ITEMS/mcl_portals/portal_end.lua @@ -59,7 +59,7 @@ minetest.register_node("mcl_portals:portal_end", { {-0.5, -0.5, -0.5, 0.5, 4/16, 0.5}, }, }, - groups = {not_in_creative_inventory = 1, disable_jump = 1 }, + groups = {portal=1, not_in_creative_inventory = 1, disable_jump = 1}, _mcl_hardness = -1, _mcl_blast_resistance = 18000000, @@ -293,7 +293,7 @@ minetest.register_node("mcl_portals:end_portal_frame", { description = S("End Portal Frame"), _doc_items_longdesc = S("End portal frames are used in the construction of End portals. Each block has a socket for an eye of ender.") .. "\n" .. S("NOTE: The End dimension is currently incomplete and might change in future versions."), _doc_items_usagehelp = S("To create an End portal, you need 12 end portal frames and 12 eyes of ender. The end portal frames have to be arranged around a horizontal 3×3 area with each block facing inward. Any other arrangement will fail.") .. "\n" .. S("Place an eye of ender into each block. The end portal appears in the middle after placing the final eye.") .. "\n" .. S("Once placed, an eye of ender can not be taken back."), - groups = { creative_breakable = 1, deco_block = 1 }, + groups = { creative_breakable = 1, deco_block = 1, end_portal_frame = 1 }, tiles = { "mcl_portals_endframe_top.png", "mcl_portals_endframe_bottom.png", "mcl_portals_endframe_side.png" }, paramtype2 = "facedir", drawtype = "nodebox", @@ -316,7 +316,7 @@ minetest.register_node("mcl_portals:end_portal_frame", { minetest.register_node("mcl_portals:end_portal_frame_eye", { description = S("End Portal Frame with Eye of Ender"), _doc_items_create_entry = false, - groups = { creative_breakable = 1, deco_block = 1, comparator_signal = 15 }, + groups = { creative_breakable = 1, deco_block = 1, comparator_signal = 15, end_portal_frame = 2 }, tiles = { "mcl_portals_endframe_top.png^[lowpart:75:mcl_portals_endframe_eye.png", "mcl_portals_endframe_bottom.png", "mcl_portals_endframe_eye.png^mcl_portals_endframe_side.png" }, paramtype2 = "facedir", drawtype = "nodebox", diff --git a/mods/ITEMS/mcl_portals/portal_nether.lua b/mods/ITEMS/mcl_portals/portal_nether.lua index 7d39c395..99a2f4a3 100644 --- a/mods/ITEMS/mcl_portals/portal_nether.lua +++ b/mods/ITEMS/mcl_portals/portal_nether.lua @@ -127,7 +127,7 @@ minetest.register_node("mcl_portals:portal", { {-0.5, -0.5, -0.1, 0.5, 0.5, 0.1}, }, }, - groups = {not_in_creative_inventory = 1}, + groups = {portal=1, not_in_creative_inventory = 1}, on_destruct = destroy_portal, _mcl_hardness = -1, From b5133c0c4aacffe85975789ce5c064c08a33d22c Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Fri, 13 Dec 2019 10:20:22 +0100 Subject: [PATCH 388/737] Allow torch placement on more nodes --- mods/ITEMS/mcl_torches/init.lua | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/mods/ITEMS/mcl_torches/init.lua b/mods/ITEMS/mcl_torches/init.lua index 3635cecb..8d34346d 100644 --- a/mods/ITEMS/mcl_torches/init.lua +++ b/mods/ITEMS/mcl_torches/init.lua @@ -9,15 +9,14 @@ local function check_placement_allowed(node, wdir) -- Torch placement rules: Disallow placement on some nodes. General rule: Solid, opaque, full cube collision box nodes are allowed. -- Special allowed nodes: -- * soul sand - -- * end portal frame (TODO) -- * mob spawner - -- * Fence, wall, glass, hopper: Only on top - -- * Slab: Only on top if upside down - -- * Stairs: Only on top if upside down + -- * chorus flower + -- * glass, barrier, ice + -- * Fence, wall, hopper, end portal frame with ender eye: Only on top + -- * Slab, stairs: Only on top if upside down -- Special forbidden nodes: - -- * Piston - -- * Sticky piston + -- * Piston, sticky piston local def = minetest.registered_nodes[node.name] if not def then return false @@ -25,19 +24,17 @@ local function check_placement_allowed(node, wdir) elseif wdir == 0 then return false elseif not def.buildable_to then - if node.name ~= "mcl_nether:soul_sand" and node.name ~= "mcl_mobspawners:spawner" and + if node.name ~= "mcl_core:ice" and node.name ~= "mcl_nether:soul_sand" and node.name ~= "mcl_mobspawners:spawner" and node.name ~= "mcl_core:barrier" and node.name ~= "mcl_end:chorus_flower" and node.name ~= "mcl_end:chorus_flower_dead" and (not def.groups.glass) and ((not def.groups.solid) or (not def.groups.opaque)) then -- Only allow top placement on these nodes - if def.groups.glass or node.name == "mcl_hoppers:hopper" or node.name == "mcl_hoppers:hopper_side" or node.name == "mcl_hoppers:hopper_disabled" or node.name == "mcl_hoppers:hopper_side_disabled" or def.groups.fence == 1 or def.groups.wall or def.groups.slab_top == 1 or (def.groups.stair == 1 and minetest.facedir_to_dir(node.param2).y ~= 0) then + if node.name == "mcl_end:dragon_egg" or node.name == "mcl_portals:end_portal_frame_eye" or def.groups.hopper or def.groups.fence == 1 or def.groups.wall or def.groups.slab_top == 1 or def.groups.anvil or def.groups.pane or (def.groups.stair == 1 and minetest.facedir_to_dir(node.param2).y ~= 0) then if wdir ~= 1 then return false end else return false end - elseif node.name == "mesecons_pistons:piston_up_normal_off" or node.name == "mesecons_pistons:piston_up_sticky_off" or - node.name == "mesecons_pistons:piston_normal_off" or node.name == "mesecons_pistons:piston_sticky_off" or - node.name == "mesecons_pistons:piston_down_normal_off" or node.name == "mesecons_pistons:piston_down_sticky_off" then + elseif minetest.get_item_group(node.name, "piston") >= 1 then return false end end From d21e959055bd2164c289daf7585fb6207a037fb9 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Fri, 13 Dec 2019 10:22:38 +0100 Subject: [PATCH 389/737] Disallow torch placement on hopper --- mods/ITEMS/mcl_torches/init.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_torches/init.lua b/mods/ITEMS/mcl_torches/init.lua index 8d34346d..6d869e9c 100644 --- a/mods/ITEMS/mcl_torches/init.lua +++ b/mods/ITEMS/mcl_torches/init.lua @@ -12,7 +12,7 @@ local function check_placement_allowed(node, wdir) -- * mob spawner -- * chorus flower -- * glass, barrier, ice - -- * Fence, wall, hopper, end portal frame with ender eye: Only on top + -- * Fence, wall, end portal frame with ender eye: Only on top -- * Slab, stairs: Only on top if upside down -- Special forbidden nodes: @@ -27,7 +27,7 @@ local function check_placement_allowed(node, wdir) if node.name ~= "mcl_core:ice" and node.name ~= "mcl_nether:soul_sand" and node.name ~= "mcl_mobspawners:spawner" and node.name ~= "mcl_core:barrier" and node.name ~= "mcl_end:chorus_flower" and node.name ~= "mcl_end:chorus_flower_dead" and (not def.groups.glass) and ((not def.groups.solid) or (not def.groups.opaque)) then -- Only allow top placement on these nodes - if node.name == "mcl_end:dragon_egg" or node.name == "mcl_portals:end_portal_frame_eye" or def.groups.hopper or def.groups.fence == 1 or def.groups.wall or def.groups.slab_top == 1 or def.groups.anvil or def.groups.pane or (def.groups.stair == 1 and minetest.facedir_to_dir(node.param2).y ~= 0) then + if node.name == "mcl_end:dragon_egg" or node.name == "mcl_portals:end_portal_frame_eye" or def.groups.fence == 1 or def.groups.wall or def.groups.slab_top == 1 or def.groups.anvil or def.groups.pane or (def.groups.stair == 1 and minetest.facedir_to_dir(node.param2).y ~= 0) then if wdir ~= 1 then return false end From cfa77288c1f8bde73133b4c1eebc892d64dcead3 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Fri, 13 Dec 2019 10:59:30 +0100 Subject: [PATCH 390/737] Add screwdriver support to doors --- mods/ITEMS/mcl_doors/api_doors.lua | 48 +++++++++++++++++++++++++++--- 1 file changed, 44 insertions(+), 4 deletions(-) diff --git a/mods/ITEMS/mcl_doors/api_doors.lua b/mods/ITEMS/mcl_doors/api_doors.lua index 1b32d238..951e4d9f 100644 --- a/mods/ITEMS/mcl_doors/api_doors.lua +++ b/mods/ITEMS/mcl_doors/api_doors.lua @@ -287,7 +287,17 @@ function mcl_doors:register_door(name, def) action_on = on_mesecons_signal_open, }}, - on_rotate = false, + on_rotate = function(pos, node, user, mode, param2) + if mode == screwdriver.ROTATE_FACE then + minetest.remove_node(pos) + node.param2 = screwdriver.rotate.facedir(pos, node, mode) + minetest.set_node(pos, node) + node.name = name .."_t_1" + minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z}, node) + return true + end + return false + end, can_dig = check_player_priv, }) @@ -336,7 +346,17 @@ function mcl_doors:register_door(name, def) action_on = on_mesecons_signal_open_top, }}, - on_rotate = false, + on_rotate = function(pos, node, user, mode, param2) + if mode == screwdriver.ROTATE_FACE then + minetest.remove_node(pos) + node.param2 = screwdriver.rotate.facedir(pos, node, mode) + minetest.set_node(pos, node) + node.name = name .."_b_1" + minetest.set_node({x=pos.x,y=pos.y-1,z=pos.z}, node) + return true + end + return false + end, can_dig = check_player_priv, }) @@ -385,7 +405,17 @@ function mcl_doors:register_door(name, def) action_off = on_mesecons_signal_close, }}, - on_rotate = false, + on_rotate = function(pos, node, user, mode, param2) + if mode == screwdriver.ROTATE_FACE then + minetest.remove_node(pos) + node.param2 = screwdriver.rotate.facedir(pos, node, mode) + minetest.set_node(pos, node) + node.name = name .."_t_2" + minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z}, node) + return true + end + return false + end, can_dig = check_player_priv, }) @@ -434,7 +464,17 @@ function mcl_doors:register_door(name, def) action_off = on_mesecons_signal_close_top, }}, - on_rotate = false, + on_rotate = function(pos, node, user, mode, param2) + if mode == screwdriver.ROTATE_FACE then + minetest.remove_node(pos) + node.param2 = screwdriver.rotate.facedir(pos, node, mode) + minetest.set_node(pos, node) + node.name = name .."_b_2" + minetest.set_node({x=pos.x,y=pos.y-1,z=pos.z}, node) + return true + end + return false + end, can_dig = check_player_priv, }) From 4a7bb86803b541625310922c7c5aedbb237f8f36 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Fri, 13 Dec 2019 11:35:31 +0100 Subject: [PATCH 391/737] Fix odd redstone torch on wall placement --- mods/ITEMS/mcl_walls/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_walls/init.lua b/mods/ITEMS/mcl_walls/init.lua index 16222780..05ee367b 100644 --- a/mods/ITEMS/mcl_walls/init.lua +++ b/mods/ITEMS/mcl_walls/init.lua @@ -52,7 +52,7 @@ local function update_wall(pos) local upnode = minetest.get_node({x = pos.x, y = pos.y+1, z = pos.z}) if sum == 5 or sum == 10 then local def = minetest.registered_nodes[upnode.name] - if (def and def.walkable) or upnode.name == "mcl_torches:torch" then + if (def and def.walkable) or (minetest.get_item_group(upnode.name, "torch") == 1) then sum = sum + 11 end end From 8e224d0bd9ab8722810becd2872a8efe7fd8801d Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Fri, 13 Dec 2019 11:51:13 +0100 Subject: [PATCH 392/737] Change screwdriver image to PP style --- mods/ITEMS/screwdriver/init.lua | 1 + mods/ITEMS/screwdriver/textures/screwdriver.png | Bin 371 -> 357 bytes 2 files changed, 1 insertion(+) diff --git a/mods/ITEMS/screwdriver/init.lua b/mods/ITEMS/screwdriver/init.lua index 17d2706d..28d2c12a 100644 --- a/mods/ITEMS/screwdriver/init.lua +++ b/mods/ITEMS/screwdriver/init.lua @@ -147,6 +147,7 @@ end minetest.register_tool("screwdriver:screwdriver", { description = S("Screwdriver"), inventory_image = "screwdriver.png", + wield_image = "screwdriver.png^[transformFX", groups = { tool = 1, not_in_creative_inventory = 1 }, on_use = function(itemstack, user, pointed_thing) screwdriver.handler(itemstack, user, pointed_thing, screwdriver.ROTATE_FACE, 200) diff --git a/mods/ITEMS/screwdriver/textures/screwdriver.png b/mods/ITEMS/screwdriver/textures/screwdriver.png index f8324701afadc78285240298e8453fa31c4c3c17..27d13db8c6d2c1446ed2110b55b1aeda87cbed04 100644 GIT binary patch delta 282 zcmey&^pt5rNIjR4gjrhb1MFJPiz&r?LXJzRKeFvs%&g* zY;D5p>kW+z3=B3*SS7hkknMw%!rxDy{_pZEmMF+fOGrpa2s5tVdSvCy_U`V7FV^w$ z#Mc=oUF|UzW09Zp@BHDTM?bv3@834xzTRk#?H2y!+A}v~iV2G~W!L@trhPcySK4h6 zk3y(%7vqar>+P$21B~x5ywT4W`-Fjkfx*+&&t;ucLK6Uz(1C*h delta 296 zcmaFL^qFZwNIknb%g@~{KNuJo89ZGaLo80uowUE}kb^*by|D(nnbW0=#K(;;C-yeX zUHgOUR(xfvStaxOGtwHBy<6hS#n!PMadK2T_4nXoruLX?S*|Td)?7Y&pr&U3-G$#i zb2A*!+Q74D#)8N-)2jd4tzq)cZHN+cdLYNa9_X{anbGHRivUx7xhuz_8E%IaYwo)* zzwK)JUwpHu<(1PQDZyfuguBPyPG{Lt*1sYFa)TrJ;iwJK3D(z;+3on z4eO6u?<-fFb(T$wpIv393e%xUzK=~4H_td&w@P(ZLDasbfy=ko8eVP5-}^~d_}r(^ zOtm>*6V~~LJS{m_mU%_$gj{6^rfq^n1O+T!PC{xWt~$( F697d6h7SM$ From 325801efd7aed7ebf239f605170a31191e5055c3 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Fri, 13 Dec 2019 14:03:12 +0100 Subject: [PATCH 393/737] First step towards param2-based grass color --- mods/ITEMS/mcl_core/functions.lua | 12 +++++-- mods/ITEMS/mcl_core/nodes_base.lua | 33 ++++-------------- .../ITEMS/mcl_core/textures/default_grass.png | Bin 428 -> 0 bytes .../mcl_core/textures/default_grass_side.png | Bin 423 -> 0 bytes .../mcl_core_grass_block_side_overlay.png | Bin 0 -> 394 bytes .../textures/mcl_core_grass_block_top.png | Bin 0 -> 393 bytes mods/MAPGEN/mcl_biomes/init.lua | 28 +++++++-------- 7 files changed, 30 insertions(+), 43 deletions(-) delete mode 100644 mods/ITEMS/mcl_core/textures/default_grass.png delete mode 100644 mods/ITEMS/mcl_core/textures/default_grass_side.png create mode 100644 mods/ITEMS/mcl_core/textures/mcl_core_grass_block_side_overlay.png create mode 100644 mods/ITEMS/mcl_core/textures/mcl_core_grass_block_top.png diff --git a/mods/ITEMS/mcl_core/functions.lua b/mods/ITEMS/mcl_core/functions.lua index 9eec03d0..0d08c340 100644 --- a/mods/ITEMS/mcl_core/functions.lua +++ b/mods/ITEMS/mcl_core/functions.lua @@ -653,9 +653,9 @@ function mcl_core.get_grass_block_type(pos) end end if dry then - return {name="mcl_core:dirt_with_dry_grass"} + return {name="mcl_core:dirt_with_grass", param2=1} else - return {name="mcl_core:dirt_with_grass"} + return {name="mcl_core:dirt_with_grass", param2=0} end end @@ -1232,10 +1232,11 @@ end -- * itemstring_clear: Itemstring of the original “clear” node without snow -- * tiles: Optional custom tiles -- * sounds: Optional custom sounds +-- * clear_colorization: Optional. If true, will clear all paramtype2="color" related node def. fields -- -- The snowable nodes also MUST have _mcl_snowed defined to contain the name -- of the snowed node. -mcl_core.register_snowed_node = function(itemstring_snowed, itemstring_clear, tiles, sounds) +mcl_core.register_snowed_node = function(itemstring_snowed, itemstring_clear, tiles, sounds, clear_colorization) local def = table.copy(minetest.registered_nodes[itemstring_clear]) local create_doc_alias if def.description then @@ -1270,6 +1271,11 @@ mcl_core.register_snowed_node = function(itemstring_snowed, itemstring_clear, ti else def.tiles = tiles end + if clear_colorization then + def.paramtype2 = nil + def.color = nil + def.overlay_tiles = nil + end if not sounds then def.sounds = mcl_sounds.node_sound_dirt_defaults({ footstep = { name = "pedology_snow_soft_footstep", gain = 0.5 } diff --git a/mods/ITEMS/mcl_core/nodes_base.lua b/mods/ITEMS/mcl_core/nodes_base.lua index 75df8e5e..eb56b379 100644 --- a/mods/ITEMS/mcl_core/nodes_base.lua +++ b/mods/ITEMS/mcl_core/nodes_base.lua @@ -312,7 +312,12 @@ minetest.register_node("mcl_core:dirt_with_grass", { description = S("Grass Block"), _doc_items_longdesc = S("A grass block is dirt with a grass cover. Grass blocks are resourceful blocks which allow the growth of all sorts of plants. They can be turned into farmland with a hoe and turned into grass paths with a shovel. In light, the grass slowly spreads onto dirt nearby. Under an opaque block or a liquid, a grass block may turn back to dirt."), _doc_items_hidden = false, - tiles = {"default_grass.png", "default_dirt.png", {name="default_dirt.png^default_grass_side.png", tileable_vertical=false}}, + paramtype2 = "color", + tiles = {"mcl_core_grass_block_top.png", { name="default_dirt.png", color="white" }}, + overlay_tiles = {"mcl_core_grass_block_top.png", "", {name="mcl_core_grass_block_side_overlay.png", tileable_vertical=false}}, + palette = "mcl_core_palette_grass.png", + palette_index = 0, + color = "#5ac557", is_ground_content = true, stack_max = 64, groups = {handy=1,shovely=1,dirt=2,grass_block=1, grass_block_no_snow=1, soil=1, soil_sapling=2, soil_sugarcane=1, cultivatable=2, spreading_dirt_type=1, enderman_takable=1, building_block=1}, @@ -332,31 +337,7 @@ minetest.register_node("mcl_core:dirt_with_grass", { _mcl_blast_resistance = 3, _mcl_hardness = 0.6, }) -mcl_core.register_snowed_node("mcl_core:dirt_with_grass_snow", "mcl_core:dirt_with_grass") - --- Grass Block variant for dry biomes -minetest.register_node("mcl_core:dirt_with_dry_grass", { - _doc_items_create_entry = false, - tiles = {"default_dry_grass.png", "default_dirt.png", {name="default_dirt.png^default_dry_grass_side.png", tileable_vertical=false}}, - is_ground_content = true, - stack_max = 64, - groups = {handy=1,shovely=1, dirt=2,grass_block=1, grass_block_no_snow=1, soil=1, soil_sapling=2, soil_sugarcane=1, cultivatable=2, spreading_dirt_type=1, enderman_takable=1, building_block=1, not_in_creative_inventory=1}, - drop = 'mcl_core:dirt', - sounds = mcl_sounds.node_sound_dirt_defaults({ - footstep = {name="default_grass_footstep", gain=0.4}, - }), - on_construct = mcl_core.on_snowable_construct, - _mcl_snowed = "mcl_core:dirt_with_dry_grass_snow", - _mcl_grass_palette_index = 1, - _mcl_blast_resistance = 3, - _mcl_hardness = 0.6, -}) -mcl_core.register_snowed_node("mcl_core:dirt_with_dry_grass_snow", "mcl_core:dirt_with_dry_grass") - -if minetest.get_modpath("doc") then - doc.add_entry_alias("nodes", "mcl_core:dirt_with_grass", "nodes", "mcl_core:dirt_with_dry_grass") - doc.add_entry_alias("nodes", "mcl_core:dirt_with_grass", "nodes", "mcl_core:dirt_with_dry_grass_snow") -end +mcl_core.register_snowed_node("mcl_core:dirt_with_grass_snow", "mcl_core:dirt_with_grass", nil, nil, true) minetest.register_node("mcl_core:grass_path", { tiles = {"mcl_core_grass_path_top.png", "default_dirt.png", "mcl_core_grass_path_side.png"}, diff --git a/mods/ITEMS/mcl_core/textures/default_grass.png b/mods/ITEMS/mcl_core/textures/default_grass.png deleted file mode 100644 index dd57bb1ce169daf7c0464f2cb9fcab335b7d5f6f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 428 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd7G?$phPQVgfdp969eo`c7&i8E|4C$JU|>*4 z_6YK2V5m}KU}$JzVEDzrz|io5fuYoZf#FpG1B2BJ1_tqhIlBUF7#JA%1AIbUwf!}8 zVhr@N&D7kL{{R1f>ek**3=9m6N#5=*Ed3cb0~r_?I14-?iy0XB_JS~@`|k;B85kJY zOFVsD*&p+8GiXS?JM}Myfq@~>)5S4_*4 z_6YK2V5m}KU}$JzVEDzrz|io5fuYoZf#FpG1B2BJ1_tqhIlBUF7#J8t1AIbU85kIJ zVhr@N&9wbBOe$?u?B)Oe|G&03y@i2+fw3gWFPOpM*^M+1C&}C0g)K2{M=b*b180Fp zWHAE+-vJP2%(~Xe$-uzCUgGKN%Kn&#n?XbB-Kl>u3=9mOo-U3d9M{(#j23NB5MVvv z%_7FTL7b_gfcwPb_=*1_ukf8auzJs4rAvK6s!hw5N|tX}#qzlI%FNPh4Qut4d#5to zx%b84L^zswJ)wB`Jv|saDBFsfi`23`Pcqmb!*Ux`u`!1_o9p z23AI9+6D$z1_rgt*6UF;Fdh=n1`3gQjl%Kq8bJUMsZIU#}JFtZzpW@ zI^rPEwqGWEiHE}Js)P+fha9=A6(^)`5IA`1+_7W-)|@l9$d*5FO?`u%Z@vL?5JE~p6R36#Z5c41h{&>-FNWOeFx z-)@mYs|Tj1l#+GsggM;S?anFa>N|euZPu-`|Gw<7UFfN_PT!w*?Vgp_ZUmJu|E;fB zpVeitRL98YWkRK0ThOb?dvDLS{wlVAgSq7aUMGf6SA|Z0uB@$l^zY-r9ag&o+|{2i xnDXn}*>vu$tG_L6o}X|;|D*l~aTYsU|?Wi@O1TaS?83{1OPGzrYHaa literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_grass_block_top.png b/mods/ITEMS/mcl_core/textures/mcl_core_grass_block_top.png new file mode 100644 index 0000000000000000000000000000000000000000..7a3a22ffceb6e5f5db74db14f1df3d814446937c GIT binary patch literal 393 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4kiW$h6xih%orFL*pj^6T^JrS{AYOj`sfV;)`}OTO+M>pK}37{xqY978nDrv@4J z9aa#y<18Y^C3HfxXm;DPU%xN>eK70yf@*VDhbk3w0LnbUQlz+Uh^Ol0Ozz>{nIwO!YndqV1w*sKenGQR~-+ zv+^o^3f^*TWBax2xM#Ji1eY30ad< zvrf(0!hhp@X2ar?-mM1DY8$Qx&kbLcVl9&`<5L`Hw{+6aM7iLvn-$sJ_fEEO&0${s w-+YVDxxh_d8cyuFbSmfPrR5>at*7Ku4y`$+&nmE(fq{X+)78&qol`;+0JU1BPXGV_ literal 0 HcmV?d00001 diff --git a/mods/MAPGEN/mcl_biomes/init.lua b/mods/MAPGEN/mcl_biomes/init.lua index 3727dfcf..22331dd0 100644 --- a/mods/MAPGEN/mcl_biomes/init.lua +++ b/mods/MAPGEN/mcl_biomes/init.lua @@ -919,7 +919,7 @@ local function register_biomes() -- Strata don't generate here. minetest.register_biome({ name = "MesaPlateauF_grasstop", - node_top = "mcl_core:dirt_with_dry_grass", + node_top = "mcl_core:dirt_with_grass", depth_top = 1, node_filler = "mcl_core:dirt", depth_filler = 1, @@ -985,7 +985,7 @@ local function register_biomes() -- Grass plateau minetest.register_biome({ name = "MesaPlateauFM_grasstop", - node_top = "mcl_core:dirt_with_dry_grass", + node_top = "mcl_core:dirt_with_grass", depth_top = 1, node_filler = "mcl_core:coarse_dirt", depth_filler = 2, @@ -1035,7 +1035,7 @@ local function register_biomes() -- Savanna minetest.register_biome({ name = "Savanna", - node_top = "mcl_core:dirt_with_dry_grass", + node_top = "mcl_core:dirt_with_grass", depth_top = 1, node_filler = "mcl_core:dirt", depth_filler = 2, @@ -1081,7 +1081,7 @@ local function register_biomes() -- Otherwise identical to Savanna minetest.register_biome({ name = "SavannaM", - node_top = "mcl_core:dirt_with_dry_grass", + node_top = "mcl_core:dirt_with_grass", depth_top = 1, node_filler = "mcl_core:coarse_dirt", depth_filler = 3, @@ -1514,7 +1514,7 @@ local function register_biomelike_ores() minetest.register_ore({ ore_type = "sheet", ore = "mcl_core:coarse_dirt", - wherein = {"mcl_core:dirt_with_dry_grass", "mcl_core:dirt"}, + wherein = {"mcl_core:dirt_with_grass", "mcl_core:dirt"}, column_height_max = 1, column_midpoint_factor = 0.0, y_min = mcl_vars.mg_overworld_min, @@ -1526,7 +1526,7 @@ local function register_biomelike_ores() minetest.register_ore({ ore_type = "blob", ore = "mcl_core:coarse_dirt", - wherein = {"mcl_core:dirt_with_dry_grass", "mcl_core:dirt"}, + wherein = {"mcl_core:dirt_with_grass", "mcl_core:dirt"}, clust_scarcity = 1500, clust_num_ores = 25, clust_size = 7, @@ -1537,7 +1537,7 @@ local function register_biomelike_ores() minetest.register_ore({ ore_type = "sheet", ore = "mcl_core:coarse_dirt", - wherein = {"mcl_core:dirt_with_dry_grass", "mcl_core:dirt"}, + wherein = {"mcl_core:dirt_with_grass", "mcl_core:dirt"}, column_height_max = 1, column_midpoint_factor = 0.0, y_min = mcl_vars.mg_overworld_min, @@ -1549,7 +1549,7 @@ local function register_biomelike_ores() minetest.register_ore({ ore_type = "blob", ore = "mcl_core:coarse_dirt", - wherein = {"mcl_core:dirt_with_dry_grass", "mcl_core:dirt"}, + wherein = {"mcl_core:dirt_with_grass", "mcl_core:dirt"}, clust_scarcity = 1800, clust_num_ores = 65, clust_size = 15, @@ -2251,7 +2251,7 @@ local function register_decorations() }) minetest.register_decoration({ deco_type = "schematic", - place_on = {"mcl_core:dirt_with_dry_grass", "mcl_core:dirt"}, + place_on = {"mcl_core:dirt_with_grass", "mcl_core:dirt"}, sidelen = 16, noise_params = { offset = 0.015, @@ -2270,7 +2270,7 @@ local function register_decorations() }) minetest.register_decoration({ deco_type = "schematic", - place_on = {"mcl_core:dirt_with_dry_grass", "mcl_core:dirt"}, + place_on = {"mcl_core:dirt_with_grass", "mcl_core:dirt"}, sidelen = 16, noise_params = { offset = 0.008, @@ -2565,7 +2565,7 @@ local function register_decorations() for a=1, 7 do minetest.register_decoration({ deco_type = "schematic", - place_on = {"mcl_core:dirt_with_dry_grass", "mcl_core:dirt", "mcl_core:coarse_dirt"}, + place_on = {"mcl_core:dirt_with_grass", "mcl_core:dirt", "mcl_core:coarse_dirt"}, sidelen = 16, fill_ratio = 0.0002, biomes = {"Savanna", "SavannaM"}, @@ -2872,7 +2872,7 @@ local function register_decorations() num_spawn_by = 1, }) - local dry_index = minetest.registered_nodes["mcl_core:dirt_with_dry_grass"]._mcl_grass_palette_index + local dry_index = minetest.registered_nodes["mcl_core:dirt_with_grass"]._mcl_grass_palette_index -- Doubletall grass local register_doubletall_grass = function(offset, scale, biomes, param2) @@ -3435,7 +3435,7 @@ local function register_decorations() -- Dead bushes minetest.register_decoration({ deco_type = "simple", - place_on = {"group:sand", "mcl_core:podzol", "mcl_core:dirt", "mcl_core:dirt_with_dry_grass", "mcl_core:coarse_dirt", "group:hardened_clay"}, + place_on = {"group:sand", "mcl_core:podzol", "mcl_core:dirt", "mcl_core:dirt_with_grass", "mcl_core:coarse_dirt", "group:hardened_clay"}, sidelen = 16, noise_params = { offset = 0.0, @@ -3453,7 +3453,7 @@ local function register_decorations() }) minetest.register_decoration({ deco_type = "simple", - place_on = {"group:sand", "mcl_core:dirt", "mcl_core:dirt_with_dry_grass", "mcl_core:coarse_dirt"}, + place_on = {"group:sand", "mcl_core:dirt", "mcl_core:dirt_with_grass", "mcl_core:coarse_dirt"}, sidelen = 16, noise_params = { offset = 0.1, From 9c55b6c9c992c837b2c4329fbddf67fbe08e646f Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Fri, 13 Dec 2019 14:18:35 +0100 Subject: [PATCH 394/737] Update grass color after placing grass block --- mods/ITEMS/mcl_core/functions.lua | 2 +- mods/ITEMS/mcl_core/nodes_base.lua | 9 ++++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/mods/ITEMS/mcl_core/functions.lua b/mods/ITEMS/mcl_core/functions.lua index 0d08c340..b4d7c6f0 100644 --- a/mods/ITEMS/mcl_core/functions.lua +++ b/mods/ITEMS/mcl_core/functions.lua @@ -639,7 +639,7 @@ end local grass_spread_randomizer = PseudoRandom(minetest.get_mapgen_setting("seed")) --- Return appropriate grass block node for pos. Dry grass for dry/hot biomes, normal grass otherwise. +-- Return appropriate grass block node for pos function mcl_core.get_grass_block_type(pos) local biome_data = minetest.get_biome_data(pos) local dry = false diff --git a/mods/ITEMS/mcl_core/nodes_base.lua b/mods/ITEMS/mcl_core/nodes_base.lua index eb56b379..ca350579 100644 --- a/mods/ITEMS/mcl_core/nodes_base.lua +++ b/mods/ITEMS/mcl_core/nodes_base.lua @@ -326,9 +326,12 @@ minetest.register_node("mcl_core:dirt_with_grass", { footstep = {name="default_grass_footstep", gain=0.4}, }), on_construct = function(pos) - local new_node = mcl_core.get_grass_block_type(pos) - if new_node.name ~= "mcl_core:dirt_with_grass" then - minetest.set_node(pos, new_node) + local node = minetest.get_node(pos) + if node.param2 == 0 then + local new_node = mcl_core.get_grass_block_type(pos) + if new_node.param2 ~= 0 or new_node.name ~= "mcl_core:dirt_with_grass" then + minetest.set_node(pos, new_node) + end end return mcl_core.on_snowable_construct(pos) end, From 6002cd0af584c3e1a0bb06ef2d3b2c420f167f69 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Fri, 13 Dec 2019 14:28:24 +0100 Subject: [PATCH 395/737] Fix tallgrass, fern, bonemeal for new grass color --- mods/ITEMS/mcl_core/functions.lua | 2 ++ mods/ITEMS/mcl_core/nodes_base.lua | 1 - mods/ITEMS/mcl_dye/init.lua | 2 +- mods/ITEMS/mcl_flowers/init.lua | 10 +++++----- mods/MAPGEN/mcl_biomes/init.lua | 16 ++++++++-------- 5 files changed, 16 insertions(+), 15 deletions(-) diff --git a/mods/ITEMS/mcl_core/functions.lua b/mods/ITEMS/mcl_core/functions.lua index b4d7c6f0..40440a42 100644 --- a/mods/ITEMS/mcl_core/functions.lua +++ b/mods/ITEMS/mcl_core/functions.lua @@ -1273,6 +1273,8 @@ mcl_core.register_snowed_node = function(itemstring_snowed, itemstring_clear, ti end if clear_colorization then def.paramtype2 = nil + def.palette = nil + def.palette_index = nil def.color = nil def.overlay_tiles = nil end diff --git a/mods/ITEMS/mcl_core/nodes_base.lua b/mods/ITEMS/mcl_core/nodes_base.lua index ca350579..279917e7 100644 --- a/mods/ITEMS/mcl_core/nodes_base.lua +++ b/mods/ITEMS/mcl_core/nodes_base.lua @@ -336,7 +336,6 @@ minetest.register_node("mcl_core:dirt_with_grass", { return mcl_core.on_snowable_construct(pos) end, _mcl_snowed = "mcl_core:dirt_with_grass_snow", - _mcl_grass_palette_index = 0, _mcl_blast_resistance = 3, _mcl_hardness = 0.6, }) diff --git a/mods/ITEMS/mcl_dye/init.lua b/mods/ITEMS/mcl_dye/init.lua index 11a6f657..30c493ff 100644 --- a/mods/ITEMS/mcl_dye/init.lua +++ b/mods/ITEMS/mcl_dye/init.lua @@ -255,7 +255,7 @@ mcl_dye.apply_bone_meal = function(pointed_thing) if math.random(1,100) <= 90 then -- 90% tall grass, 10% flower if math.random(1,100) <= 90 then - local col = minetest.registered_nodes[n2.name]._mcl_grass_palette_index + local col = n2.param2 minetest.add_node(pos, {name="mcl_flowers:tallgrass", param2=col}) else local flowers_table diff --git a/mods/ITEMS/mcl_flowers/init.lua b/mods/ITEMS/mcl_flowers/init.lua index c2708500..667a74b6 100644 --- a/mods/ITEMS/mcl_flowers/init.lua +++ b/mods/ITEMS/mcl_flowers/init.lua @@ -17,7 +17,7 @@ local on_place_flower = mcl_util.generate_on_place_plant_function(function(pos, local has_palette = minetest.registered_nodes[itemstack:get_name()].palette ~= nil local colorize if has_palette then - colorize = minetest.registered_nodes[soil_node.name]._mcl_grass_palette_index + colorize = soil_node.param2 end if not colorize then colorize = 0 @@ -226,8 +226,8 @@ local function add_large_plant(name, desc, longdesc, bottom_img, top_img, inv_im local top = { x = bottom.x, y = bottom.y + 1, z = bottom.z } local bottom_buildable = minetest.registered_nodes[minetest.get_node(bottom).name].buildable_to local top_buildable = minetest.registered_nodes[minetest.get_node(top).name].buildable_to - local floorname = minetest.get_node({x=bottom.x, y=bottom.y-1, z=bottom.z}).name - if not minetest.registered_nodes[floorname] then + local floor = minetest.get_node({x=bottom.x, y=bottom.y-1, z=bottom.z}) + if not minetest.registered_nodes[floor.name] then return itemstack end @@ -243,10 +243,10 @@ local function add_large_plant(name, desc, longdesc, bottom_img, top_img, inv_im -- * If not a flower, also allowed on podzol and coarse dirt -- * Only with light level >= 8 -- * Only if two enough space - if (floorname == "mcl_core:dirt" or minetest.get_item_group(floorname, "grass_block") == 1 or (not is_flower and (floorname == "mcl_core:coarse_dirt" or floorname == "mcl_core:podzol" or floorname == "mcl_core:podzol_snow"))) and bottom_buildable and top_buildable and light_ok then + if (floor.name == "mcl_core:dirt" or minetest.get_item_group(floor.name, "grass_block") == 1 or (not is_flower and (floor.name == "mcl_core:coarse_dirt" or floor.name == "mcl_core:podzol" or floor.name == "mcl_core:podzol_snow"))) and bottom_buildable and top_buildable and light_ok then local param2 if grass_color then - param2 = minetest.registered_nodes[floorname]._mcl_grass_palette_index + param2 = floor.param2 end -- Success! We can now place the flower minetest.sound_play(minetest.registered_nodes[itemstring].sounds.place, {pos = bottom, gain=1}) diff --git a/mods/MAPGEN/mcl_biomes/init.lua b/mods/MAPGEN/mcl_biomes/init.lua index 22331dd0..c306de2e 100644 --- a/mods/MAPGEN/mcl_biomes/init.lua +++ b/mods/MAPGEN/mcl_biomes/init.lua @@ -2872,7 +2872,7 @@ local function register_decorations() num_spawn_by = 1, }) - local dry_index = minetest.registered_nodes["mcl_core:dirt_with_grass"]._mcl_grass_palette_index + local dry_grass_index = 1 -- Doubletall grass local register_doubletall_grass = function(offset, scale, biomes, param2) @@ -2905,7 +2905,7 @@ local function register_decorations() register_doubletall_grass(-0.01, 0.03, {"Taiga", "Forest", "FlowerForest", "BirchForest", "BirchForestM", "RoofedForest"}) register_doubletall_grass(-0.002, 0.03, {"Plains", "SunflowerPlains"}) - register_doubletall_grass(-0.0005, -0.03, {"Savanna", "SavannaM"}, dry_index) + register_doubletall_grass(-0.0005, -0.03, {"Savanna", "SavannaM"}, dry_grass_index) -- Large ferns local register_double_fern = function(offset, scale, biomes) @@ -3354,18 +3354,18 @@ local function register_decorations() register_grass_decoration("tallgrass", 0, 0.06, grass_forest) register_grass_decoration("tallgrass", 0.015, 0.045, grass_forest) register_grass_decoration("tallgrass", 0.03, 0.03, grass_forest) - register_grass_decoration("tallgrass", -0.03, 0.09, grass_mpf, dry_index) - register_grass_decoration("tallgrass", -0.015, 0.075, grass_mpf, dry_index) - register_grass_decoration("tallgrass", 0, 0.06, grass_mpf, dry_index) - register_grass_decoration("tallgrass", 0.01, 0.045, grass_mpf, dry_index) + register_grass_decoration("tallgrass", -0.03, 0.09, grass_mpf, dry_grass_index) + register_grass_decoration("tallgrass", -0.015, 0.075, grass_mpf, dry_grass_index) + register_grass_decoration("tallgrass", 0, 0.06, grass_mpf, dry_grass_index) + register_grass_decoration("tallgrass", 0.01, 0.045, grass_mpf, dry_grass_index) register_grass_decoration("tallgrass", 0.01, 0.05, grass_forest) register_grass_decoration("tallgrass", 0.03, 0.03, grass_plains) register_grass_decoration("tallgrass", 0.05, 0.01, grass_plains) register_grass_decoration("tallgrass", 0.07, -0.01, grass_plains) register_grass_decoration("tallgrass", 0.09, -0.03, grass_plains) - register_grass_decoration("tallgrass", 0.18, -0.03, grass_savanna, dry_index) + register_grass_decoration("tallgrass", 0.18, -0.03, grass_savanna, dry_grass_index) register_grass_decoration("tallgrass", 0.05, -0.03, grass_sparse) - register_grass_decoration("tallgrass", 0.05, 0.05, grass_mpfm, dry_index) + register_grass_decoration("tallgrass", 0.05, 0.05, grass_mpfm, dry_grass_index) local fern_minimal = { "Jungle", "JungleM", "JungleEdge", "JungleEdgeM", "Taiga", "MegaTaiga", "MegaSpruceTaiga", "ColdTaiga" } local fern_low = { "Jungle", "JungleM", "JungleEdge", "JungleEdgeM", "Taiga", "MegaTaiga", "MegaSpruceTaiga" } From 62096c723a51bd85b5028b8dce4c41a74ab42dc6 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Fri, 13 Dec 2019 15:33:13 +0100 Subject: [PATCH 396/737] Generate new grass color --- mods/MAPGEN/mcl_mapgen_core/init.lua | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/mods/MAPGEN/mcl_mapgen_core/init.lua b/mods/MAPGEN/mcl_mapgen_core/init.lua index 8675b123..27bc2298 100644 --- a/mods/MAPGEN/mcl_mapgen_core/init.lua +++ b/mods/MAPGEN/mcl_mapgen_core/init.lua @@ -1639,6 +1639,7 @@ minetest.register_on_generated(function(minp, maxp, seed) local data = vm:get_data(lvm_buffer) local param2_data = vm:get_param2_data(lvm_buffer_param2) local area = VoxelArea:new({MinEdge=emin, MaxEdge=emax}) + local aream = VoxelArea:new({MinEdge={x=minp.x, y=0, z=minp.z}, MaxEdge={x=maxp.x, y=0, z=maxp.z}}) local lvm_used = false local biomemap @@ -1792,13 +1793,25 @@ minetest.register_on_generated(function(minp, maxp, seed) -- Non-v6 mapgens: - -- Clear snowy grass blocks without snow above to ensure consistency. else - local nodes = minetest.find_nodes_in_area(minp, maxp, {"mcl_core:dirt_with_grass_snow"}) + -- Set param2 (=color) of grass blocks. + -- Clear snowy grass blocks without snow above to ensure consistency. + local nodes = minetest.find_nodes_in_area(minp, maxp, {"mcl_core:dirt_with_grass", "mcl_core:dirt_with_grass_snow"}) for n=1, #nodes do local p_pos = area:index(nodes[n].x, nodes[n].y, nodes[n].z) local p_pos_above = area:index(nodes[n].x, nodes[n].y+1, nodes[n].z) local p_pos_below = area:index(nodes[n].x, nodes[n].y-1, nodes[n].z) + local b_pos = aream:index(nodes[n].x, 0, nodes[n].z) + local bn = minetest.get_biome_name(biomemap[b_pos]) + if bn then + local biome = minetest.registered_biomes[bn] + if biome then + if biome._mcl_biome_type == "hot" then + param2_data[p_pos] = 1 + lvm_used = true + end + end + end if data[p_pos] == c_dirt_with_grass_snow and p_pos_above and data[p_pos_above] ~= c_top_snow and data[p_pos_above] ~= c_snow_block then data[p_pos] = c_dirt_with_grass lvm_used = true From 9dfe584cd1c054d9973cfb7b3f012549c02bfa6d Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Fri, 13 Dec 2019 15:36:20 +0100 Subject: [PATCH 397/737] Remove dirt with dry grass node from mobs_mc --- mods/ENTITIES/mobs_mc_gameconfig/init.lua | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/mods/ENTITIES/mobs_mc_gameconfig/init.lua b/mods/ENTITIES/mobs_mc_gameconfig/init.lua index f1f185b7..da0966e4 100644 --- a/mods/ENTITIES/mobs_mc_gameconfig/init.lua +++ b/mods/ENTITIES/mobs_mc_gameconfig/init.lua @@ -157,7 +157,6 @@ mobs_mc.override.replace = { -- Sheep eat grass sheep = { { "mcl_core:dirt_with_grass", "mcl_core:dirt", -1 }, - { "mcl_core:dirt_with_dry_grass", "mcl_core:dirt", -1 }, { "mcl_flowers:tallgrass", "air", 0 }, }, -- Silverfish populate stone, etc. with monster eggs @@ -176,9 +175,6 @@ mobs_mc.override.enderman_takable = { -- Generic handling, useful for entensions "group:enderman_takable", } -mobs_mc.override.enderman_replace_on_take = { - ["mcl_core:dirt_with_dry_grass"] = "mcl_core:dirt_with_grass", -} mobs_mc.override.misc = { totem_fail_nodes = { "mcl_core:void", "mcl_core:realm_barrier" }, } @@ -204,17 +200,17 @@ mobs_mc.override.enderman_block_texture_overrides = { mobs_mc.override.spawn = { solid = { "group:solid", }, -- spawn on "solid" nodes grassland = { "mcl_core:dirt_with_grass" }, - savanna = { "mcl_core:dirt_with_dry_grass" }, - grassland_savanna = { "mcl_core:dirt_with_grass", "mcl_core:dirt_with_dry_grass" }, + savanna = { "mcl_core:dirt_with_grass" }, + grassland_savanna = { "mcl_core:dirt_with_grass" }, desert = { "mcl_core:sand", "mcl_core:sandstone" }, jungle = { "mcl_core:jungletree", "mcl_core:jungleleaves", "mcl_flowers:fern", "mcl_core:vine" }, - snow = { "mcl_core:snow", "mcl_core:snowblock", "mcl_core:dirt_with_grass_snow", "mcl_core:dirt_with_dry_grass_snow" }, + snow = { "mcl_core:snow", "mcl_core:snowblock", "mcl_core:dirt_with_grass_snow" }, -- End stone added for shulkers because End cities don't generate yet end_city = { "mcl_end:end_stone", "mcl_end:purpur_block" }, nether = { "mcl_nether:netherrack", "mcl_nether:quartz_ore" }, -- Netherrack added because there are no Nether fortresses yet. TODO: Remove netherrac from list as soon they're available nether_fortress = { "mcl_nether:nether_brick", "mcl_nether:netherrack" }, - wolf = { mobs_mc.override.items.grass_block, "mcl_core:dirt", "mcl_core:dirt_with_grass_snow", "mcl_core:dirt_with_dry_grass_snow", "mcl_core:snow", "mcl_core:snowblock", "mcl_core:podzol" }, + wolf = { mobs_mc.override.items.grass_block, "mcl_core:dirt", "mcl_core:dirt_with_grass_snow", "mcl_core:snow", "mcl_core:snowblock", "mcl_core:podzol" }, } -- This table contains important spawn height references for the mob spawn height. From 01288eff62d58d87dae41276ca219d6381e13a34 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Fri, 13 Dec 2019 15:46:01 +0100 Subject: [PATCH 398/737] Enderman no longer pickup dirt-with-grass directly --- mods/ENTITIES/mobs_mc_gameconfig/init.lua | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/mods/ENTITIES/mobs_mc_gameconfig/init.lua b/mods/ENTITIES/mobs_mc_gameconfig/init.lua index da0966e4..374edabc 100644 --- a/mods/ENTITIES/mobs_mc_gameconfig/init.lua +++ b/mods/ENTITIES/mobs_mc_gameconfig/init.lua @@ -175,6 +175,13 @@ mobs_mc.override.enderman_takable = { -- Generic handling, useful for entensions "group:enderman_takable", } +mobs_mc.override.enderman_replace_on_take = { + -- Turn covered dirt blocks to normal dirt. + -- This is a workaround because the dirt with grass texture fails when held by the enderman + -- (because of the node coloring). + -- FIXME: Remove these lines as soon we support rendering dirt with grass + ["mcl_core:dirt_with_grass"] = "mcl_core:dirt", +} mobs_mc.override.misc = { totem_fail_nodes = { "mcl_core:void", "mcl_core:realm_barrier" }, } From d4344bbaf8e892e6425583ddb200ff6321bc04d8 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Fri, 13 Dec 2019 16:38:14 +0100 Subject: [PATCH 399/737] Update grass block in texture converter --- tools/Conversion_Table.csv | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tools/Conversion_Table.csv b/tools/Conversion_Table.csv index 242381c6..8444b022 100644 --- a/tools/Conversion_Table.csv +++ b/tools/Conversion_Table.csv @@ -962,3 +962,5 @@ Source path,Source file,Target path,Target file,xs,ys,xl,yl,xt,yt,Blacklisted? /assets/minecraft/textures/blocks,cobblestone.png,/mods/ITEMS/mcl_walls/textures,mcl_walls_cobble_wall_side.png,,,,,,, /assets/minecraft/textures/blocks,cobblestone_mossy.png,/mods/ITEMS/mcl_walls/textures,mcl_walls_cobble_mossy_wall_top.png,,,,,,, /assets/minecraft/textures/blocks,cobblestone_mossy.png,/mods/ITEMS/mcl_walls/textures,mcl_walls_cobble_mossy_wall_side.png,,,,,,, +/assets/minecraft/textures/blocks,grass_top.png,/mods/ITEMS/mcl_core/textures,mcl_core_grass_block_top.png,,,,,,, +/assets/minecraft/textures/blocks,grass_side_overlay.png,/mods/ITEMS/mcl_core/textures,mcl_core_grass_block_side_overlay.png,,,,,,, From 3e3ed630e55180d5472ec856c61646018bb99141 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Fri, 13 Dec 2019 23:48:13 +0100 Subject: [PATCH 400/737] Add per-biome grass coloring --- mods/ITEMS/mcl_core/functions.lua | 11 +- .../textures/mcl_core_palette_grass.png | Bin 138 -> 218 bytes mods/MAPGEN/mcl_biomes/init.lua | 231 ++++++++++++------ mods/MAPGEN/mcl_mapgen_core/init.lua | 4 +- 4 files changed, 166 insertions(+), 80 deletions(-) diff --git a/mods/ITEMS/mcl_core/functions.lua b/mods/ITEMS/mcl_core/functions.lua index 40440a42..3c208acb 100644 --- a/mods/ITEMS/mcl_core/functions.lua +++ b/mods/ITEMS/mcl_core/functions.lua @@ -642,21 +642,16 @@ local grass_spread_randomizer = PseudoRandom(minetest.get_mapgen_setting("seed") -- Return appropriate grass block node for pos function mcl_core.get_grass_block_type(pos) local biome_data = minetest.get_biome_data(pos) - local dry = false + local index = 0 if biome_data then local biome = biome_data.biome local biome_name = minetest.get_biome_name(biome) local reg_biome = minetest.registered_biomes[biome_name] if reg_biome then - local biome_type = reg_biome._mcl_biome_type - dry = biome_type == "hot" + index = reg_biome._mcl_palette_index end end - if dry then - return {name="mcl_core:dirt_with_grass", param2=1} - else - return {name="mcl_core:dirt_with_grass", param2=0} - end + return {name="mcl_core:dirt_with_grass", param2=index} end ------------------------------ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_palette_grass.png b/mods/ITEMS/mcl_core/textures/mcl_core_palette_grass.png index d338c3433d5a3bc1fc7daad9eabad1fb249c8723..90e5577c93be4678b96fd03c07de243b733e6b8d 100644 GIT binary patch delta 184 zcmeBTyu~;{t6qb_gn{d{YxN5T1_sUokH}&M25w;xW@MN(M}mQYfxX1j*OmP-53iUQ zOU8kS7zPH0bWaz@5RLQ6XKaJAzI=cGl|P4vhsWRL-RV7nHOGFwkh Date: Sat, 14 Dec 2019 00:02:36 +0100 Subject: [PATCH 401/737] Add LBM to kill old drygrass nodes --- mods/ITEMS/mcl_core/functions.lua | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/mods/ITEMS/mcl_core/functions.lua b/mods/ITEMS/mcl_core/functions.lua index 3c208acb..551201a2 100644 --- a/mods/ITEMS/mcl_core/functions.lua +++ b/mods/ITEMS/mcl_core/functions.lua @@ -757,6 +757,24 @@ minetest.register_abm({ end, }) +minetest.register_lbm({ + label = "Replace legacy dry grass", + name = "mcl_core:replace_legacy_dry_grass", + nodenames = {"mcl_core:dirt_with_dry_grass", "mcl_core:dirt_with_dry_grass_snow"}, + action = function(pos, node) + local biome_data = minetest.get_biome_data(pos) + local index = 0 + if biome_data then + local biome = biome_data.biome + local biome_name = minetest.get_biome_name(biome) + local reg_biome = minetest.registered_biomes[biome_name] + if reg_biome then + minetest.set_node(pos, {name = node.name, param2 = reg_biome._mcl_palette_index}) + end + end + end, +}) + -------------------------- -- Try generate tree --- -------------------------- From c149f5ca3cc9dce871a27693595cf53354f18fe0 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sat, 14 Dec 2019 00:45:57 +0100 Subject: [PATCH 402/737] Update PP grass textures --- mods/ITEMS/mcl_core/nodes_base.lua | 2 +- .../mcl_core_grass_block_side_overlay.png | Bin 394 -> 296 bytes .../textures/mcl_core_grass_block_top.png | Bin 393 -> 315 bytes .../textures/mcl_core_grass_path_side.png | Bin 241 -> 645 bytes .../textures/mcl_core_grass_path_top.png | Bin 171 -> 332 bytes .../textures/mcl_core_palette_grass.png | Bin 218 -> 254 bytes .../mcl_flowers_double_plant_fern_bottom.png | Bin 348 -> 364 bytes .../mcl_flowers_double_plant_fern_inv.png | Bin 429 -> 455 bytes .../mcl_flowers_double_plant_fern_top.png | Bin 324 -> 330 bytes .../mcl_flowers_double_plant_grass_bottom.png | Bin 412 -> 398 bytes .../mcl_flowers_double_plant_grass_inv.png | Bin 421 -> 385 bytes .../mcl_flowers_double_plant_grass_top.png | Bin 315 -> 315 bytes .../mcl_flowers/textures/mcl_flowers_fern.png | Bin 353 -> 358 bytes .../textures/mcl_flowers_fern_inv.png | Bin 454 -> 561 bytes .../textures/mcl_flowers_tallgrass.png | Bin 323 -> 337 bytes .../textures/mcl_flowers_tallgrass_inv.png | Bin 447 -> 488 bytes 16 files changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_core/nodes_base.lua b/mods/ITEMS/mcl_core/nodes_base.lua index 279917e7..790a2d98 100644 --- a/mods/ITEMS/mcl_core/nodes_base.lua +++ b/mods/ITEMS/mcl_core/nodes_base.lua @@ -317,7 +317,7 @@ minetest.register_node("mcl_core:dirt_with_grass", { overlay_tiles = {"mcl_core_grass_block_top.png", "", {name="mcl_core_grass_block_side_overlay.png", tileable_vertical=false}}, palette = "mcl_core_palette_grass.png", palette_index = 0, - color = "#5ac557", + color = "#55aa60", is_ground_content = true, stack_max = 64, groups = {handy=1,shovely=1,dirt=2,grass_block=1, grass_block_no_snow=1, soil=1, soil_sapling=2, soil_sugarcane=1, cultivatable=2, spreading_dirt_type=1, enderman_takable=1, building_block=1}, diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_grass_block_side_overlay.png b/mods/ITEMS/mcl_core/textures/mcl_core_grass_block_side_overlay.png index e4f81d690c278515bdd83745d3bb90fc94ae7a4b..a1cc154d9de3790f004458a5bd63e97c8f10b12e 100644 GIT binary patch delta 269 zcmeBTUcod$rJg0-(btiIVPik{pF~y$1_sUokH}&M2EM%@%;^4m!deCf28j~ah?3y^ zw370~qEv>0#LT=By}Z;C1rt3(J<}BTh#&?AhGm{Ejv*HQQ~M0Lm;!lRiru}Xv-uTn zbhmDesASl9hkM;Ve*Z`69fI>b(9OSWKRNMF8Rp7rRY@8+KUm|bS*CH6Z|RMNBGyxq+JoK%bjf;stiM*lxMacg X1g*!@Y#A6B7(89s{9M*KB{Ts5`R;2m delta 367 zcmZ3%)WtkOrJgOx+ueoXF~fg`r$5fCWHB%>a29w(7BevL9ROj*tZSW|3=9nHC7!;n z?2mbPc`OClHY}=PU|G1J~3y*jaAiZ*j*omR=48^&h5ExZ?yFAwsY1+(a&!LC3rI)NU6HP`}KE;9n%Jz`D&dTmLB+2 z(`6xRax3V9ieR2VSg6 z-8%d4%MROxo=WTV{WEyi?pb;5MoYrJg0-(btiIVPik{pF~y$1_sUokH}&M2EN@O%y|6A6*C3~28j~ah?3y^ zw370~qEv>0#LT=By}Z;C1rt3(J<}BTh#&?AhMk@+jv*HQxf89q4jTx#lwO(`(lAUGhdOD-^FX|Cn)cf^hKCL;dSp zI@OL?hd8fdUln$qahc(SXXodyd(QFoOGCz`maloaMoU#pEDajhtXS@T{T}<3@YWu8 r>&a29w(7BevL?FC^*_umuNGB7Z(mw5WR zvOnhG<+0@J-m$)ufq_xX)5S4F<9uq6Vc%f|fjiD3Vq8KeM2lv(J^S_h!ruq8elMst zH_6o1;#N_5a_Fe&yJ+3)s)$GX)`oX5 zw(+V(JpLmh%Cd$3#o=@wv$N|Ke3ht@kTp3q>(s0*{5Q^LHY`r*-D>cxw&8m4-0(#y z)-u^LKE;7{ODFwIlneg4S&`j+?_>+t9Ol*k&A0fR3*7Xj;l!Rxr*eK?S{}mOdP+X! Y(3)fVtOAP}7#J8lUHx3vIVCg!0CPp7>i_@% diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_grass_path_side.png b/mods/ITEMS/mcl_core/textures/mcl_core_grass_path_side.png index 3444f4a58c55530cbe8c32428f0587d19eefa020..a30c11ad7025aa0d8ba7d7f7e420485c8ad977ea 100644 GIT binary patch delta 632 zcmey!*vdLVqMn0|fq_B(^Z!H!1_rhyZ+9044F(eiuG6m7FBljYI14-?iy0WW1wfc_ zt@7Sd1_lQ95>H=O_QyQD;tINp)>s!YFfa*ux;TbdoKBtWn19(ppw(VlS^aKr%+W%o zpj$0oOF|Tu%zN1={c39Ve}?}PwZrwEHe@W-@YQL0d#m1SSEPDi=9z3X6mnUf)M*P*qdIbAFbw~D2u7re|r5hSh2J?mea#wJFAMGLxg zwpzZioe?u_n#69VdYNx>68CM4dqq31O=En2?9Ds5?O{_`g2dD!k5;8h8f_1oF>4BI zWY*owtGWz%le{M|Np!Pc+xk;^wTCT!f$p)~vEU0bIq=eO4Ta?OgH``(`A;+=<| zs=R~lrkXGMp?~p?q3P?>&;3~&qOz19R{UCi$7wxd#eb<|`(x9p&h9Iy_sxypVG$kc zojdi^M=4$#%^x@H6D(#GRMs-D`B_lqWTC5CV{PHIQs(&NrUTzSFI^G28YFx-Ev8rP z4d?WG-C>zqGM!3hU(7V+y~a6thCyfVX`7!fytY|37<8WeI?M6@0gF&w({m>S@81a0 zHJzt3yX^B-;ngceZ_X?5me-g%ds(4D=S+PQhQ{~Ohq!{TTCG*<-F0APgm!{?hH?Ch zqQ%FT%|ASG<_+Fk{&th!dNxMAQV(9`9M`LMMtqiAticQU8M9gT^#@sIt=y=0?tIsu q!1uNf?JS?YV=UkQb6x&FMlWu;`}&_cv>6x}7(8A5T-G@yGywo>#~Dlj delta 225 zcmZo={m3{$qMn7Bfq~)e-A6$T3=E0^J|V8rF*;e9dVcOYl@-Rerm7i1?$Mq$<#9nR z*)cQg@&oNmrzxCT$-uzS?djqeQo+b`a4Tbjfr!IF@t6B`8?I&azuhmqli63d>-LVk zc{0+a)^5@pVuR)0s`V)vUcjdNR3i_Ck`+MiUBi%1$GBr+TS?l?IK0ifpPSvAxy&k+- gtjAK_HvMOO?XLD^(dO1H1_lNOPgg&ebxsLQ052z9nE(I) diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_grass_path_top.png b/mods/ITEMS/mcl_core/textures/mcl_core_grass_path_top.png index d570fbd1f91a0201aef1a8f6b8eefcc73c35df6b..22a7626a1436d95f7b08e2e015bb23d0be42fd5a 100644 GIT binary patch delta 317 zcmZ3@c!p_$L_G%+0|Uc^i5X@L3=Aykj=qiz3>*8o|0J?9FfecyctjR6FmUsMFr&l1 zhmH&k4D2PIzOL-|8AW)t)e@Q5o-!~nNR+rnlmzFem6RtIr7{#GX6BXX<)xM=nCKbm z876DZ@n&FP*zW1#7-Hd{JJFi&kb!_p?NWz#PM-d*^;5sdD5R&YN#Co(cj?rvTI0w5 zm%cr}`)g00=JDj{H>&9m{zh=l==4!rUBF_bKH<`oMg1<#3l;sP(_N=+zRod2(V<`G zq8U@T`KPHS=S%HVI0Bqkv41dJtf;=st95=nr?78F`HHp>{*blvn0=BJ&d#@wJump` zCF8{;Oqh!-`IdwWJI$zdMXoc~+;G#M_PM7j^q~ T+a!&Ffq}u()z4*}Q$iB}JtcA7 delta 155 zcmX@Zw3=~(L_HHT0|P_ST=7o~3=BL0J|V7t?mE#iI$4=|?)K`QvyJC7Ffc@Ux;TbZ zFeWE(1SBLS@Lim7;J`npVq0hJmnYh zZJkOyJRAG?c$65MczGDtJd&1(h`hbtUXadBnKM<1B3kM|A`Y7jqAm=tZq*Tvu9vn==OAR46!)<_U!&sj*JY)9zOqJ zJ+JX)ilKzhsjP|n4xW{W?UF7Kben7>9S|gDSaaXurLdK3v(Vx-&n53a{LZ%5(?0Xq z#-|Gzwmt1V6@OK4eud~=rsqL9U#c&08K1W;-}7&>Zj?&4{pN0tGp-!BO&?$8dQ)tn x9W-C=g&B`Ev%rJDubd_0y_ho0q)<$jJpR7KjGOTv>ddVEcyu*3Ha=V> z!pywC`PDxC?Gh3a^EMk8)TCUn`PX>Rxqjm1khVYrt~MbC1}=AnH%f2js4y@vFnF@N L`njxgN@xNAw!1zN diff --git a/mods/ITEMS/mcl_flowers/textures/mcl_flowers_double_plant_fern_bottom.png b/mods/ITEMS/mcl_flowers/textures/mcl_flowers_double_plant_fern_bottom.png index baf21de3491d8ceaac755907540f1725054fc0b8..84427db2d32013ad2e3aec5a93930f61838ae2fd 100644 GIT binary patch delta 268 zcmcb^^oD7I4Hp*!12-4re&@8{iEak zkB+Fakn+?Ug3QKAuhI^<8#XniHPQ=e@>&Du2>s+SwPp3WnZ1-H~N8|U;F9VVm zExo3oIr;U|2(C`w-?7TKOio!|*Gy@e!Fi(a-yZp?YS{}54IgxNNT{e4S~OmGe`mIn zcKO}5mID{Jpu2}{ok)gzEo+j*uXTZolN5yO8*Q%6G*($Jl^^5# zL{E6FK&LbFigy>{l~kT*OMh{+dM&4-Cf8;AXNA$mD-r@p4HwoYyexcSzv1zJ31g3! a-18bU-i6%w(8R#Nz~JfX=d#Wzp$PzG(Q(}X delta 252 zcmaFEbcbnz4Hqv112-?@TlNDw6Wt8z4fIS?Ta8i~7#NOwx;Tbd_)nc=$aly<#JSit z?8?-V6&>W*S@#^=9@ImDUOu=oHzer>dy5&LA*?I z>&x4o{|sq4{xX26D}kFOCjY$90WS{52~ySP61NL))tuPA!aDO%kTa8@@oJ|;kKYpn z(|@U65`4_#ynew3i*=4#IeVGz{8`16vAMJ{e4KfLL_G%^0|SHn=l_We3=C{Z-tI088Vn{3T&G>DUobE*a29w(7Bet#bAm9V z&@Xp81_lQ95>H=O_QyQD;!08)>VN(-FffLAx;TbdoZdUx*6*-`K3~l=xCYX zJtZJVYWX9sDGSYQuPQ8)WN}PB#_X>7 xS?@*4 z_6YK2V5m}KU}$JzVEDzrz|io5fuYoZf#FpG1B2BJ1_tqhIlBUF7#J8t1AIbU85kJ! zv(0p347B|<%p2|1+?D?S|9@d;%mD@l2F8*gzhDN3XE)M7oFs2|7q-N-9kmP$44efX zk;M!Q+&m!6Xz!qOf`Ng7y~NYkmHjafH-m;``Qi1?7#JA*JzX3_IIbrrC@{1n@FW_X zd~{|(4oi}O)hsE_CJCReg#n^&2iuqu*fwum#N82=W?&Y^WXQtIq~Imux{yaTFj;&< zQd+9BJL`rC8w zJ{WW`PG`;0Q_LMp#e2@AtLu1*Z2fRhS>>krZpEkitG4R>i)_(f9(%O#%Uq6o>yCeC zIKJg_;{Lp&OrLIg2maVGU;Mkkw;O7OrmNa>%vXy&;d6f(!=jUxDjz;yyZ_aT%1tk~ zM}^AVW-B!1$>91>YpWtH@KCdXNpaups{!8>_+Cy>WO}o1x`RHW6NhzGo&E2Q9;PJo q!!10;cCz-~9SY4BUQSDG7+;ASx7E+F-^9Scz~JfX=d#Wzp$P!!)n0S} delta 228 zcmX@bbcAVw4Hpjs12+$&y@S$;iEak<270EctwyN~3=Hc%T^vI!{P#{U%1o?<9knQJvy) ze&b*3#oWcCbmGzp7v&jm4Gju>@4uaX&p6)UVyNlQ7Y$Mwm*g*O57xiT>U)2c#Kfdm lli3`Edqob(cy1|UuKO-LC4A$4CI$uu22WQ%mvv4FO#rpxV_pCN diff --git a/mods/ITEMS/mcl_flowers/textures/mcl_flowers_double_plant_grass_bottom.png b/mods/ITEMS/mcl_flowers/textures/mcl_flowers_double_plant_grass_bottom.png index 568e3de65475acd84c821b8d892024ade0eb4b3e..fc42bb20e7b5a2aeb276ec4e235fcd9e9786be65 100644 GIT binary patch delta 303 zcmbQk+{Zk@hKrYhft#1{E&BnTiEakRY5N6{uy(#`+%L_Gzqdjl# z-LB_cCh8#X<g}kZp4L^Bf0z#tlIWE{eY}-mG4)!^|+ryCI3;=b0}-@eL}^P8_g2${z`)?? L>gTe~DWM4f&Gv#> delta 317 zcmeBUp2IxBhKrwpft#Ok(og246Wt8z4fIS?Ta8i~7#P_-T^vI!{97k(%yU-calNmf zmNV7-n_+2>R_Tk7(h~x%ukQSDvYYsXfqf^7<}{t;54OiPJef0n{$o}B^5ovy+BvTl z&3qpGyRP!A$e(|)pDVq~-SisHzrEn9EUEUZDHQ>@0 ztS_~wWZb~n;N+Wer?$tiid`tdxZ&c*6BpOMj!HjLdo!@(gpA>{@Nc)7C0dOcm}dQ$@susc zYJTgn-0<@!I{P}9U-iFeY;|LF+ZCk#=Dzu{LmV0v_xIbrG57rIrg@&hW>`H=O_QyQD;z~Nt=VqocFfj6Yx;TbdoPHX#*YB`_z`q>RUY9dc8#h~Y z9}Z%ZYho`bn^CE;>wDlWRoPW`4BleRQ`lZ6JEU7GPORVcS@-$w&v$FTGyn0Q(DVN4 z6$S>cl}8hv>&nN=GdM6d?AxZ~X^|f}g{}6*Vt;0byCF4Iw+s3fEy&XnTgu1~bI8C? zq0Qu^(5_^zZ>EcIYB0ry`ikU%lXpfM$x66p3hc!ZxFeVc}>%{amx;~ z$U74}=4xe6W@ISJp8WskkH4lzrUhMFZ2Ingw5t5v?IM-c>0<4xEMgT5nphoD z8ho+x^jYt-6`j`?@Y}xmY+F1zxpeZw&&q#{3hrI1JiYU=Cwm1a^OC9W?mXOJtHtnx a@!j>h#rjg+&lwmP7(8A5T-G@yGywpdIhr>B literal 421 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd7G?$phPQVgfdp969eo`c7&i8E|4C$JU|>*4 z_6YK2V5m}KU}$JzVEDzrz|io5fuYoZf#FpG1B2BJ1_tqhIlBUF7#J8N0(?ST85kIh z{gw5z%}gq7^j+n3VhptXHU9tqpVhbI4g&)NV@Z%-FoVOh8)+a;lDE4HyI5k!YX$}e z&H|6fVg?3o0T5D)|xP@lztbBWME)WEpd$~Nl7e8wMs5ZO)N=eFfuT-)HO8HH8cz{Ft9Q)ure~$ zHZZUpoR_6PgVNvF12^}Z2kFsp9jm)NkOgtvIIan;02PBIE>uXpn&7-+;Ul(e&2r(fvo z;kHMiSDvRo%|78(*Xf@VbN|@J8!Xthi&rs?ox?{zT7`Fk`i)zqUW{s|Kiv0W+s1D3 aov}ab($?;reN_w$3=E#GelF{r5}E)v6rIsj|=o#vn zrnpB0F)%PZ@pN$vvG89yaUtI!0}w=+v^kS5 z@6kOi&@ubl-F@X%yO+-S9Pj0O`Oi|vSAVO{ta$(3l&iu{&%Rz!^uoJz*}49=nFN~B zwX#DPI4s+s$>MS%al7WCw4=_l46FkA-OdMm z(q%96*f}!nV`$rJ>vSo}Zl(VRhPC0RtrE1tLgza;_v9Ee9FbeV`Brq^qqS!JS1)Qa zJc^!i%*t%Dy6nE^PdOQM{xHutmZs10wRT@D>yc$E6z9)6y-(hLIX`!QfPfuuX)^-@ O1B0ilpUXO@geCwn*L#Wp delta 302 zcmaFH^pI(SP5oX52EM(F?!PCjWnf^CEOCt}3C>R|DNig)Whh9@%q!8$OD$0_(KFC9 zG;(Iie#5}PaL?1lF~q`u>4e=}ha3c4zwZ`#qjQNPj5{gY>aEL$4O=#B*my1egYfk^ z6RmsFc%8aVzp;5Y(=$jjbxP1>lf@xR|E+dB@bl9Pr@iWy3h(RFY#AN4&if+l!29`S z!P|MNf+zF8FXvp$Tr_W%qc27)Yj}M1jPL#o0<)#$e(_ZCT}X3Le#UcrGHX~K z!(4g)@N?GJlqbAkSdz9oM*VBgi{0mzTPyInUVZgMr~3b&NpWvh7%QE6n;Xc$z`)?? L>gTe~DWM4fpa_Oa diff --git a/mods/ITEMS/mcl_flowers/textures/mcl_flowers_fern_inv.png b/mods/ITEMS/mcl_flowers/textures/mcl_flowers_fern_inv.png index 1bdac2d248599feba1561f6d562287ae49ed9332..3041c3178c4c7f52519fc22e9bc0bb68614da2e0 100644 GIT binary patch delta 548 zcmX@cypd&sL_G%^0|SHn=l_We3=C{Z-tI088Vn{3T&G>DUobE*a29w(7BevL?E+y& z(fwwZ7#JAXOFVsD*&p-pimNH5cs8aoFfi`(ba4!^IK6c8-n`oeBCYnfHmTh3;Z<*w zKF~dNnd{aq{1+G`xvNh~EUxXa@s~fqe_?C&bib=X{EYQ6x{N{Y>k``iz6dwVvIuVa zZT=+BW{=JHnk6b*uGuU*QeaUt=iq#yJ$3K18xo8}|6AEe^{)7vdwF7?;jjFrk4Ill zlV}OAdLO_vVU@`K+rpPK^3MFp^JiG27ahUyG;P_Z`)Vm#>H)0_ujXu+ryVw3cb-i= zbAWWeKSRb>mAQ-g>aU*My>*`UuZ`-b4m%XGA577@R-Afdue0Z}qM)ghRHZki9Dcji z$(1vF?)zO`$&5Yvew=E-59iB@Yn(hbLzd@O#920mk2=RD@~M`|`*(c)Z0_@#`|c~z zi}LS^#2yMU+$=3z(tI^X;CxcfO#}Uqq-*c$vzk8?OrO27^OR4pO*ePF$kfRz=iJUd zI`OvH-y6b@uI`>5<;uyhEqb|&25(Gee&U}WVlzt^rYXw`XA0_BN^Ie+FO7B8-Wsy> z%D$Q(TBlmy>{^!jT~hp^(CxLePpJ1|EBt~HMutxxWac_GV4{1TeL~HwqUb< z(dyWmQ|Iqh?aEm-O*^-&H2l_$yt%UC-~Eps_n-fhb=jsT9(OFfRx&U!FnGH9xvX*4 z_6YK2V5m}KU}$JzVEDzrz|io5fuYoZf#FpG1B2BJ1_tqhIlBUF7#J8N0(?ST85kJ! zv(0p33`{C*wEZ>I+?7=9<^TWx-`YR@B?AKkV@Z%-FoVOh8)+a;lDE4HyI5k!YX$}e z&H|6fVg?4jy&%l!{(Hh&1_lQ95>H=O_QyQj3>uQk`ba4#fxSpJFfSVgW#iEqt#h1W4;ro0JEZ2InC2|1o~Z7+z|V21!c+lvHnuSF>jLh{ z3zQrK9R*!4Ixw=iEp-T8D&We>#4gy01+zA6xw2u402>3x9bTSzy`vrs3=FCz zt`Q|Ei6yC4$wjG&C8-QX28NcphDN%Eh9L$9Rwf2kMyA>Z237_JKBpCpP&DM`r(~v8 z;?`h0ZDt<>1A`>UhT#0PlJdl&REC1Y%)Ao4ywnl}6FmbxLnCLF>^BSy3=E#GelF{r G5}E);@_s)6 diff --git a/mods/ITEMS/mcl_flowers/textures/mcl_flowers_tallgrass.png b/mods/ITEMS/mcl_flowers/textures/mcl_flowers_tallgrass.png index 4828e156eb298b1d17c9b047863022deb940eb1b..5ab4b00f7244b67b95e877532b8b45a3a3261488 100644 GIT binary patch delta 286 zcmX@ibdhO-P5llA2EHAPS&m<$85kHON?apKg7ec#$`gxH8440J^GfvcQcDy}^bGY( zQ`{qh7#JANd%8G=SoklUxRHy=P{8HAyl(E1Lrxod7Hy4?nU?gFy<@4pL?yfayI3U+ zvBPQU>1mU9>plM?KI@5o#-!jScXuj$Y7hPOkL`NhY{w_78tR`vo^&w8c45AMpDev#kLIF+Hg`9aJD zo`PbL>;>h^_Oa~fG*;p*IFn=`709Zv=(F;Bc(jEqY+FbS<;?C#`Lqr)^bw7#J8BJYD@<);T3K0RZp`cp?A* delta 272 zcmcb}beL&^P5l7|2EGG~S=Tx_85kHON?apKg7ec#$`gxH8440J^GfvcQcDy}^bGV& zQ(KKv85kH2db&7=3U4CM+Ue&cB zagz1>YX5jEeQ{UI=j*>rmV7VIr1x2Q@eOOg-#tnEy!t!t*3TDh`dG4K+MafPMjb}Q z<2)+gt_U>jadOz>Wy;W2sL0gu_w|dnOuqYW%=bTMXPU*pW11!8&{G?tzaT-QB}#Z! z*lVG;!Yj2KW^SqjYfq|33)78&qol`;+07EHiS^xk5 diff --git a/mods/ITEMS/mcl_flowers/textures/mcl_flowers_tallgrass_inv.png b/mods/ITEMS/mcl_flowers/textures/mcl_flowers_tallgrass_inv.png index 57c413e0aa8baf969e8da12b577a5ed22ab6695b..3481b46d4143ccbfe119f71fa595b5e987cc00e2 100644 GIT binary patch delta 474 zcmdnb{DOIcL_G%^0|SHn=l_We3=C{Z-tI088Vn{3T&G>DUobE*a29w(7BevL?EqoM zEXS|W3=9nHC7!;n?2mbP#gzq@y%RBGU|=luba4!^IK6a|y&sdK$gz6nLz4`SIXUa7 z-Ux7HW))xXg+Zoa)(in*{RE$$t?UmNroD^Dj%DtXN=H{ea?UVS{#!zudxxOsR_9dgi8{Ut%V?VC% z%$t1wT~~~0Hot#8pTR+yhMOt7wpHeGO?5k|7X0zUx~Y6C^-ovss1*|AoI6c_4!h?} z1_!yN9_cD-GlEwc>^>q>JkBXl> zGmkL*DGTrU#l320R@u}1{$E^+mt`#dS@r+f*MGiij$|}hMrAUk793_uEtohf!7oUS fV@fB_f5y15gQbFcZD$x57#KWV{an^LB{Ts5swT$J literal 447 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd7G?$phPQVgfdp969eo`c7&i8E|4C$JU|>*4 z_6YK2V5m}KU}$JzVEDzrz|io5fuYoZf#FpG1B2BJ1_tqhIlBUF7#J8N0(?ST85kJ! zv(2>qHB2gPbYcut?B&(mmHz+#f2Z7H3j+fKV@Z%-FoVOh8)+a;lDE4HyI5k!YX$}e z&H|6fVg?4j10c+pb*+<=fq{X&#M9T6{V@+WgN9`J;q}iL7#QL_T^vI=t|uobaB&zJ zXf{ZmVbbbhQea!$IN8AE+=Y_@i;i5l$gsxcgv&*aB_1a|T#kB7Xmp(6c|z62gGEL8 zmBHwQX8UFCoeT^NswJ)wB`Jv| zsaDBFsfi`23`Pcqmb!*Ux`u`!1_o9p23AI<+6D$z1_nN-6^&3dc From c90f693c0650810eac29fad70e2b8dc24a3c7712 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sat, 14 Dec 2019 01:03:44 +0100 Subject: [PATCH 403/737] Smoother dirt texture from PP --- mods/ITEMS/mcl_core/textures/default_dirt.png | Bin 196 -> 311 bytes .../mcl_core/textures/mcl_core_coarse_dirt.png | Bin 232 -> 375 bytes .../textures/mcl_core_dirt_podzol_side.png | Bin 268 -> 300 bytes .../textures/mcl_core_grass_path_side.png | Bin 645 -> 371 bytes .../textures/mcl_core_grass_side_snowed.png | Bin 262 -> 294 bytes .../textures/mcl_core_mycelium_side.png | Bin 271 -> 354 bytes .../mcl_core/textures/mcl_core_mycelium_top.png | Bin 202 -> 347 bytes 7 files changed, 0 insertions(+), 0 deletions(-) diff --git a/mods/ITEMS/mcl_core/textures/default_dirt.png b/mods/ITEMS/mcl_core/textures/default_dirt.png index d75ca70a5da427a38f96c7fc2e6a5431cb1a6f73..e60fa9b3bd74434a94cf8932aa6b2d9808e8cd15 100644 GIT binary patch delta 296 zcmX@YxSeT&L_G%+0|Uc^i5X@L3=Aykj=qiz3>*8o|0J?9FfecyctjR6F!1dLVaDS> zu7DItmbgZg1m~xflqVLYG880c=9TE>rIsj|=o#o48GcmAoXWt!u*K8GF~q_@cakCB zAqN5G_pv1+Arn_*ykq>pc<;denU`JqnkTfK*q;5qUM}!hb>634@zL#-yO*>|SYGfj z-PLVmcb@%1!KA!-zofc$Ue(FJ8tx$ZI_JzFu2iy2&M1}{o y&X7s8ORBA@S6B30ANpqfR`0dDcg(mg9zLIK{`HGHOBom#7(8A5T-G@yGywpTMtXh# delta 180 zcmdnabcAt&L_G^L0|Ud`yN`kx7#M^Cd_r8KJ#8|A+{@#FX4d7mWXA;Bna({sV>tr@ zL$0TbV@L%f>%oJC2Mjn^4mb<{wQOf%2=UpKGwaJ8RycooA!xz|kYZ|pB}Z+qN#wsrT{$rYRit;V{d(Z$if4;oc!O-VTV mbh*?#L&@#Qa?8|@+s}I~P-3QfKY)ROfx*+&&t;ucLK6UfZc8)( diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_coarse_dirt.png b/mods/ITEMS/mcl_core/textures/mcl_core_coarse_dirt.png index b564de1909b275036a84b16218001858ffec66f0..a39ccef812b372e8e4f3f584e7d0eb6d5f05783e 100644 GIT binary patch delta 360 zcmaFC_?>BjL_G%+0|Uc^i5X@L3=Aykj=qiz3>*8o|0J?9FfecyctjR6F!1dMVMYtq zU=;=i2FViFh?3y^w370~qEv>0#LT=By}Z;C1rt33JtM=93Yk+G7#O~Ix;Tbd`1@Wk z%scEL;C#_`y0!R9o*i5~JG>vuC}>{VQTqH``U%_5V)gMiI3#*cNKU$S^~b(>tImH8 z+*@at@V9Qa$%R+UVlSRW9hQ@Ic?nMtrZGqY_3meV&dfa&&##x z^4n{yXI_4r-tv56;x(%~x2En2Wh-Ww+xGNeXd>fQmWw~5-#&7Udi}ReG-rq8w^t48 z!VDPwOQf8RPH}7z6MWmu%FFL;_;AvvDNejOYwtGl=J!XM}B1~xjpA(T2?VI PFfe$!`njxgN@xNA3s#hP delta 216 zcmey)^n!7ML_G^L0|Ud`yN`kx7#QRNd_r8KJ#8|A+{@#F`fD=E)5BV_W0p>?2(&Yu z*IhHSE`MMCIxYqVhE`7($B+s})`J`QnjCo89_*KRd`m1pzdvTt>;p#)vL3MVJvxxl zW4%71qHsTditpbA0S2DsdC&bF)$ZBcWsUnOH;nyx(*Mo=7e$w5xkb8?-dTY;M1& diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_dirt_podzol_side.png b/mods/ITEMS/mcl_core/textures/mcl_core_dirt_podzol_side.png index 25fc26b4adf168d8806b4bd48cecdf7db5a5237b..0d89941ff74f3ca773154fc1fa4903bc8459b47e 100644 GIT binary patch delta 212 zcmeBSTEjFUp`J0x+uensgH_gpfq{Xuz$3Dlfq`2Xgc%uT&5>YWU|=ut^mS!_%)={g zW^mW&Q4IqFLzAbAV+hA}(QZSo!v-SGqE6+rRZ7fdjjX<~>~-{--nZBF&DQR}?L2dH zcr9n-UzTUNB<%D;XO8JBi9fu@BzHWt{C4_q!kaK_-5tJd6wDmFZDD^NlEo$RA z#>4sO4BMJRYzKK{jad#$yGk-KupZpX$YdbGdcd4dr(?I?sQ`9S{qW#+fRS^sYQ3yAOV)Y9$p&slTb$lM@%W6ZVu m4PNI@OuMM<7U}z$KXih*Ed?->{v7(8A5T-G@yGywqgWk!Yo diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_grass_path_side.png b/mods/ITEMS/mcl_core/textures/mcl_core_grass_path_side.png index a30c11ad7025aa0d8ba7d7f7e420485c8ad977ea..ac25e45c4cf3ea37b65dfb77681521abb1f44385 100644 GIT binary patch delta 344 zcmZo={me8$rJg0-(btiIVPik{pF~y$1_sUokH}&M25tcmW?ZYhx0Hc_fxX1j*OmP~ zqX@5|s)yRz76t|ei4xa{lHmNblJdl&REC1Y%)Ao4ywnl}6Foyc!(^>F-V6*3_dH!3 zLoEE4PT0+L$U(&Ad;bylspk$kF@-fnWG-%+ z%aM4k@0V51&5m4g$$tIgE4k)xzg6tJJcofzHfX)T-wEgMFrT>6G}C;gP}zYxOD}y! zBNbiFD+ZNMo-pcF>CFDF?tE3T-BLy(?&8C@i#%6O=lFP&FCdg{y-fILo0#iTC*I7< z+L?2^Lgv~+EzW?$fee}JKD#n=o7eE4Fuua_qv_uB{8QS0l-6Bl{&Bbc+rN0LhFMk( yA|GDwaJOTeAtNy>_TATY0qvaE{<`PxVOWtU;kc^ROqhXzfx*+&&t;ucLK6U-`;8y~ delta 594 zcmey&)XF+Rg`X|S+uemhgTaJ>>$Ge2i;0GE^^bXY#T9fHt+6g*U|ZWT*QFL;@M zB1l@3d)B`;jZKUKixzb0Y_)u2J0oV=G>P3zGT-DR?%NpmigsR`#`yl&n|E^C!=|tV ziK#^%txAz8k4OxU=gLuvNSyS7eK z&Tp;v<(d^Y_q{#K#XAo_Re1;9O*LQiL;vC(L(|u%pZl{mL}e*ItoXJ3j?;R^ivLo_ z_Q$4Go!wX9n;XBwB0APPcj~E+QoJ^rKW^A3Sj;M@tYu#Fv!Ke!LRYoM+QMn2%<;)h z2flk=x*~ElNce7AOs`t~8_wzXy2CQJWIC11zL;ssdyRAQ41>6a}cx|(6Fz7t_ zb(Z7*0~VpWrsqxu-oFu~YdTM7cG>5v!mC$`-kew9Ew3?k_A-OcnffLSjqjxoaRpzs zTC3K(>%htg?F91-axP9=ysqu2=1h_$&*zSc4bx zGiI~w>kqQbTDej0-1)9Qf$wb}+F3q($5_7q=eqoVj9%Pw_w_$@XfrS{FnGH9xvXYWU|=ut^mS!_%)={g zrIGa7RE>dwp~ln2F@)o~X!k|VW&;t|{v)hMSiN>RB<*s1!x8IvlBtbdc7d>pO@ZR} zSD*jgDYlGZvq@x-@o(y%pmX}LugbDiPPWDu&qdOU_qaE4E2p>}+w&=MbM^Fi_x@jd zL#%hd2{XTPc7c}fxJ_tkb!}L!PC{x JWt~$(698BLOLPDL delta 174 zcmZ3+)W$R+p?;#Li(^OyBku`Cj%Ei5hllFv>>Cdk$oj?V@0xe*whP-a*+*8dAJ+BV zjhGkBzR|eNmUs2ubL!5-Y2E0_q|{GDejy)+vBBMyZL+xifm_=6qG##lXP8;OXk;vd$@?2>{|VPE)e-c?47#KJUJR*x382Ao=Fk{xW zPEG~}2FViFh?3y^w370~qEv>0#LT=By}Z;C1rt33JtM=93Yk+G7#Qw*x;Tbd_{UDL z^=5VyaeZ!obE$V?qLWUO!fX+?L&ua_TQl~a-S%s`ZT;biyY(AS-~RpX_?Zp4HGgOL z8ULu7J!8%F!{!shuWvo-_RI4Bq5j|HX}=g`Z@e^@xRelOpcs(H75Fe=yQNWaR*c`l ztgCLRtO8D28%u6~*ijW_dn2*k`1QdTaowy{2m69{uzFmb`S#PEXTi(kdb1kOC*FSc zk@bK>$n0gIC+>(V`M7Rec1UEeK&Q*4L&{qDHyfXaE}3w98dG(g4v%Krm;E8-j#l~I t8Oy{&c<+8xc=Tz>tPAU&$RGa3udqt|pOe$_4h9AW22WQ%mvv4FO#sl&k}?1Q delta 255 zcmaFF)Xy|QqMn7Bfq~)e-A6$T3=9SVJ|V8TX)T>O&8T0$Z|U%Hx8%@}g%{rv}=Y&aBJVI`pfVfq`L`r;B4q1taT0)22fX46GMs&iCE^ zE_6?K_SSvs4&Lts_&RoHvzs4y`Qf{R{QJArzdRlYgjZNtS1?t@yDPaBvpg?+$JSEs z+U38=l7s19@gf;6RZbIML7TS!6NK$ovp>(|{1^CB)qh)ST-i*8o|0J?9FfecyctjR6Fz_7!VaBX$ zotz8|43Z_T5hcO-X(i=}MX3x0iJ5sNdU>fO3MP66dPasH6*8wXFfiQkba4!^@K2qz zk?)WLkMn!!NUehbDj|jjC0fPP*L^s>=Y`^Tu1TzY$@S`%j=Sf)OOSddxBj;Dn(Msl z7#9R=JO0yC+1CE;%Wfuxtp^zb{@-$lCJ~Pj)+IG^tG3YIvpo}371je&uI!PC{xWt~$(698DCgFgTO delta 186 zcmcc3bc%6;L_G^L0|Ud`yN`kx7#M^Cd_r7PVrp{JTIN->cjh#g7PPb$HP@*!NHZ`n z6nnZjhEy=}c5M|sVj#le{@~C0l%va@|1q%BI&i06`*}*CgIDv#kFV#LKaX~jk9m8l zXU!$I7U%3pu6Z-<&aQsFvCQv_-;#4vjtid-zxOa|nsA=|#8t-4o9=wvr)*amJYPm( s{b8B;HOg_X&rFZj?(Mt$Bl7jX#r(Wx7B%g?3=9kmp00i_>zopr0Fee#EdT%j From b3829eaf9b6a57e8f2e44b79b88b8fd0cf744698 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sat, 14 Dec 2019 01:15:37 +0100 Subject: [PATCH 404/737] Fix tallgrass/fern placement color --- mods/ITEMS/mcl_flowers/init.lua | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_flowers/init.lua b/mods/ITEMS/mcl_flowers/init.lua index 667a74b6..3d934c4c 100644 --- a/mods/ITEMS/mcl_flowers/init.lua +++ b/mods/ITEMS/mcl_flowers/init.lua @@ -8,6 +8,20 @@ local init = os.clock() local smallflowerlongdesc = S("This is a small flower. Small flowers are mainly used for dye production and can also be potted.") local plant_usage_help = S("It can only be placed on a block on which it would also survive.") +local get_palette_color_from_pos = function(pos) + local biome_data = minetest.get_biome_data(pos) + local index = 0 + if biome_data then + local biome = biome_data.biome + local biome_name = minetest.get_biome_name(biome) + local reg_biome = minetest.registered_biomes[biome_name] + if reg_biome then + index = reg_biome._mcl_palette_index + end + end + return index +end + -- on_place function for flowers local on_place_flower = mcl_util.generate_on_place_plant_function(function(pos, node, itemstack) local below = {x=pos.x, y=pos.y-1, z=pos.z} @@ -17,7 +31,7 @@ local on_place_flower = mcl_util.generate_on_place_plant_function(function(pos, local has_palette = minetest.registered_nodes[itemstack:get_name()].palette ~= nil local colorize if has_palette then - colorize = soil_node.param2 + colorize = get_palette_color_from_pos(pos) end if not colorize then colorize = 0 @@ -246,7 +260,7 @@ local function add_large_plant(name, desc, longdesc, bottom_img, top_img, inv_im if (floor.name == "mcl_core:dirt" or minetest.get_item_group(floor.name, "grass_block") == 1 or (not is_flower and (floor.name == "mcl_core:coarse_dirt" or floor.name == "mcl_core:podzol" or floor.name == "mcl_core:podzol_snow"))) and bottom_buildable and top_buildable and light_ok then local param2 if grass_color then - param2 = floor.param2 + param2 = get_palette_color_from_pos(bottom) end -- Success! We can now place the flower minetest.sound_play(minetest.registered_nodes[itemstring].sounds.place, {pos = bottom, gain=1}) From affb984c5616537d2e9d63a3f93a9df8c8d7ec62 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sat, 14 Dec 2019 01:30:21 +0100 Subject: [PATCH 405/737] Fix mapgen crash if there's unknown nodes --- mods/MAPGEN/mcl_mapgen_core/init.lua | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/mods/MAPGEN/mcl_mapgen_core/init.lua b/mods/MAPGEN/mcl_mapgen_core/init.lua index 3a4d972f..4b65653d 100644 --- a/mods/MAPGEN/mcl_mapgen_core/init.lua +++ b/mods/MAPGEN/mcl_mapgen_core/init.lua @@ -1097,9 +1097,12 @@ local function generate_structures(minp, maxp, seed, biomemap) local ground_y = nil for y = struct_max, struct_min, -1 do local checknode = minetest.get_node_or_nil({x=x,y=y,z=z}) - if checknode and minetest.registered_nodes[checknode.name].walkable then - ground_y = y - break + if checknode then + local def = minetest.registered_nodes[checknode.name] + if def and def.walkable then + ground_y = y + break + end end end From 5f2cc506f087532c71a4fb6e06723d8646f9a8d3 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sat, 14 Dec 2019 01:41:49 +0100 Subject: [PATCH 406/737] Fix broken legacy dry grass LBM --- mods/ITEMS/mcl_core/functions.lua | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_core/functions.lua b/mods/ITEMS/mcl_core/functions.lua index 551201a2..5ef133fb 100644 --- a/mods/ITEMS/mcl_core/functions.lua +++ b/mods/ITEMS/mcl_core/functions.lua @@ -763,13 +763,18 @@ minetest.register_lbm({ nodenames = {"mcl_core:dirt_with_dry_grass", "mcl_core:dirt_with_dry_grass_snow"}, action = function(pos, node) local biome_data = minetest.get_biome_data(pos) - local index = 0 if biome_data then local biome = biome_data.biome local biome_name = minetest.get_biome_name(biome) local reg_biome = minetest.registered_biomes[biome_name] if reg_biome then - minetest.set_node(pos, {name = node.name, param2 = reg_biome._mcl_palette_index}) + if node.name == "mcl_core:dirt_with_dry_grass_snow" then + node.name = "mcl_core:dirt_with_grass_snow" + else + node.name = "mcl_core:dirt_with_grass" + end + node.param2 = reg_biome._mcl_palette_index + minetest.set_node(pos, node) end end end, From b9cc66d3db9091a9d8ca445192d6654997c8d192 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sat, 14 Dec 2019 01:44:54 +0100 Subject: [PATCH 407/737] Remove dry grass from texture converter --- tools/Texture_Converter.py | 1 - 1 file changed, 1 deletion(-) diff --git a/tools/Texture_Converter.py b/tools/Texture_Converter.py index 257e9389..9fa90365 100755 --- a/tools/Texture_Converter.py +++ b/tools/Texture_Converter.py @@ -378,7 +378,6 @@ def convert_textures(): offset = [ [ pcol, "", "grass" ], # Default grass: Plains - [ "40+255", "_dry", "dry_grass" ], # Dry grass: Savanna, Mesa Plateau F, Nether, … ] for o in offset: colorize(GRASS, tex_dir+"/blocks/grass_top.png", o[0], str(PXSIZE), target_dir("/mods/ITEMS/mcl_core/textures")+"/default_"+o[2]+".png") From aaedf6517ad4d3eabdeb3b762a67d54d767751d0 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sat, 14 Dec 2019 01:52:01 +0100 Subject: [PATCH 408/737] Update grass block param2 when placing snow nodes --- mods/ITEMS/mcl_core/functions.lua | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mods/ITEMS/mcl_core/functions.lua b/mods/ITEMS/mcl_core/functions.lua index 5ef133fb..ae67a669 100644 --- a/mods/ITEMS/mcl_core/functions.lua +++ b/mods/ITEMS/mcl_core/functions.lua @@ -1318,7 +1318,7 @@ end mcl_core.clear_snow_dirt = function(pos, node) local def = minetest.registered_nodes[node.name] if def._mcl_snowless then - minetest.swap_node(pos, {name = def._mcl_snowless}) + minetest.swap_node(pos, {name = def._mcl_snowless, param2=node.param2}) end end @@ -1339,7 +1339,7 @@ mcl_core.on_snowable_construct = function(pos) if minetest.get_item_group(anode.name, "snow_cover") == 1 then local def = minetest.registered_nodes[node.name] if def._mcl_snowed then - minetest.swap_node(pos, {name = def._mcl_snowed}) + minetest.swap_node(pos, {name = def._mcl_snowed, param2=node.param2}) end end end @@ -1360,7 +1360,7 @@ mcl_core.on_snow_construct = function(pos) local node = minetest.get_node(npos) local def = minetest.registered_nodes[node.name] if def._mcl_snowed then - minetest.swap_node(npos, {name = def._mcl_snowed}) + minetest.swap_node(npos, {name = def._mcl_snowed, param2=node.param2}) end end -- after_destruct From 1971b3c5a86a088cd325a15e82c7d4cc5859fbf4 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sat, 14 Dec 2019 01:59:14 +0100 Subject: [PATCH 409/737] Update menu icon for new grass block --- menu/icon.png | Bin 4158 -> 3961 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/menu/icon.png b/menu/icon.png index caed255e6ad79c83af2837e199ea2b0a49a11977..e479dfff5a55bf28d90056e968246e803aad0297 100644 GIT binary patch literal 3961 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 From 741b32e8d0173c30a2adfa0a0303c5b373934afd Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sat, 14 Dec 2019 03:10:16 +0100 Subject: [PATCH 410/737] Tweak grass palette --- .../textures/mcl_core_palette_grass.png | Bin 254 -> 249 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_palette_grass.png b/mods/ITEMS/mcl_core/textures/mcl_core_palette_grass.png index 2eb928208463b0b14e47dfb4c289f218139861b8..bdfab38972333c2bd7c1f0c2c234b938d445a291 100644 GIT binary patch delta 174 zcmeyz_>*x$a6KOryNu#{_Xq|ChBi+Z#}JFtZ_jSzVq|1E_VIq9$E1VLc$a9bKKn#) zPs_!{6^#6eCYt#UCu`WcPcM97)hx7l&3Ebj5C5}HzH0J%`O3E|dGxMszO`0QE7fkR zTw}EHRtq(@-b2;=kAF{1I;wVC+Fe(q@aoaU!cl701ssBxD|goV hQ_PhL{CjK|`Ddsoo1DA&fq{X6!PC{xWt~$(695i(O4tAZ delta 179 zcmey#_>XZya6PZMmeuVEVfG9R4BehCjv*GO-=5un%8`-b*u&>PtmiepOfi)3Ih8eW z-@&sIv0c&yf^L(IqyvJ)3~TN?ycD*QZ5CR*=DFnkhu_)udfI0m+xT=L!?vfrr{b^b z&94x>%k(@b=S%e^F5~mI<$L~3){Rohw%^>%amJP7w&~-`TyKhXEQ03Cy)fgkW)^tx m_m#6`ycct(0 Date: Sat, 14 Dec 2019 03:38:00 +0100 Subject: [PATCH 411/737] Make variable local --- mods/MAPGEN/mcl_structures/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/MAPGEN/mcl_structures/init.lua b/mods/MAPGEN/mcl_structures/init.lua index bb51004a..6e6ca585 100644 --- a/mods/MAPGEN/mcl_structures/init.lua +++ b/mods/MAPGEN/mcl_structures/init.lua @@ -84,7 +84,7 @@ mcl_structures.generate_igloo = function(pos) if success and r == 1 then -- Select basement depth local dim = mcl_worlds.pos_to_dimension(pos) - buffer = pos.y - (mcl_vars.mg_lava_overworld_max + 10) + local buffer = pos.y - (mcl_vars.mg_lava_overworld_max + 10) if dim == "nether" then buffer = pos.y - (mcl_vars.mg_lava_nether_max + 10) elseif dim == "end" then From 7f70acc8a4e36c06b2f43b38a06df374305bc75b Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sat, 14 Dec 2019 17:40:16 +0100 Subject: [PATCH 412/737] Make dropped items glow if light source node --- mods/ENTITIES/mcl_item_entity/init.lua | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/mods/ENTITIES/mcl_item_entity/init.lua b/mods/ENTITIES/mcl_item_entity/init.lua index 36282449..c5d12d4e 100644 --- a/mods/ENTITIES/mcl_item_entity/init.lua +++ b/mods/ENTITIES/mcl_item_entity/init.lua @@ -359,6 +359,11 @@ core.register_entity(":__builtin:item", { item_type = core.registered_items[itemname].type description = core.registered_items[itemname].description end + local ndef = core.registered_items[itemname] + local glow + if ndef then + glow = ndef.light_source + end local prop = { is_visible = true, visual = "wielditem", @@ -367,6 +372,7 @@ core.register_entity(":__builtin:item", { collisionbox = {-c, -c, -c, c, c, c}, automatic_rotate = math.pi * 0.5, infotext = description, + glow = glow, } self.object:set_properties(prop) if item_drop_settings.random_item_velocity == true then From f4888a42a961fc43ef94ef2e4fb62f4e8a0d5028 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sat, 14 Dec 2019 18:56:59 +0100 Subject: [PATCH 413/737] Add glow to falling light source nodes --- mods/ENTITIES/mcl_falling_nodes/init.lua | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/mods/ENTITIES/mcl_falling_nodes/init.lua b/mods/ENTITIES/mcl_falling_nodes/init.lua index 54074567..d5dd6c47 100644 --- a/mods/ENTITIES/mcl_falling_nodes/init.lua +++ b/mods/ENTITIES/mcl_falling_nodes/init.lua @@ -81,11 +81,8 @@ minetest.register_entity(":__builtin:falling_node", { set_node = function(self, node, meta) self.node = node self.meta = meta or {} - self.object:set_properties({ - is_visible = true, - textures = {node.name}, - }) local def = core.registered_nodes[node.name] + local glow -- Set correct entity yaw if def and node.param2 ~= 0 then if (def.paramtype2 == "facedir" or def.paramtype2 == "colorfacedir") then @@ -93,7 +90,15 @@ minetest.register_entity(":__builtin:falling_node", { elseif (def.paramtype2 == "wallmounted" or def.paramtype2 == "colorwallmounted") then self.object:set_yaw(core.dir_to_yaw(core.wallmounted_to_dir(node.param2))) end + if def.light_source then + glow = def.light_source + end end + self.object:set_properties({ + is_visible = true, + textures = {node.name}, + glow = glow, + }) end, get_staticdata = function(self) From 101c9b73222a709826dd343dcfedbb9014c47307 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sat, 14 Dec 2019 18:57:17 +0100 Subject: [PATCH 414/737] Use minetest.LIGHT_MAX --- mods/ITEMS/REDSTONE/mesecons_lightstone/init.lua | 7 ++++--- .../mesecons_lightstone/locale/mesecons_lightstone.de.tr | 2 +- .../ITEMS/REDSTONE/mesecons_lightstone/locale/template.txt | 2 +- mods/ITEMS/mcl_core/nodes_liquid.lua | 6 ++---- mods/ITEMS/mcl_end/building.lua | 4 ++-- mods/ITEMS/mcl_farming/pumpkin.lua | 3 +-- mods/ITEMS/mcl_fire/init.lua | 6 ++---- mods/ITEMS/mcl_nether/init.lua | 3 +-- mods/ITEMS/mcl_ocean/init.lua | 3 +-- mods/ITEMS/mcl_torches/init.lua | 4 ++-- 10 files changed, 17 insertions(+), 23 deletions(-) diff --git a/mods/ITEMS/REDSTONE/mesecons_lightstone/init.lua b/mods/ITEMS/REDSTONE/mesecons_lightstone/init.lua index 97ef544a..822aa3be 100644 --- a/mods/ITEMS/REDSTONE/mesecons_lightstone/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons_lightstone/init.lua @@ -1,11 +1,13 @@ local S = minetest.get_translator("mesecons_lightstone") +local light = minetest.LIGHT_MAX + minetest.register_node("mesecons_lightstone:lightstone_off", { tiles = {"jeija_lightstone_gray_off.png"}, groups = {handy=1, mesecon_effector_off = 1, mesecon = 2}, is_ground_content = false, description= S("Redstone Lamp"), - _doc_items_longdesc = S("Redstone lamps are simple redstone components which glow brightly (light level 14) when they receive redstone power."), + _doc_items_longdesc = S("Redstone lamps are simple redstone components which glow brightly (light level @1) when they receive redstone power.", light), sounds = mcl_sounds.node_sound_glass_defaults(), mesecons = {effector = { action_on = function (pos, node) @@ -23,8 +25,7 @@ minetest.register_node("mesecons_lightstone:lightstone_on", { drop = "node mesecons_lightstone:lightstone_off", is_ground_content = false, paramtype = "light", - -- Real light level: 15 (Minetest caps at 14) - light_source = 14, + light_source = light, sounds = mcl_sounds.node_sound_glass_defaults(), mesecons = {effector = { action_off = function (pos, node) diff --git a/mods/ITEMS/REDSTONE/mesecons_lightstone/locale/mesecons_lightstone.de.tr b/mods/ITEMS/REDSTONE/mesecons_lightstone/locale/mesecons_lightstone.de.tr index dd39b80d..44b52180 100644 --- a/mods/ITEMS/REDSTONE/mesecons_lightstone/locale/mesecons_lightstone.de.tr +++ b/mods/ITEMS/REDSTONE/mesecons_lightstone/locale/mesecons_lightstone.de.tr @@ -1,3 +1,3 @@ # textdomain: mesecons_lightstone Redstone Lamp=Redstonelampe -Redstone lamps are simple redstone components which glow brightly (light level 14) when they receive redstone power.=Redstonelampen sind einfache Redstonekomponenten, die hell aufleuchten (Helligkeitspegel von 14), wenn sie Redstoneenergie erhalten. +Redstone lamps are simple redstone components which glow brightly (light level @1) when they receive redstone power.=Redstonelampen sind einfache Redstonekomponenten, die hell aufleuchten (Helligkeitspegel von @1), wenn sie Redstoneenergie erhalten. diff --git a/mods/ITEMS/REDSTONE/mesecons_lightstone/locale/template.txt b/mods/ITEMS/REDSTONE/mesecons_lightstone/locale/template.txt index 3261d768..b8a5bf4d 100644 --- a/mods/ITEMS/REDSTONE/mesecons_lightstone/locale/template.txt +++ b/mods/ITEMS/REDSTONE/mesecons_lightstone/locale/template.txt @@ -1,3 +1,3 @@ # textdomain: mesecons_lightstone Redstone Lamp= -Redstone lamps are simple redstone components which glow brightly (light level 14) when they receive redstone power.= +Redstone lamps are simple redstone components which glow brightly (light level @1) when they receive redstone power.= diff --git a/mods/ITEMS/mcl_core/nodes_liquid.lua b/mods/ITEMS/mcl_core/nodes_liquid.lua index 815fd6fe..5ba3c2da 100644 --- a/mods/ITEMS/mcl_core/nodes_liquid.lua +++ b/mods/ITEMS/mcl_core/nodes_liquid.lua @@ -118,8 +118,7 @@ minetest.register_node("mcl_core:lava_flowing", { }, paramtype = "light", paramtype2 = "flowingliquid", - -- Real light level: 15 (but Minetest caps at 14) - light_source = 14, + light_source = minetest.LIGHT_MAX, sounds = mcl_sounds.node_sound_lava_defaults(), walkable = false, pointable = false, @@ -175,9 +174,8 @@ S("• When lava is directly above water, the water turns into stone."), backface_culling = false, } }, - -- Real light level: 15 (but Minetest caps at 14) paramtype = "light", - light_source = 14, + light_source = minetest.LIGHT_MAX, sounds = mcl_sounds.node_sound_lava_defaults(), walkable = false, pointable = false, diff --git a/mods/ITEMS/mcl_end/building.lua b/mods/ITEMS/mcl_end/building.lua index 4dbfb563..31b4bd55 100644 --- a/mods/ITEMS/mcl_end/building.lua +++ b/mods/ITEMS/mcl_end/building.lua @@ -66,9 +66,9 @@ minetest.register_node("mcl_end:end_rod", { is_ground_content = false, paramtype = "light", paramtype2 = "facedir", - light_source = 14, + light_source = minetest.LIGHT_MAX, sunlight_propagates = true, - groups = { dig_immediate=3, deco_block=1, destroy_by_lava_flow=1, }, + groups = { dig_immediate=3, deco_block=1, destroy_by_lava_flow=1, falling_node=1 }, node_box = { type = "fixed", fixed = { diff --git a/mods/ITEMS/mcl_farming/pumpkin.lua b/mods/ITEMS/mcl_farming/pumpkin.lua index d1043747..8c87447c 100644 --- a/mods/ITEMS/mcl_farming/pumpkin.lua +++ b/mods/ITEMS/mcl_farming/pumpkin.lua @@ -125,8 +125,7 @@ minetest.register_node("mcl_farming:pumpkin_face_light", { stack_max = 64, paramtype = "light", paramtype2 = "facedir", - -- Real light level: 15 (Minetest caps at 14) - light_source = 14, + light_source = minetest.LIGHT_MAX, tiles = {"farming_pumpkin_top.png", "farming_pumpkin_top.png", "farming_pumpkin_side.png", "farming_pumpkin_side.png", "farming_pumpkin_side.png", "farming_pumpkin_face_light.png"}, groups = {handy=1,axey=1, building_block=1, dig_by_piston=1 }, sounds = mcl_sounds.node_sound_wood_defaults(), diff --git a/mods/ITEMS/mcl_fire/init.lua b/mods/ITEMS/mcl_fire/init.lua index ea36d1ce..ca61d9a4 100644 --- a/mods/ITEMS/mcl_fire/init.lua +++ b/mods/ITEMS/mcl_fire/init.lua @@ -57,8 +57,7 @@ minetest.register_node("mcl_fire:fire", { }, inventory_image = "fire_basic_flame.png", paramtype = "light", - -- Real light level: 15 (but Minetest caps at 14) - light_source = 14, + light_source = minetest.LIGHT_MAX, walkable = false, buildable_to = true, sunlight_propagates = true, @@ -142,8 +141,7 @@ minetest.register_node("mcl_fire:eternal_fire", { }, inventory_image = "fire_basic_flame.png", paramtype = "light", - -- Real light level: 15 (but Minetest caps at 14) - light_source = 14, + light_source = minetest.LIGHT_MAX, walkable = false, buildable_to = true, sunlight_propagates = true, diff --git a/mods/ITEMS/mcl_nether/init.lua b/mods/ITEMS/mcl_nether/init.lua index 116fe789..62c5dc41 100644 --- a/mods/ITEMS/mcl_nether/init.lua +++ b/mods/ITEMS/mcl_nether/init.lua @@ -18,8 +18,7 @@ minetest.register_node("mcl_nether:glowstone", { } }, paramtype = "light", - -- Real light level: 15 (but Minetest caps at 14) - light_source = 14, + light_source = minetest.LIGHT_MAX, sounds = mcl_sounds.node_sound_glass_defaults(), _mcl_blast_resistance = 1.5, _mcl_hardness = 0.3, diff --git a/mods/ITEMS/mcl_ocean/init.lua b/mods/ITEMS/mcl_ocean/init.lua index b84bbeac..90626cfa 100644 --- a/mods/ITEMS/mcl_ocean/init.lua +++ b/mods/ITEMS/mcl_ocean/init.lua @@ -8,8 +8,7 @@ minetest.register_node("mcl_ocean:sea_lantern", { paramtype2 = "facedir", is_ground_content = false, stack_max = 64, - -- Real light level: 15 (but Minetest caps at 14) - light_source = 14, + light_source = minetest.LIGHT_MAX, drop = { max_items = 1, items = { diff --git a/mods/ITEMS/mcl_torches/init.lua b/mods/ITEMS/mcl_torches/init.lua index 6d869e9c..ea7c1a2a 100644 --- a/mods/ITEMS/mcl_torches/init.lua +++ b/mods/ITEMS/mcl_torches/init.lua @@ -47,7 +47,7 @@ mcl_torches.register_torch = function(substring, description, doc_items_longdesc local itemstring = minetest.get_current_modname()..":"..substring local itemstring_wall = minetest.get_current_modname()..":"..substring.."_wall" - if light == nil then light = 14 end + if light == nil then light = minetest.LIGHT_MAX end if mesh_floor == nil then mesh_floor = "mcl_torches_torch_floor.obj" end if mesh_wall == nil then mesh_wall = "mcl_torches_torch_wall.obj" end if groups == nil then groups = {} end @@ -189,7 +189,7 @@ mcl_torches.register_torch("torch", name = "default_torch_on_floor_animated.png", animation = {type = "vertical_frames", aspect_w = 16, aspect_h = 16, length = 3.3} }}, - 14, + minetest.LIGHT_MAX, {dig_immediate=3, torch=1, deco_block=1}, mcl_sounds.node_sound_wood_defaults(), {_doc_items_hidden = false}) From 44c95084abdc5496c53cb2752fc3125da6519bb9 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sat, 14 Dec 2019 22:13:54 +0100 Subject: [PATCH 415/737] Simplify lilypad rotation --- mods/ITEMS/mcl_flowers/depends.txt | 1 + mods/ITEMS/mcl_flowers/init.lua | 9 ++++++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_flowers/depends.txt b/mods/ITEMS/mcl_flowers/depends.txt index e52e9ac0..a7a7b9cd 100644 --- a/mods/ITEMS/mcl_flowers/depends.txt +++ b/mods/ITEMS/mcl_flowers/depends.txt @@ -1,4 +1,5 @@ mcl_core mcl_util mcl_sounds +screwdriver? doc? diff --git a/mods/ITEMS/mcl_flowers/init.lua b/mods/ITEMS/mcl_flowers/init.lua index 3d934c4c..fb1ae105 100644 --- a/mods/ITEMS/mcl_flowers/init.lua +++ b/mods/ITEMS/mcl_flowers/init.lua @@ -1,5 +1,7 @@ local S = minetest.get_translator("mcl_flowers") +local mod_screwdriver = minetest.get_modpath("screwdriver") ~= nil + -- Minetest 0.4 mod: default -- See README.txt for licensing and other information. local init = os.clock() @@ -361,6 +363,10 @@ minetest.register_abm({ end, }) +local on_rotate +if mod_screwdriver then + on_rotate = screwdriver.rotate_simple +end -- Lily Pad minetest.register_node("mcl_flowers:waterlily", { @@ -427,7 +433,8 @@ minetest.register_node("mcl_flowers:waterlily", { end return itemstack - end + end, + on_rotate = on_rotate, }) -- Legacy support From 92ef7c3b9a8b9abd5adfcb931d0bc43bbdf9c3b5 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sat, 14 Dec 2019 23:42:17 +0100 Subject: [PATCH 416/737] Simplify rotation of pillar-like nodes --- mods/ITEMS/mcl_core/nodes_misc.lua | 7 +++++++ mods/ITEMS/mcl_core/nodes_trees.lua | 8 ++++++++ mods/ITEMS/mcl_end/building.lua | 7 +++++++ mods/ITEMS/mcl_farming/pumpkin.lua | 8 ++++++++ mods/ITEMS/mcl_farming/wheat.lua | 7 +++++++ mods/ITEMS/mcl_nether/depends.txt | 1 + mods/ITEMS/mcl_nether/init.lua | 6 ++++++ mods/ITEMS/screwdriver/init.lua | 24 ++++++++++++++++++++++++ 8 files changed, 68 insertions(+) diff --git a/mods/ITEMS/mcl_core/nodes_misc.lua b/mods/ITEMS/mcl_core/nodes_misc.lua index 8d204fa9..800d7442 100644 --- a/mods/ITEMS/mcl_core/nodes_misc.lua +++ b/mods/ITEMS/mcl_core/nodes_misc.lua @@ -1,6 +1,12 @@ -- Other nodes local S = minetest.get_translator("mcl_core") +local mod_screwdriver = minetest.get_modpath("screwdriver") ~= nil +local on_rotate +if mod_screwdriver then + on_rotate = screwdriver.rotate_3way +end + minetest.register_node("mcl_core:bone_block", { description = S("Bone Block"), _doc_items_longdesc = S("Bone blocks are decorative blocks and a compact storage of bone meal."), @@ -10,6 +16,7 @@ minetest.register_node("mcl_core:bone_block", { on_place = mcl_util.rotate_axis, groups = {pickaxey=1, building_block=1, material_stone=1}, sounds = mcl_sounds.node_sound_stone_defaults(), + on_rotate = on_rotate, _mcl_blast_resistance = 10, _mcl_hardness = 2, }) diff --git a/mods/ITEMS/mcl_core/nodes_trees.lua b/mods/ITEMS/mcl_core/nodes_trees.lua index 433ae03a..92d2a7cd 100644 --- a/mods/ITEMS/mcl_core/nodes_trees.lua +++ b/mods/ITEMS/mcl_core/nodes_trees.lua @@ -1,6 +1,12 @@ -- Tree nodes: Wood, Wooden Planks, Sapling, Leaves local S = minetest.get_translator("mcl_core") +local mod_screwdriver = minetest.get_modpath("screwdriver") ~= nil +local on_rotate +if mod_screwdriver then + on_rotate = screwdriver.rotate_3way +end + -- Register tree trunk (wood) and bark local register_tree_trunk = function(subname, description_trunk, description_bark, longdesc, tile_inner, tile_bark) minetest.register_node("mcl_core:"..subname, { @@ -13,6 +19,7 @@ local register_tree_trunk = function(subname, description_trunk, description_bar stack_max = 64, groups = {handy=1,axey=1, tree=1, flammable=2, building_block=1, material_wood=1}, sounds = mcl_sounds.node_sound_wood_defaults(), + on_rotate = on_rotate, _mcl_blast_resistance = 10, _mcl_hardness = 2, }) @@ -27,6 +34,7 @@ local register_tree_trunk = function(subname, description_trunk, description_bar groups = {handy=1,axey=1, bark=1, flammable=2, building_block=1, material_wood=1}, sounds = mcl_sounds.node_sound_wood_defaults(), is_ground_content = false, + on_rotate = on_rotate, _mcl_blast_resistance = 10, _mcl_hardness = 2, }) diff --git a/mods/ITEMS/mcl_end/building.lua b/mods/ITEMS/mcl_end/building.lua index 31b4bd55..696a2276 100644 --- a/mods/ITEMS/mcl_end/building.lua +++ b/mods/ITEMS/mcl_end/building.lua @@ -1,6 +1,12 @@ -- Building blocks and decorative nodes local S = minetest.get_translator("mcl_end") +local mod_screwdriver = minetest.get_modpath("screwdriver") ~= nil +local on_rotate +if mod_screwdriver then + on_rotate = screwdriver.rotate_3way +end + minetest.register_node("mcl_end:end_stone", { description = S("End Stone"), _doc_items_longdesc = doc.sub.items.temp.build, @@ -47,6 +53,7 @@ minetest.register_node("mcl_end:purpur_pillar", { tiles = {"mcl_end_purpur_pillar_top.png", "mcl_end_purpur_pillar_top.png", "mcl_end_purpur_pillar.png"}, groups = {pickaxey=1, building_block=1, material_stone=1, purpur_block=1}, sounds = mcl_sounds.node_sound_stone_defaults(), + on_rotate = on_rotate, _mcl_blast_resistance = 30, _mcl_hardness = 1.5, }) diff --git a/mods/ITEMS/mcl_farming/pumpkin.lua b/mods/ITEMS/mcl_farming/pumpkin.lua index 8c87447c..dae762ad 100644 --- a/mods/ITEMS/mcl_farming/pumpkin.lua +++ b/mods/ITEMS/mcl_farming/pumpkin.lua @@ -1,5 +1,11 @@ local S = minetest.get_translator("mcl_farming") +local mod_screwdriver = minetest.get_modpath("screwdriver") ~= nil +local on_rotate +if mod_screwdriver then + on_rotate = screwdriver.rotate_simple +end + -- Seeds minetest.register_craftitem("mcl_farming:pumpkin_seeds", { description = S("Pumpkin Seeds"), @@ -93,6 +99,7 @@ local pumpkin_base_def = { tiles = {"farming_pumpkin_top.png", "farming_pumpkin_top.png", "farming_pumpkin_side.png"}, groups = {handy=1,axey=1, plant=1,building_block=1, dig_by_piston=1, enderman_takable=1}, sounds = mcl_sounds.node_sound_wood_defaults(), + on_rotate = on_rotate, _mcl_blast_resistance = 5, _mcl_hardness = 1, } @@ -134,6 +141,7 @@ minetest.register_node("mcl_farming:pumpkin_face_light", { mobs_mc.tools.check_iron_golem_summon(pos) mobs_mc.tools.check_snow_golem_summon(pos) end, + on_rotate = on_rotate, _mcl_blast_resistance = 5, _mcl_hardness = 1, }) diff --git a/mods/ITEMS/mcl_farming/wheat.lua b/mods/ITEMS/mcl_farming/wheat.lua index 1a65d1d1..4c8800da 100644 --- a/mods/ITEMS/mcl_farming/wheat.lua +++ b/mods/ITEMS/mcl_farming/wheat.lua @@ -130,6 +130,12 @@ minetest.register_craftitem("mcl_farming:bread", { on_secondary_use = minetest.item_eat(5), }) +local mod_screwdriver = minetest.get_modpath("screwdriver") ~= nil +local on_rotate +if mod_screwdriver then + on_rotate = screwdriver.rotate_3way +end + minetest.register_node("mcl_farming:hay_block", { description = S("Hay Bale"), _doc_items_longdesc = S("Hay bales are decorative blocks made from wheat."), @@ -141,6 +147,7 @@ minetest.register_node("mcl_farming:hay_block", { on_place = mcl_util.rotate_axis, groups = {handy=1, flammable=2, building_block=1, fall_damage_add_percent=-80}, sounds = mcl_sounds.node_sound_leaves_defaults(), + on_rotate = on_rotate, _mcl_blast_resistance = 2.5, _mcl_hardness = 0.5, }) diff --git a/mods/ITEMS/mcl_nether/depends.txt b/mods/ITEMS/mcl_nether/depends.txt index 273e76e1..96f253aa 100644 --- a/mods/ITEMS/mcl_nether/depends.txt +++ b/mods/ITEMS/mcl_nether/depends.txt @@ -5,3 +5,4 @@ walkover mcl_death_messages? doc_items doc? +screwdriver? diff --git a/mods/ITEMS/mcl_nether/init.lua b/mods/ITEMS/mcl_nether/init.lua index 62c5dc41..f183fcc0 100644 --- a/mods/ITEMS/mcl_nether/init.lua +++ b/mods/ITEMS/mcl_nether/init.lua @@ -1,6 +1,11 @@ local S = minetest.get_translator("mcl_nether") local mod_death_messages = minetest.get_modpath("mcl_death_messages") +local mod_screwdriver = minetest.get_modpath("screwdriver") ~= nil +local on_rotate +if mod_screwdriver then + on_rotate = screwdriver.rotate_3way +end minetest.register_node("mcl_nether:glowstone", { description = S("Glowstone"), @@ -201,6 +206,7 @@ minetest.register_node("mcl_nether:quartz_pillar", { tiles = {"mcl_nether_quartz_pillar_top.png", "mcl_nether_quartz_pillar_top.png", "mcl_nether_quartz_pillar_side.png"}, groups = {pickaxey=1, quartz_block=1,building_block=1, material_stone=1}, sounds = mcl_sounds.node_sound_stone_defaults(), + on_rotate = on_rotate, _mcl_blast_resistance = 4, _mcl_hardness = 0.8, }) diff --git a/mods/ITEMS/screwdriver/init.lua b/mods/ITEMS/screwdriver/init.lua index 28d2c12a..7fad2bdc 100644 --- a/mods/ITEMS/screwdriver/init.lua +++ b/mods/ITEMS/screwdriver/init.lua @@ -12,6 +12,30 @@ screwdriver.rotate_simple = function(pos, node, user, mode, new_param2) return false end end +screwdriver.rotate_3way = function(pos, node, user, mode, new_param2) + if mode == screwdriver.ROTATE_AXIS then + if node.param2 == 0 then + node.param2 = 6 + elseif node.param2 == 6 then + node.param2 = 12 + else + node.param2 = 0 + end + minetest.swap_node(pos, node) + return true + elseif mode == screwdriver.ROTATE_FACE then + if node.param2 == 6 then + node.param2 = 12 + minetest.swap_node(pos, node) + return true + else + node.param2 = 6 + minetest.swap_node(pos, node) + return true + end + end + return false +end -- For attached wallmounted nodes: returns true if rotation is valid -- simplified version of minetest:builtin/game/falling.lua#L148. From 862e3141d91bf9a2f8a0d11e7faf233a16a3600d Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sat, 14 Dec 2019 23:50:17 +0100 Subject: [PATCH 417/737] Add API documentation for screwdriver mod --- mods/ITEMS/screwdriver/API.md | 20 +++++++++++++++++++ .../screwdriver/{README.txt => README.md} | 8 ++++---- 2 files changed, 24 insertions(+), 4 deletions(-) create mode 100644 mods/ITEMS/screwdriver/API.md rename mods/ITEMS/screwdriver/{README.txt => README.md} (69%) diff --git a/mods/ITEMS/screwdriver/API.md b/mods/ITEMS/screwdriver/API.md new file mode 100644 index 00000000..03cc6fdd --- /dev/null +++ b/mods/ITEMS/screwdriver/API.md @@ -0,0 +1,20 @@ +Screwdriver API +--------------- + +The screwdriver API allows you to control a node's behaviour when a screwdriver is used on it. +NOTE: This API is compatible with Minetest Game 5.1.0, but has some extensions. + +To use it, add the `on_rotate` function to the node definition. + +`on_rotate(pos, node, user, mode, new_param2)` + + * `pos`: Position of the node that the screwdriver is being used on + * `node`: that node + * `user`: The player who used the screwdriver + * `mode`: `screwdriver.ROTATE_FACE` or `screwdriver.ROTATE_AXIS` + * `new_param2` the new value of `param2` that would have been set if `on_rotate` wasn't there + * return value: false to disallow rotation, nil to keep default behaviour, true to allow + it but to indicate that changed have already been made (so the screwdriver will wear out) + * use `on_rotate = false` to always disallow rotation + * use `on_rotate = screwdriver.rotate_simple` to allow only face rotation + * use `on_rotate = screwdriver.rotate_3way` (MineClone 2 extension) for pillar-like nodes that should only have 3 possible orientations) diff --git a/mods/ITEMS/screwdriver/README.txt b/mods/ITEMS/screwdriver/README.md similarity index 69% rename from mods/ITEMS/screwdriver/README.txt rename to mods/ITEMS/screwdriver/README.md index 9d39c58c..7237c847 100644 --- a/mods/ITEMS/screwdriver/README.txt +++ b/mods/ITEMS/screwdriver/README.md @@ -1,5 +1,5 @@ -Minetest Game mod: screwdriver -============================== +MineClone 2 mod: screwdriver +============================ See license.txt for license information. License of source code @@ -9,5 +9,5 @@ Various Minetest developers and contributors (LGPL 2.1) License of media (textures) --------------------------- -Created by Gambit (CC BY-SA 3.0): - screwdriver.png +Created by Wuzzy (CC0): +* `screwdriver.png` From 5b956c1c47e3e968aa9b0ba3f193b813154bb313 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sun, 15 Dec 2019 00:27:23 +0100 Subject: [PATCH 418/737] Disallow cocoa screwdriver rotation --- mods/ITEMS/mcl_cocoas/init.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/mods/ITEMS/mcl_cocoas/init.lua b/mods/ITEMS/mcl_cocoas/init.lua index ae9d5cf1..047e1277 100644 --- a/mods/ITEMS/mcl_cocoas/init.lua +++ b/mods/ITEMS/mcl_cocoas/init.lua @@ -110,6 +110,7 @@ local crop_def = { handy=1,axey=1, cocoa=1, not_in_creative_inventory=1, dig_by_water=1, destroy_by_lava_flow=1, dig_by_piston=1, attached_node_facedir=1, }, sounds = mcl_sounds.node_sound_wood_defaults(), + on_rotate = false, _mcl_blast_resistance = 15, _mcl_hardness = 0.2, } From 29b20a51bcf119eed998e00dd3b8c32ee300614d Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 16 Dec 2019 00:36:48 +0100 Subject: [PATCH 419/737] Update README --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 76718595..3123597d 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ An unofficial Minecraft-like game for Minetest. Forked from MineClone by davedevils. Developed by Wuzzy and contributors. Not developed or endorsed by Mojang AB. -Version: 0.55.1 +Version: 0.56.0 ### Gameplay You start in a randomly-generated world made entirely of cubes. You can explore From 4cc51a55c2639ea82a66e010c6cfc076af89a3a9 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 16 Dec 2019 00:37:29 +0100 Subject: [PATCH 420/737] Version 0.56.1 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 3123597d..c569fbef 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ An unofficial Minecraft-like game for Minetest. Forked from MineClone by davedevils. Developed by Wuzzy and contributors. Not developed or endorsed by Mojang AB. -Version: 0.56.0 +Version: 0.56.1 ### Gameplay You start in a randomly-generated world made entirely of cubes. You can explore From a5b4a261dc4ccdd808e018824f83a0ceccb24498 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 16 Dec 2019 23:59:49 +0100 Subject: [PATCH 421/737] Dry grass replacement: Use fallback param2 --- mods/ITEMS/mcl_core/functions.lua | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/mods/ITEMS/mcl_core/functions.lua b/mods/ITEMS/mcl_core/functions.lua index ae67a669..47ac0549 100644 --- a/mods/ITEMS/mcl_core/functions.lua +++ b/mods/ITEMS/mcl_core/functions.lua @@ -774,6 +774,10 @@ minetest.register_lbm({ node.name = "mcl_core:dirt_with_grass" end node.param2 = reg_biome._mcl_palette_index + -- Fall back to savanna palette index + if not node.param2 then + node.param2 = 1 + end minetest.set_node(pos, node) end end From bab4529e4dbcd130bcd516b82e13370dd807d170 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 17 Dec 2019 01:44:11 +0100 Subject: [PATCH 422/737] Fix armor mod deleting player's immortal group --- mods/ITEMS/minetest-3d_armor/3d_armor/armor.lua | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor/armor.lua b/mods/ITEMS/minetest-3d_armor/3d_armor/armor.lua index c4de2c52..a1ea3369 100644 --- a/mods/ITEMS/minetest-3d_armor/3d_armor/armor.lua +++ b/mods/ITEMS/minetest-3d_armor/3d_armor/armor.lua @@ -169,7 +169,10 @@ armor.set_player_armor = function(self, player) if #textures > 0 then armor_texture = table.concat(textures, "^") end - local armor_groups = {fleshy=100} + local armor_groups = player:get_armor_groups() + armor_groups.fleshy = 100 + armor_groups.level = nil + armor_groups.radiation = nil if armor_level > 0 then armor_groups.level = math.floor(armor_level / 20) armor_groups.fleshy = 100 - armor_level From 085e6f306a5a77328695fc0b44356b1475dec318 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 17 Dec 2019 02:01:34 +0100 Subject: [PATCH 423/737] Use fallback grass color for unknown values --- .../textures/mcl_core_palette_grass.png | Bin 249 -> 248 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_palette_grass.png b/mods/ITEMS/mcl_core/textures/mcl_core_palette_grass.png index bdfab38972333c2bd7c1f0c2c234b938d445a291..116d0cb86724e98a0a09e33133a7f8c512fc47e7 100644 GIT binary patch delta 214 zcmey#_=9nRRy_j<{B+(8VsI9CL>4nJa0`PlBg3pY5)2Fs>?NMQuI!I_1jO}>Q-YV= zWnf@v^>lFzu{izqj3HN307JvW|1X0#aP^f{t==Z!QQW5+0+EbZsFTUcR z=gV>9z!Av^Wly_n3|oXG9(;MB*vWZkE`vbk#Eq>--O>`+(ms4;?7gR4SiSj7HpmB_ Lu6{1-oD!M% delta 215 zcmeyt_>*yhR=oy;2?N(@*XkDx3=EtF9+AZi4BWyX%*Zfnjsyb(1AB?5uPggw9zG^^ z8O8VR5ey6rZJsWUAr`0Kp54gB$jET)YptGEK&stVxyESYtrlu*y@#s# zAOD`3bX4uOw7afI;nkyyg`?E03pfNX$IX}cdZyi2;KA=#?yU8vm@5_d_t-G<&rne| UId|~`0|Nttr>mdKI;Vst0D%ir4*&oF From 82b9c7d474691bd0e1954dbb3f8a4174256cf241 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 17 Dec 2019 02:38:37 +0100 Subject: [PATCH 424/737] Change screenshot --- screenshot.png | Bin 95212 -> 88675 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/screenshot.png b/screenshot.png index 5db7b64f78eea23aec75e17e8284433cd7c0bb18..a92bd53e5e767697add40e8bdf0befcce6ceb620 100644 GIT binary patch literal 88675 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

    K-Dlt4R`1?-)ywL& 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

    ?n4)sM3qcHW53`It3pnbnaNj^!~&=dXHlh&elC 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 AFjQN{UVJm+_d-t9`bN&7p7Qc(m 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 Q0|Nttr>mdKI;Vst0MF@qg8%>k literal 95212 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≧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 From 59964279b74b63566f2220ea59fb40158df48db3 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 17 Dec 2019 03:30:14 +0100 Subject: [PATCH 425/737] Version 0.56.2 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index c569fbef..06d7ae9a 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ An unofficial Minecraft-like game for Minetest. Forked from MineClone by davedevils. Developed by Wuzzy and contributors. Not developed or endorsed by Mojang AB. -Version: 0.56.1 +Version: 0.56.2 ### Gameplay You start in a randomly-generated world made entirely of cubes. You can explore From 39670e1f79c1e3949a92b6a013b9d66000c5e575 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 17 Dec 2019 16:42:25 +0100 Subject: [PATCH 426/737] Add corals --- mods/ITEMS/mcl_ocean/init.lua | 168 ++++++++++++++++++ .../textures/mcl_ocean_brain_coral.png | Bin 0 -> 317 bytes .../textures/mcl_ocean_brain_coral_block.png | Bin 0 -> 349 bytes .../textures/mcl_ocean_brain_coral_fan.png | Bin 0 -> 306 bytes .../textures/mcl_ocean_bubble_coral.png | Bin 0 -> 327 bytes .../textures/mcl_ocean_bubble_coral_block.png | Bin 0 -> 365 bytes .../textures/mcl_ocean_bubble_coral_fan.png | Bin 0 -> 322 bytes .../textures/mcl_ocean_dead_brain_coral.png | Bin 0 -> 311 bytes .../mcl_ocean_dead_brain_coral_block.png | Bin 0 -> 356 bytes .../mcl_ocean_dead_brain_coral_fan.png | Bin 0 -> 301 bytes .../textures/mcl_ocean_dead_bubble_coral.png | Bin 0 -> 321 bytes .../mcl_ocean_dead_bubble_coral_block.png | Bin 0 -> 359 bytes .../mcl_ocean_dead_bubble_coral_fan.png | Bin 0 -> 316 bytes .../textures/mcl_ocean_dead_fire_coral.png | Bin 0 -> 348 bytes .../mcl_ocean_dead_fire_coral_block.png | Bin 0 -> 372 bytes .../mcl_ocean_dead_fire_coral_fan.png | Bin 0 -> 288 bytes .../textures/mcl_ocean_dead_horn_coral.png | Bin 0 -> 329 bytes .../mcl_ocean_dead_horn_coral_block.png | Bin 0 -> 352 bytes .../mcl_ocean_dead_horn_coral_fan.png | Bin 0 -> 309 bytes .../textures/mcl_ocean_dead_tube_coral.png | Bin 0 -> 338 bytes .../mcl_ocean_dead_tube_coral_block.png | Bin 0 -> 362 bytes .../mcl_ocean_dead_tube_coral_fan.png | Bin 0 -> 314 bytes .../textures/mcl_ocean_fire_coral.png | Bin 0 -> 338 bytes .../textures/mcl_ocean_fire_coral_block.png | Bin 0 -> 377 bytes .../textures/mcl_ocean_fire_coral_fan.png | Bin 0 -> 290 bytes .../textures/mcl_ocean_horn_coral.png | Bin 0 -> 330 bytes .../textures/mcl_ocean_horn_coral_block.png | Bin 0 -> 353 bytes .../textures/mcl_ocean_horn_coral_fan.png | Bin 0 -> 310 bytes .../textures/mcl_ocean_tube_coral.png | Bin 0 -> 338 bytes .../textures/mcl_ocean_tube_coral_block.png | Bin 0 -> 364 bytes .../textures/mcl_ocean_tube_coral_fan.png | Bin 0 -> 309 bytes 31 files changed, 168 insertions(+) create mode 100644 mods/ITEMS/mcl_ocean/textures/mcl_ocean_brain_coral.png create mode 100644 mods/ITEMS/mcl_ocean/textures/mcl_ocean_brain_coral_block.png create mode 100644 mods/ITEMS/mcl_ocean/textures/mcl_ocean_brain_coral_fan.png create mode 100644 mods/ITEMS/mcl_ocean/textures/mcl_ocean_bubble_coral.png create mode 100644 mods/ITEMS/mcl_ocean/textures/mcl_ocean_bubble_coral_block.png create mode 100644 mods/ITEMS/mcl_ocean/textures/mcl_ocean_bubble_coral_fan.png create mode 100644 mods/ITEMS/mcl_ocean/textures/mcl_ocean_dead_brain_coral.png create mode 100644 mods/ITEMS/mcl_ocean/textures/mcl_ocean_dead_brain_coral_block.png create mode 100644 mods/ITEMS/mcl_ocean/textures/mcl_ocean_dead_brain_coral_fan.png create mode 100644 mods/ITEMS/mcl_ocean/textures/mcl_ocean_dead_bubble_coral.png create mode 100644 mods/ITEMS/mcl_ocean/textures/mcl_ocean_dead_bubble_coral_block.png create mode 100644 mods/ITEMS/mcl_ocean/textures/mcl_ocean_dead_bubble_coral_fan.png create mode 100644 mods/ITEMS/mcl_ocean/textures/mcl_ocean_dead_fire_coral.png create mode 100644 mods/ITEMS/mcl_ocean/textures/mcl_ocean_dead_fire_coral_block.png create mode 100644 mods/ITEMS/mcl_ocean/textures/mcl_ocean_dead_fire_coral_fan.png create mode 100644 mods/ITEMS/mcl_ocean/textures/mcl_ocean_dead_horn_coral.png create mode 100644 mods/ITEMS/mcl_ocean/textures/mcl_ocean_dead_horn_coral_block.png create mode 100644 mods/ITEMS/mcl_ocean/textures/mcl_ocean_dead_horn_coral_fan.png create mode 100644 mods/ITEMS/mcl_ocean/textures/mcl_ocean_dead_tube_coral.png create mode 100644 mods/ITEMS/mcl_ocean/textures/mcl_ocean_dead_tube_coral_block.png create mode 100644 mods/ITEMS/mcl_ocean/textures/mcl_ocean_dead_tube_coral_fan.png create mode 100644 mods/ITEMS/mcl_ocean/textures/mcl_ocean_fire_coral.png create mode 100644 mods/ITEMS/mcl_ocean/textures/mcl_ocean_fire_coral_block.png create mode 100644 mods/ITEMS/mcl_ocean/textures/mcl_ocean_fire_coral_fan.png create mode 100644 mods/ITEMS/mcl_ocean/textures/mcl_ocean_horn_coral.png create mode 100644 mods/ITEMS/mcl_ocean/textures/mcl_ocean_horn_coral_block.png create mode 100644 mods/ITEMS/mcl_ocean/textures/mcl_ocean_horn_coral_fan.png create mode 100644 mods/ITEMS/mcl_ocean/textures/mcl_ocean_tube_coral.png create mode 100644 mods/ITEMS/mcl_ocean/textures/mcl_ocean_tube_coral_block.png create mode 100644 mods/ITEMS/mcl_ocean/textures/mcl_ocean_tube_coral_fan.png diff --git a/mods/ITEMS/mcl_ocean/init.lua b/mods/ITEMS/mcl_ocean/init.lua index 90626cfa..7b343877 100644 --- a/mods/ITEMS/mcl_ocean/init.lua +++ b/mods/ITEMS/mcl_ocean/init.lua @@ -115,3 +115,171 @@ minetest.register_craft({ } }) +local corals = { + { "tube", S("Tube Coral Block"), S("Dead Tube Coral Block"), S("Tube Coral"), S("Dead Tube Coral"), S("Tube Coral Fan"), S("Dead Tube Coral Fan") }, + { "brain", S("Brain Coral Block"), S("Dead Brain Coral Block"), S("Brain Coral"), S("Dead Brain Coral"), S("Brain Coral Fan"), S("Dead Brain Coral Fan") }, + { "bubble", S("Bubble Coral Block"), S("Dead Bubble Coral Block"), S("Bubble Coral"), S("Dead Bubble Coral"), S("Bubble Coral Fan"), S("Dead Bubble Coral Fan")}, + { "fire", S("Fire Coral Block"), S("Dead Fire Coral Block"), S("Fire Coral"), S("Dead Fire Coral"), S("Fire Coral Fan"), S("Dead Fire Coral Fan") }, + { "horn", S("Horn Coral Block"), S("Dead Horn Coral Block"), S("Horn Coral"), S("Dead Horn Coral"), S("Horn Coral Fan"), S("Dead Horn Coral Fan") }, +} + +local function coral_on_place(itemstack, placer, pointed_thing) + if pointed_thing.type ~= "node" or not placer then + return itemstack + end + + local player_name = placer:get_player_name() + local pos_under = pointed_thing.under + local pos_above = pointed_thing.above + local node_under = minetest.get_node(pos_under) + local def_under = minetest.registered_nodes[node_under.name] + + if def_under and def_under.on_rightclick and not placer:get_player_control().sneak then + return def_under.on_rightclick(pos_under, node_under.name, + placer, itemstack, pointed_thing) or itemstack + end + + local g_block = minetest.get_item_group(node_under.name, "coral_block") + local g_coral = minetest.get_item_group(itemstack:get_name(), "coral") + local g_species_block = minetest.get_item_group(node_under.name, "coral_species") + local g_species_plant = minetest.get_item_group(itemstack:get_name(), "coral_species") + + -- Placement rules: + -- Coral plant can only be placed on top of a matching coral block inside a water source. + -- Note: It's intentional only for normal water (not river water) + if g_block == 0 or (g_coral ~= g_block) or (g_species_block ~= g_species_plant) or + minetest.get_node(pos_above).name ~= "mcl_core:water_source" then + return itemstack + end + + if minetest.is_protected(pos_under, player_name) or + minetest.is_protected(pos_above, player_name) then + minetest.log("action", player_name + .. " tried to place " .. itemstack:get_name() + .. " at protected position " + .. minetest.pos_to_string(pos_under)) + minetest.record_protection_violation(pos_under, player_name) + return itemstack + end + + node_under.name = itemstack:get_name() + node_under.param2 = minetest.registered_items[itemstack:get_name()].place_param2 + if node_under.param2 < 8 and math.random(1,2) == 1 then + -- Random horizontal displacement + node_under.param2 = node_under.param2 + 8 + end + minetest.set_node(pos_under, node_under) + if not (minetest.settings:get_bool("creative_mode")) then + itemstack:take_item() + end + + return itemstack +end + +for c=1, #corals do + local id = corals[c][1] + -- Coral Block + minetest.register_node("mcl_ocean:"..id.."_coral_block", { + description = corals[c][2], + tiles = { "mcl_ocean_"..id.."_coral_block.png" }, + groups = { pickaxey = 1, building_block = 1, coral=1, coral_block=1, coral_species=c, }, + sounds = mcl_sounds.node_sound_dirt_defaults(), + drop = "mcl_ocean:dead_"..id.."_coral_block", + _mcl_hardness = 1.5, + _mcl_blast_resistance = 30, + }) + minetest.register_node("mcl_ocean:dead_"..id.."_coral_block", { + description = corals[c][3], + tiles = { "mcl_ocean_dead_"..id.."_coral_block.png" }, + groups = { pickaxey = 1, building_block = 1, coral=2, coral_block=2, coral_species=c, }, + sounds = mcl_sounds.node_sound_dirt_defaults(), + _mcl_hardness = 1.5, + _mcl_blast_resistance = 30, + }) + + -- Coral + minetest.register_node("mcl_ocean:"..id.."_coral", { + description = corals[c][4], + drawtype = "plantlike_rooted", + paramtype = "light", + paramtype2 = "meshoptions", + place_param2 = 1, + tiles = { "mcl_ocean_"..id.."_coral_block.png" }, + special_tiles = { { name = "mcl_ocean_"..id.."_coral.png" } }, + inventory_image = "mcl_ocean_"..id.."_coral.png", + groups = { dig_immediate = 3, deco_block = 1, coral=1, coral_plant=1, coral_species=c, }, + sounds = mcl_sounds.node_sound_leaves_defaults(), + drop = "mcl_ocean:dead_"..id.."_coral", + node_placement_prediction = "", + node_dig_prediction = "mcl_ocean:"..id.."_coral_block", + on_place = coral_on_place, + after_destruct = function(pos) + minetest.set_node(pos, {name="mcl_ocean:"..id.."_coral_block"}) + end, + _mcl_hardness = 0, + _mcl_blast_resistance = 0, + }) + minetest.register_node("mcl_ocean:dead_"..id.."_coral", { + description = corals[c][5], + drawtype = "plantlike_rooted", + paramtype = "light", + paramtype2 = "meshoptions", + place_param2 = 1, + tiles = { "mcl_ocean_dead_"..id.."_coral_block.png" }, + special_tiles = { { name = "mcl_ocean_dead_"..id.."_coral.png" } }, + inventory_image = "mcl_ocean_dead_"..id.."_coral.png", + groups = { dig_immediate = 3, deco_block = 1, coral=2, coral_plant=2, coral_species=c, }, + sounds = mcl_sounds.node_sound_leaves_defaults(), + node_placement_prediction = "", + node_dig_prediction = "mcl_ocean:dead_"..id.."_coral_block", + on_place = coral_on_place, + after_destruct = function(pos) + minetest.set_node(pos, {name="mcl_ocean:dead_"..id.."_coral_block"}) + end, + _mcl_hardness = 0, + _mcl_blast_resistance = 0, + }) + + -- Coral Fan + minetest.register_node("mcl_ocean:"..id.."_coral_fan", { + description = corals[c][6], + drawtype = "plantlike_rooted", + paramtype = "light", + paramtype2 = "meshoptions", + place_param2 = 4, + tiles = { "mcl_ocean_"..id.."_coral_block.png" }, + special_tiles = { { name = "mcl_ocean_"..id.."_coral_fan.png" } }, + inventory_image = "mcl_ocean_"..id.."_coral_fan.png", + groups = { dig_immediate = 3, deco_block = 1, coral=1, coral_fan=1, coral_species=c, }, + sounds = mcl_sounds.node_sound_leaves_defaults(), + drop = "mcl_ocean:dead_"..id.."_coral_fan", + node_placement_prediction = "", + node_dig_prediction = "mcl_ocean:"..id.."_coral_block", + on_place = coral_on_place, + after_destruct = function(pos) + minetest.set_node(pos, {name="mcl_ocean:"..id.."_coral_block"}) + end, + _mcl_hardness = 0, + _mcl_blast_resistance = 0, + }) + minetest.register_node("mcl_ocean:dead_"..id.."_coral_fan", { + description = corals[c][7], + drawtype = "plantlike_rooted", + paramtype = "light", + paramtype2 = "meshoptions", + place_param2 = 4, + tiles = { "mcl_ocean_dead_"..id.."_coral_block.png" }, + special_tiles = { { name = "mcl_ocean_dead_"..id.."_coral_fan.png" } }, + inventory_image = "mcl_ocean_dead_"..id.."_coral_fan.png", + groups = { dig_immediate = 3, deco_block = 1, coral=2, coral_fan=2, coral_species=c, }, + sounds = mcl_sounds.node_sound_leaves_defaults(), + node_placement_prediction = "", + node_dig_prediction = "mcl_ocean:dead_"..id.."_coral_block", + on_place = coral_on_place, + after_destruct = function(pos) + minetest.set_node(pos, {name="mcl_ocean:dead_"..id.."_coral_block"}) + end, + _mcl_hardness = 0, + _mcl_blast_resistance = 0, + }) +end diff --git a/mods/ITEMS/mcl_ocean/textures/mcl_ocean_brain_coral.png b/mods/ITEMS/mcl_ocean/textures/mcl_ocean_brain_coral.png new file mode 100644 index 0000000000000000000000000000000000000000..60a4c53da6c10140c1d86472b1f4e9498f3d10d4 GIT binary patch literal 317 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s77>k44ofy`glX=O&z`&C3 z=qc&osq70%XlPPZ!4!3;(4PHVQHs^04f;W?IzGq0yxHTghVqYY~^iUoMR% zDGt`tXAIM$`D|FMxB2gy{BL>3kM0l|MNxN;qk=(&Egn>V{itD?tC-Tny z{`1Sk+xy%aUYGrpy32FZtTj-0ujIMekMn2eF|f`*A@(56@7IOhj3TAwHP-J~%o+2( z3Cvvi+sw7$Oq1GQoBt}UPJ#!#^42jo%FV1SXLb;dU0tn|RK>h_$rB0LlGe`*3=9mO Lu6{1-oD!M<1_*8g literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_ocean/textures/mcl_ocean_brain_coral_block.png b/mods/ITEMS/mcl_ocean/textures/mcl_ocean_brain_coral_block.png new file mode 100644 index 0000000000000000000000000000000000000000..a9a508be8cae84bd93a3ad669a1f2fd7adfe7039 GIT binary patch literal 349 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4kiW$h6xih%orFLSkfJR9T^xl_H+M9WMyDr z;4JWnEM{QfI|#yzJ0@noWnf^CC~=J_3C>R|DNig)Whh9@%q!8$OD$0_(KFODO>vI^ znS9&R#WBRfKeT_N;2{G6maDRif`X0R2`6G$IJY>wWAcb)blt(Wd`+6^^Ymwb=KRZ# zU$pnU@vj)U`>(TSi}4)N_}zDfAt#Xa+wCl?hQ{YF?-luR%P|LEHjzyH$8cH0{KoMg zTqS?ld3!RaObGrh`=EVY=)=!uEE9Aed+rE%Qv6ooa>y^{1j+1GZ<13cL|ZvTEzsNC zre47Cb>~E$BrS(c%rY*r)~8!FcC#N4x6172P!M%2YnYSXv+r4!)cqe!3N=M4HPWZf wK4#-@^i2+t`1P0VdcvGYTeq@pnLim9?%$O4bLHHp3=9kmp00i_>zopr0Nqf80RR91 literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_ocean/textures/mcl_ocean_brain_coral_fan.png b/mods/ITEMS/mcl_ocean/textures/mcl_ocean_brain_coral_fan.png new file mode 100644 index 0000000000000000000000000000000000000000..0ffe520e01e4bbd51ea118b85253fd5169e2821d GIT binary patch literal 306 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s77>k44ofy`glX=O&z`&C3 z=qc&osq70%Xl%PZ!4!3;(748%3K9cwBDkv5JOrwLQ3K=rSvXwTf*)DpOkm zo0sbIJ;sM(7Q26(SaWTzPiors2}vxPZs>$kk44ofy`glX=O&z`&C3 z=qc&osq70%Xk&PZ!4!3;(4P4)Pu{5MT+G;g?fz5#Qp#Jmo;U)Fp;36Zl>< zsPPDA@>$C`iS{PnHH$pEjP-6n4od8<7R%U#;g4q~R>xz9bP{Bri}^Gg&X_T|cN zelUB<%?PX9b@ET=GqH&rD6}<8{WkArqg#MC-|EvmuBm%21_?36MRT5?BD?PV1cpeC z8x7k(=G;s?^(JyIXJhl}+pm2rl2!Q`n{P$R3gmsMFW~#)#4s&V@Q0;{>%-`PHua6$ XZhPPOpSy*Dfq}u()z4*}Q$iB}k44ofy`glX=O&z`&C3 z={Y?oWv7Y^v+CRO<*-k zU|#m3JMKxHV&v4fH|*^@zU`=S*k5<>?U#^OIo{W=J2nM+NXb^l$3Ohl;A1R)dQSSJ zDz2H@SDEH)Y2I_NVRN5(!co)2U$y@fH$VK?Hp}gkYL-;NlADiqZAo=z^h-09D0r#T zpmxOMyRss08k11oA%XZM*Ok%_8XjOdz_{#nvfDwwteY$jIw}TS5nTLJ990+(Jx(um zJ9dRhQSZz=i^UVBGNjil7b={H^st(&(cojMJK^(s!PxH`g*mq^eLvyU{Kb=7Gy)kI P7#KWV{an^LB{Ts5zH5Y6 literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_ocean/textures/mcl_ocean_bubble_coral_fan.png b/mods/ITEMS/mcl_ocean/textures/mcl_ocean_bubble_coral_fan.png new file mode 100644 index 0000000000000000000000000000000000000000..c9a49f45f08bb3f6dae353168dfdc3d28a9e7d78 GIT binary patch literal 322 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s77>k44ofy`glX=O&z`&C3 z=qc&osq70%Xl*PZ!4!3;(742YC-U@UUq1vGWTo;*MIt==ET-)Fp;34(ufk z!fwKue&q*kbmSJ_sJ^##b7#kXkE2{GBNRoomn5}@teMay8np5Gp1Dldb}dmlvpk&P z+3|;aue_GbIQsSn&xUutH80oy{(b2?599Q^dvZ*8nA587J=JFT6Yq0iLE8O#whFbw zd8Pu*3-t`Pu>Lr2Q(&dW%#+#{`AgAZGJjsbP0l+XkKk44ofy`glX=O&z`&C3 z=qc&osq70%Xk!PZ!4!3;(4PHu4=Z;Bomq+o!}KsbQlJhoOPM@y*qZP1qsSsuikSl{e_MEwEjEa zOqpb!|GoYq?Zh_Co>?!>Zn&LOf4hWPbP0 Hl+XkKR?l>H literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_ocean/textures/mcl_ocean_dead_brain_coral_block.png b/mods/ITEMS/mcl_ocean/textures/mcl_ocean_dead_brain_coral_block.png new file mode 100644 index 0000000000000000000000000000000000000000..2938880efcaa036e0ffd8eee96f4a09efdf1517e GIT binary patch literal 356 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4kiW$h6xih%orFL7>k44ofy`glX=O&z`&C3 z=qc&osq70%XlqPZ!4!3;)o5L%u@>0xW-hwKOJZEZ`A!($ox6l zS;gGGuXoSg+;aSBTio}TpKJ0zH#thA-k&Jdpu6h8zB*rag96*R(dRM`CMRUgQd2%7 zpCI*=?YBgHW8eP;jfTBKMOpiq|6JIrRdcV6VNQkK`6NdlR*$lV<`v25I|Wj|GyHH;e=EqiMCk&zP;r3g1DwXUk))aFfe$!`njxgN@xNA DhIfPY literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_ocean/textures/mcl_ocean_dead_brain_coral_fan.png b/mods/ITEMS/mcl_ocean/textures/mcl_ocean_dead_brain_coral_fan.png new file mode 100644 index 0000000000000000000000000000000000000000..b297894e8ca828365b1c952da1a022495b385543 GIT binary patch literal 301 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s77>k44ofy`glX=O&z`&C3 z=qc&osq70%XlRPZ!4!3;(748~K_IcwBy-^)m=bYMAI3di2Br7Wo6m%6IJz z5%<|~G^ygo&L8I%8f}jDFl-W0MkglvtUteACbUrSk3rRjzRh2KXMZu$F@NxL#pMtC za=yK5%h5Z3Z?fH;7F~&NYGL1YIM;JET#PReu>EQ@WB(+kA0>R7-3{WO9j=(q%-|G| kxk&J;{(^7cBfqki$=+7}y07FC0|Nttr>mdKI;Vst0Jqm~egFUf literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_ocean/textures/mcl_ocean_dead_bubble_coral.png b/mods/ITEMS/mcl_ocean/textures/mcl_ocean_dead_bubble_coral.png new file mode 100644 index 0000000000000000000000000000000000000000..0d69e128c3d512815ef877fc7a13b1b4dd1f31dd GIT binary patch literal 321 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s77>k44ofy`glX=O&z`&C3 z=qc&osq70%Xl5PZ!4!3;(4P4EYWj2(Wzikm6F|dJ$mNvS6W#sLjs=rQVH) z6;lFxWY*^&_iXF<(QWcZk+<68u-v5$?I7mUvYqU6j=j#FeSV2z#JqF;kso|7<>>VO ze(e5pc>^QshTAf;jH=JSaZp~N`ub{F+ajZT8Je0*anYRTr^v25KY<}qa06rhk44ofy`glX=O&z`&C3 z=qc&osq70%Xk%PZ!4!3;)5h9c zZ^D{WWp7TiUi|i!_1<~@9dT((&l#=#W#w^!+jFt<_S?2G@)I(jCC&Wo6XdU$yfms| za@hoPiGpiC+1Bh(^O5h@H5JKVd)14Nf#l7JN04dDL%Raj}E=* zyv!ZRS@6wVh`mXsb%}8&(}|GFOqTzoE|$t$PfVD3O@2p7xc}s3=E#GelF{r G5}E+jXMueH literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_ocean/textures/mcl_ocean_dead_bubble_coral_fan.png b/mods/ITEMS/mcl_ocean/textures/mcl_ocean_dead_bubble_coral_fan.png new file mode 100644 index 0000000000000000000000000000000000000000..0b11adc316058e9ff291cfb89e92cd7ccf136d3e GIT binary patch literal 316 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s77>k44ofy`glX=O&z`&C3 z=qc&osq70%XlvPZ!4!3;(74hJ1${cvvb`cv*wEUIbXRELhmWH800R{p?F2 zpTxkPr1zEAW>Qxer)lGGZqWh_cDjloVE0uAlMkz&mIl`_)W#h0yx9LdnSp_U N!PC{xWt~$(698dNaSs3h literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_ocean/textures/mcl_ocean_dead_fire_coral.png b/mods/ITEMS/mcl_ocean/textures/mcl_ocean_dead_fire_coral.png new file mode 100644 index 0000000000000000000000000000000000000000..c050ecfeadfd4aabb42d355aa792a98fcf3b7095 GIT binary patch literal 348 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s77>k44ofy`glX=O&z`&C3 z=qc&osq70%XluPZ!4!3;(4PH}V}a5ODsT+jGWXn&`o%88;#Xw3*`%9RCo% zP=9K3wdauo59Xb>-M#$vgrHyCt$XIL=6bRIcd6EWsf)6o8jk;*QpYBOZ#GZ#eUS0xoNUGd7KXN)4vHI-p6sm_W90MUsm_?g*!pGN zonNaKTlw)UO6PvR_Zh=A=LYQn=NZWj?;Pj5a^|spsbjw`&gh^hmG||R^q0^EmdKI;Vst0DHxR*#H0l literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_ocean/textures/mcl_ocean_dead_fire_coral_block.png b/mods/ITEMS/mcl_ocean/textures/mcl_ocean_dead_fire_coral_block.png new file mode 100644 index 0000000000000000000000000000000000000000..836ab2a7f35cf5fa141de8668befd553fc932a5a GIT binary patch literal 372 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4kiW$h6xih%orFL7>k44ofy`glX=O&z`&C3 z=qc&osq70%XloPZ!4!3xD4WhIveZ0?iL?pubdyBe!#epW!s(4FTecxuN^Woc&(p8IO7uSDQ%CZ zTuQw*Rm;VtFmMx#@s)Viw=19WJ={J)MB%#=la0o#$7?Q#6uqv~%{-%%BVeMvQ+$J3 zZ_6?x@8|pX2eD>s6-ZJ~SIH@v-gZf_^B%kT>@$(Aa?Y(BQ`&Z_tXY2~D>J?2=C+jw zZ#@WKWLP+3OYx;2T0drg3_d;awdSK3);w>Q>Ya~!8=0NIotIh`{AkC{&vkqEFk}>Y WacOIuk44ofy`glX=O&z`&C3 z=qc&osq70%XlZPZ!4!3;(5khFmQUJg$3JZ0nvHaWhwWTQyt0)ZassU(~fE ze4KI8`&0U?j*8Z)qHES9q_S#jM?@Yx#T9mFSIzgs-w${xJkUJhC06%Xp!k1hQG?j~ z6T269Ph{U>Qu;QM`&Z?=^#`-9-rp~O#}nYpyddfW_nxe|Z%iu<^`BVluS%P@AUVKy l$vY-}j`N#$`Nv92zwo~4$2~i?nt_3V!PC{xWt~$(699@QYT5t* literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_ocean/textures/mcl_ocean_dead_horn_coral.png b/mods/ITEMS/mcl_ocean/textures/mcl_ocean_dead_horn_coral.png new file mode 100644 index 0000000000000000000000000000000000000000..c0ede515d04243b8c2c77e6ae122d59cc77407eb GIT binary patch literal 329 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s77>k44ofy`glX=O&z`&C3 z=qc&osq70%XlDPZ!4!3;(4PtoaT(@URw#_%*mVySBPGyK=IMsyjTYQ=6Qj z^q$?(#W3>s(evNl2?*9-6uo{y^m>5G`scb23hjF{SEu_*F&f9{w;Rs=JYPD)PQE<2 zdCv1)KH*0gW_-VWR^#kh%h$P5n-k7lzRR}x>;l6mmouh052n6)Es}QqoSGS9a(3#k z9n*dU3#+eqS{}hQlWTt0RoNgD0eL>1ZH;FwKZlBKc3Wt0JRx_PpozeDwQD7=Khyd; b9`f23+^h1vX1a}mfq}u()z4*}Q$iB}Xk44ofy`glX=O&z`&C3 z=qc&osq70%XlaPZ!4!3;)zf)?7@E0xr*2%yYPL;q|{KMHM|U;fk44ofy`glX=O&z`&C3 z=qc&osq70%XlHPZ!4!3;(5khJ1${cvwD%#5K4$ySBPa?h@kCiffqif99Em zTYHkZx|53bbzXmd^31FVdQ&MBb@098k44ofy`glX=O&z`&C3 z=qc&osq70%Xl$PZ!4!3;(4P4EYWjh&Wfray(9*F-^xYZrvVyOR z1oF1-W}L(HIjLb$TzS))g?udx^+Ew>G8v3zWQ#dAhbvs!Y mdN^J&?AW~g7yqRXOlP!LPTn)~Jr4r|1B0ilpUXO@geCyhzkkC3 literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_ocean/textures/mcl_ocean_dead_tube_coral_block.png b/mods/ITEMS/mcl_ocean/textures/mcl_ocean_dead_tube_coral_block.png new file mode 100644 index 0000000000000000000000000000000000000000..eb0e0da615a64c6291797e19508af67f2a61a867 GIT binary patch literal 362 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4kiW$h6xih%orFL7>k44ofy`glX=O&z`&C3 z=qc&osq70%Xl?PZ!4!3;);&)_jK?cwD|$1Wf8;>r`U(y=C$xpqTO8sm=GY zk`#FpZRFE8C*QVzuyOB!xBIxKJpawDFg=yE!)~>MNm)-$qR;%o56O0O*E4ATW|(%C zMS=O`oH!wcMbQj3Kb}`UQTYAuTI0bSEA|JTO6o42Y^%9y<r$OqlaiL!wAnrPVLSe0}JJEzIub*Nk44ofy`glX=O&z`&C3 z=qc&osq70%Xl9j&5N72QuiZU=jsa*|5w)WGcYhP Nc)I$ztaD0e0sz!_c$okI literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_ocean/textures/mcl_ocean_fire_coral.png b/mods/ITEMS/mcl_ocean/textures/mcl_ocean_fire_coral.png new file mode 100644 index 0000000000000000000000000000000000000000..e7958d50cee54de4aec9f094456c802353c65d84 GIT binary patch literal 338 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7SkfJR9T^xl_H+M9WMyDr z;4JWnEM{QfI|Ravq8eTe3=9ksC9V-A!TD(=<%vb93~dWL$YDee&< zlP`F>IEGmGFP*rN_mG1Cizb(fN(YaU!eZ`QjcO~JdgcgeGz!U`kN&;p{eM@74g2l|q8Oyuu1UNGU_)adxqkmH?>UveJq zy)JX0ilcxvi=&w5g6)gV8VAod+dk`- m&e)o`Ha6V*KYxOl{6oGifBlyPtYBbZVDNPHb6Mw<&;$T`DTF}) literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_ocean/textures/mcl_ocean_fire_coral_block.png b/mods/ITEMS/mcl_ocean/textures/mcl_ocean_fire_coral_block.png new file mode 100644 index 0000000000000000000000000000000000000000..e562b024e2ffeafeeebcc22f57784d82a5c5c467 GIT binary patch literal 377 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4kiW$h6xih%orFL7>k44ofy`glX=O&z`&C3 z=qc&osq70%XlAPZ!4!3xD4W2Ys0X1)3k~c6oR_nWDhA^CIipC0wgKcr_b^ zG8*5%jOW$1)Zcb}UghrF=bu~G%#VLqxx23><{rcOBZ4=I-Y=hie|^8xRLiTcSc*g) zb~$BQ_-V$b#jbR65fNAQHgNtMdSPDFJApcGPsSpBl>^O-EYETIDsF#webTWrhu9o9 zPpW3jzT}aiwYlWq|L|1|YsH-2Jn3oaeRnCqO6lV72WgWnS6@h8A<%fqV0z2fsS&zw zdkk)ynMO$e@iI~4n_T8670+64T$g28Wa~O-^?}^Z4E^#wh6M>H{zV=x@scqwx68k7 a?>ohR@ji{&I~f=l7(8A5T-G@yGywp_b&!St literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_ocean/textures/mcl_ocean_fire_coral_fan.png b/mods/ITEMS/mcl_ocean/textures/mcl_ocean_fire_coral_fan.png new file mode 100644 index 0000000000000000000000000000000000000000..412e97f8ed228c143a0ca9921828c21b0bed9fd1 GIT binary patch literal 290 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s77>k44ofy`glX=O&z`&C3 z=qc&osq70%Xl(PZ!4!3;(5k2RU0DcwBY8FI?u5TXW>xnxyOvBHkT!4?VB_ zJaRsSXE%Crs5@b6McNzxY!I z-Fp+u9qnD^E?l~_JzV$2^PT(I*1z0Se}AX8121nw)k44ofy`glX=O&z`&C3 z=qc&osq70%Xl@PZ!4!3;(4PPV*je;9ptAnA;)BY&J(;W1eWe(UZO;8RocnpcbjH59 zWx>sJp6~JrKf*9W|M**tvu7<|=Spo(ICJ?f+vc+i45M7mnC3i~`s%ev+Vyj4W{k<% zslRqi`w=XxzT#bE`E<55p0)fODz@2ep~3Nl++~6$0^ilHmAL*) e>+5*PyLac0Z(G*ys%BtdVDNPHb6Mw<&;$V7>VDn; literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_ocean/textures/mcl_ocean_horn_coral_block.png b/mods/ITEMS/mcl_ocean/textures/mcl_ocean_horn_coral_block.png new file mode 100644 index 0000000000000000000000000000000000000000..c56a1344ed45157c499d822d4205d8dbc000b78b GIT binary patch literal 353 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4kiW$h6xih%orFL7>k44ofy`glX=O&z`&C3 z=+y#t&M^vuJUR>=UWiWXg!yc=3jI%=@9RJF*?D=J;OzsEIwa;dD zDoif?>vf<+h%H3ntC!cU|C|qP3xD$&K8oD%{_ySz(+%Ig;Bv9Emq2$9Xg@$O);y1lV4VSXImIRz|+;wWt~$(69BP- BgpU9K literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_ocean/textures/mcl_ocean_horn_coral_fan.png b/mods/ITEMS/mcl_ocean/textures/mcl_ocean_horn_coral_fan.png new file mode 100644 index 0000000000000000000000000000000000000000..63e7d12ea75d2f74b215b9742784a84e59be6500 GIT binary patch literal 310 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s77>k44ofy`glX=O&z`&C3 z=qc&osq70%Xl{PZ!4!3;(5k8+i{o@VIW4;Pv1+81d#Ho2F#LJkABndQv{| z)tYFtg7<5=Kf7KOqPoJIN z_W9!#kHZRAv=<3GCd`m|!u!`fZ`rN=N6Tq}!;{~vRtA?!-P*A;#J zz5Gh+mNwpTESG!0!uw_FRhii@&$ Bc}@TT literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_ocean/textures/mcl_ocean_tube_coral.png b/mods/ITEMS/mcl_ocean/textures/mcl_ocean_tube_coral.png new file mode 100644 index 0000000000000000000000000000000000000000..63cf864c72438495083f134f0a45f3e55d1ff0fc GIT binary patch literal 338 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7SkfJR9T^xl_H+M9WMyDr z;4JWnEM{QfI|Ravq8eTe3=9ksC9V-A!TD(=<%vb93~dWL$YDee&< zlP`F>IEGmGFP(6ZlgUuTWxI-_fTO^-Ja)4LaXH;XNjgWI_HY>Lzl+}N85U{7^Yedt z+9&l`j)(dt?cNt;^c;(K*xEK}y!Q%Wc3J&ZHL-lhUz3$=e}B$AGW)M-=kLe1eaq*_ zTx|$9^z2Ald?wdO%u-O%plM>1nlN)`SLZ>sYw^4aPM<=vs^85BJS{HId`)gs_5n?S z^HLsJsmD)9d~!&Apw4)5j?{(V<@Q~*sR{S)Ff55ET)k0l+e)66^~~dWL$YDee&< zlV5qdIEGmG$4)xPdB{P;WxI-_fTO^k+l{<8T>Hc(Cg~h;+VkYW@86S7D)qd6bLP*< zG*4^${SUtVXgK{>*K4L2gJo=b!;2{9srTMUWG2q8+}11q`|wBB376P6%<*Bkbn1oW zUKIzIXofvMpI1InsI4zuaP?%B6?=l}MB!sqe@YuWntJ!9L**7I!P4JjAa zn83a3LaoiCr$#%mItYAk3`~-kmu{8J9ri!!x1ciPHlc2>i@VO*XRb{u4s4cx$-uzC N;OXk;vd$@?2>_Wik1_xN literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_ocean/textures/mcl_ocean_tube_coral_fan.png b/mods/ITEMS/mcl_ocean/textures/mcl_ocean_tube_coral_fan.png new file mode 100644 index 0000000000000000000000000000000000000000..7d055a7bd6b8f3a9f8673d6eb147447f12f99b4c GIT binary patch literal 309 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7SkfJR9T^xl_H+M9WMyDr z;4JWnEM{QfI|Ravq8eTe3=9ksC9V-A!TD(=<%vb93~dWL$YDee&< zlQ(<1IEGmGFYQ0b>Ey`cqU$N(BG9t;_QCuEdNxrlMbP0l+XkK`cHK| literal 0 HcmV?d00001 From c7aaf49e2281ea750fed5e7e6eb1058b3e4445d8 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 17 Dec 2019 16:50:32 +0100 Subject: [PATCH 427/737] Tweak coral sounds and placement --- mods/ITEMS/mcl_ocean/init.lua | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/mods/ITEMS/mcl_ocean/init.lua b/mods/ITEMS/mcl_ocean/init.lua index 7b343877..5d2003e3 100644 --- a/mods/ITEMS/mcl_ocean/init.lua +++ b/mods/ITEMS/mcl_ocean/init.lua @@ -145,10 +145,12 @@ local function coral_on_place(itemstack, placer, pointed_thing) local g_species_plant = minetest.get_item_group(itemstack:get_name(), "coral_species") -- Placement rules: - -- Coral plant can only be placed on top of a matching coral block inside a water source. - -- Note: It's intentional only for normal water (not river water) + -- Coral plant can only be placed on top of a matching coral block. + -- If alive, it must also be inside a water source. + -- Note: It's intentional that it works only for normal water (not river water). Corals are + -- for the ocean, after all. if g_block == 0 or (g_coral ~= g_block) or (g_species_block ~= g_species_plant) or - minetest.get_node(pos_above).name ~= "mcl_core:water_source" then + (g_coral == 1 and minetest.get_node(pos_above).name ~= "mcl_core:water_source") then return itemstack end @@ -176,6 +178,9 @@ local function coral_on_place(itemstack, placer, pointed_thing) return itemstack end +-- Sound for non-block corals +local sounds_coral_plant = mcl_sounds.node_sound_leaves_defaults({footstep = mcl_sounds.node_sound_dirt_defaults().footstep}) + for c=1, #corals do local id = corals[c][1] -- Coral Block @@ -208,7 +213,7 @@ for c=1, #corals do special_tiles = { { name = "mcl_ocean_"..id.."_coral.png" } }, inventory_image = "mcl_ocean_"..id.."_coral.png", groups = { dig_immediate = 3, deco_block = 1, coral=1, coral_plant=1, coral_species=c, }, - sounds = mcl_sounds.node_sound_leaves_defaults(), + sounds = sounds_coral_plant, drop = "mcl_ocean:dead_"..id.."_coral", node_placement_prediction = "", node_dig_prediction = "mcl_ocean:"..id.."_coral_block", @@ -229,7 +234,7 @@ for c=1, #corals do special_tiles = { { name = "mcl_ocean_dead_"..id.."_coral.png" } }, inventory_image = "mcl_ocean_dead_"..id.."_coral.png", groups = { dig_immediate = 3, deco_block = 1, coral=2, coral_plant=2, coral_species=c, }, - sounds = mcl_sounds.node_sound_leaves_defaults(), + sounds = sounds_coral_plant, node_placement_prediction = "", node_dig_prediction = "mcl_ocean:dead_"..id.."_coral_block", on_place = coral_on_place, @@ -251,7 +256,7 @@ for c=1, #corals do special_tiles = { { name = "mcl_ocean_"..id.."_coral_fan.png" } }, inventory_image = "mcl_ocean_"..id.."_coral_fan.png", groups = { dig_immediate = 3, deco_block = 1, coral=1, coral_fan=1, coral_species=c, }, - sounds = mcl_sounds.node_sound_leaves_defaults(), + sounds = sounds_coral_plant, drop = "mcl_ocean:dead_"..id.."_coral_fan", node_placement_prediction = "", node_dig_prediction = "mcl_ocean:"..id.."_coral_block", @@ -272,7 +277,7 @@ for c=1, #corals do special_tiles = { { name = "mcl_ocean_dead_"..id.."_coral_fan.png" } }, inventory_image = "mcl_ocean_dead_"..id.."_coral_fan.png", groups = { dig_immediate = 3, deco_block = 1, coral=2, coral_fan=2, coral_species=c, }, - sounds = mcl_sounds.node_sound_leaves_defaults(), + sounds = sounds_coral_plant, node_placement_prediction = "", node_dig_prediction = "mcl_ocean:dead_"..id.."_coral_block", on_place = coral_on_place, From b92aec71afb4e889c714cb8081f552dc10e0a971 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 17 Dec 2019 16:53:18 +0100 Subject: [PATCH 428/737] Document coral groups --- GROUPS.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/GROUPS.md b/GROUPS.md index f2cc0ddd..2b11da4a 100644 --- a/GROUPS.md +++ b/GROUPS.md @@ -61,6 +61,11 @@ Please read to learn how digging times * `hopper=X`: Hopper (1 = downwards, 2 = sideways) * `portal=1`: Portal (node that teleports players and things by standing inside) * `end_portal_frame=X`: End portal frame (1 = no eye, 2 = with eye) +* `coral=X`: Coral (any type) (1 = alive, 2 = dead) +* `coral_plant=X`: Coral in the "plant" shape (1 = alive, 2 = dead) +* `coral_fan=X`: Coral fan (1 = alive, 2 = dead) +* `coral_block=X`: Coral block (1 = alive, 2 = dead) +* `coral_species=X`: Specifies the species of a coral; equal X means equal species #### Footnotes From e8614d7b276ff3feb51226dd055349ab4e212013 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 17 Dec 2019 16:58:40 +0100 Subject: [PATCH 429/737] Fix a purely theoretical coral crash --- mods/ITEMS/mcl_ocean/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_ocean/init.lua b/mods/ITEMS/mcl_ocean/init.lua index 5d2003e3..dced7662 100644 --- a/mods/ITEMS/mcl_ocean/init.lua +++ b/mods/ITEMS/mcl_ocean/init.lua @@ -165,7 +165,7 @@ local function coral_on_place(itemstack, placer, pointed_thing) end node_under.name = itemstack:get_name() - node_under.param2 = minetest.registered_items[itemstack:get_name()].place_param2 + node_under.param2 = minetest.registered_items[itemstack:get_name()].place_param2 or 1 if node_under.param2 < 8 and math.random(1,2) == 1 then -- Random horizontal displacement node_under.param2 = node_under.param2 + 8 From 1e3cfb604048e38f0babb0ef0e6695a290b38646 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 17 Dec 2019 17:12:21 +0100 Subject: [PATCH 430/737] Add coral selection boxes --- mods/ITEMS/mcl_ocean/init.lua | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/mods/ITEMS/mcl_ocean/init.lua b/mods/ITEMS/mcl_ocean/init.lua index dced7662..5ffc99a6 100644 --- a/mods/ITEMS/mcl_ocean/init.lua +++ b/mods/ITEMS/mcl_ocean/init.lua @@ -212,6 +212,13 @@ for c=1, #corals do tiles = { "mcl_ocean_"..id.."_coral_block.png" }, special_tiles = { { name = "mcl_ocean_"..id.."_coral.png" } }, inventory_image = "mcl_ocean_"..id.."_coral.png", + selection_box = { + type = "fixed", + fixed = { + { -0.5, -0.5, -0.5, 0.5, 0.5, 0.5 }, + { -0.5, 0.5, -0.5, 0.5, 1.0, 0.5 }, + } + }, groups = { dig_immediate = 3, deco_block = 1, coral=1, coral_plant=1, coral_species=c, }, sounds = sounds_coral_plant, drop = "mcl_ocean:dead_"..id.."_coral", @@ -234,6 +241,13 @@ for c=1, #corals do special_tiles = { { name = "mcl_ocean_dead_"..id.."_coral.png" } }, inventory_image = "mcl_ocean_dead_"..id.."_coral.png", groups = { dig_immediate = 3, deco_block = 1, coral=2, coral_plant=2, coral_species=c, }, + selection_box = { + type = "fixed", + fixed = { + { -0.5, -0.5, -0.5, 0.5, 0.5, 0.5 }, + { -0.5, 0.5, -0.5, 0.5, 1.0, 0.5 }, + } + }, sounds = sounds_coral_plant, node_placement_prediction = "", node_dig_prediction = "mcl_ocean:dead_"..id.."_coral_block", @@ -256,6 +270,13 @@ for c=1, #corals do special_tiles = { { name = "mcl_ocean_"..id.."_coral_fan.png" } }, inventory_image = "mcl_ocean_"..id.."_coral_fan.png", groups = { dig_immediate = 3, deco_block = 1, coral=1, coral_fan=1, coral_species=c, }, + selection_box = { + type = "fixed", + fixed = { + { -0.5, -0.5, -0.5, 0.5, 0.5, 0.5 }, + { -0.5, 0.5, -0.5, 0.5, 1.0, 0.5 }, + } + }, sounds = sounds_coral_plant, drop = "mcl_ocean:dead_"..id.."_coral_fan", node_placement_prediction = "", @@ -277,6 +298,13 @@ for c=1, #corals do special_tiles = { { name = "mcl_ocean_dead_"..id.."_coral_fan.png" } }, inventory_image = "mcl_ocean_dead_"..id.."_coral_fan.png", groups = { dig_immediate = 3, deco_block = 1, coral=2, coral_fan=2, coral_species=c, }, + selection_box = { + type = "fixed", + fixed = { + { -0.5, -0.5, -0.5, 0.5, 0.5, 0.5 }, + { -0.5, 0.5, -0.5, 0.5, 1.0, 0.5 }, + } + }, sounds = sounds_coral_plant, node_placement_prediction = "", node_dig_prediction = "mcl_ocean:dead_"..id.."_coral_block", From 8b3ecb9321facd7919635ad0af7f5f00463b514f Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 17 Dec 2019 17:18:10 +0100 Subject: [PATCH 431/737] Refactor mcl_ocean --- mods/ITEMS/mcl_ocean/corals.lua | 203 ++++++++++++++++++ mods/ITEMS/mcl_ocean/init.lua | 321 +--------------------------- mods/ITEMS/mcl_ocean/mod.conf | 1 + mods/ITEMS/mcl_ocean/prismarine.lua | 117 ++++++++++ 4 files changed, 325 insertions(+), 317 deletions(-) create mode 100644 mods/ITEMS/mcl_ocean/corals.lua create mode 100644 mods/ITEMS/mcl_ocean/prismarine.lua diff --git a/mods/ITEMS/mcl_ocean/corals.lua b/mods/ITEMS/mcl_ocean/corals.lua new file mode 100644 index 00000000..7cc4d79b --- /dev/null +++ b/mods/ITEMS/mcl_ocean/corals.lua @@ -0,0 +1,203 @@ +local S = minetest.get_translator("mcl_ocean") + +local corals = { + { "tube", S("Tube Coral Block"), S("Dead Tube Coral Block"), S("Tube Coral"), S("Dead Tube Coral"), S("Tube Coral Fan"), S("Dead Tube Coral Fan") }, + { "brain", S("Brain Coral Block"), S("Dead Brain Coral Block"), S("Brain Coral"), S("Dead Brain Coral"), S("Brain Coral Fan"), S("Dead Brain Coral Fan") }, + { "bubble", S("Bubble Coral Block"), S("Dead Bubble Coral Block"), S("Bubble Coral"), S("Dead Bubble Coral"), S("Bubble Coral Fan"), S("Dead Bubble Coral Fan")}, + { "fire", S("Fire Coral Block"), S("Dead Fire Coral Block"), S("Fire Coral"), S("Dead Fire Coral"), S("Fire Coral Fan"), S("Dead Fire Coral Fan") }, + { "horn", S("Horn Coral Block"), S("Dead Horn Coral Block"), S("Horn Coral"), S("Dead Horn Coral"), S("Horn Coral Fan"), S("Dead Horn Coral Fan") }, +} + +local function coral_on_place(itemstack, placer, pointed_thing) + if pointed_thing.type ~= "node" or not placer then + return itemstack + end + + local player_name = placer:get_player_name() + local pos_under = pointed_thing.under + local pos_above = pointed_thing.above + local node_under = minetest.get_node(pos_under) + local def_under = minetest.registered_nodes[node_under.name] + + if def_under and def_under.on_rightclick and not placer:get_player_control().sneak then + return def_under.on_rightclick(pos_under, node_under.name, + placer, itemstack, pointed_thing) or itemstack + end + + local g_block = minetest.get_item_group(node_under.name, "coral_block") + local g_coral = minetest.get_item_group(itemstack:get_name(), "coral") + local g_species_block = minetest.get_item_group(node_under.name, "coral_species") + local g_species_plant = minetest.get_item_group(itemstack:get_name(), "coral_species") + + -- Placement rules: + -- Coral plant can only be placed on top of a matching coral block. + -- If alive, it must also be inside a water source. + -- Note: It's intentional that it works only for normal water (not river water). Corals are + -- for the ocean, after all. + if g_block == 0 or (g_coral ~= g_block) or (g_species_block ~= g_species_plant) or + (g_coral == 1 and minetest.get_node(pos_above).name ~= "mcl_core:water_source") then + return itemstack + end + + if minetest.is_protected(pos_under, player_name) or + minetest.is_protected(pos_above, player_name) then + minetest.log("action", player_name + .. " tried to place " .. itemstack:get_name() + .. " at protected position " + .. minetest.pos_to_string(pos_under)) + minetest.record_protection_violation(pos_under, player_name) + return itemstack + end + + node_under.name = itemstack:get_name() + node_under.param2 = minetest.registered_items[itemstack:get_name()].place_param2 or 1 + if node_under.param2 < 8 and math.random(1,2) == 1 then + -- Random horizontal displacement + node_under.param2 = node_under.param2 + 8 + end + minetest.set_node(pos_under, node_under) + if not (minetest.settings:get_bool("creative_mode")) then + itemstack:take_item() + end + + return itemstack +end + +-- Sound for non-block corals +local sounds_coral_plant = mcl_sounds.node_sound_leaves_defaults({footstep = mcl_sounds.node_sound_dirt_defaults().footstep}) + +for c=1, #corals do + local id = corals[c][1] + -- Coral Block + minetest.register_node("mcl_ocean:"..id.."_coral_block", { + description = corals[c][2], + tiles = { "mcl_ocean_"..id.."_coral_block.png" }, + groups = { pickaxey = 1, building_block = 1, coral=1, coral_block=1, coral_species=c, }, + sounds = mcl_sounds.node_sound_dirt_defaults(), + drop = "mcl_ocean:dead_"..id.."_coral_block", + _mcl_hardness = 1.5, + _mcl_blast_resistance = 30, + }) + minetest.register_node("mcl_ocean:dead_"..id.."_coral_block", { + description = corals[c][3], + tiles = { "mcl_ocean_dead_"..id.."_coral_block.png" }, + groups = { pickaxey = 1, building_block = 1, coral=2, coral_block=2, coral_species=c, }, + sounds = mcl_sounds.node_sound_dirt_defaults(), + _mcl_hardness = 1.5, + _mcl_blast_resistance = 30, + }) + + -- Coral + minetest.register_node("mcl_ocean:"..id.."_coral", { + description = corals[c][4], + drawtype = "plantlike_rooted", + paramtype = "light", + paramtype2 = "meshoptions", + place_param2 = 1, + tiles = { "mcl_ocean_"..id.."_coral_block.png" }, + special_tiles = { { name = "mcl_ocean_"..id.."_coral.png" } }, + inventory_image = "mcl_ocean_"..id.."_coral.png", + selection_box = { + type = "fixed", + fixed = { + { -0.5, -0.5, -0.5, 0.5, 0.5, 0.5 }, + { -0.5, 0.5, -0.5, 0.5, 1.0, 0.5 }, + } + }, + groups = { dig_immediate = 3, deco_block = 1, coral=1, coral_plant=1, coral_species=c, }, + sounds = sounds_coral_plant, + drop = "mcl_ocean:dead_"..id.."_coral", + node_placement_prediction = "", + node_dig_prediction = "mcl_ocean:"..id.."_coral_block", + on_place = coral_on_place, + after_destruct = function(pos) + minetest.set_node(pos, {name="mcl_ocean:"..id.."_coral_block"}) + end, + _mcl_hardness = 0, + _mcl_blast_resistance = 0, + }) + minetest.register_node("mcl_ocean:dead_"..id.."_coral", { + description = corals[c][5], + drawtype = "plantlike_rooted", + paramtype = "light", + paramtype2 = "meshoptions", + place_param2 = 1, + tiles = { "mcl_ocean_dead_"..id.."_coral_block.png" }, + special_tiles = { { name = "mcl_ocean_dead_"..id.."_coral.png" } }, + inventory_image = "mcl_ocean_dead_"..id.."_coral.png", + groups = { dig_immediate = 3, deco_block = 1, coral=2, coral_plant=2, coral_species=c, }, + selection_box = { + type = "fixed", + fixed = { + { -0.5, -0.5, -0.5, 0.5, 0.5, 0.5 }, + { -0.5, 0.5, -0.5, 0.5, 1.0, 0.5 }, + } + }, + sounds = sounds_coral_plant, + node_placement_prediction = "", + node_dig_prediction = "mcl_ocean:dead_"..id.."_coral_block", + on_place = coral_on_place, + after_destruct = function(pos) + minetest.set_node(pos, {name="mcl_ocean:dead_"..id.."_coral_block"}) + end, + _mcl_hardness = 0, + _mcl_blast_resistance = 0, + }) + + -- Coral Fan + minetest.register_node("mcl_ocean:"..id.."_coral_fan", { + description = corals[c][6], + drawtype = "plantlike_rooted", + paramtype = "light", + paramtype2 = "meshoptions", + place_param2 = 4, + tiles = { "mcl_ocean_"..id.."_coral_block.png" }, + special_tiles = { { name = "mcl_ocean_"..id.."_coral_fan.png" } }, + inventory_image = "mcl_ocean_"..id.."_coral_fan.png", + groups = { dig_immediate = 3, deco_block = 1, coral=1, coral_fan=1, coral_species=c, }, + selection_box = { + type = "fixed", + fixed = { + { -0.5, -0.5, -0.5, 0.5, 0.5, 0.5 }, + { -0.5, 0.5, -0.5, 0.5, 1.0, 0.5 }, + } + }, + sounds = sounds_coral_plant, + drop = "mcl_ocean:dead_"..id.."_coral_fan", + node_placement_prediction = "", + node_dig_prediction = "mcl_ocean:"..id.."_coral_block", + on_place = coral_on_place, + after_destruct = function(pos) + minetest.set_node(pos, {name="mcl_ocean:"..id.."_coral_block"}) + end, + _mcl_hardness = 0, + _mcl_blast_resistance = 0, + }) + minetest.register_node("mcl_ocean:dead_"..id.."_coral_fan", { + description = corals[c][7], + drawtype = "plantlike_rooted", + paramtype = "light", + paramtype2 = "meshoptions", + place_param2 = 4, + tiles = { "mcl_ocean_dead_"..id.."_coral_block.png" }, + special_tiles = { { name = "mcl_ocean_dead_"..id.."_coral_fan.png" } }, + inventory_image = "mcl_ocean_dead_"..id.."_coral_fan.png", + groups = { dig_immediate = 3, deco_block = 1, coral=2, coral_fan=2, coral_species=c, }, + selection_box = { + type = "fixed", + fixed = { + { -0.5, -0.5, -0.5, 0.5, 0.5, 0.5 }, + { -0.5, 0.5, -0.5, 0.5, 1.0, 0.5 }, + } + }, + sounds = sounds_coral_plant, + node_placement_prediction = "", + node_dig_prediction = "mcl_ocean:dead_"..id.."_coral_block", + on_place = coral_on_place, + after_destruct = function(pos) + minetest.set_node(pos, {name="mcl_ocean:dead_"..id.."_coral_block"}) + end, + _mcl_hardness = 0, + _mcl_blast_resistance = 0, + }) +end diff --git a/mods/ITEMS/mcl_ocean/init.lua b/mods/ITEMS/mcl_ocean/init.lua index 5ffc99a6..ee19cab3 100644 --- a/mods/ITEMS/mcl_ocean/init.lua +++ b/mods/ITEMS/mcl_ocean/init.lua @@ -1,318 +1,5 @@ --- Nodes +-- Prismarine (includes sea lantern) +dofile(minetest.get_modpath(minetest.get_current_modname()).."/prismarine.lua") -local S = minetest.get_translator("mcl_ocean") - -minetest.register_node("mcl_ocean:sea_lantern", { - description = S("Sea Lantern"), - _doc_items_longdesc = S("Sea lanterns are decorative light sources which look great underwater but can be placed anywhere."), - paramtype2 = "facedir", - is_ground_content = false, - stack_max = 64, - light_source = minetest.LIGHT_MAX, - drop = { - max_items = 1, - items = { - { items = {'mcl_ocean:prismarine_crystals 3'}, rarity = 2 }, - { items = {'mcl_ocean:prismarine_crystals 2'}} - } - }, - tiles = {{name="mcl_ocean_sea_lantern.png", animation={type="vertical_frames", aspect_w=32, aspect_h=32, length=1.25}}}, - groups = {handy=1, building_block=1, material_glass=1}, - sounds = mcl_sounds.node_sound_glass_defaults(), - _mcl_blast_resistance = 1.5, - _mcl_hardness = 0.3, -}) - -minetest.register_node("mcl_ocean:prismarine", { - description = S("Prismarine"), - _doc_items_longdesc = S("Prismarine is used as a building block. It slowly changes its color."), - stack_max = 64, - is_ground_content = false, - -- Texture should have 22 frames for smooth transitions. - tiles = {{name="mcl_ocean_prismarine_anim.png", animation={type="vertical_frames", aspect_w=32, aspect_h=32, length=45.0}}}, - groups = {pickaxey=1, building_block=1, material_stone=1}, - sounds = mcl_sounds.node_sound_stone_defaults(), - _mcl_blast_resistance = 30, - _mcl_hardness = 1.5, -}) - -minetest.register_node("mcl_ocean:prismarine_brick", { - description = S("Prismarine Bricks"), - _doc_items_longdesc = doc.sub.items.temp.build, - stack_max = 64, - is_ground_content = false, - tiles = {"mcl_ocean_prismarine_bricks.png"}, - groups = {pickaxey=1, building_block=1, material_stone=1}, - sounds = mcl_sounds.node_sound_stone_defaults(), - _mcl_blast_resistance = 30, - _mcl_hardness = 1.5, -}) - -minetest.register_node("mcl_ocean:prismarine_dark", { - description = S("Dark Prismarine"), - _doc_items_longdesc = doc.sub.items.temp.build, - stack_max = 64, - is_ground_content = false, - tiles = {"mcl_ocean_prismarine_dark.png"}, - groups = {pickaxey=1, building_block=1, material_stone=1}, - sounds = mcl_sounds.node_sound_stone_defaults(), - _mcl_blast_resistance = 30, - _mcl_hardness = 1.5, -}) - --- Craftitems - -minetest.register_craftitem("mcl_ocean:prismarine_crystals", { - description = S("Prismarine Crystals"), - _doc_items_longdesc = doc.sub.items.temp.craftitem, - inventory_image = "mcl_ocean_prismarine_crystals.png", - stack_max = 64, - groups = { craftitem = 1 }, -}) - -minetest.register_craftitem("mcl_ocean:prismarine_shard", { - description = S("Prismarine Shard"), - _doc_items_longdesc = doc.sub.items.temp.craftitem, - inventory_image = "mcl_ocean_prismarine_shard.png", - stack_max = 64, - groups = { craftitem = 1 }, -}) - --- Crafting - -minetest.register_craft({ - output = 'mcl_ocean:sea_lantern', - recipe = { - {'mcl_ocean:prismarine_shard', 'mcl_ocean:prismarine_crystals', 'mcl_ocean:prismarine_shard'}, - {'mcl_ocean:prismarine_crystals', 'mcl_ocean:prismarine_crystals', 'mcl_ocean:prismarine_crystals'}, - {'mcl_ocean:prismarine_shard', 'mcl_ocean:prismarine_crystals', 'mcl_ocean:prismarine_shard'}, - } -}) - -minetest.register_craft({ - output = 'mcl_ocean:prismarine', - recipe = { - {'mcl_ocean:prismarine_shard', 'mcl_ocean:prismarine_shard'}, - {'mcl_ocean:prismarine_shard', 'mcl_ocean:prismarine_shard'}, - } -}) - -minetest.register_craft({ - output = 'mcl_ocean:prismarine_brick', - recipe = { - {'mcl_ocean:prismarine_shard', 'mcl_ocean:prismarine_shard', 'mcl_ocean:prismarine_shard'}, - {'mcl_ocean:prismarine_shard', 'mcl_ocean:prismarine_shard', 'mcl_ocean:prismarine_shard'}, - {'mcl_ocean:prismarine_shard', 'mcl_ocean:prismarine_shard', 'mcl_ocean:prismarine_shard'}, - } -}) - -minetest.register_craft({ - output = 'mcl_ocean:prismarine_dark', - recipe = { - {'mcl_ocean:prismarine_shard', 'mcl_ocean:prismarine_shard', 'mcl_ocean:prismarine_shard'}, - {'mcl_ocean:prismarine_shard', 'mcl_dye:black', 'mcl_ocean:prismarine_shard'}, - {'mcl_ocean:prismarine_shard', 'mcl_ocean:prismarine_shard', 'mcl_ocean:prismarine_shard'}, - } -}) - -local corals = { - { "tube", S("Tube Coral Block"), S("Dead Tube Coral Block"), S("Tube Coral"), S("Dead Tube Coral"), S("Tube Coral Fan"), S("Dead Tube Coral Fan") }, - { "brain", S("Brain Coral Block"), S("Dead Brain Coral Block"), S("Brain Coral"), S("Dead Brain Coral"), S("Brain Coral Fan"), S("Dead Brain Coral Fan") }, - { "bubble", S("Bubble Coral Block"), S("Dead Bubble Coral Block"), S("Bubble Coral"), S("Dead Bubble Coral"), S("Bubble Coral Fan"), S("Dead Bubble Coral Fan")}, - { "fire", S("Fire Coral Block"), S("Dead Fire Coral Block"), S("Fire Coral"), S("Dead Fire Coral"), S("Fire Coral Fan"), S("Dead Fire Coral Fan") }, - { "horn", S("Horn Coral Block"), S("Dead Horn Coral Block"), S("Horn Coral"), S("Dead Horn Coral"), S("Horn Coral Fan"), S("Dead Horn Coral Fan") }, -} - -local function coral_on_place(itemstack, placer, pointed_thing) - if pointed_thing.type ~= "node" or not placer then - return itemstack - end - - local player_name = placer:get_player_name() - local pos_under = pointed_thing.under - local pos_above = pointed_thing.above - local node_under = minetest.get_node(pos_under) - local def_under = minetest.registered_nodes[node_under.name] - - if def_under and def_under.on_rightclick and not placer:get_player_control().sneak then - return def_under.on_rightclick(pos_under, node_under.name, - placer, itemstack, pointed_thing) or itemstack - end - - local g_block = minetest.get_item_group(node_under.name, "coral_block") - local g_coral = minetest.get_item_group(itemstack:get_name(), "coral") - local g_species_block = minetest.get_item_group(node_under.name, "coral_species") - local g_species_plant = minetest.get_item_group(itemstack:get_name(), "coral_species") - - -- Placement rules: - -- Coral plant can only be placed on top of a matching coral block. - -- If alive, it must also be inside a water source. - -- Note: It's intentional that it works only for normal water (not river water). Corals are - -- for the ocean, after all. - if g_block == 0 or (g_coral ~= g_block) or (g_species_block ~= g_species_plant) or - (g_coral == 1 and minetest.get_node(pos_above).name ~= "mcl_core:water_source") then - return itemstack - end - - if minetest.is_protected(pos_under, player_name) or - minetest.is_protected(pos_above, player_name) then - minetest.log("action", player_name - .. " tried to place " .. itemstack:get_name() - .. " at protected position " - .. minetest.pos_to_string(pos_under)) - minetest.record_protection_violation(pos_under, player_name) - return itemstack - end - - node_under.name = itemstack:get_name() - node_under.param2 = minetest.registered_items[itemstack:get_name()].place_param2 or 1 - if node_under.param2 < 8 and math.random(1,2) == 1 then - -- Random horizontal displacement - node_under.param2 = node_under.param2 + 8 - end - minetest.set_node(pos_under, node_under) - if not (minetest.settings:get_bool("creative_mode")) then - itemstack:take_item() - end - - return itemstack -end - --- Sound for non-block corals -local sounds_coral_plant = mcl_sounds.node_sound_leaves_defaults({footstep = mcl_sounds.node_sound_dirt_defaults().footstep}) - -for c=1, #corals do - local id = corals[c][1] - -- Coral Block - minetest.register_node("mcl_ocean:"..id.."_coral_block", { - description = corals[c][2], - tiles = { "mcl_ocean_"..id.."_coral_block.png" }, - groups = { pickaxey = 1, building_block = 1, coral=1, coral_block=1, coral_species=c, }, - sounds = mcl_sounds.node_sound_dirt_defaults(), - drop = "mcl_ocean:dead_"..id.."_coral_block", - _mcl_hardness = 1.5, - _mcl_blast_resistance = 30, - }) - minetest.register_node("mcl_ocean:dead_"..id.."_coral_block", { - description = corals[c][3], - tiles = { "mcl_ocean_dead_"..id.."_coral_block.png" }, - groups = { pickaxey = 1, building_block = 1, coral=2, coral_block=2, coral_species=c, }, - sounds = mcl_sounds.node_sound_dirt_defaults(), - _mcl_hardness = 1.5, - _mcl_blast_resistance = 30, - }) - - -- Coral - minetest.register_node("mcl_ocean:"..id.."_coral", { - description = corals[c][4], - drawtype = "plantlike_rooted", - paramtype = "light", - paramtype2 = "meshoptions", - place_param2 = 1, - tiles = { "mcl_ocean_"..id.."_coral_block.png" }, - special_tiles = { { name = "mcl_ocean_"..id.."_coral.png" } }, - inventory_image = "mcl_ocean_"..id.."_coral.png", - selection_box = { - type = "fixed", - fixed = { - { -0.5, -0.5, -0.5, 0.5, 0.5, 0.5 }, - { -0.5, 0.5, -0.5, 0.5, 1.0, 0.5 }, - } - }, - groups = { dig_immediate = 3, deco_block = 1, coral=1, coral_plant=1, coral_species=c, }, - sounds = sounds_coral_plant, - drop = "mcl_ocean:dead_"..id.."_coral", - node_placement_prediction = "", - node_dig_prediction = "mcl_ocean:"..id.."_coral_block", - on_place = coral_on_place, - after_destruct = function(pos) - minetest.set_node(pos, {name="mcl_ocean:"..id.."_coral_block"}) - end, - _mcl_hardness = 0, - _mcl_blast_resistance = 0, - }) - minetest.register_node("mcl_ocean:dead_"..id.."_coral", { - description = corals[c][5], - drawtype = "plantlike_rooted", - paramtype = "light", - paramtype2 = "meshoptions", - place_param2 = 1, - tiles = { "mcl_ocean_dead_"..id.."_coral_block.png" }, - special_tiles = { { name = "mcl_ocean_dead_"..id.."_coral.png" } }, - inventory_image = "mcl_ocean_dead_"..id.."_coral.png", - groups = { dig_immediate = 3, deco_block = 1, coral=2, coral_plant=2, coral_species=c, }, - selection_box = { - type = "fixed", - fixed = { - { -0.5, -0.5, -0.5, 0.5, 0.5, 0.5 }, - { -0.5, 0.5, -0.5, 0.5, 1.0, 0.5 }, - } - }, - sounds = sounds_coral_plant, - node_placement_prediction = "", - node_dig_prediction = "mcl_ocean:dead_"..id.."_coral_block", - on_place = coral_on_place, - after_destruct = function(pos) - minetest.set_node(pos, {name="mcl_ocean:dead_"..id.."_coral_block"}) - end, - _mcl_hardness = 0, - _mcl_blast_resistance = 0, - }) - - -- Coral Fan - minetest.register_node("mcl_ocean:"..id.."_coral_fan", { - description = corals[c][6], - drawtype = "plantlike_rooted", - paramtype = "light", - paramtype2 = "meshoptions", - place_param2 = 4, - tiles = { "mcl_ocean_"..id.."_coral_block.png" }, - special_tiles = { { name = "mcl_ocean_"..id.."_coral_fan.png" } }, - inventory_image = "mcl_ocean_"..id.."_coral_fan.png", - groups = { dig_immediate = 3, deco_block = 1, coral=1, coral_fan=1, coral_species=c, }, - selection_box = { - type = "fixed", - fixed = { - { -0.5, -0.5, -0.5, 0.5, 0.5, 0.5 }, - { -0.5, 0.5, -0.5, 0.5, 1.0, 0.5 }, - } - }, - sounds = sounds_coral_plant, - drop = "mcl_ocean:dead_"..id.."_coral_fan", - node_placement_prediction = "", - node_dig_prediction = "mcl_ocean:"..id.."_coral_block", - on_place = coral_on_place, - after_destruct = function(pos) - minetest.set_node(pos, {name="mcl_ocean:"..id.."_coral_block"}) - end, - _mcl_hardness = 0, - _mcl_blast_resistance = 0, - }) - minetest.register_node("mcl_ocean:dead_"..id.."_coral_fan", { - description = corals[c][7], - drawtype = "plantlike_rooted", - paramtype = "light", - paramtype2 = "meshoptions", - place_param2 = 4, - tiles = { "mcl_ocean_dead_"..id.."_coral_block.png" }, - special_tiles = { { name = "mcl_ocean_dead_"..id.."_coral_fan.png" } }, - inventory_image = "mcl_ocean_dead_"..id.."_coral_fan.png", - groups = { dig_immediate = 3, deco_block = 1, coral=2, coral_fan=2, coral_species=c, }, - selection_box = { - type = "fixed", - fixed = { - { -0.5, -0.5, -0.5, 0.5, 0.5, 0.5 }, - { -0.5, 0.5, -0.5, 0.5, 1.0, 0.5 }, - } - }, - sounds = sounds_coral_plant, - node_placement_prediction = "", - node_dig_prediction = "mcl_ocean:dead_"..id.."_coral_block", - on_place = coral_on_place, - after_destruct = function(pos) - minetest.set_node(pos, {name="mcl_ocean:dead_"..id.."_coral_block"}) - end, - _mcl_hardness = 0, - _mcl_blast_resistance = 0, - }) -end +-- Corals +dofile(minetest.get_modpath(minetest.get_current_modname()).."/corals.lua") diff --git a/mods/ITEMS/mcl_ocean/mod.conf b/mods/ITEMS/mcl_ocean/mod.conf index 81edf016..664d8e1e 100644 --- a/mods/ITEMS/mcl_ocean/mod.conf +++ b/mods/ITEMS/mcl_ocean/mod.conf @@ -1 +1,2 @@ name = mcl_ocean +description = Includes various ocean nodes diff --git a/mods/ITEMS/mcl_ocean/prismarine.lua b/mods/ITEMS/mcl_ocean/prismarine.lua new file mode 100644 index 00000000..90626cfa --- /dev/null +++ b/mods/ITEMS/mcl_ocean/prismarine.lua @@ -0,0 +1,117 @@ +-- Nodes + +local S = minetest.get_translator("mcl_ocean") + +minetest.register_node("mcl_ocean:sea_lantern", { + description = S("Sea Lantern"), + _doc_items_longdesc = S("Sea lanterns are decorative light sources which look great underwater but can be placed anywhere."), + paramtype2 = "facedir", + is_ground_content = false, + stack_max = 64, + light_source = minetest.LIGHT_MAX, + drop = { + max_items = 1, + items = { + { items = {'mcl_ocean:prismarine_crystals 3'}, rarity = 2 }, + { items = {'mcl_ocean:prismarine_crystals 2'}} + } + }, + tiles = {{name="mcl_ocean_sea_lantern.png", animation={type="vertical_frames", aspect_w=32, aspect_h=32, length=1.25}}}, + groups = {handy=1, building_block=1, material_glass=1}, + sounds = mcl_sounds.node_sound_glass_defaults(), + _mcl_blast_resistance = 1.5, + _mcl_hardness = 0.3, +}) + +minetest.register_node("mcl_ocean:prismarine", { + description = S("Prismarine"), + _doc_items_longdesc = S("Prismarine is used as a building block. It slowly changes its color."), + stack_max = 64, + is_ground_content = false, + -- Texture should have 22 frames for smooth transitions. + tiles = {{name="mcl_ocean_prismarine_anim.png", animation={type="vertical_frames", aspect_w=32, aspect_h=32, length=45.0}}}, + groups = {pickaxey=1, building_block=1, material_stone=1}, + sounds = mcl_sounds.node_sound_stone_defaults(), + _mcl_blast_resistance = 30, + _mcl_hardness = 1.5, +}) + +minetest.register_node("mcl_ocean:prismarine_brick", { + description = S("Prismarine Bricks"), + _doc_items_longdesc = doc.sub.items.temp.build, + stack_max = 64, + is_ground_content = false, + tiles = {"mcl_ocean_prismarine_bricks.png"}, + groups = {pickaxey=1, building_block=1, material_stone=1}, + sounds = mcl_sounds.node_sound_stone_defaults(), + _mcl_blast_resistance = 30, + _mcl_hardness = 1.5, +}) + +minetest.register_node("mcl_ocean:prismarine_dark", { + description = S("Dark Prismarine"), + _doc_items_longdesc = doc.sub.items.temp.build, + stack_max = 64, + is_ground_content = false, + tiles = {"mcl_ocean_prismarine_dark.png"}, + groups = {pickaxey=1, building_block=1, material_stone=1}, + sounds = mcl_sounds.node_sound_stone_defaults(), + _mcl_blast_resistance = 30, + _mcl_hardness = 1.5, +}) + +-- Craftitems + +minetest.register_craftitem("mcl_ocean:prismarine_crystals", { + description = S("Prismarine Crystals"), + _doc_items_longdesc = doc.sub.items.temp.craftitem, + inventory_image = "mcl_ocean_prismarine_crystals.png", + stack_max = 64, + groups = { craftitem = 1 }, +}) + +minetest.register_craftitem("mcl_ocean:prismarine_shard", { + description = S("Prismarine Shard"), + _doc_items_longdesc = doc.sub.items.temp.craftitem, + inventory_image = "mcl_ocean_prismarine_shard.png", + stack_max = 64, + groups = { craftitem = 1 }, +}) + +-- Crafting + +minetest.register_craft({ + output = 'mcl_ocean:sea_lantern', + recipe = { + {'mcl_ocean:prismarine_shard', 'mcl_ocean:prismarine_crystals', 'mcl_ocean:prismarine_shard'}, + {'mcl_ocean:prismarine_crystals', 'mcl_ocean:prismarine_crystals', 'mcl_ocean:prismarine_crystals'}, + {'mcl_ocean:prismarine_shard', 'mcl_ocean:prismarine_crystals', 'mcl_ocean:prismarine_shard'}, + } +}) + +minetest.register_craft({ + output = 'mcl_ocean:prismarine', + recipe = { + {'mcl_ocean:prismarine_shard', 'mcl_ocean:prismarine_shard'}, + {'mcl_ocean:prismarine_shard', 'mcl_ocean:prismarine_shard'}, + } +}) + +minetest.register_craft({ + output = 'mcl_ocean:prismarine_brick', + recipe = { + {'mcl_ocean:prismarine_shard', 'mcl_ocean:prismarine_shard', 'mcl_ocean:prismarine_shard'}, + {'mcl_ocean:prismarine_shard', 'mcl_ocean:prismarine_shard', 'mcl_ocean:prismarine_shard'}, + {'mcl_ocean:prismarine_shard', 'mcl_ocean:prismarine_shard', 'mcl_ocean:prismarine_shard'}, + } +}) + +minetest.register_craft({ + output = 'mcl_ocean:prismarine_dark', + recipe = { + {'mcl_ocean:prismarine_shard', 'mcl_ocean:prismarine_shard', 'mcl_ocean:prismarine_shard'}, + {'mcl_ocean:prismarine_shard', 'mcl_dye:black', 'mcl_ocean:prismarine_shard'}, + {'mcl_ocean:prismarine_shard', 'mcl_ocean:prismarine_shard', 'mcl_ocean:prismarine_shard'}, + } +}) + From cf1df56b79b543fa5266e7f0bc453d442043739c Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 17 Dec 2019 18:40:10 +0100 Subject: [PATCH 432/737] Make corals dead when not near water --- mods/ITEMS/mcl_ocean/corals.lua | 96 +++++++++++++++++++++++++++++---- 1 file changed, 86 insertions(+), 10 deletions(-) diff --git a/mods/ITEMS/mcl_ocean/corals.lua b/mods/ITEMS/mcl_ocean/corals.lua index 7cc4d79b..a75fb072 100644 --- a/mods/ITEMS/mcl_ocean/corals.lua +++ b/mods/ITEMS/mcl_ocean/corals.lua @@ -20,7 +20,7 @@ local function coral_on_place(itemstack, placer, pointed_thing) local def_under = minetest.registered_nodes[node_under.name] if def_under and def_under.on_rightclick and not placer:get_player_control().sneak then - return def_under.on_rightclick(pos_under, node_under.name, + return def_under.on_rightclick(pos_under, node_under, placer, itemstack, pointed_thing) or itemstack end @@ -31,11 +31,7 @@ local function coral_on_place(itemstack, placer, pointed_thing) -- Placement rules: -- Coral plant can only be placed on top of a matching coral block. - -- If alive, it must also be inside a water source. - -- Note: It's intentional that it works only for normal water (not river water). Corals are - -- for the ocean, after all. - if g_block == 0 or (g_coral ~= g_block) or (g_species_block ~= g_species_plant) or - (g_coral == 1 and minetest.get_node(pos_above).name ~= "mcl_core:water_source") then + if g_block == 0 or (g_coral ~= g_block) or (g_species_block ~= g_species_plant) then return itemstack end @@ -111,7 +107,10 @@ for c=1, #corals do node_dig_prediction = "mcl_ocean:"..id.."_coral_block", on_place = coral_on_place, after_destruct = function(pos) - minetest.set_node(pos, {name="mcl_ocean:"..id.."_coral_block"}) + local node = minetest.get_node(pos) + if minetest.get_item_group(node.name, "coral") == 0 then + minetest.set_node(pos, {name="mcl_ocean:"..id.."_coral_block"}) + end end, _mcl_hardness = 0, _mcl_blast_resistance = 0, @@ -138,7 +137,10 @@ for c=1, #corals do node_dig_prediction = "mcl_ocean:dead_"..id.."_coral_block", on_place = coral_on_place, after_destruct = function(pos) - minetest.set_node(pos, {name="mcl_ocean:dead_"..id.."_coral_block"}) + local node = minetest.get_node(pos) + if minetest.get_item_group(node.name, "coral") == 0 then + minetest.set_node(pos, {name="mcl_ocean:dead_"..id.."_coral_block"}) + end end, _mcl_hardness = 0, _mcl_blast_resistance = 0, @@ -168,7 +170,10 @@ for c=1, #corals do node_dig_prediction = "mcl_ocean:"..id.."_coral_block", on_place = coral_on_place, after_destruct = function(pos) - minetest.set_node(pos, {name="mcl_ocean:"..id.."_coral_block"}) + local node = minetest.get_node(pos) + if minetest.get_item_group(node.name, "coral") == 0 then + minetest.set_node(pos, {name="mcl_ocean:"..id.."_coral_block"}) + end end, _mcl_hardness = 0, _mcl_blast_resistance = 0, @@ -195,9 +200,80 @@ for c=1, #corals do node_dig_prediction = "mcl_ocean:dead_"..id.."_coral_block", on_place = coral_on_place, after_destruct = function(pos) - minetest.set_node(pos, {name="mcl_ocean:dead_"..id.."_coral_block"}) + local node = minetest.get_node(pos) + if minetest.get_item_group(node.name, "coral") == 0 then + minetest.set_node(pos, {name="mcl_ocean:dead_"..id.."_coral_block"}) + end end, _mcl_hardness = 0, _mcl_blast_resistance = 0, }) end + +-- Turn corals and coral fans to dead corals if not inside a water source +minetest.register_abm({ + label = "Coral plant / coral fan death", + nodenames = { "group:coral_plant", "group_coral_fan" }, + interval = 17, + chance = 5, + catch_up = false, + action = function(pos, node, active_object_count, active_object_count_wider) + -- Check if coral's alive + local coral_state = minetest.get_item_group(node.name, "coral") + if coral_state == 1 then + -- Check node above, here lives the actual plant (it's plantlike_rooted) + if minetest.get_node({x=pos.x, y=pos.y+1, z=pos.z}).name ~= "mcl_core:water_source" then + -- Find dead form (it's the same as the node's drop) + local def = minetest.registered_nodes[node.name] + local dead + if def then + node.name = def.drop + else + return + end + -- Set node to dead form. + minetest.set_node(pos, node) + end + end + end, +}) + +-- Turn corals blocks to dead coral blocks if not next to a water source +minetest.register_abm({ + label = "Coral block death", + nodenames = { "group:coral_block" }, + interval = 17, + chance = 5, + catch_up = false, + action = function(pos, node, active_object_count, active_object_count_wider) + -- Check if coral's alive + local coral_state = minetest.get_item_group(node.name, "coral") + if coral_state == 1 then + local posses = { + { x=0,y=1,z=0 }, + { x=-1,y=0,z=0 }, + { x=1,y=0,z=0 }, + { x=0,y=0,z=-1 }, + { x=0,y=0,z=1 }, + { x=0,y=-1,z=0 }, + } + -- Check all 6 neighbors for water + for p=1, #posses do + local checknode = minetest.get_node(vector.add(pos, posses[p])) + if checknode.name == "mcl_core:water_source" then + -- Water found! Don't die. + return + end + end + -- Find dead form (it's the same as the node's drop) + local def = minetest.registered_nodes[node.name] + if def then + node.name = def.drop + else + return + end + -- Set node to dead form + minetest.set_node(pos, node) + end + end, +}) From 4dcbe75e84b302f4e404bd99479384f03401416e Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 17 Dec 2019 19:51:50 +0100 Subject: [PATCH 433/737] Allow corals placement on top of node only --- mods/ITEMS/mcl_ocean/corals.lua | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/mods/ITEMS/mcl_ocean/corals.lua b/mods/ITEMS/mcl_ocean/corals.lua index a75fb072..8e6ff422 100644 --- a/mods/ITEMS/mcl_ocean/corals.lua +++ b/mods/ITEMS/mcl_ocean/corals.lua @@ -24,6 +24,10 @@ local function coral_on_place(itemstack, placer, pointed_thing) placer, itemstack, pointed_thing) or itemstack end + if pos_under.y >= pos_above.y then + return itemstack + end + local g_block = minetest.get_item_group(node_under.name, "coral_block") local g_coral = minetest.get_item_group(itemstack:get_name(), "coral") local g_species_block = minetest.get_item_group(node_under.name, "coral_species") From a714751f8b692d1da7b5e6449b1ec88b08801067 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 17 Dec 2019 19:52:19 +0100 Subject: [PATCH 434/737] Add seagrass on dirt --- mods/ITEMS/mcl_ocean/init.lua | 3 + mods/ITEMS/mcl_ocean/seagrass.lua | 98 ++++++++++++++++++ .../mcl_ocean/textures/mcl_ocean_seagrass.png | Bin 0 -> 1547 bytes 3 files changed, 101 insertions(+) create mode 100644 mods/ITEMS/mcl_ocean/seagrass.lua create mode 100644 mods/ITEMS/mcl_ocean/textures/mcl_ocean_seagrass.png diff --git a/mods/ITEMS/mcl_ocean/init.lua b/mods/ITEMS/mcl_ocean/init.lua index ee19cab3..aee7ead1 100644 --- a/mods/ITEMS/mcl_ocean/init.lua +++ b/mods/ITEMS/mcl_ocean/init.lua @@ -3,3 +3,6 @@ dofile(minetest.get_modpath(minetest.get_current_modname()).."/prismarine.lua") -- Corals dofile(minetest.get_modpath(minetest.get_current_modname()).."/corals.lua") + +-- Seagrass +dofile(minetest.get_modpath(minetest.get_current_modname()).."/seagrass.lua") diff --git a/mods/ITEMS/mcl_ocean/seagrass.lua b/mods/ITEMS/mcl_ocean/seagrass.lua new file mode 100644 index 00000000..7c16870a --- /dev/null +++ b/mods/ITEMS/mcl_ocean/seagrass.lua @@ -0,0 +1,98 @@ +local S = minetest.get_translator("mcl_ocean") + +local function seagrass_on_place(itemstack, placer, pointed_thing) + if pointed_thing.type ~= "node" or not placer then + return itemstack + end + + local player_name = placer:get_player_name() + local pos_under = pointed_thing.under + local pos_above = pointed_thing.above + local node_under = minetest.get_node(pos_under) + local node_above = minetest.get_node(pos_above) + local def_under = minetest.registered_nodes[node_under.name] + local def_above = minetest.registered_nodes[node_above.name] + + if def_under and def_under.on_rightclick and not placer:get_player_control().sneak then + return def_under.on_rightclick(pos_under, node_under, + placer, itemstack, pointed_thing) or itemstack + end + + if pos_under.y >= pos_above.y then + return itemstack + end + + -- Placement rules: + -- Seagrass can only be placed on top of dirt inside water + local g_above_water = minetest.get_item_group(node_above.name, "water") + if not (g_above_water ~= 0 and def_above.liquidtype == "source") then + return itemstack + end + + if minetest.is_protected(pos_under, player_name) or + minetest.is_protected(pos_above, player_name) then + minetest.log("action", player_name + .. " tried to place " .. itemstack:get_name() + .. " at protected position " + .. minetest.pos_to_string(pos_under)) + minetest.record_protection_violation(pos_under, player_name) + return itemstack + end + + if node_under.name ~= "mcl_core:dirt" then + return itemstack + end + node_under.name = "mcl_ocean:seagrass_dirt" + node_under.param2 = minetest.registered_items[itemstack:get_name()].place_param2 or 3 + if node_under.param2 < 8 and math.random(1,2) == 1 then + -- Random horizontal displacement + node_under.param2 = node_under.param2 + 8 + end + minetest.set_node(pos_under, node_under) + if not (minetest.settings:get_bool("creative_mode")) then + itemstack:take_item() + end + + return itemstack +end + +-- Seagrass on dirt + +minetest.register_node("mcl_ocean:seagrass_dirt", { + description = S("Seagrass"), + drawtype = "plantlike_rooted", + paramtype = "light", + paramtype2 = "meshoptions", + place_param2 = 3, + tiles = { "default_dirt.png" }, + special_tiles = { + { + image = "mcl_ocean_seagrass.png", + animation = {type="vertical_frames", aspect_w=16, aspect_h=16, length=1.0}, + } + }, + inventory_image = "mcl_ocean_seagrass.png^[verticalframe:12:0", + wield_image = "mcl_ocean_seagrass.png^[verticalframe:12:0", + selection_box = { + type = "fixed", + fixed = { + { -0.5, -0.5, -0.5, 0.5, 0.5, 0.5 }, + { -6/16, -8/16, -6/16, 6/16, 4/16, 6/16 }, + }, + }, + groups = { dig_immediate = 3, deco_block = 1, plant = 1, seagrass = 1, }, + sounds = mcl_sounds.node_sound_leaves_defaults({footstep = mcl_sounds.node_sound_dirt_defaults().footstep}), + node_placement_prediction = "", + node_dig_prediction = "mcl_core:dirt", + on_place = seagrass_on_place, + after_destruct = function(pos) + local node = minetest.get_node(pos) + if minetest.get_item_group(node.name, "seagrass") == 0 then + minetest.set_node(pos, {name="mcl_core:dirt"}) + end + end, + drop = "", + _mcl_shears_drop = true, + _mcl_hardness = 0, + _mcl_blast_resistance = 0, +}) diff --git a/mods/ITEMS/mcl_ocean/textures/mcl_ocean_seagrass.png b/mods/ITEMS/mcl_ocean/textures/mcl_ocean_seagrass.png new file mode 100644 index 0000000000000000000000000000000000000000..216d25312f56abe40681a2935ffe50b622aaae0f GIT binary patch literal 1547 zcmeAS@N?(olHy`uVBq!ia0y~yU=UznU^u|R1`;{@*pGpMfhFD1*O7r?V?XzwL{o+UC{LA zk@F?rIr)!-8e0DRc)p(dNJM$|%maT8%iH%er7_%yKI`eUK{!lK<={@&#wMW+4nD`e zX+GvI@a2@AHTjG1rRme|s5QM4pV;tT=fESDZ3`I0HwrJ`OcGZe=hZIg)Su(1$LP_~@8)qVDnVU%MrGr#?cK(jicH(uJq`9d zy%tMTKapGZJ+`=8%=&wQ@J42Z$sd1O?Ngro{EnK;ts~oR%rDrsUsvpbQW?_>+4e`% zyT8fGU;8%i{fjj}#I7*EedoB{O8CHvbBqVxF*_TpI3C*_eR_S!$$o~bi+8dbH2(Y~ zc|K{QmdEU^pUgNWwVXY8w&6|M&R(B+f3wau-cJ!Si$A_CL(i|igF!cI@)Y~$k`1;l z0SzT@SPZONYUO{HeEw-CbUpaq$Jn`yc?Uf|1gy@z)5KxXyy4p2D9)D)7sl3{(0}vp z&nMj-?ut8mjSGai^^C&LN7P@ev4{*1)!&{NR4&eN_si04Weh1B{Vf@PmZrT`oV;td zuG{AOE(*~qn)Tf2c=vAE)h)~c6U;srO|Vc?icb{V zDa&a4HCC-`yJq*?-t8?ROwaVsAAKf!#A%zyB>TsEI)xG@vWlr5uyDTded6-@k0(z1 z{kLPC!gf1{OYb)1G47E(R>K!A%g6cR-37gSQ&J|CeUD>$b}b{;gP%8a<0jLZxTNyg zUKyc1&r<$A6)?Uit}$hY@!d1gxn2ybx_T|EUhVdIm1n(V=Zqh7%#Sd=HO%HV^ou*x zR_6LkGF_)(`YGuXA3dIm+D@IYd2d{u3q$g~V{iFbOUhpeF4(nAw&Km+-M&t{Zig^& zgsc^Ou2{N#WsQ&OSKlKV6_*eG7jT&E=grW4W1mCv8J=xHbAyAKF2u|+TfDq>vS;S& zaD_+gf=gV5Kda}=*(0<;`_g%fWX3%)_ni9NKdn0TdY3li)w=vU%8tbZu-?%Y)S0XsrfSYjL)XrRXcD!eWSuQr2}^qC-2@Z zvi$9fmG6yK?p~|RR-bxHEbX2E_q=V}TyL$BJS?Y_pk(ZM;}??*_k*XW{xcp+ejE2x zd9GvLK~F2|HQpRYtq(+&JEu3Ku2q^8aChg?;yrgZ^RL{!ct?$oUfFg|d5`k#v8Hct zsjka)f2ycYVP|ajZCiwc z*lX?rorcJNQ=X^)`M+w<^W9qScfJ<;ahV~X)tdhkPfY+*(C&)hOP;IV{T69pm=VCJ zCm&eXcys!SdTxhFX3QP?%%b=%Cq0w1It*mx$Pb8Bo_{W3W;nmXnUJMKj44$rjF6*2U FngADm%76d> literal 0 HcmV?d00001 From 5c70296e8ff7878f54cdae86a875a9d9ad4e346c Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 17 Dec 2019 20:25:35 +0100 Subject: [PATCH 435/737] Fix seagrass selectionbox --- mods/ITEMS/mcl_ocean/seagrass.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_ocean/seagrass.lua b/mods/ITEMS/mcl_ocean/seagrass.lua index 7c16870a..1b1e52c1 100644 --- a/mods/ITEMS/mcl_ocean/seagrass.lua +++ b/mods/ITEMS/mcl_ocean/seagrass.lua @@ -77,7 +77,7 @@ minetest.register_node("mcl_ocean:seagrass_dirt", { type = "fixed", fixed = { { -0.5, -0.5, -0.5, 0.5, 0.5, 0.5 }, - { -6/16, -8/16, -6/16, 6/16, 4/16, 6/16 }, + { -0.5, 0.5, -0.5, 0.5, 1.3, 0.5 }, }, }, groups = { dig_immediate = 3, deco_block = 1, plant = 1, seagrass = 1, }, From 09c1f44a6559dffe0e116e9c455829415248067e Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 17 Dec 2019 20:27:26 +0100 Subject: [PATCH 436/737] mcl_ocean: Add mcl_core depends --- mods/ITEMS/mcl_ocean/depends.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/mods/ITEMS/mcl_ocean/depends.txt b/mods/ITEMS/mcl_ocean/depends.txt index 6c4ef5f3..b214a2f9 100644 --- a/mods/ITEMS/mcl_ocean/depends.txt +++ b/mods/ITEMS/mcl_ocean/depends.txt @@ -1,3 +1,4 @@ +mcl_core mcl_sounds mcl_dye doc_items From 40a55729ca62a02920efe86535b473b6a3ebdc72 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 17 Dec 2019 20:39:58 +0100 Subject: [PATCH 437/737] Add seagrass on clay --- mods/ITEMS/mcl_ocean/seagrass.lua | 90 ++++++++++++++++++------------- 1 file changed, 53 insertions(+), 37 deletions(-) diff --git a/mods/ITEMS/mcl_ocean/seagrass.lua b/mods/ITEMS/mcl_ocean/seagrass.lua index 1b1e52c1..984c545c 100644 --- a/mods/ITEMS/mcl_ocean/seagrass.lua +++ b/mods/ITEMS/mcl_ocean/seagrass.lua @@ -1,5 +1,11 @@ local S = minetest.get_translator("mcl_ocean") +-- List of supported surfaces for seagrass +local surfaces = { + { "dirt", "mcl_core:dirt" }, + { "clay", "mcl_core:clay" }, +} + local function seagrass_on_place(itemstack, placer, pointed_thing) if pointed_thing.type ~= "node" or not placer then return itemstack @@ -39,10 +45,13 @@ local function seagrass_on_place(itemstack, placer, pointed_thing) return itemstack end - if node_under.name ~= "mcl_core:dirt" then + if node_under.name == "mcl_core:dirt" then + node_under.name = "mcl_ocean:seagrass_dirt" + elseif node_under.name == "mcl_core:clay" then + node_under.name = "mcl_ocean:seagrass_clay" + else return itemstack end - node_under.name = "mcl_ocean:seagrass_dirt" node_under.param2 = minetest.registered_items[itemstack:get_name()].place_param2 or 3 if node_under.param2 < 8 and math.random(1,2) == 1 then -- Random horizontal displacement @@ -56,43 +65,50 @@ local function seagrass_on_place(itemstack, placer, pointed_thing) return itemstack end --- Seagrass on dirt - -minetest.register_node("mcl_ocean:seagrass_dirt", { +minetest.register_craftitem("mcl_ocean:seagrass", { description = S("Seagrass"), - drawtype = "plantlike_rooted", - paramtype = "light", - paramtype2 = "meshoptions", - place_param2 = 3, - tiles = { "default_dirt.png" }, - special_tiles = { - { - image = "mcl_ocean_seagrass.png", - animation = {type="vertical_frames", aspect_w=16, aspect_h=16, length=1.0}, - } - }, inventory_image = "mcl_ocean_seagrass.png^[verticalframe:12:0", wield_image = "mcl_ocean_seagrass.png^[verticalframe:12:0", - selection_box = { - type = "fixed", - fixed = { - { -0.5, -0.5, -0.5, 0.5, 0.5, 0.5 }, - { -0.5, 0.5, -0.5, 0.5, 1.3, 0.5 }, - }, - }, - groups = { dig_immediate = 3, deco_block = 1, plant = 1, seagrass = 1, }, - sounds = mcl_sounds.node_sound_leaves_defaults({footstep = mcl_sounds.node_sound_dirt_defaults().footstep}), - node_placement_prediction = "", - node_dig_prediction = "mcl_core:dirt", on_place = seagrass_on_place, - after_destruct = function(pos) - local node = minetest.get_node(pos) - if minetest.get_item_group(node.name, "seagrass") == 0 then - minetest.set_node(pos, {name="mcl_core:dirt"}) - end - end, - drop = "", - _mcl_shears_drop = true, - _mcl_hardness = 0, - _mcl_blast_resistance = 0, }) + +-- Seagrass nodes: seagrass on a surface node + +for s=1, #surfaces do + local def = minetest.registered_nodes[surfaces[s][2]] + minetest.register_node("mcl_ocean:seagrass_"..surfaces[s][1], { + drawtype = "plantlike_rooted", + paramtype = "light", + paramtype2 = "meshoptions", + place_param2 = 3, + tiles = def.tiles, + special_tiles = { + { + image = "mcl_ocean_seagrass.png", + animation = {type="vertical_frames", aspect_w=16, aspect_h=16, length=1.0}, + } + }, + inventory_image = "("..def.tiles[1]..")^(mcl_ocean_seagrass.png^[verticalframe:12:0)", + wield_image = "mcl_ocean_seagrass.png^[verticalframe:12:0", + selection_box = { + type = "fixed", + fixed = { + { -0.5, -0.5, -0.5, 0.5, 0.5, 0.5 }, + { -0.5, 0.5, -0.5, 0.5, 1.3, 0.5 }, + }, + }, + groups = { dig_immediate = 3, deco_block = 1, plant = 1, seagrass = 1, }, + sounds = mcl_sounds.node_sound_leaves_defaults({footstep = mcl_sounds.node_sound_dirt_defaults().footstep}), + node_dig_prediction = surfaces[s][2], + after_destruct = function(pos) + local node = minetest.get_node(pos) + if minetest.get_item_group(node.name, "seagrass") == 0 then + minetest.set_node(pos, {name=surfaces[s][2]}) + end + end, + drop = "", + _mcl_shears_drop = true, + _mcl_hardness = 0, + _mcl_blast_resistance = 0, + }) +end From b81396c03f012a5aa05a02f85c1375112b1f2281 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 17 Dec 2019 21:24:57 +0100 Subject: [PATCH 438/737] Add falling node variants of seagrass --- API.md | 1 + mods/ENTITIES/mcl_falling_nodes/init.lua | 8 ++++++-- mods/ITEMS/mcl_ocean/corals.lua | 8 ++++---- mods/ITEMS/mcl_ocean/seagrass.lua | 17 +++++++++++------ 4 files changed, 22 insertions(+), 12 deletions(-) diff --git a/API.md b/API.md index 7611ce44..344414b7 100644 --- a/API.md +++ b/API.md @@ -21,6 +21,7 @@ All nodes can have these fields: * `_mcl_hardness`: Hardness of the block, ranges from 0 to infinity (represented by -1). Determines digging times. Default: 0 * `_mcl_blast_resistance`: How well this block blocks and resists explosions. Default: 0 +* `_mcl_falling_node_alternative`: If set to an itemstring, the node will turn into this node before it starts to fall. * `_mcl_after_falling(pos)`: Called after a falling node finished falling and turned into a node. Use the `mcl_sounds` mod for the sounds. diff --git a/mods/ENTITIES/mcl_falling_nodes/init.lua b/mods/ENTITIES/mcl_falling_nodes/init.lua index d5dd6c47..71478bfe 100644 --- a/mods/ENTITIES/mcl_falling_nodes/init.lua +++ b/mods/ENTITIES/mcl_falling_nodes/init.lua @@ -79,10 +79,14 @@ minetest.register_entity(":__builtin:falling_node", { meta = {}, set_node = function(self, node, meta) + local def = core.registered_nodes[node.name] + -- Change falling node if definition tells us to + if def and def._mcl_falling_node_alternative then + node.name = def._mcl_falling_node_alternative + end + local glow self.node = node self.meta = meta or {} - local def = core.registered_nodes[node.name] - local glow -- Set correct entity yaw if def and node.param2 ~= 0 then if (def.paramtype2 == "facedir" or def.paramtype2 == "colorfacedir") then diff --git a/mods/ITEMS/mcl_ocean/corals.lua b/mods/ITEMS/mcl_ocean/corals.lua index 8e6ff422..56124db9 100644 --- a/mods/ITEMS/mcl_ocean/corals.lua +++ b/mods/ITEMS/mcl_ocean/corals.lua @@ -110,7 +110,7 @@ for c=1, #corals do node_placement_prediction = "", node_dig_prediction = "mcl_ocean:"..id.."_coral_block", on_place = coral_on_place, - after_destruct = function(pos) + after_dig_node = function(pos) local node = minetest.get_node(pos) if minetest.get_item_group(node.name, "coral") == 0 then minetest.set_node(pos, {name="mcl_ocean:"..id.."_coral_block"}) @@ -140,7 +140,7 @@ for c=1, #corals do node_placement_prediction = "", node_dig_prediction = "mcl_ocean:dead_"..id.."_coral_block", on_place = coral_on_place, - after_destruct = function(pos) + after_dig_node = function(pos) local node = minetest.get_node(pos) if minetest.get_item_group(node.name, "coral") == 0 then minetest.set_node(pos, {name="mcl_ocean:dead_"..id.."_coral_block"}) @@ -173,7 +173,7 @@ for c=1, #corals do node_placement_prediction = "", node_dig_prediction = "mcl_ocean:"..id.."_coral_block", on_place = coral_on_place, - after_destruct = function(pos) + after_dig_node = function(pos) local node = minetest.get_node(pos) if minetest.get_item_group(node.name, "coral") == 0 then minetest.set_node(pos, {name="mcl_ocean:"..id.."_coral_block"}) @@ -203,7 +203,7 @@ for c=1, #corals do node_placement_prediction = "", node_dig_prediction = "mcl_ocean:dead_"..id.."_coral_block", on_place = coral_on_place, - after_destruct = function(pos) + after_dig_node = function(pos) local node = minetest.get_node(pos) if minetest.get_item_group(node.name, "coral") == 0 then minetest.set_node(pos, {name="mcl_ocean:dead_"..id.."_coral_block"}) diff --git a/mods/ITEMS/mcl_ocean/seagrass.lua b/mods/ITEMS/mcl_ocean/seagrass.lua index 984c545c..8a453901 100644 --- a/mods/ITEMS/mcl_ocean/seagrass.lua +++ b/mods/ITEMS/mcl_ocean/seagrass.lua @@ -4,6 +4,9 @@ local S = minetest.get_translator("mcl_ocean") local surfaces = { { "dirt", "mcl_core:dirt" }, { "clay", "mcl_core:clay" }, + { "sand", "mcl_core:sand", 1 }, + { "redsand", "mcl_core:redsand", 1 }, + { "gravel", "mcl_core:gravel", 1 }, } local function seagrass_on_place(itemstack, placer, pointed_thing) @@ -76,6 +79,10 @@ minetest.register_craftitem("mcl_ocean:seagrass", { for s=1, #surfaces do local def = minetest.registered_nodes[surfaces[s][2]] + local alt + if surfaces[s][3] == 1 then + alt = surfaces[s][2] + end minetest.register_node("mcl_ocean:seagrass_"..surfaces[s][1], { drawtype = "plantlike_rooted", paramtype = "light", @@ -97,16 +104,14 @@ for s=1, #surfaces do { -0.5, 0.5, -0.5, 0.5, 1.3, 0.5 }, }, }, - groups = { dig_immediate = 3, deco_block = 1, plant = 1, seagrass = 1, }, + groups = { dig_immediate = 3, deco_block = 1, plant = 1, seagrass = 1, falling_node = surfaces[s][3] }, sounds = mcl_sounds.node_sound_leaves_defaults({footstep = mcl_sounds.node_sound_dirt_defaults().footstep}), node_dig_prediction = surfaces[s][2], - after_destruct = function(pos) - local node = minetest.get_node(pos) - if minetest.get_item_group(node.name, "seagrass") == 0 then - minetest.set_node(pos, {name=surfaces[s][2]}) - end + after_dig_node = function(pos) + minetest.set_node(pos, {name=surfaces[s][2]}) end, drop = "", + _mcl_falling_node_alternative = alt, _mcl_shears_drop = true, _mcl_hardness = 0, _mcl_blast_resistance = 0, From 5c953b1dc0ae25633f1401282c1a3bbd01d47444 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 17 Dec 2019 21:43:30 +0100 Subject: [PATCH 439/737] Add more node sounds for ocean plants --- mods/ITEMS/mcl_ocean/corals.lua | 4 ++++ mods/ITEMS/mcl_ocean/seagrass.lua | 18 +++++++++++++++++- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_ocean/corals.lua b/mods/ITEMS/mcl_ocean/corals.lua index 56124db9..a1a029b7 100644 --- a/mods/ITEMS/mcl_ocean/corals.lua +++ b/mods/ITEMS/mcl_ocean/corals.lua @@ -56,6 +56,10 @@ local function coral_on_place(itemstack, placer, pointed_thing) node_under.param2 = node_under.param2 + 8 end minetest.set_node(pos_under, node_under) + local def_node = minetest.registered_nodes[node_under.name] + if def_node.sounds then + minetest.sound_play(def_node.sounds.place, { gain = 0.5, pos = pos_under }) + end if not (minetest.settings:get_bool("creative_mode")) then itemstack:take_item() end diff --git a/mods/ITEMS/mcl_ocean/seagrass.lua b/mods/ITEMS/mcl_ocean/seagrass.lua index 8a453901..adffac5f 100644 --- a/mods/ITEMS/mcl_ocean/seagrass.lua +++ b/mods/ITEMS/mcl_ocean/seagrass.lua @@ -48,10 +48,17 @@ local function seagrass_on_place(itemstack, placer, pointed_thing) return itemstack end + -- Select a seagrass node if node_under.name == "mcl_core:dirt" then node_under.name = "mcl_ocean:seagrass_dirt" elseif node_under.name == "mcl_core:clay" then node_under.name = "mcl_ocean:seagrass_clay" + elseif node_under.name == "mcl_core:sand" then + node_under.name = "mcl_ocean:seagrass_sand" + elseif node_under.name == "mcl_core:redsand" then + node_under.name = "mcl_ocean:seagrass_redsand" + elseif node_under.name == "mcl_core:gravel" then + node_under.name = "mcl_ocean:seagrass_gravel" else return itemstack end @@ -60,6 +67,10 @@ local function seagrass_on_place(itemstack, placer, pointed_thing) -- Random horizontal displacement node_under.param2 = node_under.param2 + 8 end + local def_node = minetest.registered_items[node_under.name] + if def_node.sounds then + minetest.sound_play(def_node.sounds.place, { gain = 0.5, pos = pos_under }) + end minetest.set_node(pos_under, node_under) if not (minetest.settings:get_bool("creative_mode")) then itemstack:take_item() @@ -83,6 +94,11 @@ for s=1, #surfaces do if surfaces[s][3] == 1 then alt = surfaces[s][2] end + local sounds = table.copy(def.sounds) + local leaf_sounds = mcl_sounds.node_sound_leaves_defaults() + sounds.dig = leaf_sounds.dig + sounds.dug = leaf_sounds.dug + sounds.place = leaf_sounds.place minetest.register_node("mcl_ocean:seagrass_"..surfaces[s][1], { drawtype = "plantlike_rooted", paramtype = "light", @@ -105,7 +121,7 @@ for s=1, #surfaces do }, }, groups = { dig_immediate = 3, deco_block = 1, plant = 1, seagrass = 1, falling_node = surfaces[s][3] }, - sounds = mcl_sounds.node_sound_leaves_defaults({footstep = mcl_sounds.node_sound_dirt_defaults().footstep}), + sounds = sounds, node_dig_prediction = surfaces[s][2], after_dig_node = function(pos) minetest.set_node(pos, {name=surfaces[s][2]}) From 40e681a5665d4646d5e1cc553019f06984d30792 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 17 Dec 2019 22:43:35 +0100 Subject: [PATCH 440/737] Add kelp and related items --- mods/ITEMS/mcl_ocean/corals.lua | 2 +- mods/ITEMS/mcl_ocean/depends.txt | 1 + mods/ITEMS/mcl_ocean/init.lua | 3 + mods/ITEMS/mcl_ocean/kelp.lua | 185 ++++++++++++++++++ mods/ITEMS/mcl_ocean/seagrass.lua | 2 +- .../textures/mcl_ocean_dried_kelp.png | Bin 0 -> 414 bytes .../textures/mcl_ocean_dried_kelp_bottom.png | Bin 0 -> 364 bytes .../textures/mcl_ocean_dried_kelp_side.png | Bin 0 -> 360 bytes .../textures/mcl_ocean_dried_kelp_top.png | Bin 0 -> 364 bytes .../textures/mcl_ocean_kelp_item.png | Bin 0 -> 396 bytes .../textures/mcl_ocean_kelp_plant.png | Bin 0 -> 2291 bytes 11 files changed, 191 insertions(+), 2 deletions(-) create mode 100644 mods/ITEMS/mcl_ocean/kelp.lua create mode 100644 mods/ITEMS/mcl_ocean/textures/mcl_ocean_dried_kelp.png create mode 100644 mods/ITEMS/mcl_ocean/textures/mcl_ocean_dried_kelp_bottom.png create mode 100644 mods/ITEMS/mcl_ocean/textures/mcl_ocean_dried_kelp_side.png create mode 100644 mods/ITEMS/mcl_ocean/textures/mcl_ocean_dried_kelp_top.png create mode 100644 mods/ITEMS/mcl_ocean/textures/mcl_ocean_kelp_item.png create mode 100644 mods/ITEMS/mcl_ocean/textures/mcl_ocean_kelp_plant.png diff --git a/mods/ITEMS/mcl_ocean/corals.lua b/mods/ITEMS/mcl_ocean/corals.lua index a1a029b7..14546b4b 100644 --- a/mods/ITEMS/mcl_ocean/corals.lua +++ b/mods/ITEMS/mcl_ocean/corals.lua @@ -50,7 +50,7 @@ local function coral_on_place(itemstack, placer, pointed_thing) end node_under.name = itemstack:get_name() - node_under.param2 = minetest.registered_items[itemstack:get_name()].place_param2 or 1 + node_under.param2 = minetest.registered_items[node_under.name].place_param2 or 1 if node_under.param2 < 8 and math.random(1,2) == 1 then -- Random horizontal displacement node_under.param2 = node_under.param2 + 8 diff --git a/mods/ITEMS/mcl_ocean/depends.txt b/mods/ITEMS/mcl_ocean/depends.txt index b214a2f9..d950d607 100644 --- a/mods/ITEMS/mcl_ocean/depends.txt +++ b/mods/ITEMS/mcl_ocean/depends.txt @@ -2,3 +2,4 @@ mcl_core mcl_sounds mcl_dye doc_items +screwdriver? diff --git a/mods/ITEMS/mcl_ocean/init.lua b/mods/ITEMS/mcl_ocean/init.lua index aee7ead1..cf63f98b 100644 --- a/mods/ITEMS/mcl_ocean/init.lua +++ b/mods/ITEMS/mcl_ocean/init.lua @@ -6,3 +6,6 @@ dofile(minetest.get_modpath(minetest.get_current_modname()).."/corals.lua") -- Seagrass dofile(minetest.get_modpath(minetest.get_current_modname()).."/seagrass.lua") + +-- Kelp +dofile(minetest.get_modpath(minetest.get_current_modname()).."/kelp.lua") diff --git a/mods/ITEMS/mcl_ocean/kelp.lua b/mods/ITEMS/mcl_ocean/kelp.lua new file mode 100644 index 00000000..4404d907 --- /dev/null +++ b/mods/ITEMS/mcl_ocean/kelp.lua @@ -0,0 +1,185 @@ +local S = minetest.get_translator("mcl_ocean") + +-- List of supported surfaces for seagrass and kelp +local surfaces = { + { "dirt", "mcl_core:dirt" }, + { "clay", "mcl_core:clay" }, + { "sand", "mcl_core:sand", 1 }, + { "redsand", "mcl_core:redsand", 1 }, + { "gravel", "mcl_core:gravel", 1 }, +} + +local function kelp_on_place(itemstack, placer, pointed_thing) + if pointed_thing.type ~= "node" or not placer then + return itemstack + end + + local player_name = placer:get_player_name() + local pos_under = pointed_thing.under + local pos_above = pointed_thing.above + local node_under = minetest.get_node(pos_under) + local node_above = minetest.get_node(pos_above) + local def_under = minetest.registered_nodes[node_under.name] + local def_above = minetest.registered_nodes[node_above.name] + + if def_under and def_under.on_rightclick and not placer:get_player_control().sneak then + return def_under.on_rightclick(pos_under, node_under, + placer, itemstack, pointed_thing) or itemstack + end + + if pos_under.y >= pos_above.y then + return itemstack + end + + -- Placement rules: + -- Seagrass can only be placed on top of dirt inside water + local g_above_water = minetest.get_item_group(node_above.name, "water") + if not (g_above_water ~= 0 and def_above.liquidtype == "source") then + return itemstack + end + + if minetest.is_protected(pos_under, player_name) or + minetest.is_protected(pos_above, player_name) then + minetest.log("action", player_name + .. " tried to place " .. itemstack:get_name() + .. " at protected position " + .. minetest.pos_to_string(pos_under)) + minetest.record_protection_violation(pos_under, player_name) + return itemstack + end + + -- Select a kelp node + if node_under.name == "mcl_core:dirt" then + node_under.name = "mcl_ocean:kelp_dirt" + elseif node_under.name == "mcl_core:clay" then + node_under.name = "mcl_ocean:kelp_clay" + elseif node_under.name == "mcl_core:sand" then + node_under.name = "mcl_ocean:kelp_sand" + elseif node_under.name == "mcl_core:redsand" then + node_under.name = "mcl_ocean:kelp_redsand" + elseif node_under.name == "mcl_core:gravel" then + node_under.name = "mcl_ocean:kelp_gravel" + else + return itemstack + end + local def_node = minetest.registered_items[node_under.name] + if def_node.sounds then + minetest.sound_play(def_node.sounds.place, { gain = 0.5, pos = pos_under }) + end + node_under.param2 = minetest.registered_items[node_under.name].place_param2 or 16 + minetest.set_node(pos_under, node_under) + if not (minetest.settings:get_bool("creative_mode")) then + itemstack:take_item() + end + + return itemstack +end + +minetest.register_craftitem("mcl_ocean:kelp", { + description = S("Kelp"), + inventory_image = "mcl_ocean_kelp_item.png", + wield_image = "mcl_ocean_kelp_item.png", + on_place = kelp_on_place, +}) + +-- Kelp nodes: kelp on a surface node + +for s=1, #surfaces do + local def = minetest.registered_nodes[surfaces[s][2]] + local alt + if surfaces[s][3] == 1 then + alt = surfaces[s][2] + end + local sounds = table.copy(def.sounds) + local leaf_sounds = mcl_sounds.node_sound_leaves_defaults() + sounds.dig = leaf_sounds.dig + sounds.dug = leaf_sounds.dug + sounds.place = leaf_sounds.place + minetest.register_node("mcl_ocean:kelp_"..surfaces[s][1], { + drawtype = "plantlike_rooted", + paramtype = "light", + paramtype2 = "leveled", + place_param2 = 16, + tiles = def.tiles, + special_tiles = { + { + image = "mcl_ocean_kelp_plant.png", + animation = {type="vertical_frames", aspect_w=16, aspect_h=16, length=2.0}, + tileable_vertical = true, + } + }, + inventory_image = "("..def.tiles[1]..")^mcl_ocean_kelp_item.png", + wield_image = "mcl_ocean_kelp_item.png", + selection_box = { + type = "fixed", + fixed = { + { -0.5, -0.5, -0.5, 0.5, 0.5, 0.5 }, + { -0.5, 0.5, -0.5, 0.5, 1.5, 0.5 }, + }, + }, + groups = { dig_immediate = 3, deco_block = 1, plant = 1, kelp = 1, falling_node = surfaces[s][3] }, + sounds = sounds, + node_dig_prediction = surfaces[s][2], + after_dig_node = function(pos) + minetest.set_node(pos, {name=surfaces[s][2]}) + end, + drop = "mcl_ocean:kelp", + _mcl_falling_node_alternative = alt, + _mcl_hardness = 0, + _mcl_blast_resistance = 0, + }) +end + + +-- Dried kelp stuff + +-- TODO: This is supposed to be eaten very fast +minetest.register_craftitem("mcl_ocean:dried_kelp", { + description = S("Dried Kelp"), + inventory_image = "mcl_ocean_dried_kelp.png", + wield_image = "mcl_ocean_dried_kelp.png", + groups = { food = 2, eatable = 1 }, + on_place = minetest.item_eat(1), + on_secondary_use = minetest.item_eat(1), + groups = { food = 2, eatable = 1 }, + _mcl_saturation = 0.6, +}) + +local mod_screwdriver = minetest.get_modpath("screwdriver") ~= nil +local on_rotate +if mod_screwdriver then + on_rotate = screwdriver.rotate_3way +end + + +minetest.register_node("mcl_ocean:dried_kelp_block", { + description = S("Dried Kelp Block"), + tiles = { "mcl_ocean_dried_kelp_top.png", "mcl_ocean_dried_kelp_bottom.png", "mcl_ocean_dried_kelp_side.png" }, + groups = { handy = 1, building_block = 1, flammable = 2 }, + sounds = mcl_sounds.node_sound_leaves_defaults(), + paramtype2 = "facedir", + on_place = mcl_util.rotate_axis, + on_rotate = on_rotate, + _mcl_hardness = 0.5, + _mcl_blast_resistance = 12.5, +}) + +minetest.register_craft({ + type = "cooking", + recipe = "mcl_ocean:kelp", + output = "mcl_ocean:dried_kelp", + cooktime = 10, +}) +minetest.register_craft({ + recipe = { + { "mcl_ocean:dried_kelp","mcl_ocean:dried_kelp","mcl_ocean:dried_kelp" }, + { "mcl_ocean:dried_kelp","mcl_ocean:dried_kelp","mcl_ocean:dried_kelp" }, + { "mcl_ocean:dried_kelp","mcl_ocean:dried_kelp","mcl_ocean:dried_kelp" }, + }, + output = "mcl_ocean:dried_kelp_block", +}) +minetest.register_craft({ + type = "fuel", + recipe = "mcl_ocean:dried_kelp_block", + burntime = 200, +}) diff --git a/mods/ITEMS/mcl_ocean/seagrass.lua b/mods/ITEMS/mcl_ocean/seagrass.lua index adffac5f..74546be2 100644 --- a/mods/ITEMS/mcl_ocean/seagrass.lua +++ b/mods/ITEMS/mcl_ocean/seagrass.lua @@ -62,7 +62,7 @@ local function seagrass_on_place(itemstack, placer, pointed_thing) else return itemstack end - node_under.param2 = minetest.registered_items[itemstack:get_name()].place_param2 or 3 + node_under.param2 = minetest.registered_items[node_under.name].place_param2 or 3 if node_under.param2 < 8 and math.random(1,2) == 1 then -- Random horizontal displacement node_under.param2 = node_under.param2 + 8 diff --git a/mods/ITEMS/mcl_ocean/textures/mcl_ocean_dried_kelp.png b/mods/ITEMS/mcl_ocean/textures/mcl_ocean_dried_kelp.png new file mode 100644 index 0000000000000000000000000000000000000000..2d7879200d038ff90bbdc717d24890037a28a63b GIT binary patch literal 414 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7*pj^6T^PXNr}OT51_lPs z0*}aI1_r*vAk26?e?`sfV;(_KS$3{1ZNUr-jM|UzsSU#&F}8qbs*t+}U66dNa&%&$}M+_v}o*`8EtU?73H} zMl5-EZC5nMs(>FqrCc`@?3z>Sqvow)$IbA7(`J6^r?jRD6ShdNYpVhn1Xv~s+;vj$ zPBgw-Jfq!H=3dhkt|09zb3gvun06rL+yVP*?|k#Wt)Hl#_Um%EbZOV#pO@~#K& zXjRyH=&e=PGV?f5uDrsI*Z=>qr$$%ubsjWZGA$=~&#a}wM^ZM4T$&!Gma=VQcBAKK z1J0G9o94A^Zrd(;!n0DnPP(#ovZKxkmu&*}X2*_SeB5=?a^gppwY_VutPKfB2Zghz LtDnm{r-UW|jufZ@ literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_ocean/textures/mcl_ocean_dried_kelp_bottom.png b/mods/ITEMS/mcl_ocean/textures/mcl_ocean_dried_kelp_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..148ecfd3535223665e8ef08a8416a93c34fcf4c6 GIT binary patch literal 364 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4kiW$h6xih%orFL7>k44ofy`glX=O&z`&C3 z=qc&osq70%XlyPZ!4!3xD59-ds$MJTAYDb_u!&Opz3sd3R0P^S|pKaqCav z-MDgz-QB?Bo7R6n|G0FI=EtvRqpK+@pL-19@jZbZ2&wW*yp#1s3Ju%thQyupXN@%Z~d49pZr8}P=ai~;u zeN^Kwx#mJ859_t{%jT&l9zPj%BSc~$uUNy@P%A zGY*Ee#hch_ElLFhJtbFd;uQ?kYu3wtA^1IB+4g|`smgB?qrQD*zgW8Cr-BCeV+IBW N22WQ%mvv4FO#qHRiPr!C literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_ocean/textures/mcl_ocean_dried_kelp_side.png b/mods/ITEMS/mcl_ocean/textures/mcl_ocean_dried_kelp_side.png new file mode 100644 index 0000000000000000000000000000000000000000..71d1cb2ad6ab9d0a74fec78e813f508d34658882 GIT binary patch literal 360 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4kiW$h6xih%orFL7>k44ofy`glX=O&z`&C3 z=qc&osq70%XliPZ!4!3;*0nj$DTfL|m#RSv5P9LPVDCD1LfQx{9@Yo}*2Z z`^Tx`%QkWq&iHf2yDn+=-OBwhcRwu?U2LV1rE%_-<>hB3wlgha`V7^w`ZXEO@U0+-d0t$y@&SE@w!aq`^diem)*pZScaOXJ z<%~1p0-skKKE3p%;gVb5ye(6FD#O(7$oZT2dxpF}9HCP$lf9xL%kZE50S<>nY-f0M zE9W%a7T9$6fR3Pc`3#0x40%1vBJA?}l?8>DE|P56_nRSG=yvG}LAh!M1_lOCS3j3^ HP6k44ofy`glX=O&z`&C3 z=qc&osq70%XlyPZ!4!3xD59-ds$MJTAYDb_u!&Opz3sd3R0P^S|pKaqCav z-MDgz-QB?Bo7R6n|G0FI=EtvRqpK+@pL-19@jZbZ2&wW*yp#1s3Ju%thQyupXN@%Z~d49pZr8}P=ai~;u zeN^Kwx#mJ859_t{%jT&l9zPj%BSc~$uUNy@P%A zGY*Ee#hch_ElLFhJtbFd;uQ?kYu3wtA^1IB+4g|`smgB?qrQD*zgW8Cr-BCeV+IBW N22WQ%mvv4FO#qHRiPr!C literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_ocean/textures/mcl_ocean_kelp_item.png b/mods/ITEMS/mcl_ocean/textures/mcl_ocean_kelp_item.png new file mode 100644 index 0000000000000000000000000000000000000000..396f8b3efbe9409a097966bd185d76c43a263186 GIT binary patch literal 396 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7*pj^6T^PXNr}OT51_lPs z0*}aI1_r*vAk26?e?`sfV;(_KAsxjD$#)nS7$rSj978Nl_f9hGJLJIQ zx?kBSbNOSY%u5cdLJE3h6x|mrUhDJ|S04Z7llN_xrEf)t36R zXmgrgMa{va-AN2TcGfFzXWQhWQ*m8+zI05v`l(}W?Z=Bb90CNs$Cj%zHOy=~^5gYo znLV$Wl~>Np^Jvt$ZM9*B&%ql^$HY7rR7I>wTbb4Y~Kg uNe6$5i~gFB!E^6z!Lm(jBPCuqu8il{u!!xruv;i7R6Sk&T-G@yGywp9xT6LD literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_ocean/textures/mcl_ocean_kelp_plant.png b/mods/ITEMS/mcl_ocean/textures/mcl_ocean_kelp_plant.png new file mode 100644 index 0000000000000000000000000000000000000000..11eaf610a235a19df0abfe05406406b1aaaf835f GIT binary patch literal 2291 zcmeAS@N?(olHy`uVBq!ia0y~yU=UznU{v5>V_;y|`|ooF0|Ns~x}&cn1H;CC?mvmF z3=9mM1s;*b3=DjSL74G){)!X^1_p@|*NBqf{Irtt#G+J&g2c?c61}|C5(N`ILp{?J z_lO_{2982c7srr_xTTX%Pt-Xs$THtx#|NfQM}#%lTo!Qb2rN(78(}9scW&g}4bRh3 zzxJN+KmTXNpU3m)ED>yKwWx%*Njr7kK+J zAAJ|S;|)(-=fXP17haMd7xph-U!cMpRP&~WHL*92_t<^MI?mo0W9GEAjY;}vorE`B z%>2>l9sJd?cTRrZhYF*FvJLqs*_X^!wdq>8?D|)RP5$C0Cp=8Ea=-NYT;;iT^qGbj z$iGp~T1(dTCU4ub*wNQt__zj}+#H^77kf0{y^?MElDY1&q7NnPyT~xR0Ls{o?YAZ7O_w4U*2?t1eU4FFtqhriY!xN|ez90(_pB}Z zRi~MFe7v!TuSIgMCGWDf`*x|OOlRGi_XM0db5E`RX~Dy#fyPz$wlArcdh#GgMSiB) z?_2E?XC=LDyb@P?L1FRL6J62F4hvQ+%WDYKnPuQ}|ICc*i@kic7cYOf>&=T-tJq!_ zG_l*KUbwpAL!eIRftY&c{*dOex0 z$n!v+m|qe>Gm>M=uCOmV8~H7Tg)r>{tDn#P%bv_Vr^XHBWw6tYJsb;+qXv= z>oTt%%iOWOeAg`zo32KXeWsod7e}mW*!ho5ZYA59l&Ldi>)8{YWU)x}vVHX~aqIi4 z5IBde>#eiyQ>SIq1Y?ZtrJg*FxxRVYuLD~wPuul;SgK`0GaX&bSfX|{LDsLtRI5g$Ta9bRXY&tTSqJ7s_U>;y za^h-6*0)8wFKEQxb^GN$ri{)midIwSE>?J3!tQPFmIc#)2)yQ&oE8CiWwq>*Wi_X@5 zd*T$Awq%aGp+?Yz%+2#o?Fk4zBbQNNvXU*q?L$TaCn$&1HCDchzSM9tj^X#L#BQhF zhONo+wZ>PkO1^nJb)_X&U($sJ_sGSE7DxPP`8lK1?4zjU#G5_KjG}vDc+V8sRyDg# zJ2-En-qR_wBKH^>Z2hHiJ()A^#|+EGR@;*vHa6EvO<4F_+0?Z+5|5 zG>n={Kf0Rcdon*;Gq-k{#i9V^gts@`&zG=O|316YlFMyl#(~9a0v`tINZd$eJ+r>f z!PE3a&n~0ro;4HI(oX&om5OAm_SL^}WbfYuF)4w)XC0XJvZuuKvrU+uIjMNo-4BiZ zoARy&&lJzxTL>3?f-9Yh-`Fn7z_) z?!kL;Gk2|ipuxslF~wBNri*o9Y}kQ0zBR6<3Fp=) zlpG|8H&#w<1tq4JsWpf7<4WUt z=D0~2`1{89-Z|}>ek9{)z+BPW?2F{RPqIs1{i(qwS8_;ZPVW=vOXq~-j!sIwB6me@ z>k`H*C;HVmWMW^f-?T#QcSWG_pMcoiFE}ivc~^N#%?Q+Po7|Z6UD@pZp~=HuZ}~K5Bh+%XRyfiwkBgX_VZWbV0$_ zB;ZZml4Uavxo^xkG;8PUqsneR4l6I(CpcJ%xSW}Efqv1?lS!d+6f^4iK+S29ThTfK4uEN)1<>dkcT94n-=6IdIKAx$Vz6$v4k2XII*W z^O3mVmaS0py<-8<=A@Z%flo#MN`TyprBaiIBR!_AF)R=a*}nzA_J)59z6%9<+< zZT!Y{=$CZD-&+nQMSJ=7A6W4_iCbSHZ6W847h!YGxviOKdc!@u=D@8JnMXeCJL+Ct z{nL8+O^@CQY` Date: Wed, 18 Dec 2019 03:10:49 +0100 Subject: [PATCH 441/737] Tweak drop behavior of ocean plants --- mods/ENTITIES/mcl_item_entity/init.lua | 8 +++++++- mods/ITEMS/mcl_ocean/kelp.lua | 1 + mods/ITEMS/mcl_ocean/seagrass.lua | 5 +++-- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/mods/ENTITIES/mcl_item_entity/init.lua b/mods/ENTITIES/mcl_item_entity/init.lua index c5d12d4e..8ee1c955 100644 --- a/mods/ENTITIES/mcl_item_entity/init.lua +++ b/mods/ENTITIES/mcl_item_entity/init.lua @@ -254,7 +254,13 @@ function minetest.handle_node_drops(pos, drops, digger) local drop_item = ItemStack(item) drop_item:set_count(1) for i=1,count do - local obj = core.add_item(pos, drop_item) + local dpos = table.copy(pos) + -- Apply offset for plantlike_rooted nodes because of their special shape + if nodedef and nodedef.drawtype == "plantlike_rooted" and nodedef.walkable then + dpos.y = dpos.y + 1 + end + -- Spawn item and apply random speed + local obj = core.add_item(dpos, drop_item) if obj ~= nil then local x = math.random(1, 5) if math.random(1,2) == 1 then diff --git a/mods/ITEMS/mcl_ocean/kelp.lua b/mods/ITEMS/mcl_ocean/kelp.lua index 4404d907..50be1aba 100644 --- a/mods/ITEMS/mcl_ocean/kelp.lua +++ b/mods/ITEMS/mcl_ocean/kelp.lua @@ -80,6 +80,7 @@ minetest.register_craftitem("mcl_ocean:kelp", { inventory_image = "mcl_ocean_kelp_item.png", wield_image = "mcl_ocean_kelp_item.png", on_place = kelp_on_place, + groups = { deco_block = 1 }, }) -- Kelp nodes: kelp on a surface node diff --git a/mods/ITEMS/mcl_ocean/seagrass.lua b/mods/ITEMS/mcl_ocean/seagrass.lua index 74546be2..e02bd098 100644 --- a/mods/ITEMS/mcl_ocean/seagrass.lua +++ b/mods/ITEMS/mcl_ocean/seagrass.lua @@ -84,6 +84,7 @@ minetest.register_craftitem("mcl_ocean:seagrass", { inventory_image = "mcl_ocean_seagrass.png^[verticalframe:12:0", wield_image = "mcl_ocean_seagrass.png^[verticalframe:12:0", on_place = seagrass_on_place, + groups = { deco_block = 1 }, }) -- Seagrass nodes: seagrass on a surface node @@ -120,7 +121,7 @@ for s=1, #surfaces do { -0.5, 0.5, -0.5, 0.5, 1.3, 0.5 }, }, }, - groups = { dig_immediate = 3, deco_block = 1, plant = 1, seagrass = 1, falling_node = surfaces[s][3] }, + groups = { handy = 1, shearsy = 1, deco_block = 1, plant = 1, seagrass = 1, falling_node = surfaces[s][3] }, sounds = sounds, node_dig_prediction = surfaces[s][2], after_dig_node = function(pos) @@ -128,7 +129,7 @@ for s=1, #surfaces do end, drop = "", _mcl_falling_node_alternative = alt, - _mcl_shears_drop = true, + _mcl_shears_drop = { "mcl_ocean:seagrass" }, _mcl_hardness = 0, _mcl_blast_resistance = 0, }) From d1f3856de8fcd3a64646bfafeff5a059538460c0 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Wed, 18 Dec 2019 03:42:18 +0100 Subject: [PATCH 442/737] Implement help page for seagrass --- mods/ITEMS/mcl_ocean/seagrass.lua | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_ocean/seagrass.lua b/mods/ITEMS/mcl_ocean/seagrass.lua index e02bd098..d3242361 100644 --- a/mods/ITEMS/mcl_ocean/seagrass.lua +++ b/mods/ITEMS/mcl_ocean/seagrass.lua @@ -81,6 +81,7 @@ end minetest.register_craftitem("mcl_ocean:seagrass", { description = S("Seagrass"), + _doc_items_create_entry = false, inventory_image = "mcl_ocean_seagrass.png^[verticalframe:12:0", wield_image = "mcl_ocean_seagrass.png^[verticalframe:12:0", on_place = seagrass_on_place, @@ -100,7 +101,20 @@ for s=1, #surfaces do sounds.dig = leaf_sounds.dig sounds.dug = leaf_sounds.dug sounds.place = leaf_sounds.place + local doc_longdesc, doc_hide, doc_img, desc + if surfaces[s][1] == "dirt" then + doc_longdesc = S("Seagrass grows inside water on top of dirt, sand, clay or gravel.") + desc = S("Seagrass") + doc_create = true + doc_img = "mcl_ocean_seagrass.png" + else + doc_create = false + end minetest.register_node("mcl_ocean:seagrass_"..surfaces[s][1], { + _doc_items_entry_name = desc, + _doc_items_longdesc = doc_longdesc, + _doc_items_create_entry = doc_create, + _doc_items_image = "mcl_ocean_seagrass.png^[verticalframe:12:0", drawtype = "plantlike_rooted", paramtype = "light", paramtype2 = "meshoptions", @@ -121,7 +135,7 @@ for s=1, #surfaces do { -0.5, 0.5, -0.5, 0.5, 1.3, 0.5 }, }, }, - groups = { handy = 1, shearsy = 1, deco_block = 1, plant = 1, seagrass = 1, falling_node = surfaces[s][3] }, + groups = { handy = 1, shearsy = 1, deco_block = 1, plant = 1, seagrass = 1, falling_node = surfaces[s][3], not_in_creative_inventory = 1 }, sounds = sounds, node_dig_prediction = surfaces[s][2], after_dig_node = function(pos) @@ -133,4 +147,9 @@ for s=1, #surfaces do _mcl_hardness = 0, _mcl_blast_resistance = 0, }) + if surfaces[s][1] ~= "dirt" then + doc.add_entry_alias("nodes", "mcl_ocean:seagrass_dirt", "nodes", "mcl_ocean:seagrass_"..surfaces[s][1]) + end end + +doc.add_entry_alias("nodes", "mcl_ocean:seagrass_dirt", "craftitems", "mcl_ocean:seagrass") From ee5e50f139fec484dfbc17f4fb8b50bdc4cc8110 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Wed, 18 Dec 2019 04:28:47 +0100 Subject: [PATCH 443/737] Remove clay variant for kelp and seagrass --- mods/ITEMS/mcl_ocean/kelp.lua | 3 --- mods/ITEMS/mcl_ocean/seagrass.lua | 5 +---- 2 files changed, 1 insertion(+), 7 deletions(-) diff --git a/mods/ITEMS/mcl_ocean/kelp.lua b/mods/ITEMS/mcl_ocean/kelp.lua index 50be1aba..c02bc60a 100644 --- a/mods/ITEMS/mcl_ocean/kelp.lua +++ b/mods/ITEMS/mcl_ocean/kelp.lua @@ -3,7 +3,6 @@ local S = minetest.get_translator("mcl_ocean") -- List of supported surfaces for seagrass and kelp local surfaces = { { "dirt", "mcl_core:dirt" }, - { "clay", "mcl_core:clay" }, { "sand", "mcl_core:sand", 1 }, { "redsand", "mcl_core:redsand", 1 }, { "gravel", "mcl_core:gravel", 1 }, @@ -51,8 +50,6 @@ local function kelp_on_place(itemstack, placer, pointed_thing) -- Select a kelp node if node_under.name == "mcl_core:dirt" then node_under.name = "mcl_ocean:kelp_dirt" - elseif node_under.name == "mcl_core:clay" then - node_under.name = "mcl_ocean:kelp_clay" elseif node_under.name == "mcl_core:sand" then node_under.name = "mcl_ocean:kelp_sand" elseif node_under.name == "mcl_core:redsand" then diff --git a/mods/ITEMS/mcl_ocean/seagrass.lua b/mods/ITEMS/mcl_ocean/seagrass.lua index d3242361..07019f38 100644 --- a/mods/ITEMS/mcl_ocean/seagrass.lua +++ b/mods/ITEMS/mcl_ocean/seagrass.lua @@ -3,7 +3,6 @@ local S = minetest.get_translator("mcl_ocean") -- List of supported surfaces for seagrass local surfaces = { { "dirt", "mcl_core:dirt" }, - { "clay", "mcl_core:clay" }, { "sand", "mcl_core:sand", 1 }, { "redsand", "mcl_core:redsand", 1 }, { "gravel", "mcl_core:gravel", 1 }, @@ -51,8 +50,6 @@ local function seagrass_on_place(itemstack, placer, pointed_thing) -- Select a seagrass node if node_under.name == "mcl_core:dirt" then node_under.name = "mcl_ocean:seagrass_dirt" - elseif node_under.name == "mcl_core:clay" then - node_under.name = "mcl_ocean:seagrass_clay" elseif node_under.name == "mcl_core:sand" then node_under.name = "mcl_ocean:seagrass_sand" elseif node_under.name == "mcl_core:redsand" then @@ -103,7 +100,7 @@ for s=1, #surfaces do sounds.place = leaf_sounds.place local doc_longdesc, doc_hide, doc_img, desc if surfaces[s][1] == "dirt" then - doc_longdesc = S("Seagrass grows inside water on top of dirt, sand, clay or gravel.") + doc_longdesc = S("Seagrass grows inside water on top of dirt, sand or gravel.") desc = S("Seagrass") doc_create = true doc_img = "mcl_ocean_seagrass.png" From 3658cfc0f16e43b7c52f38eecf47890f815d57fc Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Wed, 18 Dec 2019 12:43:17 +0100 Subject: [PATCH 444/737] Add help texts for the new ocean plants --- mods/ITEMS/mcl_ocean/corals.lua | 20 ++++++++++++++++++++ mods/ITEMS/mcl_ocean/depends.txt | 3 ++- mods/ITEMS/mcl_ocean/kelp.lua | 24 ++++++++++++++++++++++++ mods/ITEMS/mcl_ocean/seagrass.lua | 9 ++++++--- 4 files changed, 52 insertions(+), 4 deletions(-) diff --git a/mods/ITEMS/mcl_ocean/corals.lua b/mods/ITEMS/mcl_ocean/corals.lua index 14546b4b..758a9c4d 100644 --- a/mods/ITEMS/mcl_ocean/corals.lua +++ b/mods/ITEMS/mcl_ocean/corals.lua @@ -1,4 +1,5 @@ local S = minetest.get_translator("mcl_ocean") +local mod_doc = minetest.get_modpath("doc") ~= nil local corals = { { "tube", S("Tube Coral Block"), S("Dead Tube Coral Block"), S("Tube Coral"), S("Dead Tube Coral"), S("Tube Coral Fan"), S("Dead Tube Coral Fan") }, @@ -72,9 +73,14 @@ local sounds_coral_plant = mcl_sounds.node_sound_leaves_defaults({footstep = mcl for c=1, #corals do local id = corals[c][1] + local doc_desc_block = S("Coral blocks live in the oceans and need a water soure next to them to survive. Without water, they die off.") + local doc_desc_coral = S("Corals grow on top of coral blocks and need to be inside a water source to survive. Without water, it will die off, as well as the coral block below.") + local doc_desc_fan = S("Corals fans grow on top of coral blocks and need to be inside a water source to survive. Without water, it will die off, as well as the coral block below.") + -- Coral Block minetest.register_node("mcl_ocean:"..id.."_coral_block", { description = corals[c][2], + _doc_items_longdesc = doc_desc_block, tiles = { "mcl_ocean_"..id.."_coral_block.png" }, groups = { pickaxey = 1, building_block = 1, coral=1, coral_block=1, coral_species=c, }, sounds = mcl_sounds.node_sound_dirt_defaults(), @@ -84,6 +90,7 @@ for c=1, #corals do }) minetest.register_node("mcl_ocean:dead_"..id.."_coral_block", { description = corals[c][3], + _doc_items_create_entry = false, tiles = { "mcl_ocean_dead_"..id.."_coral_block.png" }, groups = { pickaxey = 1, building_block = 1, coral=2, coral_block=2, coral_species=c, }, sounds = mcl_sounds.node_sound_dirt_defaults(), @@ -94,6 +101,7 @@ for c=1, #corals do -- Coral minetest.register_node("mcl_ocean:"..id.."_coral", { description = corals[c][4], + _doc_items_longdesc = doc_desc_coral, drawtype = "plantlike_rooted", paramtype = "light", paramtype2 = "meshoptions", @@ -125,6 +133,7 @@ for c=1, #corals do }) minetest.register_node("mcl_ocean:dead_"..id.."_coral", { description = corals[c][5], + _doc_items_create_entry = false, drawtype = "plantlike_rooted", paramtype = "light", paramtype2 = "meshoptions", @@ -157,6 +166,7 @@ for c=1, #corals do -- Coral Fan minetest.register_node("mcl_ocean:"..id.."_coral_fan", { description = corals[c][6], + _doc_items_longdesc = doc_desc_fan, drawtype = "plantlike_rooted", paramtype = "light", paramtype2 = "meshoptions", @@ -188,6 +198,7 @@ for c=1, #corals do }) minetest.register_node("mcl_ocean:dead_"..id.."_coral_fan", { description = corals[c][7], + _doc_items_create_entry = false, drawtype = "plantlike_rooted", paramtype = "light", paramtype2 = "meshoptions", @@ -216,6 +227,15 @@ for c=1, #corals do _mcl_hardness = 0, _mcl_blast_resistance = 0, }) + + if mod_doc then + doc.add_entry_alias("nodes", "mcl_ocean:"..id.."_coral", "nodes", "mcl_ocean:"..id.."_coral") + doc.add_entry_alias("nodes", "mcl_ocean:"..id.."_coral_fan", "nodes", "mcl_ocean:"..id.."_coral_fan") + doc.add_entry_alias("nodes", "mcl_ocean:"..id.."_coral_block", "nodes", "mcl_ocean:"..id.."_coral_block") + doc.add_entry_alias("nodes", "mcl_ocean:"..id.."_coral", "nodes", "mcl_ocean:dead_"..id.."_coral") + doc.add_entry_alias("nodes", "mcl_ocean:"..id.."_coral_fan", "nodes", "mcl_ocean:dead_"..id.."_coral_fan") + doc.add_entry_alias("nodes", "mcl_ocean:"..id.."_coral_block", "nodes", "mcl_ocean:dead_"..id.."_coral_block") + end end -- Turn corals and coral fans to dead corals if not inside a water source diff --git a/mods/ITEMS/mcl_ocean/depends.txt b/mods/ITEMS/mcl_ocean/depends.txt index d950d607..66908e83 100644 --- a/mods/ITEMS/mcl_ocean/depends.txt +++ b/mods/ITEMS/mcl_ocean/depends.txt @@ -1,5 +1,6 @@ mcl_core mcl_sounds mcl_dye -doc_items +doc? +doc_items? screwdriver? diff --git a/mods/ITEMS/mcl_ocean/kelp.lua b/mods/ITEMS/mcl_ocean/kelp.lua index c02bc60a..61fdf72b 100644 --- a/mods/ITEMS/mcl_ocean/kelp.lua +++ b/mods/ITEMS/mcl_ocean/kelp.lua @@ -1,4 +1,5 @@ local S = minetest.get_translator("mcl_ocean") +local mod_doc = minetest.get_modpath("doc") ~= nil -- List of supported surfaces for seagrass and kelp local surfaces = { @@ -74,6 +75,7 @@ end minetest.register_craftitem("mcl_ocean:kelp", { description = S("Kelp"), + _doc_items_create_entry = false, inventory_image = "mcl_ocean_kelp_item.png", wield_image = "mcl_ocean_kelp_item.png", on_place = kelp_on_place, @@ -93,7 +95,20 @@ for s=1, #surfaces do sounds.dig = leaf_sounds.dig sounds.dug = leaf_sounds.dug sounds.place = leaf_sounds.place + local doc_longdesc, doc_img, desc + if surfaces[s][1] == "dirt" then + doc_longdesc = S("Kelp grows inside water on top of dirt, sand or gravel.") + desc = S("Kelp") + doc_create = true + doc_img = "mcl_ocean_kelp_item.png" + else + doc_create = false + end minetest.register_node("mcl_ocean:kelp_"..surfaces[s][1], { + _doc_items_entry_name = desc, + _doc_items_longdesc = doc_longdesc, + _doc_items_create_entry = doc_create, + _doc_items_image = doc_img, drawtype = "plantlike_rooted", paramtype = "light", paramtype2 = "leveled", @@ -126,14 +141,22 @@ for s=1, #surfaces do _mcl_hardness = 0, _mcl_blast_resistance = 0, }) + + if mod_doc and surfaces[s][1] ~= "dirt" then + doc.add_entry_alias("nodes", "mcl_ocean:kelp_dirt", "nodes", "mcl_ocean:kelp_"..surfaces[s][1]) + end end +if mod_doc then + doc.add_entry_alias("nodes", "mcl_ocean:kelp_dirt", "craftitems", "mcl_ocean:kelp") +end -- Dried kelp stuff -- TODO: This is supposed to be eaten very fast minetest.register_craftitem("mcl_ocean:dried_kelp", { description = S("Dried Kelp"), + _doc_items_longdesc = S("Dried kelp is a food item."), inventory_image = "mcl_ocean_dried_kelp.png", wield_image = "mcl_ocean_dried_kelp.png", groups = { food = 2, eatable = 1 }, @@ -152,6 +175,7 @@ end minetest.register_node("mcl_ocean:dried_kelp_block", { description = S("Dried Kelp Block"), + _doc_items_longdesc = S("A decorative block that serves as a great furnace fuel."), tiles = { "mcl_ocean_dried_kelp_top.png", "mcl_ocean_dried_kelp_bottom.png", "mcl_ocean_dried_kelp_side.png" }, groups = { handy = 1, building_block = 1, flammable = 2 }, sounds = mcl_sounds.node_sound_leaves_defaults(), diff --git a/mods/ITEMS/mcl_ocean/seagrass.lua b/mods/ITEMS/mcl_ocean/seagrass.lua index 07019f38..55435ad8 100644 --- a/mods/ITEMS/mcl_ocean/seagrass.lua +++ b/mods/ITEMS/mcl_ocean/seagrass.lua @@ -1,4 +1,5 @@ local S = minetest.get_translator("mcl_ocean") +local mod_doc = minetest.get_modpath("doc") ~= nil -- List of supported surfaces for seagrass local surfaces = { @@ -98,7 +99,7 @@ for s=1, #surfaces do sounds.dig = leaf_sounds.dig sounds.dug = leaf_sounds.dug sounds.place = leaf_sounds.place - local doc_longdesc, doc_hide, doc_img, desc + local doc_longdesc, doc_img, desc if surfaces[s][1] == "dirt" then doc_longdesc = S("Seagrass grows inside water on top of dirt, sand or gravel.") desc = S("Seagrass") @@ -144,9 +145,11 @@ for s=1, #surfaces do _mcl_hardness = 0, _mcl_blast_resistance = 0, }) - if surfaces[s][1] ~= "dirt" then + if mod_doc and surfaces[s][1] ~= "dirt" then doc.add_entry_alias("nodes", "mcl_ocean:seagrass_dirt", "nodes", "mcl_ocean:seagrass_"..surfaces[s][1]) end end -doc.add_entry_alias("nodes", "mcl_ocean:seagrass_dirt", "craftitems", "mcl_ocean:seagrass") +if mod_doc then + doc.add_entry_alias("nodes", "mcl_ocean:seagrass_dirt", "craftitems", "mcl_ocean:seagrass") +end From 286009cbd7cff9450583d0cbf0e2485179a19ade Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Wed, 18 Dec 2019 13:37:20 +0100 Subject: [PATCH 445/737] Can place kelp on kelp --- mods/ITEMS/mcl_ocean/kelp.lua | 56 +++++++++++++++++++++++++++-------- 1 file changed, 43 insertions(+), 13 deletions(-) diff --git a/mods/ITEMS/mcl_ocean/kelp.lua b/mods/ITEMS/mcl_ocean/kelp.lua index 61fdf72b..d410a4aa 100644 --- a/mods/ITEMS/mcl_ocean/kelp.lua +++ b/mods/ITEMS/mcl_ocean/kelp.lua @@ -27,17 +27,6 @@ local function kelp_on_place(itemstack, placer, pointed_thing) placer, itemstack, pointed_thing) or itemstack end - if pos_under.y >= pos_above.y then - return itemstack - end - - -- Placement rules: - -- Seagrass can only be placed on top of dirt inside water - local g_above_water = minetest.get_item_group(node_above.name, "water") - if not (g_above_water ~= 0 and def_above.liquidtype == "source") then - return itemstack - end - if minetest.is_protected(pos_under, player_name) or minetest.is_protected(pos_above, player_name) then minetest.log("action", player_name @@ -48,7 +37,8 @@ local function kelp_on_place(itemstack, placer, pointed_thing) return itemstack end - -- Select a kelp node + local grow_kelp = false + -- Select a kelp node when placed on surface node if node_under.name == "mcl_core:dirt" then node_under.name = "mcl_ocean:kelp_dirt" elseif node_under.name == "mcl_core:sand" then @@ -57,14 +47,54 @@ local function kelp_on_place(itemstack, placer, pointed_thing) node_under.name = "mcl_ocean:kelp_redsand" elseif node_under.name == "mcl_core:gravel" then node_under.name = "mcl_ocean:kelp_gravel" + elseif minetest.get_item_group(node_under.name, "kelp") == 1 then + -- Place kelp on kelp = grow kelp by 1 node length + if node_under.param2 < 240 then + node_under.param2 = node_under.param2 + 16 + grow_kelp = true + else + return itemstack + end else return itemstack end + if grow_kelp then + -- Kelp placed on kelp ... + -- Kelp can be placed on top of another kelp to make it grow + if pos_under.y >= pos_above.y or pos_under.x ~= pos_above.x or pos_under.z ~= pos_above.z then + -- Placed on side or below node, abort + return itemstack + end + -- New kelp top must also be submerged in water + local size = math.ceil(node_under.param2 / 16) + minetest.log("error", node_under.param2.."|"..size) + local pos_water = table.copy(pos_under) + pos_water.y = pos_water.y + size + local node_water = minetest.get_node(pos_water) + local def_water = minetest.registered_nodes[node_water.name] + if not (minetest.get_item_group(node_water.name, "water") and def_water.liquidtype == "source") then + -- Not submerged in water, abort + return itemstack + end + + else + -- New kelp placed ... + if pos_under.y >= pos_above.y then + -- Placed on side or below node, abort + return itemstack + end + -- Kelp can be placed inside a water source on top of a surface node + local g_above_water = minetest.get_item_group(node_above.name, "water") + if not (g_above_water ~= 0 and def_above.liquidtype == "source") then + return itemstack + end + node_under.param2 = minetest.registered_items[node_under.name].place_param2 or 16 + end + -- Place or grow kelp local def_node = minetest.registered_items[node_under.name] if def_node.sounds then minetest.sound_play(def_node.sounds.place, { gain = 0.5, pos = pos_under }) end - node_under.param2 = minetest.registered_items[node_under.name].place_param2 or 16 minetest.set_node(pos_under, node_under) if not (minetest.settings:get_bool("creative_mode")) then itemstack:take_item() From 85c058125cce036d50b6a071b006d84353354897 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Wed, 18 Dec 2019 15:06:35 +0100 Subject: [PATCH 446/737] Add kelp growth --- mods/ITEMS/mcl_ocean/kelp.lua | 85 +++++++++++++++++++++++++++++------ 1 file changed, 71 insertions(+), 14 deletions(-) diff --git a/mods/ITEMS/mcl_ocean/kelp.lua b/mods/ITEMS/mcl_ocean/kelp.lua index d410a4aa..1b41183a 100644 --- a/mods/ITEMS/mcl_ocean/kelp.lua +++ b/mods/ITEMS/mcl_ocean/kelp.lua @@ -9,6 +9,38 @@ local surfaces = { { "gravel", "mcl_core:gravel", 1 }, } +local function get_kelp_top(pos, node) + local size = math.ceil(node.param2 / 16) + local pos_water = table.copy(pos) + pos_water.y = pos_water.y + size + return pos_water, minetest.get_node(pos_water) +end + +local function get_submerged(node_water) + local def_water = minetest.registered_nodes[node_water.name] + -- Submerged in water? + if minetest.get_item_group(node_water.name, "water") then + if def_water.liquidtype == "source" then + return "source" + elseif def_water.liquidtype == "flowing" then + return "flowing" + end + end + return false +end + +local function grow_param2_step(param2, snap_into_grid) + local old_param2 = param2 + param2 = param2 + 16 + if param2 > 240 then + param2 = 240 + end + if snap_into_grid and (param2 % 16 ~= 0) then + param2 = param2 - (param2 % 16) + end + return param2, param2 ~= old_param2 +end + local function kelp_on_place(itemstack, placer, pointed_thing) if pointed_thing.type ~= "node" or not placer then return itemstack @@ -49,15 +81,14 @@ local function kelp_on_place(itemstack, placer, pointed_thing) node_under.name = "mcl_ocean:kelp_gravel" elseif minetest.get_item_group(node_under.name, "kelp") == 1 then -- Place kelp on kelp = grow kelp by 1 node length - if node_under.param2 < 240 then - node_under.param2 = node_under.param2 + 16 - grow_kelp = true - else + node_under.param2, grow_kelp = grow_param2_step(node_under.param2) + if not grow_kelp then return itemstack end else return itemstack end + local submerged = false if grow_kelp then -- Kelp placed on kelp ... -- Kelp can be placed on top of another kelp to make it grow @@ -65,18 +96,13 @@ local function kelp_on_place(itemstack, placer, pointed_thing) -- Placed on side or below node, abort return itemstack end - -- New kelp top must also be submerged in water - local size = math.ceil(node_under.param2 / 16) - minetest.log("error", node_under.param2.."|"..size) - local pos_water = table.copy(pos_under) - pos_water.y = pos_water.y + size - local node_water = minetest.get_node(pos_water) - local def_water = minetest.registered_nodes[node_water.name] - if not (minetest.get_item_group(node_water.name, "water") and def_water.liquidtype == "source") then - -- Not submerged in water, abort + -- New kelp top must also be submerged in water source + local _, top_node = get_kelp_top(pos_under, node_under) + submerged = get_submerged(top_node) + if submerged ~= "source" then + -- Not submerged in water source, abort return itemstack end - else -- New kelp placed ... if pos_under.y >= pos_above.y then @@ -87,6 +113,7 @@ local function kelp_on_place(itemstack, placer, pointed_thing) local g_above_water = minetest.get_item_group(node_above.name, "water") if not (g_above_water ~= 0 and def_above.liquidtype == "source") then return itemstack + -- TODO: Also allow placement into downwards flowing liquid end node_under.param2 = minetest.registered_items[node_under.name].place_param2 or 16 end @@ -235,3 +262,33 @@ minetest.register_craft({ recipe = "mcl_ocean:dried_kelp_block", burntime = 200, }) + +-- Grow kelp +minetest.register_abm({ + label = "Kelp growth", + nodenames = { "group:kelp" }, + interval = 45, + chance = 12, + catch_up = false, + action = function(pos, node, active_object_count, active_object_count_wider) + local grown + -- Grow kelp by 1 node length if it would grow inside water + node.param2, grown = grow_param2_step(node.param2, true) + local top, top_node = get_kelp_top(pos, node) + local submerged = get_submerged(top_node) + if grown then + if submerged == "source" then + -- Liquid source: Grow normally + minetest.set_node(pos, node) + elseif submerged == "flowing" then + -- Flowing liquid: Grow 1 step, but also turn the top node into a liquid source + minetest.set_node(pos, node) + local def_liq = minetest.registered_nodes[top_node.name] + local alt_liq = def_liq and def_liq.liquid_alternative_source + if alt_liq then + minetest.set_node(top, {name=alt_liq}) + end + end + end + end, +}) From e0e73b8ee839c0aa54bad70c904c9aeb8f6c25e8 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Wed, 18 Dec 2019 18:42:04 +0100 Subject: [PATCH 447/737] Add basic seagrass/kelp mapgen --- mods/MAPGEN/mcl_biomes/depends.txt | 1 + mods/MAPGEN/mcl_biomes/init.lua | 59 ++++++++++++++++++++++++++++-- 2 files changed, 56 insertions(+), 4 deletions(-) diff --git a/mods/MAPGEN/mcl_biomes/depends.txt b/mods/MAPGEN/mcl_biomes/depends.txt index 4ec3afae..dd21ef64 100644 --- a/mods/MAPGEN/mcl_biomes/depends.txt +++ b/mods/MAPGEN/mcl_biomes/depends.txt @@ -4,3 +4,4 @@ mcl_worlds mcl_farming mcl_flowers mcl_end +mcl_ocean diff --git a/mods/MAPGEN/mcl_biomes/init.lua b/mods/MAPGEN/mcl_biomes/init.lua index 80e116ae..10f71696 100644 --- a/mods/MAPGEN/mcl_biomes/init.lua +++ b/mods/MAPGEN/mcl_biomes/init.lua @@ -15,6 +15,10 @@ local deco_id_chorus_plant -- Register biomes -- +local OCEAN_MIN = -15 +local DEEP_OCEAN_MAX = OCEAN_MIN - 1 +local DEEP_OCEAN_MIN = -31 + --[[ Special biome field: _mcl_biome_type: Rough categorization of biomes: One of "snowy", "cold", "medium" and "hot" Based off ]] @@ -119,10 +123,6 @@ local function register_biomes() "MesaPlateauFM", } - local OCEAN_MIN = -15 - local DEEP_OCEAN_MAX = OCEAN_MIN - 1 - local DEEP_OCEAN_MIN = -31 - -- Ice Plains Spikes (rare) minetest.register_biome({ name = "IcePlainsSpikes", @@ -2172,6 +2172,50 @@ local function register_grass_decoration(grasstype, offset, scale, biomes) end end +local function register_seagrass_decoration(grasstype, offset, scale, biomes) + local seed, nodes, surfaces, param2, param2_max, y_max + if grasstype == "seagrass" then + seed = 16 + surfaces = { "mcl_core:dirt", "mcl_core:sand", "mcl_core:gravel", "mcl_core:redsand" } + nodes = { "mcl_ocean:seagrass_dirt", "mcl_ocean:seagrass_sand", "mcl_ocean:seagrass_gravel", "mcl_ocean:seagrass_redsand" } + y_max = 0 + elseif grasstype == "kelp" then + seed = 32 + param2 = 16 + param2_max = 96 + surfaces = { "mcl_core:dirt", "mcl_core:sand", "mcl_core:gravel" } + nodes = { "mcl_ocean:kelp_dirt", "mcl_ocean:kelp_sand", "mcl_ocean:kelp_gravel" } + y_max = -6 + end + local noise = { + offset = offset, + scale = scale, + spread = {x = 100, y = 100, z = 100}, + seed = seed, + octaves = 3, + persist = 0.6, + } + + for s=1, #surfaces do + minetest.register_decoration({ + deco_type = "simple", + place_on = { surfaces[s] }, + sidelen = 16, + noise_params = noise, + biomes = biomes, + y_min = OCEAN_MIN, + y_max = y_max, + decoration = nodes[s], + param2 = param2, + param2_max = param2_max, + place_offset_y = -1, + flags = "force_placement", + }) + end +end + + + local function register_decorations() -- Large ice spike minetest.register_decoration({ @@ -2440,6 +2484,7 @@ local function register_decorations() flags = "place_center_x, place_center_z", rotation = "random", }) + -- Swamp oak minetest.register_decoration({ deco_type = "schematic", @@ -3474,6 +3519,12 @@ local function register_decorations() register_grass_decoration("fern", 0.09, -0.03, fern_Jungle) register_grass_decoration("fern", 0.12, -0.03, fern_JungleM) + local b_seagrass = {"ColdTaiga_ocean","ExtremeHills_ocean","ExtremeHillsM_ocean","ExtremeHills+_ocean","Taiga_ocean","MegaTaiga_ocean","MegaSpruceTaiga_ocean","StoneBeach_ocean","Plains_ocean","SunflowerPlains_ocean","Forest_ocean","FlowerForest_ocean","BirchForest_ocean","BirchForestM_ocean","RoofedForest_ocean","Swampland_ocean","Jungle_ocean","JungleM_ocean","JungleEdge_ocean","JungleEdgeM_ocean","MushroomIsland_ocean","Desert_ocean","Savanna_ocean","SavannaM_ocean","Mesa_ocean","MesaBryce_ocean","MesaPlateauF_ocean","MesaPlateauFM_ocean","Mesa_sandlevel","MesaBryce_sandlevel","MesaPlateauF_sandlevel","MesaPlateauFM_sandlevel","Swampland_shore","Jungle_shore","JungleM_shore","Savanna_beach","FlowerForest_beach","ColdTaiga_beach_water","ExtremeHills_beach"} + local b_kelp = {"ExtremeHillsM_ocean","ExtremeHills+_ocean","MegaTaiga_ocean","MegaSpruceTaiga_ocean","Plains_ocean","SunflowerPlains_ocean","Forest_ocean","FlowerForest_ocean","BirchForest_ocean","BirchForestM_ocean","RoofedForest_ocean","Swampland_ocean","Jungle_ocean","JungleM_ocean","JungleEdge_ocean","JungleEdgeM_ocean","MushroomIsland_ocean"} + + register_seagrass_decoration("seagrass", 0, 0.5, b_seagrass) + register_seagrass_decoration("kelp", -0.5, 1, b_kelp) + -- Place tall grass on snow in Ice Plains and Extreme Hills+ minetest.register_decoration({ deco_type = "schematic", From 8b6dc309434b97a539a8dc3852d11f4f1a1c270f Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Wed, 18 Dec 2019 19:15:21 +0100 Subject: [PATCH 448/737] Generate kelp/seagrass in v6 --- mods/MAPGEN/mcl_mapgen_core/init.lua | 94 ++++++++++++++++++++++++++++ 1 file changed, 94 insertions(+) diff --git a/mods/MAPGEN/mcl_mapgen_core/init.lua b/mods/MAPGEN/mcl_mapgen_core/init.lua index 4b65653d..43dd45fc 100644 --- a/mods/MAPGEN/mcl_mapgen_core/init.lua +++ b/mods/MAPGEN/mcl_mapgen_core/init.lua @@ -854,6 +854,100 @@ local function register_mgv6_decorations() y_max = mcl_vars.overworld_max, decoration = "mcl_flowers:tallgrass", }) + + -- Seagrass and kelp + local materials = {"dirt","sand"} + for i=1, #materials do + local mat = materials[i] + + minetest.register_decoration({ + deco_type = "simple", + spawn_by = {"group:water"}, + num_spawn_by = 1, + place_on = {"mcl_core:"..mat}, + sidelen = 8, + noise_params = { + offset = 0.04, + scale = 0.3, + spread = {x = 100, y = 100, z = 100}, + seed = 421, + octaves = 3, + persist = 0.6 + }, + flags = "force_placement", + place_offset_y = -1, + y_min = mcl_vars.overworld_min, + y_max = 0, + decoration = "mcl_ocean:seagrass_"..mat, + }) + minetest.register_decoration({ + deco_type = "simple", + spawn_by = {"group:water"}, + num_spawn_by = 1, + place_on = {"mcl_core:mat"}, + sidelen = 8, + noise_params = { + offset = 0.08, + scale = 0.03, + spread = {x = 100, y = 100, z = 100}, + seed = 421, + octaves = 3, + persist = 0.6 + }, + flags = "force_placement", + place_offset_y = -1, + y_min = mcl_vars.overworld_min, + y_max = -5, + decoration = "mcl_ocean:seagrass_"..mat, + }) + + minetest.register_decoration({ + deco_type = "simple", + spawn_by = {"group:water"}, + num_spawn_by = 1, + place_on = {"mcl_core:"..mat}, + sidelen = 16, + noise_params = { + offset = 0.01, + scale = 0.01, + spread = {x = 300, y = 300, z = 300}, + seed = seed, + octaves = 5, + persist = 0.62, + }, + flags = "force_placement", + place_offset_y = -1, + y_min = mcl_vars.overworld_min, + y_max = -6, + decoration = "mcl_ocean:kelp_"..mat, + param2 = 16, + param2_max = 96, + }) + minetest.register_decoration({ + deco_type = "simple", + spawn_by = {"group:water"}, + num_spawn_by = 1, + place_on = {"mcl_core:"..mat}, + sidelen = 16, + noise_params = { + offset = 0.01, + scale = 0.01, + spread = {x = 100, y = 100, z = 100}, + seed = seed, + octaves = 5, + persist = 0.62, + }, + flags = "force_placement", + place_offset_y = -1, + y_min = mcl_vars.overworld_min, + y_max = -15, + decoration = "mcl_ocean:kelp_"..mat, + param2 = 32, + param2_max = 160, + }) + + end + -- Add a small amount of tall grass everywhere to avoid areas completely empty devoid of tall grass minetest.register_decoration({ deco_type = "simple", From f74a50297975ea20487ca4985dcceb6275b97146 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Wed, 18 Dec 2019 20:38:23 +0100 Subject: [PATCH 449/737] Generate sponges in v6 --- mods/MAPGEN/mcl_mapgen_core/depends.txt | 2 ++ mods/MAPGEN/mcl_mapgen_core/init.lua | 22 ++++++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/mods/MAPGEN/mcl_mapgen_core/depends.txt b/mods/MAPGEN/mcl_mapgen_core/depends.txt index 783a7da4..4aa96f05 100644 --- a/mods/MAPGEN/mcl_mapgen_core/depends.txt +++ b/mods/MAPGEN/mcl_mapgen_core/depends.txt @@ -4,6 +4,8 @@ biomeinfo mclx_core? mcl_worlds mcl_cocoas +mcl_sponges +mcl_ocean mcl_stairs mcl_monster_eggs mcl_structures diff --git a/mods/MAPGEN/mcl_mapgen_core/init.lua b/mods/MAPGEN/mcl_mapgen_core/init.lua index 43dd45fc..cc0789b3 100644 --- a/mods/MAPGEN/mcl_mapgen_core/init.lua +++ b/mods/MAPGEN/mcl_mapgen_core/init.lua @@ -948,6 +948,28 @@ local function register_mgv6_decorations() end + -- Wet Sponge + -- TODO: Remove this when we got ocean monuments + minetest.register_decoration({ + deco_type = "simple", + decoration = "mcl_sponges:sponge_wet", + spawn_by = {"group:water"}, + num_spawn_by = 1, + place_on = {"mcl_core:dirt","mcl_core:sand"}, + sidelen = 16, + noise_params = { + offset = 0.00295, + scale = 0.006, + spread = {x = 250, y = 250, z = 250}, + seed = 999, + octaves = 3, + persist = 0.666 + }, + flags = "force_placement", + y_min = mcl_vars.overworld_min, + y_max = -20, + }) + -- Add a small amount of tall grass everywhere to avoid areas completely empty devoid of tall grass minetest.register_decoration({ deco_type = "simple", From b7406ed3d5d2ff27cfe9979de94280ac7115fe70 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Wed, 18 Dec 2019 20:55:20 +0100 Subject: [PATCH 450/737] Generate sponges in deep oceans in non-v6 mgs --- mods/MAPGEN/mcl_biomes/init.lua | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/mods/MAPGEN/mcl_biomes/init.lua b/mods/MAPGEN/mcl_biomes/init.lua index 10f71696..52bd55fc 100644 --- a/mods/MAPGEN/mcl_biomes/init.lua +++ b/mods/MAPGEN/mcl_biomes/init.lua @@ -3525,6 +3525,30 @@ local function register_decorations() register_seagrass_decoration("seagrass", 0, 0.5, b_seagrass) register_seagrass_decoration("kelp", -0.5, 1, b_kelp) + local b_sponge = {"Plains_deep_ocean","SunflowerPlains_deep_ocean","Forest_deep_ocean","FlowerForest_deep_ocean","BirchForest_deep_ocean","BirchForestM_deep_ocean","RoofedForest_deep_ocean","Jungle_deep_ocean","JungleM_deep_ocean","JungleEdge_deep_ocean","JungleEdgeM_deep_ocean","MushroomIsland_deep_ocean","Desert_deep_ocean","Savanna_deep_ocean","SavannaM_deep_ocean","Mesa_deep_ocean","MesaBryce_deep_ocean","MesaPlateauF_deep_ocean","MesaPlateauFM_deep_ocean"} + -- Wet Sponge + -- TODO: Remove this when we got ocean monuments + minetest.register_decoration({ + deco_type = "simple", + decoration = "mcl_sponges:sponge_wet", + biomes = b_sponge, + spawn_by = {"group:water"}, + num_spawn_by = 1, + place_on = {"mcl_core:dirt","mcl_core:sand","mcl_core:gravel"}, + sidelen = 16, + noise_params = { + offset = 0.00495, + scale = 0.006, + spread = {x = 250, y = 250, z = 250}, + seed = 999, + octaves = 3, + persist = 0.666 + }, + flags = "force_placement", + y_min = mcl_vars.overworld_min, + y_max = -20, + }) + -- Place tall grass on snow in Ice Plains and Extreme Hills+ minetest.register_decoration({ deco_type = "schematic", From 305145ca1c2be9d79263270cea430fbf4eca4803 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Wed, 18 Dec 2019 21:04:07 +0100 Subject: [PATCH 451/737] Tweak oceangen --- mods/MAPGEN/mcl_biomes/init.lua | 12 ++++++++---- mods/MAPGEN/mcl_mapgen_core/init.lua | 2 +- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/mods/MAPGEN/mcl_biomes/init.lua b/mods/MAPGEN/mcl_biomes/init.lua index 52bd55fc..ac8c27f8 100644 --- a/mods/MAPGEN/mcl_biomes/init.lua +++ b/mods/MAPGEN/mcl_biomes/init.lua @@ -2203,7 +2203,7 @@ local function register_seagrass_decoration(grasstype, offset, scale, biomes) sidelen = 16, noise_params = noise, biomes = biomes, - y_min = OCEAN_MIN, + y_min = DEEP_OCEAN_MIN, y_max = y_max, decoration = nodes[s], param2 = param2, @@ -3519,8 +3519,12 @@ local function register_decorations() register_grass_decoration("fern", 0.09, -0.03, fern_Jungle) register_grass_decoration("fern", 0.12, -0.03, fern_JungleM) - local b_seagrass = {"ColdTaiga_ocean","ExtremeHills_ocean","ExtremeHillsM_ocean","ExtremeHills+_ocean","Taiga_ocean","MegaTaiga_ocean","MegaSpruceTaiga_ocean","StoneBeach_ocean","Plains_ocean","SunflowerPlains_ocean","Forest_ocean","FlowerForest_ocean","BirchForest_ocean","BirchForestM_ocean","RoofedForest_ocean","Swampland_ocean","Jungle_ocean","JungleM_ocean","JungleEdge_ocean","JungleEdgeM_ocean","MushroomIsland_ocean","Desert_ocean","Savanna_ocean","SavannaM_ocean","Mesa_ocean","MesaBryce_ocean","MesaPlateauF_ocean","MesaPlateauFM_ocean","Mesa_sandlevel","MesaBryce_sandlevel","MesaPlateauF_sandlevel","MesaPlateauFM_sandlevel","Swampland_shore","Jungle_shore","JungleM_shore","Savanna_beach","FlowerForest_beach","ColdTaiga_beach_water","ExtremeHills_beach"} - local b_kelp = {"ExtremeHillsM_ocean","ExtremeHills+_ocean","MegaTaiga_ocean","MegaSpruceTaiga_ocean","Plains_ocean","SunflowerPlains_ocean","Forest_ocean","FlowerForest_ocean","BirchForest_ocean","BirchForestM_ocean","RoofedForest_ocean","Swampland_ocean","Jungle_ocean","JungleM_ocean","JungleEdge_ocean","JungleEdgeM_ocean","MushroomIsland_ocean"} + local b_seagrass = {"ColdTaiga_ocean","ExtremeHills_ocean","ExtremeHillsM_ocean","ExtremeHills+_ocean","Taiga_ocean","MegaTaiga_ocean","MegaSpruceTaiga_ocean","StoneBeach_ocean","Plains_ocean","SunflowerPlains_ocean","Forest_ocean","FlowerForest_ocean","BirchForest_ocean","BirchForestM_ocean","RoofedForest_ocean","Swampland_ocean","Jungle_ocean","JungleM_ocean","JungleEdge_ocean","JungleEdgeM_ocean","MushroomIsland_ocean","Desert_ocean","Savanna_ocean","SavannaM_ocean","Mesa_ocean","MesaBryce_ocean","MesaPlateauF_ocean","MesaPlateauFM_ocean", +"ColdTaiga_deep_ocean","ExtremeHills_deep_ocean","ExtremeHillsM_deep_ocean","ExtremeHills+_deep_ocean","Taiga_deep_ocean","MegaTaiga_deep_ocean","MegaSpruceTaiga_deep_ocean","StoneBeach_deep_ocean","Plains_deep_ocean","SunflowerPlains_deep_ocean","Forest_deep_ocean","FlowerForest_deep_ocean","BirchForest_deep_ocean","BirchForestM_deep_ocean","RoofedForest_deep_ocean","Swampland_deep_ocean","Jungle_deep_ocean","JungleM_deep_ocean","JungleEdge_deep_ocean","JungleEdgeM_deep_ocean","MushroomIsland_deep_ocean","Desert_deep_ocean","Savanna_deep_ocean","SavannaM_deep_ocean","Mesa_deep_ocean","MesaBryce_deep_ocean","MesaPlateauF_deep_ocean","MesaPlateauFM_deep_ocean", +"Mesa_sandlevel","MesaBryce_sandlevel","MesaPlateauF_sandlevel","MesaPlateauFM_sandlevel","Swampland_shore","Jungle_shore","JungleM_shore","Savanna_beach","FlowerForest_beach","ColdTaiga_beach_water","ExtremeHills_beach"} + local b_kelp = {"ExtremeHillsM_ocean","ExtremeHills+_ocean","MegaTaiga_ocean","MegaSpruceTaiga_ocean","Plains_ocean","SunflowerPlains_ocean","Forest_ocean","FlowerForest_ocean","BirchForest_ocean","BirchForestM_ocean","RoofedForest_ocean","Swampland_ocean","Jungle_ocean","JungleM_ocean","JungleEdge_ocean","JungleEdgeM_ocean","MushroomIsland_ocean", +"ExtremeHillsM_deep_ocean","ExtremeHills+_deep_ocean","MegaTaiga_deep_ocean","MegaSpruceTaiga_deep_ocean","Plains_deep_ocean","SunflowerPlains_deep_ocean","Forest_deep_ocean","FlowerForest_deep_ocean","BirchForest_deep_ocean","BirchForestM_deep_ocean","RoofedForest_deep_ocean","Swampland_deep_ocean","Jungle_deep_ocean","JungleM_deep_ocean","JungleEdge_deep_ocean","JungleEdgeM_deep_ocean","MushroomIsland_deep_ocean" +} register_seagrass_decoration("seagrass", 0, 0.5, b_seagrass) register_seagrass_decoration("kelp", -0.5, 1, b_kelp) @@ -3545,7 +3549,7 @@ local function register_decorations() persist = 0.666 }, flags = "force_placement", - y_min = mcl_vars.overworld_min, + y_min = mcl_vars.mg_lava_overworld_max + 5, y_max = -20, }) diff --git a/mods/MAPGEN/mcl_mapgen_core/init.lua b/mods/MAPGEN/mcl_mapgen_core/init.lua index cc0789b3..8e68f161 100644 --- a/mods/MAPGEN/mcl_mapgen_core/init.lua +++ b/mods/MAPGEN/mcl_mapgen_core/init.lua @@ -966,7 +966,7 @@ local function register_mgv6_decorations() persist = 0.666 }, flags = "force_placement", - y_min = mcl_vars.overworld_min, + y_min = mcl_vars.mg_lava_overworld_max + 5, y_max = -20, }) From ab038ddd60ea6a2c2f3fe0a1459c3ef6ed25a8a1 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Wed, 18 Dec 2019 21:55:22 +0100 Subject: [PATCH 452/737] Increase drops of guardians --- mods/ENTITIES/mobs_mc/guardian.lua | 6 ++++-- mods/ENTITIES/mobs_mc/guardian_elder.lua | 12 ++++++++---- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/mods/ENTITIES/mobs_mc/guardian.lua b/mods/ENTITIES/mobs_mc/guardian.lua index 503417d2..5a78220e 100644 --- a/mods/ENTITIES/mobs_mc/guardian.lua +++ b/mods/ENTITIES/mobs_mc/guardian.lua @@ -38,10 +38,12 @@ mobs:register_mob("mobs_mc:guardian", { run_start = 0, run_end = 20, }, drops = { + -- Greatly increased amounts of prismarine {name = mobs_mc.items.prismarine_shard, chance = 1, min = 0, - max = 2,}, + max = 32,}, + -- TODO: Reduce of drops when ocean monument is ready. -- The following drops are approximations -- Fish / prismarine crystal @@ -52,7 +54,7 @@ mobs:register_mob("mobs_mc:guardian", { {name = mobs_mc.items.prismarine_crystals, chance = 4, min = 1, - max = 1,}, + max = 2,}, -- Rare drop: fish {name = mobs_mc.items.fish_raw, diff --git a/mods/ENTITIES/mobs_mc/guardian_elder.lua b/mods/ENTITIES/mobs_mc/guardian_elder.lua index 61f5097d..b8448fb9 100644 --- a/mods/ENTITIES/mobs_mc/guardian_elder.lua +++ b/mods/ENTITIES/mobs_mc/guardian_elder.lua @@ -38,10 +38,14 @@ mobs:register_mob("mobs_mc:guardian_elder", { run_start = 0, run_end = 20, }, drops = { + -- TODO: Reduce # of drops when ocean monument is ready. + + -- Greatly increased amounts of prismarine {name = mobs_mc.items.prismarine_shard, chance = 1, - min = 0, - max = 2,}, + min = 1, + max = 64,}, + -- TODO: Only drop if killed by player {name = mobs_mc.items.wet_sponge, chance = 1, @@ -55,9 +59,9 @@ mobs:register_mob("mobs_mc:guardian_elder", { min = 1, max = 1,}, {name = mobs_mc.items.prismarine_crystals, - chance = 4, + chance = 1, min = 1, - max = 1,}, + max = 10,}, -- Rare drop: fish {name = mobs_mc.items.fish_raw, From 87449b5719e21411d04a17142b11efa25375e049 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Thu, 19 Dec 2019 17:42:19 +0100 Subject: [PATCH 453/737] Make ice texture opaque by default Because of glitchy translucency in Minetest --- mods/ITEMS/mcl_core/locale/mcl_core.de.tr | 4 ++-- mods/ITEMS/mcl_core/locale/template.txt | 4 ++-- mods/ITEMS/mcl_core/nodes_base.lua | 20 ++++++++++++++------ settingtypes.txt | 8 ++++++++ 4 files changed, 26 insertions(+), 10 deletions(-) diff --git a/mods/ITEMS/mcl_core/locale/mcl_core.de.tr b/mods/ITEMS/mcl_core/locale/mcl_core.de.tr index cab01c2e..c0b9b738 100644 --- a/mods/ITEMS/mcl_core/locale/mcl_core.de.tr +++ b/mods/ITEMS/mcl_core/locale/mcl_core.de.tr @@ -101,7 +101,7 @@ Flint is a raw material.=Feuerstein ist ein Rohstoff. Flowing Lava=Fließende Lava Flowing Water=Fließendes Wasser Frosted Ice=Brüchiges Eis -Frosted ice is a short-lived solid translucent block. It melts into a water source within a few seconds.=Brüchiges Eis ist ein kurzlebiger durchscheinender Block. Er wird sich in einigen Sekunden zu einer Wasserquelle verwandeln. +Frosted ice is a short-lived solid block. It melts into a water source within a few seconds.=Brüchiges Eis ist ein kurzlebiger durchscheinender Block. Er wird sich in einigen Sekunden zu einer Wasserquelle verwandeln. Glass=Glas Gold Ingot=Goldbarren Gold Nugget=Goldklumpen @@ -117,7 +117,7 @@ Gravel=Kies Green Stained Glass=Grünes Buntglas Grey Stained Glass=Graues Buntglas Ice=Eis -Ice is a translucent solid block usually found in cold areas. It melts near block light sources at a light level of 12 or higher. When it melts or is broken while resting on top of another block, it will turn into a water source.=Eis ist ein durchscheinender fester Block, der oft in kalten Gebieten gefunden werden kann. Er schmilzt in der Nähe von Block-Lichtquellen bei einer Helligkeit von 12 oder höher. Wenn es schmilzt oder abgebaut wird, und darunter ein anderer Block war, wird er sich in eine Wasserquelle verwandeln. +Ice is a solid block usually found in cold areas. It melts near block light sources at a light level of 12 or higher. When it melts or is broken while resting on top of another block, it will turn into a water source.=Eis ist ein durchscheinender fester Block, der oft in kalten Gebieten gefunden werden kann. Er schmilzt in der Nähe von Block-Lichtquellen bei einer Helligkeit von 12 oder höher. Wenn es schmilzt oder abgebaut wird, und darunter ein anderer Block war, wird er sich in eine Wasserquelle verwandeln. In the End dimension, starting a fire on this block will create an eternal fire.=In der Ende-Dimension wird Feuer auf diesem Block ewig brennen. Iron Ingot=Eisenbarren Iron Nugget=Eisenklumpen diff --git a/mods/ITEMS/mcl_core/locale/template.txt b/mods/ITEMS/mcl_core/locale/template.txt index 5ad9a8d9..d97c6901 100644 --- a/mods/ITEMS/mcl_core/locale/template.txt +++ b/mods/ITEMS/mcl_core/locale/template.txt @@ -101,7 +101,7 @@ Flint is a raw material.= Flowing Lava= Flowing Water= Frosted Ice= -Frosted ice is a short-lived solid translucent block. It melts into a water source within a few seconds.= +Frosted ice is a short-lived solid block. It melts into a water source within a few seconds.= Glass= Gold Ingot= Gold Nugget= @@ -117,7 +117,7 @@ Gravel= Green Stained Glass= Grey Stained Glass= Ice= -Ice is a translucent solid block usually found in cold areas. It melts near block light sources at a light level of 12 or higher. When it melts or is broken while resting on top of another block, it will turn into a water source.= +Ice is a solid block usually found in cold areas. It melts near block light sources at a light level of 12 or higher. When it melts or is broken while resting on top of another block, it will turn into a water source.= In the End dimension, starting a fire on this block will create an eternal fire.= Iron Ingot= Iron Nugget= diff --git a/mods/ITEMS/mcl_core/nodes_base.lua b/mods/ITEMS/mcl_core/nodes_base.lua index 790a2d98..155c6372 100644 --- a/mods/ITEMS/mcl_core/nodes_base.lua +++ b/mods/ITEMS/mcl_core/nodes_base.lua @@ -2,6 +2,14 @@ local S = minetest.get_translator("mcl_core") -- Simple solid cubic nodes, most of them are the ground materials and simple building blocks +local translucent_ice = minetest.settings:get_bool("mcl_translucent_ice", false) +local ice_drawtype +if translucent_ice then + ice_drawtype = "glasslike" +else + ice_drawtype = "normal" +end + minetest.register_node("mcl_core:stone", { description = S("Stone"), _doc_items_longdesc = S("One of the most common blocks in the world, almost the entire underground consists of stone. It sometimes contains ores. Stone may be created when water meets lava."), @@ -752,12 +760,12 @@ minetest.register_node("mcl_core:obsidian", { minetest.register_node("mcl_core:ice", { description = S("Ice"), - _doc_items_longdesc = S("Ice is a translucent solid block usually found in cold areas. It melts near block light sources at a light level of 12 or higher. When it melts or is broken while resting on top of another block, it will turn into a water source."), - drawtype = "glasslike", + _doc_items_longdesc = S("Ice is a solid block usually found in cold areas. It melts near block light sources at a light level of 12 or higher. When it melts or is broken while resting on top of another block, it will turn into a water source."), + drawtype = ice_drawtype, tiles = {"default_ice.png"}, is_ground_content = true, paramtype = "light", - use_texture_alpha = true, + use_texture_alpha = translucent_ice, stack_max = 64, groups = {handy=1,pickaxey=1, slippery=3, building_block=1}, drop = "", @@ -811,17 +819,17 @@ for i=0,3 do local use_doc = i == 0 local longdesc if use_doc then - longdesc = S("Frosted ice is a short-lived solid translucent block. It melts into a water source within a few seconds.") + longdesc = S("Frosted ice is a short-lived solid block. It melts into a water source within a few seconds.") end minetest.register_node("mcl_core:frosted_ice_"..i, { description = S("Frosted Ice"), _doc_items_create_entry = use_doc, _doc_items_longdesc = longdesc, - drawtype = "glasslike", + drawtype = ice_drawtype, tiles = {"mcl_core_frosted_ice_"..i..".png"}, is_ground_content = false, paramtype = "light", - use_texture_alpha = true, + use_texture_alpha = translucent_ice, stack_max = 64, groups = {handy=1, frosted_ice=1, slippery=3, not_in_creative_inventory=1}, drop = "", diff --git a/settingtypes.txt b/settingtypes.txt index ac9ba89b..a71c9a5c 100644 --- a/settingtypes.txt +++ b/settingtypes.txt @@ -83,6 +83,14 @@ mobs_disable_blood (Disable mob damage particles) bool false flame_sound (Flame sound) bool true [Experimental] +# Whether ice is translucent. If disabled, ice is fully opaque. +# +# Note: As of Minetest version 5.1.0, translucent ice above oceans +# will look weird, there's a lot of flashing/blinking going on +# due to bugs in Minetest's implementation of translucency. +# See also: https://github.com/minetest/minetest/issues/95 +mcl_translucent_ice (Translucent ice) bool false + # Whether to generate fallen logs in some biomes. # They might not always look pretty and have strange overhangs. mcl_generate_fallen_logs (Generate fallen logs) bool false From 9fdbb35f2430a6535685775c04cfb0c27fe8115a Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Thu, 19 Dec 2019 18:48:27 +0100 Subject: [PATCH 454/737] Look upwards when sleeping --- mods/ITEMS/mcl_beds/functions.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_beds/functions.lua b/mods/ITEMS/mcl_beds/functions.lua index 73e1cebc..30c4004a 100644 --- a/mods/ITEMS/mcl_beds/functions.lua +++ b/mods/ITEMS/mcl_beds/functions.lua @@ -182,7 +182,7 @@ local function lay_down(player, pos, bed_pos, state, skip) -- physics, eye_offset, etc player:set_eye_offset({x = 0, y = -13, z = 0}, {x = 0, y = 0, z = 0}) player:set_look_horizontal(yaw) - player:set_look_vertical(0) + player:set_look_vertical(-(math.pi/2)) player:get_meta():set_string("mcl_beds:sleeping", "true") playerphysics.add_physics_factor(player, "speed", "mcl_beds:sleeping", 0) From bbc5f2a0d9ee46f9f0c7523441f820b0397b713f Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sun, 22 Dec 2019 01:22:05 +0100 Subject: [PATCH 455/737] Use sand and gravel for ocean floors --- mods/MAPGEN/mcl_biomes/init.lua | 110 ++++++++++++++++---------------- 1 file changed, 55 insertions(+), 55 deletions(-) diff --git a/mods/MAPGEN/mcl_biomes/init.lua b/mods/MAPGEN/mcl_biomes/init.lua index ac8c27f8..5687db1b 100644 --- a/mods/MAPGEN/mcl_biomes/init.lua +++ b/mods/MAPGEN/mcl_biomes/init.lua @@ -144,9 +144,9 @@ local function register_biomes() }) minetest.register_biome({ name = "IcePlainsSpikes_ocean", - node_top = "mcl_core:sand", + node_top = "mcl_core:gravel", depth_top = 2, - node_filler = "mcl_core:dirt", + node_filler = "mcl_core:gravel", depth_filler = 3, node_river_water = "mcl_core:ice", node_riverbed = "mcl_core:sand", @@ -216,9 +216,9 @@ local function register_biomes() }) minetest.register_biome({ name = "ColdTaiga_ocean", - node_top = "mcl_core:dirt", + node_top = "mcl_core:gravel", depth_top = 1, - node_filler = "mcl_core:dirt", + node_filler = "mcl_core:gravel", depth_filler = 3, node_riverbed = "mcl_core:sand", depth_riverbed = 2, @@ -249,9 +249,9 @@ local function register_biomes() }) minetest.register_biome({ name = "MegaTaiga_ocean", - node_top = "mcl_core:dirt", + node_top = "mcl_core:gravel", depth_top = 1, - node_filler = "mcl_core:dirt", + node_filler = "mcl_core:gravel", depth_filler = 3, node_riverbed = "mcl_core:sand", depth_riverbed = 2, @@ -281,9 +281,9 @@ local function register_biomes() }) minetest.register_biome({ name = "MegaSpruceTaiga_ocean", - node_top = "mcl_core:dirt", + node_top = "mcl_core:gravel", depth_top = 1, - node_filler = "mcl_core:dirt", + node_filler = "mcl_core:gravel", depth_filler = 3, node_riverbed = "mcl_core:sand", depth_riverbed = 2, @@ -330,9 +330,9 @@ local function register_biomes() }) minetest.register_biome({ name = "ExtremeHills_ocean", - node_top = "mcl_core:dirt", + node_top = "mcl_core:gravel", depth_top = 1, - node_filler = "mcl_core:dirt", + node_filler = "mcl_core:gravel", depth_filler = 4, node_riverbed = "mcl_core:sand", depth_riverbed = 4, @@ -364,9 +364,9 @@ local function register_biomes() }) minetest.register_biome({ name = "ExtremeHillsM_ocean", - node_top = "mcl_core:dirt", + node_top = "mcl_core:gravel", depth_top = 1, - node_filler = "mcl_core:dirt", + node_filler = "mcl_core:gravel", depth_filler = 3, node_riverbed = "mcl_core:sand", depth_riverbed = 3, @@ -417,9 +417,9 @@ local function register_biomes() }) minetest.register_biome({ name = "ExtremeHills+_ocean", - node_top = "mcl_core:dirt", + node_top = "mcl_core:gravel", depth_top = 1, - node_filler = "mcl_core:dirt", + node_filler = "mcl_core:gravel", depth_filler = 4, node_riverbed = "mcl_core:sand", depth_riverbed = 4, @@ -448,7 +448,7 @@ local function register_biomes() minetest.register_biome({ name = "StoneBeach_ocean", - node_top = "mcl_core:dirt", + node_top = "mcl_core:gravel", depth_top = 1, node_riverbed = "mcl_core:sand", depth_riverbed = 1, @@ -483,9 +483,9 @@ local function register_biomes() }) minetest.register_biome({ name = "IcePlains_ocean", - node_top = "mcl_core:dirt", + node_top = "mcl_core:gravel", depth_top = 1, - node_filler = "mcl_core:dirt", + node_filler = "mcl_core:gravel", depth_filler = 3, node_riverbed = "mcl_core:sand", depth_riverbed = 2, @@ -530,9 +530,9 @@ local function register_biomes() }) minetest.register_biome({ name = "Plains_ocean", - node_top = "mcl_core:dirt", + node_top = "mcl_core:sand", depth_top = 1, - node_filler = "mcl_core:dirt", + node_filler = "mcl_core:sand", depth_filler = 3, node_riverbed = "mcl_core:sand", depth_riverbed = 2, @@ -562,9 +562,9 @@ local function register_biomes() }) minetest.register_biome({ name = "SunflowerPlains_ocean", - node_top = "mcl_core:dirt", + node_top = "mcl_core:sand", depth_top = 1, - node_filler = "mcl_core:dirt", + node_filler = "mcl_core:sand", depth_filler = 3, node_riverbed = "mcl_core:dirt", depth_riverbed = 2, @@ -609,9 +609,9 @@ local function register_biomes() }) minetest.register_biome({ name = "Taiga_ocean", - node_top = "mcl_core:sand", + node_top = "mcl_core:gravel", depth_top = 1, - node_filler = "mcl_core:dirt", + node_filler = "mcl_core:gravel", depth_filler = 3, node_riverbed = "mcl_core:sand", depth_riverbed = 2, @@ -656,9 +656,9 @@ local function register_biomes() }) minetest.register_biome({ name = "Forest_ocean", - node_top = "mcl_core:dirt", + node_top = "mcl_core:sand", depth_top = 1, - node_filler = "mcl_core:dirt", + node_filler = "mcl_core:sand", depth_filler = 3, node_riverbed = "mcl_core:sand", depth_riverbed = 2, @@ -703,9 +703,9 @@ local function register_biomes() }) minetest.register_biome({ name = "FlowerForest_ocean", - node_top = "mcl_core:dirt", + node_top = "mcl_core:sand", depth_top = 1, - node_filler = "mcl_core:dirt", + node_filler = "mcl_core:sand", depth_filler = 3, node_riverbed = "mcl_core:sand", depth_riverbed = 2, @@ -735,9 +735,9 @@ local function register_biomes() }) minetest.register_biome({ name = "BirchForest_ocean", - node_top = "mcl_core:dirt", + node_top = "mcl_core:sand", depth_top = 1, - node_filler = "mcl_core:dirt", + node_filler = "mcl_core:sand", depth_filler = 3, node_riverbed = "mcl_core:sand", depth_riverbed = 2, @@ -767,9 +767,9 @@ local function register_biomes() }) minetest.register_biome({ name = "BirchForestM_ocean", - node_top = "mcl_core:dirt", + node_top = "mcl_core:sand", depth_top = 1, - node_filler = "mcl_core:dirt", + node_filler = "mcl_core:gravel", depth_filler = 3, node_riverbed = "mcl_core:sand", depth_riverbed = 2, @@ -832,9 +832,9 @@ local function register_biomes() }) minetest.register_biome({ name = "RoofedForest_ocean", - node_top = "mcl_core:dirt", + node_top = "mcl_core:gravel", depth_top = 1, - node_filler = "mcl_core:dirt", + node_filler = "mcl_core:gravel", depth_filler = 2, node_riverbed = "mcl_core:sand", depth_riverbed = 2, @@ -1005,7 +1005,7 @@ local function register_biomes() name = "MesaPlateauF_ocean", node_top = "mcl_core:sand", depth_top = 3, - node_filler = "mcl_colorblocks:sand", + node_filler = "mcl_core:sand", depth_filler = 2, node_riverbed = "mcl_core:sand", depth_riverbed = 2, @@ -1077,7 +1077,7 @@ local function register_biomes() name = "MesaPlateauFM_ocean", node_top = "mcl_core:sand", depth_top = 3, - node_filler = "mcl_colorblocks:sand", + node_filler = "mcl_core:sand", depth_filler = 3, node_riverbed = "mcl_core:sand", depth_riverbed = 3, @@ -1124,9 +1124,9 @@ local function register_biomes() }) minetest.register_biome({ name = "Savanna_ocean", - node_top = "mcl_core:dirt", + node_top = "mcl_core:sand", depth_top = 1, - node_filler = "mcl_core:dirt", + node_filler = "mcl_core:sand", depth_filler = 3, node_riverbed = "mcl_core:sand", depth_riverbed = 2, @@ -1158,9 +1158,9 @@ local function register_biomes() }) minetest.register_biome({ name = "SavannaM_ocean", - node_top = "mcl_core:dirt", + node_top = "mcl_core:sand", depth_top = 1, - node_filler = "mcl_core:dirt", + node_filler = "mcl_core:sand", depth_filler = 3, node_riverbed = "mcl_core:sand", depth_riverbed = 2, @@ -1205,9 +1205,9 @@ local function register_biomes() }) minetest.register_biome({ name = "Jungle_ocean", - node_top = "mcl_core:dirt", + node_top = "mcl_core:sand", depth_top = 1, - node_filler = "mcl_core:dirt", + node_filler = "mcl_core:sand", depth_filler = 3, node_riverbed = "mcl_core:sand", depth_riverbed = 2, @@ -1254,9 +1254,9 @@ local function register_biomes() }) minetest.register_biome({ name = "JungleM_ocean", - node_top = "mcl_core:dirt", + node_top = "mcl_core:sand", depth_top = 1, - node_filler = "mcl_core:dirt", + node_filler = "mcl_core:sand", depth_filler = 3, node_riverbed = "mcl_core:sand", depth_riverbed = 2, @@ -1287,9 +1287,9 @@ local function register_biomes() }) minetest.register_biome({ name = "JungleEdge_ocean", - node_top = "mcl_core:dirt", + node_top = "mcl_core:sand", depth_top = 1, - node_filler = "mcl_core:dirt", + node_filler = "mcl_core:sand", depth_filler = 2, node_riverbed = "mcl_core:sand", depth_riverbed = 2, @@ -1322,9 +1322,9 @@ local function register_biomes() }) minetest.register_biome({ name = "JungleEdgeM_ocean", - node_top = "mcl_core:dirt", + node_top = "mcl_core:sand", depth_top = 1, - node_filler = "mcl_core:dirt", + node_filler = "mcl_core:sand", depth_filler = 4, node_riverbed = "mcl_core:sand", depth_riverbed = 2, @@ -1422,9 +1422,9 @@ local function register_biomes() }) minetest.register_biome({ name = "MushroomIsland_ocean", - node_top = "mcl_core:dirt", + node_top = "mcl_core:gravel", depth_top = 1, - node_filler = "mcl_core:dirt", + node_filler = "mcl_core:gravel", depth_filler = 3, node_riverbed = "mcl_core:sand", depth_riverbed = 2, @@ -1440,18 +1440,18 @@ local function register_biomes() for i=1, #overworld_biomes do local biome = overworld_biomes[i] - -- Deep Ocean: Has gravel floor + -- Deep Ocean minetest.register_biome({ name = biome .. "_deep_ocean", heat_point = minetest.registered_biomes[biome].heat_point, humidity_point = minetest.registered_biomes[biome].humidity_point, y_min = DEEP_OCEAN_MIN, y_max = DEEP_OCEAN_MAX, - node_top = "mcl_core:gravel", - depth_top = 1, - node_filler = "mcl_core:gravel", - depth_filler = 2, - node_riverbed = "mcl_core:gravel", + node_top = minetest.registered_biomes[biome.."_ocean"].node_top, + depth_top = 2, + node_filler = minetest.registered_biomes[biome.."_ocean"].node_filler, + depth_filler = 3, + node_riverbed = minetest.registered_biomes[biome.."_ocean"].node_riverbed, depth_riverbed = 2, vertical_blend = 5, _mcl_biome_type = minetest.registered_biomes[biome]._mcl_biome_type, From a03cc0604eca149ca2de57f2675ae907c6d5b220 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sun, 22 Dec 2019 18:08:45 +0100 Subject: [PATCH 456/737] End rods no longer fall --- mods/ITEMS/mcl_end/building.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_end/building.lua b/mods/ITEMS/mcl_end/building.lua index 696a2276..9b0022e9 100644 --- a/mods/ITEMS/mcl_end/building.lua +++ b/mods/ITEMS/mcl_end/building.lua @@ -75,7 +75,7 @@ minetest.register_node("mcl_end:end_rod", { paramtype2 = "facedir", light_source = minetest.LIGHT_MAX, sunlight_propagates = true, - groups = { dig_immediate=3, deco_block=1, destroy_by_lava_flow=1, falling_node=1 }, + groups = { dig_immediate=3, deco_block=1, destroy_by_lava_flow=1, }, node_box = { type = "fixed", fixed = { From d29c4bb795566637342cdc1de315de9931fd4757 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sun, 22 Dec 2019 20:22:19 +0100 Subject: [PATCH 457/737] Fix 2 undeclared global warnings in mapgen core --- mods/MAPGEN/mcl_mapgen_core/init.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/MAPGEN/mcl_mapgen_core/init.lua b/mods/MAPGEN/mcl_mapgen_core/init.lua index 8e68f161..39f189a3 100644 --- a/mods/MAPGEN/mcl_mapgen_core/init.lua +++ b/mods/MAPGEN/mcl_mapgen_core/init.lua @@ -911,7 +911,7 @@ local function register_mgv6_decorations() offset = 0.01, scale = 0.01, spread = {x = 300, y = 300, z = 300}, - seed = seed, + seed = 505, octaves = 5, persist = 0.62, }, @@ -933,7 +933,7 @@ local function register_mgv6_decorations() offset = 0.01, scale = 0.01, spread = {x = 100, y = 100, z = 100}, - seed = seed, + seed = 506, octaves = 5, persist = 0.62, }, From 625730e04043a6b99c04abcec186bee79f773ead Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Thu, 26 Dec 2019 11:42:14 +0100 Subject: [PATCH 458/737] Translate slippery help --- mods/HELP/doc/doc_items/locale/doc_items.de.tr | 1 + mods/HELP/doc/doc_items/locale/template.txt | 1 + 2 files changed, 2 insertions(+) diff --git a/mods/HELP/doc/doc_items/locale/doc_items.de.tr b/mods/HELP/doc/doc_items/locale/doc_items.de.tr index b4a53a8a..90747c38 100644 --- a/mods/HELP/doc/doc_items/locale/doc_items.de.tr +++ b/mods/HELP/doc/doc_items/locale/doc_items.de.tr @@ -140,3 +140,4 @@ Mining durability:=Grabehaltbarkeit: • @1, level @2: Unlimited=• @1, Stufe @2: Unbegrenzt This block's rotation is affected by the way you place it: Place it on the floor or ceiling for a vertical orientation; place it at the side for a horizontal orientation. Sneaking while placing it leads to a perpendicular orientation instead.=Die Rotation dieses Blocks hängt davon ab, wie sie ihn platzieren: Platzieren Sie ihn auf den Boden oder an die Decke, um ihn vertikal aufzustellen; platzieren Sie in an der Seite für eine horizontale Ausrichtung. Wenn Sie während des Bauens schleichen, wird der Block stattdessen senkrecht zur üblichen Ausrichtung rotiert. Toughness level: @1=Härtegrad: @1 +This block is slippery.=Dieser Block ist rutschig. diff --git a/mods/HELP/doc/doc_items/locale/template.txt b/mods/HELP/doc/doc_items/locale/template.txt index 68d2d0a7..484e40ec 100644 --- a/mods/HELP/doc/doc_items/locale/template.txt +++ b/mods/HELP/doc/doc_items/locale/template.txt @@ -140,3 +140,4 @@ Mining durability:= • @1, level @2: Unlimited= This block's rotation is affected by the way you place it: Place it on the floor or ceiling for a vertical orientation; place it at the side for a horizontal orientation. Sneaking while placing it leads to a perpendicular orientation instead.= Toughness level: @1= +This block is slippery.= From 5d8c0687492fcc39548992c9601b9bf2dbaa4fd1 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Thu, 26 Dec 2019 12:12:21 +0100 Subject: [PATCH 459/737] Translate mcl_ocean --- mods/ITEMS/mcl_ocean/corals.lua | 2 +- mods/ITEMS/mcl_ocean/locale/mcl_ocean.de.tr | 41 +++++++++++++++++++++ mods/ITEMS/mcl_ocean/locale/template.txt | 41 +++++++++++++++++++++ 3 files changed, 83 insertions(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_ocean/corals.lua b/mods/ITEMS/mcl_ocean/corals.lua index 758a9c4d..a5d6cb85 100644 --- a/mods/ITEMS/mcl_ocean/corals.lua +++ b/mods/ITEMS/mcl_ocean/corals.lua @@ -73,7 +73,7 @@ local sounds_coral_plant = mcl_sounds.node_sound_leaves_defaults({footstep = mcl for c=1, #corals do local id = corals[c][1] - local doc_desc_block = S("Coral blocks live in the oceans and need a water soure next to them to survive. Without water, they die off.") + local doc_desc_block = S("Coral blocks live in the oceans and need a water source next to them to survive. Without water, they die off.") local doc_desc_coral = S("Corals grow on top of coral blocks and need to be inside a water source to survive. Without water, it will die off, as well as the coral block below.") local doc_desc_fan = S("Corals fans grow on top of coral blocks and need to be inside a water source to survive. Without water, it will die off, as well as the coral block below.") diff --git a/mods/ITEMS/mcl_ocean/locale/mcl_ocean.de.tr b/mods/ITEMS/mcl_ocean/locale/mcl_ocean.de.tr index 02cdd777..37907c59 100644 --- a/mods/ITEMS/mcl_ocean/locale/mcl_ocean.de.tr +++ b/mods/ITEMS/mcl_ocean/locale/mcl_ocean.de.tr @@ -7,3 +7,44 @@ Prismarine Bricks=Prismarinziegel Dark Prismarine=Dunkelprismarin Prismarine Crystals=Prismarinkristalle Prismarine Shard=Prismarinsplitter +Dried Kelp=Getrockneter Seetang +Dried Kelp Block=Getrockneter Seetangblock +Brain Coral Block=Hirnkorallenblock +Brain Coral Fan=Hirnkorallenfächer +Brain Coral=Hirnkoralle +Bubble Coral Block=Blasenkorallenblock +Bubble Coral Fan=Blasenkorallenfächer +Bubble Coral=Blasenkoralle +Fire Coral Block=Feuerkorallenblock +Fire Coral Fan=Feuerkorallenfächer +Fire Coral=Feuerkoralle +Horn Coral Block=Hornkorallenblock +Horn Coral Fan=Hornkorallenfächer +Horn Coral=Hornkoralle +Tube Coral Block=Trompetenkorallenblock +Tube Coral Fan=Trompetenkorallenfächer +Tube Coral=Trompetenkoralle +Dead Brain Coral Block=Toter Hirnkorallenblock +Dead Brain Coral Fan=Toter Hirnkorallenfächer +Dead Brain Coral=Tote Hirnkoralle +Dead Bubble Coral Block=Toter Blasenkorallenblock +Dead Bubble Coral Fan=Toter Blasenkorallenfächer +Dead Bubble Coral=Tote Blasenkoralle +Dead Fire Coral Block=Toter Feuerkorallenblock +Dead Fire Coral Fan=Toter Feuerkorallenfächer +Dead Fire Coral=Tote Feuerkoralle +Dead Horn Coral Block=Toter Hornkorallenblock +Dead Horn Coral Fan=Toter Hornkorallenfächer +Dead Horn Coral=Tote Hornkoralle +Dead Tube Coral Block=Toter Trompetenkorallenblock +Dead Tube Coral Fan=Toter Trompetenkorallenfächer +Dead Tube Coral=Tote Trompetenkoralle +Seagrass=Seegras +Kelp=Seetang +Kelp grows inside water on top of dirt, sand or gravel.=Seetang wächst im Wasser auf Erde, Sand oder Kies. +Coral blocks live in the oceans and need a water source next to them to survive. Without water, they die off.=Korallenblöcke leben im Ozean und benötigen eine Wasserquelle neben ihnen, um zu überleben. Ohne Wasser sterben sie ab. +Corals grow on top of coral blocks and need to be inside a water source to survive. Without water, it will die off, as well as the coral block below.=Korallen wachsen auf Korallenblöcken und müssen sich in einer Wasserquelle befinden, um zu überleben. Ohne Wasser sterben sie gemeinsam mit dem Korallenblock ab. +Corals fans grow on top of coral blocks and need to be inside a water source to survive. Without water, it will die off, as well as the coral block below.=Korallenfächer wachsen auf Korallenblöcken und müssen sich in einer Wasserquelle befinden, um zu überleben. Ohne Wasser sterben sie gemeinsam mit dem Korallenblock ab. +Seagrass grows inside water on top of dirt, sand or gravel.=Seegras wächst im Wasser auf Erde, Sand oder Kies. +A decorative block that serves as a great furnace fuel.=Ein dekorativer Block, der sich gut als Ofenbrennstoff eignet. +Dried kelp is a food item.=Getrockneter Seetang ist ein Lebensmittel. diff --git a/mods/ITEMS/mcl_ocean/locale/template.txt b/mods/ITEMS/mcl_ocean/locale/template.txt index 943e7dae..0c7f360d 100644 --- a/mods/ITEMS/mcl_ocean/locale/template.txt +++ b/mods/ITEMS/mcl_ocean/locale/template.txt @@ -7,3 +7,44 @@ Prismarine Bricks= Dark Prismarine= Prismarine Crystals= Prismarine Shard= +Dried Kelp= +Dried Kelp Block= +Brain Coral Block= +Brain Coral Fan= +Brain Coral= +Bubble Coral Block= +Bubble Coral Fan= +Bubble Coral= +Fire Coral Block= +Fire Coral Fan= +Fire Coral= +Horn Coral Block= +Horn Coral Fan= +Horn Coral= +Tube Coral Block= +Tube Coral Fan= +Tube Coral= +Dead Brain Coral Block= +Dead Brain Coral Fan= +Dead Brain Coral= +Dead Bubble Coral Block= +Dead Bubble Coral Fan= +Dead Bubble Coral= +Dead Fire Coral Block= +Dead Fire Coral Fan= +Dead Fire Coral= +Dead Horn Coral Block= +Dead Horn Coral Fan= +Dead Horn Coral= +Dead Tube Coral Block= +Dead Tube Coral Fan= +Dead Tube Coral= +Seagrass= +Kelp= +Kelp grows inside water on top of dirt, sand or gravel.= +Coral blocks live in the oceans and need a water source next to them to survive. Without water, they die off.= +Corals grow on top of coral blocks and need to be inside a water source to survive. Without water, it will die off, as well as the coral block below.= +Corals fans grow on top of coral blocks and need to be inside a water source to survive. Without water, it will die off, as well as the coral block below.= +Seagrass grows inside water on top of dirt, sand or gravel.= +A decorative block that serves as a great furnace fuel.= +Dried kelp is a food item.= From f691b31423b3809a88de81b5273b266a759de5e6 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Fri, 27 Dec 2019 01:15:07 +0100 Subject: [PATCH 460/737] Version 0.57.0 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 06d7ae9a..a8e05c5e 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ An unofficial Minecraft-like game for Minetest. Forked from MineClone by davedevils. Developed by Wuzzy and contributors. Not developed or endorsed by Mojang AB. -Version: 0.56.2 +Version: 0.57.0 ### Gameplay You start in a randomly-generated world made entirely of cubes. You can explore From b77307b7ac73e5c00417180f36e7ce2829425553 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Fri, 27 Dec 2019 15:24:59 +0100 Subject: [PATCH 461/737] Add sea pickles --- mods/ITEMS/mcl_ocean/init.lua | 3 + mods/ITEMS/mcl_ocean/sea_pickle.lua | 200 ++++++++++++++++++ .../textures/mcl_ocean_sea_pickle_1_anim.png | Bin 0 -> 579 bytes .../textures/mcl_ocean_sea_pickle_1_off.png | Bin 0 -> 422 bytes .../textures/mcl_ocean_sea_pickle_2_anim.png | Bin 0 -> 581 bytes .../textures/mcl_ocean_sea_pickle_2_off.png | Bin 0 -> 430 bytes .../textures/mcl_ocean_sea_pickle_3_anim.png | Bin 0 -> 571 bytes .../textures/mcl_ocean_sea_pickle_3_off.png | Bin 0 -> 440 bytes .../textures/mcl_ocean_sea_pickle_4_anim.png | Bin 0 -> 529 bytes .../textures/mcl_ocean_sea_pickle_4_off.png | Bin 0 -> 427 bytes .../textures/mcl_ocean_sea_pickle_item.png | Bin 0 -> 456 bytes 11 files changed, 203 insertions(+) create mode 100644 mods/ITEMS/mcl_ocean/sea_pickle.lua create mode 100644 mods/ITEMS/mcl_ocean/textures/mcl_ocean_sea_pickle_1_anim.png create mode 100644 mods/ITEMS/mcl_ocean/textures/mcl_ocean_sea_pickle_1_off.png create mode 100644 mods/ITEMS/mcl_ocean/textures/mcl_ocean_sea_pickle_2_anim.png create mode 100644 mods/ITEMS/mcl_ocean/textures/mcl_ocean_sea_pickle_2_off.png create mode 100644 mods/ITEMS/mcl_ocean/textures/mcl_ocean_sea_pickle_3_anim.png create mode 100644 mods/ITEMS/mcl_ocean/textures/mcl_ocean_sea_pickle_3_off.png create mode 100644 mods/ITEMS/mcl_ocean/textures/mcl_ocean_sea_pickle_4_anim.png create mode 100644 mods/ITEMS/mcl_ocean/textures/mcl_ocean_sea_pickle_4_off.png create mode 100644 mods/ITEMS/mcl_ocean/textures/mcl_ocean_sea_pickle_item.png diff --git a/mods/ITEMS/mcl_ocean/init.lua b/mods/ITEMS/mcl_ocean/init.lua index cf63f98b..2a103b8d 100644 --- a/mods/ITEMS/mcl_ocean/init.lua +++ b/mods/ITEMS/mcl_ocean/init.lua @@ -9,3 +9,6 @@ dofile(minetest.get_modpath(minetest.get_current_modname()).."/seagrass.lua") -- Kelp dofile(minetest.get_modpath(minetest.get_current_modname()).."/kelp.lua") + +-- Sea Pickle +dofile(minetest.get_modpath(minetest.get_current_modname()).."/sea_pickle.lua") diff --git a/mods/ITEMS/mcl_ocean/sea_pickle.lua b/mods/ITEMS/mcl_ocean/sea_pickle.lua new file mode 100644 index 00000000..85f75bad --- /dev/null +++ b/mods/ITEMS/mcl_ocean/sea_pickle.lua @@ -0,0 +1,200 @@ +local S = minetest.get_translator("mcl_ocean") +local mod_doc = minetest.get_modpath("doc") ~= nil + +local function sea_pickle_on_place(itemstack, placer, pointed_thing) + if pointed_thing.type ~= "node" or not placer then + return itemstack + end + + local player_name = placer:get_player_name() + local pos_under = pointed_thing.under + local pos_above = pointed_thing.above + local node_under = minetest.get_node(pos_under) + local node_above = minetest.get_node(pos_above) + local def_under = minetest.registered_nodes[node_under.name] + local def_above = minetest.registered_nodes[node_above.name] + + if def_under and def_under.on_rightclick and not placer:get_player_control().sneak then + return def_under.on_rightclick(pos_under, node_under, + placer, itemstack, pointed_thing) or itemstack + end + + if minetest.is_protected(pos_under, player_name) or + minetest.is_protected(pos_above, player_name) then + minetest.log("action", player_name + .. " tried to place " .. itemstack:get_name() + .. " at protected position " + .. minetest.pos_to_string(pos_under)) + minetest.record_protection_violation(pos_under, player_name) + return itemstack + end + + local submerged = false + if minetest.get_item_group(node_above.name, "water") ~= 0 then + submerged = true + end + -- Place + if node_under.name == "mcl_ocean:dead_brain_coral_block" then + -- Place on suitable coral block + if submerged then + node_under.name = "mcl_ocean:sea_pickle_1_dead_brain_coral_block" + else + node_under.name = "mcl_ocean:sea_pickle_1_off_dead_brain_coral_block" + end + minetest.set_node(pos_under, node_under) + elseif minetest.get_item_group(node_under.name, "sea_pickle") ~= 0 then + -- Grow by 1 stage + local def = minetest.registered_nodes[node_under.name] + if def and def._mcl_sea_pickle_next then + node_under.name = def._mcl_sea_pickle_next + minetest.set_node(pos_under, node_under) + else + return itemstack + end + else + return itemstack + end + if not (minetest.settings:get_bool("creative_mode")) then + itemstack:take_item() + end + return itemstack +end + +-- Sea Pickle on brain coral + +local sounds_coral_plant = mcl_sounds.node_sound_leaves_defaults({footstep = mcl_sounds.node_sound_dirt_defaults().footstep}) +local ontop = "dead_brain_coral_block" + +for s=1,4 do + local desc, doc_desc, doc_use, doc_create, nici, img, img_off, on_place + if s == 1 then + desc = S("Sea Pickle") + doc_desc = S("Sea pickles grow on dead brain coral blocks and provide light when underwater. They come in 4 sizes that vary in brightness.") + doc_use = S("It can only be placed on top of dead brain coral blocks. Placing a sea pickle on another sea pickle will make it grow and brighter.") + img = "mcl_ocean_sea_pickle_item.png" + on_place = sea_pickle_on_place + else + doc_create = false + nici = 1 + img = "mcl_ocean_"..ontop..".png^(mcl_ocean_sea_pickle_"..s.."_anim.png^[verticalframe:2:1)" + end + img_off = "mcl_ocean_"..ontop..".png^mcl_ocean_sea_pickle_"..s.."_off.png" + local next_on, next_off + if s < 4 then + next_on = "mcl_ocean:sea_pickle_"..tostring(s+1).."_"..ontop + next_off = "mcl_ocean:sea_pickle_"..tostring(s+1).."_off_"..ontop + end + + minetest.register_node("mcl_ocean:sea_pickle_"..s.."_"..ontop, { + description = desc, + _doc_items_create_entry = doc_create, + _doc_items_longdesc = doc_desc, + _doc_items_usagehelp = doc_use, + drawtype = "plantlike_rooted", + paramtype = "light", + paramtype2 = "meshoptions", + tiles = { "mcl_ocean_"..ontop..".png" }, + special_tiles = { + { + image = "mcl_ocean_sea_pickle_"..s.."_anim.png", + animation = {type="vertical_frames", aspect_w=16, aspect_h=16, length=1.7}, + } + }, + inventory_image = img, + wield_image = img, + groups = { dig_immediate = 3, deco_block = 1, sea_pickle=1, not_in_creative_inventory=nici }, + -- Light level: 6 at size 1, +3 for each additional stage + light_source = math.min(6 + (s-1)*3, minetest.LIGHT_MAX), + selection_box = { + type = "fixed", + fixed = { + { -0.5, -0.5, -0.5, 0.5, 0.5, 0.5 }, + { -0.15, 0.5, -0.15, 0.15, 0.5+2/16+(2/16)*s, 0.15 }, + } + }, + sounds = sounds_coral_plant, + node_placement_prediction = "", + node_dig_prediction = "mcl_ocean:"..ontop, + after_dig_node = function(pos) + local node = minetest.get_node(pos) + if minetest.get_item_group(node.name, "sea_pickle") == 0 then + minetest.set_node(pos, {name="mcl_ocean:"..ontop}) + end + end, + on_place = on_place, + _mcl_sea_pickle_off = "mcl_ocean:sea_pickle_"..s.."_off_"..ontop, + _mcl_sea_pickle_next = next_on, + _mcl_hardness = 0, + _mcl_blast_resistance = 0, + }) + + minetest.register_node("mcl_ocean:sea_pickle_"..s.."_off_"..ontop, { + drawtype = "plantlike_rooted", + paramtype = "light", + paramtype2 = "meshoptions", + tiles = { "mcl_ocean_"..ontop..".png" }, + special_tiles = { "mcl_ocean_sea_pickle_"..s.."_off.png", }, + groups = { dig_immediate = 3, deco_block = 1, sea_pickle=2, not_in_creative_inventory=1 }, + selection_box = { + type = "fixed", + fixed = { + { -0.5, -0.5, -0.5, 0.5, 0.5, 0.5 }, + { -0.15, 0.5, -0.15, 0.15, 0.5+2/16+(2/16)*s, 0.15 }, + } + }, + inventory_image = img_off, + wield_image = img_off, + sounds = sounds_coral_plant, + node_placement_prediction = "", + node_dig_prediction = "mcl_ocean:"..ontop, + after_dig_node = function(pos) + local node = minetest.get_node(pos) + if minetest.get_item_group(node.name, "sea_pickle") == 0 then + minetest.set_node(pos, {name="mcl_ocean:"..ontop}) + end + end, + _mcl_sea_pickle_on = "mcl_ocean:sea_pickle_"..s.."_"..ontop, + _mcl_sea_pickle_next = next_off, + _mcl_hardness = 0, + _mcl_blast_resistance = 0, + }) + + if mod_doc then + if s == 1 then + doc.add_entry_alias("nodes", "mcl_ocean:sea_pickle_1_dead_brain_coral_block", "nodes", "mcl_ocean:sea_pickle_1_off_"..ontop) + else + doc.add_entry_alias("nodes", "mcl_ocean:sea_pickle_1_dead_brain_coral_block", "nodes", "mcl_ocean:sea_pickle_"..s.."_off_"..ontop) + doc.add_entry_alias("nodes", "mcl_ocean:sea_pickle_1_dead_brain_coral_block", "nodes", "mcl_ocean:sea_pickle_"..s.."_"..ontop) + end + end +end + +minetest.register_abm({ + label = "Sea pickle update", + nodenames = { "group:sea_pickle" }, + interval = 17, + chance = 5, + catch_up = false, + action = function(pos, node, active_object_count, active_object_count_wider) + -- Check if it's lit + local state = minetest.get_item_group(node.name, "sea_pickle") + -- Check for water + local checknode = minetest.get_node({x=pos.x, y=pos.y+1, z=pos.z}) + local def = minetest.registered_nodes[node.name] + if minetest.get_item_group(checknode.name, "water") ~= 0 then + -- Sea pickle is unlit + if state == 2 then + node.name = def._mcl_sea_pickle_on + minetest.set_node(pos, node) + return + end + else + -- Sea pickle is lit + if state == 1 then + node.name = def._mcl_sea_pickle_off + minetest.set_node(pos, node) + return + end + end + end, +}) diff --git a/mods/ITEMS/mcl_ocean/textures/mcl_ocean_sea_pickle_1_anim.png b/mods/ITEMS/mcl_ocean/textures/mcl_ocean_sea_pickle_1_anim.png new file mode 100644 index 0000000000000000000000000000000000000000..5c4f0064c6771018151598a3cecd0ab48b3daafd GIT binary patch literal 579 zcmeAS@N?(olHy`uVBq!ia0y~yU=UznU{K&-V_;yA?)-6vfq{W7$=lt9;Xep2*t>i( z0|NtRfk$L90|Vb75M~tB@M>USU|=ut^mS!_%p=XiDpC-w?$5x$c)`=fF~sBe-YJF| zB90<$`)BUmptC(@<5jVw#A3~$$R&b0N&Cgbl2R2lg&yj-2Hoap;$U;U6nSHbN0g^R z(qyYp0mq=XqT5@N`=46m%|CjNXLiBv9n}xA(;oc&{H*@}pU+b|3jRD+O;pIqd-M6n zRjZ$&r`Dg&zE@l4C&7__ubw?&*3& zR`;bo_%3tl;~%$s540sqY&n=GS_G~-^J>1Nk5Py4(nAg`0iS1XNjsp$!@u0Jr}oLBjTRE`z@bav)yxXYnNubQsc#&EFU+E`^#O8Tk<-Nal_{Y zg^bB!#{5#^AFBIO6TYoAG1$Mcu+fvPVaEL(T+Eqg7ufJe8CqD_1g_3dXpoVa$Ka98 jd*;>;>;Ky;KZx&N^_a_kS-=bi1_lOCS3j3^P6H=O_QyQZJZvJ-WhFff42;H}E{-7 zs4e&8bnkLr#`EYwP`e*rEKB>p28*uA!Rib9l-|Bl+99ITRDWRS>PHIyI+dDAvf4y6 zHQhP(zAiX9@yhOhjQgMdez14<_kG9RmrR*a6QjtZV)fSW+`4{+G|hd>_V1|Q_08|WkKiTjClKVI~W)$d@e4&?0!a^g~4G_9ry063$Gu& z`+2u3c>c(w_xS#TWdGeF5I@MF5%R%5b2Ct XtL|=?yWg9Efq}u()z4*}Q$iB}9ucp( literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_ocean/textures/mcl_ocean_sea_pickle_2_anim.png b/mods/ITEMS/mcl_ocean/textures/mcl_ocean_sea_pickle_2_anim.png new file mode 100644 index 0000000000000000000000000000000000000000..ce063765f80eb3529f1f914743f0ae13290cb7d7 GIT binary patch literal 581 zcmeAS@N?(olHy`uVBq!ia0y~yU=UznU{K&-V_;yA?)-6vfq{W7$=lt9;Xep2*t>i( z0|NtRfk$L90|Vb75M~tB@M>USU|=ut^mS!_%p=Xi$}07meJ=w8<0VfQ#}JR>N2eHO zTuBf)ULRki+QMy~a!P^E)uP>xFP5dfxWBo1aZ^b~Yw@&mdQA_K1eZK`@Zi$Ib(fmE zyr28Iaz9;mr@*mqNhtrMTl^CsVdfx&Fh8Em!<(Lg!U^;~jp6QVeH|R-R{gaQ1j()NzNqwOcZI zf=qg@Z(RCg@8pv{Yo%Uo=UEqgCN{b`wBCYMUgYDdQ;YVhZ+9u5m3rvG;r^hU)vFvN zH%GCa+Oo2?&;PrH_5G*o&wYFux4AuW|LL1Q^%D1=-ZeMSa!%Q!%kAHH=O_QyQZJZwB3Qg3cCFfdwsx;TbdoZcH`=zZ8h zqPE=AvQMPlNAidxmsLs83nhyu>_;vJPWNj%cWIqoQ+I-3jLh8FseF&-3y3ZWHeTZ4 zY3X!guJa`2mD8KN_dospVDIkl`;NO$396{FZGEowWtXzdy!TFiNi}=^KX~;{V&3Y4 z!oNHW9xX?1KMwEp4-8pvt>u1Ut=YFG-@g`uLJS8g{P_9u4Ce|mFmRqL+pvnQR(|^T z$8K}1Y~+1vFMQuR>F`;Z>Q8f<3cD)iy_XOTTO5#NrTihLRl`THcvX03cj%&kLuqpk zWj)ne({UtA(3U?xE}&>t#Yy$w?zgSxWJSE?UA-;a=KQ~wnH{2hGJHBLCHX}O>P}e> z+6_sHMNc=SuUz#oyKuoYnF(L5BKGlz?QGVXZ!&j9{iVRALDRH)dFnGH9xvXi( z0|NtRfk$L90|Vb75M~tB@M>USU|=ut^mS!_%p=XiViKfhc8r06@r0*~V~EG`qf-ns zZU+do?N_(t5Pa-7x$V+IkvodPZ90v7=hpGbT5St3QeiFEo4J{VDOQR}b%LVvbe@+{ zNggjJSq6J@9h_|AA+lJZXT!SYzb!f{=0%!2pW43rSN{F}-QB@ThpxYWUm%;9`?Nv) z{rrjFl-Je&OMCypbe(d|jsI*1H2i*ke0rVdUV>J(Hv6xxk2_AT`mRxJ(-q91Q_b{! zUi~3{QHE2mx6M?yo-JEu|6S|tu}!u+r_8mUEqig|w6{e*i|c16++@30Fe%w!sT5Dp zp8(D4f}CufT{+6$sz9&pWkQ%P8RW`gtjDPi|j*(?~V`ZH7hI(XxM2 z561eGU0dh4(K>7$_xDweN7w8#YhD!hx{D{|s`%SIm0DJpECj2Ln=ifLHnrI(ZL7?b ztIM{{iOngl+LtZYZpUu$mn&Y6t z%J&ZZJ@Q%?zen+P{Z3dYB{O%P_Fmy^>mA*K4t;*-8B-qWz1aLMT<=};e=}}=`(FO@ a5BM`)-7}rPZz(95FnGH9xvXH=O_QyQZJZwzs7ahFIz`*G0>Eak-aeC{djoya? z1di3eH&wNXlCdfkU>7WT@#KPQ!3+5SclTH;PAl)&SQhbvN;@p9c5BHVsdoyQ;P-Yy zke3&SVkMuaT&8cA?4GB6yWiif{eD+CDtlg>|BCA-XWjanH_I++JbnCk%j(_AuT0PW z{A$dwPyFMzAExcoRj%cHxg@YNFm?OhJh|U-EDdXuDysiadlaBKN(oy~d6k3Oy4 zzd=u1i|{x~b2~N|!&>H>}O)Z0>5B+5XX$N9TUG z&p{stqt6!v?AbV&bvJ$epT40&*1EXW-f+Xr^Xtzf7|wqtCfTt_|CZIgOD~rgT=*hy pSG+MSu-PU}+w{a`wexihjuV&IXFT!HWME)m@O1TaS?83{1OS8*wY~rV literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_ocean/textures/mcl_ocean_sea_pickle_4_anim.png b/mods/ITEMS/mcl_ocean/textures/mcl_ocean_sea_pickle_4_anim.png new file mode 100644 index 0000000000000000000000000000000000000000..6d3e56675234d221354c03e5dbbc26684d1145a2 GIT binary patch literal 529 zcmeAS@N?(olHy`uVBq!ia0y~yU=UznU{K&-V_;yA?)-6vfq{W7$=lt9;Xep2*t>i( z0|NtRfk$L90|Vb75M~tB@M>USU|=ut^mS!_%p=XiBK`9}_k0Eh#(ADDjv*e$--Z}^ z91aku{l8tcMXcRN@`z)LRY}ncC5tPze0+Uemlle?ih1=)sYFn>iGz<%kFRvCn3mpL z>rSqv!PZMWI$H#0y`S)BLYvBjt``q<%m4f@`u^_eeZgZA@8VUBKJy@5?C zF5a%7Xd`!I(u!-*3=GcOKh*rTYhGTUGe7%-K#69vX{z9+BN1EgH7$&0U~t^>@YFHO zwqzy-1uxZZjn$&uZ+>j@J@hU!YD=?1ytbIc`YB?~h9@2GwmbX(pk2T=ORzVx7ijNbeD$XYxf0+My^Zw%sUpmFU zg-NV8F_pY^J-_irN<@=F+D0LkOyS$J<{ItVE3_~5tY76m{;6JKcjG!Wr|K*!bIT~M zdG>v~d1T1K3oOn1EI0EfsSCJtZJsSA+1F{kZ)2VEefIG3ejByo%mcMKZ2xLMBB@0(FFfcH9y85}Sb4q9e0I4n7d;kCd literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_ocean/textures/mcl_ocean_sea_pickle_4_off.png b/mods/ITEMS/mcl_ocean/textures/mcl_ocean_sea_pickle_4_off.png new file mode 100644 index 0000000000000000000000000000000000000000..d2df9310946fa229ab2ae86198bad271802062c3 GIT binary patch literal 427 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7*pj^6T^Rm@;DWu&Co?cG za29w(7BevL9RguSQ4OyK1_lQ95>H=O_QyQZJgjC*tz>KfW$+<0|?0-U=;8^IbQ3uYG;&NXLrwCepIT|Bs_XBW#5ui? zYkBa74VQ$LJD1cJes1DQKBsMS)B4VpXEV}Dugj#~o255xNnV;-lt_il55WsNJsW3p zu4JFZC{mg~<6&cG{?`L<)~{J`Z++E&f5yyTiynTQwra+-oriuryxdhfTkOV^wObB6 d>(#AeT&_RA@`C)FGzJC+22WQ%mvv4FO#rU1xVQiS literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_ocean/textures/mcl_ocean_sea_pickle_item.png b/mods/ITEMS/mcl_ocean/textures/mcl_ocean_sea_pickle_item.png new file mode 100644 index 0000000000000000000000000000000000000000..88a4669add5ac6882e248df4298a5369fb811d83 GIT binary patch literal 456 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7*pj^6T^PXNr}OT51_lPs z0*}aI1_r)EAj~ML;nl#vz`$PO>Fdh=m`6~I!NkMQl!1YPG1Sw=F~s8Z*&svj!ww?< z-dz&v6Pf5Id&F^qRY}ncC5tEQDWZ3bS3Jn+T%9c59V_#PKXx%+p4EWKt9Iu3qiAzItU_q{g~jFN zUoIz@q^$_`^u4!c{i2T9O{>+c&ZW9*ax(m=V!eG%Dl2qR*zIupSxSqocZ+*T7Wci5 z5Sy2M`Q}sI=#b~rPE4v?{`{7TdSsH_@-H9lnl&vJWu}G9@aAm}c`L@tfzaG#gN z5{;Qnhc(iJ&)gAOd?uu>s_v|c`+9G?+c$3qJbRHA8pd;}ymwjrnv66d{lJ9IH(pP7 zdN^u!28RX+9|-*7R?lu#zmnbRUplL6Owxb BwBrB( literal 0 HcmV?d00001 From 8c0bea7dad59ca4507068b8ab90c868e1edf76ca Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Fri, 27 Dec 2019 15:32:09 +0100 Subject: [PATCH 462/737] Implement drops of sea pickles --- mods/ITEMS/mcl_ocean/sea_pickle.lua | 3 +++ 1 file changed, 3 insertions(+) diff --git a/mods/ITEMS/mcl_ocean/sea_pickle.lua b/mods/ITEMS/mcl_ocean/sea_pickle.lua index 85f75bad..2b0edf99 100644 --- a/mods/ITEMS/mcl_ocean/sea_pickle.lua +++ b/mods/ITEMS/mcl_ocean/sea_pickle.lua @@ -64,6 +64,7 @@ end local sounds_coral_plant = mcl_sounds.node_sound_leaves_defaults({footstep = mcl_sounds.node_sound_dirt_defaults().footstep}) local ontop = "dead_brain_coral_block" +local canonical = "mcl_ocean:sea_pickle_1_"..ontop for s=1,4 do local desc, doc_desc, doc_use, doc_create, nici, img, img_off, on_place @@ -113,6 +114,7 @@ for s=1,4 do } }, sounds = sounds_coral_plant, + drop = canonical .. " "..s, node_placement_prediction = "", node_dig_prediction = "mcl_ocean:"..ontop, after_dig_node = function(pos) @@ -145,6 +147,7 @@ for s=1,4 do inventory_image = img_off, wield_image = img_off, sounds = sounds_coral_plant, + drop = canonical .. " "..s, node_placement_prediction = "", node_dig_prediction = "mcl_ocean:"..ontop, after_dig_node = function(pos) From 90298821a358955e481a429cb98923a7d016b71d Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sun, 5 Jan 2020 10:49:04 +0100 Subject: [PATCH 463/737] Remove mob aliases --- mods/ENTITIES/mobs_mc/cow+mooshroom.lua | 3 --- mods/ENTITIES/mobs_mc/creeper.lua | 3 --- mods/ENTITIES/mobs_mc/horse.lua | 3 --- mods/ENTITIES/mobs_mc/ocelot.lua | 3 --- mods/ENTITIES/mobs_mc/pig.lua | 3 --- mods/ENTITIES/mobs_mc/polar_bear.lua | 4 ---- mods/ENTITIES/mobs_mc/rabbit.lua | 3 --- mods/ENTITIES/mobs_mc/sheep.lua | 2 -- mods/ENTITIES/mobs_mc/skeleton+stray.lua | 3 --- mods/ENTITIES/mobs_mc/slime+magma_cube.lua | 8 -------- mods/ENTITIES/mobs_mc/spider.lua | 4 ---- mods/ENTITIES/mobs_mc/squid.lua | 3 --- mods/ENTITIES/mobs_mc/villager.lua | 3 --- mods/ENTITIES/mobs_mc/wolf.lua | 6 ------ mods/ENTITIES/mobs_mc/zombie.lua | 3 --- mods/ENTITIES/mobs_mc/zombiepig.lua | 3 --- 16 files changed, 57 deletions(-) diff --git a/mods/ENTITIES/mobs_mc/cow+mooshroom.lua b/mods/ENTITIES/mobs_mc/cow+mooshroom.lua index cfc4991f..c93ebec4 100644 --- a/mods/ENTITIES/mobs_mc/cow+mooshroom.lua +++ b/mods/ENTITIES/mobs_mc/cow+mooshroom.lua @@ -138,9 +138,6 @@ mobs:register_mob("mobs_mc:mooshroom", mooshroom_def) mobs:spawn_specific("mobs_mc:cow", mobs_mc.spawn.grassland, {"air"}, 9, minetest.LIGHT_MAX+1, 30, 17000, 20, mobs_mc.spawn_height.overworld_min, mobs_mc.spawn_height.overworld_max) mobs:spawn_specific("mobs_mc:mooshroom", mobs_mc.spawn.mushroom_island, {"air"}, 9, minetest.LIGHT_MAX+1, 30, 17000, 10, mobs_mc.spawn_height.overworld_min, mobs_mc.spawn_height.overworld_max) --- compatibility -mobs:alias_mob("mobs_animal:cow", "mobs_mc:cow") - -- spawn egg mobs:register_egg("mobs_mc:cow", S("Cow"), "mobs_mc_spawn_icon_cow.png", 0) mobs:register_egg("mobs_mc:mooshroom", S("Mooshroom"), "mobs_mc_spawn_icon_mooshroom.png", 0) diff --git a/mods/ENTITIES/mobs_mc/creeper.lua b/mods/ENTITIES/mobs_mc/creeper.lua index b1c31054..4bda7a70 100644 --- a/mods/ENTITIES/mobs_mc/creeper.lua +++ b/mods/ENTITIES/mobs_mc/creeper.lua @@ -120,9 +120,6 @@ mobs:register_mob("mobs_mc:creeper", { mobs:spawn_specific("mobs_mc:creeper", mobs_mc.spawn.solid, {"air"}, 0, 7, 20, 16500, 2, mobs_mc.spawn_height.overworld_min, mobs_mc.spawn_height.overworld_max) --- compatibility -mobs:alias_mob("mobs:creeper", "mobs_mc:creeper") - -- spawn eggs mobs:register_egg("mobs_mc:creeper", S("Creeper"), "mobs_mc_spawn_icon_creeper.png", 0) diff --git a/mods/ENTITIES/mobs_mc/horse.lua b/mods/ENTITIES/mobs_mc/horse.lua index 7eea999a..bf95fa84 100644 --- a/mods/ENTITIES/mobs_mc/horse.lua +++ b/mods/ENTITIES/mobs_mc/horse.lua @@ -402,9 +402,6 @@ mobs:register_mob("mobs_mc:mule", mule) mobs:spawn_specific("mobs_mc:horse", mobs_mc.spawn.grassland_savanna, {"air"}, 0, minetest.LIGHT_MAX+1, 30, 15000, 12, mobs_mc.spawn_height.water+3, mobs_mc.spawn_height.overworld_max) mobs:spawn_specific("mobs_mc:donkey", mobs_mc.spawn.grassland_savanna, {"air"}, 0, minetest.LIGHT_MAX+1, 30, 15000, 12, mobs_mc.spawn_height.water+3, mobs_mc.spawn_height.overworld_max) --- compatibility -mobs:alias_mob("mobs:horse", "mobs_mc:horse") - -- spawn eggs mobs:register_egg("mobs_mc:horse", S("Horse"), "mobs_mc_spawn_icon_horse.png", 0) mobs:register_egg("mobs_mc:skeleton_horse", S("Skeleton Horse"), "mobs_mc_spawn_icon_horse_skeleton.png", 0) diff --git a/mods/ENTITIES/mobs_mc/ocelot.lua b/mods/ENTITIES/mobs_mc/ocelot.lua index e2b37220..f57a4e4a 100644 --- a/mods/ENTITIES/mobs_mc/ocelot.lua +++ b/mods/ENTITIES/mobs_mc/ocelot.lua @@ -201,9 +201,6 @@ mobs:spawn({ end, }) --- compatibility -mobs:alias_mob("mobs:kitten", "mobs_mc:ocelot") - -- spawn eggs -- FIXME: The spawn icon shows a cat texture, not an ocelot texture mobs:register_egg("mobs_mc:ocelot", S("Ocelot"), "mobs_mc_spawn_icon_cat.png", 0) diff --git a/mods/ENTITIES/mobs_mc/pig.lua b/mods/ENTITIES/mobs_mc/pig.lua index 472d8f77..768a3052 100644 --- a/mods/ENTITIES/mobs_mc/pig.lua +++ b/mods/ENTITIES/mobs_mc/pig.lua @@ -178,9 +178,6 @@ mobs:register_mob("mobs_mc:pig", { mobs:spawn_specific("mobs_mc:pig", mobs_mc.spawn.grassland, {"air"}, 9, minetest.LIGHT_MAX+1, 30, 15000, 30, mobs_mc.spawn_height.overworld_min, mobs_mc.spawn_height.overworld_max) --- compatibility -mobs:alias_mob("mobs:pig", "mobs_mc:pig") - -- spawn eggs mobs:register_egg("mobs_mc:pig", S("Pig"), "mobs_mc_spawn_icon_pig.png", 0) diff --git a/mods/ENTITIES/mobs_mc/polar_bear.lua b/mods/ENTITIES/mobs_mc/polar_bear.lua index 438ea320..09ca4d8f 100644 --- a/mods/ENTITIES/mobs_mc/polar_bear.lua +++ b/mods/ENTITIES/mobs_mc/polar_bear.lua @@ -56,10 +56,6 @@ mobs:register_mob("mobs_mc:polar_bear", { }) --- compatibility -mobs:alias_mob("mobs_mc:polarbear", "mobs_mc:polar_bear") - - mobs:spawn_specific("mobs_mc:polar_bear", mobs_mc.spawn.snow, {"air"}, 0, minetest.LIGHT_MAX+1, 30, 7000, 3, mobs_mc.spawn_height.overworld_min, mobs_mc.spawn_height.overworld_max) -- spawn egg diff --git a/mods/ENTITIES/mobs_mc/rabbit.lua b/mods/ENTITIES/mobs_mc/rabbit.lua index 8803b754..104aee14 100644 --- a/mods/ENTITIES/mobs_mc/rabbit.lua +++ b/mods/ENTITIES/mobs_mc/rabbit.lua @@ -162,9 +162,6 @@ mobs:register_egg("mobs_mc:rabbit", S("Rabbit"), "mobs_mc_spawn_icon_rabbit.png" mobs:register_egg("mobs_mc:killer_bunny", S("Killer Bunny"), "mobs_mc_spawn_icon_rabbit.png^[colorize:#FF0000:192", 0) -- TODO: Update inventory image --- compatibility -mobs:alias_mob("mobs:bunny", "mobs_mc:rabbit") - if minetest.settings:get_bool("log_mods") then minetest.log("action", "MC Bunny loaded") end diff --git a/mods/ENTITIES/mobs_mc/sheep.lua b/mods/ENTITIES/mobs_mc/sheep.lua index 3d643ec8..1e254557 100644 --- a/mods/ENTITIES/mobs_mc/sheep.lua +++ b/mods/ENTITIES/mobs_mc/sheep.lua @@ -260,8 +260,6 @@ mobs:register_mob("mobs_mc:sheep", { }) mobs:spawn_specific("mobs_mc:sheep", mobs_mc.spawn.grassland, {"air"}, 0, minetest.LIGHT_MAX+1, 30, 15000, 3, mobs_mc.spawn_height.overworld_min, mobs_mc.spawn_height.overworld_max) --- compatibility -mobs:alias_mob("mobs_animal:sheep", "mobs_mc:sheep") -- spawn eggs mobs:register_egg("mobs_mc:sheep", S("Sheep"), "mobs_mc_spawn_icon_sheep.png", 0) diff --git a/mods/ENTITIES/mobs_mc/skeleton+stray.lua b/mods/ENTITIES/mobs_mc/skeleton+stray.lua index 4157f750..0530f8b6 100644 --- a/mods/ENTITIES/mobs_mc/skeleton+stray.lua +++ b/mods/ENTITIES/mobs_mc/skeleton+stray.lua @@ -121,9 +121,6 @@ table.insert(stray.drops, { mobs:register_mob("mobs_mc:stray", stray) --- compatibility -mobs:alias_mob("mobs:skeleton", "mobs_mc:skeleton") - -- Overworld spawn mobs:spawn_specific("mobs_mc:skeleton", mobs_mc.spawn.solid, {"air"}, 0, 7, 20, 17000, 2, mobs_mc.spawn_height.overworld_min, mobs_mc.spawn_height.overworld_max) -- Nether spawn diff --git a/mods/ENTITIES/mobs_mc/slime+magma_cube.lua b/mods/ENTITIES/mobs_mc/slime+magma_cube.lua index 00486499..23c40f21 100644 --- a/mods/ENTITIES/mobs_mc/slime+magma_cube.lua +++ b/mods/ENTITIES/mobs_mc/slime+magma_cube.lua @@ -267,14 +267,6 @@ mobs:spawn_specific("mobs_mc:magma_cube_small", mobs_mc.spawn.nether_fortress, { mobs:spawn_specific("mobs_mc:magma_cube_big", mobs_mc.spawn.nether_fortress, {"air"}, 0, minetest.LIGHT_MAX+1, 30, 11200, 4, mmin, mmax) --- Compability -mobs:alias_mob("mobs_mc:greensmall", "mobs_mc:slime_tiny") -mobs:alias_mob("mobs_mc:greenmedium", "mobs_mc:slime_small") -mobs:alias_mob("mobs_mc:greenbig", "mobs_mc:slime_big") -mobs:alias_mob("mobs_mc:lavasmall", "mobs_mc:magma_cube_tiny") -mobs:alias_mob("mobs_mc:lavamedium", "mobs_mc:magma_cube_small") -mobs:alias_mob("mobs_mc:lavabig", "mobs_mc:magma_cube_big") - -- spawn eggs mobs:register_egg("mobs_mc:magma_cube_big", S("Magma Cube"), "mobs_mc_spawn_icon_magmacube.png") mobs:register_egg("mobs_mc:slime_big", S("Slime"), "mobs_mc_spawn_icon_slime.png") diff --git a/mods/ENTITIES/mobs_mc/spider.lua b/mods/ENTITIES/mobs_mc/spider.lua index 5a353c88..bb93b974 100644 --- a/mods/ENTITIES/mobs_mc/spider.lua +++ b/mods/ENTITIES/mobs_mc/spider.lua @@ -77,10 +77,6 @@ mobs:register_mob("mobs_mc:cave_spider", cave_spider) mobs:spawn_specific("mobs_mc:spider", mobs_mc.spawn.solid, {"air"}, 0, 7, 30, 17000, 2, mobs_mc.spawn_height.overworld_min, mobs_mc.spawn_height.overworld_max) --- compatibility -mobs:alias_mob("mobs:spider", "mobs_mc:spider") -mobs:alias_mob("esmobs:spider", "mobs_mc:spider") - -- spawn eggs mobs:register_egg("mobs_mc:spider", S("Spider"), "mobs_mc_spawn_icon_spider.png", 0) mobs:register_egg("mobs_mc:cave_spider", S("Cave Spider"), "mobs_mc_spawn_icon_cave_spider.png", 0) diff --git a/mods/ENTITIES/mobs_mc/squid.lua b/mods/ENTITIES/mobs_mc/squid.lua index d2a45f44..3b045a3b 100644 --- a/mods/ENTITIES/mobs_mc/squid.lua +++ b/mods/ENTITIES/mobs_mc/squid.lua @@ -61,8 +61,5 @@ local water = mobs_mc.spawn_height.water --name, nodes, neighbours, minlight, maxlight, interval, chance, active_object_count, min_height, max_height mobs:spawn_specific("mobs_mc:squid", mobs_mc.spawn.water, {mobs_mc.items.water_source}, 0, minetest.LIGHT_MAX+1, 30, 5500, 3, water-16, water) --- compatibility -mobs:alias_mob("mobs:squid", "mobs_mc:squid") - -- spawn eggs mobs:register_egg("mobs_mc:squid", S("Squid"), "mobs_mc_spawn_icon_squid.png", 0) diff --git a/mods/ENTITIES/mobs_mc/villager.lua b/mods/ENTITIES/mobs_mc/villager.lua index fe1ff526..4e3229c5 100644 --- a/mods/ENTITIES/mobs_mc/villager.lua +++ b/mods/ENTITIES/mobs_mc/villager.lua @@ -1032,9 +1032,6 @@ mobs:register_mob("mobs_mc:villager", { mobs:spawn_specific("mobs_mc:villager", mobs_mc.spawn.village, {"air"}, 0, minetest.LIGHT_MAX+1, 30, 8000, 4, mobs_mc.spawn_height.water+1, mobs_mc.spawn_height.overworld_max) --- compatibility -mobs:alias_mob("mobs:villager", "mobs_mc:villager") - -- spawn eggs mobs:register_egg("mobs_mc:villager", S("Villager"), "mobs_mc_spawn_icon_villager.png", 0) diff --git a/mods/ENTITIES/mobs_mc/wolf.lua b/mods/ENTITIES/mobs_mc/wolf.lua index e8e5de1f..820eaca3 100644 --- a/mods/ENTITIES/mobs_mc/wolf.lua +++ b/mods/ENTITIES/mobs_mc/wolf.lua @@ -206,12 +206,6 @@ mobs:register_mob("mobs_mc:dog", dog) -- Spawn mobs:spawn_specific("mobs_mc:wolf", mobs_mc.spawn.wolf, {"air"}, 0, minetest.LIGHT_MAX+1, 30, 9000, 20, mobs_mc.spawn_height.water+3, mobs_mc.spawn_height.overworld_max) --- Compatibility -mobs:alias_mob("mobs:wolf", "mobs_mc:wolf") -mobs:alias_mob("mobs:dog", "mobs_mc:dog") -mobs:alias_mob("esmobs:wolf", "mobs_mc:wolf") -mobs:alias_mob("esmobs:dog", "mobs_mc:dog") - mobs:register_egg("mobs_mc:wolf", S("Wolf"), "mobs_mc_spawn_icon_wolf.png", 0) if minetest.settings:get_bool("log_mods") then diff --git a/mods/ENTITIES/mobs_mc/zombie.lua b/mods/ENTITIES/mobs_mc/zombie.lua index d7548988..c67e73c3 100644 --- a/mods/ENTITIES/mobs_mc/zombie.lua +++ b/mods/ENTITIES/mobs_mc/zombie.lua @@ -124,9 +124,6 @@ mobs:spawn_specific("mobs_mc:baby_zombie", mobs_mc.spawn.solid, {"air"}, 0, 7, 3 mobs:spawn_specific("mobs_mc:husk", mobs_mc.spawn.desert, {"air"}, 0, 7, 30, 6500, 4, mobs_mc.spawn_height.overworld_min, mobs_mc.spawn_height.overworld_max) mobs:spawn_specific("mobs_mc:baby_husk", mobs_mc.spawn.desert, {"air"}, 0, 7, 30, 65000, 4, mobs_mc.spawn_height.overworld_min, mobs_mc.spawn_height.overworld_max) --- Compatibility -mobs:alias_mob("mobs:zombie", "mobs_mc:zombie") - -- Spawn eggs mobs:register_egg("mobs_mc:husk", S("Husk"), "mobs_mc_spawn_icon_husk.png", 0) mobs:register_egg("mobs_mc:zombie", S("Zombie"), "mobs_mc_spawn_icon_zombie.png", 0) diff --git a/mods/ENTITIES/mobs_mc/zombiepig.lua b/mods/ENTITIES/mobs_mc/zombiepig.lua index 77bd0e19..2f2aeede 100644 --- a/mods/ENTITIES/mobs_mc/zombiepig.lua +++ b/mods/ENTITIES/mobs_mc/zombiepig.lua @@ -108,9 +108,6 @@ mobs:spawn_specific("mobs_mc:baby_pigman", mobs_mc.spawn.solid, {"air"}, 0, mine -- Spawning in Nether portals in the Overworld mobs:spawn_specific("mobs_mc:pigman", mobs_mc.spawn.nether_portal, {"air"}, 0, minetest.LIGHT_MAX+1, 30, 500, 4, mobs_mc.spawn_height.overworld_min, mobs_mc.spawn_height.overworld_max) --- compatibility -mobs:alias_mob("mobs:pigman", "mobs_mc:pigman") - -- spawn eggs mobs:register_egg("mobs_mc:pigman", S("Zombie Pigman"), "mobs_mc_spawn_icon_zombie_pigman.png", 0) From 1fc2ba6879b5c8a30936758f75df2863fad0a909 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sun, 5 Jan 2020 21:49:41 +0100 Subject: [PATCH 464/737] Craftguide: Show recipes hidden in creative inv. --- mods/HELP/mcl_craftguide/init.lua | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/mods/HELP/mcl_craftguide/init.lua b/mods/HELP/mcl_craftguide/init.lua index fab6aa53..159bc745 100644 --- a/mods/HELP/mcl_craftguide/init.lua +++ b/mods/HELP/mcl_craftguide/init.lua @@ -865,8 +865,7 @@ local function get_init_items() local c = 0 for name, def in pairs(reg_items) do local is_fuel = cache_fuel(name) - if not (def.groups.not_in_craft_guide == 1 or - def.groups.not_in_creative_inventory == 1) and + if not (def.groups.not_in_craft_guide == 1) and def.description and def.description ~= "" and (cache_recipes(name) or is_fuel) then c = c + 1 From 01eb39b62fa9c823b27f71c32d38517c9ab0193a Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 6 Jan 2020 11:20:14 +0100 Subject: [PATCH 465/737] Remove awd and awpl commands --- mods/HUD/awards/chat_commands.lua | 28 ---------------------------- 1 file changed, 28 deletions(-) diff --git a/mods/HUD/awards/chat_commands.lua b/mods/HUD/awards/chat_commands.lua index 6571267d..fab2d032 100644 --- a/mods/HUD/awards/chat_commands.lua +++ b/mods/HUD/awards/chat_commands.lua @@ -38,31 +38,3 @@ minetest.register_chatcommand("awards", { end }) -minetest.register_chatcommand("awd", { - params = S(""), - description = S("Show details of an achievement"), - func = function(name, param) - local def = awards.def[param] - if def then - minetest.chat_send_player(name, string.format(S("%s: %s"), def.title, def.description)) - else - minetest.chat_send_player(name, S("Achievement not found.")) - end - end -}) - -minetest.register_chatcommand("awpl", { - privs = { - server = true - }, - params = S(""), - description = S("Get the achievements statistics for the given player or yourself"), - func = function(name, param) - if not param or param == "" then - param = name - end - minetest.chat_send_player(name, param) - local player = awards.player(param) - minetest.chat_send_player(name, dump(player)) - end -}) From 05152589fa2f3d395eb3a97c4c36644c6790d803 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 6 Jan 2020 11:24:28 +0100 Subject: [PATCH 466/737] Fix crash in awards mod --- mods/HUD/awards/api.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/HUD/awards/api.lua b/mods/HUD/awards/api.lua index b25a2aaa..8af4d027 100644 --- a/mods/HUD/awards/api.lua +++ b/mods/HUD/awards/api.lua @@ -468,7 +468,7 @@ function awards.show_to(name, to, sid, text) minetest.chat_send_player(to, S("You have not gotten any awards.")) return end - minetest.chat_send_player(to, S("@1’s awards:"), name) + minetest.chat_send_player(to, S("@1’s awards:", name)) for _, str in pairs(awards.players[name].unlocked) do local def = awards.def[str] From f2b7392a300357ce9f317642208e9b747c4c7960 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 6 Jan 2020 13:02:30 +0100 Subject: [PATCH 467/737] Use "minetest" instead of "core" table --- mods/ENTITIES/mcl_falling_nodes/init.lua | 6 +++--- mods/ENTITIES/mcl_item_entity/init.lua | 26 ++++++++++++------------ mods/ITEMS/REDSTONE/mesecons/util.lua | 2 +- mods/ITEMS/mcl_anvils/init.lua | 2 +- mods/ITEMS/mcl_banners/patterncraft.lua | 2 +- mods/ITEMS/mcl_books/init.lua | 8 ++++---- mods/ITEMS/mcl_core/craftitems.lua | 2 +- mods/ITEMS/mcl_core/nodes_misc.lua | 4 ++-- mods/MISC/mcl_commands/init.lua | 2 +- 9 files changed, 27 insertions(+), 27 deletions(-) diff --git a/mods/ENTITIES/mcl_falling_nodes/init.lua b/mods/ENTITIES/mcl_falling_nodes/init.lua index 71478bfe..5e1168ca 100644 --- a/mods/ENTITIES/mcl_falling_nodes/init.lua +++ b/mods/ENTITIES/mcl_falling_nodes/init.lua @@ -79,7 +79,7 @@ minetest.register_entity(":__builtin:falling_node", { meta = {}, set_node = function(self, node, meta) - local def = core.registered_nodes[node.name] + local def = minetest.registered_nodes[node.name] -- Change falling node if definition tells us to if def and def._mcl_falling_node_alternative then node.name = def._mcl_falling_node_alternative @@ -90,9 +90,9 @@ minetest.register_entity(":__builtin:falling_node", { -- Set correct entity yaw if def and node.param2 ~= 0 then if (def.paramtype2 == "facedir" or def.paramtype2 == "colorfacedir") then - self.object:set_yaw(core.dir_to_yaw(core.facedir_to_dir(node.param2))) + self.object:set_yaw(minetest.dir_to_yaw(minetest.facedir_to_dir(node.param2))) elseif (def.paramtype2 == "wallmounted" or def.paramtype2 == "colorwallmounted") then - self.object:set_yaw(core.dir_to_yaw(core.wallmounted_to_dir(node.param2))) + self.object:set_yaw(minetest.dir_to_yaw(minetest.wallmounted_to_dir(node.param2))) end if def.light_source then glow = def.light_source diff --git a/mods/ENTITIES/mcl_item_entity/init.lua b/mods/ENTITIES/mcl_item_entity/init.lua index 8ee1c955..3c481034 100644 --- a/mods/ENTITIES/mcl_item_entity/init.lua +++ b/mods/ENTITIES/mcl_item_entity/init.lua @@ -260,7 +260,7 @@ function minetest.handle_node_drops(pos, drops, digger) dpos.y = dpos.y + 1 end -- Spawn item and apply random speed - local obj = core.add_item(dpos, drop_item) + local obj = minetest.add_item(dpos, drop_item) if obj ~= nil then local x = math.random(1, 5) if math.random(1,2) == 1 then @@ -286,7 +286,7 @@ function minetest.item_drop(itemstack, dropper, pos) cs = 1 end local item = itemstack:take_item(cs) - local obj = core.add_item(p, item) + local obj = minetest.add_item(p, item) if obj then v.x = v.x*4 v.y = v.y*4 + 2 @@ -306,7 +306,7 @@ if not time_to_live then time_to_live = 300 end -core.register_entity(":__builtin:item", { +minetest.register_entity(":__builtin:item", { initial_properties = { hp_max = 1, physical = true, @@ -360,12 +360,12 @@ core.register_entity(":__builtin:item", { end local item_texture = nil local item_type = "" - if core.registered_items[itemname] then - item_texture = core.registered_items[itemname].inventory_image - item_type = core.registered_items[itemname].type - description = core.registered_items[itemname].description + if minetest.registered_items[itemname] then + item_texture = minetest.registered_items[itemname].inventory_image + item_type = minetest.registered_items[itemname].type + description = minetest.registered_items[itemname].description end - local ndef = core.registered_items[itemname] + local ndef = minetest.registered_items[itemname] local glow if ndef then glow = ndef.light_source @@ -405,7 +405,7 @@ core.register_entity(":__builtin:item", { end, get_staticdata = function(self) - return core.serialize({ + return minetest.serialize({ itemstring = self.itemstring, always_collect = self.always_collect, age = self.age, @@ -417,7 +417,7 @@ core.register_entity(":__builtin:item", { on_activate = function(self, staticdata, dtime_s) if string.sub(staticdata, 1, string.len("return")) == "return" then - local data = core.deserialize(staticdata) + local data = minetest.deserialize(staticdata) if data and type(data) == "table" then self.itemstring = data.itemstring self.always_collect = data.always_collect @@ -522,7 +522,7 @@ core.register_entity(":__builtin:item", { end local p = self.object:get_pos() - local node = core.get_node_or_nil(p) + local node = minetest.get_node_or_nil(p) local in_unloaded = (node == nil) -- If no collector was found for a long enough time, declare the magnet as disabled @@ -677,11 +677,11 @@ core.register_entity(":__builtin:item", { local nn = minetest.get_node({x=p.x, y=p.y-0.5, z=p.z}).name local v = self.object:get_velocity() - if not core.registered_nodes[nn] or core.registered_nodes[nn].walkable and v.y == 0 then + if not minetest.registered_nodes[nn] or minetest.registered_nodes[nn].walkable and v.y == 0 then if self.physical_state then local own_stack = ItemStack(self.object:get_luaentity().itemstring) -- Merge with close entities of the same item - for _, object in ipairs(core.get_objects_inside_radius(p, 0.8)) do + for _, object in ipairs(minetest.get_objects_inside_radius(p, 0.8)) do local obj = object:get_luaentity() if obj and obj.name == "__builtin:item" and obj.physical_state == false then diff --git a/mods/ITEMS/REDSTONE/mesecons/util.lua b/mods/ITEMS/REDSTONE/mesecons/util.lua index 91da1e95..b6602526 100644 --- a/mods/ITEMS/REDSTONE/mesecons/util.lua +++ b/mods/ITEMS/REDSTONE/mesecons/util.lua @@ -366,7 +366,7 @@ function mesecon.vm_get_node(pos) local tbl = vm_get_or_create_entry(pos) local index = tbl.va:indexp(pos) local node_value = tbl.data[index] - if node_value == core.CONTENT_IGNORE then + if node_value == minetest.CONTENT_IGNORE then return nil else local node_param1 = tbl.param1[index] diff --git a/mods/ITEMS/mcl_anvils/init.lua b/mods/ITEMS/mcl_anvils/init.lua index b2608cd8..a12a13cd 100644 --- a/mods/ITEMS/mcl_anvils/init.lua +++ b/mods/ITEMS/mcl_anvils/init.lua @@ -179,7 +179,7 @@ local function update_anvil_slots(meta) else -- Custom name set. Colorize it! -- This makes the name visually different from unnamed items - meta:set_string("description", core.colorize(NAME_COLOR, new_name)) + meta:set_string("description", minetest.colorize(NAME_COLOR, new_name)) end -- Save the raw name internally, too meta:set_string("name", new_name) diff --git a/mods/ITEMS/mcl_banners/patterncraft.lua b/mods/ITEMS/mcl_banners/patterncraft.lua index 3f161267..e1f05ff1 100644 --- a/mods/ITEMS/mcl_banners/patterncraft.lua +++ b/mods/ITEMS/mcl_banners/patterncraft.lua @@ -281,7 +281,7 @@ mcl_banners.make_advanced_banner_description = function(description, layers) -- Final string concatenations: Just a list of strings local append = table.concat(layerstrings, "\n") - description = description .. "\n" .. core.colorize("#8F8F8F", append) + description = description .. "\n" .. minetest.colorize("#8F8F8F", append) return description end end diff --git a/mods/ITEMS/mcl_books/init.lua b/mods/ITEMS/mcl_books/init.lua index 87ca3194..1cc0ef3d 100644 --- a/mods/ITEMS/mcl_books/init.lua +++ b/mods/ITEMS/mcl_books/init.lua @@ -60,7 +60,7 @@ local make_description = function(title, author, generation) else desc = S("Tattered Book") end - desc = desc .. "\n" .. core.colorize("#AAAAAA", S("by @1", author)) + desc = desc .. "\n" .. minetest.colorize("#AAAAAA", S("by @1", author)) return desc end @@ -102,7 +102,7 @@ local read = function(itemstack, user, pointed_thing) local text = get_text(itemstack) local formspec = "size[8,9]".. "background[-0.5,-0.5;9,10;mcl_books_book_bg.png]".. - "textarea[0.75,0.1;7.25,9;;"..core.colorize("#000000", minetest.formspec_escape(text))..";]".. + "textarea[0.75,0.1;7.25,9;;"..minetest.colorize("#000000", minetest.formspec_escape(text))..";]".. "button_exit[2.25,7.95;3,1;ok;"..minetest.formspec_escape(S("Done")).."]" minetest.show_formspec(user:get_player_name(), "mcl_books:written_book", formspec) end @@ -136,8 +136,8 @@ minetest.register_on_player_receive_fields(function ( player, formname, fields ) local name = player:get_player_name() local formspec = "size[8,9]".. "background[-0.5,-0.5;9,10;mcl_books_book_bg.png]".. - "field[0.75,1;7.25,1;title;"..minetest.formspec_escape(core.colorize("#000000", S("Enter book title:")))..";]".. - "label[0.75,1.5;"..minetest.formspec_escape(core.colorize("#404040", S("by @1", name))).."]".. + "field[0.75,1;7.25,1;title;"..minetest.formspec_escape(minetest.colorize("#000000", S("Enter book title:")))..";]".. + "label[0.75,1.5;"..minetest.formspec_escape(minetest.colorize("#404040", S("by @1", name))).."]".. "button_exit[0.75,7.95;3,1;sign;"..minetest.formspec_escape(S("Sign and Close")).."]".. "tooltip[sign;"..minetest.formspec_escape(S("Note: The book will no longer be editable after signing")).."]".. "button[4.25,7.95;3,1;cancel;"..minetest.formspec_escape(S("Cancel")).."]" diff --git a/mods/ITEMS/mcl_core/craftitems.lua b/mods/ITEMS/mcl_core/craftitems.lua index 42b6210e..3b980f1d 100644 --- a/mods/ITEMS/mcl_core/craftitems.lua +++ b/mods/ITEMS/mcl_core/craftitems.lua @@ -146,7 +146,7 @@ minetest.register_craftitem("mcl_core:apple", { -- TODO: Status effects minetest.register_craftitem("mcl_core:apple_gold", { - description = core.colorize("#55FFFF", S("Golden Apple")), + description = minetest.colorize("#55FFFF", S("Golden Apple")), _doc_items_longdesc = S("Golden apples are precious food items which can be eaten."), wield_image = "mcl_core_apple_golden.png", inventory_image = "mcl_core_apple_golden.png", diff --git a/mods/ITEMS/mcl_core/nodes_misc.lua b/mods/ITEMS/mcl_core/nodes_misc.lua index 800d7442..b7709d13 100644 --- a/mods/ITEMS/mcl_core/nodes_misc.lua +++ b/mods/ITEMS/mcl_core/nodes_misc.lua @@ -199,7 +199,7 @@ minetest.register_node("mcl_core:realm_barrier", { -- Prevent placement to protect player from screwing up the world, because the node is not pointable and hard to get rid of. node_placement_prediction = "", on_place = function(pos, placer, itemstack, pointed_thing) - minetest.chat_send_player(placer:get_player_name(), core.colorize("#FF0000", "You can't just place a realm barrier by hand!")) + minetest.chat_send_player(placer:get_player_name(), minetest.colorize("#FF0000", "You can't just place a realm barrier by hand!")) return end, }) @@ -229,7 +229,7 @@ minetest.register_node("mcl_core:void", { -- Prevent placement to protect player from screwing up the world, because the node is not pointable and hard to get rid of. node_placement_prediction = "", on_place = function(pos, placer, itemstack, pointed_thing) - minetest.chat_send_player(placer:get_player_name(), core.colorize("#FF0000", "You can't just place the void by hand!")) + minetest.chat_send_player(placer:get_player_name(), minetest.colorize("#FF0000", "You can't just place the void by hand!")) return end, drop = "", diff --git a/mods/MISC/mcl_commands/init.lua b/mods/MISC/mcl_commands/init.lua index c77b3081..0532108f 100644 --- a/mods/MISC/mcl_commands/init.lua +++ b/mods/MISC/mcl_commands/init.lua @@ -141,7 +141,7 @@ if minecraftaliases then description = S("List bans"), privs = minetest.chatcommands["ban"].privs, func = function(name) - return true, S("Ban list: @1", core.get_ban_list()) + return true, S("Ban list: @1", minetest.get_ban_list()) end, }) end From 7a870d0eadd51b1eabb9608f0bc7dfa384073ed6 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 6 Jan 2020 13:46:43 +0100 Subject: [PATCH 468/737] Message when trying to spawn forbidden hostile mob --- mods/ENTITIES/mcl_mobs/api.lua | 14 ++++++++++---- mods/ENTITIES/mcl_mobs/locale/mcl_mobs.de.tr | 1 + mods/ENTITIES/mcl_mobs/locale/template.txt | 1 + mods/MISC/mcl_commands/init.lua | 16 ++++++++++++++++ mods/MISC/mcl_commands/locale/mcl_commands.de.tr | 1 + mods/MISC/mcl_commands/locale/template.txt | 1 + 6 files changed, 30 insertions(+), 4 deletions(-) diff --git a/mods/ENTITIES/mcl_mobs/api.lua b/mods/ENTITIES/mcl_mobs/api.lua index fb823270..9be21520 100644 --- a/mods/ENTITIES/mcl_mobs/api.lua +++ b/mods/ENTITIES/mcl_mobs/api.lua @@ -50,8 +50,8 @@ end -- Load settings local damage_enabled = minetest.settings:get_bool("enable_damage") -local mobs_spawn = minetest.settings:get_bool("mobs_spawn") ~= false -local peaceful_only = minetest.settings:get_bool("only_peaceful_mobs") +local mobs_spawn = minetest.settings:get_bool("mobs_spawn", true) ~= false + local disable_blood = minetest.settings:get_bool("mobs_disable_blood") local mobs_drop_items = minetest.settings:get_bool("mobs_drop_items") ~= false local mobs_griefing = minetest.settings:get_bool("mobs_griefing") ~= false @@ -65,7 +65,7 @@ local max_per_block = tonumber(minetest.settings:get("max_objects_per_block") or local mobs_spawn_chance = tonumber(minetest.settings:get("mobs_spawn_chance") or 2.5) -- Peaceful mode message so players will know there are no monsters -if peaceful_only then +if minetest.settings:get_bool("only_peaceful_mobs", false) then minetest.register_on_joinplayer(function(player) minetest.chat_send_player(player:get_player_name(), S("Peaceful mode active! No monsters will spawn.")) @@ -2756,7 +2756,7 @@ local mob_activate = function(self, staticdata, def, dtime) -- remove monsters in peaceful mode if self.type == "monster" - and peaceful_only then + and minetest.settings:get_bool("only_peaceful_mobs", false) then self.object:remove() @@ -3754,6 +3754,12 @@ function mobs:register_egg(mob, desc, background, addegg, no_creative) return itemstack end + if minetest.settings:get_bool("only_peaceful_mobs", false) + and minetest.registered_entities[mob].type == "monster" then + minetest.chat_send_player(name, S("Only peaceful mobs allowed!")) + return itemstack + end + pos.y = pos.y + 1 local mob = minetest.add_entity(pos, mob) diff --git a/mods/ENTITIES/mcl_mobs/locale/mcl_mobs.de.tr b/mods/ENTITIES/mcl_mobs/locale/mcl_mobs.de.tr index 59f65eae..027c1664 100644 --- a/mods/ENTITIES/mcl_mobs/locale/mcl_mobs.de.tr +++ b/mods/ENTITIES/mcl_mobs/locale/mcl_mobs.de.tr @@ -6,3 +6,4 @@ You need the “maphack” privilege to change the mob spawner.=Sie brauchen das Name Tag=Namensschild A name tag is an item to name a mob.=Ein Namensschild ist ein Gegenstand, um einen Mob zu benennen. Before you use the name tag, you need to set a name at an anvil. Then you can use the name tag to name a mob. This uses up the name tag.=Bevor Sie ein Namensschild benutzen können, müssen Sie ihn an einem Amboss benennen. Dann können können Sie das Namensschild benutztn, um einen Mob zu benennen. Das wird das Namensschild verbrauchen. +Only peaceful mobs allowed!=Nur friedliche Mobs erlaubt! diff --git a/mods/ENTITIES/mcl_mobs/locale/template.txt b/mods/ENTITIES/mcl_mobs/locale/template.txt index db0c4d53..1751be38 100644 --- a/mods/ENTITIES/mcl_mobs/locale/template.txt +++ b/mods/ENTITIES/mcl_mobs/locale/template.txt @@ -6,3 +6,4 @@ You need the “maphack” privilege to change the mob spawner.= Name Tag= A name tag is an item to name a mob.= Before you use the name tag, you need to set a name at an anvil. Then you can use the name tag to name a mob. This uses up the name tag.= +Only peaceful mobs allowed!= diff --git a/mods/MISC/mcl_commands/init.lua b/mods/MISC/mcl_commands/init.lua index 0532108f..8b931d0b 100644 --- a/mods/MISC/mcl_commands/init.lua +++ b/mods/MISC/mcl_commands/init.lua @@ -126,6 +126,21 @@ local function register_chatcommand_alias(alias, cmd) minetest.register_chatcommand(alias, def) end +-- Replace spawnentity cmd to disallow spawning of hostile mobs if disabled +local orig_func = minetest.registered_chatcommands["spawnentity"].func +local cmd = table.copy(minetest.registered_chatcommands["spawnentity"]) +cmd.func = function(name, param) + local ent = minetest.registered_entities[param] + if minetest.settings:get_bool("only_peaceful_mobs", false) and ent and ent._cmi_is_mob and ent.type == "monster" then + return false, S("Only peaceful mobs allowed!") + else + local bool, msg = orig_func(name, param) + return bool, msg + end +end +minetest.unregister_chatcommand("spawnentity") +minetest.register_chatcommand("spawnentity", cmd) + if minecraftaliases then register_chatcommand_alias("?", "help") register_chatcommand_alias("who", "list") @@ -145,3 +160,4 @@ if minecraftaliases then end, }) end + diff --git a/mods/MISC/mcl_commands/locale/mcl_commands.de.tr b/mods/MISC/mcl_commands/locale/mcl_commands.de.tr index 98f1e6a0..68d26751 100644 --- a/mods/MISC/mcl_commands/locale/mcl_commands.de.tr +++ b/mods/MISC/mcl_commands/locale/mcl_commands.de.tr @@ -20,3 +20,4 @@ List bans=Bannliste anzeigen Ban list: @1=Bannliste: @1 Show who is logged on=Anzeigen, wer eingeloggt ist Displays the world seed=Den Seed der Welt anzeigen +Only peaceful mobs allowed!=Nur friedliche Mobs erlaubt! diff --git a/mods/MISC/mcl_commands/locale/template.txt b/mods/MISC/mcl_commands/locale/template.txt index fc979be6..5b4370b8 100644 --- a/mods/MISC/mcl_commands/locale/template.txt +++ b/mods/MISC/mcl_commands/locale/template.txt @@ -20,3 +20,4 @@ List bans= Ban list: @1= Show who is logged on= Displays the world seed= +Only peaceful mobs allowed!= From 1210d8c9a769e73f791cbfbd0fcb3ca40a4e315b Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 6 Jan 2020 14:46:10 +0100 Subject: [PATCH 469/737] Workaround for mobs glitching through walls Thanks, MysticTempest! --- mods/ENTITIES/mcl_mobs/api.lua | 21 ++++++++++++++++----- mods/ENTITIES/mobs_mc/spider.lua | 2 +- 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/mods/ENTITIES/mcl_mobs/api.lua b/mods/ENTITIES/mcl_mobs/api.lua index 9be21520..1ba87dd8 100644 --- a/mods/ENTITIES/mcl_mobs/api.lua +++ b/mods/ENTITIES/mcl_mobs/api.lua @@ -1448,12 +1448,15 @@ local smart_mobs = function(self, s, p, dist, dtime) end end - -- will try again in 2 second + -- will try again in 2 seconds self.path.stuck_timer = stuck_timeout - 2 - else - -- yay i found path + elseif s.y < p1.y and (not self.fly) then + do_jump(self) --add jump to pathfinding + self.path.following = true + -- Yay, I found path! -- TODO: Implement war_cry sound without being annoying --mob_sound(self, "war_cry", true) + else set_velocity(self, self.walk_velocity) -- follow path now that it has it @@ -3132,9 +3135,17 @@ local function scale_difficulty(value, default, min, special) end end +local collisionbox = def.collisionbox or {-0.25, -0.25, -0.25, 0.25, 0.25, 0.25} +-- Workaround for : +-- Increase upper Y limit to avoid mobs glitching through solid nodes. +-- FIXME: Remove workaround if it's no longer needed. +if collisionbox[5] < 0.79 then + collisionbox[5] = 0.79 +end + minetest.register_entity(name, { - stepheight = def.stepheight or 1.1, -- was 0.6 + stepheight = def.stepheight or 0.6, name = name, type = def.type, attack_type = def.attack_type, @@ -3154,7 +3165,7 @@ minetest.register_entity(name, { breath_max = def.breath_max or 15, breathes_in_water = def.breathes_in_water or false, physical = true, - collisionbox = def.collisionbox or {-0.25, -0.25, -0.25, 0.25, 0.25, 0.25}, + collisionbox = collisionbox, selectionbox = def.selectionbox or def.collisionbox, visual = def.visual, visual_size = def.visual_size or {x = 1, y = 1}, diff --git a/mods/ENTITIES/mobs_mc/spider.lua b/mods/ENTITIES/mobs_mc/spider.lua index bb93b974..eda2e37b 100644 --- a/mods/ENTITIES/mobs_mc/spider.lua +++ b/mods/ENTITIES/mobs_mc/spider.lua @@ -38,7 +38,7 @@ local spider = { }, walk_velocity = 3.9, jump = true, - jump_height = 2, + jump_height = 4, view_range = 16, floats = 1, drops = { From 0ae2c5b25f0cb8394010a5b6cdaf7db087ce613b Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 6 Jan 2020 14:49:44 +0100 Subject: [PATCH 470/737] Mention mob glitch workaround --- mods/ENTITIES/mcl_mobs/api.txt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/mods/ENTITIES/mcl_mobs/api.txt b/mods/ENTITIES/mcl_mobs/api.txt index 96ae363b..7cc5725b 100644 --- a/mods/ENTITIES/mcl_mobs/api.txt +++ b/mods/ENTITIES/mcl_mobs/api.txt @@ -165,7 +165,9 @@ functions needed for the mob to work properly which contains the following: 'mesh' uses separate object file to define mob. 'visual_size' has the size of the mob, defaults to {x = 1, y = 1} 'collisionbox' has the box in which mob can be interacted with the - world e.g. {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5} + world e.g. {-0.5, -0.5, -0.5, 0.5, 0.8, 0.5}. + NOTE: Due to a workaround, the upper Y coordinate will be forced + to a minimum value of 0.79. 'selectionbox' has the box in which player can interact with mob 'textures' holds a table list of textures to be used for mob, or you could use multiple lists inside another table for random From 82f851e20de84df7b01b7744e062c6bad32f521a Mon Sep 17 00:00:00 2001 From: aldum Date: Mon, 6 Jan 2020 15:10:44 +0100 Subject: [PATCH 471/737] Add theoretical support for larger nether portals --- mods/ITEMS/mcl_portals/portal_nether.lua | 32 ++++++++++++++---------- 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/mods/ITEMS/mcl_portals/portal_nether.lua b/mods/ITEMS/mcl_portals/portal_nether.lua index 99a2f4a3..ab64ff90 100644 --- a/mods/ITEMS/mcl_portals/portal_nether.lua +++ b/mods/ITEMS/mcl_portals/portal_nether.lua @@ -8,8 +8,8 @@ local nobj_cave = nil -- Portal frame sizes local FRAME_SIZE_X_MIN = 4 local FRAME_SIZE_Y_MIN = 5 -local FRAME_SIZE_X_MAX = 23 -local FRAME_SIZE_Y_MAX = 23 +local FRAME_SIZE_X_MAX = 4 -- TODO: 23 +local FRAME_SIZE_Y_MAX = 5 -- TODO: 23 local TELEPORT_DELAY = 3 -- seconds before teleporting in Nether portal local TELEPORT_COOLOFF = 4 -- after object was teleported, for this many seconds it won't teleported again @@ -273,16 +273,21 @@ end local function is_portal(pos) local xsize, ysize = FRAME_SIZE_X_MIN-1, FRAME_SIZE_Y_MIN-1 - for d = -xsize, xsize do - for y = -ysize, ysize do - local px = {x = pos.x + d, y = pos.y + y, z = pos.z} - local pz = {x = pos.x, y = pos.y + y, z = pos.z + d} - - if check_portal(px, {x = px.x + xsize, y = px.y + ysize, z = px.z}) then - return px, {x = px.x + xsize, y = px.y + ysize, z = px.z} - end - if check_portal(pz, {x = pz.x, y = pz.y + ysize, z = pz.z + xsize}) then - return pz, {x = pz.x, y = pz.y + ysize, z = pz.z + xsize} + for sx = FRAME_SIZE_X_MIN, FRAME_SIZE_X_MAX do + local xsize = sx - 1 + for sy = FRAME_SIZE_Y_MIN, FRAME_SIZE_Y_MAX do + local ysize = sy - 1 + for d = -xsize, xsize do + for y = -ysize, ysize do + local px = {x = pos.x + d, y = pos.y + y, z = pos.z} + local pz = {x = pos.x, y = pos.y + y, z = pos.z + d} + if check_portal(px, {x = px.x + xsize, y = px.y + ysize, z = px.z}) then + return px, {x = px.x + xsize, y = px.y + ysize, z = px.z} + end + if check_portal(pz, {x = pz.x, y = pz.y + ysize, z = pz.z + xsize}) then + return pz, {x = pz.x, y = pz.y + ysize, z = pz.z + xsize} + end + end end end end @@ -349,7 +354,8 @@ function mcl_portals.light_nether_portal(pos) target.y = find_nether_target_y(target.x, target.z) end - local dmin, dmax, ymin, ymax = 0, FRAME_SIZE_X_MIN - 1, p1.y, p2.y + local dmin, ymin, ymax = 0, p1.y, p2.y + local dmax = math.max(math.abs(p1.x - p2.x), math.abs(p1.z - p2.z)) for d = dmin, dmax do for y = ymin, ymax do if not ((d == dmin or d == dmax) and (y == ymin or y == ymax)) then From 9b8d6c4cece92846805073790c65559817698198 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 6 Jan 2020 16:49:22 +0100 Subject: [PATCH 472/737] Destroy end portal when surrounding bedrock goes --- mods/ITEMS/mcl_portals/portal_end.lua | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/mods/ITEMS/mcl_portals/portal_end.lua b/mods/ITEMS/mcl_portals/portal_end.lua index 0b13a321..6a0189c9 100644 --- a/mods/ITEMS/mcl_portals/portal_end.lua +++ b/mods/ITEMS/mcl_portals/portal_end.lua @@ -6,6 +6,21 @@ local SPAWN_MAX = mcl_vars.mg_end_min+98 local mg_name = minetest.get_mapgen_setting("mg_name") +local destroy_portal = function(pos) + local neighbors = { + { x=1, y=0, z=0 }, + { x=-1, y=0, z=0 }, + { x=0, y=0, z=1 }, + { x=0, y=0, z=-1 }, + } + for n=1, #neighbors do + local npos = vector.add(pos, neighbors[n]) + if minetest.get_node(npos).name == "mcl_portals:portal_end" then + minetest.remove_node(npos) + end + end +end + -- End portal minetest.register_node("mcl_portals:portal_end", { description = S("End Portal"), @@ -46,6 +61,7 @@ minetest.register_node("mcl_portals:portal_end", { light_source = 14, post_effect_color = {a = 192, r = 0, g = 0, b = 0}, alpha = 192, + after_destruct = destroy_portal, -- This prevents “falling through” collision_box = { type = "fixed", @@ -398,4 +414,7 @@ minetest.override_item("mcl_end:ender_eye", { return itemstack end, }) +minetest.override_item("mcl_core:bedrock", { + after_destruct = destroy_portal, +}) From e569885fabd3996ed18061d579af19ed9bab12f9 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 6 Jan 2020 16:51:40 +0100 Subject: [PATCH 473/737] End portal frame: Bulk set nodes --- mods/ITEMS/mcl_portals/portal_end.lua | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_portals/portal_end.lua b/mods/ITEMS/mcl_portals/portal_end.lua index 6a0189c9..a790a7b6 100644 --- a/mods/ITEMS/mcl_portals/portal_end.lua +++ b/mods/ITEMS/mcl_portals/portal_end.lua @@ -212,11 +212,13 @@ local function end_portal_area(pos, destroy) else name = "mcl_portals:portal_end" end + local posses = {} for x=pos.x, pos.x+SIZE-1 do for z=pos.z, pos.z+SIZE-1 do - minetest.set_node({x=x,y=pos.y,z=z}, {name=name}) + table.insert(posses, {x=x,y=pos.y,z=z}) end end + minetest.bulk_set_node(posses, {name=name}) end minetest.register_abm({ From 87ac0c952c6007f07709eb501a74571e4a344738 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 6 Jan 2020 17:28:08 +0100 Subject: [PATCH 474/737] Mobs: Reset texture mods on activation --- mods/ENTITIES/mcl_mobs/api.lua | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/mods/ENTITIES/mcl_mobs/api.lua b/mods/ENTITIES/mcl_mobs/api.lua index 1ba87dd8..d161f035 100644 --- a/mods/ENTITIES/mcl_mobs/api.lua +++ b/mods/ENTITIES/mcl_mobs/api.lua @@ -2874,6 +2874,12 @@ local mob_activate = function(self, staticdata, def, dtime) self.opinion_sound_cooloff = 0 -- used to prevent sound spam of particular sound types self.texture_mods = {} + self.object:set_texture_mod("") + + self.v_start = false + self.timer = 0 + self.blinktimer = 0 + self.blinkstatus = false -- check existing nametag if not self.nametag then From 3dcd98686328d2801b6839e0c1edb7467a2116d7 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sat, 18 Jan 2020 04:46:41 +0100 Subject: [PATCH 475/737] Fix shulker box recolor craft erasing contents --- mods/ITEMS/mcl_chests/init.lua | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/mods/ITEMS/mcl_chests/init.lua b/mods/ITEMS/mcl_chests/init.lua index 39af9a21..b41763d4 100644 --- a/mods/ITEMS/mcl_chests/init.lua +++ b/mods/ITEMS/mcl_chests/init.lua @@ -883,6 +883,29 @@ minetest.register_craft({ } }) +-- Save metadata of shulker box when used in crafting +minetest.register_on_craft(function(itemstack, player, old_craft_grid, craft_inv) + local new = itemstack:get_name() + if minetest.get_item_group(itemstack:get_name(), "shulker_box") ~= 1 then + return + end + local original + for i = 1, #old_craft_grid do + local item = old_craft_grid[i]:get_name() + if minetest.get_item_group(item, "shulker_box") == 1 then + original = old_craft_grid[i] + break + end + end + if original then + local ometa = original:get_meta():to_table() + local nmeta = itemstack:get_meta() + nmeta:from_table(ometa) + return itemstack + end +end) + + minetest.register_lbm({ -- Disable active/open trapped chests when loaded because nobody could -- have them open at loading time. From 73e8ee8a68f60c1198fa79f018190a05668acca0 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sat, 18 Jan 2020 04:48:07 +0100 Subject: [PATCH 476/737] Fix undeclared global warning in mcl_craftguide --- mods/HELP/mcl_craftguide/init.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/mods/HELP/mcl_craftguide/init.lua b/mods/HELP/mcl_craftguide/init.lua index 159bc745..cf573b82 100644 --- a/mods/HELP/mcl_craftguide/init.lua +++ b/mods/HELP/mcl_craftguide/init.lua @@ -413,6 +413,7 @@ local function get_tooltip(item, groups, cooktime, burntime) local gcol = "#FFAAFF" if #groups == 1 then local g = group_names[groups[1]] + local groupstr -- Treat the groups “compass” and “clock” as fake groups -- and just print the normal item name without special formatting if groups[1] == "compass" or groups[1] == "clock" then From 112574792d3abef9644a35b8dbe10d6893d81590 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sat, 18 Jan 2020 04:51:46 +0100 Subject: [PATCH 477/737] Version 0.57.1 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index a8e05c5e..ba20145d 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ An unofficial Minecraft-like game for Minetest. Forked from MineClone by davedevils. Developed by Wuzzy and contributors. Not developed or endorsed by Mojang AB. -Version: 0.57.0 +Version: 0.57.1 ### Gameplay You start in a randomly-generated world made entirely of cubes. You can explore From bc7b86b61aea4e0151f7a18a5afcaf3c55bb9320 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sun, 19 Jan 2020 22:56:37 +0100 Subject: [PATCH 478/737] Fix incorrect liquid backface culling --- mods/ITEMS/mcl_core/nodes_liquid.lua | 4 ++-- mods/ITEMS/mclx_core/init.lua | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/mods/ITEMS/mcl_core/nodes_liquid.lua b/mods/ITEMS/mcl_core/nodes_liquid.lua index 5ba3c2da..85ba4c9e 100644 --- a/mods/ITEMS/mcl_core/nodes_liquid.lua +++ b/mods/ITEMS/mcl_core/nodes_liquid.lua @@ -28,7 +28,7 @@ minetest.register_node("mcl_core:water_flowing", { }, { image="default_water_flowing_animated.png", - backface_culling=true, + backface_culling=false, animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=4.0} }, }, @@ -112,7 +112,7 @@ minetest.register_node("mcl_core:lava_flowing", { }, { image="default_lava_flowing_animated.png", - backface_culling=true, + backface_culling=false, animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=6.6} }, }, diff --git a/mods/ITEMS/mclx_core/init.lua b/mods/ITEMS/mclx_core/init.lua index 004c351d..bc17e007 100644 --- a/mods/ITEMS/mclx_core/init.lua +++ b/mods/ITEMS/mclx_core/init.lua @@ -41,7 +41,7 @@ flowing.special_tiles = { }, { image="default_river_water_flowing_animated.png", - backface_culling=true, + backface_culling=false, animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=4.0} }, } From 3788b66b4720b96ee7a3467f50ac01ad15b11b47 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 20 Jan 2020 16:08:59 +0100 Subject: [PATCH 479/737] Clean up some luacheck warnings in mcl_mobs --- mods/ENTITIES/mcl_mobs/api.lua | 12 +++--------- mods/ENTITIES/mcl_mobs/mount.lua | 15 +++++---------- 2 files changed, 8 insertions(+), 19 deletions(-) diff --git a/mods/ENTITIES/mcl_mobs/api.lua b/mods/ENTITIES/mcl_mobs/api.lua index d161f035..f45f4611 100644 --- a/mods/ENTITIES/mcl_mobs/api.lua +++ b/mods/ENTITIES/mcl_mobs/api.lua @@ -8,7 +8,6 @@ mobs.version = "20180531" -- don't rely too much on this, rarely updated, if eve local MAX_MOB_NAME_LENGTH = 30 -- Localize -local MP = minetest.get_modpath(minetest.get_current_modname()) local S = minetest.get_translator("mcl_mobs") -- CMI support check @@ -83,8 +82,6 @@ local stuck_timeout = 3 -- how long before mob gets stuck in place and starts se local stuck_path_timeout = 10 -- how long will mob follow path before giving up -- default nodes -local node_fire = "mcl_fire:fire" -local node_permanent_flame = "mcl_fire:eternal_fire" local node_ice = "mcl_core:ice" local node_snowblock = "mcl_core:snowblock" local node_snow = "mcl_core:snow" @@ -340,7 +337,7 @@ end -- are we flying in what we are suppose to? (taikedz) -local flight_check = function(self, pos_w) +local flight_check = function(self) local nod = self.standing_in local def = minetest.registered_nodes[nod] @@ -886,7 +883,7 @@ local do_jump = function(self) local dir_z = cos(yaw) * (self.collisionbox[4] + 0.5) -- what is in front of mob? - local nod = node_ok({ + nod = node_ok({ x = pos.x + dir_x, y = pos.y + 0.5, z = pos.z + dir_z @@ -1781,7 +1778,7 @@ local follow_flop = function(self) if p.x > s.x then yaw = yaw + pi end - yaw = set_yaw(self, yaw, 6) + set_yaw(self, yaw, 6) -- anyone but standing npc's can move along if dist > self.reach @@ -3825,9 +3822,6 @@ function mobs:protect(self, clicker) end -local mob_obj = {} -local mob_sta = {} - -- feeding, taming and breeding (thanks blert2112) function mobs:feed_tame(self, clicker, feed_count, breed, tame) if not self.follow then diff --git a/mods/ENTITIES/mcl_mobs/mount.lua b/mods/ENTITIES/mcl_mobs/mount.lua index d24fc26f..a068131d 100644 --- a/mods/ENTITIES/mcl_mobs/mount.lua +++ b/mods/ENTITIES/mcl_mobs/mount.lua @@ -121,7 +121,7 @@ end) function mobs.attach(entity, player) - local attach_at, eye_offset = {}, {} + local attach_at, eye_offset entity.player_rotation = entity.player_rotation or {x = 0, y = 0, z = 0} entity.driver_attach_at = entity.driver_attach_at or {x = 0, y = 0, z = 0} @@ -183,10 +183,10 @@ end function mobs.drive(entity, moving_anim, stand_anim, can_fly, dtime) - local rot_steer, rot_view = math.pi/2, 0 + local rot_view = 0 if entity.player_rotation.y == 90 then - rot_steer, rot_view = 0, math.pi/2 + rot_view = math.pi/2 end local acce_y = 0 @@ -262,7 +262,7 @@ function mobs.drive(entity, moving_anim, stand_anim, can_fly, dtime) return end - + -- set moving animation if moving_anim then mobs:set_animation(entity, moving_anim) @@ -293,7 +293,7 @@ function mobs.drive(entity, moving_anim, stand_anim, can_fly, dtime) -- Set position, velocity and acceleration local p = entity.object:get_pos() - local new_velo = {x = 0, y = 0, z = 0} + local new_velo local new_acce = {x = 0, y = -9.8, z = 0} p.y = p.y - 0.5 @@ -390,11 +390,6 @@ function mobs.fly(entity, dtime, speed, shoots, arrow, moving_anim, stand_anim) local velo = entity.object:get_velocity() local dir = entity.driver:get_look_dir() local yaw = entity.driver:get_look_horizontal() + 1.57 -- offset fix between old and new commands - local rot_steer, rot_view = math.pi / 2, 0 - - if entity.player_rotation.y == 90 then - rot_steer, rot_view = 0, math.pi / 2 - end if ctrl.up then entity.object:set_velocity({ From fff19498044449cabeab4fa5a8cc552584324408 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 20 Jan 2020 19:43:29 +0100 Subject: [PATCH 480/737] Make arrows only deal damage with free lineofsight --- mods/ITEMS/mcl_bows/arrow.lua | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/mods/ITEMS/mcl_bows/arrow.lua b/mods/ITEMS/mcl_bows/arrow.lua index 94474869..421f5c3d 100644 --- a/mods/ITEMS/mcl_bows/arrow.lua +++ b/mods/ITEMS/mcl_bows/arrow.lua @@ -197,6 +197,24 @@ ARROW_ENTITY.on_step = function(self, dtime) local lua = obj:get_luaentity() if obj ~= self._shooter and (is_player or (lua and lua._cmi_is_mob)) then if obj:get_hp() > 0 then + -- Check if there is no solid node between arrow and object + local ray = minetest.raycast(self.object:get_pos(), obj:get_pos(), true) + for pointed_thing in ray do + if pointed_thing.type == "object" and pointed_thing.ref == closest_object then + -- Target reached! We can proceed now. + break + elseif pointed_thing.type == "node" then + local nn = minetest.get_node(minetest.get_pointed_thing_position(pointed_thing)).name + local def = minetest.registered_nodes[nn] + if (not def) or def.walkable then + -- There's a node in the way. Delete arrow without damage + self.object:remove() + return + end + end + end + + -- Punch target object obj:punch(self.object, 1.0, { full_punch_interval=1.0, damage_groups={fleshy=self._damage}, From 9326a7697330d706741300c0c841a4c09d3b0f52 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Wed, 29 Jan 2020 23:11:20 +0100 Subject: [PATCH 481/737] Fix mobs walking into water too often --- mods/ENTITIES/mcl_mobs/api.lua | 49 +++++++++++++++++++++------------- 1 file changed, 30 insertions(+), 19 deletions(-) diff --git a/mods/ENTITIES/mcl_mobs/api.lua b/mods/ENTITIES/mcl_mobs/api.lua index f45f4611..50dc2c9d 100644 --- a/mods/ENTITIES/mcl_mobs/api.lua +++ b/mods/ENTITIES/mcl_mobs/api.lua @@ -718,7 +718,9 @@ local do_env_damage = function(self) -- what is mob standing in? pos.y = pos.y + y_level + 0.25 -- foot level + local pos2 = {x=pos.x, y=pos.y-1, z=pos.z} self.standing_in = node_ok(pos, "air").name + self.standing_on = node_ok(pos2, "air").name -- don't fall when on ignore, just stand still if self.standing_in == "ignore" then @@ -1909,8 +1911,9 @@ local do_states = function(self, dtime) local lp = nil -- is there something I need to avoid? - if self.water_damage > 0 - and self.lava_damage > 0 then + if (self.water_damage > 0 + and self.lava_damage > 0) + or self.breath_max ~= -1 then lp = minetest.find_node_near(s, 1, {"group:water", "group:lava"}) @@ -1921,18 +1924,27 @@ local do_states = function(self, dtime) elseif self.lava_damage > 0 then lp = minetest.find_node_near(s, 1, {"group:lava"}) + + elseif self.fire_damage > 0 then + + lp = minetest.find_node_near(s, 1, {"group:fire"}) + end if lp then - - -- if mob in water or lava then look for land - if (self.lava_damage - and minetest.registered_nodes[self.standing_in].groups.lava) + local def = minetest.registered_nodes[self.standing_in] + local def2 = minetest.registered_nodes[self.standing_on] + -- If mob in or on dangerous block, look for land + if (self.breath_max ~= -1 + and (def.drowning > 0 or def2.drowning > 0)) + or (self.lava_damage + and (def.groups.lava or def2.groups.lava)) or (self.water_damage - and minetest.registered_nodes[self.standing_in].groups.water) then + and (def.groups.water or def2.groups.water)) + or (self.fire_damage + and (def.groups.fire or def2.groups.fire)) then - lp = minetest.find_node_near(s, 5, {"group:soil", "group:stone", - "group:sand", node_ice, node_snowblock}) + lp = minetest.find_node_near(s, 5, {"group:solid"}) -- did we find land? if lp then @@ -1954,16 +1966,14 @@ local do_states = function(self, dtime) yaw = yaw + random(-0.5, 0.5) end + -- A danger is near but mob is not inside else - local vec = { - x = lp.x - s.x, - z = lp.z - s.z - } - - yaw = (atan(vec.z / vec.x) + pi / 2) - self.rotate - - if lp.x > s.x then yaw = yaw + pi end + -- Randomly turn + if random(1, 100) <= 30 then + yaw = yaw + random(-0.5, 0.5) + yaw = set_yaw(self, yaw, 8) + end end yaw = set_yaw(self, yaw, 8) @@ -1972,7 +1982,6 @@ local do_states = function(self, dtime) elseif random(1, 100) <= 30 then yaw = yaw + random(-0.5, 0.5) - yaw = set_yaw(self, yaw, 8) end @@ -1987,6 +1996,7 @@ local do_states = function(self, dtime) self.state = "stand" set_animation(self, "stand") else + set_velocity(self, self.walk_velocity) if flight_check(self) @@ -2866,7 +2876,8 @@ local mob_activate = function(self, staticdata, def, dtime) self.collisionbox = colbox self.selectionbox = selbox self.visual_size = vis_size - self.standing_in = "" + self.standing_in = "ignore" + self.standing_on = "ignore" self.jump_sound_cooloff = 0 -- used to prevent jump sound from being played too often in short time self.opinion_sound_cooloff = 0 -- used to prevent sound spam of particular sound types From f7fb83891a77739b34c97c93bd6f1c8a000d3687 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Wed, 29 Jan 2020 23:37:16 +0100 Subject: [PATCH 482/737] Mobs: Replace name-based fence/wall check --- mods/ENTITIES/mcl_mobs/api.lua | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mods/ENTITIES/mcl_mobs/api.lua b/mods/ENTITIES/mcl_mobs/api.lua index 50dc2c9d..bef78212 100644 --- a/mods/ENTITIES/mcl_mobs/api.lua +++ b/mods/ENTITIES/mcl_mobs/api.lua @@ -912,9 +912,9 @@ local do_jump = function(self) if self.walk_chance == 0 or minetest.registered_items[nod.name].walkable then - if not nod.name:find("fence") - and not nod.name:find("fence_gate") - and not nod.name:find("wall") then + if minetest.get_item_group(nod.name, "fence") == 0 + and minetest.get_item_group(nod.name, "fence_gate") == 0 + and minetest.get_item_group(nod.name, "wall") == 0 then local v = self.object:get_velocity() From d38e0a0b00e07a86032015b2fa6653a458c06030 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Thu, 30 Jan 2020 00:03:53 +0100 Subject: [PATCH 483/737] Remove unused jump_chance attribute from mobs --- mods/ENTITIES/mobs_mc/blaze.lua | 1 - mods/ENTITIES/mobs_mc/ender_dragon.lua | 1 - mods/ENTITIES/mobs_mc/ghast.lua | 1 - mods/ENTITIES/mobs_mc/slime+magma_cube.lua | 2 -- mods/ENTITIES/mobs_mc/wither.lua | 1 - 5 files changed, 6 deletions(-) diff --git a/mods/ENTITIES/mobs_mc/blaze.lua b/mods/ENTITIES/mobs_mc/blaze.lua index b7a29ecc..fad7765c 100644 --- a/mods/ENTITIES/mobs_mc/blaze.lua +++ b/mods/ENTITIES/mobs_mc/blaze.lua @@ -66,7 +66,6 @@ mobs:register_mob("mobs_mc:blaze", { jump = true, jump_height = 4, fly = true, - jump_chance = 98, fear_height = 0, glow = 14, }) diff --git a/mods/ENTITIES/mobs_mc/ender_dragon.lua b/mods/ENTITIES/mobs_mc/ender_dragon.lua index 55cce280..488c5287 100644 --- a/mods/ENTITIES/mobs_mc/ender_dragon.lua +++ b/mods/ENTITIES/mobs_mc/ender_dragon.lua @@ -33,7 +33,6 @@ mobs:register_mob("mobs_mc:enderdragon", { jump = true, jump_height = 14, stepheight = 1.2, - jump_chance = 100, fly = true, fly_in = {"air"}, dogshoot_switch = 1, diff --git a/mods/ENTITIES/mobs_mc/ghast.lua b/mods/ENTITIES/mobs_mc/ghast.lua index 1e8c3903..e783adff 100644 --- a/mods/ENTITIES/mobs_mc/ghast.lua +++ b/mods/ENTITIES/mobs_mc/ghast.lua @@ -67,7 +67,6 @@ mobs:register_mob("mobs_mc:ghast", { floats=1, fly = true, fly_in = {"air"}, - jump_chance = 98, }) diff --git a/mods/ENTITIES/mobs_mc/slime+magma_cube.lua b/mods/ENTITIES/mobs_mc/slime+magma_cube.lua index 23c40f21..58a15d03 100644 --- a/mods/ENTITIES/mobs_mc/slime+magma_cube.lua +++ b/mods/ENTITIES/mobs_mc/slime+magma_cube.lua @@ -102,7 +102,6 @@ local slime_big = { run_velocity = 2.5, walk_chance = 0, jump_height = 5.2, - jump_chance = 100, fear_height = 0, spawn_small_alternative = "mobs_mc:slime_small", on_die = spawn_children_on_die("mobs_mc:slime_small", 4, 1.0, 1.5) @@ -208,7 +207,6 @@ local magma_cube_big = { jump = true, jump_height = 8, walk_chance = 0, - jump_chance = 100, fear_height = 0, spawn_small_alternative = "mobs_mc:magma_cube_small", on_die = spawn_children_on_die("mobs_mc:magma_cube_small", 3, 0.8, 1.5) diff --git a/mods/ENTITIES/mobs_mc/wither.lua b/mods/ENTITIES/mobs_mc/wither.lua index e945e40e..05997cf7 100644 --- a/mods/ENTITIES/mobs_mc/wither.lua +++ b/mods/ENTITIES/mobs_mc/wither.lua @@ -36,7 +36,6 @@ mobs:register_mob("mobs_mc:wither", { }, jump = true, jump_height = 10, - jump_chance = 98, fly = true, dogshoot_switch = 1, dogshoot_count_max =1, From bddb8f11361b94955e8fb2a5f634ea153f74427b Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Thu, 30 Jan 2020 01:05:31 +0100 Subject: [PATCH 484/737] Remove some outdated dependencies in mcl_mobs --- mods/ENTITIES/mcl_mobs/depends.txt | 9 --------- mods/ENTITIES/mcl_mobs/mod.conf | 1 + 2 files changed, 1 insertion(+), 9 deletions(-) delete mode 100644 mods/ENTITIES/mcl_mobs/depends.txt diff --git a/mods/ENTITIES/mcl_mobs/depends.txt b/mods/ENTITIES/mcl_mobs/depends.txt deleted file mode 100644 index eb3eb2aa..00000000 --- a/mods/ENTITIES/mcl_mobs/depends.txt +++ /dev/null @@ -1,9 +0,0 @@ -mcl_core -mcl_weather? -mcl_tnt? -mcl_hunger? -invisibility? -intllib? -lucky_block? -cmi? -doc_identifier? diff --git a/mods/ENTITIES/mcl_mobs/mod.conf b/mods/ENTITIES/mcl_mobs/mod.conf index bfad5550..13a94a2b 100644 --- a/mods/ENTITIES/mcl_mobs/mod.conf +++ b/mods/ENTITIES/mcl_mobs/mod.conf @@ -1 +1,2 @@ name = mcl_mobs +optional_depends = mcl_weather,mcl_tnt,mcl_hunger,invisibility,lucky_block,cmi,doc_identifier From 8be35bae5383c633f520dae0a04f6fbdd2718f3f Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Thu, 30 Jan 2020 01:11:02 +0100 Subject: [PATCH 485/737] Make mcl_worlds dependency in mcl_mobs optional --- mods/ENTITIES/mcl_mobs/api.lua | 6 +++++- mods/ENTITIES/mcl_mobs/mod.conf | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/mods/ENTITIES/mcl_mobs/api.lua b/mods/ENTITIES/mcl_mobs/api.lua index bef78212..9ca54618 100644 --- a/mods/ENTITIES/mcl_mobs/api.lua +++ b/mods/ENTITIES/mcl_mobs/api.lua @@ -91,6 +91,7 @@ local mod_weather = minetest.get_modpath("mcl_weather") ~= nil local mod_tnt = minetest.get_modpath("mcl_tnt") ~= nil local mod_mobspawners = minetest.get_modpath("mcl_mobspawners") ~= nil local mod_hunger = minetest.get_modpath("mcl_hunger") ~= nil +local mod_worlds = minetest.get_modpath("mcl_worlds") ~= nil -- play sound local mob_sound = function(self, soundname, is_opinion, fixed_pitch) @@ -705,7 +706,10 @@ local do_env_damage = function(self) if self.light_damage ~= 0 and (minetest.get_node_light(pos) or 0) > 12 then deal_light_damage(self, pos, self.light_damage) end - local _, dim = mcl_worlds.y_to_layer(pos.y) + local _, dim = nil, "overworld" + if mod_worlds then + _, dim = mcl_worlds.y_to_layer(pos.y) + end if self.sunlight_damage ~= 0 and (minetest.get_node_light(pos) or 0) >= minetest.LIGHT_MAX and dim == "overworld" then deal_light_damage(self, pos, self.sunlight_damage) end diff --git a/mods/ENTITIES/mcl_mobs/mod.conf b/mods/ENTITIES/mcl_mobs/mod.conf index 13a94a2b..4f619b93 100644 --- a/mods/ENTITIES/mcl_mobs/mod.conf +++ b/mods/ENTITIES/mcl_mobs/mod.conf @@ -1,2 +1,2 @@ name = mcl_mobs -optional_depends = mcl_weather,mcl_tnt,mcl_hunger,invisibility,lucky_block,cmi,doc_identifier +optional_depends = mcl_weather, mcl_tnt, mcl_hunger, mcl_worlds, invisibility, lucky_block, cmi, doc_identifier From be04de084bf87178b05fe228febc70566272207e Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Thu, 30 Jan 2020 01:36:08 +0100 Subject: [PATCH 486/737] Mobs: Utilize pathfinder jumpheight properly --- mods/ENTITIES/mcl_mobs/api.lua | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/mods/ENTITIES/mcl_mobs/api.lua b/mods/ENTITIES/mcl_mobs/api.lua index 9ca54618..36e6a945 100644 --- a/mods/ENTITIES/mcl_mobs/api.lua +++ b/mods/ENTITIES/mcl_mobs/api.lua @@ -1350,10 +1350,15 @@ local smart_mobs = function(self, s, p, dist, dtime) p1.y = floor(p1.y + 0.5) p1.z = floor(p1.z + 0.5) - local dropheight = 6 + local dropheight = 12 if self.fear_height ~= 0 then dropheight = self.fear_height end - - self.path.way = minetest.find_path(s, p1, 16, self.stepheight, dropheight, "A*_noprefetch") + local jumpheight = 0 + if self.jump and self.jump_height >= 4 then + jumpheight = math.min(math.ceil(self.jump_height / 4), 4) + elseif self.stepheight > 0.5 then + jumpheight = 1 + end + self.path.way = minetest.find_path(s, p1, 16, jumpheight, dropheight, "A*_noprefetch") self.state = "" do_attack(self, self.attack) From c234b273ada8e9213bbff33909cef931f72d441c Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Thu, 30 Jan 2020 16:12:25 +0100 Subject: [PATCH 487/737] Introduce snowball_vulnerable armor group --- mods/ENTITIES/mcl_mobs/api.lua | 9 ++++++++- mods/ENTITIES/mcl_mobs/api.txt | 8 ++++++-- mods/ENTITIES/mobs_mc/blaze.lua | 1 + mods/ITEMS/mcl_throwing/init.lua | 17 ++--------------- 4 files changed, 17 insertions(+), 18 deletions(-) diff --git a/mods/ENTITIES/mcl_mobs/api.lua b/mods/ENTITIES/mcl_mobs/api.lua index 36e6a945..fb838366 100644 --- a/mods/ENTITIES/mcl_mobs/api.lua +++ b/mods/ENTITIES/mcl_mobs/api.lua @@ -2876,7 +2876,14 @@ local mob_activate = function(self, staticdata, def, dtime) self.path.stuck_timer = 0 -- if stuck for too long search for path -- mob defaults - self.object:set_armor_groups({immortal = 1, fleshy = self.armor}) + local armor + if type(self.armor) == "table" then + armor = table.copy(self.armor) + armor.immortal = 1 + else + armor = {immortal=1, fleshy = self.armor} + end + self.object:set_armor_groups(armor) self.old_y = self.object:get_pos().y self.old_health = self.health self.sounds.distance = self.sounds.distance or 10 diff --git a/mods/ENTITIES/mcl_mobs/api.txt b/mods/ENTITIES/mcl_mobs/api.txt index 7cc5725b..162772f0 100644 --- a/mods/ENTITIES/mcl_mobs/api.txt +++ b/mods/ENTITIES/mcl_mobs/api.txt @@ -35,8 +35,12 @@ functions needed for the mob to work properly which contains the following: 'breathes_in_water' If true, mob loses breath when not in water. Otherwise, mob loses breath when inside a node with `drowning` attribute set (default: false). - 'armor' holds strength of mob, 100 is normal, lower is more powerful - and needs more hits and better weapons to kill. + 'armor' entity armor groups (see lua_api.txt). If table, a list of + armor groups like for entities. If number, set value of + 'fleshy' armor group only. + Note: The 'immortal=1' armor group will automatically be added + since this mod handles health and damage manually. + Default: 100 (mob will take full dmg from 'fleshy' hits) 'passive' when true allows animals to defend themselves when hit, otherwise they amble onwards. 'walk_velocity' is the speed that your mob can walk around. diff --git a/mods/ENTITIES/mobs_mc/blaze.lua b/mods/ENTITIES/mobs_mc/blaze.lua index fad7765c..4562fea2 100644 --- a/mods/ENTITIES/mobs_mc/blaze.lua +++ b/mods/ENTITIES/mobs_mc/blaze.lua @@ -21,6 +21,7 @@ mobs:register_mob("mobs_mc:blaze", { textures = { {"mobs_mc_blaze.png"}, }, + armor = { fleshy = 100, snowball_vulnerable = 100 }, visual_size = {x=3, y=3}, sounds = { random = "mobs_mc_blaze_breath", diff --git a/mods/ITEMS/mcl_throwing/init.lua b/mods/ITEMS/mcl_throwing/init.lua index 5897a692..c997a394 100644 --- a/mods/ITEMS/mcl_throwing/init.lua +++ b/mods/ITEMS/mcl_throwing/init.lua @@ -145,7 +145,7 @@ local flying_bobber_ENTITY={ objtype="fishing", } -local check_object_hit = function(self, pos, mob_damage) +local check_object_hit = function(self, pos, dmg) for _,object in pairs(minetest.get_objects_inside_radius(pos, 1.5)) do local entity = object:get_luaentity() @@ -158,11 +158,6 @@ local check_object_hit = function(self, pos, mob_damage) self.object:remove() return true elseif entity._cmi_is_mob == true and (self._thrower ~= object) then - local dmg = {} - if mob_damage then - dmg = mob_damage(entity.name) - end - -- FIXME: Knockback is broken object:punch(self.object, 1.0, { full_punch_interval = 1.0, @@ -193,15 +188,7 @@ local snowball_on_step = function(self, dtime) end end - local mob_damage = function(mobname) - if mobname == "mobs_mc:blaze" then - return {fleshy = 3} - else - return {} - end - end - - if check_object_hit(self, pos, mob_damage) then + if check_object_hit(self, pos, {snowball_vulnerable = 3}) then minetest.sound_play("mcl_throwing_snowball_impact_soft", { pos = self.object:get_pos(), max_hear_distance=16, gain=0.7 }) return end From fcf46b3423f8e6c8b8da5e9c03c0f5fb96a945b2 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Thu, 30 Jan 2020 16:17:29 +0100 Subject: [PATCH 488/737] Remove legacy stuff in mcl_mobs --- mods/ENTITIES/mcl_mobs/api.lua | 16 ---------------- mods/ENTITIES/mcl_mobs/api.txt | 2 -- mods/ENTITIES/mobs_mc/witch.lua | 2 +- 3 files changed, 1 insertion(+), 19 deletions(-) diff --git a/mods/ENTITIES/mcl_mobs/api.lua b/mods/ENTITIES/mcl_mobs/api.lua index fb838366..dd1d6e2d 100644 --- a/mods/ENTITIES/mcl_mobs/api.lua +++ b/mods/ENTITIES/mcl_mobs/api.lua @@ -56,7 +56,6 @@ local mobs_drop_items = minetest.settings:get_bool("mobs_drop_items") ~= false local mobs_griefing = minetest.settings:get_bool("mobs_griefing") ~= false local creative = minetest.settings:get_bool("creative_mode") local spawn_protected = minetest.settings:get_bool("mobs_spawn_protected") ~= false --- TODO local remove_far = false local difficulty = tonumber(minetest.settings:get("mob_difficulty")) or 1.0 local show_health = false @@ -2742,12 +2741,6 @@ local mob_staticdata = function(self) self.following = nil self.state = "stand" - -- used to rotate older mobs - if self.drawtype - and self.drawtype == "side" then - self.rotate = math.rad(90) - end - if use_cmi then self.serialized_cmi_components = cmi.serialize_components(self._cmi_components) end @@ -3187,7 +3180,6 @@ minetest.register_entity(name, { spawn_small_alternative = def.spawn_small_alternative, do_custom = def.do_custom, jump_height = def.jump_height or 4, -- was 6 - drawtype = def.drawtype, -- DEPRECATED, use rotate instead rotate = math.rad(def.rotate or 0), -- 0=front, 90=side, 180=back, 270=side2 lifetimer = def.lifetimer or 57.73, hp_min = scale_difficulty(def.hp_min, 5, 1), @@ -3686,14 +3678,6 @@ function mobs:register_arrow(name, def) end --- compatibility function -function mobs:explosion(pos, radius) - local self = {sounds = {}} - self.sounds.explode = "tnt_explode" - mobs:boom(self, pos, radius) -end - - -- no damage to nodes explosion function mobs:safe_boom(self, pos, radius) diff --git a/mods/ENTITIES/mcl_mobs/api.txt b/mods/ENTITIES/mcl_mobs/api.txt index 162772f0..6813093a 100644 --- a/mods/ENTITIES/mcl_mobs/api.txt +++ b/mods/ENTITIES/mcl_mobs/api.txt @@ -459,8 +459,6 @@ This function registers a spawn egg which can be used by admin to properly spawn Explosion Function ------------------ -mobs:explosion(pos, radius) -- DEPRECATED!!! use mobs:boom() instead - mobs:boom(self, pos, radius) 'self' mob entity 'pos' centre position of explosion diff --git a/mods/ENTITIES/mobs_mc/witch.lua b/mods/ENTITIES/mobs_mc/witch.lua index ff00512e..58d745b0 100644 --- a/mods/ENTITIES/mobs_mc/witch.lua +++ b/mods/ENTITIES/mobs_mc/witch.lua @@ -93,7 +93,7 @@ mobs:register_arrow("mobs_mc:potion_arrow", { -- node hit, bursts into flame hit_node = function(self, pos, node) - --mobs:explosion(pos, 1, 1, 0) + --TODO end }) From 834c8cbc3a988d2ac66cd847ce49aecec1fea9c3 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Thu, 30 Jan 2020 16:36:28 +0100 Subject: [PATCH 489/737] Disable jump in cobweb --- mods/ITEMS/mcl_core/nodes_misc.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_core/nodes_misc.lua b/mods/ITEMS/mcl_core/nodes_misc.lua index b7709d13..689a88e1 100644 --- a/mods/ITEMS/mcl_core/nodes_misc.lua +++ b/mods/ITEMS/mcl_core/nodes_misc.lua @@ -71,7 +71,7 @@ minetest.register_node("mcl_core:cobweb", { liquid_renewable = false, liquid_range = 0, walkable = false, - groups = {swordy_cobweb=1,shearsy=1, fake_liquid=1, deco_block=1, dig_by_piston=1, dig_by_water=1,destroy_by_lava_flow=1,}, + groups = {swordy_cobweb=1,shearsy=1, fake_liquid=1, disable_jump=1, deco_block=1, dig_by_piston=1, dig_by_water=1,destroy_by_lava_flow=1,}, drop = "mcl_mobitems:string", _mcl_shears_drop = true, sounds = mcl_sounds.node_sound_leaves_defaults(), From 61e148ac2e462c61480ca8f95f0b6d38065a3ccd Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Thu, 30 Jan 2020 16:52:07 +0100 Subject: [PATCH 490/737] Fix mobs able to swim in plants --- mods/ENTITIES/mcl_mobs/api.lua | 33 +++++++++++--------------- mods/ENTITIES/mcl_mobs/api.txt | 6 +++-- mods/ENTITIES/mobs_mc/bat.lua | 1 - mods/ENTITIES/mobs_mc/ender_dragon.lua | 1 - mods/ENTITIES/mobs_mc/ghast.lua | 1 - mods/ENTITIES/mobs_mc/parrot.lua | 1 - mods/ENTITIES/mobs_mc/vex.lua | 1 - 7 files changed, 18 insertions(+), 26 deletions(-) diff --git a/mods/ENTITIES/mcl_mobs/api.lua b/mods/ENTITIES/mcl_mobs/api.lua index dd1d6e2d..03adf9ad 100644 --- a/mods/ENTITIES/mcl_mobs/api.lua +++ b/mods/ENTITIES/mcl_mobs/api.lua @@ -344,27 +344,22 @@ local flight_check = function(self) if not def then return false end -- nil check - if type(self.fly_in) == "string" - and nod == self.fly_in then - - return true - + local fly_in + if type(self.fly_in) == "string" then + fly_in = { self.fly_in } elseif type(self.fly_in) == "table" then - - for _,fly_in in pairs(self.fly_in) do - - if nod == fly_in then - - return true - end - end + fly_in = self.fly_in + else + return false end - -- stops mobs getting stuck inside stairs and plantlike nodes - if def.drawtype ~= "airlike" - and def.drawtype ~= "liquid" - and def.drawtype ~= "flowingliquid" then - return true + for _,checknode in pairs(fly_in) do + if nod == checknode then + return true + elseif checknode == "__airlike" and def.walkable == false and + (def.liquidtype == "none" or minetest.get_item_group(nod, "fake_liquid") == 1) then + return true + end end return false @@ -3173,7 +3168,7 @@ minetest.register_entity(name, { type = def.type, attack_type = def.attack_type, fly = def.fly, - fly_in = def.fly_in or "air", + fly_in = def.fly_in or {"air", "__airlike"}, owner = def.owner or "", order = def.order or "", on_die = def.on_die, diff --git a/mods/ENTITIES/mcl_mobs/api.txt b/mods/ENTITIES/mcl_mobs/api.txt index 6813093a..8a2861e4 100644 --- a/mods/ENTITIES/mcl_mobs/api.txt +++ b/mods/ENTITIES/mcl_mobs/api.txt @@ -52,8 +52,10 @@ functions needed for the mob to work properly which contains the following: 'stepheight' height of a block that your mob can easily walk up onto, defaults to 1.1. 'fly' when true allows your mob to fly around instead of walking. - 'fly_in' holds the node name that the mob flies (or swims) around - in e.g. "air" or "default:water_source". + 'fly_in' holds the node name or a table of node names in which the + mob flies (or swims) around in. The special name + '__airlike' stands for all nodes with 'walkable=false' + that are not liquids 'runaway' if true causes animals to turn and run away when hit. 'view_range' how many nodes in distance the mob can see a player. 'damage' how many health points the mob does to a player or another diff --git a/mods/ENTITIES/mobs_mc/bat.lua b/mods/ENTITIES/mobs_mc/bat.lua index 36415470..a4b54bb9 100644 --- a/mods/ENTITIES/mobs_mc/bat.lua +++ b/mods/ENTITIES/mobs_mc/bat.lua @@ -44,7 +44,6 @@ mobs:register_mob("mobs_mc:bat", { view_range = 16, fly = true, - fly_in = "air", }) diff --git a/mods/ENTITIES/mobs_mc/ender_dragon.lua b/mods/ENTITIES/mobs_mc/ender_dragon.lua index 488c5287..0d324bf6 100644 --- a/mods/ENTITIES/mobs_mc/ender_dragon.lua +++ b/mods/ENTITIES/mobs_mc/ender_dragon.lua @@ -34,7 +34,6 @@ mobs:register_mob("mobs_mc:enderdragon", { jump_height = 14, stepheight = 1.2, fly = true, - fly_in = {"air"}, dogshoot_switch = 1, dogshoot_count_max =5, dogshoot_count2_max = 5, diff --git a/mods/ENTITIES/mobs_mc/ghast.lua b/mods/ENTITIES/mobs_mc/ghast.lua index e783adff..ae480bc7 100644 --- a/mods/ENTITIES/mobs_mc/ghast.lua +++ b/mods/ENTITIES/mobs_mc/ghast.lua @@ -66,7 +66,6 @@ mobs:register_mob("mobs_mc:ghast", { jump_height = 4, floats=1, fly = true, - fly_in = {"air"}, }) diff --git a/mods/ENTITIES/mobs_mc/parrot.lua b/mods/ENTITIES/mobs_mc/parrot.lua index ab798842..42006d8c 100644 --- a/mods/ENTITIES/mobs_mc/parrot.lua +++ b/mods/ENTITIES/mobs_mc/parrot.lua @@ -52,7 +52,6 @@ mobs:register_mob("mobs_mc:parrot", { floats = 1, physical = true, fly = true, - fly_in = {"air"}, fear_height = 4, view_range = 16, follow = mobs_mc.follow.parrot, diff --git a/mods/ENTITIES/mobs_mc/vex.lua b/mods/ENTITIES/mobs_mc/vex.lua index 938e2198..fc8b45dc 100644 --- a/mods/ENTITIES/mobs_mc/vex.lua +++ b/mods/ENTITIES/mobs_mc/vex.lua @@ -85,7 +85,6 @@ mobs:register_mob("mobs_mc:vex", { end end, fly = true, - fly_in = {"air"}, }) From d923f71c92ca5d293e6dc75d2b1c76a5b0e1e783 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Thu, 30 Jan 2020 18:04:50 +0100 Subject: [PATCH 491/737] Teach mobs how to not walk into danger ... kinda --- mods/ENTITIES/mcl_mobs/api.lua | 87 +++++++++++++++++++++++----------- 1 file changed, 60 insertions(+), 27 deletions(-) diff --git a/mods/ENTITIES/mcl_mobs/api.lua b/mods/ENTITIES/mcl_mobs/api.lua index 03adf9ad..b736bf6f 100644 --- a/mods/ENTITIES/mcl_mobs/api.lua +++ b/mods/ENTITIES/mcl_mobs/api.lua @@ -265,6 +265,35 @@ function mobs:set_animation(self, anim) set_animation(self, anim) end +-- Returns true is node can deal damage to self +local is_node_dangerous = function(self, nodename) + local nn = nodename + if self.water_damage > 0 then + if minetest.get_item_group(nn, "water") ~= 0 then + return true + end + end + if self.lava_damage > 0 then + if minetest.get_item_group(nn, "lava") ~= 0 then + return true + end + end + if self.fire_damage > 0 then + if minetest.get_item_group(nn, "fire") ~= 0 then + return true + end + end + if minetest.registered_nodes[nn].drowning > 0 then + if self.breath_max ~= -1 then + return true + end + end + if minetest.registered_nodes[nn].damage_per_second > 0 then + return true + end + return false +end + -- check line of sight (BrunoMine) local line_of_sight = function(self, pos1, pos2, stepsize) @@ -618,8 +647,8 @@ local within_limits = function(pos, radius) end --- is mob facing a cliff -local is_at_cliff = function(self) +-- is mob facing a cliff or danger +local is_at_cliff_or_danger = function(self) if self.fear_height == 0 then -- 0 for no falling protection! return false @@ -631,12 +660,20 @@ local is_at_cliff = function(self) local pos = self.object:get_pos() local ypos = pos.y + self.collisionbox[2] -- just above floor - if minetest.line_of_sight( + local free_fall, blocker = minetest.line_of_sight( {x = pos.x + dir_x, y = ypos, z = pos.z + dir_z}, - {x = pos.x + dir_x, y = ypos - self.fear_height, z = pos.z + dir_z} - , 1) then - + {x = pos.x + dir_x, y = ypos - self.fear_height, z = pos.z + dir_z}) + if free_fall then return true + else + local bnode = minetest.get_node(blocker) + local danger = is_node_dangerous(self, bnode.name) + if danger then + return true + else + local def = minetest.registered_nodes[bnode.name] + return (not def and def.walkable) + end end return false @@ -728,7 +765,7 @@ local do_env_damage = function(self) local nodef = minetest.registered_nodes[self.standing_in] -- rain - if self.rain_damage and mod_weather then + if self.rain_damage > 0 and mod_weather then if mcl_weather.rain.raining and mcl_weather.is_outdoor(pos) then self.health = self.health - self.rain_damage @@ -741,7 +778,7 @@ local do_env_damage = function(self) pos.y = pos.y + 1 -- for particle effect position -- water damage - if self.water_damage + if self.water_damage > 0 and nodef.groups.water then if self.water_damage ~= 0 then @@ -755,7 +792,7 @@ local do_env_damage = function(self) end -- lava damage - elseif self.lava_damage + elseif self.lava_damage > 0 and (nodef.groups.lava) then if self.lava_damage ~= 0 then @@ -769,7 +806,7 @@ local do_env_damage = function(self) end -- fire damage - elseif self.fire_damage + elseif self.fire_damage > 0 and (nodef.groups.fire) then if self.fire_damage ~= 0 then @@ -1900,7 +1937,7 @@ local do_states = function(self, dtime) if self.walk_chance ~= 0 and self.facing_fence ~= true and random(1, 100) <= self.walk_chance - and is_at_cliff(self) == false then + and is_at_cliff_or_danger(self) == false then set_velocity(self, self.walk_velocity) self.state = "walk" @@ -1934,18 +1971,12 @@ local do_states = function(self, dtime) end + local is_in_danger = false if lp then - local def = minetest.registered_nodes[self.standing_in] - local def2 = minetest.registered_nodes[self.standing_on] -- If mob in or on dangerous block, look for land - if (self.breath_max ~= -1 - and (def.drowning > 0 or def2.drowning > 0)) - or (self.lava_damage - and (def.groups.lava or def2.groups.lava)) - or (self.water_damage - and (def.groups.water or def2.groups.water)) - or (self.fire_damage - and (def.groups.fire or def2.groups.fire)) then + if (is_node_dangerous(self, self.standing_in) or + is_node_dangerous(self, self.standing_on)) then + is_in_danger = true lp = minetest.find_node_near(s, 5, {"group:solid"}) @@ -1988,11 +2019,13 @@ local do_states = function(self, dtime) yaw = set_yaw(self, yaw, 8) end - -- stand for great fall in front - local temp_is_cliff = is_at_cliff(self) - + -- stand for great fall or danger or fence in front + local cliff_or_danger = false + if is_in_danger then + cliff_or_danger = is_at_cliff_or_danger(self) + end if self.facing_fence == true - or temp_is_cliff + or cliff_or_danger or random(1, 100) <= 30 then set_velocity(self, 0) @@ -2019,7 +2052,7 @@ local do_states = function(self, dtime) -- stop after 5 seconds or when at cliff if self.runaway_timer > 5 - or is_at_cliff(self) then + or is_at_cliff_or_danger(self) then self.runaway_timer = 0 set_velocity(self, 0) self.state = "stand" @@ -2264,7 +2297,7 @@ local do_states = function(self, dtime) smart_mobs(self, s, p, dist, dtime) end - if is_at_cliff(self) then + if is_at_cliff_or_danger(self) then set_velocity(self, 0) set_animation(self, "stand") From 74b79d130b66c8d4bb05935f345e40aa1cfac553 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Thu, 30 Jan 2020 20:38:31 +0100 Subject: [PATCH 492/737] Add basic implementation of furnace minecart --- mods/ENTITIES/mcl_minecarts/init.lua | 43 +++++++++++++++++++++++----- 1 file changed, 36 insertions(+), 7 deletions(-) diff --git a/mods/ENTITIES/mcl_minecarts/init.lua b/mods/ENTITIES/mcl_minecarts/init.lua index 2f9d6730..06f817e4 100644 --- a/mods/ENTITIES/mcl_minecarts/init.lua +++ b/mods/ENTITIES/mcl_minecarts/init.lua @@ -27,6 +27,7 @@ local function register_entity(entity_id, mesh, textures, drop, on_rightclick) _velocity = {x=0, y=0, z=0}, -- only used on punch _start_pos = nil, -- Used to calculate distance for “On A Rail” achievement _last_float_check = nil, -- timestamp of last time the cart was checked to be still on a rail + _fueltime = nil, -- how many seconds worth of fuel is left. Only used by minecart with furnace _old_dir = {x=0, y=0, z=0}, _old_pos = nil, _old_vel = {x=0, y=0, z=0}, @@ -164,11 +165,30 @@ local function register_entity(entity_id, mesh, textures, drop, on_rightclick) self._last_float_check = 0 end + -- Update furnace texture if out of fuel + if self._fueltime and self._fueltime > 0 then + self._fueltime = self._fueltime - dtime + if self._fueltime <= 0 then + self.object:set_properties({textures = + { + "default_furnace_top.png", + "default_furnace_top.png", + "default_furnace_front.png", + "default_furnace_side.png", + "default_furnace_side.png", + "default_furnace_side.png", + "mcl_minecarts_minecart.png", + }}) + self._fueltime = 0 + end + end + local has_fuel = self._fueltime and self._fueltime > 0 + if self._punched then vel = vector.add(vel, self._velocity) self.object:set_velocity(vel) self._old_dir.y = 0 - elseif vector.equals(vel, {x=0, y=0, z=0}) then + elseif vector.equals(vel, {x=0, y=0, z=0}) and (not has_fuel) then return end @@ -179,7 +199,7 @@ local function register_entity(entity_id, mesh, textures, drop, on_rightclick) if self._old_pos and not self._punched then local flo_pos = vector.floor(pos) local flo_old = vector.floor(self._old_pos) - if vector.equals(flo_pos, flo_old) then + if vector.equals(flo_pos, flo_old) and (not has_fuel) then return -- Prevent querying the same node over and over again end @@ -257,7 +277,7 @@ local function register_entity(entity_id, mesh, textures, drop, on_rightclick) end local new_acc = {x=0, y=0, z=0} - if vector.equals(dir, {x=0, y=0, z=0}) then + if vector.equals(dir, {x=0, y=0, z=0}) and not has_fuel then vel = {x=0, y=0, z=0} update.vel = true else @@ -285,7 +305,9 @@ local function register_entity(entity_id, mesh, textures, drop, on_rightclick) local acc = dir.y * -1.8 local speed_mod = minetest.registered_nodes[minetest.get_node(pos).name]._rail_acceleration - if speed_mod and speed_mod ~= 0 then + if has_fuel then + acc = acc + 0.2 + elseif speed_mod and speed_mod ~= 0 then acc = acc + speed_mod else acc = acc - 0.4 @@ -558,9 +580,16 @@ register_minecart( local inv = clicker:get_inventory() inv:set_stack("main", index, held) end - - -- DEBUG - minetest.chat_send_player(clicker:get_player_name(), "Fuel: " .. tostring(self._fueltime)) + self.object:set_properties({textures = + { + "default_furnace_top.png", + "default_furnace_top.png", + "default_furnace_front_active.png", + "default_furnace_side.png", + "default_furnace_side.png", + "default_furnace_side.png", + "mcl_minecarts_minecart.png", + }}) end end, nil, false ) From 9dc9c12f29e12158fddc56f12811a4327391d1cb Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Thu, 30 Jan 2020 22:05:18 +0100 Subject: [PATCH 493/737] Implement TNT minecart --- mods/ENTITIES/mcl_minecarts/init.lua | 121 +++++++++++++++++- mods/ENTITIES/mcl_minecarts/rails.lua | 15 +++ .../textures/mcl_minecarts_minecart_tnt.png | Bin 249 -> 257 bytes mods/ITEMS/mcl_tnt/init.lua | 33 +++-- 4 files changed, 150 insertions(+), 19 deletions(-) diff --git a/mods/ENTITIES/mcl_minecarts/init.lua b/mods/ENTITIES/mcl_minecarts/init.lua index 06f817e4..10484662 100644 --- a/mods/ENTITIES/mcl_minecarts/init.lua +++ b/mods/ENTITIES/mcl_minecarts/init.lua @@ -8,10 +8,29 @@ mcl_minecarts.check_float_time = 15 dofile(mcl_minecarts.modpath.."/functions.lua") dofile(mcl_minecarts.modpath.."/rails.lua") +local function activate_tnt_minecart(self) + if self._boomtimer then + return + end + self.object:set_armor_groups({immortal=1}) + self._boomtimer = tnt.BOOMTIMER + self.object:set_properties({textures = { + "mcl_tnt_blink.png", + "mcl_tnt_blink.png", + "mcl_tnt_blink.png", + "mcl_tnt_blink.png", + "mcl_tnt_blink.png", + "mcl_tnt_blink.png", + "mcl_minecarts_minecart.png", + }}) + self._blinktimer = tnt.BLINKTIMER + minetest.sound_play("tnt_ignite", {pos = self.object:get_pos(), gain = 1.0, max_hear_distance = 15}) +end + -- Table for item-to-entity mapping. Keys: itemstring, Values: Corresponding entity ID local entity_mapping = {} -local function register_entity(entity_id, mesh, textures, drop, on_rightclick) +local function register_entity(entity_id, mesh, textures, drop, on_rightclick, on_activate_by_rail) local cart = { physical = false, collisionbox = {-10/16., -0.5, -10/16, 10/16, 0.25, 10/16}, @@ -28,6 +47,9 @@ local function register_entity(entity_id, mesh, textures, drop, on_rightclick) _start_pos = nil, -- Used to calculate distance for “On A Rail” achievement _last_float_check = nil, -- timestamp of last time the cart was checked to be still on a rail _fueltime = nil, -- how many seconds worth of fuel is left. Only used by minecart with furnace + _boomtimer = nil, -- how many seconds are left before exploding + _blinktimer = nil, -- how many seconds are left before TNT blinking + _blink = false, -- is TNT blink texture active? _old_dir = {x=0, y=0, z=0}, _old_pos = nil, _old_vel = {x=0, y=0, z=0}, @@ -36,11 +58,21 @@ local function register_entity(entity_id, mesh, textures, drop, on_rightclick) } function cart:on_activate(staticdata, dtime_s) + -- Initialize local data = minetest.deserialize(staticdata) if type(data) == "table" then self._railtype = data._railtype end self.object:set_armor_groups({immortal=1}) + + -- Activate cart if on activator rail + if self.on_activate_by_rail then + local pos = self.object:get_pos() + local node = minetest.get_node(vector.floor(pos)) + if node.name == "mcl_minecarts:activator_rail_on" then + self:on_activate_by_rail() + end + end end function cart:on_punch(puncher, time_from_last_punch, tool_capabilities, direction) @@ -61,7 +93,8 @@ local function register_entity(entity_id, mesh, textures, drop, on_rightclick) return end - if puncher:get_player_control().sneak then + -- Punch+sneak: Pick up minecart (unless TNT was ignited) + if puncher:get_player_control().sneak and not self._boomtimer then if self._driver then if self._old_pos then self.object:set_pos(self._old_pos) @@ -123,6 +156,8 @@ local function register_entity(entity_id, mesh, textures, drop, on_rightclick) self._punched = true end + cart.on_activate_by_rail = on_activate_by_rail + function cart:on_step(dtime) local vel = self.object:get_velocity() local update = {} @@ -152,8 +187,15 @@ local function register_entity(entity_id, mesh, textures, drop, on_rightclick) end end + -- Explode if already ignited + if self._boomtimer then + self.object:remove() + tnt.boom(pos) + return + end + -- Drop items and remove cart entity - if not minetest.settings:get_bool("creative_mode") then + if not minetest.settings:get_bool("creative_mode") then for d=1, #drop do minetest.add_item(self.object:get_pos(), drop[d]) end @@ -165,7 +207,7 @@ local function register_entity(entity_id, mesh, textures, drop, on_rightclick) self._last_float_check = 0 end - -- Update furnace texture if out of fuel + -- Update furnace stuff if self._fueltime and self._fueltime > 0 then self._fueltime = self._fueltime - dtime if self._fueltime <= 0 then @@ -184,6 +226,50 @@ local function register_entity(entity_id, mesh, textures, drop, on_rightclick) end local has_fuel = self._fueltime and self._fueltime > 0 + -- Update TNT stuff + if self._boomtimer then + -- Explode + self._boomtimer = self._boomtimer - dtime + local pos = self.object:get_pos() + if self._boomtimer <= 0 then + self.object:remove() + tnt.boom(pos) + return + else + tnt.smoke_step(pos) + end + end + if self._blinktimer then + self._blinktimer = self._blinktimer - dtime + if self._blinktimer <= 0 then + self._blink = not self._blink + if self._blink then + self.object:set_properties({textures = + { + "default_tnt_top.png", + "default_tnt_bottom.png", + "default_tnt_side.png", + "default_tnt_side.png", + "default_tnt_side.png", + "default_tnt_side.png", + "mcl_minecarts_minecart.png", + }}) + else + self.object:set_properties({textures = + { + "mcl_tnt_blink.png", + "mcl_tnt_blink.png", + "mcl_tnt_blink.png", + "mcl_tnt_blink.png", + "mcl_tnt_blink.png", + "mcl_tnt_blink.png", + "mcl_minecarts_minecart.png", + }}) + end + self._blinktimer = tnt.BLINKTIMER + end + end + if self._punched then vel = vector.add(vel, self._velocity) self.object:set_velocity(vel) @@ -224,6 +310,10 @@ local function register_entity(entity_id, mesh, textures, drop, on_rightclick) minetest.swap_node(rou_old, newnode) mesecon.receptor_off(rou_old) end + -- Activate minecart if on activator rail + if node_old.name == "mcl_minecarts:activator_rail_on" and self.on_activate_by_rail then + self:on_activate_by_rail() + end end local ctrl, player = nil, nil @@ -483,7 +573,7 @@ Register a minecart * creative: If false, don't show in Creative Inventory ]] local function register_minecart(itemstring, entity_id, description, longdesc, usagehelp, mesh, textures, icon, drop, on_rightclick, on_activate_by_rail, creative) - register_entity(entity_id, mesh, textures, drop, on_rightclick) + register_entity(entity_id, mesh, textures, drop, on_rightclick, on_activate_by_rail) register_craftitem(itemstring, entity_id, description, longdesc, usagehelp, icon, creative) if minetest.get_modpath("doc_identifier") ~= nil then doc.sub.identifier.register_object(entity_id, "craftitems", itemstring) @@ -651,8 +741,25 @@ register_minecart( }, "mcl_minecarts_minecart_tnt.png", {"mcl_minecarts:minecart", "mcl_tnt:tnt"}, - nil, nil, false -) + -- Ingite + function(self, clicker) + if not clicker or not clicker:is_player() then + return + end + if self._boomtimer then + return + end + local held = clicker:get_wielded_item() + if held:get_name() == "mcl_fire:flint_and_steel" then + if not minetest.settings:get_bool("creative_mode") then + held:add_wear(65535/65) -- 65 uses + local index = clicker:get_wielded_index() + local inv = clicker:get_inventory() + inv:set_stack("main", index, held) + end + activate_tnt_minecart(self) + end + end, activate_tnt_minecart, false) minetest.register_craft({ diff --git a/mods/ENTITIES/mcl_minecarts/rails.lua b/mods/ENTITIES/mcl_minecarts/rails.lua index cf1ebacf..bc94e54b 100644 --- a/mods/ENTITIES/mcl_minecarts/rails.lua +++ b/mods/ENTITIES/mcl_minecarts/rails.lua @@ -129,6 +129,7 @@ register_rail("mcl_minecarts:activator_rail", offstate = "mcl_minecarts:activator_rail", onstate = "mcl_minecarts:activator_rail_on", rules = rail_rules_long, + }, }, }, @@ -149,6 +150,20 @@ register_rail("mcl_minecarts:activator_rail_on", onstate = "mcl_minecarts:activator_rail_on", rules = rail_rules_long, }, + effector = { + -- Activate minecarts + action_on = function(pos, node) + local pos2 = { x = pos.x, y =pos.y + 1, z = pos.z } + local objs = minetest.get_objects_inside_radius(pos2, 1) + for _, o in pairs(objs) do + local l = o:get_luaentity() + if l and string.sub(l.name, 1, 14) == "mcl_minecarts:" and l.on_activate_by_rail then + l:on_activate_by_rail() + end + end + end, + }, + }, drop = "mcl_minecarts:activator_rail", }, diff --git a/mods/ENTITIES/mcl_minecarts/textures/mcl_minecarts_minecart_tnt.png b/mods/ENTITIES/mcl_minecarts/textures/mcl_minecarts_minecart_tnt.png index cbd312804541e75c6b6d2e9d3e97826b1fa99fd8..246d36328c86e97f58f3042505429ea3a41f7b8c 100644 GIT binary patch delta 241 zcmey#*vK?NqMn7Bfq~)e-A6$T3=CQUJ|V9E|NmE3R<75#oM>XR-NNFAla-E+j*?vKqobo8?zM`6fq}0i$S;_I;XeW}xG&pb&%nS?;pyTSQo)$q z!0gDVrkbqGDiD0s(t_nkLQs&I5tnyDf(B<6pQ&kJc0$7GIa`aKp6cS|Nqzb>^X1dK zygafA8}>FNnoDdEWpKT8X?ysV{Dh2r@7vpI*#ms5tEzr&>yqW+Nk8|-uDGh4nK?xK mFe}@;%RD^QW(Eoj43(4hnQqz`9AjW$VDNPHb6Mw<&;$TT^;!P_ delta 233 zcmZo<`pGy!qMn0|fq_B(^Z!H!28IKkE{-7;j7ujO@*OhZajl+^CwuZ%uZP0M7Tz)y zvvmjF_U>CcJxY({cV0TbI{(HB$_P+Vy=L(t3&wt*-sIbaoQSkdUZbnJZ=k%)XiZtZPsBYis zx8QI`3fnUVRW}um;8OJr_kP)xiu?_yGrln?u`#^mi-@*IU>E=Z diff --git a/mods/ITEMS/mcl_tnt/init.lua b/mods/ITEMS/mcl_tnt/init.lua index 342e0c58..62f3710a 100644 --- a/mods/ITEMS/mcl_tnt/init.lua +++ b/mods/ITEMS/mcl_tnt/init.lua @@ -48,6 +48,23 @@ tnt.ignite = function(pos) core.check_for_falling(pos) end +-- Add smoke particle of entity at pos. +-- Intended to be called every step +tnt.smoke_step = function(pos) + minetest.add_particle({ + pos = {x=pos.x,y=pos.y+0.5,z=pos.z}, + velocity = vector.new(math.random() * 0.2 - 0.1, 1.0 + math.random(), math.random() * 0.2 - 0.1), + acceleration = vector.new(0, -0.1, 0), + expirationtime = 0.15 + math.random() * 0.25, + size = 1.0 + math.random(), + collisiondetection = false, + texture = "tnt_smoke.png" + }) +end + +tnt.BOOMTIMER = 4 +tnt.BLINKTIMER = 0.25 + local TNT_RANGE = 3 local sounds @@ -162,19 +179,11 @@ end function TNT:on_step(dtime) local pos = self.object:get_pos() - minetest.add_particle({ - pos = {x=pos.x,y=pos.y+0.5,z=pos.z}, - velocity = vector.new(math.random() * 0.2 - 0.1, 1.0 + math.random(), math.random() * 0.2 - 0.1), - acceleration = vector.new(0, -0.1, 0), - expirationtime = 0.15 + math.random() * 0.25, - size = 1.0 + math.random(), - collisiondetection = false, - texture = "tnt_smoke.png" - }) + tnt.smoke_step(pos) self.timer = self.timer + dtime self.blinktimer = self.blinktimer + dtime - if self.blinktimer > 0.25 then - self.blinktimer = self.blinktimer - 0.25 + if self.blinktimer > tnt.BLINKTIMER then + self.blinktimer = self.blinktimer - tnt.BLINKTIMER if self.blinkstatus then self.object:set_texture_mod("") else @@ -182,7 +191,7 @@ function TNT:on_step(dtime) end self.blinkstatus = not self.blinkstatus end - if self.timer > 4 then + if self.timer > tnt.BOOMTIMER then tnt.boom(self.object:get_pos()) self.object:remove() end From 1d2da1f01a8d770f73c7c160a6829ce7a0fdfc4d Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Thu, 30 Jan 2020 22:31:44 +0100 Subject: [PATCH 494/737] TNT minecart and activator rail no longer WIP --- mods/ENTITIES/mcl_minecarts/init.lua | 43 ++++++++++++-------- mods/ENTITIES/mcl_minecarts/rails.lua | 9 +--- mods/MAPGEN/tsm_railcorridors/gameconfig.lua | 2 +- mods/MISC/mcl_wip/init.lua | 2 - 4 files changed, 27 insertions(+), 29 deletions(-) diff --git a/mods/ENTITIES/mcl_minecarts/init.lua b/mods/ENTITIES/mcl_minecarts/init.lua index 10484662..25f0dd9c 100644 --- a/mods/ENTITIES/mcl_minecarts/init.lua +++ b/mods/ENTITIES/mcl_minecarts/init.lua @@ -639,7 +639,10 @@ register_minecart( "mcl_minecarts:furnace_minecart", "mcl_minecarts:furnace_minecart", S("Minecart with Furnace"), - nil, nil, + S("A minecart with furnace is a vehicle that travels on rails. It can propel itself with fuel."), + S("Place it on rails. If you give it some coal, the furnace will start burning for a long time and the minecart will be able to move itself. Punch it to get it moving.") .. "\n" .. + S("To obtain the minecart and furnace, punch them while holding down the sneak key."), + "mcl_minecarts_minecart_block.b3d", { "default_furnace_top.png", @@ -728,7 +731,9 @@ register_minecart( "mcl_minecarts:tnt_minecart", "mcl_minecarts:tnt_minecart", S("Minecart with TNT"), - nil, nil, + S("A minecart with TNT is an explosive vehicle that travels on rail."), + S("Place it on rails. Punch it to move it. The TNT is ignited with a slint and steel or when the minecart is on an powered activator rail.") .. "\n" .. + S("To obtain the minecart and TNT, punch them while holding down the sneak key. You can't do this if the TNT was ignited."), "mcl_minecarts_minecart_block.b3d", { "default_tnt_top.png", @@ -759,7 +764,7 @@ register_minecart( end activate_tnt_minecart(self) end - end, activate_tnt_minecart, false) + end, activate_tnt_minecart) minetest.register_craft({ @@ -770,8 +775,25 @@ minetest.register_craft({ }, }) +minetest.register_craft({ + output = "mcl_minecarts:tnt_minecart", + recipe = { + {"mcl_tnt:tnt"}, + {"mcl_minecarts:minecart"}, + }, +}) + -- TODO: Re-enable crafting of special minecarts when they have been implemented if false then + +minetest.register_craft({ + output = "mcl_minecarts:furnace_minecart", + recipe = { + {"mcl_furnaces:furnace"}, + {"mcl_minecarts:minecart"}, + }, +}) + minetest.register_craft({ output = "mcl_minecarts:hopper_minecart", recipe = { @@ -788,19 +810,4 @@ minetest.register_craft({ }, }) -minetest.register_craft({ - output = "mcl_minecarts:tnt_minecart", - recipe = { - {"mcl_tnt:tnt"}, - {"mcl_minecarts:minecart"}, - }, -}) - -minetest.register_craft({ - output = "mcl_minecarts:furnace_minecart", - recipe = { - {"mcl_furnaces:furnace"}, - {"mcl_minecarts:minecart"}, - }, -}) end diff --git a/mods/ENTITIES/mcl_minecarts/rails.lua b/mods/ENTITIES/mcl_minecarts/rails.lua index bc94e54b..4c0bcf8c 100644 --- a/mods/ENTITIES/mcl_minecarts/rails.lua +++ b/mods/ENTITIES/mcl_minecarts/rails.lua @@ -132,10 +132,7 @@ register_rail("mcl_minecarts:activator_rail", }, }, - }, - -- Hidden from creative because no cart is using this rail so far. - -- TODO: Remove this when the activator rail has become useful. - false + } ) -- Activator rail (on) @@ -222,9 +219,6 @@ minetest.register_craft({ } }) --- Activator rail crafting is disabled until it becomes useful. --- TODO: Enable crafting as needed. -if false then minetest.register_craft({ output = "mcl_minecarts:activator_rail 6", recipe = { @@ -233,7 +227,6 @@ minetest.register_craft({ {"mcl_core:iron_ingot", "mcl_core:stick", "mcl_core:iron_ingot"}, } }) -end minetest.register_craft({ output = "mcl_minecarts:detector_rail 6", diff --git a/mods/MAPGEN/tsm_railcorridors/gameconfig.lua b/mods/MAPGEN/tsm_railcorridors/gameconfig.lua index b0c255ba..615abdc8 100644 --- a/mods/MAPGEN/tsm_railcorridors/gameconfig.lua +++ b/mods/MAPGEN/tsm_railcorridors/gameconfig.lua @@ -94,7 +94,7 @@ function tsm_railcorridors.get_treasures(pr) items = { { itemstring = "mcl_minecarts:rail", weight = 20, amount_min = 4, amount_max = 8 }, { itemstring = "mcl_torches:torch", weight = 15, amount_min = 1, amount_max = 16 }, - { itemstring = "mcl_minecarts:rail", weight = 5, amount_min = 1, amount_max = 4 }, -- TODO: Activator Rail + { itemstring = "mcl_minecarts:activator_rail", weight = 5, amount_min = 1, amount_max = 4 }, { itemstring = "mcl_minecarts:detector_rail", weight = 5, amount_min = 1, amount_max = 4 }, { itemstring = "mcl_minecarts:golden_rail", weight = 5, amount_min = 1, amount_max = 4 }, } diff --git a/mods/MISC/mcl_wip/init.lua b/mods/MISC/mcl_wip/init.lua index 03d33849..062b5e48 100644 --- a/mods/MISC/mcl_wip/init.lua +++ b/mods/MISC/mcl_wip/init.lua @@ -9,8 +9,6 @@ local wip_items = { "mcl_minecarts:command_block_minecart", "mcl_minecarts:chest_minecart", "mcl_minecarts:furnace_minecart", - "mcl_minecarts:tnt_minecart", - "mcl_minecarts:activator_rail", "mobs_mc:enderdragon", "mobs_mc:wither", "mobs_mc:parrot", From 9f344b4307ffe8f052c24eda9069deebb7025afc Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Thu, 30 Jan 2020 22:42:53 +0100 Subject: [PATCH 495/737] Detach minecart driver if over activator rail --- mods/ENTITIES/mcl_minecarts/init.lua | 35 +++++++++++++++++----------- 1 file changed, 22 insertions(+), 13 deletions(-) diff --git a/mods/ENTITIES/mcl_minecarts/init.lua b/mods/ENTITIES/mcl_minecarts/init.lua index 25f0dd9c..17b01ff4 100644 --- a/mods/ENTITIES/mcl_minecarts/init.lua +++ b/mods/ENTITIES/mcl_minecarts/init.lua @@ -8,6 +8,21 @@ mcl_minecarts.check_float_time = 15 dofile(mcl_minecarts.modpath.."/functions.lua") dofile(mcl_minecarts.modpath.."/rails.lua") +local function detach_driver(self) + if not self._driver then + return + end + mcl_player.player_attached[self._driver] = nil + local player = minetest.get_player_by_name(self._driver) + self._driver = nil + self._start_pos = nil + if player then + player:set_detach() + player:set_eye_offset({x=0, y=0, z=0},{x=0, y=0, z=0}) + mcl_player.player_set_animation(player, "stand" , 30) + end +end + local function activate_tnt_minecart(self) if self._boomtimer then return @@ -27,6 +42,8 @@ local function activate_tnt_minecart(self) minetest.sound_play("tnt_ignite", {pos = self.object:get_pos(), gain = 1.0, max_hear_distance = 15}) end +local activate_normal_minecart = detach_driver + -- Table for item-to-entity mapping. Keys: itemstring, Values: Corresponding entity ID local entity_mapping = {} @@ -99,12 +116,7 @@ local function register_entity(entity_id, mesh, textures, drop, on_rightclick, o if self._old_pos then self.object:set_pos(self._old_pos) end - mcl_player.player_attached[self._driver] = nil - local player = minetest.get_player_by_name(self._driver) - if player then - player:set_detach() - player:set_eye_offset({x=0, y=0, z=0},{x=0, y=0, z=0}) - end + detach_driver(self) end -- Disable detector rail @@ -588,7 +600,8 @@ register_minecart( S("Minecarts can be used for a quick transportion on rails.") .. "\n" .. S("Minecarts only ride on rails and always follow the tracks. At a T-junction with no straight way ahead, they turn left. The speed is affected by the rail type."), S("You can place the minecart on rails. Right-click it to enter it. Punch it to get it moving.") .. "\n" .. - S("To obtain the minecart, punch it while holding down the sneak key."), + S("To obtain the minecart, punch it while holding down the sneak key.") .. "\n" + S("If it moves over a powered activator rail, you'll get ejected."), "mcl_minecarts_minecart.b3d", {"mcl_minecarts_minecart.png"}, "mcl_minecarts_minecart_normal.png", @@ -600,11 +613,7 @@ register_minecart( end local player_name = clicker:get_player_name() if self._driver and player_name == self._driver then - self._driver = nil - self._start_pos = nil - clicker:set_detach() - clicker:set_eye_offset({x=0, y=0, z=0},{x=0, y=0, z=0}) - mcl_player.player_set_animation(clicker, "stand" , 30) + detach_driver(self) elseif not self._driver then self._driver = player_name self._start_pos = self.object:get_pos() @@ -619,7 +628,7 @@ register_minecart( end end, name) end - end + end, activate_normal_minecart ) -- Minecart with Chest From 04c8a08cc4bb8f1f9a658ce182c548974f7ed7dd Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Thu, 30 Jan 2020 23:11:16 +0100 Subject: [PATCH 496/737] Ignite tnt minecart by fire charge --- mods/ENTITIES/mcl_minecarts/init.lua | 10 +++++++--- mods/ENTITIES/mcl_mobs/api.lua | 14 +++++++++++--- mods/ENTITIES/mcl_mobs/api.txt | 3 +++ mods/ENTITIES/mobs_mc/blaze.lua | 9 +++++++++ 4 files changed, 30 insertions(+), 6 deletions(-) diff --git a/mods/ENTITIES/mcl_minecarts/init.lua b/mods/ENTITIES/mcl_minecarts/init.lua index 17b01ff4..03553481 100644 --- a/mods/ENTITIES/mcl_minecarts/init.lua +++ b/mods/ENTITIES/mcl_minecarts/init.lua @@ -23,12 +23,16 @@ local function detach_driver(self) end end -local function activate_tnt_minecart(self) +local function activate_tnt_minecart(self, timer) if self._boomtimer then return end self.object:set_armor_groups({immortal=1}) - self._boomtimer = tnt.BOOMTIMER + if timer then + self._boomtimer = timer + else + self._boomtimer = tnt.BOOMTIMER + end self.object:set_properties({textures = { "mcl_tnt_blink.png", "mcl_tnt_blink.png", @@ -600,7 +604,7 @@ register_minecart( S("Minecarts can be used for a quick transportion on rails.") .. "\n" .. S("Minecarts only ride on rails and always follow the tracks. At a T-junction with no straight way ahead, they turn left. The speed is affected by the rail type."), S("You can place the minecart on rails. Right-click it to enter it. Punch it to get it moving.") .. "\n" .. - S("To obtain the minecart, punch it while holding down the sneak key.") .. "\n" + S("To obtain the minecart, punch it while holding down the sneak key.") .. "\n" .. S("If it moves over a powered activator rail, you'll get ejected."), "mcl_minecarts_minecart.b3d", {"mcl_minecarts_minecart.png"}, diff --git a/mods/ENTITIES/mcl_mobs/api.lua b/mods/ENTITIES/mcl_mobs/api.lua index b736bf6f..b07dd00a 100644 --- a/mods/ENTITIES/mcl_mobs/api.lua +++ b/mods/ENTITIES/mcl_mobs/api.lua @@ -3605,6 +3605,7 @@ function mobs:register_arrow(name, def) hit_player = def.hit_player, hit_node = def.hit_node, hit_mob = def.hit_mob, + hit_object = def.hit_object, drop = def.drop or false, -- drops arrow as registered item when true collisionbox = {0, 0, 0, 0, 0, 0}, -- remove box around arrows timer = 0, @@ -3671,7 +3672,7 @@ function mobs:register_arrow(name, def) end end - if self.hit_player or self.hit_mob then + if self.hit_player or self.hit_mob or self.hit_object then for _,player in pairs(minetest.get_objects_inside_radius(pos, 1.0)) do @@ -3690,11 +3691,18 @@ function mobs:register_arrow(name, def) and entity._cmi_is_mob == true and tostring(player) ~= self.owner_id and entity.name ~= self.object:get_luaentity().name then - self.hit_mob(self, player) - self.object:remove(); + return + end + if entity + and self.hit_object + and (not entity._cmi_is_mob) + and tostring(player) ~= self.owner_id + and entity.name ~= self.object:get_luaentity().name then + self.hit_object(self, player) + self.object:remove(); return end end diff --git a/mods/ENTITIES/mcl_mobs/api.txt b/mods/ENTITIES/mcl_mobs/api.txt index 8a2861e4..3a61c1c8 100644 --- a/mods/ENTITIES/mcl_mobs/api.txt +++ b/mods/ENTITIES/mcl_mobs/api.txt @@ -428,6 +428,9 @@ This function registers a arrow for mobs with the attack type shoot. 'hit_mob' a function that is called when the arrow hits a mob; this function should hurt the mob, the parameters are (self, mob) + 'hit_object' a function that is called when the arrow hits an object + that is neither a player nor a mob. this function should + hurt the object, the parameters are (self, object) 'hit_node' a function that is called when the arrow hits a node, the parameters are (self, pos, node) 'tail' when set to 1 adds a trail or tail to mob arrows diff --git a/mods/ENTITIES/mobs_mc/blaze.lua b/mods/ENTITIES/mobs_mc/blaze.lua index 4562fea2..adf5238c 100644 --- a/mods/ENTITIES/mobs_mc/blaze.lua +++ b/mods/ENTITIES/mobs_mc/blaze.lua @@ -95,6 +95,15 @@ mobs:register_arrow("mobs_mc:blaze_fireball", { }, nil) end, + hit_object = function(self, object) + local lua = object:get_luaentity() + if lua then + if lua.name == "mcl_minecarts:tnt_minecart" then + lua:on_activate_by_rail(2) + end + end + end, + -- Node hit, make fire hit_node = function(self, pos, node) if node.name == "air" then From 15481cb24da339062be84387d60c2e79284f767c Mon Sep 17 00:00:00 2001 From: wuniversales Date: Tue, 4 Feb 2020 21:43:50 +0100 Subject: [PATCH 497/737] Add Spanish translation --- .../ENTITIES/mcl_boats/locale/mcl_boats.es.tr | 10 + .../locale/mcl_falling_nodes.es.tr | 3 + .../mcl_minecarts/locale/mcl_minecarts.es.tr | 23 ++ mods/ENTITIES/mcl_mobs/locale/mcl_mobs.es.tr | 9 + mods/ENTITIES/mobs_mc/locale/mobs_mc.es.tr | 74 ++++++ .../lightning/locale/lightning.es.tr | 4 + .../locale/mcl_void_damage.es.tr | 3 + .../mcl_weather/locale/mcl_weather.es.tr | 8 + .../locale/doc_identifier.es.tr | 17 ++ mods/HUD/awards/locale/awards.es.tr | 51 ++++ mods/HUD/hbarmor/locale/hbarmor.es.tr | 2 + mods/HUD/hudbars/locale/es.txt | 5 + .../locale/mcl_achievements.es.tr | 49 ++++ .../locale/mcl_death_messages.es.tr | 57 ++++ .../mcl_inventory/locale/mcl_inventory.es.tr | 19 ++ .../locale/mcl_comparators.es.tr | 12 + .../locale/mcl_dispensers.es.tr | 22 ++ .../mcl_droppers/locale/mcl_droppers.es.tr | 7 + .../mcl_observers/locale/mcl_observers.es.tr | 4 + .../locale/mesecons_button.es.tr | 11 + .../locale/mesecons_commandblock.es.tr | 29 ++ .../locale/mesecons_delayer.es.tr | 10 + .../locale/mesecons_lightstone.es.tr | 3 + .../locale/mesecons_noteblock.es.tr | 10 + .../locale/mesecons_pistons.es.tr | 6 + .../locale/mesecons_pressureplates.es.tr | 11 + .../locale/mesecons_solarpanel.es.tr | 6 + .../locale/mesecons_torch.es.tr | 8 + .../locale/mesecons_walllever.es.tr | 4 + .../locale/mesecons_wires.es.tr | 10 + mods/ITEMS/mcl_anvils/locale/mcl_anvils.es.tr | 15 ++ .../mcl_banners/locale/mcl_banners.es.tr | 76 ++++++ mods/ITEMS/mcl_beds/locale/mcl_beds.es.tr | 40 +++ mods/ITEMS/mcl_books/locale/mcl_books.es.tr | 25 ++ mods/ITEMS/mcl_bows/locale/mcl_bows.es.tr | 11 + .../mcl_buckets/locale/mcl_buckets.es.tr | 13 + mods/ITEMS/mcl_cake/locale/mcl_cake.es.tr | 10 + .../mcl_cauldrons/locale/mcl_cauldrons.es.tr | 10 + mods/ITEMS/mcl_chests/locale/mcl_chests.es.tr | 30 +++ mods/ITEMS/mcl_clock/locale/mcl_clock.es.tr | 4 + mods/ITEMS/mcl_cocoas/locale/mcl_cocoas.es.tr | 6 + .../locale/mcl_colorblocks.es.tr | 75 ++++++ .../mcl_compass/locale/mcl_compass.es.tr | 3 + mods/ITEMS/mcl_core/locale/mcl_core.es.tr | 249 ++++++++++++++++++ .../locale/mcl_crafting_table.es.tr | 7 + mods/ITEMS/mcl_doors/locale/mcl_doors.es.tr | 22 ++ mods/ITEMS/mcl_dye/locale/mcl_dye.es.tr | 25 ++ mods/ITEMS/mcl_end/locale/mcl_end.es.tr | 25 ++ .../mcl_farming/locale/mcl_farming.es.tr | 93 +++++++ mods/ITEMS/mcl_fences/locale/mcl_fences.es.tr | 17 ++ mods/ITEMS/mcl_fire/locale/mcl_fire.es.tr | 17 ++ .../mcl_fishing/locale/mcl_fishing.es.tr | 16 ++ .../locale/mcl_flowerpots.es.tr | 25 ++ .../mcl_flowers/locale/mcl_flowers.es.tr | 32 +++ .../mcl_furnaces/locale/mcl_furnaces.es.tr | 8 + mods/ITEMS/mcl_heads/locale/mcl_heads.es.tr | 11 + .../mcl_hoppers/locale/mcl_hoppers.es.tr | 13 + .../locale/mcl_itemframes.es.tr | 5 + .../mcl_jukebox/locale/mcl_jukebox.es.tr | 10 + mods/ITEMS/mcl_maps/locale/mcl_maps.es.tr | 8 + .../mcl_mobitems/locale/mcl_mobitems.es.tr | 62 +++++ .../locale/mcl_mobspawners.es.tr | 4 + .../locale/mcl_monster_eggs.es.tr | 8 + .../mcl_mushrooms/locale/mcl_mushrooms.es.tr | 22 ++ mods/ITEMS/mcl_nether/locale/mcl_nether.es.tr | 37 +++ mods/ITEMS/mcl_ocean/locale/mcl_ocean.es.tr | 50 ++++ .../mcl_portals/locale/mcl_portals.es.tr | 16 ++ .../mcl_potions/locale/mcl_potions.es.tr | 23 ++ mods/ITEMS/mcl_signs/locale/mcl_signs.es.tr | 8 + .../mcl_sponges/locale/mcl_sponges.es.tr | 8 + mods/ITEMS/mcl_stairs/locale/mcl_stairs.es.tr | 101 +++++++ .../mcl_throwing/locale/mcl_throwing.es.tr | 9 + mods/ITEMS/mcl_tnt/locale/mcl_tnt.es.tr | 5 + mods/ITEMS/mcl_tools/locale/mcl_tools.es.tr | 32 +++ .../mcl_torches/locale/mcl_torches.es.tr | 3 + mods/ITEMS/mcl_walls/locale/mcl_walls.es.tr | 16 ++ mods/ITEMS/mcl_wool/locale/mcl_wool.es.tr | 37 +++ mods/ITEMS/mclx_core/locale/mclx_core.es.tr | 5 + .../mclx_fences/locale/mclx_fences.es.tr | 4 + .../mclx_stairs/locale/mclx_stairs.es.tr | 82 ++++++ .../3d_armor/locale/3d_armor.es.tr | 23 ++ .../locale/3d_armor_stand.es.tr | 4 + .../screwdriver/locale/screwdriver.es.tr | 2 + mods/ITEMS/xpanes/locale/xpanes.es.tr | 23 ++ .../locale/mcl_structures.es.tr | 7 + .../mcl_commands/locale/mcl_commands.es.tr | 23 ++ mods/MISC/mcl_privs/locale/mcl_privs.es.tr | 2 + mods/MISC/mcl_wip/locale/mcl_wip.es.tr | 3 + .../PLAYER/mcl_hunger/locale/mcl_hunger.es.tr | 8 + .../locale/mcl_playerplus.es.tr | 3 + mods/PLAYER/mcl_skins/locale/mcl_skins.es.tr | 13 + mods/PLAYER/mcl_spawn/locale/mcl_spawn.es.tr | 4 + 92 files changed, 2035 insertions(+) create mode 100644 mods/ENTITIES/mcl_boats/locale/mcl_boats.es.tr create mode 100644 mods/ENTITIES/mcl_falling_nodes/locale/mcl_falling_nodes.es.tr create mode 100644 mods/ENTITIES/mcl_minecarts/locale/mcl_minecarts.es.tr create mode 100644 mods/ENTITIES/mcl_mobs/locale/mcl_mobs.es.tr create mode 100644 mods/ENTITIES/mobs_mc/locale/mobs_mc.es.tr create mode 100644 mods/ENVIRONMENT/lightning/locale/lightning.es.tr create mode 100644 mods/ENVIRONMENT/mcl_void_damage/locale/mcl_void_damage.es.tr create mode 100644 mods/ENVIRONMENT/mcl_weather/locale/mcl_weather.es.tr create mode 100644 mods/HELP/doc/doc_identifier/locale/doc_identifier.es.tr create mode 100644 mods/HUD/awards/locale/awards.es.tr create mode 100644 mods/HUD/hbarmor/locale/hbarmor.es.tr create mode 100644 mods/HUD/hudbars/locale/es.txt create mode 100644 mods/HUD/mcl_achievements/locale/mcl_achievements.es.tr create mode 100644 mods/HUD/mcl_death_messages/locale/mcl_death_messages.es.tr create mode 100644 mods/HUD/mcl_inventory/locale/mcl_inventory.es.tr create mode 100644 mods/ITEMS/REDSTONE/mcl_comparators/locale/mcl_comparators.es.tr create mode 100644 mods/ITEMS/REDSTONE/mcl_dispensers/locale/mcl_dispensers.es.tr create mode 100644 mods/ITEMS/REDSTONE/mcl_droppers/locale/mcl_droppers.es.tr create mode 100644 mods/ITEMS/REDSTONE/mcl_observers/locale/mcl_observers.es.tr create mode 100644 mods/ITEMS/REDSTONE/mesecons_button/locale/mesecons_button.es.tr create mode 100644 mods/ITEMS/REDSTONE/mesecons_commandblock/locale/mesecons_commandblock.es.tr create mode 100644 mods/ITEMS/REDSTONE/mesecons_delayer/locale/mesecons_delayer.es.tr create mode 100644 mods/ITEMS/REDSTONE/mesecons_lightstone/locale/mesecons_lightstone.es.tr create mode 100644 mods/ITEMS/REDSTONE/mesecons_noteblock/locale/mesecons_noteblock.es.tr create mode 100644 mods/ITEMS/REDSTONE/mesecons_pistons/locale/mesecons_pistons.es.tr create mode 100644 mods/ITEMS/REDSTONE/mesecons_pressureplates/locale/mesecons_pressureplates.es.tr create mode 100644 mods/ITEMS/REDSTONE/mesecons_solarpanel/locale/mesecons_solarpanel.es.tr create mode 100644 mods/ITEMS/REDSTONE/mesecons_torch/locale/mesecons_torch.es.tr create mode 100644 mods/ITEMS/REDSTONE/mesecons_walllever/locale/mesecons_walllever.es.tr create mode 100644 mods/ITEMS/REDSTONE/mesecons_wires/locale/mesecons_wires.es.tr create mode 100644 mods/ITEMS/mcl_anvils/locale/mcl_anvils.es.tr create mode 100644 mods/ITEMS/mcl_banners/locale/mcl_banners.es.tr create mode 100644 mods/ITEMS/mcl_beds/locale/mcl_beds.es.tr create mode 100644 mods/ITEMS/mcl_books/locale/mcl_books.es.tr create mode 100644 mods/ITEMS/mcl_bows/locale/mcl_bows.es.tr create mode 100644 mods/ITEMS/mcl_buckets/locale/mcl_buckets.es.tr create mode 100644 mods/ITEMS/mcl_cake/locale/mcl_cake.es.tr create mode 100644 mods/ITEMS/mcl_cauldrons/locale/mcl_cauldrons.es.tr create mode 100644 mods/ITEMS/mcl_chests/locale/mcl_chests.es.tr create mode 100644 mods/ITEMS/mcl_clock/locale/mcl_clock.es.tr create mode 100644 mods/ITEMS/mcl_cocoas/locale/mcl_cocoas.es.tr create mode 100644 mods/ITEMS/mcl_colorblocks/locale/mcl_colorblocks.es.tr create mode 100644 mods/ITEMS/mcl_compass/locale/mcl_compass.es.tr create mode 100644 mods/ITEMS/mcl_core/locale/mcl_core.es.tr create mode 100644 mods/ITEMS/mcl_crafting_table/locale/mcl_crafting_table.es.tr create mode 100644 mods/ITEMS/mcl_doors/locale/mcl_doors.es.tr create mode 100644 mods/ITEMS/mcl_dye/locale/mcl_dye.es.tr create mode 100644 mods/ITEMS/mcl_end/locale/mcl_end.es.tr create mode 100644 mods/ITEMS/mcl_farming/locale/mcl_farming.es.tr create mode 100644 mods/ITEMS/mcl_fences/locale/mcl_fences.es.tr create mode 100644 mods/ITEMS/mcl_fire/locale/mcl_fire.es.tr create mode 100644 mods/ITEMS/mcl_fishing/locale/mcl_fishing.es.tr create mode 100644 mods/ITEMS/mcl_flowerpots/locale/mcl_flowerpots.es.tr create mode 100644 mods/ITEMS/mcl_flowers/locale/mcl_flowers.es.tr create mode 100644 mods/ITEMS/mcl_furnaces/locale/mcl_furnaces.es.tr create mode 100644 mods/ITEMS/mcl_heads/locale/mcl_heads.es.tr create mode 100644 mods/ITEMS/mcl_hoppers/locale/mcl_hoppers.es.tr create mode 100644 mods/ITEMS/mcl_itemframes/locale/mcl_itemframes.es.tr create mode 100644 mods/ITEMS/mcl_jukebox/locale/mcl_jukebox.es.tr create mode 100644 mods/ITEMS/mcl_maps/locale/mcl_maps.es.tr create mode 100644 mods/ITEMS/mcl_mobitems/locale/mcl_mobitems.es.tr create mode 100644 mods/ITEMS/mcl_mobspawners/locale/mcl_mobspawners.es.tr create mode 100644 mods/ITEMS/mcl_monster_eggs/locale/mcl_monster_eggs.es.tr create mode 100644 mods/ITEMS/mcl_mushrooms/locale/mcl_mushrooms.es.tr create mode 100644 mods/ITEMS/mcl_nether/locale/mcl_nether.es.tr create mode 100644 mods/ITEMS/mcl_ocean/locale/mcl_ocean.es.tr create mode 100644 mods/ITEMS/mcl_portals/locale/mcl_portals.es.tr create mode 100644 mods/ITEMS/mcl_potions/locale/mcl_potions.es.tr create mode 100644 mods/ITEMS/mcl_signs/locale/mcl_signs.es.tr create mode 100644 mods/ITEMS/mcl_sponges/locale/mcl_sponges.es.tr create mode 100644 mods/ITEMS/mcl_stairs/locale/mcl_stairs.es.tr create mode 100644 mods/ITEMS/mcl_throwing/locale/mcl_throwing.es.tr create mode 100644 mods/ITEMS/mcl_tnt/locale/mcl_tnt.es.tr create mode 100644 mods/ITEMS/mcl_tools/locale/mcl_tools.es.tr create mode 100644 mods/ITEMS/mcl_torches/locale/mcl_torches.es.tr create mode 100644 mods/ITEMS/mcl_walls/locale/mcl_walls.es.tr create mode 100644 mods/ITEMS/mcl_wool/locale/mcl_wool.es.tr create mode 100644 mods/ITEMS/mclx_core/locale/mclx_core.es.tr create mode 100644 mods/ITEMS/mclx_fences/locale/mclx_fences.es.tr create mode 100644 mods/ITEMS/mclx_stairs/locale/mclx_stairs.es.tr create mode 100644 mods/ITEMS/minetest-3d_armor/3d_armor/locale/3d_armor.es.tr create mode 100644 mods/ITEMS/minetest-3d_armor/3d_armor_stand/locale/3d_armor_stand.es.tr create mode 100644 mods/ITEMS/screwdriver/locale/screwdriver.es.tr create mode 100644 mods/ITEMS/xpanes/locale/xpanes.es.tr create mode 100644 mods/MAPGEN/mcl_structures/locale/mcl_structures.es.tr create mode 100644 mods/MISC/mcl_commands/locale/mcl_commands.es.tr create mode 100644 mods/MISC/mcl_privs/locale/mcl_privs.es.tr create mode 100644 mods/MISC/mcl_wip/locale/mcl_wip.es.tr create mode 100644 mods/PLAYER/mcl_hunger/locale/mcl_hunger.es.tr create mode 100644 mods/PLAYER/mcl_playerplus/locale/mcl_playerplus.es.tr create mode 100644 mods/PLAYER/mcl_skins/locale/mcl_skins.es.tr create mode 100644 mods/PLAYER/mcl_spawn/locale/mcl_spawn.es.tr diff --git a/mods/ENTITIES/mcl_boats/locale/mcl_boats.es.tr b/mods/ENTITIES/mcl_boats/locale/mcl_boats.es.tr new file mode 100644 index 00000000..644efdb6 --- /dev/null +++ b/mods/ENTITIES/mcl_boats/locale/mcl_boats.es.tr @@ -0,0 +1,10 @@ +# textdomain: mcl_boats +Acacia Boat=Barca de acacia +Birch Boat=Barca de abedul +Boat=Barca +Boats are used to travel on the surface of water.=Las barcas se utilizan para viajar en la superficie del agua. +Dark Oak Boat=Barca de roble oscuro +Jungle Boat=Barca de la selva +Oak Boat=Barca de roble +Rightclick on a water source to place the boat. Rightclick the boat to enter it. Use [Left] and [Right] to steer, [Forwards] to speed up and [Backwards] to slow down or move backwards. Rightclick the boat again to leave it, punch the boat to make it drop as an item.=Haga clic derecho en una fuente de agua para colocar el barco. Haga clic derecho en el barco para entrar. Utilice [Izquierda] y [Derecha] para dirigir, [Adelante] para acelerar y [Atrás] para reducir la velocidad o retroceder. Haga clic derecho en el barco nuevamente para dejarlo, golpee el barco para que se caiga como un artículo. +Spruce Boat=Barca de abeto diff --git a/mods/ENTITIES/mcl_falling_nodes/locale/mcl_falling_nodes.es.tr b/mods/ENTITIES/mcl_falling_nodes/locale/mcl_falling_nodes.es.tr new file mode 100644 index 00000000..41cbf61b --- /dev/null +++ b/mods/ENTITIES/mcl_falling_nodes/locale/mcl_falling_nodes.es.tr @@ -0,0 +1,3 @@ +# textdomain: mcl_falling_nodes +@1 was smashed by a falling anvil.=@1 fue aplastado por la caída de un yunque. +@1 was smashed by a falling block.=@1 fue aplastado por la caída de un bloque. diff --git a/mods/ENTITIES/mcl_minecarts/locale/mcl_minecarts.es.tr b/mods/ENTITIES/mcl_minecarts/locale/mcl_minecarts.es.tr new file mode 100644 index 00000000..135f4769 --- /dev/null +++ b/mods/ENTITIES/mcl_minecarts/locale/mcl_minecarts.es.tr @@ -0,0 +1,23 @@ +# textdomain: mcl_minecarts +Minecart=Vagoneta +Minecarts can be used for a quick transportion on rails.=Las vagonetas se pueden usar para transportarse rápido en los rieles. +Minecarts only ride on rails and always follow the tracks. At a T-junction with no straight way ahead, they turn left. The speed is affected by the rail type.=Las vagonetas solo viajan en rieles y siempre siguen las pistas. En un cruce en T sin camino recto, giran a la izquierda. La velocidad se ve afectada por el tipo de riel. +You can place the minecart on rails. Right-click it to enter it. Punch it to get it moving.=Puedes colocar el vagoneta en los rieles. Haga clic derecho para insertarlo. Golpea para que se mueva. +To obtain the minecart, punch it while holding down the sneak key.=Para obtener el vagoneta, golpéalo mientras mantienes presionada la tecla. +Minecart with Chest=Vagoneta con cofre +Minecart with Furnace=Vagoneta con horno +Minecart with Command Block=Vagoneta con bloque de comandos +Minecart with Hopper=Vagoneta con tolva +Minecart with TNT=Vagoneta con dinamita +Place them on the ground to build your railway, the rails will automatically connect to each other and will turn into curves, T-junctions, crossings and slopes as needed.=Colóquelos en el suelo para construir su ferrocarril, los rieles se conectarán automáticamente entre sí y se convertirán en curvas, uniones en T, cruces y pendientes según sea necesario. +Rail=Raíl +Rails can be used to build transport tracks for minecarts. Normal rails slightly slow down minecarts due to friction.=Los rieles se pueden usar para construir vías de transporte para vagonetas. Los rieles normales ralentizan ligeramente las vagonetas debido a la fricción. +Powered Rail=Raíl propulsor +Rails can be used to build transport tracks for minecarts. Powered rails are able to accelerate and brake minecarts.=Los rieles se pueden usar para construir vías de transporte para vagonetas. Los railes propulsores pueden acelerar y frenar las vagonetas. +Without redstone power, the rail will brake minecarts. To make this rail accelerate minecarts, power it with redstone power.=Sin energía de piedra roja, el riel frenará las vagonetas. Para hacer que este riel acelere las vagonetas, aliméntalo con piedra roja. +Activator Rail=Raíl activador +Rails can be used to build transport tracks for minecarts. Activator rails are used to activate special minecarts.=Los rieles se pueden usar para construir vías de transporte para vagonetas. Los railes activador se utilizan para activar una vagoneta especial. +To make this rail activate minecarts, power it with redstone power and send a minecart over this piece of rail.=Para hacer que este riel active las vagonetas, enciéndelo con energía de piedra roja y envía una vagoneta sobre este pedazo de riel. +Detector Rail=Raíl detector +Rails can be used to build transport tracks for minecarts. A detector rail is able to detect a minecart above it and powers redstone mechanisms.=Los rieles se pueden usar para construir vías de transporte para vagonetas. Un raíl detector puede detectar una vagoneta sobre él y alimenta los mecanismos de redstone. +To detect a minecart and provide redstone power, connect it to redstone trails or redstone mechanisms and send any minecart over the rail.=Para detectar una vagoneta y proporcionar energía de piedra roja, conéctelo a los senderos de piedra roja o mecanismos de piedra roja y envíe cualquier vagoneta sobre el riel. diff --git a/mods/ENTITIES/mcl_mobs/locale/mcl_mobs.es.tr b/mods/ENTITIES/mcl_mobs/locale/mcl_mobs.es.tr new file mode 100644 index 00000000..ef067141 --- /dev/null +++ b/mods/ENTITIES/mcl_mobs/locale/mcl_mobs.es.tr @@ -0,0 +1,9 @@ +# textdomain: mcl_mobs +Peaceful mode active! No monsters will spawn.=¡Modo pacífico activo! No aparecerán monstruos. +This allows you to place a single mob.=Esto le permite colocar un solo animal. +Just place it where you want the mob to appear. Animals will spawn tamed, unless you hold down the sneak key while placing. If you place this on a mob spawner, you change the mob it spawns.=Simplemente colóquelo donde desea que aparezcan los animales. Los animales aparecerán domesticados, a menos que mantenga presionada la tecla de sigilo mientras coloca. Si coloca esto en un engendrador de animales, cambia el animal que genera. +You need the “maphack” privilege to change the mob spawner.=Necesita el privilegio "maphack" para cambiar el generador de animales. +Name Tag=Etiqueta +A name tag is an item to name a mob.=Una etiqueta es un elemento para nombrar una animal. +Before you use the name tag, you need to set a name at an anvil. Then you can use the name tag to name a mob. This uses up the name tag.=Antes de usar la etiqueta, debe establecer un nombre en un yunque. Luego puede usar la etiqueta para nombrar un animal. Esto usa la etiqueta. +Only peaceful mobs allowed!=¡Solo se permiten animales pacíficos! diff --git a/mods/ENTITIES/mobs_mc/locale/mobs_mc.es.tr b/mods/ENTITIES/mobs_mc/locale/mobs_mc.es.tr new file mode 100644 index 00000000..240e7759 --- /dev/null +++ b/mods/ENTITIES/mobs_mc/locale/mobs_mc.es.tr @@ -0,0 +1,74 @@ +# textdomain: mobs_mc +Totem of Undying=Tótem de la inmortalidad +A totem of undying is a rare artifact which may safe you from certain death.=Un tótem de la inmortalidad es un artefacto raro que puede salvarte de una muerte segura. +The totem only works while you hold it in your hand. If you receive fatal damage, you are saved from death and you get a second chance with 1 HP. The totem is destroyed in the process, however.=El tótem solo funciona mientras lo sostienes en tu mano. Si recibes un daño crítico, no mueres y obtienes una segunda oportunidad con 1 HP. Sin embargo, el tótem se destruye en el proceso. +Agent=Agente +Bat=Murciélago +Blaze=Blaze +Chicken=Pollo +Cow=Vaca +Mooshroom=Champiñaca +Creeper=Creeper +Ender Dragon=Enderdragón +Enderman=Enderman +Endermite=Endermite +Ghast=Ghast +Elder Guardian=Gran guardián +Guardian=Guardián +Horse=Caballo +Skeleton Horse=Caballo esquelético +Zombie Horse=Caballo zombie +Donkey=Burro +Mule=Mula +Iron Golem=Golem de hierro +Llama=Llama +Ocelot=Ocelote +Parrot=Loro +Pig=Cerdo +Polar Bear=Oso polar +Rabbit=Conejo +Killer Bunny=Conejo asesino +Sheep=Oveja +Shulker=Shulker +Silverfish=Lepisma +Skeleton=Esqueleto +Stray=Esqueleto +Wither Skeleton=Esqueleto wither +Magma Cube=Cubo de Magma +Slime=Slime +Snow Golem=Golem de nieve +Spider=Araña +Cave Spider=Araña de las cuevas +Squid=Calamar +Vex=Ánima +Evoker=Invocador +Illusioner=Illusionista +Villager=Aldeano +Vindicator=Vindicador +Zombie Villager=Aldeano zombie +Witch=Bruja +Wither=Wither +Wolf=Lobo +Husk=Husk +Zombie=Zombie +Zombie Pigman=Cerdo Zombie +Iron Horse Armor=Armadura de hierro para caballo +Iron horse armor can be worn by horses to increase their protection from harm a bit.=Los caballos pueden usar armadura de caballo de hierro para aumentar un poco su protección contra el daño. +Golden Horse Armor=Armadura de oro para caballo +Golden horse armor can be worn by horses to increase their protection from harm.=Los caballos pueden usar armadura de caballo de oro para aumentar su protección contra el daño. +Diamond Horse Armor=Armadura de diamante para caballo +Diamond horse armor can be worn by horses to greatly increase their protection from harm.=Los caballos pueden usar armadura de caballo de diamante para aumentar en gran medida su protección contra el daño. +Place it on a horse to put on the horse armor. Donkeys and mules can't wear horse armor.=Colóquelo en un caballo para ponerle la armadura de caballo. Los burros y las mulas no pueden usar armadura de caballo. +Farmer=Granjero +Fisherman=Pescador +Fletcher=Flechador +Shepherd=Sacerdote +Librarian=Bibliotecario +Cartographer=Cartógrafo +Armorer=Armero +Leatherworker=Peletero +Butcher=Carnicero +Weapon Smith=Herrero de Armas +Tool Smith=Herrero de Herramientas +Cleric=Sacerdote +Nitwit=Simple diff --git a/mods/ENVIRONMENT/lightning/locale/lightning.es.tr b/mods/ENVIRONMENT/lightning/locale/lightning.es.tr new file mode 100644 index 00000000..5d207a5c --- /dev/null +++ b/mods/ENVIRONMENT/lightning/locale/lightning.es.tr @@ -0,0 +1,4 @@ +# textdomain: lightning +@1 was struck by lightning.=@ 1 fue alcanzado por un rayo. +Let lightning strike at the specified position or yourself=Deje que un rayo golpee en la posición especificada o sobre usted mismo. +No position specified and unknown player=Ninguna posición especificada y jugador desconocido diff --git a/mods/ENVIRONMENT/mcl_void_damage/locale/mcl_void_damage.es.tr b/mods/ENVIRONMENT/mcl_void_damage/locale/mcl_void_damage.es.tr new file mode 100644 index 00000000..73d7d065 --- /dev/null +++ b/mods/ENVIRONMENT/mcl_void_damage/locale/mcl_void_damage.es.tr @@ -0,0 +1,3 @@ +# textdomain: mcl_void_damage +The void is off-limits to you!=¡El vacío está fuera de tus límites! +@1 fell into the endless void.=@1 cayó en el vacío infinito. diff --git a/mods/ENVIRONMENT/mcl_weather/locale/mcl_weather.es.tr b/mods/ENVIRONMENT/mcl_weather/locale/mcl_weather.es.tr new file mode 100644 index 00000000..396b77f0 --- /dev/null +++ b/mods/ENVIRONMENT/mcl_weather/locale/mcl_weather.es.tr @@ -0,0 +1,8 @@ +# textdomain: mcl_weather +Gives ability to control weather=Da la capacidad de controlar el clima +Changes the weather to the specified parameter.=Cambia el clima al parámetro especificado. +Error: No weather specified.=Error: no se especificó el clima. +Error: Invalid parameters.=Error: parámetros no válidos. +Error: Duration can't be less than 1 second.=Error: la duración no puede ser inferior a 1 segundo. +Error: Invalid weather specified. Use “clear”, “rain”, “snow” or “thunder”.=Error: tiempo especificado no válido. Utilice "clear", "rain", "snow" o "thunder". +Toggles between clear weather and weather with downfall (randomly rain, thunderstorm or snow)=Alterna entre clima despejado y clima con caída (lluvia al azar, tormenta o nieve) diff --git a/mods/HELP/doc/doc_identifier/locale/doc_identifier.es.tr b/mods/HELP/doc/doc_identifier/locale/doc_identifier.es.tr new file mode 100644 index 00000000..66c272f7 --- /dev/null +++ b/mods/HELP/doc/doc_identifier/locale/doc_identifier.es.tr @@ -0,0 +1,17 @@ +# textdomain:doc_identifier +Error: This node, item or object is undefined. This is always an error.=Error: este nodo, elemento u objeto no está definido. Esto siempre es un error. +This can happen for the following reasons:=Esto puede suceder por los siguientes motivos: +• The mod which is required for it is not enabled=• El mod que se requiere para ello no está habilitado +• The author of the game or a mod has made a mistake=• El autor del juego o un mod ha cometido un error +It appears to originate from the mod “@1”, which is enabled.=Parece originarse del mod "@1", que está habilitado. +It appears to originate from the mod “@1”, which is not enabled!=¡Parece originarse del mod "@1", que no está habilitado! +Its identifier is “@1”.=Su identificador es "@1“. +Lookup Tool=Herramienta lupa +No help entry for this block could be found.=No se encontró ninguna entrada de ayuda para este bloque. +No help entry for this item could be found.=No se pudo encontrar ninguna entrada de ayuda para este artículo. +No help entry for this object could be found.=No se pudo encontrar ninguna entrada de ayuda para este objeto. +OK=Aceptar +Punch any block, item or other thing about you wish to learn more about. This will open up the appropriate help entry. The tool comes in two modes which are changed by using. In liquid mode, this tool points to liquids as well while in solid mode this is not the case.=Perfore cualquier bloque, elemento u otra cosa sobre la que desee obtener más información. Esto abrirá la entrada de ayuda apropiada. La herramienta viene en dos modos que se cambian mediante el uso. En modo líquido, esta herramienta también apunta a líquidos, mientras que en modo sólido este no es el caso. +This block cannot be identified because the world has not materialized at this point yet. Try again in a few seconds.=Este bloque no se puede identificar porque el mundo aún no se ha materializado en este momento. Inténtalo de nuevo en unos segundos. +This is a player.=Este es un jugador. +This useful little helper can be used to quickly learn more about about one's closer environment. It identifies and analyzes blocks, items and other things and it shows extensive information about the thing on which it is used.=Este útil pequeño ayudante se puede utilizar para aprender rápidamente sobre el entorno más cercano. Identifica y analiza bloques, elementos y otras cosas y muestra información extensa sobre la cosa en la que se utiliza. diff --git a/mods/HUD/awards/locale/awards.es.tr b/mods/HUD/awards/locale/awards.es.tr new file mode 100644 index 00000000..15e8c467 --- /dev/null +++ b/mods/HUD/awards/locale/awards.es.tr @@ -0,0 +1,51 @@ +# textdomain:awards +@1: @2=@1: @2 +@1 (got)=@1 (Completado) +@1’s awards:=Premios de @1: +(Secret Award)=(Premio secreto) +Achievement gotten!=¡Logro conseguido! +Achievement gotten:=Logro conseguido: +Achievement gotten: @1=Logro conseguido: @1 +Secret achievement gotten!=¡Logro secreto conseguido! +Secret achievement gotten:=Logro secreto conseguido: +Secret achievement gotten: @1=Logro secreto conseguido: @1 +Get this achievement to find out what it is.=Obtén este logro para descubrir de qué se trata. +You have not gotten any awards.=No has recibido ningún premio. +You've disabled awards. Type /awards enable to reenable.=Has desactivado los premios. Introduce /awards enable para habilitarlos. += += +Achievement not found.=Logro no encontrado. +All your awards and statistics have been cleared. You can now start again.=Todos sus premios y estadísticas han sido borrados. Ahora puede comenzar de nuevo. +Get the achievements statistics for the given player or yourself=Obtén las estadísticas de logros para el jugador dado o para ti mismo +List awards in chat (deprecated)=Lista de premios en el chat (en desuso) +Show, clear, disable or enable your achievements=Muestra, borra, deshabilita o habilita tus logros +You have disabled your achievements.=Has deshabilitado tus logros. +You have enabled your achievements.=Has habilitado tus logros. +[c|clear|disable|enable]=[c|clear|disable|enable] +Awards=Premios +@1/@2 crafted=@1/@2 fabricado(s) +@1/@2 deaths=@1/@2 muertes +@1/@2 dug=@1/@2 excavado +@1/@2 game joins=@1/@2 inicios de sesión +@1/@2 lines of chat=@1/@2 líneas de chat +@1/@2 placed=@1/@2 metido +Die @1 times.=Muere @1 veces. +Die.=Muere. +Craft: @1×@2=Artista: @1×@2 +Craft: @1=Artista: @1 +Mine a block: @1=Mina un bloque: @1 +Mine blocks: @1×@2=Bloques de minas: @1×@2 +Place a block: @1=Coloca un bloque: @1 +Place blocks: @1×@2=Colocar bloques: @1×@2 +Join the game.=Unirse al juego. +Join the game @1 times.=Unirse al juego @1 veces. +Show details of an achievement=Mostrar detalles de un logro +OK=Aceptar +Error: No awards available.=Error: No hay premios disponibles. +Eat: @1×@2=Comer: @1×@2 +Eat: @1=Comer: @1 +@1/@2 eaten=@1/@2 comido +Place @1 block(s).=Posiciona @1 bloque(s). +Dig @1 block(s).=Cava @1 bloque(s). +Eat @1 item(s).=Come @1 alimento(s). +Craft @1 item(s).=Crea @1 artículo(s). diff --git a/mods/HUD/hbarmor/locale/hbarmor.es.tr b/mods/HUD/hbarmor/locale/hbarmor.es.tr new file mode 100644 index 00000000..78bd409f --- /dev/null +++ b/mods/HUD/hbarmor/locale/hbarmor.es.tr @@ -0,0 +1,2 @@ +Armor=Armadura +%s: %d%%=%s: %d%% diff --git a/mods/HUD/hudbars/locale/es.txt b/mods/HUD/hudbars/locale/es.txt new file mode 100644 index 00000000..f53858dd --- /dev/null +++ b/mods/HUD/hudbars/locale/es.txt @@ -0,0 +1,5 @@ +Health = Salud +Breath = Aliento + +# Formato de string padrão para progresso bar-style de barras do HUD, por exemplo “Saude 5/20” +%s: %d/%d diff --git a/mods/HUD/mcl_achievements/locale/mcl_achievements.es.tr b/mods/HUD/mcl_achievements/locale/mcl_achievements.es.tr new file mode 100644 index 00000000..2044e826 --- /dev/null +++ b/mods/HUD/mcl_achievements/locale/mcl_achievements.es.tr @@ -0,0 +1,49 @@ +# textdomain:mcl_achievements +Aquire Hardware=Obteniendo un lingote +Bake Bread=Horneando pan +Benchmarking=Crea tu mesa de trabajo +Cow Tipper=Consiguiendo cuero +Craft a bookshelf.=Crea una estantería. +Craft a cake using wheat, sugar, milk and an egg.=Crea una tarta con trigo, azúcar, leche y un huevo. +Craft a crafting table from 4 wooden planks.=Crea una mesa de trabajo con 4 tablas de madera procesada. +Craft a stone pickaxe using sticks and cobblestone.=Crea un pico de piedra con palos y rocas. +Craft a wooden sword using wooden planks and sticks on a crafting table.=Haz una espada de madera con tablas de madera y palos en una mesa de trabajo. +DIAMONDS!=¡Diamantes! +Delicious Fish=Delicioso pescado +Dispense With This=Prescinda de esto +Eat a cooked porkchop.=Come una chuleta de cerdo cocinado. +Eat a cooked rabbit.=Come un conejo cocinado. +Get really desperate and eat rotten flesh.=Desesperate y come carne podrida. +Getting Wood=Obtén madera +Getting an Upgrade=Obteniendo una mejora +Hit a skeleton, wither skeleton or stray by bow and arrow from a distance of at least 20 meters.=Golpear un esqueleto, Wither o desviarle con arco y flecha desde una distancia de al menos 20 metros. +Hot Topic=Tema candente +Into Fire=En el fuego +Into the Nether=En el abismo +Iron Belly=Vientre de hierro +Librarian=Bibliotecario +Mine emerald ore.=Mina de esmeralda. +On A Rail=Viajando en un carril +Pick up a blaze rod from the floor.=Recoge una barra de fuego del suelo. +Pick up a diamond from the floor.=Recoge un diamante del suelo. +Pick up a wood item from the ground.@nHint: Punch a tree trunk until it pops out as an item.=Recoge un elemento de madera del suelo. @nSugerencia: Golpee el tronco de un árbol hasta que salga como un elemento. +Pick up leather from the floor.@nHint: Cows and some other animals have a chance to drop leather, when killed.=Recoja el cuero del suelo. @nSugerencia: Las vacas y algunos otros animales tienen la oportunidad de soltar el cuero cuando mueren. +Place a dispenser.=Coloca un dispensador. +Place a flower pot.=Coloca una maceta. +Pork Chop=Chuleta de cerdo +Pot Planter=Jardinero +Rabbit Season=Temporada del conejo +Sniper Duel=Duelo de arqueros +Take a cooked fish from a furnace.@nHint: Use a fishing rod to catch a fish and cook it in a furnace.=Tome un pescado cocido de un horno. @nSugerencia: Use una caña de pescar para atrapar un pez y cocínelo en un horno. +Take an iron ingot from a furnace's output slot.@nHint: To smelt an iron ingot, put a fuel (like coal) and iron ore into a furnace.=Obtén un lingote de hierro de un horno. @nSugerencia: Para fundir un lingote de hierro, coloque un combustible (como carbón) y mineral de hierro en un horno. +The Haggler=El regateador +The Lie=El cocinero +Time to Farm!=¡Hora de cultivar! +Time to Mine!=¡Hora de minar! +Time to Strike!=¡Hora de atacar! +Travel by minecart for at least 1000 meters from your starting point in a single ride.=Viaje en un carro minero durante al menos 1000 metros desde su punto de partida en un solo viaje. +Use 8 cobblestones to craft a furnace.=Usa 8 rocas para crear un horno. +Use a crafting table to craft a wooden hoe from wooden planks and sticks.=Usa una mesa de trabajo para hacer una azada de madera con tablas de madera procesada y palos de madera. +Use a crafting table to craft a wooden pickaxe from wooden planks and sticks.=Usa una mesa de trabajo para hacer un pico de madera con tablas de madera procesada y palos de madera. +Use obsidian and a fire starter to construct a Nether portal.=Usa obsidiana y un iniciador de fuego para construir un portal abisal. +Use wheat to craft a bread.=Usa trigo para elaborar pan. diff --git a/mods/HUD/mcl_death_messages/locale/mcl_death_messages.es.tr b/mods/HUD/mcl_death_messages/locale/mcl_death_messages.es.tr new file mode 100644 index 00000000..6ed106db --- /dev/null +++ b/mods/HUD/mcl_death_messages/locale/mcl_death_messages.es.tr @@ -0,0 +1,57 @@ +# textdomain: mcl_death_messages +@1 was fatally hit by an arrow.=@1 fue golpeado muy duro por una flecha. +@1 has been killed by an arrow.=@1 ha sido asesinado por una flecha. +@1 was shot by an arrow from @2.=@1 fue disparado por una flecha de @2. +@1 was shot by an arrow from a skeleton.=@1 fue disparado por una flecha de un esqueleto. +@1 was shot by an arrow from a stray.=@1 fue disparado por una flecha de un extraviado. +@1 was shot by an arrow from an illusioner.=@1 fue disparado por una flecha de un ilusionista. +@1 was shot by an arrow.=@1 fue disparado por una flecha. +@1 forgot to breathe.=@1 olvidó respirar. +@1 drowned.=@1 ahogado. +@1 ran out of oxygen.=@1 se quedó sin oxígeno. +@1 was killed by @2.=@1 fue matado por @2. +@1 was killed by a mob.=@1 fue asesinado por un animal. +@1 was burned to death by a blaze's fireball.=@1 fue quemado hasta la muerte por la bola de fuego de un incendio. +@1 was killed by a fireball from a blaze.=@1 fue asesinado por una bola de fuego de un incendio. +@1 was burned by a fire charge.=@1 fue quemado por una carga de fuego. +A ghast scared @1 to death.=Se ha asustado @1 hasta morir. +@1 has been fireballed by a ghast.=@1 ha sido disparado por un fantasma. +@1 fell from a high cliff.=@1 cayó de un acantilado. +@1 took fatal fall damage.=@1 se hizo daño crítico por una caída. +@1 fell victim to gravity.=@1 cayó víctima de la gravedad. +@1 died.=@1 murió. +@1 was killed by a zombie.=@1 fue asesinado por un zombie. +@1 was killed by a baby zombie.=@1 fue asesinado por un bebé zombie. +@1 was killed by a blaze.=@1 fue asesinado por una llamarada. +@1 was killed by a slime.=@1 fue asesinado por un Slime. +@1 was killed by a witch.=@1 fue asesinado por una bruja. +@1 was killed by a magma cube.=@1 fue asesinado por un cubo de lava. +@1 was killed by a wolf.=@1 fue asesinado por un lobo. +@1 was killed by a cat.=@1 fue asesinado por un gato. +@1 was killed by an ocelot.=@1 fue asesinado por un ocelote. +@1 was killed by an ender dragon.=@1 fue asesinado por un dragón ender. +@1 was killed by a wither.=@1 fue asesinado por un Wither. +@1 was killed by an enderman.=@1 fue asesinado por un Enderman. +@1 was killed by an endermite.=@1 fue asesinado por un Endermite. +@1 was killed by a ghast.=@1 fue asesinado por un Ghast. +@1 was killed by an elder guardian.=@1 fue asesinado por un gran guardián. +@1 was killed by a guardian.=@1 fue asesinado por un guardián. +@1 was killed by an iron golem.=@1 fue asesinado por un golem de hierro. +@1 was killed by a polar_bear.=@1 fue asesinado por un oso polar. +@1 was killed by a killer bunny.=@1 fue asesinado por un conejo asesino. +@1 was killed by a shulker.=@1 fue asesinado por un shulker. +@1 was killed by a silverfish.=@1 fue asesinado por un pez plateado. +@1 was killed by a skeleton.=@1 fue asesinado por un esqueleto. +@1 was killed by a stray.=@1 fue asesinado por un extraviado. +@1 was killed by a slime.=@1 fue asesinado por un limo. +@1 was killed by a spider.=@1 fue asesinado por una araña. +@1 was killed by a cave spider.=@1 fue asesinado por una araña de cueva. +@1 was killed by a vex.=@1 fue asesinado por un vex. +@1 was killed by an evoker.=@1 fue asesinado por un mago. +@1 was killed by an illusioner.=@1 fue asesinado por un ilusionista. +@1 was killed by a vindicator.=@1 fue asesinado por un vindicador. +@1 was killed by a zombie villager.=@1 fue asesinado por un aldeano zombie. +@1 was killed by a husk.=@1 fue asesinado por un husk. +@1 was killed by a baby husk.=@1 fue asesinado por un bebé husk. +@1 was killed by a zombie pigman.=@1 fue asesinado por un cerdo zombie. +@1 was killed by a baby zombie pigman.=@1 fue asesinado por un bebé cerdo zombie. diff --git a/mods/HUD/mcl_inventory/locale/mcl_inventory.es.tr b/mods/HUD/mcl_inventory/locale/mcl_inventory.es.tr new file mode 100644 index 00000000..a89ba39e --- /dev/null +++ b/mods/HUD/mcl_inventory/locale/mcl_inventory.es.tr @@ -0,0 +1,19 @@ +# textdomain: mcl_inventory +Recipe book=Libro de recetas +Help=Ayuda +Select player skin=Seleccionar skin +Achievements=Logros +Building Blocks=Bloques de construcción +Decoration Blocks=Bloques de decoración +Redstone=Piedra roja +Transportation=Transporte +Miscellaneous=Variado +Search Items=Buscar artículos +Foodstuffs=Productos alimenticios +Tools=Herramientas +Combat=Combate +Mobs=Mobs +Materials=Materiales +Survival Inventory=Inventario de supervivencia +Crafting=Elaboración +Inventory=Inventario diff --git a/mods/ITEMS/REDSTONE/mcl_comparators/locale/mcl_comparators.es.tr b/mods/ITEMS/REDSTONE/mcl_comparators/locale/mcl_comparators.es.tr new file mode 100644 index 00000000..581c0ab1 --- /dev/null +++ b/mods/ITEMS/REDSTONE/mcl_comparators/locale/mcl_comparators.es.tr @@ -0,0 +1,12 @@ +# textdomain: mcl_comparators +Redstone comparators are multi-purpose redstone components.=Los comparadores de Redstone son componentes multipropósito de redstone. +They can transmit a redstone signal, detect whether a block contains any items and compare multiple signals.=Pueden transmitir una señal de redstone, detectar si un bloque contiene algún elemento y comparar múltiples señales. +A redstone comparator has 1 main input, 2 side inputs and 1 output. The output is in arrow direction, the main input is in the opposite direction. The other 2 sides are the side inputs.=Un comparador redstone tiene 1 entrada principal, 2 entradas laterales y 1 salida. La salida está en la dirección de la flecha, la entrada principal está en la dirección opuesta. Los otros 2 lados son las entradas laterales. +The main input can powered in 2 ways: First, it can be powered directly by redstone power like any other component. Second, it is powered if, and only if a container (like a chest) is placed in front of it and the container contains at least one item.=La entrada principal puede alimentarse de 2 maneras: en primer lugar, puede alimentarse directamente mediante redstone como cualquier otro componente. En segundo lugar, se alimenta si, y solo si se coloca un contenedor (como un cofre) frente a él y el contenedor contiene al menos un elemento. +The side inputs are only powered by normal redstone power. The redstone comparator can operate in two modes: Transmission mode and subtraction mode. It starts in transmission mode and the mode can be changed by using the block.=Las entradas laterales solo están alimentadas por la alimentación normal de redstone. El comparador de redstone puede funcionar en dos modos: modo de transmisión y modo de resta. Comienza en modo de transmisión y el modo se puede cambiar usando el bloque. +Transmission mode:@nThe front torch is unlit and lowered. The output is powered if, and only if the main input is powered. The two side inputs are ignored.=Modo de transmisión: @nLa antorcha delantera está apagada y baja. La salida se alimenta solo si se alimenta la entrada principal. Las dos entradas laterales se ignoran. +Subtraction mode:@nThe front torch is lit. The output is powered if, and only if the main input is powered and none of the side inputs is powered.=Modo de resta: @nLa antorcha delantera está encendida. La salida se alimenta si, y solo si la entrada principal está alimentada y ninguna de las entradas laterales está alimentada. +Redstone Comparator=Comparador de redstone +Redstone Comparator (Subtract)=Comparador de redstone (Negativo) +Redstone Comparator (Powered)=Comparador de redstone (Motorizado) +Redstone Comparator (Subtract, Powered)=Redstonekomparator (Negativo, Motorizado) diff --git a/mods/ITEMS/REDSTONE/mcl_dispensers/locale/mcl_dispensers.es.tr b/mods/ITEMS/REDSTONE/mcl_dispensers/locale/mcl_dispensers.es.tr new file mode 100644 index 00000000..cf695307 --- /dev/null +++ b/mods/ITEMS/REDSTONE/mcl_dispensers/locale/mcl_dispensers.es.tr @@ -0,0 +1,22 @@ +# textdomain: mcl_dispensers +Dispenser=Dispensador +A dispenser is a block which acts as a redstone component which, when powered with redstone power, dispenses an item. It has a container with 9 inventory slots.=Un dispensador es un bloque que actúa como un componente de redstone que, cuando se alimenta con energía de redstone, dispensa un artículo. Tiene un contenedor con 9 ranuras de inventario. +Place the dispenser in one of 6 possible directions. The “hole” is where items will fly out of the dispenser. Use the dispenser to access its inventory. Insert the items you wish to dispense. Supply the dispenser with redstone energy once to dispense a random item.=Coloque el dispensador en una de las 6 direcciones posibles. El "agujero" es donde los artículos saldrán volando del dispensador. Use el dispensador para acceder a su inventario. Inserte los artículos que desea dispensar. Proporcione al dispensador energía de redstone una vez para dispensar un elemento aleatorio: +• Arrows: Are launched=• Flechas: Se lanzan +• Eggs and snowballs: Are thrown=• Huevos y bolas de nieve: Son lanzados +• Fire charges: Are fired in a straight line=• Cargas de fuego: Se disparan en línea recta +• Armor: Will be equipped to players and armor stands=• Armadura: Estará equipada para jugadores y armaduras +• Boats: Are placed on water or are dropped=• Barcas: Se colocan en el agua o se dejan caer +• Minecart: Are placed on rails or are dropped=• Carro de minas: Se colocan sobre rieles o se dejan caer = +• Bone meal: Is applied on the block it is facing=• Harina de hueso: Se aplica en el bloque que está enfrentando +• Empty buckets: Are used to collect a liquid source=• Cubos vacíos: Se utilizan para recolectar una fuente líquida +• Filled buckets: Are used to place a liquid source=• Cubos llenos: Se utilizan para colocar una fuente de líquido +• Heads, pumpkins: Equipped to players and armor stands, or placed as a block=• Cabezas, calabazas: Equipadas para jugadores y armaduras, o colocadas como un bloque +• Shulker boxes: Are placed as a block=• Cajas de Shulker: Se colocan como un bloque +• TNT: Is placed and ignited=• TNT: Se coloca y se enciende +• Flint and steel: Is used to ignite a fire in air and to ignite TNT=• Mechero: Se usa para encender un fuego en el aire y para encender TNT +• Spawn eggs: Will summon the mob they contain=• Huevos de desove: Convocarán al animal que contienen +• Other items: Are simply dropped=• Otros artículos: Simplemente se dejan caer +Downwards-Facing Dispenser=Dispensador orientado hacia abajo +Upwards-Facing Dispenser=Dispensador orientado hacia arriba +Inventory=Inventario diff --git a/mods/ITEMS/REDSTONE/mcl_droppers/locale/mcl_droppers.es.tr b/mods/ITEMS/REDSTONE/mcl_droppers/locale/mcl_droppers.es.tr new file mode 100644 index 00000000..6ebedc46 --- /dev/null +++ b/mods/ITEMS/REDSTONE/mcl_droppers/locale/mcl_droppers.es.tr @@ -0,0 +1,7 @@ +# textdomain: mcl_droppers +Dropper=Soltador +A dropper is a redstone component and a container with 9 inventory slots which, when supplied with redstone power, drops an item or puts it into a container in front of it.=Un Soltador es un componente de redstone y un contenedor con 9 ranuras de inventario que, cuando se suministra con redstone power, deja caer un artículo o lo coloca en un contenedor frente a él. +Droppers can be placed in 6 possible directions, items will be dropped out of the hole. Use the dropper to access its inventory. Supply it with redstone energy once to make the dropper drop or transfer a random item.=Los soltadores se pueden colocar en 6 direcciones posibles, los artículos se sacarán del agujero. Usa el cuentagotas para acceder a su inventario. Proporcione energía de piedra roja una vez para hacer que el soltador caiga o transfiera un elemento aleatorio. +Downwards-Facing Dropper=Soltador orientado hacia abajo +Upwards-Facing Dropper=Soltador orientado hacia arriba +Inventory=Inventario diff --git a/mods/ITEMS/REDSTONE/mcl_observers/locale/mcl_observers.es.tr b/mods/ITEMS/REDSTONE/mcl_observers/locale/mcl_observers.es.tr new file mode 100644 index 00000000..146b72b8 --- /dev/null +++ b/mods/ITEMS/REDSTONE/mcl_observers/locale/mcl_observers.es.tr @@ -0,0 +1,4 @@ +# textdomain: mcl_observers +Observer=Observador +An observer is a redstone component which observes the block in front of it and sends a very short redstone pulse whenever this block changes.=Un observador es un componente de redstone que observa el bloque frente a él y envía un pulso muy corto de redstone cada vez que este bloque cambia. +Place the observer directly in front of the block you want to observe with the “face” looking at the block. The arrow points to the side of the output, which is at the opposite side of the “face”. You can place your redstone dust or any other component here.=Coloque el observador directamente en frente del bloque que desea observar con la "cara" mirando el bloque. La flecha apunta al lado de la salida, que está en el lado opuesto de la "cara". Puede colocar su polvo de redstone o cualquier otro componente aquí. diff --git a/mods/ITEMS/REDSTONE/mesecons_button/locale/mesecons_button.es.tr b/mods/ITEMS/REDSTONE/mesecons_button/locale/mesecons_button.es.tr new file mode 100644 index 00000000..d793b7a9 --- /dev/null +++ b/mods/ITEMS/REDSTONE/mesecons_button/locale/mesecons_button.es.tr @@ -0,0 +1,11 @@ +# textdomain: mesecons_button +Use the button to push it.=Usa el botón para pulsarlo. +Stone Button=Botón de piedra +A stone button is a redstone component made out of stone which can be pushed to provide redstone power. When pushed, it powers adjacent redstone components for 1 second.=Un botón de piedra es un componente de redstone hecho de piedra que se puede presionar para proporcionar energía de redstone. Cuando se empuja, alimenta los componentes adyacentes de redstone durante 1 segundo. +Oak Button=Botón de roble +Acacia Button=Botón de acacia +Birch Button=Botón de abedul +Dark Oak Button=Botón de roble oscuro +Spruce Button=Botón de abeto +Jungle Button=Botón de jungla +A wooden button is a redstone component made out of wood which can be pushed to provide redstone power. When pushed, it powers adjacent redstone components for 1.5 seconds. Wooden buttons may also be pushed by arrows.=Ein Holzknopf ist eine Redstonekomponente aus Holz. Er kann gedrückt werden, um ein Redstonesignal zu senden. Im gedrückten Zustand versorgt er benachbarte Redstonekomponenten für 1,5 Sekunden mit Redstoneenergie. Holzknöpfe können auch von Pfeilen gedrückt werden. diff --git a/mods/ITEMS/REDSTONE/mesecons_commandblock/locale/mesecons_commandblock.es.tr b/mods/ITEMS/REDSTONE/mesecons_commandblock/locale/mesecons_commandblock.es.tr new file mode 100644 index 00000000..65e59115 --- /dev/null +++ b/mods/ITEMS/REDSTONE/mesecons_commandblock/locale/mesecons_commandblock.es.tr @@ -0,0 +1,29 @@ +# textdomain: mesecons_commandblock +Error: The command “@1” does not exist; your command block has not been changed. Use the “help” chat command for a list of available commands.=Error: el comando "@1" no existe; su bloque de comando no ha sido cambiado. Utilice el comando de chat "help" para obtener una lista de los comandos disponibles. +Error: The command “@1” does not exist; your command block has not been changed. Use the “help” chat command for a list of available commands. Hint: Try to remove the leading slash.=Error: el comando "@1" no existe; su bloque de comando no ha sido cambiado. Utilice el comando de chat "help" para obtener una lista de los comandos disponibles. Sugerencia: intente eliminar la barra diagonal inicial. +Error: You have insufficient privileges to use the command “@1” (missing privilege: @2)! The command block has not been changed.=Error: ¡No tiene suficientes privilegios para usar el comando “@ 1” (faltan privilegios: @ 2)! El bloque de comando no ha sido cambiado. +Error: No commander! Block must be replaced.=Error: ¡Sin dueño! El bloque debe ser reemplazado. +Commander: @1=Dueño: @1 +Submit=Aceptar +No commands.=Sin comandos. +Commands:=Comandos: +Help=Ayuda +Placement denied. You need the “maphack” privilege to place command blocks.=Colocación denegada. Necesita el privilegio "maphack" para colocar bloques de comandos. +Command Block=Bloque de comandos +Command blocks are mighty redstone components which are able to alter reality itself. In other words, they cause the server to execute server commands when they are supplied with redstone power.=Los bloques de comandos son poderosos componentes de redstone que pueden alterar la realidad misma. En otras palabras, hacen que el servidor ejecute comandos del servidor cuando se les suministra energía redstone. +Everyone can activate a command block and look at its commands, but not everyone can edit and place them.=Todos pueden activar un bloque de comandos y ver sus comandos, pero no todos pueden editarlos y colocarlos. +To view the commands in a command block, use it. To activate the command block, just supply it with redstone power. This will execute the commands once. To execute the commands again, turn the redstone power off and on again.=Para ver los comandos en un bloque de comandos, úselo. Para activar el bloque de comando, solo suminístrelo con redstone power. Esto ejecutará los comandos una vez. Para ejecutar los comandos nuevamente, apague y vuelva a encender la redstone. +To be able to place a command block and change the commands, you need to be in Creative Mode and must have the “maphack” privilege. A new command block does not have any commands and does nothing. Use the command block (in Creative Mode!) to edit its commands. Read the help entry “Advanced topics > Server Commands” to understand how commands work. Each line contains a single command. You enter them like you would in the console, but without the leading slash. The commands will be executed from top to bottom.=Para poder colocar un bloque de comandos y cambiar los comandos, debe estar en modo creativo y debe tener el privilegio de "maphack". Un nuevo bloque de comandos no tiene ningún comando y no hace nada. Use el bloque de comandos (en modo creativo) para editar sus comandos. Lea la entrada de ayuda "Temas avanzados> Comandos del servidor" para comprender cómo funcionan los comandos. Cada línea contiene un solo comando. Los ingresas como lo harías en la consola, pero sin la barra inclinada. Los comandos se ejecutarán de arriba a abajo. + +All commands will be executed on behalf of the player who placed the command block, as if the player typed in the commands. This player is said to be the “commander” of the block.=Todos los comandos se ejecutarán en el nombre del jugador que colocó el bloque de comandos, como si el jugador tecleara los comandos. Se dice que este jugador es el "dueño" del bloque. +Command blocks support placeholders, insert one of these placeholders and they will be replaced by some other text:=Los bloques de comando admiten marcadores de posición, inserte uno de estos marcadores de posición y serán reemplazados por otro texto: +• “@@c”: commander of this command block=• "@@c“: dueño de este bloque de comandos +• “@@n” or “@@p”: nearest player from the command block=• "@@n“ o "@@p“: jugador más cercano del bloque de comandos +• “@@f” farthest player from the command block=• "@@f“: jugador más alejado del bloque de comandos +• “@@r”: random player currently in the world=• "@@r“: jugador aleatorio actualmente en el mundo +• “@@@@”: literal “@@” sign=• „@@@@“: literal "@@“ firmado +Example 1:@n time 12000@nSets the game clock to 12:00=1. Ejemplo:@n time 12000@nConfigura el reloj del juego a las 12:00 +Example 2:@n give @@n mcl_core:apple 5@nGives the nearest player 5 apples=2. Beispiel:@n give @@n mcl_core:apple 5@nDa al jugador más cercano a 5 manzanas +Access denied. You need the “maphack” privilege to edit command blocks.=Acceso denegado. Necesita el privilegio "maphack" para editar bloques de comandos. +Editing the command block has failed! You can only change the command block in Creative Mode!=¡La edición del bloque de comando ha fallado! ¡Solo puede cambiar el bloque de comandos en modo creativo! +Editing the command block has failed! The command block is gone.=¡La edición del bloque de comando ha fallado! El bloque de comando se ha ido. diff --git a/mods/ITEMS/REDSTONE/mesecons_delayer/locale/mesecons_delayer.es.tr b/mods/ITEMS/REDSTONE/mesecons_delayer/locale/mesecons_delayer.es.tr new file mode 100644 index 00000000..fd502c73 --- /dev/null +++ b/mods/ITEMS/REDSTONE/mesecons_delayer/locale/mesecons_delayer.es.tr @@ -0,0 +1,10 @@ +# textdomain: mesecons_delayer +Redstone repeaters are versatile redstone components with multiple purposes: 1. They only allow signals to travel in one direction. 2. They delay the signal. 3. Optionally, they can lock their output in one state.=Los repetidores Redstone son componentes versátiles de redstone con múltiples propósitos: 1. Solo permiten que las señales viajen en una dirección. 2. Retrasan la señal. 3. Opcionalmente, pueden bloquear su salida en un estado. +To power a redstone repeater, send a signal in “arrow” direction (the input). The signal goes out on the opposite side (the output) with a delay. To change the delay, use the redstone repeater. The delay is between 0.1 and 0.4 seconds long and can be changed in steps of 0.1 seconds. It is indicated by the position of the moving redstone torch.=Para alimentar un repetidor de redstone, envíe una señal en la dirección de "flecha" (la entrada). La señal se apaga en el lado opuesto (la salida) con un retraso. Para cambiar el retraso, use el repetidor de redstone. El retraso es de entre 0.1 y 0.4 segundos y se puede cambiar en pasos de 0.1 segundos. Está indicado por la posición de la antorcha de redstone en movimiento. +To lock a repeater, send a signal from an adjacent repeater into one of its sides. While locked, the moving redstone torch disappears, the output doesn't change and the input signal is ignored.=Para bloquear un repetidor, envíe una señal desde un repetidor adyacente a uno de sus lados. Mientras está bloqueado, la antorcha de redstone en movimiento desaparece, la salida no cambia y la señal de entrada se ignora. +Redstone Repeater=Repetidor de redstone +Redstone Repeater (Powered)=Repetidor de redstone (Motorizado) +Redstone Repeater (Locked)=Repetidor de redstone (Bloqueado) +Redstone Repeater (Locked, Powered)=Repetidor de redstone (Bloqueado, Motorizado) +Redstone Repeater (Delay @1)=Repetidor de redstone (Retardar @1) +Redstone Repeater (Delay @1, Powered)=Repetidor de redstone (Retardar @1, Motorizado) diff --git a/mods/ITEMS/REDSTONE/mesecons_lightstone/locale/mesecons_lightstone.es.tr b/mods/ITEMS/REDSTONE/mesecons_lightstone/locale/mesecons_lightstone.es.tr new file mode 100644 index 00000000..713f0be5 --- /dev/null +++ b/mods/ITEMS/REDSTONE/mesecons_lightstone/locale/mesecons_lightstone.es.tr @@ -0,0 +1,3 @@ +# textdomain: mesecons_lightstone +Redstone Lamp=Lámpara de redstone +Redstone lamps are simple redstone components which glow brightly (light level @1) when they receive redstone power.=Las lámparas Redstone son componentes simples de redstone que brillan intensamente (nivel de luz @ 1) cuando reciben energía de redstone. diff --git a/mods/ITEMS/REDSTONE/mesecons_noteblock/locale/mesecons_noteblock.es.tr b/mods/ITEMS/REDSTONE/mesecons_noteblock/locale/mesecons_noteblock.es.tr new file mode 100644 index 00000000..123862d2 --- /dev/null +++ b/mods/ITEMS/REDSTONE/mesecons_noteblock/locale/mesecons_noteblock.es.tr @@ -0,0 +1,10 @@ +# textdomain: mesecons_noteblock +Note Block=Bloque musical +A note block is a musical block which plays one of many musical notes and different intruments when it is punched or supplied with redstone power.=Un bloque de notas es un bloque musical que reproduce una de las muchas notas musicales e instrumentos diferentes cuando se golpea o se le suministra energía de redstone. +Use the note block to choose the next musical note (there are 25 semitones, or 2 octaves). The intrument played depends on the material of the block below the note block:=Use el bloque de notas para elegir la siguiente nota musical (hay 25 semitonos, o 2 octavas). El instrumento jugado depende del material del bloque debajo del bloque de nota: +• Glass: Sticks=• Cristal: Palos +• Wood: Bass guitar=• Madera: Bajo +• Stone: Bass drum=• Piedra: Bombo +• Sand or gravel: Snare drum=• Arena o grava: tambor +• Anything else: Piano=• Cualquier otra cosa: piano +The note block will only play a note when it is below air, otherwise, it stays silent.=El bloque de notas solo reproducirá una nota cuando esté debajo del aire, de lo contrario, permanecerá en silencio. diff --git a/mods/ITEMS/REDSTONE/mesecons_pistons/locale/mesecons_pistons.es.tr b/mods/ITEMS/REDSTONE/mesecons_pistons/locale/mesecons_pistons.es.tr new file mode 100644 index 00000000..113472ac --- /dev/null +++ b/mods/ITEMS/REDSTONE/mesecons_pistons/locale/mesecons_pistons.es.tr @@ -0,0 +1,6 @@ +# textdomain: mesecons_pistons +This block can have one of 6 possible orientations.=Este bloque puede tener una de las 6 orientaciones posibles. +Piston=Pistón +A piston is a redstone component with a pusher which pushes the block or blocks in front of it when it is supplied with redstone power. Not all blocks can be pushed, however.=Un pistón es un componente de redstone con un empujador que empuja el bloque o bloques frente a él cuando se le suministra energía de redstone. Sin embargo, no todos los bloques se pueden empujar. +Sticky Piston=Pistón pegajoso +A sticky piston is a redstone component with a sticky pusher which can be extended and retracted. It extends when it is supplied with redstone power. When the pusher extends, it pushes the block or blocks in front of it. When it retracts, it pulls back the single block in front of it. Note that not all blocks can be pushed or pulled.=Un pistón pegajoso es un componente de redstone con un empujador pegajoso que se puede extender y retraer. Se extiende cuando se le suministra energía de redstone. Cuando el empujador se extiende, empuja el bloque o bloques frente a él. Cuando se retrae, tira hacia atrás el bloque único que está frente a él. Tenga en cuenta que no todos los bloques se pueden empujar o tirar. diff --git a/mods/ITEMS/REDSTONE/mesecons_pressureplates/locale/mesecons_pressureplates.es.tr b/mods/ITEMS/REDSTONE/mesecons_pressureplates/locale/mesecons_pressureplates.es.tr new file mode 100644 index 00000000..d30dfbfa --- /dev/null +++ b/mods/ITEMS/REDSTONE/mesecons_pressureplates/locale/mesecons_pressureplates.es.tr @@ -0,0 +1,11 @@ +# textdomain: mesecons_pressureplates +A pressure plate is a redstone component which supplies its surrounding blocks with redstone power while someone or something rests on top of it.=Una placa de presión es un componente de redstone que suministra a sus bloques circundantes energía de redstone mientras alguien o algo descansa sobre ella. +Oak Pressure Plate=Placa de presión de roble +Acacia Pressure Plate=Placa de presión de acacia +Birch Pressure Plate=Placa de presión de abedul +Dark Oak Pressure Plate=Placa de presión de roble oscuro +Spruce Pressure Plate=Placa de presión de abeto +Jungle Pressure Plate=Placa de presión de jungla +A wooden pressure plate is a redstone component which supplies its surrounding blocks with redstone power while any movable object (including dropped items, players and mobs) rests on top of it.=Una placa de presión de madera es un componente de redstone que suministra a sus bloques circundantes energía de redstone mientras que cualquier objeto móvil (incluidos los objetos caídos, jugadores y mobs) descansa sobre él. +Stone Pressure Plate=Placa de presión de piedra +A stone pressure plate is a redstone component which supplies its surrounding blocks with redstone power while a player or mob stands on top of it. It is not triggered by anything else.=Una placa de presión de piedra es un componente de redstone que suministra a sus bloques circundantes poder de redstone mientras un jugador o una criatura se paran encima. No se desencadena por nada más. diff --git a/mods/ITEMS/REDSTONE/mesecons_solarpanel/locale/mesecons_solarpanel.es.tr b/mods/ITEMS/REDSTONE/mesecons_solarpanel/locale/mesecons_solarpanel.es.tr new file mode 100644 index 00000000..f8b8c0de --- /dev/null +++ b/mods/ITEMS/REDSTONE/mesecons_solarpanel/locale/mesecons_solarpanel.es.tr @@ -0,0 +1,6 @@ +# textdomain: mesecons_solarpanel +Daylight Sensor=Sensor de luz solar +Daylight sensors are redstone components which provide redstone power when they are in sunlight and no power otherwise. They can also be inverted.=Los sensores de luz diurna son componentes de piedra roja que proporcionan energía de piedra roja cuando están bajo la luz solar y no tienen energía de otra manera. También se pueden invertir. +Inverted Daylight Sensor=Sensor de luz solar invertido +Use the daylight sensor to toggle its state.=Use el sensor de luz diurna para alternar su estado. +In inverted state, they provide redstone power when they are not in sunlight and no power otherwise.=En estado invertido, proporcionan energía de redstone cuando no están bajo la luz solar y no tienen energía de otra manera. diff --git a/mods/ITEMS/REDSTONE/mesecons_torch/locale/mesecons_torch.es.tr b/mods/ITEMS/REDSTONE/mesecons_torch/locale/mesecons_torch.es.tr new file mode 100644 index 00000000..b27fa1b5 --- /dev/null +++ b/mods/ITEMS/REDSTONE/mesecons_torch/locale/mesecons_torch.es.tr @@ -0,0 +1,8 @@ +# textdomain: mesecons_torch +Redstone Torch=Antorcha de redstone +Redstone Torch (off)=Antorcha de redstone (Apagada) +Redstone Torch (overheated)=Antorcha de redstone (Sobrecalentada) +A redstone torch is a redstone component which can be used to invert a redstone signal. It supplies its surrounding blocks with redstone power, except for the block it is attached to. A redstone torch is normally lit, but it can also be turned off by powering the block it is attached to. While unlit, a redstone torch does not power anything.=Una antorcha de redstone es un componente de redstone que se puede utilizar para invertir una señal de redstone. Suministra a sus bloques circundantes energía de redstone, excepto el bloque al que está unido. Una antorcha de redstone normalmente está encendida, pero también se puede apagar alimentando el bloque al que está conectado. Mientras está apagada, una antorcha de redstone no alimenta nada. +Redstone torches can be placed at the side and on the top of full solid opaque blocks.=Las antorchas Redstone se pueden colocar a un lado y en la parte superior de bloques opacos sólidos completos. +Block of Redstone=Bloque de redstone +A block of redstone permanently supplies redstone power to its surrounding blocks.=Un bloque de redstone suministra permanentemente energía de redstone a sus bloques circundantes. diff --git a/mods/ITEMS/REDSTONE/mesecons_walllever/locale/mesecons_walllever.es.tr b/mods/ITEMS/REDSTONE/mesecons_walllever/locale/mesecons_walllever.es.tr new file mode 100644 index 00000000..e0e55298 --- /dev/null +++ b/mods/ITEMS/REDSTONE/mesecons_walllever/locale/mesecons_walllever.es.tr @@ -0,0 +1,4 @@ +# textdomain: mesecons_wallever +Lever=Palanca +A lever is a redstone component which can be flipped on and off. It supplies redstone power to adjacent blocks while it is in the “on” state.=EUna palanca es un componente de redstone que se puede activar y desactivar. Suministra energía redstone a bloques adyacentes mientras está en el estado "encendido". +Use the lever to flip it on or off.=Use la palanca para encenderlo o apagarlo. diff --git a/mods/ITEMS/REDSTONE/mesecons_wires/locale/mesecons_wires.es.tr b/mods/ITEMS/REDSTONE/mesecons_wires/locale/mesecons_wires.es.tr new file mode 100644 index 00000000..beac8451 --- /dev/null +++ b/mods/ITEMS/REDSTONE/mesecons_wires/locale/mesecons_wires.es.tr @@ -0,0 +1,10 @@ +# textdomain: mesecons_wires +Redstone is a versatile conductive mineral which transmits redstone power. It can be placed on the ground as a trail.=Redstone es un mineral conductor versátil que transmite el poder de redstone. Se puede colocar en el suelo como un sendero. +A redstone trail can be in two states: Powered or not powered. A powered redstone trail will power (and thus activate) adjacent redstone components.=Un sendero de redstone puede estar en dos estados: alimentado o no alimentado. Un rastro de redstone alimentado alimentará (y por lo tanto activará) los componentes adyacentes de redstone. +Redstone power can be received from various redstone components, such as a block of redstone or a button. Redstone power is used to activate numerous mechanisms, such as redstone lamps or pistons.=El poder de Redstone se puede recibir de varios componentes de redstone, como un bloque de redstone o un botón. El poder de Redstone se utiliza para activar numerosos mecanismos, como las lámparas de redstone o los pistones. +Place redstone on the ground to build a redstone trail. The trails will connect to each other automatically and it can also go over hills.=Coloque redstone en el suelo para construir un sendero de redstone. Los senderos se conectarán entre sí de forma automática y también pueden pasar por colinas. +Read the help entries on the other redstone components to learn how redstone components interact.=Lea las entradas de ayuda en los otros componentes de redstone para aprender cómo interactúan los componentes de redstone. +Redstone=Redstone +Powered Redstone Spot (@1)=Punto de Redstone accionado (@1) +Redstone Trail (@1)=Sendero de Redstone (@1) +Powered Redstone Trail (@1)=Sendero de Redstone con motorizado (@1) diff --git a/mods/ITEMS/mcl_anvils/locale/mcl_anvils.es.tr b/mods/ITEMS/mcl_anvils/locale/mcl_anvils.es.tr new file mode 100644 index 00000000..7212b92b --- /dev/null +++ b/mods/ITEMS/mcl_anvils/locale/mcl_anvils.es.tr @@ -0,0 +1,15 @@ +# textdomain: mcl_anvils +Set Name=Establece un nombre +Repair and Name=Reparar y nombrar +Inventory=Inventario +Anvil=Yunque +The anvil allows you to repair tools and armor, and to give names to items. It has a limited durability, however. Don't let it fall on your head, it could be quite painful!=El yunque le permite reparar herramientas y armaduras, y dar nombres a los elementos. Sin embargo, tiene una durabilidad limitada. No lo dejes caer sobre tu cabeza, ¡podría ser bastante doloroso! +To use an anvil, rightclick it. An anvil has 2 input slots (on the left) and one output slot.=Para usar un yunque, haga clic derecho sobre él. Un yunque tiene 2 ranuras de entrada (a la izquierda) y una ranura de salida. +To rename items, put an item stack in one of the item slots while keeping the other input slot empty. Type in a name, hit enter or “Set Name”, then take the renamed item from the output slot.=Para cambiar el nombre de los elementos, coloque una pila de elementos en una de las ranuras de elementos mientras mantiene vacía la otra ranura de entrada. Escriba un nombre, presione enter o "Establecer nombre", luego obtenga el elemento renombrado en la ranura de salida. +There are two possibilities to repair tools (and armor):=Hay dos posibilidades para reparar herramientas (y armaduras): +• Tool + Tool: Place two tools of the same type in the input slots. The “health” of the repaired tool is the sum of the “health” of both input tools, plus a 12% bonus.=• Herramienta + Herramienta: Coloque dos herramientas del mismo tipo en las ranuras de entrada. La "salud" de la herramienta reparada es la suma de la "salud" de ambas herramientas, con un bono del 12%. +• Tool + Material: Some tools can also be repaired by combining them with an item that it's made of. For example, iron pickaxes can be repaired with iron ingots. This repairs the tool by 25%.=• Herramienta + Material: Algunas herramientas también pueden repararse combinándolas con un elemento del que está hecho. Por ejemplo, los picos de hierro pueden repararse con lingotes de hierro. Esto repara la herramienta en un 25%. +Armor counts as a tool. It is possible to repair and rename a tool in a single step.=La armadura cuenta como una herramienta. Es posible reparar y cambiar el nombre de una herramienta en un solo paso. +The anvil has limited durability and 3 damage levels: undamaged, slightly damaged and very damaged. Each time you repair or rename something, there is a 12% chance the anvil gets damaged. Anvils also have a chance of being damaged when they fall by more than 1 block. If a very damaged anvil is damaged again, it is destroyed.=El yunque tiene una durabilidad limitada y 3 niveles de daño: sin daños, ligeramente dañado y muy dañado. Cada vez que reparas o cambias el nombre de algo, hay un 12% de posibilidades de que el yunque se dañe. Los yunques también tienen la posibilidad de dañarse cuando caen en más de 1 bloque. Si un yunque muy dañado se daña nuevamente, se destruye. +Slightly Damaged Anvil=Yunque dañado +Very Damaged Anvil=Yunque muy dañado diff --git a/mods/ITEMS/mcl_banners/locale/mcl_banners.es.tr b/mods/ITEMS/mcl_banners/locale/mcl_banners.es.tr new file mode 100644 index 00000000..1368bc5a --- /dev/null +++ b/mods/ITEMS/mcl_banners/locale/mcl_banners.es.tr @@ -0,0 +1,76 @@ +# textdomain: mcl_banners +White Banner=Estandarte blanco +White=Blanco +Grey Banner=Estandarte gris +Grey=Gris +Light Grey Banner=Estandarte gris claro +Light Grey=Gris claro +Black Banner=Estandarte negro +Black=Negro +Red Banner=Estandarte roja +Red=Rojo +Yellow Banner=Estandarte amarilla +Yellow=Amarillo +Green Banner=Estandarte verde +Green=Verde +Cyan Banner=Estandarte cian +Cyan=Cian +Blue Banner=Estandarte azul +Blue=Azul +Magenta Banner=Estandarte magenta +Magenta=Magenta +Orange Banner=Estandarte naranja +Orange=Naranja +Purple Banner=Estandarte morada +Purple=Morado +Brown Banner=Estandarte marrón +Brown=Marrón +Pink Banner=Estandarte rosa +Pink=Rosa +Lime Banner=Estandarte verde lima +Lime=Verde lima +Light Blue Banner=Estandarte azul claro +Light Blue=Azul claro +Banners are tall colorful decorative blocks. They can be placed on the floor and at walls. Banners can be emblazoned with a variety of patterns using a lot of dye in crafting.=Los estandartes son bloques decorativos altos y coloridos. Se pueden colocar en el suelo y en las paredes. Los estandartes se pueden estampar con una variedad de patrones usando mucho tinte en la elaboración. +Use crafting to draw a pattern on top of the banner. Emblazoned banners can be emblazoned again to combine various patterns. You can draw up to 12 layers on a banner that way. If the banner includes a gradient, only 3 layers are possible.=Usa la elaboración para dibujar un patrón en la parte superior del estandarte. Los estandartes estampados pueden volver a estamparse para combinar varios patrones. Puede dibujar hasta 12 capas en un estandarte de esa manera. Si la pancarta incluye un degradado, solo son posibles 3 capas. +You can copy the pattern of a banner by placing two banners of the same color in the crafting grid—one needs to be emblazoned, the other one must be clean. Finally, you can use a banner on a cauldron with water to wash off its top-most layer.=Puede copiar el patrón de un estandarte colocando dos estandartes del mismo color en la cuadrícula de fabricación: una debe ser estampada, la otra debe estar limpia. Finalmente, puede usar un estandarte en un caldero con agua para lavar su capa superior. +@1 Bordure=Borde (@1) +@1 Bricks=Bloque (@1) +@1 Roundel=Medallón (@1) +@1 Creeper Charge=Carga de enredadera (@1) +@1 Saltire=Saltire (@1) +@1 Bordure Indented=Sangrado del borde (@1) +@1 Per Bend Inverted=Curva invertida (@1) +@1 Per Bend Sinister Inverted=Curva siniestra invertida (@1) +@1 Per Bend=Curva (@1) +@1 Per Bend Sinister=Curva siniestra (@1) +@1 Flower Charge=Carga de la flor (@1) +@1 Gradient=Farbverlauf (@1) +@1 Base Gradient=Zócalo Degradado (@1) +@1 Per Fess Inverted=División invertida (@1) +@1 Per Fess=División (@1) +@1 Per Pale=Palidez (@1) +@1 Per Pale Inverted=Palidez invertida (@1) +@1 Thing Charge=Carga de objeto (@1) +@1 Lozenge=Rombo (@1) +@1 Skull Charge=Carga de calabera (@1) +@1 Paly=Poster (@1) +@1 Base Dexter Canton=Zócalo inferior derecho (@1) +@1 Base Sinister Canton=Zócalo inferior izquierdo (@1) +@1 Chief Dexter Canton=Encabezado superior derecho (@1) +@1 Chief Sinister Canton=Encabezado superior izquierdo (@1) +@1 Cross=Cruce (@1) +@1 Base=Zócalo (@1) +@1 Pale=Palidez (@1) +@1 Bend Sinister=Curva siniestra (@1) +@1 Bend=Curva (@1) +@1 Pale Dexter=Palidez derecho (@1) +@1 Fess=División (@1) +@1 Pale Sinister=Palidez siniestra (@1) +@1 Chief=Encabezado (@1) +@1 Chevron=Viga (@1) +@1 Chevron Inverted=Viga invertida (@1) +@1 Base Indented=Zócalo sangrada (@1) +@1 Chief Indented=Sangrado del encabezado (@1) +And one additional layer=Y una capa adicional +And @1 additional layers=Y @1 capas adicionales diff --git a/mods/ITEMS/mcl_beds/locale/mcl_beds.es.tr b/mods/ITEMS/mcl_beds/locale/mcl_beds.es.tr new file mode 100644 index 00000000..58fe5267 --- /dev/null +++ b/mods/ITEMS/mcl_beds/locale/mcl_beds.es.tr @@ -0,0 +1,40 @@ +# textdomain: mcl_beds +Beds allow you to sleep at night and make the time pass faster.=Las camas le permiten dormir por la noche y hacer que el tiempo pase más rápido. +To use a bed, stand close to it and right-click the bed to sleep in it. Sleeping only works when the sun sets, at night or during a thunderstorm. The bed must also be clear of any danger.=Para usar una cama, párate cerca de ella y haz clic derecho en la cama para dormir en ella. Dormir solo funciona cuando se oculta el sol, por la noche o durante una tormenta eléctrica. La cama también debe estar libre de cualquier peligro. +You have heard of other worlds in which a bed would set the start point for your next life. But this world is not one of them.=Has oído hablar de otros mundos en los que una cama establecería el punto de partida para tu próxima vida. Pero este mundo no es uno de ellos. +By using a bed, you set the starting point for your next life. If you die, you will start your next life at this bed, unless it is obstructed or destroyed.=Al usar una cama, se establece como el punto de partida para tu próxima vida. Si mueres, comenzarás tu próxima vida en esta cama, a menos que esté obstruida o destruida. +In this world, going to bed won't skip the night, but it will skip thunderstorms.=En este mundo, ir a la cama no se saltará la noche, pero se saltará las tormentas eléctricas. +Sleeping allows you to skip the night. The night is skipped when all players in this world went to sleep. The night is skipped after sleeping for a few seconds. Thunderstorms can be skipped in the same manner.=Dormir te permite saltarte la noche. Se omite la noche cuando todos los jugadores en este mundo se fueron a dormir. La noche se salta después de dormir durante unos segundos. Las tormentas eléctricas se pueden omitir de la misma manera. +Bed=Cama +Red Bed=Cama roja +Blue Bed=Cama azul +Cyan Bed=Cama cian +Grey Bed=Cama gris +Light Grey Bed=Cama gris ocuro +Black Bed=Cama negra +Yellow Bed=Cama amarilla +Green Bed=Cama verde +Magenta Bed=Cama magenta +Orange Bed=Cama naranja +Purple Bed=Cama morada +Brown Bed=Cama marrón +Pink Bed=Cama rosa +Lime Bed=Cama verde lima +Light Blue Bed=Cama azul claro +White Bed=Cama blanca +You can't sleep, the bed's too far away!=¡No puedes dormir, la cama está muy lejos! +This bed is already occupied!=¡Esta cama ya está ocupada! +You have to stop moving before going to bed!=¡Tienes que dejar de moverte antes de acostarte! +You can't sleep now, monsters are nearby!=No puedes dormir ahora, ¡hay monstruos cerca! +You can't sleep, the bed is obstructed!=¡No puedes dormir, la cama está obstruida! +It's too dangerous to sleep here!=¡Es muy peligroso dormir aquí! +New respawn position set! But you can only sleep at night or during a thunderstorm.=¡Nueva posición de reaparición establecida! Pero solo puedes dormir por la noche o durante una tormenta eléctrica. +You can only sleep at night or during a thunderstorm.=Solo puedes dormir por la noche o durante una tormenta eléctrica. +New respawn position set!=¡Nueva posición de reaparición establecida! +Leave bed=Salir de la cama +Abort sleep=Cancelar el sueño +Players in bed: @1/@2=Jugadores en la cama: @1/@2 +Note: Night skip is disabled.=Nota: El salto nocturno está deshabilitado. +You're sleeping.=Estás durmiendo. +You will fall asleep when all players are in bed.=Te quedarás dormido cuando todos los jugadores estén en la cama. +You're in bed.=Estas en la cama. diff --git a/mods/ITEMS/mcl_books/locale/mcl_books.es.tr b/mods/ITEMS/mcl_books/locale/mcl_books.es.tr new file mode 100644 index 00000000..d1e0d947 --- /dev/null +++ b/mods/ITEMS/mcl_books/locale/mcl_books.es.tr @@ -0,0 +1,25 @@ +# textdomain: mcl_books +Book=Libro +Books are used to make bookshelves and book and quills.=Los libros se usan para hacer estanterías, libros y plumas. +“@1”="@1“ +Copy of “@1”=Copia de "@1“ +Copy of Copy of “@1”=Kopie von Kopie von „@1“ +Tatter ed Book=Libro andrajoso +by @1=por @1 +Sign=Firmar +Done=Hecho +This item can be used to write down some notes.=Este elemento se puede usar para escribir algunas notas. +Hold it in the hand, then rightclick to read the current notes and edit then. You can edit the text as often as you like. You can also sign the book which turns it into a written book which you can stack, but it can't be edited anymore.=Sosténgalo en la mano, luego haga clic derecho para leer las notas actuales y luego edite. Puede editar el texto con la frecuencia que desee. También puede firmar el libro que lo convierte en un libro escrito que puede apilar, pero ya no se puede editar. +A book can hold up to 4500 characters. The title length is limited to 64 characters.=Un libro puede contener hasta 4500 caracteres. La longitud del título está limitada a 64 caracteres. +Enter book title:=Inserta el título del libro: +Note: The book will no longer be editable after signing=Nota: El libro ya no será editable después de firmarlo +Sign and Close=Firmar y cerrar libro +Cancel=Cancelar +Nameless Book=Libro sin nombre +Written Book=Libro escrito +Written books contain some text written by someone. They can be read and copied, but not edited.=Los libros escritos contienen texto escrito por alguien. Pueden leerse y copiarse, pero no editarse. +Hold it in your hand, then rightclick to read the book.=Sostenlo en tu mano, luego haz clic derecho para leer el libro. +To copy the text of the written book, place it into the crafting grid together with a book and quill (or multiple of those) and craft. The written book will not be consumed. Copies of copies can not be copied.=Para copiar el texto del libro escrito, colóquelo en la cuadrícula de elaboración junto con un libro y pluma (o varios de esos) y haga manualidades. El libro escrito no se consumirá. Las copias de copias no se pueden copiar. +Bookshelf=Librería +Bookshelves are used for decoration.=Las librerías se utilizan para la decoración. +Book and Quill=Libro y pluma diff --git a/mods/ITEMS/mcl_bows/locale/mcl_bows.es.tr b/mods/ITEMS/mcl_bows/locale/mcl_bows.es.tr new file mode 100644 index 00000000..539afdcf --- /dev/null +++ b/mods/ITEMS/mcl_bows/locale/mcl_bows.es.tr @@ -0,0 +1,11 @@ +# textdomain: mcl_bows +Arrow=Flecha +Arrows are ammunition for bows and dispensers.=Las flechas son municiones para arcos y dispensadores. +An arrow fired from a bow has a regular damage of 1-9. At full charge, there's a 20% chance of a critical hit dealing 10 damage instead. An arrow fired from a dispenser always deals 3 damage.=Una flecha disparada desde un arco tiene un daño regular de 1-9. A plena carga, hay un 20% de posibilidades de que un golpe crítico inflija 10 daños en su lugar. Una flecha disparada desde un dispensador siempre causa 3 de daño. +Arrows might get stuck on solid blocks and can be retrieved again. They are also capable of pushing wooden buttons.=Las flechas pueden atascarse en bloques sólidos y pueden recuperarse nuevamente. También son capaces de presionar botones de madera. +To use arrows as ammunition for a bow, just put them anywhere in your inventory, they will be used up automatically. To use arrows as ammunition for a dispenser, place them in the dispenser's inventory. To retrieve an arrow that sticks in a block, simply walk close to it.=Para usar flechas como municiones para un arco, simplemente colóquelas en cualquier parte de su inventario, se usarán automáticamente. Para usar flechas como municiones para un dispensador, colóquelas en el inventario del dispensador. Para recuperar una flecha que se pega en un bloque, simplemente camine cerca de ella. +Bow=Arco +Bows are ranged weapons to shoot arrows at your foes.=Los arcos son armas a distancia para disparar flechas a tus enemigos. +The speed and damage of the arrow increases the longer you charge. The regular damage of the arrow is between 1 and 9. At full charge, there's also a 20% of a critical hit, dealing 10 damage instead.=La velocidad y el daño de la flecha aumentan cuanto más tiempo tenses. El daño regular de la flecha está entre 1 y 9. A plena carga, también hay un 20% de un golpe crítico, que en vez de eso causa 10 de daño. +To use the bow, you first need to have at least one arrow anywhere in your inventory (unless in Creative Mode). Hold down the right mouse button to charge, release to shoot.=Para usar el arco, primero debes de tener al menos una flecha en cualquier parte de su inventario (a menos que esté en modo creativo). Mantenga presionado el botón derecho del mouse para tensar, suelte para disparar. +Bow=Arco \ No newline at end of file diff --git a/mods/ITEMS/mcl_buckets/locale/mcl_buckets.es.tr b/mods/ITEMS/mcl_buckets/locale/mcl_buckets.es.tr new file mode 100644 index 00000000..27517a1a --- /dev/null +++ b/mods/ITEMS/mcl_buckets/locale/mcl_buckets.es.tr @@ -0,0 +1,13 @@ +# textdomain: mcl_buckets +Empty Bucket=Cubo vacío +A bucket can be used to collect and release liquids.=Se puede usar un cubo para recoger y liberar líquidos. +Punch a liquid source to collect it. You can then use the filled bucket to place the liquid somewhere else.=Golpea una fuente de líquido para recolectarla. Luego puede usar el cubo lleno para colocar el líquido en otro lugar. +Lava Bucket=Cubo con lava +A bucket can be used to collect and release liquids. This one is filled with hot lava, safely contained inside. Use with caution.=Se puede usar un cubo para recoger y liberar líquidos. Este está lleno de lava caliente, contenida de forma segura en el interior. Usar con precaución. +Get in a safe distance and place the bucket to empty it and create a lava source at this spot. Don't burn yourself!=Aléjate a una distancia segura y coloca el cubo para vaciarlo y crea una fuente de lava en este lugar. ¡No te quemes! +Water Bucket=Cubo con agua +A bucket can be used to collect and release liquids. This one is filled with water.=Se puede usar un cubo para recoger y liberar líquidos. Este está lleno de agua. +Place it to empty the bucket and create a water source.=Colóquelo para vaciar el cubo y crear una fuente de agua. +River Water Bucket=Cubo de agua de río +A bucket can be used to collect and release liquids. This one is filled with river water.=Se puede usar un cubo para recoger y liberar líquidos. Este está lleno de agua de río. +Place it to empty the bucket and create a river water source.=Colóquelo para vaciar el cubo y crear una fuente de agua de río. \ No newline at end of file diff --git a/mods/ITEMS/mcl_cake/locale/mcl_cake.es.tr b/mods/ITEMS/mcl_cake/locale/mcl_cake.es.tr new file mode 100644 index 00000000..261d581e --- /dev/null +++ b/mods/ITEMS/mcl_cake/locale/mcl_cake.es.tr @@ -0,0 +1,10 @@ +# textdomain: mcl_cake +Cake=Tarta +Cakes can be placed and eaten to restore hunger points. A cake has 7 slices. Each slice restores 2 hunger points and 0.4 saturation points. Cakes will be destroyed when dug or when the block below them is broken.=Los pasteles se pueden colocar y comer para restaurar los puntos de hambre. Un pastel tiene 7 trozos. Cada trozo restaura 2 puntos de hambre y 0.4 puntos de saturación. Los pasteles se destruirán cuando se caven o cuando se rompa el bloque debajo de ellos. +Place the cake anywhere, then rightclick it to eat a single slice. You can't eat from the cake when your hunger bar is full.=Coloque el pastel en cualquier lugar, luego haga clic derecho para comer una sola trozo. No puedes comer del pastel cuando tu barra de hambre está llena. +Cake (6 Slices Left)=Tarta (Quedan 6 trozos) +Cake (5 Slices Left)=Tarta (Quedan 5 trozos) +Cake (4 Slices Left)=Tarta (Quedan 4 trozos) +Cake (3 Slices Left)=Tarta (Quedan 3 trozos) +Cake (2 Slices Left)=Tarta (Quedan 2 trozos) +Cake (1 Slice Left)=Tarta (Queda 1 trozo) diff --git a/mods/ITEMS/mcl_cauldrons/locale/mcl_cauldrons.es.tr b/mods/ITEMS/mcl_cauldrons/locale/mcl_cauldrons.es.tr new file mode 100644 index 00000000..5f7f9fc3 --- /dev/null +++ b/mods/ITEMS/mcl_cauldrons/locale/mcl_cauldrons.es.tr @@ -0,0 +1,10 @@ +# textdomain: mcl_cauldron +Cauldron=Caldera +Cauldrons are used to store water and slowly fill up under rain.=Los calderos se usan para almacenar agua y llenarse lentamente bajo la lluvia. +Place a water pucket into the cauldron to fill it with water. Place an empty bucket on a full cauldron to retrieve the water. Place a water bottle into the cauldron to fill the cauldron to one third with water. Place a glass bottle in a cauldron with water to retrieve one third of the water.=Coloque un cubo de agua en el caldero para llenarlo con agua. Coloque un cubo vacío en un caldero lleno para recuperar el agua. Coloque una botella de agua en el caldero para llenar el caldero hasta un tercio con agua. Coloque una botella de vidrio en un caldero con agua para recuperar un tercio del agua. +Cauldron (1/3 Water)=Caldera (1/3 de agua) +Cauldron (2/3 Water)=Caldera (2/3 de agua) +Cauldron (3/3 Water)=Caldera (3/3 de agua) +Cauldron (1/3 River Water)=Caldera (1/3 de agua de río) +Cauldron (2/3 River Water)=Caldera (2/3 de agua de río) +Cauldron (3/3 River Water)=Caldera (3/3 de agua de río) \ No newline at end of file diff --git a/mods/ITEMS/mcl_chests/locale/mcl_chests.es.tr b/mods/ITEMS/mcl_chests/locale/mcl_chests.es.tr new file mode 100644 index 00000000..030f8052 --- /dev/null +++ b/mods/ITEMS/mcl_chests/locale/mcl_chests.es.tr @@ -0,0 +1,30 @@ +# textdomain: mcl_chests +Chest=Cofre +Chests are containers which provide 27 inventory slots. Chests can be turned into large chests with double the capacity by placing two chests next to each other.=Los cofres son contenedores que proporcionan 27 ranuras de inventario. Los cofres se pueden convertir en cofres grandes con el doble de capacidad colocando dos cofres uno al lado del otro. +To access its inventory, rightclick it. When broken, the items will drop out.=Para acceder a su inventario, haga clic derecho. Cuando se rompen, los artículos se caerán. +Trapped Chest=Cofre trampa +A trapped chest is a container which provides 27 inventory slots. When it is opened, it sends a redstone signal to its adjacent blocks as long it stays open. Trapped chests can be turned into large trapped chests with double the capacity by placing two trapped chests next to each other.=Un sofre trampa es un contenedor que proporciona 27 ranuras de inventario. Cuando se abre, envía una señal de piedra roja a sus bloques adyacentes siempre que permanezca abierto. Los cofres trampa se pueden convertir en grandes cofres trampa con el doble de capacidad colocando dos cofres atrapados uno al lado del otro. +Ender Chest=Cofre de ender +Ender chests grant you access to a single personal interdimensional inventory with 27 slots. This inventory is the same no matter from which ender chest you access it from. If you put one item into one ender chest, you will find it in all other ender chests. Each player will only see their own items, but not the items of other players.=Los cofres Ender le otorgan acceso a un único inventario interdimensional personal con 27 ranuras. Este inventario es el mismo sin importar desde qué cofre de acceso accedas. Si pones un elemento en un cofre de ender, lo encontrarás en todos los demás cofres de ender. Cada jugador solo verá sus propios artículos, pero no los artículos de otros jugadores. +Rightclick the ender chest to access your personal interdimensional inventory.=Haga clic derecho en el cofre ender para acceder a su inventario interdimensional personal. +White Shulker Box=Caja de shulker Blanca +Light Grey Shulker Box=Caja de shulker gris claro +Orange Shulker Box=Caja de shulker naranja +Cyan Shulker Box=Caja de shulker cian +Magenta Shulker Box=Caja de shulker magenta +Purple Shulker Box=Caja de shulker morada +Light Blue Shulker Box=Caja de shulker azul claro +Blue Shulker Box=Caja de shulker azul +Yellow Shulker Box=Caja de shulker amarilla +Brown Shulker Box=Caja de shulker marrón +Lime Shulker Box=Caja de shulker verde lima +Green Shulker Box=Caja de shulker verde +Pink Shulker Box=Caja de shulker rosa +Red Shulker Box=Caja de shulker roja +Grey Shulker Box=Caja de shulker gris +Black Shulker Box=Caja de shulker negra +A shulker box is a portable container which provides 27 inventory slots for any item except shulker boxes. Shulker boxes keep their inventory when broken, so shulker boxes as well as their contents can be taken as a single item. Shulker boxes come in many different colors.=Una caja de shulker es un contenedor portátil que proporciona 27 ranuras de inventario para cualquier artículo, excepto las cajas shulker. Las cajas de shulker mantienen su inventario cuando están rotas, por lo que las cajas de shulker y sus contenidos se pueden tomar como un solo artículo. Las cajas shulker vienen en muchos colores diferentes. +To access the inventory of a shulker box, place and right-click it. To take a shulker box and its contents with you, just break and collect it, the items will not fall out.=Para acceder al inventario de un cuadro de shulker, colóquelo y haga clic con el botón derecho. Para llevar una caja de shulker y su contenido, solo rómpela y recójala, los artículos no se caerán. +Shulker Box=Caja de shulker +Large Chest=Arcón +Inventory=Inventario diff --git a/mods/ITEMS/mcl_clock/locale/mcl_clock.es.tr b/mods/ITEMS/mcl_clock/locale/mcl_clock.es.tr new file mode 100644 index 00000000..c8841fc6 --- /dev/null +++ b/mods/ITEMS/mcl_clock/locale/mcl_clock.es.tr @@ -0,0 +1,4 @@ +# textdomain: mcl_clock +Clocks are tools which shows the current time of day in the Overworld.=Los relojes son herramientas que muestran la hora del día en el mundo. +The clock contains a rotating disc with a sun symbol (yellow disc) and moon symbol and a little “pointer” which shows the current time of day by estimating the real position of the sun and the moon in the sky. Noon is represented by the sun symbol and midnight is represented by the moon symbol.=El reloj contiene un disco giratorio con un símbolo del sol (disco amarillo) y un símbolo de la luna y un pequeño "puntero" que muestra la hora actual del día al estimar la posición real del sol y la luna en el cielo. El mediodía está representado por el símbolo del sol y la medianoche está representado por el símbolo de la luna. +Clock=Reloj \ No newline at end of file diff --git a/mods/ITEMS/mcl_cocoas/locale/mcl_cocoas.es.tr b/mods/ITEMS/mcl_cocoas/locale/mcl_cocoas.es.tr new file mode 100644 index 00000000..e1477c79 --- /dev/null +++ b/mods/ITEMS/mcl_cocoas/locale/mcl_cocoas.es.tr @@ -0,0 +1,6 @@ +# textdomain: mcl_cocoas +Premature Cocoa Pod=Vaina de cacao prematura +Cocoa pods grow on the side of jungle trees in 3 stages.=Las vainas de cacao crecen al lado de los árboles de jungla en 3 etapas. +Medium Cocoa Pod=Vaina de cacao mediana +Mature Cocoa Pod=Vaina de cacao madura +A mature cocoa pod grew on a jungle tree to its full size and it is ready to be harvested for cocoa beans. It won't grow any further.=Una vaina de cacao madura creció en un árbol de jungla a su tamaño completo y está lista para ser cosechada para los granos de cacao. No crecerá más. diff --git a/mods/ITEMS/mcl_colorblocks/locale/mcl_colorblocks.es.tr b/mods/ITEMS/mcl_colorblocks/locale/mcl_colorblocks.es.tr new file mode 100644 index 00000000..cae96e62 --- /dev/null +++ b/mods/ITEMS/mcl_colorblocks/locale/mcl_colorblocks.es.tr @@ -0,0 +1,75 @@ +# textdomain: mcl_colorblocks +White Terracotta=Terracota blanca +White Glazed Terracotta=Terracota cristalizada blanca +White Concrete Powder=Cemento blanco +White Concrete=Hormigón blanco +Grey Terracotta=Terracota gris +Grey Glazed Terracotta=Terracota cristalizada gris +Grey Concrete Powder=Cemento gris +Grey Concrete=Hormigón gris +Light Grey Terracotta=Terracota gris claro +Light Grey Glazed Terracotta=Terracota cristalizada gris claro +Light Grey Concrete Powder=Cemento gris claro +Light Grey Concrete=Hormigón gris claro +Black Terracotta=Terracota negra +Black Glazed Terracotta=Terracota cristalizada negra +Black Concrete Powder=Cemento negro +Black Concrete=Hormigón negro +Red Terracotta=Terracota roja +Red Glazed Terracotta=Terracota cristalizada roja +Red Concrete Powder=Cemento rojo +Red Concrete=Hormigón rojo +Yellow Terracotta=Terracota amarilla +Yellow Glazed Terracotta=Terracota cristalizada amarilla +Yellow Concrete Powder=Cemento amarillo +Yellow Concrete=Hormigón amarillo +Green Terracotta=Terracota verde +Green Glazed Terracotta=Terracota cristalizada verde +Green Concrete Powder=Cemento verde +Green Concrete=Hormigón verde +Cyan Terracotta=Terracota cian +Cyan Glazed Terracotta=Terracota cristalizada cian +Cyan Concrete Powder=Cemento cian +Cyan Concrete=Hormigón cian +Blue Terracotta=Terracota azul +Blue Glazed Terracotta=Terracota cristalizada azul +Blue Concrete Powder=Cemento azul +Blue Concrete=Hormigón azul +Magenta Terracotta=Terracota magenta +Magenta Glazed Terracotta=Terracota cristalizada magenta +Magenta Concrete Powder=Cemento magenta +Magenta Concrete=Hormigón magenta +Orange Terracotta=Terracota naranja +Orange Glazed Terracotta=Terracota cristalizada naranja +Orange Concrete Powder=Cemento naranja +Orange Concrete=Hormigón naranja +Purple Terracotta=Terracota morada +Purple Glazed Terracotta=Terracota cristalizada morada +Purple Concrete Powder=Cemento morado +Purple Concrete=Hormigón morado +Brown Terracotta=Terracota marrón +Brown Glazed Terracotta=Terracota cristalizada marrón +Brown Concrete Powder=Cemento marrón +Brown Concrete=Hormigón marrón +Pink Terracotta=Terracota rosa +Pink Glazed Terracotta=Terracota cristalizada rosa +Pink Concrete Powder=Cemento rosa +Pink Concrete=Hormigón rosa +Lime Terracotta=Terracota verde lima +Lime Glazed Terracotta=Terracota cristalizada verde lima +Lime Concrete Powder=Cemento verde lima +Lime Concrete=Hormigón verde lima +Light Blue Terracotta=Terracota azul claro +Light Blue Glazed Terracotta=Terracota cristalizada azul claro +Light Blue Concrete Powder=Cemento azul claro +Light Blue Concrete=Hormigón azul claro +Terracotta is a basic building material. It comes in many different colors.=La terracota es un material de construcción básico. Viene en muchos colores diferentes. +Glazed terracotta is a decorative block with a complex pattern. It can be rotated by placing it in different directions.=La terracota cristalizada es un bloque decorativo con un patrón complejo. Se puede girar colocándolo en diferentes direcciones. +Concrete powder is used for creating concrete, but it can also be used as decoration itself. It comes in different colors. Concrete powder turns into concrete of the same color when it comes in contact with water.=La Cemento se usa para crear Hormigón, pero también se puede usar como decoración en sí. Viene en diferentes colores. La Cemento se convierte en Hormigón del mismo color cuando entra en contacto con el agua. +Concrete is a decorative block which comes in many different colors. It is notable for having a very strong and clean color.=El Hormigón es un bloque decorativo que viene en muchos colores diferentes. Es notable por tener un color muy fuerte y limpio. +Terracotta=Terracota +Terracotta is a basic building material which comes in many different colors. This particular block is uncolored.=La terracota es un material de construcción básico que viene en muchos colores diferentes. Este bloque en particular no tiene color. +Colored Terracotta=Terracota coloreada +Glazed Terracotta=Terracota vidriada +Concrete Powder=Cemento +Concrete=Hormigón diff --git a/mods/ITEMS/mcl_compass/locale/mcl_compass.es.tr b/mods/ITEMS/mcl_compass/locale/mcl_compass.es.tr new file mode 100644 index 00000000..4f9fd529 --- /dev/null +++ b/mods/ITEMS/mcl_compass/locale/mcl_compass.es.tr @@ -0,0 +1,3 @@ +# textdomain: mcl_compass +Compasses are tools which point to the world origin (X@=0, Z@=0) or the spawn point in the Overworld.=Las brújulas son herramientas que apuntan al origen del mundo (X @ = 0, Z @ = 0) o al punto de generación en el mundo. +Compass=Brújula \ No newline at end of file diff --git a/mods/ITEMS/mcl_core/locale/mcl_core.es.tr b/mods/ITEMS/mcl_core/locale/mcl_core.es.tr new file mode 100644 index 00000000..0a0b90c4 --- /dev/null +++ b/mods/ITEMS/mcl_core/locale/mcl_core.es.tr @@ -0,0 +1,249 @@ +# textdomain: mcl_core +@1 could not survive in lava.=@1 no pudo sobrevivir en la lava. +@1 died in lava.=@1 murió en la lava. +@1 melted in lava.=@1 fue derretido en la lava. +@1 took a bath in a hot lava tub.=@1 se bañó en lava caliente. +A block of diamond is mostly a shiny decorative block but also useful as a compact storage of diamonds.=Un bloque de diamantes es principalmente un bloque decorativo brillante, pero también es útil como un almacenamiento compacto de diamantes. +A block of emerald is mostly a shiny decorative block but also useful as a compact storage of emeralds.=Un bloque de esmeraldas es principalmente un bloque decorativo brillante pero también es útil como un almacenamiento compacto de esmeraldas. +A block of gold is mostly a shiny decorative block but also useful as a compact storage of gold ingots.=Un bloque de oro es principalmente un bloque decorativo brillante, pero también es útil como almacenamiento compacto de lingotes de oro. +A block of iron is mostly a decorative block but also useful as a compact storage of iron ingots.=Un bloque de hierro es principalmente un bloque decorativo, pero también es útil como almacenamiento compacto de lingotes de hierro. +A cactus can only be placed on top of another cactus or any sand.=Un cactus solo se puede colocar encima de otro cactus o arena. +A decorative and mostly transparent block.=Un bloque decorativo y mayormente transparente. +A grass block is dirt with a grass cover. Grass blocks are resourceful blocks which allow the growth of all sorts of plants. They can be turned into farmland with a hoe and turned into grass paths with a shovel. In light, the grass slowly spreads onto dirt nearby. Under an opaque block or a liquid, a grass block may turn back to dirt.=Un bloque de hierba es tierra con una cubierta de hierba. Los bloques de hierba son bloques ingeniosos que permiten el crecimiento de todo tipo de plantas. Pueden convertirse en tierras de cultivo con una azada y convertirse en caminos de hierba con una pala. A la luz, la hierba se extiende lentamente sobre la tierra cercana. Debajo de un bloque opaco o un líquido, un bloque de hierba puede ensuciarse. +A lapis lazuli block is mostly a decorative block but also useful as a compact storage of lapis lazuli.=Un bloque de lapislázuli es principalmente un bloque decorativo, pero también es útil como un almacenamiento compacto de lapislázuli. +A lava source sets fire to a couple of air blocks above when they're next to a flammable block.=Una fuente de lava prende fuego a un par de bloques de aire arriba cuando están al lado de un bloque inflamable. +A piece of ladder which allows you to climb vertically. Ladders can only be placed on the side of solid blocks and not on glass, leaves, ice, slabs, glowstone, nor sea lanterns.=Un pedazo de escalera que te permite subir verticalmente. Las escaleras solo se pueden colocar al lado de bloques sólidos y no en vidrio, hojas, hielo, losas, piedra luminosa ni linternas marinas. +Acacia Bark=Madera de acacia sin corteza +Acacia Leaves=Hojas de acacia +Acacia Sapling=Brote de acacia +Acacia Wood=Tronco de acacia +Acacia Wood Planks=Madera de acacia +Acacia leaves are grown from acacia trees.=Las hojas de acacia se cultivan a partir de acacias. +Andesite=Andesita +Andesite is an igneous rock.=La andesita es una roca ígnea. +Apple=Manzana +Apples are food items which can be eaten.=Las manzanas son alimentos que se pueden comer. +Barrier=Barrera +Barriers are invisble walkable blocks. They are used to create boundaries of adventure maps and the like. Monsters and animals won't appear on barriers, and fences do not connect to barriers. Other blocks can be built on barriers like on any other block.=Las barreras son bloques transitables invisibles. Se utilizan para crear límites de mapas de aventura y similares. Los monstruos y los animales no aparecerán en las barreras, y las cercas no se conectan a las barreras. Otros bloques pueden construirse sobre barreras como en cualquier otro bloque. +Bedrock=Lecho de roca +Bedrock is a very hard type of rock. It can not be broken, destroyed, collected or moved by normal means, unless in Creative Mode.=El lecho de roca es un tipo de roca muy duro. No se puede romper, destruir, recoger o mover por medios normales, a menos que esté en modo creativo. +Birch Bark=Madera de abedul sin corteza +Birch Leaves=Hojas de abedul +Birch Sapling=Brote de abedul +Birch Wood=Tronco de abedul +Birch Wood Planks=Madera de abedul +Birch leaves are grown from birch trees.=Las hojas de abedul se cultivan a partir de abedules. +Black Stained Glass=Cristal negro +Block of Coal=Bloque de carbón +Block of Diamond=Bloque de diamante +Block of Emerald=Bloque de esmeralda +Block of Gold=Bloque de oro +Block of Iron=Bloque de hierro +Blocks of coal are useful as a compact storage of coal and very useful as a furnace fuel. A block of coal is as efficient as 10 coal.=Los bloques de carbón son útiles como almacenamiento compacto de carbón y son muy útiles como combustible de horno. Un bloque de carbón es tan eficiente como 10 de carbón. +Blue Stained Glass=Cristal azul +Bone Block=Bloque de hueso +Bone blocks are decorative blocks and a compact storage of bone meal.=Los bloques óseos son bloques decorativos y un almacenamiento compacto de harina de huesos. +Bowl=Cuenco +Bowls are mainly used to hold tasty soups.=Los cuencos se usan principalmente para contener sabrosas sopas. +Brick=Ladrillo +Brick Block=Bloque de ladrillo +Brick blocks are a good building material for building solid houses and can take quite a punch.=Los bloques de ladrillo son un buen material de construcción para construir casas sólidas y pueden recibir un gran golpe. +Bricks are used to craft brick blocks.=Los ladrillos se utilizan para fabricar bloques de ladrillos. +Brown Stained Glass=Cristal marrón +Cactus=Cactus +Charcoal=Carbón vegetal +Charcoal is an alternative furnace fuel created by cooking wood in a furnace. It has the same burning time as coal and also shares many of its crafting recipes, but it can not be used to create coal blocks.=El carbón vegetal es un combustible alternativo para hornos creado al cocinar leña en un horno. Tiene el mismo tiempo de combustión que el carbón y también comparte muchas de sus recetas de elaboración, pero no se puede usar para crear bloques de carbón. +Chiseled Stone Bricks=Ladrillo de piedra cincelado +Chiseled Red Sandstone=Arenisca Roja Cincelada +Chiseled Sandstone=Arenisca cincelada +Chiseled red sandstone is a decorative building block.=La piedra arenisca roja cincelada es un elemento decorativo. +Chiseled sandstone is a decorative building block.=La piedra arenisca cincelada es un bloque de construcción decorativo. +Clay=Arcilla +Clay Ball=Bola de arcilla +Clay balls are a raw material, mainly used to create bricks in the furnace.=Las bolas de arcilla son una materia prima, utilizada principalmente para crear ladrillos en el horno. +Clay is a versatile kind of earth commonly found at beaches underwater.=La arcilla es un tipo de tierra versátil que se encuentra comúnmente en las playas bajo el agua. +Coal=Carbón +Coal Ore=Mena de Carbón +Coarse Dirt=Suciedad gruesa +Coarse dirt acts as a soil for some plants and is similar to dirt, but it will never grow a cover.=La suciedad gruesa actúa como un suelo para algunas plantas y es similar a la suciedad, pero nunca crecerá una cubierta. +Cobblestone=Roca +Cobweb=Telaraña +Cobwebs can be walked through, but significantly slow you down.=Las telarañas se pueden atravesar, pero disminuyen significativamente la velocidad. +Cracked Stone Bricks=Ladrillo de piedra agrietado +Cut Red Sandstone=Arenisca roja cortada +Cut Sandstone=Arenisca cortada +Cut red sandstone is a decorative building block.=La arenisca roja cortada es un elemento decorativo. +Cut sandstone is a decorative building block.=La arenisca cortada es un elemento decorativo. +Cyan Stained Glass=Cristal cian +Dark Oak Bark=Madera de roble oscuro sin corteza +Dark Oak Leaves=Hojas de roble oscuro +Dark Oak Sapling=Brote de roble oscuro +Dark Oak Wood=Tronco de roble oscuro +Dark Oak Wood Planks=Madera de roble oscuro +Dark oak leaves are grown from dark oak trees.=Las hojas de roble oscuro se cultivan a partir de robles oscuros. +Dark oak saplings can grow into dark oaks, but only in groups. A lonely dark oak sapling won't grow. A group of four dark oak saplings grows into a dark oak after some time when they are placed on soil (such as dirt) in a 2×2 square and exposed to light.=Los brotes de roble oscuro pueden convertirse en robles oscuros, pero solo en grupos. Un árbol solitario de roble oscuro no crecerá. Un grupo de cuatro árboles jóvenes de roble oscuro se convierte en un roble oscuro después de un tiempo cuando se colocan en el suelo (como la tierra) en un cuadrado de 2 × 2 y se exponen a la luz. +Dead Bush=Arbusto muerto +Dead bushes are unremarkable plants often found in dry areas. They can be harvested for sticks.=Los arbustos muertos son plantas poco comunes que a menudo se encuentran en áreas secas. Se pueden cosechar para obtener palos. +Diamond=Diamante +Diamond Ore=Mena de diamante +Diamond ore is rare and can be found in clusters near the bottom of the world.=El mineral de diamante es raro y se puede encontrar en grupos cerca del fondo del mundo. +Diamonds are precious minerals and useful to create the highest tier of armor and tools.=Los diamantes son minerales preciosos y útiles para crear el nivel más alto de armadura y herramientas. +Diorite=Diorita +Diorite is an igneous rock.=La diorita es una roca ígnea. +Dirt=Tierra +Dirt acts as a soil for a few plants. When in light, this block may grow a grass or mycelium cover if such blocks are nearby.=La tierra actúa como un suelo para algunas plantas. Cuando está a la luz, este bloque puede crecer una cubierta de hierba o micelio si tales bloques están cerca. +Emerald=Esmeralda +Emerald Ore=Mena de esmeralda +Emerald ore is the ore of emeralds. It is very rare and can be found alone, not in clusters.=El mineral esmeralda es el mineral de las esmeraldas. Es muy raro y se puede encontrar solo, no en grupos. +Emeralds are not very useful on their own, but they can exchanged for gold ingots by crafting.=Las esmeraldas no son muy útiles por sí mismas, pero pueden cambiarse por lingotes de oro haciendo artesanías. +Flint=Pedernal +Flint is a raw material.=El pedernal es una materia prima. +Flowing Lava=Lava que fluye +Flowing Water=Agua que fluye +Frosted Ice=Hielo helado +Frosted ice is a short-lived solid block. It melts into a water source within a few seconds.=El hielo helado es un bloque sólido de corta duración. Se derrite en una fuente de agua en unos pocos segundos. +Glass=Cristal +Gold Ingot=Lingote de oro +Gold Nugget=Pepita de oro +Gold Ore=Metal de oro +Gold nuggets are very small pieces of molten gold; the main purpose is to create gold ingots.=Las pepitas de oro son piezas muy pequeñas de oro fundido; El objetivo principal es crear lingotes de oro. +Golden Apple=Manzana dorada +Golden apples are precious food items which can be eaten.=Las manzanas doradas son alimentos preciosos que se pueden comer. +Granite=Granito +Grass Block=Bloque de césped +Grass Path=Camino de hierba +Grass paths are a decorative variant of grass blocks. Their top has a different color and they are a bit lower than grass blocks, making them useful to build footpaths. Grass paths can be created with a shovel. A grass path turns into dirt when it is below a solid block.=Los caminos de hierba son una variante decorativa de bloques de hierba. Su parte superior tiene un color diferente y son un poco más bajos que los bloques de hierba, lo que los hace útiles para construir senderos. Los caminos de hierba se pueden crear con una pala. Un camino de hierba se convierte en tierra cuando está debajo de un bloque sólido. +Gravel=Grava +Green Stained Glass=Cristal verde +Grey Stained Glass=Cristal gris +Ice=Hielo +Ice is a solid block usually found in cold areas. It melts near block light sources at a light level of 12 or higher. When it melts or is broken while resting on top of another block, it will turn into a water source.=El hielo es un bloque sólido que generalmente se encuentra en áreas frías. Se funde cerca de bloques de luz, a un nivel de luz de 12 o más. Cuando se derrite o se rompe mientras posa sobre otro bloque, se convertirá en una fuente de agua. +In the End dimension, starting a fire on this block will create an eternal fire.=En la dimensión final, iniciar un incendio en este bloque creará un fuego eterno. +Iron Ingot=Lingote de hierro +Iron Nugget=Pepita de hierro +Iron Ore=Mena de hierro +Iron nuggets are very small pieces of molten iron; the main purpose is to create iron ingots.=Las pepitas de hierro son piezas muy pequeñas de hierro fundido; El objetivo principal es crear lingotes de hierro. +Jungle Bark=Madera de jungla sin corteza +Jungle Leaves=Hojas de jungla +Jungle Sapling=Brote de jungla +Jungle Wood=Tronco de jungla +Jungle Wood Planks=Madera de jungla +Jungle leaves are grown from jungle trees.=Las hojas de jungla se cultivan de los árboles de jungla. +Ladder=Escalera +Lapis Lazuli Block=Bloque de lapislázuli +Lapis Lazuli Ore=Mena de lapislázuli +Lapis lazuli ore is the ore of lapis lazuli. It can be rarely found in clusters near the bottom of the world.=El mineral de lapislázuli es el mineral de lapislázuli. Rara vez se puede encontrar en grupos, se encuentra cerca del fondo del mundo. +Lava Source=Fuente de lava +Lava is hot and rather dangerous. Don't touch it, it will hurt you a lot and it is hard to get out.=La lava es caliente y bastante peligrosa. No lo toques, te dolerá mucho y es difícil salir. +Light Blue Stained Glass=Cristal azul claro +Light Grey Stained Glass=Cristal gris claro +Lime Stained Glass=Cristal amarillo verdoso +Lit Redstone Ore=Mena de piedra roja encendida +Magenta Stained Glass=Cristal magenta +Molten gold. It is used to craft armor, tools, and whatnot.=Oro fundido Se utiliza para fabricar armaduras, herramientas y otras cosas. +Molten iron. It is used to craft armor, tools, and whatnot.=Hierro fundido. Se utiliza para fabricar armaduras, herramientas y otras cosas. +Mossy Cobblestone=Roca musgosa +Mossy Stone Bricks=Ladrillo de piedra musgoso +Mycelium=Micelio +Mycelium is a type of dirt and the ideal soil for mushrooms. Unlike other dirt-type blocks, it can not be turned into farmland with a hoe. In light, mycelium slowly spreads over nearby dirt. Under an opaque block or a liquid, it eventually turns back into dirt.=El micelio es un tipo de tierra y el suelo ideal para los hongos. A diferencia de otros bloques de tipo de tierra, no se puede convertir en tierras de cultivo con una azada. A la luz, el micelio se extiende lentamente sobre la tierra cercana. Debajo de un bloque opaco o un líquido, eventualmente se convierte nuevamente en suciedad. +Oak Bark=Madera de roble sin corteza +Oak Leaves=Hojas de roble +Oak Sapling=Brote de roble +Oak Wood=Tronco de roble +Oak Wood Planks=Madera de roble +Oak leaves are grown from oak trees.=Las hojas de roble se cultivan a partir de robles. +Obsidian=Obsidiana +Obsidian is an extremely hard mineral with an enourmous blast-resistance. Obsidian is formed when water meets lava.=La obsidiana es un mineral extremadamente duro con una enorme resistencia a la explosión. La obsidiana se forma cuando el agua se encuentra con la lava. +One of the most common blocks in the world, almost the entire underground consists of stone. It sometimes contains ores. Stone may be created when water meets lava.=Uno de los bloques más comunes en el mundo, casi todo el subsuelo consiste en piedra. A veces contiene minerales. Se puede crear piedra cuando el agua se encuentra con la lava. +Orange Stained Glass=Cristal Naranja +Packed Ice=Hielo envasado +Packed ice is a compressed form of ice. It is opaque and solid.=El hielo empaquetado es una forma comprimida de hielo. Es opaco y sólido. +Paper=Papel +Paper is used to craft books and maps.=El papel se usa para crear libros y mapas. +Pink Stained Glass=Cristal rosa +Podzol=Podzol +Podzol is a type of dirt found in taiga forests. Only a few plants are able to survive on it.=El podzol es un tipo de suciedad que se encuentra en los bosques de taiga. Solo unas pocas plantas pueden sobrevivir en él. +Polished Andesite=Andesita pulida +Polished Diorite=Diorita pulida +Polished Granite=Granito pulido +Polished Stone=Piedra pulida +Polished andesite is a decorative building block made from andesite.=La andesita pulida es un bloque de construcción decorativo hecho de andesita. +Polished diorite is a decorative building block made from diorite.=La diorita pulida es un bloque de construcción decorativo hecho de diorita. +Polished granite is a decorative building block made from granite.=El granito pulido es un bloque decorativo hecho de granito. +Purple Stained Glass=Cristal morado +Realm Barrier=Barrera del reino +Red Sand=Arena roja +Red Sandstone=Arenisca roja +Red Stained Glass=Cristal rojo +Red sand is found in large quantities in mesa biomes.=La arena roja se encuentra en grandes cantidades en los desiertos. +Red sandstone is compressed red sand and is a rather soft kind of stone.=La arenisca roja es arena roja comprimida y es un tipo de piedra bastante suave. +Redstone Ore=Mena de redstone +Redstone ore is commonly found near the bottom of the world. It glows when it is punched or walked upon.=El mineral piedra roja se encuentra comúnmente cerca del fondo del mundo. Brilla cuando es golpeado o pisado. +Sand=Arena +Sand is found in large quantities at beaches and deserts.=La arena se encuentra en grandes cantidades en playas y desiertos. +Sandstone=Arenisca +Sandstone is compressed sand and is a rather soft kind of stone.=La arenisca es arena comprimida y es un tipo de piedra bastante suave. +Slime Block=Bloque de Slime +Slime blocks are very bouncy and prevent fall damage.=Los bloques de limo son muy hinchables y evitan el daño por caída. +Smooth Red Sandstone=Arenisca roja lisa +Smooth Sandstone=Arenisca lisa +Smooth red sandstone is a decorative building block.=La piedra arenisca roja lisa es un elemento decorativo. +Smooth sandstone is compressed sand and is a rather soft kind of stone.=La arenisca lisa es arena comprimida y es un tipo de piedra bastante blanda. +Snow=Nieve +Some coal contained in stone, it is very common and can be found inside stone in medium to large clusters at nearly every height.=Algo de carbón contenido en la piedra, es muy común y se puede encontrar dentro de la piedra en grupos medianos a grandes en casi todas las alturas. +Some iron contained in stone, it is prety common and can be found below sea level.=Algo de hierro contenido en piedra, es bastante común y se puede encontrar debajo del nivel del mar. +Spruce Bark=Madera de abeto sin corteza +Spruce Leaves=Hojas de abeto +Spruce Sapling=Brote de abeto +Spruce Wood=Tronco de abeto +Spruce Wood Planks=Madera de abeto +Spruce leaves are grown from spruce trees.=Las hojas de abeto se cultivan a partir de abetos. +Stained glass is a decorative and mostly transparent block which comes in various different colors.=El vitral es un bloque decorativo y en su mayoría transparente que viene en varios colores diferentes. +Stick=Palo +Sticks are a very versatile crafting material; used in countless crafting recipes.=Los palos son un material de elaboración muy versátil; utilizado en innumerables recetas de elaboración. +Stone=Roca +Stone Bricks=Ladrillos de piedra +Sugar=Azúcar +Sugar Canes=Caña de azúcar +Sugar canes are a plant which has some uses in crafting. Sugar canes will slowly grow up to 3 blocks when they are next to water and are placed on a grass block, dirt, sand, red sand, podzol or coarse dirt. When a sugar cane is broken, all sugar canes connected above will break as well.=Las cañas de azúcar son una planta que tiene algunos usos en la elaboración. Las cañas de azúcar crecerán lentamente hasta 3 bloques cuando estén cerca del agua y se colocan en un bloque de césped, tierra, arena, arena roja, podzol o tierra gruesa. Cuando se rompe una caña de azúcar, todas las cañas de azúcar conectadas arriba también se romperán. +Sugar canes can only be placed top of other sugar canes and on top of blocks on which they would grow.=Las cañas de azúcar solo se pueden colocar encima de otras cañas de azúcar y encima de los bloques en los que crecerían. +Sugar comes from sugar canes and is used to make sweet foods.=El azúcar proviene de las cañas de azúcar y se usa para hacer alimentos dulces. +The trunk of a birch tree.=El tronco de un abedul. +The trunk of a dark oak tree.=El tronco de un roble oscuro. +The trunk of a jungle tree.=El tronco de un árbol de jungla. +The trunk of a spruce tree.=El tronco de un árbol de abeto. +The trunk of an acacia.=El tronco de una acacia. +The trunk of an oak tree.=El tronco de un roble. +This block consists of a couple of loose stones and can't support itself.=Este bloque consta de un par de piedras sueltas y no puede sostenerse. +This is a decorative block surrounded by the bark of a tree trunk.=Este es un bloque decorativo rodeado por la corteza del tronco de un árbol. +This is a full block of snow. Snow of this thickness is usually found in areas of extreme cold.=Este es un bloque lleno de nieve. La nieve de este espesor generalmente se encuentra en áreas de frío extremo. +This is a piece of cactus commonly found in dry areas, especially deserts. Over time, cacti will grow up to 3 blocks high on sand or red sand. A cactus hurts living beings touching it with a damage of 1 HP every half second. When a cactus block is broken, all cactus blocks connected above it will break as well.=Este es un pedazo de cactus que se encuentra comúnmente en áreas secas, especialmente en los desiertos. Con el tiempo, los cactus crecerán hasta 3 bloques de altura en arena o arena roja. Un cactus lastima a los seres vivos al tocarlo con un daño de 1 HP cada medio segundo. Cuando un bloque de cactus se rompe, todos los bloques de cactus conectados encima también se romperán. +This stone contains pure gold, a rare metal.=Esta piedra contiene oro puro, un metal raro. +Top Snow=Nieve superior +Top snow is a layer of snow. It melts near light sources other than the sun with a light level of 12 or higher.=La nieve superior es una capa de nieve. Se derrite cerca de fuentes de luz distintas al sol con un nivel 12 de luz o más. +Vines=Enredadera +Vines are climbable blocks which can be placed on the sides of solid full-cube blocks. Vines slowly grow and spread.=Las enredaderas son bloques escalables que se pueden colocar a los lados de bloques sólidos de cubo completo. Las enredaderas crecen y se extienden lentamente +Void=Vacío +Water=Agua +Water Source=Fuente de agua +Water is abundant in oceans and also appears in a few springs in the ground. You can swim easily in water, but you need to catch your breath from time to time.=El agua es abundante en los océanos y también aparece en algunas fuentes en el suelo. Puede nadar fácilmente en el agua, pero necesita recuperar el aliento de vez en cuando. +When placed on soil (such as dirt) and exposed to light, a birch sapling will grow into a birch after some time.=Cuando se coloca en el suelo (como tierra) y se expone a la luz, un brote de abedul se convertirá en abedul después de un tiempo. +When placed on soil (such as dirt) and exposed to light, a jungle sapling will grow into a jungle tree after some time. When there are 4 jungle saplings in a 2×2 square, they will grow to a huge jungle tree.=Cuando se coloca en el suelo (como la tierra) y se expone a la luz, un brote de jungla se convertirá en un árbol de jungla después de un tiempo. Cuando hay 4 árboles jóvenes de jungla en un cuadrado de 2×2, crecerán hasta convertirse en un enorme árbol de jungla. +When placed on soil (such as dirt) and exposed to light, a spruce sapling will grow into a spruce after some time. When there are 4 spruce saplings in a 2×2 square, they will grow to a huge spruce.=Cuando se coloca en el suelo (como tierra) y se expone a la luz, un brote de abeto se convertirá en un abeto después de un tiempo. Cuando hay 4 brotes de abeto en un cuadrado de 2×2, crecerán hasta convertirse en un abeto enorme. +When placed on soil (such as dirt) and exposed to light, an acacia sapling will grow into an acacia after some time.=Cuando se coloca en el suelo (como tierra) y se expone a la luz, un brote de acacia se convertirá en una acacia después de un tiempo. +When placed on soil (such as dirt) and exposed to light, an oak sapling will grow into an oak after some time.=Cuando se coloca en el suelo (como tierra) y se expone a la luz, un brote de roble se convertirá en un roble después de un tiempo. +When you hold a barrier in hand, you reveal all placed barriers in a short distance around you.=Cuando sostienes una barrera en la mano, revelas todas las barreras colocadas a corta distancia a tu alrededor. +White Stained Glass=Cristal blanco +Yellow Stained Glass=Cristal amarillo +“Coal” refers to coal lumps obtained by digging coal ore which can be found underground. Coal is your standard furnace fuel, but it can also be used to make torches, coal blocks and a few other things.="Carbón" se refiere a trozos de carbón obtenidos al excavar mineral de carbón que se puede encontrar bajo tierra. El carbón es el combustible estándar de su horno, pero también se puede usar para hacer antorchas, bloques de carbón y algunas otras cosas. +Water interacts with lava in various ways:=El agua interactúa con la lava de varias maneras: +• When water is directly above or horizontally next to a lava source, the lava turns into obsidian.=• Cuando el agua está directamente arriba u horizontalmente al lado de una fuente de lava, la lava se convierte en obsidiana. +• When flowing water touches flowing lava either from above or horizontally, the lava turns into cobblestone.=• Cuando el agua que fluye toca la lava que fluye desde arriba u horizontalmente, la lava se convierte en roca. +• When water is directly below lava, the water turns into stone.=• Cuando el agua está directamente debajo de la lava, el agua se convierte en piedra. +Lava interacts with water various ways:=La lava interactúa con el agua de varias maneras: +• When a lava source is directly below or horizontally next to water, the lava turns into obsidian.=• Cuando una fuente de lava está directamente debajo u horizontalmente al lado del agua, la lava se convierte en obsidiana. +• When lava is directly above water, the water turns into stone.=• Cuando la lava está directamente sobre el agua, el agua se convierte en piedra. +Stained Glass=Vitral +Granite is an igneous rock.=El granito es una roca ígnea. +Top snow can be stacked and has one of 8 different height levels. At levels 2-8, top snow is collidable. Top snow drops 2-9 snowballs, depending on its height.=La nieve superior se puede apilar y tiene unos 8 niveles de altura diferentes. En los niveles 2-8, la nieve superior es colisionable. La nieve superior cae de 2 a 9 bolas de nieve, dependiendo de su altura. +This block can only be placed on full solid blocks and on another top snow (which increases its height).=Este bloque solo se puede colocar en bloques sólidos completos y en otra nieve superior (lo que aumenta su altura). diff --git a/mods/ITEMS/mcl_crafting_table/locale/mcl_crafting_table.es.tr b/mods/ITEMS/mcl_crafting_table/locale/mcl_crafting_table.es.tr new file mode 100644 index 00000000..8d560fd5 --- /dev/null +++ b/mods/ITEMS/mcl_crafting_table/locale/mcl_crafting_table.es.tr @@ -0,0 +1,7 @@ +# textdomain: mcl_crafting_table +Crafting Table=Mesa de trabajo +A crafting table is a block which grants you access to a 3×3 crafting grid which allows you to perform advanced crafts.=Una mesa de trabajo es un bloque que le otorga acceso a una cuadrícula de creación 3 × 3 que le permite realizar manualidades avanzadas. +Rightclick the crafting table to access the 3×3 crafting grid.=Haz clic derecho en la mesa de trabajo para acceder a la cuadrícula de creación 3 × 3. +Recipe book=Libro de recetas +Inventory=Inventario +Crafting=Elaboración diff --git a/mods/ITEMS/mcl_doors/locale/mcl_doors.es.tr b/mods/ITEMS/mcl_doors/locale/mcl_doors.es.tr new file mode 100644 index 00000000..efe231a0 --- /dev/null +++ b/mods/ITEMS/mcl_doors/locale/mcl_doors.es.tr @@ -0,0 +1,22 @@ +# textdomain: mcl_doors +Wooden doors are 2-block high barriers which can be opened or closed by hand and by a redstone signal.=Las puertas de madera son barreras altas de 2 bloques que se pueden abrir o cerrar a mano y con una señal de piedra roja. +To open or close a wooden door, rightclick it or supply its lower half with a redstone signal.=Para abrir o cerrar una puerta de madera, haga clic derecho o suministre a su mitad inferior una señal de piedra roja. +Oak Door=Puerta de roble +Acacia Door=Puerta de acacia +Birch Door=Puerta de abedul +Dark Oak Door=Puerta de roble oscuro +Jungle Door=Puerta de jungla +Spruce Door=Puerta de abeto +Iron Door=Puerta de Hierro +Iron doors are 2-block high barriers which can only be opened or closed by a redstone signal, but not by hand.=Las puertas de hierro son barreras altas de 2 bloques que solo se pueden abrir o cerrar mediante una señal de piedra roja, no a mano. +To open or close an iron door, supply its lower half with a redstone signal.=Para abrir o cerrar una puerta de hierro, suministre a su mitad inferior una señal de piedra roja. +Oak Trapdoor=Trampilla de roble +Acacia Trapdoor=Trampilla de acacia +Birch Trapdoor=Trampilla de abedul +Spruce Trapdoor=Trampilla de abeto +Dark Oak Trapdoor=Trampilla de roble oscuro +Jungle Trapdoor=Trampilla de jungla +Wooden trapdoors are horizontal barriers which can be opened and closed by hand or a redstone signal. They occupy the upper or lower part of a block, depending on how they have been placed. When open, they can be climbed like a ladder.=Las trampillas de madera son barreras horizontales que se pueden abrir y cerrar a mano o una señal de piedra roja. Ocupan la parte superior o inferior de un bloque, dependiendo de cómo se hayan colocado. Cuando están abiertos, se pueden subir como una escalera. +To open or close the trapdoor, rightclick it or send a redstone signal to it.=Para abrir o cerrar la trampilla, haga clic derecho o envíele una señal de piedra roja. +Iron Trapdoor=Trampilla de hierro +Iron trapdoors are horizontal barriers which can only be opened and closed by redstone signals, but not by hand. They occupy the upper or lower part of a block, depending on how they have been placed. When open, they can be climbed like a ladder.=Las trampillas de hierro son barreras horizontales que solo pueden abrirse y cerrarse mediante señales de piedra roja, no a mano. Ocupan la parte superior o inferior de un bloque, dependiendo de cómo se hayan colocado. Cuando están abiertos, se pueden subir como una escalera. diff --git a/mods/ITEMS/mcl_dye/locale/mcl_dye.es.tr b/mods/ITEMS/mcl_dye/locale/mcl_dye.es.tr new file mode 100644 index 00000000..fd1e3407 --- /dev/null +++ b/mods/ITEMS/mcl_dye/locale/mcl_dye.es.tr @@ -0,0 +1,25 @@ +# textdomain: mcl_dye +Bone Meal=Harina de hueso +Light Grey Dye=Tinte gris claro +Grey Dye=Tinte gris +Ink Sac=Saco de tinta +Purple Dye=Tinte púrpura +Lapis Lazuli=Lapislázuli +Light Blue Dye=Tinte azul claro +Cyan Dye=Tinte cian +Cactus Green=Verde cactus +Lime Dye=Tinte amarillo verdoso +Dandelion Yellow=Diente de león amarillo +Cocoa Beans=Granos de cacao +Orange Dye=Tinte naranja +Rose Red=Rosa roja +Magenta Dye=Tinte magenta +Pink Dye=Tinte rosado +This item is a dye which is used for dyeing and crafting.=Este artículo es un tinte que se utiliza para teñir y elaborar. +Rightclick on a sheep to dye its wool. Other things are dyed by crafting.=Haga clic derecho sobre una oveja para teñir su lana. Otras cosas pueden ser teñidas mediante la elaboración. +Bone Meal=Harina de hueso +Bone meal is a white dye and also useful as a fertilizer to speed up the growth of many plants.=La harina de hueso es un tinte blanco y también es útil como fertilizante para acelerar el crecimiento de muchas plantas. +Rightclick a sheep to turn its wool white. Rightclick a plant to speed up its growth. Note that not all plants can be fertilized like this. When you rightclick a grass block, tall grass and flowers will grow all over the place.=RHaga clic derecho en una oveja para volver su lana blanca. Haga clic derecho en una planta para acelerar su crecimiento. Tenga en cuenta que no todas las plantas pueden ser fertilizadas de esta manera. Cuando haces clic derecho en un bloque de hierba, crecerán hierba alta y flores por todo el lugar. +Cocoa beans are a brown dye and can be used to plant cocoas.=Los granos de cacao son un tinte marrón y se pueden usar para plantar cacao. +Rightclick a sheep to turn its wool brown. Rightclick on the side of a jungle tree trunk (Jungle Wood) to plant a young cocoa.=Haga clic derecho en una oveja para convertir su lana en marrón. Haga clic derecho en el costado del tronco de un árbol de jungla para plantar un cacao joven. +Cocoa Beans=Granos de cacao diff --git a/mods/ITEMS/mcl_end/locale/mcl_end.es.tr b/mods/ITEMS/mcl_end/locale/mcl_end.es.tr new file mode 100644 index 00000000..c9804586 --- /dev/null +++ b/mods/ITEMS/mcl_end/locale/mcl_end.es.tr @@ -0,0 +1,25 @@ +# textdomain: mcl_end +End Stone=Fin de la piedra +End Stone Bricks=Fin de ladrillos de piedra +Purpur Block=Bloque púrpura +Purpur Pillar=Pilar púrpura +End Rod=Barra final +End rods are decorative light sources.=Las varillas finales son fuentes de luz decorativas. +Dragon Egg=Huevo de dragón +A dragon egg is a decorative item which can be placed.=Un huevo de dragón es un elemento decorativo que se puede colocar. +Chorus Flower=Flor de coro +A chorus flower is the living part of a chorus plant. It can grow into a tall chorus plant, step by step. When it grows, it may die on old age eventually. It also dies when it is unable to grow.=Una flor de coro es la parte viva de una planta de coro. Puede convertirse en una planta de coro alto, paso a paso. Cuando crece, puede morir con la vejez eventualmente. También muere cuando no puede crecer. +Place it and wait for it to grow. It can only be placed on top of end stone, on top of a chorus plant stem, or at the side of exactly one chorus plant stem.=Colóquelo y espere a que crezca. Solo se puede colocar en la parte superior de la piedra del extremo, en la parte superior del tallo de la planta de coro, o al lado de exactamente un tallo de la planta de coro. +Dead Chorus Flower=Flor de coro muerto +This is a part of a chorus plant. It doesn't grow. Chorus flowers die of old age or when they are unable to grow. A dead chorus flower can be harvested to obtain a fresh chorus flower which is able to grow again.=Esta es una parte de una planta de coro. No crece Las flores de coro mueren de vejez o cuando no pueden crecer. Se puede cosechar una flor de coro muerta para obtener una flor de coro fresca que pueda crecer nuevamente. +Chorus Plant Stem=Tallo de planta de coro +A chorus plant stem is the part of a chorus plant which holds the whole plant together. It needs end stone as its soil. Stems are grown from chorus flowers.=El tallo de una planta de coro es la parte de una planta de coro que mantiene unida a toda la planta. Necesita piedra final como su suelo. Los tallos se cultivan a partir de flores de coro. +Chorus Fruit=Fruta coro +A chorus fruit is an edible fruit from the chorus plant which is home to the End. Eating it teleports you to the top of a random solid block nearby, provided you won't end up inside a liquid, solid or harmful blocks. Teleportation might fail if there are very few or no places to teleport to.=Una fruta de coro es una fruta comestible de la planta de coro que es el hogar del final. Comerlo te teletransporta a la parte superior de un bloque sólido aleatorio cercano, siempre que no termines dentro de un bloque líquido, sólido o dañino. La teletransportación puede fallar si hay muy pocos o ningún lugar para teletransportarse. +Popped Chorus Fruit=Fruta de coro reventado +Eye of Ender=Ojo de Ender +This item is used to locate End portal shrines in the Overworld and to activate End portals.=Este elemento se usa para localizar santuarios de portal del fin en el mundo y para activar portales del final. +Use the attack key to release the eye of ender. It will rise and fly in the horizontal direction of the closest end portal shrine. If you're very close, the eye of ender will take the direct path to the End portal shrine instead. After a few seconds, it stops. It may drop as an item, but there's a 20% chance it shatters.=Usa la tecla de ataque para liberar el ojo de Ender. Se elevará y volará en la dirección horizontal del santuario portal más cercano. Si estás muy cerca, el ojo de Ender tomará el camino directo al Santuario del portal final. Después de unos segundos, se detiene. Puede caer como un elemento, pero hay un 20% de posibilidades de que se rompa. +To activate an End portal, eyes of ender need to be placed into each block of an intact End portal frame.=Para activar un portal final, se deben colocar ojos de ender en cada bloque de un marco intacto del portal final. +NOTE: The End dimension is currently incomplete and might change in future versions.=NOTA: La dimensión Final está actualmente incompleta y puede cambiar en futuras versiones. +The stem attaches itself to end stone and other chorus blocks.=El tallo se adhiere al extremo de la piedra y a otros bloques de coro.. \ No newline at end of file diff --git a/mods/ITEMS/mcl_farming/locale/mcl_farming.es.tr b/mods/ITEMS/mcl_farming/locale/mcl_farming.es.tr new file mode 100644 index 00000000..8366e825 --- /dev/null +++ b/mods/ITEMS/mcl_farming/locale/mcl_farming.es.tr @@ -0,0 +1,93 @@ +# textdomain: mcl_farming +Beetroot Seeds=Semillas de remolacha +Grows into a beetroot plant. Chickens like beetroot seeds.=Crece en una planta de remolacha. A los pollos les gustan las semillas de remolacha. +Place the beetroot seeds on farmland (which can be created with a hoe) to plant a beetroot plant. They grow in sunlight and grow faster on hydrated farmland. Rightclick an animal to feed it beetroot seeds.=Coloque las semillas de remolacha en tierras de cultivo (que se pueden crear con una azada) para plantar una planta de remolacha. Crecen a la luz del sol y crecen más rápido en tierras de cultivo hidratadas. Haga clic derecho en un animal para alimentarlo con semillas de remolacha. +Premature Beetroot Plant (Stage 1)=Planta de remolacha prematura (Etapa 1) +Beetroot plants are plants which grow on farmland under sunlight in 4 stages. On hydrated farmland, they grow a bit faster. They can be harvested at any time but will only yield a profit when mature.=Las plantas de remolacha son plantas que crecen en tierras de cultivo bajo la luz solar en 4 etapas. En tierras de cultivo hidratadas, crecen un poco más rápido. Se pueden cosechar en cualquier momento, pero solo generarán ganancias cuando maduren. +Premature Beetroot Plant=Planta de remolacha prematura +Premature Beetroot Plant (Stage 2)=Planta de remolacha prematura (Etapa 2) +Premature Beetroot Plant (Stage 3)=Planta de remolacha prematura (Etapa 3) +Mature Beetroot Plant=Planta de remolacha madura +A mature beetroot plant is a farming plant which is ready to be harvested for a beetroot and some beetroot seeds. It won't grow any further.=Una planta de remolacha madura es una planta de cultivo que está lista para ser cosechada para una remolacha y algunas semillas de remolacha. No crecerá más. +Beetroot=Remolacha +Beetroots are both used as food item and a dye ingredient. Pigs like beetroots, too.=Las remolachas se usan como alimento y como colorante. A los cerdos también les gustan las remolachas. +Hold it in your hand and right-click to eat it. Rightclick an animal to feed it.=Sostenlo en tu mano y haz clic derecho para comértelo. Haga clic derecho en un animal para alimentarlo. +Beetroot Soup=Estofado de remolacha +Beetroot soup is a food item.=El estofado de remolacha es un alimento. +Premature Carrot Plant=Planta de zanahoria prematura +Carrot plants are plants which grow on farmland under sunlight in 8 stages, but only 4 stages can be visually told apart. On hydrated farmland, they grow a bit faster. They can be harvested at any time but will only yield a profit when mature.=Las plantas de zanahoria son plantas que crecen en tierras de cultivo bajo la luz solar en 8 etapas, pero solo 4 etapas se pueden distinguir visualmente. En tierras de cultivo hidratadas, crecen un poco más rápido. Se pueden cosechar en cualquier momento, pero solo generarán ganancias cuando maduren. +Premature Carrot Plant (Stage @1)=Planta de zanahoria prematura (Etapa @1) +Mature Carrot Plant=Planta de zanahoria madura +Mature carrot plants are ready to be harvested for carrots. They won't grow any further.=Las plantas de zanahoria maduras están listas para ser cosechadas para zanahorias. No crecerán más. +Carrot=Zanahoria +Carrots can be eaten and planted. Pigs and rabbits like carrots.=Las zanahorias se pueden comer y plantar. A los cerdos y conejos les gustan las zanahorias. +Hold it in your hand and rightclick to eat it. Place it on top of farmland to plant the carrot. It grows in sunlight and grows faster on hydrated farmland. Rightclick an animal to feed it.=Sostenlo en tu mano y haz clic derecho para comértelo. Colóquelo encima de las tierras de cultivo para plantar la zanahoria. Crece a la luz del sol y crece más rápido en tierras de cultivo hidratadas. Haga clic derecho en un animal para alimentarlo. +Golden Carrot=Zanahoria dorada +A golden carrot is a precious food item which can be eaten. It is really, really filling!=Una zanahoria dorada es un alimento precioso que se puede comer. ¡Es realmente, realmente abundante! +Hoes are essential tools for growing crops. They are used to create farmland in order to plant seeds on it. Hoes can also be used as very weak weapons in a pinch.=Las azadas son herramientas esenciales para el cultivo. Se utilizan para crear tierras de cultivo para plantar semillas en él. Las azadas también se pueden usar como armas muy débiles en caso de apuro. +Use the hoe on a cultivatable block (by rightclicking it) to turn it into farmland. Dirt, grass blocks and grass paths are cultivatable blocks. Using a hoe on coarse dirt turns it into dirt.=Use la azada en un bloque cultivable (al hacer clic derecho) para convertirlo en tierras de cultivo. La tierra, los bloques de hierba y los caminos de hierba son bloques cultivables. Usar una azada en tierra gruesa la convierte en tierra. +Wood Hoe=Azada de madera +Stone Hoe=Azada de piedra +Iron Hoe=Azada de hierro +Golden Hoe=Azada de oro +Diamond Hoe=Azada de diamante +Melon Seeds=Semillas de sandía +Place the melon seeds on farmland (which can be created with a hoe) to plant a melon stem. Melon stems grow in sunlight and grow faster on hydrated farmland. When mature, the stem will attempt to grow a melon at the side. Rightclick an animal to feed it melon seeds.=Coloque las semillas de sandía en tierras de cultivo (que se pueden crear con una azada) para plantar un tallo de sandía. Los tallos de sandía crecen a la luz del sol y crecen más rápido en tierras de cultivo hidratadas. Cuando esté maduro, el tallo intentará cultivar un sandía a un lado. Haga clic derecho en un animal para alimentarlo con semillas de sandía. +Melon=Sandía +Grows into a melon stem which in turn grows melons. Chickens like melon seeds.=Crece en un tallo de sandía que a su vez produce melones. A las gallinas les gustan las semillas de sandía. +A melon is a block which can be grown from melon stems, which in turn are grown from melon seeds. It can be harvested for melon slices.=Un sandía es un bloque que se puede cultivar a partir de tallos de sandía, que a su vez se cultivan a partir de semillas de sandía. Se puede cosechar para rebanadas de sandía. +Premature Melon Stem=Tallo de sandía prematuro +Melon stems grow on farmland in 8 stages. On hydrated farmland, the growth is a bit quicker. Mature melon stems are able to grow melons.=Los tallos de sandía crecen en tierras de cultivo en 8 etapas. En tierras de cultivo hidratadas, el crecimiento es un poco más rápido. Los tallos de sandía maduros pueden cultivar melones. +Premature Melon Stem (Stage @1)=Tallo de sandía prematuro (Etapa @1) +Mature Melon Stem=Tallo de sandía maduro +A mature melon stem attempts to grow a melon at one of its four adjacent blocks. A melon can only grow on top of farmland, dirt, or a grass block. When a melon is next to a melon stem, the melon stem immediately bends and connects to the melon. While connected, a melon stem can't grow another melon. As soon all melons around the stem have been removed, it loses the connection and is ready to grow another melon.=Un tallo de sandía maduro intenta cultivar un sandía en uno de sus cuatro bloques adyacentes. Un sandía solo puede crecer sobre tierras de cultivo, tierra o un bloque de hierba. Cuando un sandía está al lado de un tallo, el tallo se dobla inmediatamente y se conecta al sandía. Mientras está conectado, un tallo de sandía no puede cultivar otro sandía. Tan pronto como se hayan eliminado todos los melones alrededor del tallo, pierde la conexión y está listo para cultivar otro sandía. +Melon Slice=Rodaja de sandía +This is a food item which can be eaten.=Este es un alimento que se puede comer. +Premature Potato Plant=Planta de patata prematura +Potato plants are plants which grow on farmland under sunlight in 8 stages, but only 4 stages can be visually told apart. On hydrated farmland, they grow a bit faster. They can be harvested at any time but will only yield a profit when mature.=Las plantas de patata son plantas que crecen en tierras de cultivo bajo la luz solar en 8 etapas, pero solo 4 etapas se pueden distinguir visualmente. En tierras de cultivo hidratadas, crecen un poco más rápido. Se pueden cosechar en cualquier momento, pero solo generarán ganancias cuando maduren. +Premature Potato Plant (Stage @1)=Planta de patata prematura (Etapa @1) +Mature Potato Plant=Planta de patata madura +Mature potato plants are ready to be harvested for potatoes. They won't grow any further.=Las plantas de patatas maduras están listas para ser cosechadas. No crecerán más. +Potato=Patata +Potatoes are food items which can be eaten, cooked in the furnace and planted. Pigs like potatoes.=Las patatas son alimentos que se pueden comer, cocinar en el horno y plantar. A los cerdos les gustan las patatas. +Hold it in your hand and rightclick to eat it. Place it on top of farmland to plant it. It grows in sunlight and grows faster on hydrated farmland. Rightclick an animal to feed it.=Sostenlo en tu mano y haz clic derecho para comértelo. Colóquelo encima de las tierras de cultivo para plantarlo. Crece a la luz del sol y crece más rápido en tierras de cultivo hidratadas. Haga clic derecho en un animal para alimentarlo. +Baked Potato=Patata cocida +Baked potatoes are food items which are more filling than the unbaked ones.=Las patatas cocidas son alimentos que llenan más que las que no están cocidas. +Poisonous Potato=Patata venenosa +This potato doesn't look too healthy. You can eat it to restore hunger points, but there's a 60% chance it will poison you briefly.=Esta patata no se ve muy saludable. Puedes comerla para restablecer los puntos de hambre, pero hay un 60% de posibilidades de que te envenene brevemente. +Pumpkin Seeds=Semillas de calabaza +Grows into a pumpkin stem which in turn grows pumpkins. Chickens like pumpkin seeds.=Crece en un tallo de calabaza que a su vez produce calabazas. A los pollos les gustan las semillas de calabaza. +Place the pumpkin seeds on farmland (which can be created with a hoe) to plant a pumpkin stem. Pumpkin stems grow in sunlight and grow faster on hydrated farmland. When mature, the stem attempts to grow a pumpkin next to it. Rightclick an animal to feed it pumpkin seeds.=Coloque las semillas de calabaza en tierras de cultivo (que se pueden crear con una azada) para plantar un tallo de calabaza. Los tallos de calabaza crecen a la luz del sol y crecen más rápido en tierras de cultivo hidratadas. Cuando está maduro, el tallo intenta cultivar una calabaza junto a él. Haga clic derecho en un animal para alimentarlo con semillas de calabaza. +Premature Pumpkin Stem=Tallo de calabaza prematuro +Pumpkin stems grow on farmland in 8 stages. On hydrated farmland, the growth is a bit quicker. Mature pumpkin stems are able to grow pumpkins.=Los tallos de calabaza crecen en tierras de cultivo en 8 etapas. En tierras de cultivo hidratadas, el crecimiento es un poco más rápido. Los tallos de calabaza maduros pueden cultivar calabazas. +Premature Pumpkin Stem (Stage @1)=Tallo de calabaza prematuro (Etapa @1) +Mature Pumpkin Stem=Tallo maduro de calabaza +A mature pumpkin stem attempts to grow a pumpkin at one of its four adjacent blocks. A pumpkin can only grow on top of farmland, dirt or a grass block. When a pumpkin is next to a pumpkin stem, the pumpkin stem immediately bends and connects to the pumpkin. A connected pumpkin stem can't grow another pumpkin. As soon all pumpkins around the stem have been removed, it loses the connection and is ready to grow another pumpkin.=Un tallo maduro de calabaza intenta cultivar una calabaza en uno de sus cuatro bloques adyacentes. Una calabaza solo puede crecer sobre tierras de cultivo, tierra o un bloque de hierba. Cuando una calabaza está al lado de un tallo de calabaza, el tallo de la calabaza se dobla inmediatamente y se conecta a la calabaza. Un tallo de calabaza conectado no puede cultivar otra calabaza. Tan pronto como se hayan eliminado todas las calabazas alrededor del tallo, pierde la conexión y está lista para cultivar otra calabaza. +Faceless Pumpkin=Calabaza sin rostro +A faceless pumpkin is a decorative block. It can be carved with shears to obtain pumpkin seeds.=Una calabaza sin rostro es un bloque decorativo. Se puede tallar con tijeras para obtener semillas de calabaza. +Pumpkin=Calabaza +A pumpkin can be worn as a helmet for fun, but it doesn't offer any protection. Pumpkins grow from pumpkin stems, which in turn grow from pumpkin seeds.=Una calabaza se puede usar como casco por diversión, pero no ofrece ninguna protección. Las calabazas crecen de tallos de calabaza, que a su vez crecen de semillas de calabaza. +Jack o'Lantern=Calabaza de Halloween +A jack o'lantern is a traditional Halloween decoration made from a pumpkin. It glows brightly.=La calabaza de Halloween es una decoración tradicional de Halloween hecha de una calabaza. Brilla intensamente. +Pumpkin Pie=Tarta de calabaza +A pumpkin pie is a tasty food item which can be eaten.=Un tarta de calabaza es un alimento sabroso que se puede comer. +Farmland=Tierra de cultivo +Farmland is used for farming, a necessary surface to plant crops. It is created when a hoe is used on dirt or a similar block. Plants are able to grow on farmland, but slowly. Farmland will become hydrated farmland (on which plants grow faster) when it rains or a water source is nearby. This block will turn back to dirt when a solid block appears above it or a piston arm extends above it.=Las tierras de cultivo se utilizan para la agricultura, una superficie necesaria para plantar cultivos. Se crea cuando se usa una azada sobre tierra o un bloque similar. Las plantas pueden crecer en tierras de cultivo, pero lentamente. Las tierras de cultivo se convertirán en tierras de cultivo hidratadas (en las cuales las plantas crecen más rápido) cuando llueve o hay una fuente de agua cerca. Este bloque volverá a convertirse en tierra cuando aparezca un bloque sólido sobre él o un brazo de pistón se extienda sobre él. +Hydrated Farmland=Tierra de cultivo hidratada +Hydrated farmland is used in farming, this is where you can plant and grow some plants. It is created when farmland is under rain or near water. Without water, this block will dry out eventually. This block will turn back to dirt when a solid block appears above it or a piston arm extends above it.=Las tierras de cultivo hidratadas se usan en la agricultura, aquí es donde puedes plantar y cultivar algunas plantas. Se crea cuando las tierras de cultivo están bajo la lluvia o cerca del agua. Sin agua, este bloque se secará eventualmente. Este bloque volverá a convertirse en tierra cuando aparezca un bloque sólido sobre él o un brazo de pistón se extienda sobre él. +Wheat Seeds=Semillas de trigo +Grows into a wheat plant. Chickens like wheat seeds.=Crece en una planta de trigo. A las gallinas les gustan las semillas de trigo. +Place the wheat seeds on farmland (which can be created with a hoe) to plant a wheat plant. They grow in sunlight and grow faster on hydrated farmland. Rightclick an animal to feed it wheat seeds.=Coloque las semillas de trigo en tierras de cultivo (que se pueden crear con una azada) para plantar una planta de trigo. Crecen a la luz del sol y crecen más rápido en tierras de cultivo hidratadas. Haga clic derecho en un animal para alimentarlo con semillas de trigo. +Premature Wheat Plant=Planta de trigo prematuro +Premature wheat plants grow on farmland under sunlight in 8 stages. On hydrated farmland, they grow faster. They can be harvested at any time but will only yield a profit when mature.=Las plantas de trigo prematuras crecen en tierras de cultivo bajo la luz solar en 8 etapas. En tierras de cultivo hidratadas, crecen más rápido. Se pueden cosechar en cualquier momento, pero solo generarán ganancias cuando maduren. +Premature Wheat Plant (Stage @1)=Planta de trigo prematuro (Etapa @1) +Mature Wheat Plant=Planta de trigo maduro +Mature wheat plants are ready to be harvested for wheat and wheat seeds. They won't grow any further.=Las plantas maduras de trigo están listas para ser cosechadas, las semillas de trigo no crecerán más. +Wheat=Trigo +Wheat is used in crafting. Some animals like wheat.=El trigo se usa en la elaboración. A algunos animales les gusta el trigo. +Cookie=Galleta +Bread=Pan +Hay Bale=Fardo de heno +Hay bales are decorative blocks made from wheat.=Las balas de heno son bloques decorativos hechos de trigo. +To carve a face into the pumpkin, use the shears on the side you want to carve.=Para tallar una cara en la calabaza, use las tijeras en el lado que desea tallar. +Use the “Place” key on an animal to try to feed it wheat.=Use la tecla "Colocar" en un animal para tratar de alimentarlo con trigo. diff --git a/mods/ITEMS/mcl_fences/locale/mcl_fences.es.tr b/mods/ITEMS/mcl_fences/locale/mcl_fences.es.tr new file mode 100644 index 00000000..1e8c3798 --- /dev/null +++ b/mods/ITEMS/mcl_fences/locale/mcl_fences.es.tr @@ -0,0 +1,17 @@ +# textdomain: mcl_fences +Fences are structures which block the way. Fences will connect to each other and solid blocks. They cannot be jumped over with a simple jump.=Las cercas son estructuras que bloquean el camino. Las cercas se conectarán entre sí y con los bloques sólidos. No se pueden saltar con un simple salto. +Fence gates can be opened or closed and can't be jumped over. Fences will connect nicely to fence gates.=Las puertas de valla se pueden abrir o cerrar y no se pueden saltar. Las cercas se conectarán muy bien a las puertas de la cerca. +Right-click the fence gate to open or close it.=Haga clic derecho en la puerta de la cerca para abrirla o cerrarla. +Oak Fence=Valla de roble +Oak Fence Gate=Puerta de roble +Spruce Fence=Valla de abeto +Spruce Fence Gate=Puerta de abeto +Birch Fence=Valla de abedul +Birch Fence Gate=Puerta de abedul +Jungle Fence=Valla de la selva +Jungle Fence Gate=Puerta de valla de la selva +Dark Oak Fence=Valla de roble oscuro +Dark Oak Fence Gate=Puerta de roble oscuro +Acacia Fence=Valla de acacia +Acacia Fence Gate=Puerta de acacia +Nether Brick Fence=Valla de ladrillo abisal \ No newline at end of file diff --git a/mods/ITEMS/mcl_fire/locale/mcl_fire.es.tr b/mods/ITEMS/mcl_fire/locale/mcl_fire.es.tr new file mode 100644 index 00000000..b18d8da6 --- /dev/null +++ b/mods/ITEMS/mcl_fire/locale/mcl_fire.es.tr @@ -0,0 +1,17 @@ +# textdomain: mcl_fire +Fire Charge=Carga de fuego +Fire charges are primarily projectiles which can be launched from dispensers, they will fly in a straight line and burst into a fire on impact. Alternatively, they can be used to ignite fires directly.=Las cargas de fuego son principalmente proyectiles que se pueden lanzar desde dispensadores, volarán en línea recta y estallarán en un incendio al impactar. Alternativamente, se pueden usar para encender incendios directamente. +Put the fire charge into a dispenser and supply it with redstone power to launch it. To ignite a fire directly, simply place the fire charge on the ground, which uses it up.=Ponga la carga de fuego en un dispensador y suminístrele poder de piedra roja para lanzarlo. Para encender un fuego directamente, simplemente coloque la carga de fuego en el suelo, que la usa. +Flint and Steel=Mechero +Flint and steel is a tool to start fires and ignite blocks.=El mechero es una herramienta para iniciar incendios y encender bloques. +Rightclick the surface of a block to attempt to light a fire in front of it or ignite the block. A few blocks have an unique reaction when ignited.=Haga clic derecho en la superficie de un bloque para intentar encender un fuego frente a él o encender el bloque. Unos pocos bloques tienen una reacción única cuando se encienden. +Fire is a damaging and destructive but short-lived kind of block. It will destroy and spread towards near flammable blocks, but fire will disappear when there is nothing to burn left. It will be extinguished by nearby water and rain. Fire can be destroyed safely by punching it, but it is hurtful if you stand directly in it. If a fire is started above netherrack or a magma block, it will immediately turn into an eternal fire.=El fuego es un tipo de bloque dañino y destructivo pero de corta duración. Destruirá y se extenderá hacia bloques casi inflamables, pero el fuego desaparecerá cuando no quede nada para quemar. Se extinguirá por el agua y la lluvia cercanas. El fuego puede destruirse de manera segura golpeándolo, pero es doloroso si te paras directamente en él. Si se inicia un fuego por encima de la base o un bloque de magma, se convertirá inmediatamente en un fuego eterno. +Fire is a damaging but non-destructive short-lived kind of block. It will disappear when there is no flammable block around. Fire does not destroy blocks, at least not in this world. It will be extinguished by nearby water and rain. Fire can be destroyed safely by punching it, but it is hurtful if you stand directly in it. If a fire is started above netherrack or a magma block, it will immediately turn into an eternal fire.=El fuego es un tipo de bloque dañino pero no destructivo de corta duración. Desaparecerá cuando no haya un bloque inflamable alrededor. El fuego no destruye bloques, al menos no en este mundo. Se extinguirá por el agua y la lluvia cercanas. El fuego puede destruirse de manera segura golpeándolo, pero es doloroso si te paras directamente en él. Si se inicia un fuego por encima de la base o un bloque de magma, se convertirá inmediatamente en un fuego eterno. +Eternal fire is a damaging block that might create more fire. It will create fire around it when flammable blocks are nearby. Eternal fire can be extinguished by punches and nearby water blocks. Other than (normal) fire, eternal fire does not get extinguished on its own and also continues to burn under rain. Punching eternal fire is safe, but it hurts if you stand inside.=El fuego eterno es un bloque dañino que podría crear más fuego. Creará fuego alrededor cuando haya bloques inflamables cerca. El fuego eterno se puede extinguir con golpes y bloques de agua cercanos. Aparte del fuego (normal), el fuego eterno no se extingue por sí solo y también continúa ardiendo bajo la lluvia. Golpear el fuego eterno es seguro, pero duele si te paras dentro. +Eternal fire is a damaging block. Eternal fire can be extinguished by punches and nearby water blocks. Other than (normal) fire, eternal fire does not get extinguished on its own and also continues to burn under rain. Punching eternal fire is safe, but it hurts if you stand inside.=El fuego eterno es un bloque dañino. El fuego eterno se puede extinguir con golpes y bloques de agua cercanos. Aparte del fuego (normal), el fuego eterno no se extingue por sí solo y también continúa ardiendo bajo la lluvia. Golpear el fuego eterno es seguro, pero duele si te paras dentro. +@1 has been cooked crisp.=@1 se ha cocinado crujientemente. +@1 felt the burn.=@1 sintió la quemadura. +@1 died in the flames.=@1 murió en las llamas. +@1 died in a fire.=@ 1 murió en un incendio. +Fire=Fuego +Eternal Fire=Fuego eterno diff --git a/mods/ITEMS/mcl_fishing/locale/mcl_fishing.es.tr b/mods/ITEMS/mcl_fishing/locale/mcl_fishing.es.tr new file mode 100644 index 00000000..27972dce --- /dev/null +++ b/mods/ITEMS/mcl_fishing/locale/mcl_fishing.es.tr @@ -0,0 +1,16 @@ +# textdomain: mcl_fishing +Fishing Rod=Caña de pescar +Fishing rods can be used to catch fish.=Las cañas de pescar se pueden utilizar para pescar. +Rightclick to launch the bobber. When it sinks right-click again to reel in an item. Who knows what you're going to catch?=Haga clic derecho para iniciar el bobber. Cuando se hunda, haga clic derecho nuevamente para enrollar un elemento. ¿Quién sabe lo que vas a atrapar? +Raw Fish=Bacalao crudo +Raw fish is obtained by fishing and is a food item which can be eaten safely. Cooking it improves its nutritional value.=El bacalao crudo se obtiene pescando y es un alimento que se puede comer de forma segura. Cocinarlo mejora su valor nutricional. +Cooked Fish=Bacalao cocinado +Mmh, fish! This is a healthy food item.=Mmh, ¡pez! Este es un alimento saludable. +Raw Salmon=Salmón crudo +Raw salmon is obtained by fishing and is a food item which can be eaten safely. Cooking it improves its nutritional value.=El salmón crudo se obtiene pescando y es un alimento que se puede comer de manera segura. Cocinarlo mejora su valor nutricional. +Cooked Salmon=Salmón cocinado +This is a healthy food item which can be eaten.=Este es un alimento saludable que se puede comer. +Clownfish=Pez tropical +Clownfish may be obtained by fishing (and luck) and is a food item which can be eaten safely.=El pez tropical se puede obtener pescando (y por suerte) y es un alimento que se puede comer de forma segura. +Pufferfish=Pez globo +Pufferfish are a common species of fish and can be obtained by fishing. They can technically be eaten, but they are very bad for humans. Eating a pufferfish only restores 1 hunger point and will poison you very badly (which drains your health non-fatally) and causes serious food poisoning (which increases your hunger).=El pez globo es una especie común de pescado y se puede obtener mediante la pesca. Técnicamente se pueden comer, pero son muy malos para los humanos. Comer un pez globo solo restaura 1 punto de hambre y te envenena mucho (lo que drena tu salud de manera no fatal) y causa una intoxicación alimentaria grave (lo que aumenta tu hambre). diff --git a/mods/ITEMS/mcl_flowerpots/locale/mcl_flowerpots.es.tr b/mods/ITEMS/mcl_flowerpots/locale/mcl_flowerpots.es.tr new file mode 100644 index 00000000..b303194b --- /dev/null +++ b/mods/ITEMS/mcl_flowerpots/locale/mcl_flowerpots.es.tr @@ -0,0 +1,25 @@ +# textdomain: mcl_flowerpots +Dandelion Flower Pot=Maceta con diente de león +Poppy Floer Pot=Maceta con amapola +Blue Orchid Flower Pot=Maceta con orquídeas azules +Allium Flower Pot=Maceta con puerro +Azure Bluet Flower Pot=Maceta con flor azul celeste +Red Tulip Flower Pot=Maceta con tulipán rojo +Pink Tulip Flower Pot=Maceta con tulipán rosa +White Tulip Flower Pot=Maceta con tulipán blanco +Orange Tulip Flower Pot=Maceta con tulipán naranja +Oxeye Daisy Flower Pot=Maceta con margarita +Brown Mushroom Flower Pot=Maceta con seta marrón +Red Mushroom Flower Pot=Maceta con seta roja +Oak Sapling Flower Pot=Maceta con roble joven +Acacia Sapling Flower Pot=Maceta con acacia +Jungle Sapling Flower Pot=Maceta con la jungla +Dark Oak Sapling Flower Pot=Maceta con roble oscuro +Spruce Sapling Flower Pot=Maceta con abeto +Birch Sapling Flower Pot=Maceta con abedul +Dead Bush Flower Pot=Maceta con arbusto muerto +Fern Flower Pot=Maceta con helecho +Cactus Flower Pot=Maceta con cactus +Flower Pot=Maceta +Flower pots are decorative blocks in which flowers and other small plants can be placed.=Las macetas son bloques decorativos en los que se pueden colocar flores y otras plantas pequeñas. +Just place a plant on the flower pot. Flower pots can hold small flowers (not higher than 1 block), saplings, ferns, dead bushes, mushrooms and cacti. Rightclick a potted plant to retrieve the plant.=Simplemente coloque una planta en la maceta. Las macetas pueden contener flores pequeñas (no más de 1 bloque), árboles jóvenes, helechos, arbustos muertos, hongos y cactus. Haga clic derecho en una planta en maceta para recuperar la planta. \ No newline at end of file diff --git a/mods/ITEMS/mcl_flowers/locale/mcl_flowers.es.tr b/mods/ITEMS/mcl_flowers/locale/mcl_flowers.es.tr new file mode 100644 index 00000000..6b9734b0 --- /dev/null +++ b/mods/ITEMS/mcl_flowers/locale/mcl_flowers.es.tr @@ -0,0 +1,32 @@ +# textdomain: mcl_flowers +This is a small flower. Small flowers are mainly used for dye production and can also be potted.=Esta es una pequeña flor. Las flores pequeñas se utilizan principalmente para la producción de tinte y también se pueden macetas. +It can only be placed on a block on which it would also survive.=Solo se puede colocar en un bloque en el que también sobreviviría. +Poppy=Amapola +Dandelion=Diente de león +Oxeye Daisy=Margarita +Orange Tulip=Tulipán naranja +Pink Tulip=Tulipán rosa +Red Tulip=Tulipán rojo +White Tulip=Tulipán blanco +Allium=Allium +Azure Bluet=Azul celeste +Blue Orchid=Orquídea azul +Tall Grass=Cesped alto +Tall grass is a small plant which often occurs on the surface of grasslands. It can be harvested for wheat seeds. By using bone meal, tall grass can be turned into double tallgrass which is two blocks high.=El cesped alto es una planta pequeña que a menudo se encuentra en la superficie de los pastizales. Se puede cosechar para semillas de trigo. Mediante el uso de harina de hueso, la hierba alta se puede convertir en hierba alta doble que tiene dos bloques de altura. +Fern=Helecho +Ferns are small plants which occur naturally in jungles and taigas. They can be harvested for wheat seeds. By using bone meal, a fern can be turned into a large fern which is two blocks high.=Los helechos son plantas pequeñas que se producen naturalmente en las selvas y taigas. Se pueden cosechar para semillas de trigo. Al usar harina de hueso, un helecho se puede convertir en un helecho grande que tiene dos bloques de altura. +(Top Part)=(Parte superior) +Peony=Peonía +A peony is a large plant which occupies two blocks. It is mainly used in dye protection.=Una peonía es una planta grande que ocupa dos bloques. Se utiliza principalmente en la protección del tinte. +Rose Bush=Rosal +A rose bush is a large plant which occupies two blocks. It is safe to touch it. Rose bushes are mainly used in dye protection.=Un rosal es una planta grande que ocupa dos bloques. Es seguro tocarlo. Los rosales se utilizan principalmente en la protección del tinte. +Lilac=Lila +A lilac is a large plant which occupies two blocks. It is mainly used in dye production.=Una lila es una planta grande que ocupa dos bloques. Se utiliza principalmente en la producción de tintes. +Sunflower=Girasol +A sunflower is a large plant which occupies two blocks. It is mainly used in dye production.=Un girasol es una planta grande que ocupa dos bloques. Se utiliza principalmente en la producción de tintes. +Double tallgrass a variant of tall grass and occupies two blocks. It can be harvested for wheat seeds.=Doble hierba alta una variante de hierba alta y ocupa dos bloques. Se puede cosechar para semillas de trigo. +Large fern is a variant of fern and occupies two blocks. It can be harvested for wheat seeds.=El helecho grande es una variante del helecho y ocupa dos bloques. Se puede cosechar para semillas de trigo. +Double Tallgrass=Doble hierba alta +Large Fern=Helecho grande +Lily Pad=Nenúfar +A lily pad is a flat plant block which can be walked on. They can be placed on water sources, ice and frosted ice.=Un nenúfar es un bloque de planta plano sobre el que se puede caminar. Se pueden colocar en fuentes de agua y hielo. diff --git a/mods/ITEMS/mcl_furnaces/locale/mcl_furnaces.es.tr b/mods/ITEMS/mcl_furnaces/locale/mcl_furnaces.es.tr new file mode 100644 index 00000000..10378c2d --- /dev/null +++ b/mods/ITEMS/mcl_furnaces/locale/mcl_furnaces.es.tr @@ -0,0 +1,8 @@ +# textdomain: mcl_furnaces +Furnace=Horno +Furnaces cook or smelt several items, using a furnace fuel, into something else.=Los hornos cocinan u funden varios elementos, utilizando un combustible de horno, en otra cosa. +Use the furnace to open the furnace menu. Place a furnace fuel in the lower slot and the source material in the upper slot. The furnace will slowly use its fuel to smelt the item. The result will be placed into the output slot at the right side.=Use el horno para abrir el menú del horno. Coloque un combustible de horno en la ranura inferior y el material de origen en la ranura superior. El horno usará lentamente su combustible para fundir el artículo. El resultado se colocará en la ranura de salida en el lado derecho. +Use the recipe book to see what you can smelt, what you can use as fuel and how long it will burn.=Use el libro de recetas para ver qué puede crear, qué puede usar como combustible y durante cuánto tiempo se quemará. +Burning Furnace=Horno ardiente +Recipe book=Libro de recetas +Inventory=Inventario diff --git a/mods/ITEMS/mcl_heads/locale/mcl_heads.es.tr b/mods/ITEMS/mcl_heads/locale/mcl_heads.es.tr new file mode 100644 index 00000000..308dd8b2 --- /dev/null +++ b/mods/ITEMS/mcl_heads/locale/mcl_heads.es.tr @@ -0,0 +1,11 @@ +# textdomain: mcl_heads +Zombie Head=Cabeza de zombie +A zombie head is a small decorative block which resembles the head of a zombie. It can also be worn as a helmet for fun, but does not offer any protection.=Una cabeza de zombie es un pequeño bloque decorativo que se asemeja a la cabeza de un zombie. También se puede usar como casco por diversión, pero no ofrece ninguna protección. +Creeper Head=Cabeza de creeper +A creeper head is a small decorative block which resembles the head of a creeper. It can also be worn as a helmet for fun, but does not offer any protection.=Una cabeza de creeper es un pequeño bloque decorativo que se asemeja a la cabeza de un creeper. También se puede usar como casco por diversión, pero no ofrece ninguna protección. +Human Head=Cabeza humana +A human head is a small decorative block which resembles the head of a human (i.e. a player character). It can also be worn as a helmet for fun, but does not offer any protection.=Una cabeza humana es un pequeño bloque decorativo que se asemeja a la cabeza de un humano (es decir, un personaje jugador). También se puede usar como casco por diversión, pero no ofrece ninguna protección. +Skeleton Skull=Calavera de esqueleto +A skeleton skull is a small decorative block which resembles the skull of a skeleton. It can also be worn as a helmet for fun, but does not offer any protection.=Una cabeza de esqueleto es un pequeño bloque decorativo que se asemeja al cráneo de un esqueleto. También se puede usar como casco por diversión, pero no ofrece ninguna protección. +Wither Skeleton Skull=Calavera de esqueleto Wither +A wither skeleton skull is a small decorative block which resembles the skull of a wither skeleton. It can also be worn as a helmet for fun, but does not offer any protection.=Una cabeza de esqueleto marchito es un pequeño bloque decorativo que se asemeja al cráneo de un esqueleto marchito. También se puede usar como casco por diversión, pero no ofrece ninguna protección. diff --git a/mods/ITEMS/mcl_hoppers/locale/mcl_hoppers.es.tr b/mods/ITEMS/mcl_hoppers/locale/mcl_hoppers.es.tr new file mode 100644 index 00000000..3f819ca9 --- /dev/null +++ b/mods/ITEMS/mcl_hoppers/locale/mcl_hoppers.es.tr @@ -0,0 +1,13 @@ +# textdomain: mcl_hoppers +Hopper=Tolva +Hoppers are containers with 5 inventory slots. They collect dropped items from above, take items from a container above and attempt to put its items it into an adjacent container. Hoppers can go either downwards or sideways. Hoppers interact with chests, droppers, dispensers, shulker boxes, furnaces and hoppers.=Las tolvas son contenedores con 5 ranuras de inventario. Recogen los artículos que se cayeron desde arriba, toman los artículos de un contenedor de arriba e intentan colocarlos en un contenedor adyacente. Las tolvas pueden ir hacia abajo o hacia los lados. Las tolvas interactúan con cofres, goteros, dispensadores, cajas de shulker, hornos y tolvas. +Hoppers interact with containers the following way:=Las tolvas interactúan con los contenedores de la siguiente manera: +• Furnaces: Hoppers from above will put items into the source slot. Hoppers from below take items from the output slot. They also take items from the fuel slot when they can't be used as a fuel. Sideway hoppers that point to the furnace put items into the fuel slot=• Hornos: las tolvas de arriba colocarán elementos en la ranura de origen. Las tolvas de abajo toman artículos de la ranura de salida. También toman artículos de la ranura de combustible cuando no se pueden usar como combustible. Las tolvas laterales que apuntan al horno colocan elementos en la ranura de combustible +• Ender chests: No interaction.=• Cofres Ender: Sin interacción. +• Other containers: Normal interaction.=• Otros contenedores: interacción normal. +Hoppers can be disabled when supplied with redstone power. Disabled hoppers don't move items.=Las tolvas se pueden desactivar cuando se les suministra energía de redstone. Las tolvas deshabilitadas no mueven artículos. +To place a hopper vertically, place it on the floor or a ceiling. To place it sideways, place it at the side of a block. Use the hopper to access its inventory.=Para colocar una tolva verticalmente, colóquela en el suelo o en el techo. Para colocarlo de lado, colóquelo al lado de un bloque. Use la tolva para acceder a su inventario. +Disabled Hopper=Tolva desactivada +Side Hopper=Tolva lateral +Disabled Side Hopper=Tolva lateral desactivada +Inventory=Inventario diff --git a/mods/ITEMS/mcl_itemframes/locale/mcl_itemframes.es.tr b/mods/ITEMS/mcl_itemframes/locale/mcl_itemframes.es.tr new file mode 100644 index 00000000..0803234b --- /dev/null +++ b/mods/ITEMS/mcl_itemframes/locale/mcl_itemframes.es.tr @@ -0,0 +1,5 @@ +# textdomain: mcl_itemframes +Item Frame=Marco +Item frames are decorative blocks in which items can be placed.=Los marcos de elementos son bloques decorativos en los que se pueden colocar elementos. +Just place any item on the item frame. Use the item frame again to retrieve the item.=Simplemente coloque cualquier artículo en el marco del artículo. Use el marco del artículo nuevamente para recuperar el artículo. + diff --git a/mods/ITEMS/mcl_jukebox/locale/mcl_jukebox.es.tr b/mods/ITEMS/mcl_jukebox/locale/mcl_jukebox.es.tr new file mode 100644 index 00000000..d1a63976 --- /dev/null +++ b/mods/ITEMS/mcl_jukebox/locale/mcl_jukebox.es.tr @@ -0,0 +1,10 @@ +# textdomain: mcl_jukebox +Music Disc=Disco de música +A music disc holds a single music track which can be used in a jukebox to play music.=Un disco de música contiene una sola pista que se puede usar en una máquina de discos para reproducirla. +Place a music dict into an empty jukebox to play the music. Use the jukebox again to retrieve the music disc. The music can only be heard by you, not by other players.=Coloque un disco de música en una máquina de discos vacía para reproducir la música. Use la máquina de discos nuevamente para recuperar el disco de música. La música solo puede ser escuchada por ti, no por otros jugadores. +Music Disc=Disco de música +@1—@2=@1 – @2 +Jukebox=Tocadiscos +Jukeboxes play music when they're supplied with a music disc.=Los tocadiscos reproducen música cuando se les inserta un disco de música. +Place a music disc into an empty jukebox to insert the music disc and play music. If the jukebox already has a music disc, you will retrieve this music disc first. The music can only be heard by you, not by other players.=Coloque un disco de música en una máquina de discos vacía para insertar el disco de música y reproducir música. Si el jukebox ya tiene un disco de música, primero recuperará este disco de música. La música solo puede ser escuchada por ti, no por otros jugadores. +Now playing: @1—@2=Reproduciendo actualmente: @1 – @2 diff --git a/mods/ITEMS/mcl_maps/locale/mcl_maps.es.tr b/mods/ITEMS/mcl_maps/locale/mcl_maps.es.tr new file mode 100644 index 00000000..513eab13 --- /dev/null +++ b/mods/ITEMS/mcl_maps/locale/mcl_maps.es.tr @@ -0,0 +1,8 @@ +# textdomain: mcl_maps +Empty Map=Mapa vacio +Empty maps are not useful as maps, but they can be stacked and turned to maps which can be used.=Los mapas vacíos no son útiles como mapas, pero se pueden apilar y convertir en mapas que se pueden usar. +Rightclick to start using the map (which can't be stacked anymore).=Haga clic derecho para comenzar a usar el mapa (que ya no se puede apilar). +Map=Mapa +Maps show your surroundings as you explore the world.=Los mapas muestran tu entorno mientras exploras el mundo. +Hold the map in any of the hotbar slots. This allows you to access the minimap by pressing the minimap key (see controls settings).=Mantenga el mapa en cualquiera de las ranuras de la barra de acceso directo. Esto le permite acceder al minimapa presionando la tecla del minimapa (consulte la configuración de los controles). +In Creative Mode, you don't need this item; the minimap is always available.=En el modo creativo, no necesita este elemento; El minimapa siempre está disponible. diff --git a/mods/ITEMS/mcl_mobitems/locale/mcl_mobitems.es.tr b/mods/ITEMS/mcl_mobitems/locale/mcl_mobitems.es.tr new file mode 100644 index 00000000..e56ef9ee --- /dev/null +++ b/mods/ITEMS/mcl_mobitems/locale/mcl_mobitems.es.tr @@ -0,0 +1,62 @@ +# textdomain: mcl_mobitems +Rotten Flesh=Carne podrida +Yuck! This piece of flesh clearly has seen better days. If you're really desperate, you can eat it to restore a few hunger points, but there's a 80% chance it causes food poisoning, which increases your hunger for a while.=¡Qué asco! Este pedazo de carne claramente ha tenido días mejores. Si está realmente estas desesperado, puedes comerlo para restablecer algunos puntos de hambre, pero hay un 80% de posibilidades de que cause intoxicación alimentaria, lo que aumenta su hambre por un tiempo. +Raw Mutton=Cordero crudo +Raw mutton is the flesh from a sheep and can be eaten safely. Cooking it will greatly increase its nutritional value.=El cordero crudo es la carne de una oveja y se puede comer de manera segura. Cocinarlo aumentará en gran medida su valor nutricional. +Cooked Mutton=Cordero cocinado +Cooked mutton is the cooked flesh from a sheep and is used as food.=El cordero cocinado es la carne cocinada de oveja y se usa como alimento. +Raw Beef=Filete crudo +Raw beef is the flesh from cows and can be eaten safely. Cooking it will greatly increase its nutritional value.=La carne cruda es la carne de las vacas y se puede comer de manera segura. Cocinarlo aumentará en gran medida su valor nutricional. +Steak=Filete cocinado +Steak is cooked beef from cows and can be eaten.=El filete cocinado se cocina con filetes crudos de vaca y se puede comer. +Raw Chicken=Pollo crudo +Raw chicken is a food item which is not safe to consume. You can eat it to restore a few hunger points, but there's a 30% chance to suffer from food poisoning, which increases your hunger rate for a while. Cooking raw chicken will make it safe to eat and increases its nutritional value.=El pollo crudo es un alimento que no es seguro consumir. Puedes comerlo para restaurar algunos puntos de hambre, pero hay un 30% de posibilidades de sufrir intoxicación alimentaria, lo que aumenta su tasa de hambre por un tiempo. Cocinar pollo crudo hará que sea seguro comerlo y aumentará su valor nutricional. +Cooked Chicken=Pollo cocinado +A cooked chicken is a healthy food item which can be eaten.=Un pollo cocinado es un alimento saludable que se puede comer. +Raw Porkchop=Chuleta de cerdo cruda +A raw porkchop is the flesh from a pig and can be eaten safely. Cooking it will greatly increase its nutritional value.=Una chuleta de cerdo cruda es la carne de un cerdo y se puede comer de manera segura. Cocinarlo aumentará en gran medida su valor nutricional. +Cooked Porkchop=Chuleta de cerdo cocinada +Cooked porkchop is the cooked flesh of a pig and is used as food.=La chuleta de cerdo cocinada es la carne cocida de un cerdo y se usa como alimento. +Raw Rabbit=Conejo crudo +Raw rabbit is a food item from a dead rabbit. It can be eaten safely. Cooking it will increase its nutritional value.=El conejo crudo es un alimento de un conejo muerto. Se puede comer de forma segura. Cocinar aumentará su valor nutricional. +Cooked Rabbit=Conejo cocinado +This is a food item which can be eaten.=Este es un alimento que se puede comer. +Milk=Leche +Milk is very refreshing and can be obtained by using a bucket on a cow. Drinking it will cure all forms of poisoning, but restores no hunger points.=La leche es muy refrescante y se puede obtener usando un cubo en una vaca. Beberlo curará todas las formas de envenenamiento, pero no restaura los puntos de hambre. +Spider Eye=Ojo de araña +Spider eyes are used mainly in crafting. If you're really desperate, you can eat a spider eye, but it will poison you briefly.=Los ojos de araña se utilizan principalmente en la elaboración. Si estás realmente desesperado, puedes comerte un ojo de araña, pero te envenenará brevemente. +Bone=Hueso +Bones can be used to tame wolves so they will protect you. They are also useful as a crafting ingredient.=Los huesos se pueden usar para domar a los lobos para que te protejan. También son útiles como ingrediente de elaboración. +String=Cuerda +Strings are used in crafting.=Las cuerdas se usan en la elaboración. +Blaze Rod=Vara de blaze +This is a crafting component dropped from dead blazes.=Este es un componente de artesanía caído de llamas muertas. +Blaze Powder=Polvo de blaze +This item is mainly used for crafting.=Este artículo se usa principalmente para la elaboración. +Magma Cream=Crema de magma +Magma cream is a crafting component.=La crema de magma es un componente de elaboración. +Ghast Tear=Lágrima espectral +Place this item in an item frame as decoration.=Coloque este artículo en un marco de artículo como decoración. +Nether Star=Estrella del Nether +A nether star is dropped when the Wither dies. Place it in an item frame to show the world how hardcore you are! Or just as decoration.=Se cae una estrella cuando muere un Wither. ¡Colócalo en el marco de un objeto para mostrarle al mundo lo duro que eres! O simplemente como decoración. +Leather=Cuero +Leather is a versatile crafting component.=El cuero es un componente de elaboración versátil. +Feather=Pluma +Feathers are used in crafting and are dropped from chickens.=Las plumas se usan en la elaboración y se sueltan de los pollos. +Rabbit Hide=Piel de conejo +Rabbit hide is used to create leather.=La piel de conejo se usa para crear cuero. +Rabbit's Foot=Pata de conejo +Must be your lucky day! Place this item in an item frame for decoration.=¡Debe ser tu día de suerte! Coloque este artículo en un marco de artículos para la decoración. +Saddle=Montura +Saddles can be put on some animals in order to mount them.=Se pueden poner monturas en algunos animales para montarlos. +Rabbit Stew=Estofado de conejo +Rabbit stew is a very nutricious food item.=El estofado de conejo es un alimento muy nutritivo. +Shulker Shell=Caparazón de shulker +Shulker shells are used in crafting. They are dropped from dead shulkers.=Los caparazones de shulker se usan en la fabricación. Son obtenidos de shulkers muertos. +Slimeball=Bola de slime +Slimeballs are used in crafting. They are dropped from slimes.=Las bolas de slime se usan en la elaboración. Se obtienen de slimes. +Gunpowder=Pólvora +Carrot on a Stick=Caña con zanahoria +A carrot on a stick can be used on saddled pigs to ride them.=La caña con zanahoria se puede usar en cerdos ensillados para montarlos. +Place it on a saddled pig to mount it. You can now ride the pig like a horse. Pigs will also walk towards you when you just wield the carrot on a stick.=Colóquelo sobre un cerdo ensillado para montarlo. Ahora puedes montar el cerdo como un caballo. Los cerdos también caminarán hacia ti cuando solo manejes la zanahoria en un palo. +Wield the bone near wolves to attract them. Use the “Place” key on the wolf to give it a bone and tame it. You can then give commands to the tamed wolf by using the “Place” key on it.=Empuña el hueso cerca de los lobos para atraerlos. Usa la tecla "Colocar" en el lobo para darle un hueso y domesticarlo. Luego puede dar órdenes al lobo domesticado utilizando la tecla "Colocar". diff --git a/mods/ITEMS/mcl_mobspawners/locale/mcl_mobspawners.es.tr b/mods/ITEMS/mcl_mobspawners/locale/mcl_mobspawners.es.tr new file mode 100644 index 00000000..2b6ff977 --- /dev/null +++ b/mods/ITEMS/mcl_mobspawners/locale/mcl_mobspawners.es.tr @@ -0,0 +1,4 @@ +# textdomain: mcl_mobspawners +Mob Spawner=Generador de criaturas +A mob spawner regularily causes mobs to appear around it while a player is nearby. Some mob spawners are disabled while in light.=Un generador de criaturas regularmente hace que aparezcan mobs a su alrededor mientras un jugador está cerca. Algunos reproductores de las criaturas están deshabilitados mientras están a la luz. +If you have a spawn egg, you can use it to change the mob to spawn. Just place the item on the mob spawner. Player-set mob spawners always spawn mobs regardless of the light level.=Si tienes un huevo de desove, puedes usarlo para cambiar las criaturas a desovar. Simplemente coloque el artículo en el generador de criaturas. Los generadores de criaturas establecidos por el jugador siempre generan monstruos independientemente del nivel de luz. diff --git a/mods/ITEMS/mcl_monster_eggs/locale/mcl_monster_eggs.es.tr b/mods/ITEMS/mcl_monster_eggs/locale/mcl_monster_eggs.es.tr new file mode 100644 index 00000000..f35b4563 --- /dev/null +++ b/mods/ITEMS/mcl_monster_eggs/locale/mcl_monster_eggs.es.tr @@ -0,0 +1,8 @@ +# textdomain: mcl_monster_eggs +An infested block is a block from which a silverfish will pop out when it is broken. It looks identical to its normal counterpart.=Un bloque infestado es un bloque del que saldrá un pez plateado cuando se rompa. Se ve idéntico a su contraparte normal. +Infested Stone=Piedra infestada +Infested Cobblestone=Roca infestada +Infested Stone Bricks=Ladrillos de piedra infestados +Infested Cracked Stone Bricks=Ladrillos de piedra agrietados infestados +Infested Mossy Stone Bricks=Ladrillos de piedra musgosos infestados +Infested Chiseled Stone Bricks=Ladrillos de piedra cincelados infestados diff --git a/mods/ITEMS/mcl_mushrooms/locale/mcl_mushrooms.es.tr b/mods/ITEMS/mcl_mushrooms/locale/mcl_mushrooms.es.tr new file mode 100644 index 00000000..fc81adf9 --- /dev/null +++ b/mods/ITEMS/mcl_mushrooms/locale/mcl_mushrooms.es.tr @@ -0,0 +1,22 @@ +# textdomain: mcl_mushrooms +This decorative block is like a huge mushroom stem, but with the stem texture on all sides.=Este bloque decorativo es como un gran tallo de hongo, pero con la textura del tallo en todos los lados. +Huge red mushroom blocks are the cap parts of huge red mushrooms. It consists of a red skin and can have pores on each of its sides.=Enormes bloques de hongos rojos son las partes de la tapa de enormes hongos rojos. Consiste en una piel roja y puede tener poros en cada uno de sus lados. +The stem part of a huge red mushroom.=La parte del tallo de un champiñón rojo enorme. +Huge Red Mushroom Block=Bloque de champiñón rojo +Huge Red Mushroom Stem=Tallo de champiñón rojo +Huge Red Mushroom All-Faces Stem=Tallo de champiñón rojo (Todas las caras) +Huge brown mushroom blocks are the cap parts of huge brown mushrooms. It consists of a brown skin and can have pores on each of its sides.=Braune Riesenpilzblöcke sind die Kappenteile von braunen Riesenpilzen. Sie bestehen aus einer braunen Haut und können Poren an jede ihrer Seiten haben. +The stem part of a huge brown mushroom.=Der Stängelteil eines braunen Riesenpilzes. +Huge Brown Mushroom Block=Bloque de champiñón marrón +Huge Brown Mushroom Stem=Tallo de champiñón marrón +Huge Brown Mushroom All-Faces Stem=Tallo de champiñón marrón (Todas las caras) +Brown mushrooms are fungi which grow and spread in darkness, but are sensitive to light. They are inedible as such, but they can be used to craft food items.=Los hongos marrones son hongos que crecen y se propagan en la oscuridad, pero son sensibles a la luz. No son comestibles como tales, pero pueden usarse para fabricar alimentos. +Red mushrooms are fungi which grow and spread in darkness, but are sensitive to light. They are inedible as such, but they can be used to craft food items.=Los hongos rojos son hongos que crecen y se propagan en la oscuridad, pero son sensibles a la luz. No son comestibles como tales, pero pueden usarse para fabricar alimentos. +A single mushroom of this species will slowly spread over time towards a random solid opaque block with a light level of 12 or lower in a 3×3×3 cube around the mushroom. It stops spreading when there are 5 or more mushrooms of the same species within an area of 9×3×9 blocks around the mushroom.=Un solo hongo de esta especie se extenderá lentamente con el tiempo hacia un bloque opaco sólido aleatorio con un nivel de luz de 12 o menos en un cubo de 3 × 3 × 3 alrededor del hongo. Se detiene cuando hay 5 o más hongos de la misma especie dentro de un área de 9 × 3 × 9 bloques alrededor del hongo. +Mushrooms will eventually uproot at a light level of 12 or higher. On mycelium or podzol, they survive and spread at any light level.=Los hongos eventualmente se desarraigarán a un nivel de luz de 12 o más. En micelio o podzol, sobreviven y se propagan a cualquier nivel de luz. +This mushroom can be placed on mycelium and podzol at any light level. It can also be placed on blocks which are both solid and opaque, as long as the light level at daytime is not higher than 12.=Este hongo se puede colocar sobre micelio y podzol a cualquier nivel de luz. También se puede colocar en bloques que sean sólidos y opacos, siempre que el nivel de luz durante el día no sea superior a 12. +Brown Mushroom=Champiñón marrón +Red Mushroom=Champiñón rojo +Mushroom Stew=Estofado de champiñones +Mushroom stew is a healthy soup which can be consumed to restore some hunger points.=El estofado de champiñones es una sopa saludable que se puede consumir para restaurar algunos puntos de hambre. +By placing huge mushroom blocks of the same species next to each other, the sides that touch each other will turn into pores permanently.=Al colocar enormes bloques de hongos de la misma especie uno al lado del otro, los lados que se tocan se convertirán en poros permanentemente. diff --git a/mods/ITEMS/mcl_nether/locale/mcl_nether.es.tr b/mods/ITEMS/mcl_nether/locale/mcl_nether.es.tr new file mode 100644 index 00000000..046b95f2 --- /dev/null +++ b/mods/ITEMS/mcl_nether/locale/mcl_nether.es.tr @@ -0,0 +1,37 @@ +# textdomain: mcl_nether +Glowstone=Piedra luminosa +Glowstone is a naturally-glowing block which is home to the Nether.=Glowstone es un bloque que brilla de forma natural y que lo alberga el Nether. +Nether Quartz Ore=Mena de cuarzo +Nether quartz ore is an ore containing nether quartz. It is commonly found around netherrack in the Nether.=La mena de cuarzo es un mineral que contiene cuarzo inferior. Se encuentra comúnmente alrededor del tramo inferior en el Nether. +Netherrack=Netherrack +Netherrack is a stone-like block home to the Nether. Starting a fire on this block will create an eternal fire.=Netherrack es un bloque de piedra que alberga el Nether. Comenzar un incendio en este bloque creará un fuego eterno. +Magma Block=Bloque de magma +Magma blocks are hot solid blocks which hurt anyone standing on it, unless they have fire resistance. Starting a fire on this block will create an eternal fire.=Los bloques de magma son bloques sólidos y calientes que lastiman a cualquiera que esté parado sobre él, a menos que tengan resistencia al fuego. Comenzar un incendio en este bloque creará un fuego eterno. +Soul Sand=Arena de almas +Soul sand is a block from the Nether. One can only slowly walk on soul sand. The slowing effect is amplified when the soul sand is on top of ice, packed ice or a slime block.=La arena del alma está a una cuadra del Nether. Uno solo puede caminar lentamente sobre la arena del alma. El efecto de desaceleración se amplifica cuando la arena del alma está encima del hielo, hielo empaquetado o un bloque de limo. +Nether Brick Block=Ladrillos del Nether +Red Nether Brick Block=Ladrillos del Nether rojos +Nether Wart Block=Bloque de verrugas del Nether +A nether wart block is a purely decorative block made from nether wart.=Un bloque de verruga inferior es un bloque puramente decorativo hecho de verruga inferior. +Block of Quartz=Bloque de cuarzo +Chiseled Quartz Block=Cuarzo cincelado +Pillar Quartz Block=Pilar de cuarzo +Smooth Quartz=Cuarzo liso +Glowstone Dust=Polvo de piedra luminosa +Glowstone dust is the dust which comes out of broken glowstones. It is mainly used in crafting.=El polvo de piedra luminosa es el polvo que sale de las piedras luminiscentes rotas. Se utiliza principalmente en la elaboración. +Nether Quartz=Infracuarzo +Nether quartz is a versatile crafting ingredient.=El cuarzo abisal es un ingrediente de elaboración versátil. +Nether Brick=Ladrillos del Nether +Nether bricks are the main crafting ingredient for crafting nether brick blocks and nether fences.=Los ladrillos abisales son el ingrediente principal para la elaboración de bloques de ladrillo y cercas inferiores. +Nether Lava Source=Fuente de lava del Nether +Flowing Nether Lava=Fuente de lava fluida del Nether +@1 stood too long on a magma block.=@1 permaneció demasiado tiempo sobre un bloque de magma. +Premature Nether Wart (Stage 1)=Verruga del Nether prematura (Etapa 1) +A premature nether wart has just recently been planted on soul sand. Nether wart slowly grows on soul sand in 4 stages (the second and third stages look identical). Although nether wart is home to the Nether, it grows in any dimension.=Recientemente se ha plantado una verruga inferior prematura en la arena del alma. La verruga abisal crece lentamente en la arena del alma en 4 etapas (la segunda y la tercera etapa son idénticas). Aunque la verruga inferior es el hogar del Nether, crece en cualquier dimensión. +Premature Nether Wart (Stage 2)=Verruga del Nether prematura (Etapa 2) +Premature Nether Wart (Stage 3)=Verruga del Nether prematura (Etapa 3) +Mature Nether Wart=Verruga del Nether madura +The mature nether wart is a plant from the Nether and reached its full size and won't grow any further. It is ready to be harvested for its items.=La verruga inferior madura es una planta del Nether y alcanzó su tamaño completo y no crecerá más. Está listo para ser cosechado por sus artículos. +Nether Wart=Verruga del Nether +Nether warts are plants home to the Nether. They can be planted on soul sand and grow in 4 stages.=Las verrugas abisales son plantas que albergan al abismo Se pueden plantar en la arena del alma y crecer en 4 etapas. +Place this item on soul sand to plant it and watch it grow.=Coloque este artículo en la arena del alma para plantarlo y verlo crecer. diff --git a/mods/ITEMS/mcl_ocean/locale/mcl_ocean.es.tr b/mods/ITEMS/mcl_ocean/locale/mcl_ocean.es.tr new file mode 100644 index 00000000..1e27376c --- /dev/null +++ b/mods/ITEMS/mcl_ocean/locale/mcl_ocean.es.tr @@ -0,0 +1,50 @@ +# textdomain: mcl_ocean +Sea Lantern=Linterna de mar +Sea lanterns are decorative light sources which look great underwater but can be placed anywhere.=Las linternas marinas son fuentes de luz decorativas que se ven muy bien bajo el agua pero se pueden colocar en cualquier lugar. +Prismarine=Prismarina +Prismarine is used as a building block. It slowly changes its color.=La prismarina se usa como bloque de construcción. Poco a poco cambia su color. +Prismarine Bricks=Ladrillos de prismarina +Dark Prismarine=Prismarina oscura +Prismarine Crystals=Cristales de prismatina +Prismarine Shard=Fragmento de prismatina +Dried Kelp=Algas secas +Dried Kelp Block=Bloque de algas secas +Brain Coral Block=Bloque de coral de cerebro +Brain Coral Fan=Coral de cerebro desparramado +Brain Coral=Coral de cerebro +Bubble Coral Block=Bloque de coral de burbuja +Bubble Coral Fan=Coral de burbuja desparramado +Bubble Coral=Coral de burbuja +Fire Coral Block=Bloque de coral de fuego +Fire Coral Fan=Coral de fuego desparramado +Fire Coral=Coral de fuego +Horn Coral Block=Bloque de coral de cuerno +Horn Coral Fan=Coral de cuerno desparramado +Horn Coral=Coral de cuerno +Tube Coral Block=Bloque de coral de tubo +Tube Coral Fan=Coral de tubo desparramado +Tube Coral=Coral de tubo +Dead Brain Coral Block=Bloque de coral muerto +Dead Brain Coral Fan=Coral desparramado +Dead Brain Coral=Coral de cerebro muerto +Dead Bubble Coral Block=Bloque de coral de burbuja muerto +Dead Bubble Coral Fan=Coral de burbuja desparramado +Dead Bubble Coral=Coral de burbuja muerto +Dead Fire Coral Block=Bloque de coral de fuego muerto +Dead Fire Coral Fan=Coral de fuego desparramado +Dead Fire Coral=Coral de fuego muerto +Dead Horn Coral Block=Bloque de coral de cuerno muerto +Dead Horn Coral Fan=Coral de cuerno desparramado +Dead Horn Coral=Coral de cuerno muerto +Dead Tube Coral Block=Bloque de coral de tubo muerto +Dead Tube Coral Fan=Coral de tubo desparramado +Dead Tube Coral=Coral de tubo muerto +Seagrass=Hierba marina +Kelp=Alga +Kelp grows inside water on top of dirt, sand or gravel.=Las algas crecen dentro del agua sobre tierra, arena o grava. +Coral blocks live in the oceans and need a water source next to them to survive. Without water, they die off.=Los bloques de coral viven en los océanos y necesitan una fuente de agua junto a ellos para sobrevivir. Sin agua, mueren. +Corals grow on top of coral blocks and need to be inside a water source to survive. Without water, it will die off, as well as the coral block below.=Los corales crecen sobre bloques de coral y necesitan estar dentro de una fuente de agua para sobrevivir. Sin agua, morirá, al igual que el bloque de coral que se encuentra debajo. +Corals fans grow on top of coral blocks and need to be inside a water source to survive. Without water, it will die off, as well as the coral block below.=Los fanáticos de los corales crecen encima de los bloques de coral y necesitan estar dentro de una fuente de agua para sobrevivir. Sin agua, morirá, al igual que el bloque de coral que se encuentra debajo. +Seagrass grows inside water on top of dirt, sand or gravel.=La hierba marina crece dentro del agua sobre tierra, arena o grava. +A decorative block that serves as a great furnace fuel.=Un bloque decorativo que sirve como un gran combustible de horno. +Dried kelp is a food item.=Las algas secas son un alimento. diff --git a/mods/ITEMS/mcl_portals/locale/mcl_portals.es.tr b/mods/ITEMS/mcl_portals/locale/mcl_portals.es.tr new file mode 100644 index 00000000..9636f69c --- /dev/null +++ b/mods/ITEMS/mcl_portals/locale/mcl_portals.es.tr @@ -0,0 +1,16 @@ +# textdomain: mcl_portals +End Portal=Portal del End +An End portal teleports creatures and objects to the mysterious End dimension (and back!).=Un portal final teletransporta criaturas y objetos a la misteriosa dimensión final (¡y viceversa!). +Hop into the portal to teleport. Entering an End portal in the Overworld teleports you to a fixed position in the End dimension and creates a 5×5 obsidian platform at your destination. End portals in the End will lead back to your spawn point in the Overworld.=Salta al portal para teletransportarte. Entrar en un portal final en el Overworld te teletransporta a una posición fija en la dimensión final y crea una plataforma de obsidiana 5 × 5 en tu destino. Los portales finales en el final lo llevarán de regreso a su punto de generación en el mundo terrenal +End Portal Frame=Marco de portal del End +End portal frames are used in the construction of End portals. Each block has a socket for an eye of ender.=Los marcos del portal final se utilizan en la construcción de portales finales. Cada bloque tiene un zócalo para un ojo de ender. +NOTE: The End dimension is currently incomplete and might change in future versions.=NOTA: El portal del end está actualmente incompleto y puede cambiar en futuras versiones. +To create an End portal, you need 12 end portal frames and 12 eyes of ender. The end portal frames have to be arranged around a horizontal 3×3 area with each block facing inward. Any other arrangement will fail.=Para crear un portal final, necesita 12 marcos de portal final y 12 ojos de ender. Los marcos del portal final deben estar dispuestos alrededor de un área horizontal de 3 × 3 con cada bloque mirando hacia adentro. Cualquier otro arreglo fallará. +Place an eye of ender into each block. The end portal appears in the middle after placing the final eye.=Coloque un ojo de ender en cada bloque. El portal final aparece en el medio después de colocar el ojo final. +End Portal Frame with Eye of Ender=Marco de portal del End con ojo de ender +Nether Portal=Portal del Nether +A Nether portal teleports creatures and objects to the hot and dangerous Nether dimension (and back!). Enter at your own risk!=Un portal Nether teletransporta criaturas y objetos a la dimensión Nether ardiente y peligrosa (¡y viceversa!). ¡Entra bajo tu propio riesgo! +Stand in the portal for a moment to activate the teleportation. Entering a Nether portal for the first time will also create a new portal in the other dimension. If a Nether portal has been built in the Nether, it will lead to the Overworld. A Nether portal is destroyed if the any of the obsidian which surrounds it is destroyed, or if it was caught in an explosion.=SPárate en el portal por un momento para activar la teletransportación. Entrar en un portal Nether por primera vez también creará un nuevo portal en la otra dimensión. Si se ha construido un portal Nether en Nether, conducirá al Overworld. Un portal abisal se destruye si se destruye cualquiera de las obsidianas que lo rodean, o si quedó atrapado en una explosión. +Obsidian is also used as the frame of Nether portals.=La obsidiana también se usa como marco de portal del End. +To open a Nether portal, place an upright frame of obsidian with a width of 4 blocks and a height of 5 blocks, leaving only air in the center. After placing this frame, light a fire in the obsidian frame. Nether portals only work in the Overworld and the Nether.=Para abrir un portal Nether, coloque un marco vertical de obsidiana con un ancho de 4 bloques y una altura de 5 bloques, dejando solo aire en el centro. Después de colocar este marco, enciende un fuego en el marco de obsidiana. Los portales de Nether solo funcionan en Overworld y Nether. +Once placed, an eye of ender can not be taken back.=Una vez colocado, un ojo de ender no puede ser retirado. diff --git a/mods/ITEMS/mcl_potions/locale/mcl_potions.es.tr b/mods/ITEMS/mcl_potions/locale/mcl_potions.es.tr new file mode 100644 index 00000000..82f38bb6 --- /dev/null +++ b/mods/ITEMS/mcl_potions/locale/mcl_potions.es.tr @@ -0,0 +1,23 @@ +# textdomain: mcl_potions +Put this item in an item frame for decoration. It's useless otherwise.=Pon este artículo en un marco de artículo para la decoración. +Fermented Spider Eye=Ojo de araña fermentado +Glass Bottle=Frasco de cristal +A glass bottle is used as a container for liquids and can be used to collect water directly.=El frasco de cristal se usa como recipiente para líquidos y se puede usar para recoger agua directamente. +To collect water, it on a cauldron with water (which removes a level of water) or any water source (which removes no water).=Para recoger agua, colóquela en un caldero con agua (que elimina un nivel de agua) o cualquier fuente de agua (que no elimine agua). +Water Bottle=Frasco de cristal con agua +Water bottles can be used to fill cauldrons. Drinking water has no effect.=Las botellas de agua se pueden usar para llenar calderos. El agua potable no tiene efecto. +Rightclick to drink. Rightclick a cauldron to pour the water into the cauldron.=Haga clic derecho para beber. Haga clic derecho en un caldero para verter el agua en el caldero. +River Water Bottle=Frasco de cristal con agua de rio +River water bottles can be used to fill cauldrons. Drinking it has no effect.=Las botellas de agua de río se pueden usar para llenar calderos. Beberlo no tiene ningún efecto. +Awkward Potion=Poción incomoda +This potion has an awkward taste and is used for brewing more potions. Drinking it has no effect.=Esta poción tiene un sabor extraño y se usa para preparar más pociones. Beberlo no tiene ningún efecto. +Mundane Potion=Poción Mundana +This potion has a clean taste and is used for brewing more potions. Drinking it has no effect.=Esta poción tiene un sabor limpio y se usa para preparar más pociones. Beberlo no tiene ningún efecto. +Thick Potion=Poción densa +This potion has a bitter taste and is used for brewing more potions. Drinking it has no effect.=Esta poción tiene un sabor amargo y se usa para preparar más pociones. Beberlo no tiene ningún efecto. +Glistering Melon=Rodaja de sandía reluciente +This shiny melon is full of tiny gold nuggets and would be nice in an item frame. It isn't edible and not useful for anything else.=Esta sandía brillante está llena de pequeñas pepitas de oro y sería bueno en un marco de artículo. No es comestible y no es útil para nada más. +Dragon's Breath=Aliento de dragón +Use the “Place” key to drink it.=Use la tecla "Colocar" para beberlo. +Use the “Place” key to drink. Place this item on a cauldron to pour the water into the cauldron.=Use la tecla "Acción" para beber. Coloque este artículo en un caldero para verter el agua en el caldero. +Use the “Place” key to drink. Place this item on a cauldron to pour the river water into the cauldron.=Use la tecla "Acción" para beber. Coloque este artículo en un caldero para verter el agua de río en el caldero. diff --git a/mods/ITEMS/mcl_signs/locale/mcl_signs.es.tr b/mods/ITEMS/mcl_signs/locale/mcl_signs.es.tr new file mode 100644 index 00000000..d67e2da0 --- /dev/null +++ b/mods/ITEMS/mcl_signs/locale/mcl_signs.es.tr @@ -0,0 +1,8 @@ +# textdomain: mcl_signs +Sign=Firmar +Signs can be written and come in two variants: Wall sign and sign on a sign post. Signs can be placed on the top and the sides of other blocks, but not below them.=Los letreros se pueden escribir y vienen en dos variantes: letrero de muro y letrero en un poste de letrero. Los letreros se pueden colocar en la parte superior y en los costados de otros bloques, pero no debajo de ellos. +After placing the sign, you can write something on it. You have 4 lines of text with up to 15 characters for each line; anything beyond these limits is lost. Not all characters are supported. The text can not be changed once it has been written; you have to break and place the sign again.=Después de colocar el letrero, puede escribir algo en él. Tiene 4 líneas de texto con hasta 15 caracteres para cada línea; todo lo que esté más allá de estos límites se pierde. No todos los personajes son compatibles. El texto no se puede cambiar una vez que se ha escrito; tienes que romper y colocar el letrero nuevamente. +Enter sign text:=Inserte el texto del letrero: +Maximum line length: 15=Longitud máxima de línea: 15 +Maximum lines: 4=Líneas máximas: 4 +Done=Escribir cartel diff --git a/mods/ITEMS/mcl_sponges/locale/mcl_sponges.es.tr b/mods/ITEMS/mcl_sponges/locale/mcl_sponges.es.tr new file mode 100644 index 00000000..4ee44838 --- /dev/null +++ b/mods/ITEMS/mcl_sponges/locale/mcl_sponges.es.tr @@ -0,0 +1,8 @@ +# textdomain: mcl_sponges +Sponge=Esponja +Sponges are blocks which remove water around them when they are placed or come in contact with water, turning it into a wet sponge.=Las esponjas son bloques que eliminan el agua a su alrededor cuando se colocan o entran en contacto con el agua, convirtiéndola en una esponja húmeda. +Waterlogged Sponge=Esponja mojada +A waterlogged sponge can be dried in the furnace to turn it into (dry) sponge. When there's an empty bucket in the fuel slot of a furnace, the water will pour into the bucket.=Se puede secar una esponja mojada de agua en el horno para convertirla en una esponja (seca). Cuando hay un cubo vacío en la ranura de combustible de un horno, el agua se vierte en el cubo. +Riverwaterlogged Sponge=Esponja mojada con agua de rio +This is a sponge soaking wet with river water. It can be dried in the furnace to turn it into (dry) sponge. When there's an empty bucket in the fuel slot of the furnace, the river water will pour into the bucket.=Esta es una esponja mojada con agua de río. Se puede secar en el horno para convertirlo en una esponja (seca). Cuando hay un balde vacío en la ranura de combustible del horno, el agua del río se vierte en el balde. +A sponge becomes riverwaterlogged (instead of waterlogged) if it sucks up more river water than (normal) water.=Una esponja se inunda de río (en lugar de inundarse) si absorbe más agua de río que el agua (normal). diff --git a/mods/ITEMS/mcl_stairs/locale/mcl_stairs.es.tr b/mods/ITEMS/mcl_stairs/locale/mcl_stairs.es.tr new file mode 100644 index 00000000..1a17a816 --- /dev/null +++ b/mods/ITEMS/mcl_stairs/locale/mcl_stairs.es.tr @@ -0,0 +1,101 @@ +# textdomain: mcl_stairs +Stairs are useful to reach higher places by walking over them; jumping is not required. Placing stairs in a corner pattern will create corner stairs. Stairs placed on the ceiling or at the upper half of the side of a block will be placed upside down.=Las escaleras son útiles para llegar a lugares más altos al caminar sobre ellas; No se requiere saltar. Colocar escaleras en un patrón de esquina creará escaleras de esquina. Las escaleras colocadas en el techo o en la mitad superior del lado de un bloque se colocarán boca abajo. +Double @1=@1 (Doble) +Slabs are half as high as their full block counterparts and occupy either the lower or upper part of a block, depending on how it was placed. Slabs can be easily stepped on without needing to jump. When a slab is placed on another slab of the same type, a double slab is created.=Las losas son la mitad de altas que sus contrapartes de bloque completo y ocupan la parte inferior o superior de un bloque, dependiendo de cómo se haya colocado. Las losas se pueden pisar fácilmente sin necesidad de saltar. Cuando se coloca una losa en otra losa del mismo tipo, se crea una losa doble. +Upper @1=@1 (Superior) +Double slabs are full blocks which are created by placing two slabs of the same kind on each other.=Las losas dobles son bloques completos que se crean colocando dos losas del mismo tipo entre sí +Oak Wood Stairs=Escaleras de roble +Oak Wood Slab=Losa de roble +Double Oak Wood Slab=Losa doble de roble +Jungle Wood Stairs=Escaleras de la selva +Jungle Wood Slab=Losa de la selva +Double Jungle Wood Slab=Losa doble de la selva +Acacia Wood Stairs=Escaleras de acacia +Acacia Wood Slab=Losa de acacia +Double Acacia Wood Slab=Losa doble de acacia +Spruce Wood Stairs=Escaleras de abeto +Spruce Wood Slab=Losa de abeto +Double Spruce Wood Slab=Losa doble de abeto +Birch Wood Stairs=Escaleras de abedul +Birch Wood Slab=Losa de abedul +Double Birch Wood Slab=Losa doble de abedul +Dark Oak Wood Stairs=Escaleras de roble oscuro +Dark Oak Wood Slab=Losa de roble oscuro +Double Dark Oak Wood Slab=Losa doble de roble oscuro +Stone Stairs=Escaleras de piedra +Stone Slab=Losa de piedra +Double Stone Slab=Losa doble de piedra +Polished Stone Slab=Losa de piedra pulida +Double Polished Stone Slab=Losa doble de piedra pulida +Andesite Stairs=Escaleras de andesita +Andesite Slab=Losa de andesita +Double Andesite Slab=Losa doble de andesita +Granite Stairs=Escaleras de granito +Granite Slab=Losa de granito +Double Granite Slab=Losa doble de granito +Diorite Stairs=Escaleras de diorita +Diorite Slab=Losa de diorita +Double Diorite Slab=Losa doble de diorita +Cobblestone Stairs=Escaleras de roca +Cobblestone Slab=Losa de roca +Double Cobblestone Slab=Losa doble de roca +Mossy Cobblestone Slab=Losa de roca musgosa +Mossy Cobblestone Stairs=Escaleras de roca musgosa +Double Mossy Cobblestone Slab=Losa doble de roca musgosa +Brick Stairs=Escaleras de ladrillos +Brick Slab=Losa de ladrillos +Double Brick Slab=Losa doble de ladrillos +Sandstone Stairs=Escaleras de arenisca +Sandstone Slab=Losa de arenisca +Double Sandstone Slab=Losa doble de arenisca +Smooth Sandstone Stairs=Escaleras de arenisca lisa +Smooth Sandstone Slab=Losa de arenisca lisa +Double Smooth Sandstone Slab=Losa doble de arenisca lisa +Red Sandstone Stairs=Escaleras de arenisca roja +Red Sandstone Slab=Losa de arenisca roja +Double Red Sandstone Slab=Losa doble de arenisca roja +Smooth Red Sandstone Stairs=Escaleras de arenisca roja lisa +Smooth Red Sandstone Slab=Losa de arenisca roja lisa +Double Smooth Red Sandstone Slab=Losa doble de arenisca roja lisa +Stone Bricks Stairs=Escaleras de ladrillos de piedra +Stone Bricks Slab=Losa de ladrillos de piedra +Double Stone Bricks Slab=Losa doble de ladrillos de piedra +Quartz Stairs=Escaleras de cuarzo +Quartz Slab=Losa de cuarzo +Double Quartz Slab=Losa doble de cuarzo +Smooth Quartz Stairs=Escaleras de cuarzo liso +Smooth Quartz Slab=Losa de cuarzo liso +Double Smooth Quartz Slab=Losa doble de cuarzo liso +Nether Brick Stairs=Escaleras de ladrillos del Nether +Nether Brick Slab=Losa de ladrillos del Nether +Double Nether Brick Slab=Losa doble de ladrillos del Nether +Red Nether Brick Stairs=Escaleras de ladrillos del Nether rojos +Red Nether Brick Slab=Losa de ladrillos del Nether roja +Double Red Nether Brick Slab=Losa doble de ladrillos del Nether roja +End Stone Brick Stairs=Escaleras de ladrillos de piedra del End +End Stone Brick Slab=Losa de ladrillos de piedra del End +Double End Stone Brick Slab=Losa doble de ladrillos de piedra del End +Purpur Stairs=Escaleras de púrpur +Purpur Slab=Losa de púrpur +Double Purpur Slab=Losa doble de púrpur +Prismarine Stairs=Escaleras de prismarina +Prismarine Slab=Losa de prismarina +Double Prismarine Slab=Losa doble de prismarina +Prismarine Brick Stairs=Escaleras de ladrillos de prismarina +Prismarine Brick Slab=Losa de ladrillos de prismarina +Double Prismarine Brick Slab=Losa doble de ladrillos de prismarina +Dark Prismarine Stairs=Escaleras de prismarina oscura +Dark Prismarine Slab=Losa de prismarina oscura +Double Dark Prismarine Slab=Losa doble de prismarina oscura +Polished Andesite Slab=Losa de andesita pulida +Double Polished Andesite Slab=Losa doble de andesita pulida +Polished Andesite Stairs=Escaleras de andesita pulida +Polished Granite Slab=Losa de granito pulido +Double Polished Granite Slab=Losa doble de granito pulido +Polished Granite Stairs=Escaleras de granito pulido +Polished Diorite Slab=Losa de diorita pulida +Double Polished Diorite Slab=Losa doble de diorita pulida +Polished Diorite Stairs=Escaleras de diorita pulida +Mossy Stone Brick Stairs=Escaleras de ladrillos de piedra musgosos +Mossy Stone Brick Slab=Losa de ladrillos de piedra musgosos +Double Mossy Stone Brick Slab=Losa de ladrillo de piedra doble musgo diff --git a/mods/ITEMS/mcl_throwing/locale/mcl_throwing.es.tr b/mods/ITEMS/mcl_throwing/locale/mcl_throwing.es.tr new file mode 100644 index 00000000..35d0bbd6 --- /dev/null +++ b/mods/ITEMS/mcl_throwing/locale/mcl_throwing.es.tr @@ -0,0 +1,9 @@ +# textdomain: mcl_throwing +@1 used the ender pearl too often.=@1 usó la perla de ender con demasiada frecuencia. +Use the punch key to throw.=Usa la tecla de golpe para lanzar. +Snowball=Bola de nieve +Snowballs can be thrown or launched from a dispenser for fun. Hitting something with a snowball does nothing.=Las bolas de nieve se pueden lanzar o lanzar desde un dispensador por diversión. Golpear algo con una bola de nieve no hace nada. +Egg=Huevo +Eggs can be thrown or launched from a dispenser and breaks on impact. There is a small chance that 1 or even 4 chicks will pop out of the egg.=Los huevos pueden ser arrojados o lanzados desde un dispensador y se rompen al impactar. Hay una pequeña posibilidad de que 1 o incluso 4 pollitos salgan del huevo. +Ender Pearl=Perla de ender +An ender pearl is an item which can be used for teleportation at the cost of health. It can be thrown and teleport the thrower to its impact location when it hits a solid block or a plant. Each teleportation hurts the user by 5 hit points.=Una perla ender es un artículo que se puede usar para teletransportarse a costa de la salud. Se puede lanzar y teletransportar al lanzador a su ubicación de impacto cuando golpea un bloque sólido o una planta. Cada teletransportación perjudica al usuario por 5 puntos de daño. diff --git a/mods/ITEMS/mcl_tnt/locale/mcl_tnt.es.tr b/mods/ITEMS/mcl_tnt/locale/mcl_tnt.es.tr new file mode 100644 index 00000000..12e1bced --- /dev/null +++ b/mods/ITEMS/mcl_tnt/locale/mcl_tnt.es.tr @@ -0,0 +1,5 @@ +# textdomain: mcl_tnt +@1 was caught in an explosion.=@1 wurde Opfer einer Explosion. +TNT=Dinamita +An explosive device. When it explodes, it will hurt living beings and destroy blocks around it. TNT has an explosion radius of @1. With a small chance, blocks may drop as an item (as if being mined) rather than being destroyed. TNT can be ignited by tools, explosions, fire, lava and redstone signals.=Un artefacto explosivo. Cuando explota, dañará a los seres vivos y destruirá los bloques a su alrededor. La dinamita tiene un radio de explosión de @1. Con una pequeña posibilidad, los bloques pueden caer como un elemento (como si se extrajera) en lugar de ser destruidos. La dinamita puede encenderse con herramientas, explosiones, fuego, lava y señales de piedra roja. +Place the TNT and ignite it with one of the methods above. Quickly get in safe distance. The TNT will start to be affected by gravity and explodes in 4 seconds.=Coloque el dinamita y enciéndalo con uno de los métodos anteriores. Aléjese rápidamente a una distancia segura. La dinamita comenzará a verse afectada por la gravedad y explotará en 4 segundos. \ No newline at end of file diff --git a/mods/ITEMS/mcl_tools/locale/mcl_tools.es.tr b/mods/ITEMS/mcl_tools/locale/mcl_tools.es.tr new file mode 100644 index 00000000..40b1d709 --- /dev/null +++ b/mods/ITEMS/mcl_tools/locale/mcl_tools.es.tr @@ -0,0 +1,32 @@ +# textdomain: mcl_tools +You use your bare hand whenever you are not wielding any item. With your hand you can mine most blocks, but this is the slowest method and only the weakest blocks will yield their useful drop. The hand also deals minor damage by punching. Using the hand is often a last resort, as proper mining tools and weapons are much better.=Utiliza tu mano desnuda siempre que no estés empuñando ningún objeto. Con tu mano puedes extraer la mayoría de los bloques, pero este es el método más lento y solo los bloques más débiles producirán su caída útil. La mano también causa daños menores al golpear. El uso de la mano es a menudo un último recurso, ya que las herramientas y armas de minería adecuadas son mucho mejores. +When you are wielding an item which is not a mining tool or a weapon, it will behave as if it were the hand when you start mining or punching.=Cuando empuñas un objeto que no es una herramienta de minería o un arma, se comportará como si fuera la mano cuando comiences a minar o golpear. +In Creative Mode, the hand is able to break all blocks instantly.=En el modo creativo, la mano puede romper todos los bloques al instante. +Pickaxes are mining tools to mine hard blocks, such as stone. A pickaxe can also be used as weapon, but it is rather inefficient.=Los picos son herramientas de minería para extraer bloques duros, como la piedra. Un pico también se puede usar como arma, pero es bastante ineficiente. +An axe is your tool of choice to cut down trees, wood-based blocks and other blocks. Axes deal a lot of damage as well, but they are rather slow.=Un hacha es su herramienta de elección para cortar árboles, bloques a base de madera y otros bloques. Las hachas también causan mucho daño, pero son bastante lentas. +Swords are great in melee combat, as they are fast, deal high damage and can endure countless battles. Swords can also be used to cut down a few particular blocks, such as cobwebs.=Las espadas son excelentes en el combate cuerpo a cuerpo, ya que son rápidas, infligen mucho daño y pueden soportar innumerables batallas. Las espadas también se pueden usar para cortar algunos bloques en particular, como telarañas. +Shovels are tools for digging coarse blocks, such as dirt, sand and gravel. They can also be used to turn grass blocks to grass paths. Shovels can be used as weapons, but they are very weak.=Las palas son herramientas para cavar bloques gruesos, como tierra, arena y grava. También se pueden usar para convertir bloques de hierba en senderos de hierba. Las palas pueden usarse como armas, pero son muy débiles. +To turn a grass block into a grass path, hold the shovel in your hand, then use (rightclick) the top or side of a grass block. This only works when there's air above the grass block.=Para convertir un bloque de hierba en un camino de hierba, sostenga la pala con la mano y luego use (clic derecho) en la parte superior o lateral de un bloque de hierba. Esto solo funciona cuando hay aire sobre el bloque de hierba. +Shears are tools to shear sheep and to mine a few block types. Shears are a special mining tool and can be used to obtain the original item from grass, leaves and similar blocks that require cutting.=Las tijeras son herramientas para esquilar ovejas y extraer algunos tipos de bloques. Las tijeras son una herramienta de minería especial y se pueden usar para obtener el artículo original de hierba, hojas y bloques similares que requieren corte. +To shear sheep or carve faceless pumpkins, use the “place” key on them. Faces can only be carved at the side of faceless pumpkins. Mining works as usual, but the drops are different for a few blocks.=Para esquilar ovejas o tallar calabazas sin rostro, use la tecla "colocar" en ellas. Las caras solo se pueden tallar al lado de las calabazas sin rostro. La minería funciona como de costumbre, pero las gotas son diferentes para algunos bloques. +Wooden Pickaxe=Pico de madera +Stone Pickaxe=Pico de piedra +Iron Pickaxe=Pico de hierro +Golden Pickaxe=Pico de oro +Diamond Pickaxe=Pico de diamante +Wooden Shovel=Pala de madera +Stone Shovel=Pala de piedra +Iron Shovel=Pala de hierro +Golden Shovel=Pala de oro +Diamond Shovel=Pala de diamante +Wooden Axe=Hacha de madera +Stone Axe=Hacha de piedra +Iron Axe=Hacha de hierro +Golden Axe=Hacha de oro +Diamond Axe=Hacha de diamante +Wooden Sword=Espada de madera +Stone Sword=Espada de piedra +Iron Sword=Espada de hierro +Golden Sword=Espada de oro +Diamond Sword=Espada de diamante +Shears=Tijeras diff --git a/mods/ITEMS/mcl_torches/locale/mcl_torches.es.tr b/mods/ITEMS/mcl_torches/locale/mcl_torches.es.tr new file mode 100644 index 00000000..18a81f5c --- /dev/null +++ b/mods/ITEMS/mcl_torches/locale/mcl_torches.es.tr @@ -0,0 +1,3 @@ +# textdomain: mcl_torches +Torch=Antorcha +Torches are light sources which can be placed at the side or on the top of most blocks.=Las antorchas son fuentes de luz que se pueden colocar a un lado, en el suelo, o en la parte superior de la mayoría de los bloques. \ No newline at end of file diff --git a/mods/ITEMS/mcl_walls/locale/mcl_walls.es.tr b/mods/ITEMS/mcl_walls/locale/mcl_walls.es.tr new file mode 100644 index 00000000..3fb3d6ad --- /dev/null +++ b/mods/ITEMS/mcl_walls/locale/mcl_walls.es.tr @@ -0,0 +1,16 @@ +# textdomain: mcl_walls +A piece of wall. It cannot be jumped over with a simple jump. When multiple of these are placed to next to each other, they will automatically build a nice wall structure.=Un pedazo de pared. No se puede saltar con un simple salto. Cuando varios de estos se colocan uno al lado del otro, construirán automáticamente una bonita estructura de pared. +Cobblestone Wall=Muro de roca +Mossy Cobblestone Wall=Muro de roca musgosa +Andesite Wall=Muro de andesita +Granite Wall=Muro de granito +Diorite Wall=Muro de diorita +Brick Wall=Muro de ladrillos +Sandstone Wall=Muro de arenisca +Red Sandstone Wall=Muro de arenisca roja +Stone Brick Wall=Muro de ladrillos de piedra +Mossy Stone Brick Wall=Muro de ladrillos de piedra musgosos +Prismarine Wall=Muro de prismarina +End Stone Brick Wall=Muro de ladrillos de piedra del End +Nether Brick Wall=Muro de ladrillos del Nether +Red Nether Brick Wall=Muro de ladrillos del Nether rojos diff --git a/mods/ITEMS/mcl_wool/locale/mcl_wool.es.tr b/mods/ITEMS/mcl_wool/locale/mcl_wool.es.tr new file mode 100644 index 00000000..fa9253ee --- /dev/null +++ b/mods/ITEMS/mcl_wool/locale/mcl_wool.es.tr @@ -0,0 +1,37 @@ +# textdomain: mcl_wool +Wool=Lana +Carpet=Alfombra +White Wool=Lana blanca +White Carpet=Alfombra blanca +Grey Wool=Lana gris +Grey Carpet=Alfombra gris +Light Grey Wool=Lana gris claro +Light Grey Carpet=Alfombra gris claro +Black Wool=Lana negra +Black Carpet=Alfombra negra +Red Wool=Lana roja +Red Carpet=Alfombra roja +Yellow Wool=Lana amarilla +Yellow Carpet=Alfombra amarilla +Green Wool=Lana verde +Green Carpet=Alfombra verde +Cyan Wool=Lana cian +Cyan Carpet=Alfombra cian +Blue Wool=Lana azul +Blue Carpet=Alfombra azul +Magenta Wool=Lana magenta +Magenta Carpet=Alfombra magenta +Orange Wool=Lana naranja +Orange Carpet=Alfombra naranja +Purple Wool=Lana morada +Purple Carpet=Alfombra morada +Brown Wool=Lana marrón +Brown Carpet=Alfombra marrón +Pink Wool=Lana rosa +Pink Carpet=Alfombra rosa +Lime Wool=Lana verde lima +Lime Carpet=Alfombra verde lima +Light Blue Wool=Lana azul claro +Light Blue Carpet=Alfombra azul claro +Wool is a decorative block which comes in many different colors.=WLa lana es un bloque decorativo que viene en muchos colores diferentes. +Carpets are thin floor covers which come in many different colors.=Las alfombras son finas cubiertas para el suelo que vienen en muchos colores diferentes. diff --git a/mods/ITEMS/mclx_core/locale/mclx_core.es.tr b/mods/ITEMS/mclx_core/locale/mclx_core.es.tr new file mode 100644 index 00000000..0f50a08c --- /dev/null +++ b/mods/ITEMS/mclx_core/locale/mclx_core.es.tr @@ -0,0 +1,5 @@ +# textdomain: mclx_core +River Water Source=Fuente de agua de río +River water has the same properties as water, but has a reduced flowing distance and is not renewable.=El agua del río tiene las mismas propiedades que el agua, pero tiene una distancia de flujo reducida y no es renovable. +River Water=Agua de rio +Flowing River Water=Agua de río que fluye diff --git a/mods/ITEMS/mclx_fences/locale/mclx_fences.es.tr b/mods/ITEMS/mclx_fences/locale/mclx_fences.es.tr new file mode 100644 index 00000000..4531435b --- /dev/null +++ b/mods/ITEMS/mclx_fences/locale/mclx_fences.es.tr @@ -0,0 +1,4 @@ +# textdomain: mclx_fences +Red Nether Brick Fence=Valla de ladrillo abisal rojo +Red Nether Brick Fence Gate=Puerta de ladrillo abisal rojo +Nether Brick Fence Gate=Puerta de ladrillo abisal diff --git a/mods/ITEMS/mclx_stairs/locale/mclx_stairs.es.tr b/mods/ITEMS/mclx_stairs/locale/mclx_stairs.es.tr new file mode 100644 index 00000000..302ae7f2 --- /dev/null +++ b/mods/ITEMS/mclx_stairs/locale/mclx_stairs.es.tr @@ -0,0 +1,82 @@ +# textdomain: mclx_stairs +Oak Bark Stairs=Escaleras de roble +Oak Bark Slab=Losa de roble +Double Oak Bark Slab=Losa doble de roble +Acacia Bark Stairs=Escaleras de acacia +Acacia Bark Slab=Losa de acacia +Double Acacia Bark Slab=Losa doble de acacia +Spruce Bark Stairs=Escaleras de abeto +Spruce Bark Slab=Losa de abeto +Double Spruce Bark Slab=Losa doble de abeto +Birch Bark Stairs=Escaleras de abedul +Birch Bark Slab=Losa de abedul +Double Birch Bark Slab=Losa doble de abedul +Jungle Bark Stairs=Escaleras de jungla +Jungle Bark Slab=Losa de jungla +Double Jungle Bark Slab=Losa doble de jungla +Dark Oak Bark Stairs=Escaleras de roble oscuro +Dark Oak Bark Slab=Losa de roble oscuro +Double Dark Oak Bark Slab=Losa doble de roble oscuro +Lapis Lazuli Slab=Losa de lapislázuli +Double Lapis Lazuli Slab=Losa doble de lapislázuli +Lapis Lazuli Stairs=Escaleras de lapislázuli +Slab of Gold=Losa de oro +Double Slab of Gold=Losa doble de oro +Stairs of Gold=Escaleras de oro +Slab of Iron=Losa de hierro +Double Slab of Iron=Losa doble de hierro +Stairs of Iron=Escaleras de hierro +Cracked Stone Brick Stairs=Escaleras de ladrillo de piedra agrietada +Cracked Stone Brick Slab=Losa de ladrillo de piedra agrietada +Double Cracked Stone Brick Slab=Losa doble de ladrillo de piedra agrietada +White Concrete Stairs=Escaleras de hormigón blanco +White Concrete Slab=Losa de hormigón blanco +Double White Concrete Slab=Losa doble de hormigón blanco +Grey Concrete Stairs=Escaleras de hormigón gris +Grey Concrete Slab=Losas de hormigón gris +Double Grey Concrete Slab=Losa doble de hormigón gris +Light Grey Concrete Stairs=Escaleras de hormigón gris claro +Light Grey Concrete Slab=Losa de hormigón gris claro +Double Light Grey Concrete Slab=Losa doble de hormigón gris claro +Black Concrete Stairs=Escaleras de hormigón negro +Black Concrete Slab=Losa de hormigón negro +Double Black Concrete Slab=Losa doble de hormigón negro +Red Concrete Stairs=Escaleras de hormigón rojo +Red Concrete Slab=Losa de hormigón rojo +Double Red Concrete Slab=Losa doble de hormigón rojo +Yellow Concrete Stairs=Escaleras de hormigón amarillo +Yellow Concrete Slab=Losa de hormigón amarillo +Double Yellow Concrete Slab=Losa doble de hormigón amarillo +Green Concrete Stairs=Escaleras de hormigón verde +Green Concrete Slab=Losa de hormigón verde +Double Green Concrete Slab=Losa doble de hormigón verde +Cyan Concrete Stairs=Escaleras de hormigón cian +Cyan Concrete Slab=Losa de hormigón cian +Double Cyan Concrete Slab=Losa doble de hormigón cian +Blue Concrete Stairs=Escaleras de hormigón azul +Blue Concrete Slab=Losa de hormigón azul +Double Blue Concrete Slab=Losa doble de hormigón azul +Magenta Concrete Stairs=Escaleras de hormigón magenta +Magenta Concrete Slab=Losa de hormigón magenta +Double Magenta Concrete Slab=Losa doble de hormigón magenta +Orange Concrete Stairs=Escaleras de hormigón naranja +Orange Concrete Slab=Losa de hormigón naranja +Double Orange Concrete Slab=Losa doble de hormigón naranja +Purple Concrete Stairs=Escaleras de hormigón morado +Purple Concrete Slab=Losa de hormigón morado +Double Purple Concrete Slab=Losa doble de hormigón morado +Brown Concrete Stairs=Escaleras de hormigón marrón +Brown Concrete Slab=Losa de hormigón marrón +Double Brown Concrete Slab=Losa doble de hormigón marrón +Pink Concrete Stairs=Escaleras de hormigón rosa +Pink Concrete Slab=Losa de hormigón rosa +Double Pink Concrete Slab=Losa doble de hormigón rosa +Lime Concrete Stairs=Escaleras de hormigón verde lima +Lime Concrete Slab=Losa de hormigón verde lima +Double Lime Concrete Slab=Losa doble de hormigón verde lima +Light Blue Concrete Stairs=Escaleras de hormigón azul claro +Light Blue Concrete Slab=Losa de hormigón azul claro +Double Light Blue Concrete Slab=Losa doble de hormigón azul claro +Concrete Slab=Losa de hormigón +Double Concrete Slab=Losa doble de hormigón +Concrete Stairs=Escaleras de hormigón diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor/locale/3d_armor.es.tr b/mods/ITEMS/minetest-3d_armor/3d_armor/locale/3d_armor.es.tr new file mode 100644 index 00000000..6606d2ff --- /dev/null +++ b/mods/ITEMS/minetest-3d_armor/3d_armor/locale/3d_armor.es.tr @@ -0,0 +1,23 @@ +# textdomain: 3d_armor +This is a piece of equippable armor which reduces the amount of damage you receive.=Dies ist ein Teil einer tragbaren Rüstung, die die Menge an Schaden, den Sie erleiden, reduziert. +To equip it, put it on the corresponding armor slot in your inventory menu.=Um es zu tragen, legen Sie es in den passenden Rüstungsplatz in ihrem Inventarmenü. +Leather Cap=Sombrero de cuero +Iron Helmet=Casco de hierro +Golden Helmet=Casco de oro +Diamond Helmet=Casco de diamante +Chain Helmet=Casco de cota de mallas +Leather Tunic=Túnica de cuero +Iron Chestplate=Peto de hierro +Golden Chestplate=Peto de oro +Diamond Chestplate=Peto de diamante +Chain Chestplate=Peto de cota de mallas +Leather Pants=Pantalones de cuero +Iron Leggings=Grebas de hierro +Golden Leggings=Grebas de oro +Diamond Leggings=Grebas de diamante +Chain Leggings=Grebas de cota de mallas +Leather Boots=Botas de cuero +Iron Boots=Botas de hierro +Golden Boots=Botas de oro +Diamond Boots=Botas de diamante +Chain Boots=Botas de cota de mallas diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor_stand/locale/3d_armor_stand.es.tr b/mods/ITEMS/minetest-3d_armor/3d_armor_stand/locale/3d_armor_stand.es.tr new file mode 100644 index 00000000..510a7398 --- /dev/null +++ b/mods/ITEMS/minetest-3d_armor/3d_armor_stand/locale/3d_armor_stand.es.tr @@ -0,0 +1,4 @@ +# textdomain: 3d_armor_stand +Armor Stand=Soporte para armadura +An armor stand is a decorative object which can display different pieces of armor. Anything which players can wear as armor can also be put on an armor stand.=Un soporte para armadura es un objeto decorativo que puede mostrar diferentes piezas de armadura. Cualquier cosa que los jugadores puedan usar como armadura también se puede poner en un soporte para armadura. +Just place an armor item on the armor stand. To take the top piece of armor from the armor stand, select your hand and use the place key on the armor stand.=Simplemente coloca un objeto de armadura en el soporte para armadura. Para tomar la pieza superior de armadura del soporte para armadura, seleccione su mano y use la tecla de posición en el soporte para armadura. diff --git a/mods/ITEMS/screwdriver/locale/screwdriver.es.tr b/mods/ITEMS/screwdriver/locale/screwdriver.es.tr new file mode 100644 index 00000000..f2c778ce --- /dev/null +++ b/mods/ITEMS/screwdriver/locale/screwdriver.es.tr @@ -0,0 +1,2 @@ +# textdomain: screwdriver +Screwdriver=Destornillador diff --git a/mods/ITEMS/xpanes/locale/xpanes.es.tr b/mods/ITEMS/xpanes/locale/xpanes.es.tr new file mode 100644 index 00000000..c90c6472 --- /dev/null +++ b/mods/ITEMS/xpanes/locale/xpanes.es.tr @@ -0,0 +1,23 @@ +# textdomain: xpanes +Glass panes are thin layers of glass which neatly connect to their neighbors as you build them.=Los paneles de cristal son capas delgadas de vidrio que se conectan perfectamente a otros cristales a medida que los construye. +Stained glass panes are thin layers of stained glass which neatly connect to their neighbors as you build them. They come in many different colors.=Los paneles de cristal son capas delgadas de vidrio que se conectan perfectamente a otros cristales a medida que los construye. Vienen en muchos colores diferentes. +Iron Bars=Barrotes de hierro +Iron bars neatly connect to their neighbors as you build them.=Los barrotes de hierro se conectan perfectamente a sus vecinos a medida que los construyes. +Glass Pane=Panel de cristal +Stained Glass Pane=Panel de cristal tintado de manchado +Red Stained Glass Pane=Panel de cristal tintado de rojo +Green Stained Glass Pane=Panel de cristal tintado de verde +Blue Stained Glass Pane=Panel de cristal tintado de azul +Light Blue Stained Glass Pane=Panel de cristal tintado de azul claro +Black Stained Glass Pane=Panel de cristal tintado de negro +White Stained Glass Pane=Panel de cristal tintado de blanco +Yellow Stained Glass Pane=Panel de cristal tintado de amarillo +Brown Stained Glass Pane=Panel de cristal tintado de marrón +Orange Stained Glass Pane=Panel de cristal tintado de naranja +Pink Stained Glass Pane=Panel de cristal tintado de rosa +Grey Stained Glass Pane=Panel de cristal tintado de gris +Lime Stained Glass Pane=Panel de cristal tintado de verde lima +Light Grey Stained Glass Pane=Panel de cristal tintado de gris claro +Magenta Stained Glass Pane=Panel de cristal tintado de magenta +Purple Stained Glass Pane=Panel de cristal tintado de morado +Cyan Stained Glass Pane=Panel de cristal tintado de cian diff --git a/mods/MAPGEN/mcl_structures/locale/mcl_structures.es.tr b/mods/MAPGEN/mcl_structures/locale/mcl_structures.es.tr new file mode 100644 index 00000000..ae909b9c --- /dev/null +++ b/mods/MAPGEN/mcl_structures/locale/mcl_structures.es.tr @@ -0,0 +1,7 @@ +# textdomain: mcl_structures +Generate a pre-defined structure near your position.=Genere una estructura predefinida cerca de su posición. +Structure placed.=Estructura colocada. +Village built. WARNING: Villages are experimental and might have bugs.=Pueblo construido. ADVERTENCIA: los pueblos son experimentales y pueden tener errores. +Error: No structure type given. Please use “/spawnstruct ”.=Error: no se especifica ningún tipo de estructura. Utilice "/spawnstruct ". +Error: Unknown structure type. Please use “/spawnstruct ”.=Error: tipo de estructura desconocido. Utilice "/spawnstruct ". +Use /help spawnstruct to see a list of avaiable types.=Utiliza "/help spawnstruct" para ver una lista de los tipos disponibles. diff --git a/mods/MISC/mcl_commands/locale/mcl_commands.es.tr b/mods/MISC/mcl_commands/locale/mcl_commands.es.tr new file mode 100644 index 00000000..91b21eb9 --- /dev/null +++ b/mods/MISC/mcl_commands/locale/mcl_commands.es.tr @@ -0,0 +1,23 @@ +# textdomain: mcl_commands +Players can't be killed right now, damage has been disabled.=Los jugadores no pueden ser asesinados en este momento, el daño ha sido desactivado. +Player @1 does not exist.=El jugador @1 no existe. +You are already dead=Ya estas muerto +@1 is already dead=@1 ya esta muerto +@1 committed suicide.=@1 se suicidó. +@1 was killed by @2.=@1 fue asesinado por @2. +[]=[] +Kill player or yourself=Mata al jugador o a ti mismo +Can use /say=Puedes usar /say += +Send a message to every player=Envía un mensaje a todos los jugadores +Invalid usage, see /help=Uso no válido, (Revisa el comando "/help say") +,, =,, +Set node at given position=Establecer nodo en la posición dada +Invalid node=Nodo no válido +@1 spawned.=@1 generado. +Invalid parameters (see /help setblock)=Parámetros no válidos (Revisa el comando "/help setblock") +List bans=Lista de prohibiciones +Ban list: @1=Lista de baneados: @1 +Show who is logged on=Mostrar quién ha iniciado sesión +Displays the world seed=Muestra la semilla del mundo +Only peaceful mobs allowed!=¡Solo se permiten animales pacíficos! diff --git a/mods/MISC/mcl_privs/locale/mcl_privs.es.tr b/mods/MISC/mcl_privs/locale/mcl_privs.es.tr new file mode 100644 index 00000000..66d2a60b --- /dev/null +++ b/mods/MISC/mcl_privs/locale/mcl_privs.es.tr @@ -0,0 +1,2 @@ +# textdomain: mcl_privs +Can place and use advanced blocks like mob spawners, command blocks and barriers.=Puede colocar y usar bloques avanzados como generadores de animales, bloques de comando y barreras. diff --git a/mods/MISC/mcl_wip/locale/mcl_wip.es.tr b/mods/MISC/mcl_wip/locale/mcl_wip.es.tr new file mode 100644 index 00000000..aa0d40eb --- /dev/null +++ b/mods/MISC/mcl_wip/locale/mcl_wip.es.tr @@ -0,0 +1,3 @@ +# textdomain: mcl_wip +(WIP)=(En progreso) +(Temporary)=(Temporal) diff --git a/mods/PLAYER/mcl_hunger/locale/mcl_hunger.es.tr b/mods/PLAYER/mcl_hunger/locale/mcl_hunger.es.tr new file mode 100644 index 00000000..5ecd770e --- /dev/null +++ b/mods/PLAYER/mcl_hunger/locale/mcl_hunger.es.tr @@ -0,0 +1,8 @@ +# textdomain: mcl_hunger +@1 succumbed to the poison.=@1 sucumbió al veneno. +Food=Comida +Saturation=Saturación +%s: %.1f/%d=%s: %.1f +Exhaust.=Cansado. +%s: %d/%d=%s: %d/%d +@1 starved to death.=%1 ha muerto de hambre. diff --git a/mods/PLAYER/mcl_playerplus/locale/mcl_playerplus.es.tr b/mods/PLAYER/mcl_playerplus/locale/mcl_playerplus.es.tr new file mode 100644 index 00000000..ef7705bc --- /dev/null +++ b/mods/PLAYER/mcl_playerplus/locale/mcl_playerplus.es.tr @@ -0,0 +1,3 @@ +# textdomain: mcl_playerplus +@1 suffocated to death.=@1 ahogado hasta la muerte. +@1 was prickled to death by a cactus.=@1 fue herido de muerte por un cactus. diff --git a/mods/PLAYER/mcl_skins/locale/mcl_skins.es.tr b/mods/PLAYER/mcl_skins/locale/mcl_skins.es.tr new file mode 100644 index 00000000..dcd5c843 --- /dev/null +++ b/mods/PLAYER/mcl_skins/locale/mcl_skins.es.tr @@ -0,0 +1,13 @@ +# textdomain: mcl_skins +[] []=[] [] +Select player skin of yourself or another player=Selecciona el skin tuyo o de otro jugador +Insufficient or wrong parameters=Parámetros insuficientes o incorrectos +Player @1 not online!=¡El jugador @1 no está en línea! +You need the “server” privilege to change the skin of other players!=¡Necesitas el privilegio de "servidor" para cambiar el aspecto de otros jugadores! +Invalid skin number! Valid numbers: 0 to @1=¡Número de piel no válido! Números válidos: 0 a @1 +Your skin has been set to: @1=Su skin se ha configurado a: @1 +Your skin has been set to: @1 (@2)=Su skin se ha configurado a: @1 (@2) +Skin of @1 set to: @2 (@3)=El skin de @1 se ha configurado a: @2 (@3) +Select player skin:=Selecciona el skin del jugador: +@1 (@2)=@1 (@2) +Name: @1=Nombre: @1 diff --git a/mods/PLAYER/mcl_spawn/locale/mcl_spawn.es.tr b/mods/PLAYER/mcl_spawn/locale/mcl_spawn.es.tr new file mode 100644 index 00000000..d6de52f9 --- /dev/null +++ b/mods/PLAYER/mcl_spawn/locale/mcl_spawn.es.tr @@ -0,0 +1,4 @@ +# textdomain: mcl_spawn +New respawn position set!=¡Nueva posición de reaparición establecida! +Respawn position cleared!=¡Posición de reaparición eliminada! +Your spawn bed was missing or blocked.=Su cama ha sido destruida o estaba bloqueada. From 3836f1b7e99acd4d2a03e9467630ed99f2430c66 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 4 Feb 2020 22:06:31 +0100 Subject: [PATCH 498/737] Update hudbars mod to 2.1.0 --- mods/HUD/hudbars/API.md | 18 ++- mods/HUD/hudbars/README.md | 4 +- mods/HUD/hudbars/changelog.txt | 92 ------------ mods/HUD/hudbars/default_settings.lua | 2 - mods/HUD/hudbars/depends.txt | 1 - mods/HUD/hudbars/description.txt | 1 - mods/HUD/hudbars/init.lua | 135 ++++++++++++------ mods/HUD/hudbars/locale/de.txt | 3 - mods/HUD/hudbars/locale/hudbars.de.tr | 4 + mods/HUD/hudbars/locale/hudbars.es.tr | 4 + .../hudbars/locale/{it.txt => hudbars.it.tr} | 7 +- mods/HUD/hudbars/locale/hudbars.ms.tr | 4 + .../hudbars/locale/{nl.txt => hudbars.nl.tr} | 7 +- .../hudbars/locale/{es.txt => hudbars.pt.tr} | 7 +- mods/HUD/hudbars/locale/hudbars.ru.tr | 4 + mods/HUD/hudbars/locale/hudbars.tr.tr | 4 + mods/HUD/hudbars/locale/pt.txt | 5 - mods/HUD/hudbars/locale/template.txt | 7 +- mods/HUD/hudbars/locale/tr.txt | 3 - mods/HUD/hudbars/mod.conf | 1 + mods/HUD/hudbars/settingtypes.txt | 2 +- 21 files changed, 145 insertions(+), 170 deletions(-) delete mode 100644 mods/HUD/hudbars/changelog.txt delete mode 100644 mods/HUD/hudbars/depends.txt delete mode 100644 mods/HUD/hudbars/description.txt delete mode 100644 mods/HUD/hudbars/locale/de.txt create mode 100644 mods/HUD/hudbars/locale/hudbars.de.tr create mode 100644 mods/HUD/hudbars/locale/hudbars.es.tr rename mods/HUD/hudbars/locale/{it.txt => hudbars.it.tr} (52%) create mode 100644 mods/HUD/hudbars/locale/hudbars.ms.tr rename mods/HUD/hudbars/locale/{nl.txt => hudbars.nl.tr} (52%) rename mods/HUD/hudbars/locale/{es.txt => hudbars.pt.tr} (59%) create mode 100644 mods/HUD/hudbars/locale/hudbars.ru.tr create mode 100644 mods/HUD/hudbars/locale/hudbars.tr.tr delete mode 100644 mods/HUD/hudbars/locale/pt.txt delete mode 100644 mods/HUD/hudbars/locale/tr.txt diff --git a/mods/HUD/hudbars/API.md b/mods/HUD/hudbars/API.md index a53344cc..ca6144ad 100644 --- a/mods/HUD/hudbars/API.md +++ b/mods/HUD/hudbars/API.md @@ -45,7 +45,7 @@ a vertical gradient. ### Icon A 16×16 image shown left of the HUD bar. This is optional. -### `hb.register_hudbar(identifier, text_color, label, textures, default_start_value, default_start_max, default_start_hidden, format_string)` +### `hb.register_hudbar(identifier, text_color, label, textures, default_start_value, default_start_max, default_start_hidden, format_string, format_string_config)` This function registers a new custom HUD bar definition to the HUD bars mod, so it can be later used to be displayed, changed, hidden and unhidden on a per-player basis. Note this does not yet display the HUD bar. @@ -66,7 +66,21 @@ for more information. * `default_start_value`: If this HUD bar is added to a player, and no initial value is specified, this value will be used as initial current value * `default_max_value`: If this HUD bar is added to a player, and no initial maximum value is specified, this value will be used as initial maximum value * `default_start_hidden`: The HUD bar will be initially start hidden by default when added to a player. Use `hb.unhide_hudbar` to unhide it. -* `format_string`: This is optional; You can specify an alternative format string display the final text on the HUD bar. The default format string is “`%s: %d/%d`” (in this order: Label, current value, maximum value). See also the Lua documentation of `string.format`. +* `format_string`: Optional; You can specify an alternative format string to use for the final text on the HUD bar. The default format string is “`@1: @2/@3`” (The “@” numbers are placeholders that have a meaning in this order: @1 = Label, @2 = current value, @3 = maximum value). Do *not* use minetest.translator on this string, the string will be translated by `hudbars`, but you still must put this string into the translation catalogue file. +* `format_string_config`: Required if `format_string` is set. This allows to change which parameters to use in the format string. It's a table with these fields: + * `textdomain`: Text domain of the format string, used by `minetest.translate` + * `order`: Table that contains the order of the placeholders. It's also possible to remove placeholders. Default order: `{ "label", "value", "max_value" }` + * `format_value`: Format string to apply when displaying `value`. Syntax is same as in `string.format`. Default: `"%d"` + * `format_max_value`: Same as `format_value` but is applied to `max_value` + +#### Example +Example (mostly) from `hbarmor` mod: + +``` +hb.register_hudbar("armor", 0xFFFFFF, minetest.translator("hbarmor", "Armor"), { icon = "hbarmor_icon.png", bgicon = "hbarmor_bgicon.png", bar = "hbarmor_bar.png" }, 0, 100, hbarmor.autohide, N("@1: @2%"), { order = { "label", "value" }, textdomain = "hbarmor" } ) +``` + +Displays an armor HUD bar with a label of the form „Armor: 53%“. (`N` is a dummy function that returns its argument, used to make the string visible for translator scripts.) #### Return value Always `nil`. diff --git a/mods/HUD/hudbars/README.md b/mods/HUD/hudbars/README.md index a3a1a96c..afe7f448 100644 --- a/mods/HUD/hudbars/README.md +++ b/mods/HUD/hudbars/README.md @@ -11,7 +11,7 @@ this mod will place them accordingly. position should be displayed correctly on every screen size. ## Current version -The current version is 1.10.0. +The current version is 2.1.0. This software uses [semantic versioning](http://semver.org), as defined by version 2.0.0 of the SemVer standard. @@ -37,6 +37,8 @@ Translations: * Turkish: admicos * Dutch: kingoscargames * Italian: Hamlet +* Malay: muhdnurhidayat +* Russian: Imk This program is free software. It comes without any warranty, to the extent permitted by applicable law. You can redistribute it diff --git a/mods/HUD/hudbars/changelog.txt b/mods/HUD/hudbars/changelog.txt deleted file mode 100644 index e2e6b560..00000000 --- a/mods/HUD/hudbars/changelog.txt +++ /dev/null @@ -1,92 +0,0 @@ -Note: This software uses semantic versioning, -as of version 2.0.0 of the standard . - -0.1.0 ------ -- Initial release, forked from mod “Better HUD” [hud]. - -0.2.0 ------ -- Add API documentation - -0.3.0 ------ -- Rename main table from “hud” to “hb” (affects function names!) -- Arguments 3-4 of hb.change_hudbar can be nil for values which should not change -- Add proper function hb.init_hudbar, replaces odd call to hud.hudtables[identifier].add_all -- Update API documentation and fix mistakes -- Use “hudbars.conf” instead of “hud.conf” - -0.4.0 ------ -- New function: hb.get_hudbar_state to get information about the state of an active HUD bar, such as values, whether it is hidden, etc. -- hb.change_hudbar has been optimized to call hud_change fewer times, which is hopefully good for networking -- Rename hb.register_hudbar parameter “start_hide” to “start_hidden” -- start_hidden parameter now finally works -- Do not affect other HUD flags (crosshair, wielditem, etc.) when starting mod -- Show error message when trying to call hb.init_hudbar or hb.change_hudbar with bad values -- Update documentation -- Lots of refactoring -- Health and breath bar now use API - -1.0.0 ------ -- Add new parameter start_hidden to hb.init_hudbar, specified whether HUD bar is hidden on start -- Copy-editing of API.md and README.txt -- Internal: Fix add_all weirdness - -1.0.1 ------ -- Fix race condition causing crash at start of server - -1.0.2 ------ -- Fix other HUD elements disappearing for rejoining players -- Remove pointless delays for initializing the HUD for new or rejoining players - -1.0.3 ------ -- Adjust default HUD bars position for Minetest 0.4.12 - -1.1.0 ------ -- Add boolean minetest.conf setting support (hudbars_autohide_breathbar) to control whether the breath bar is automatically hidden when full (default: yes) - -1.2.0 ------ -- New setting: hudbars_sorting. You can now manually sort all the HUD bars. Useful if you don't like automatic order -- New setting: hudbars_bar_type. You now can change the appearance of the HUD bars. -- New HUD bar types, slightly experimental: Classic statbars and modern [hud]-style statbars -- New experimental/unfinished setting: hudbars_alignment_pattern: You can now make the HUD bars stack vertically instead of the current zig-zag pattern. Note you probably need to change source code to productively use this feature -- Various position-related HUD bar settings (see README.txt) -- Remove hudbars.conf support and hudbars.conf.example (was never officially supported anyways) - -1.2.1 ------ -- Fix crash when enable_damage is changed in mid-game - -1.3.0 ------ -- Make all settings avaialbe in Minetest's advanced settings menu -- Fix HUD bars overlap when both hudbars_tick and hudbars_vmargin were set -- Use Markdown syntax in readme file -- Fix some factual mistakes in readme file -- Add metadata: mod.conf, description.txt, screenshot.png - -1.4.0 ------ -- Allow to change HUD bar images and label after it has been registered -- Minor API.md correction - -1.4.1 ------ -- Fix bug in hb.change_hudbar being a no-op if new_value and new_max value are nil - -1.5.0 ------ -- Portuguese translation by BrunoMine - -1.5.1 ------ -- Fix critical bug: Mod does not work with both intllib and mod security enabled -- Update screenshot to use new 3:2 aspect ratio diff --git a/mods/HUD/hudbars/default_settings.lua b/mods/HUD/hudbars/default_settings.lua index 91d3c67e..0bd267d0 100644 --- a/mods/HUD/hudbars/default_settings.lua +++ b/mods/HUD/hudbars/default_settings.lua @@ -1,5 +1,4 @@ -- (Hardcoded) default settings --- Some of these settings have been modified for MCL2. hb.settings.max_bar_length = 160 hb.settings.statbar_length = 20 @@ -53,4 +52,3 @@ else hb.settings.sorting_reverse[tonumber(v)] = k end end - diff --git a/mods/HUD/hudbars/depends.txt b/mods/HUD/hudbars/depends.txt deleted file mode 100644 index 77e8d97c..00000000 --- a/mods/HUD/hudbars/depends.txt +++ /dev/null @@ -1 +0,0 @@ -intllib? diff --git a/mods/HUD/hudbars/description.txt b/mods/HUD/hudbars/description.txt deleted file mode 100644 index 9e10e894..00000000 --- a/mods/HUD/hudbars/description.txt +++ /dev/null @@ -1 +0,0 @@ -Replaces the health and breath symbols in the HUD by “progress bars” and shows exact values. Other mods can add more progress bars for custom player stats. diff --git a/mods/HUD/hudbars/init.lua b/mods/HUD/hudbars/init.lua index fc43f85b..0f919602 100644 --- a/mods/HUD/hudbars/init.lua +++ b/mods/HUD/hudbars/init.lua @@ -1,13 +1,5 @@ -local S -if minetest.global_exists("intllib") then - if intllib.make_gettext_pair then - S = intllib.make_gettext_pair() - else - S = intllib.Getter() - end -else - S = function ( s ) return s end -end +local S = minetest.get_translator("hudbars") +local N = function(s) return s end hb = {} @@ -59,6 +51,35 @@ local function player_exists(player) return player ~= nil and player:is_player() end +local function make_label(format_string, format_string_config, label, start_value, max_value) + local params = {} + local order = format_string_config.order + for o=1, #order do + if order[o] == "label" then + table.insert(params, label) + elseif order[o] == "value" then + if format_string_config.format_value then + table.insert(params, string.format(format_string_config.format_value, start_value)) + else + table.insert(params, start_value) + end + elseif order[o] == "max_value" then + if format_string_config.format_max_value then + table.insert(params, string.format(format_string_config.format_max_value, max_value)) + else + table.insert(params, max_value) + end + end + end + local ret + if format_string_config.textdomain then + ret = minetest.translate(format_string_config.textdomain, format_string, unpack(params)) + else + ret = S(format_string, unpack(params)) + end + return ret +end + -- Table which contains all players with active default HUD bars (only for internal use) hb.players = {} @@ -98,7 +119,7 @@ function hb.get_hudbar_position_index(identifier) end end -function hb.register_hudbar(identifier, text_color, label, textures, default_start_value, default_start_max, default_start_hidden, format_string) +function hb.register_hudbar(identifier, text_color, label, textures, default_start_value, default_start_max, default_start_hidden, format_string, format_string_config) minetest.log("action", "hb.register_hudbar: "..tostring(identifier)) local hudtable = {} local pos, offset @@ -132,7 +153,19 @@ function hb.register_hudbar(identifier, text_color, label, textures, default_sta end end if format_string == nil then - format_string = S("%s: %d/%d") + format_string = N("@1: @2/@3") + end + if format_string_config == nil then + format_string_config = {} + end + if format_string_config.order == nil then + format_string_config.order = { "label", "value", "max_value" } + end + if format_string_config.format_value == nil then + format_string_config.format_value = "%d" + end + if format_string_config.format_max_value == nil then + format_string_config.format_max_value = "%d" end hudtable.add_all = function(player, hudtable, start_value, start_max, start_hidden) @@ -157,7 +190,7 @@ function hb.register_hudbar(identifier, text_color, label, textures, default_sta iconscale = { x=1, y=1 } barnumber = hb.value_to_barlength(start_value, start_max) bgiconnumber = hb.settings.statbar_length - text = string.format(format_string, label, start_value, start_max) + text = make_label(format_string, format_string_config, label, start_value, start_max) end if hb.settings.bar_type == "progress_bar" then ids.bg = player:hud_add({ @@ -195,6 +228,12 @@ function hb.register_hudbar(identifier, text_color, label, textures, default_sta local bar_image, bar_size if hb.settings.bar_type == "progress_bar" then bar_image = textures.bar + -- NOTE: Intentionally set to nil. For some reason, on some systems, + -- the progress bar is displaced when the bar_size is set explicitly here. + -- On the other hand, setting this to nil is deprecated in MT 5.0.0 due to + -- a debug log warning, but nothing is explained in lua_api.txt. + -- This section is a potential bug magnet, please watch with care! + -- The size of the bar image is expected to be exactly 2×16 pixels. bar_size = nil elseif hb.settings.bar_type == "statbar_classic" or hb.settings.bar_type == "statbar_modern" then bar_image = textures.icon @@ -247,6 +286,7 @@ function hb.register_hudbar(identifier, text_color, label, textures, default_sta hudtable.identifier = identifier hudtable.format_string = format_string + hudtable.format_string_config = format_string_config hudtable.label = label hudtable.hudids = {} hudtable.hudstate = {} @@ -307,7 +347,7 @@ function hb.change_hudbar(player, identifier, new_value, new_max_value, new_icon end if new_label ~= nil then hudtable.label = new_label - local new_text = string.format(hudtable.format_string, new_label, hudtable.hudstate[name].value, hudtable.hudstate[name].max) + local new_text = make_label(hudtable.format_string, hudtable.format_string_config, new_label, hudtable.hudstate[name].value, hudtable.hudstate[name].max) player:hud_change(hudtable.hudids[name].text, "text", new_text) end if new_text_color ~= nil then @@ -351,7 +391,7 @@ function hb.change_hudbar(player, identifier, new_value, new_max_value, new_icon end if hb.settings.bar_type == "progress_bar" then - local new_text = string.format(hudtable.format_string, hudtable.label, new_value, new_max_value) + local new_text = make_label(hudtable.format_string, hudtable.format_string_config, hudtable.label, new_value, new_max_value) if new_text ~= hudtable.hudstate[name].text then player:hud_change(hudtable.hudids[name].text, "text", new_text) hudtable.hudstate[name].text = new_text @@ -367,19 +407,17 @@ function hb.hide_hudbar(player, identifier) local name = player:get_player_name() local hudtable = hb.get_hudtable(identifier) if hudtable == nil then return false end - if(hudtable.hudstate[name].hidden == false) then - if hb.settings.bar_type == "progress_bar" then - if hudtable.hudids[name].icon ~= nil then - player:hud_change(hudtable.hudids[name].icon, "scale", {x=0,y=0}) - end - player:hud_change(hudtable.hudids[name].bg, "scale", {x=0,y=0}) - player:hud_change(hudtable.hudids[name].text, "text", "") - elseif hb.settings.bar_type == "statbar_modern" then - player:hud_change(hudtable.hudids[name].bg, "number", 0) + if hb.settings.bar_type == "progress_bar" then + if hudtable.hudids[name].icon ~= nil then + player:hud_change(hudtable.hudids[name].icon, "scale", {x=0,y=0}) end - player:hud_change(hudtable.hudids[name].bar, "number", 0) - hudtable.hudstate[name].hidden = true + player:hud_change(hudtable.hudids[name].bg, "scale", {x=0,y=0}) + player:hud_change(hudtable.hudids[name].text, "text", "") + elseif hb.settings.bar_type == "statbar_modern" then + player:hud_change(hudtable.hudids[name].bg, "number", 0) end + player:hud_change(hudtable.hudids[name].bar, "number", 0) + hudtable.hudstate[name].hidden = true return true end @@ -388,23 +426,21 @@ function hb.unhide_hudbar(player, identifier) local name = player:get_player_name() local hudtable = hb.get_hudtable(identifier) if hudtable == nil then return false end - if(hudtable.hudstate[name].hidden) then - local value = hudtable.hudstate[name].value - local max = hudtable.hudstate[name].max - if hb.settings.bar_type == "progress_bar" then - if hudtable.hudids[name].icon ~= nil then - player:hud_change(hudtable.hudids[name].icon, "scale", {x=1,y=1}) - end - if hudtable.hudstate[name].max ~= 0 then - player:hud_change(hudtable.hudids[name].bg, "scale", {x=1,y=1}) - end - player:hud_change(hudtable.hudids[name].text, "text", tostring(string.format(hudtable.format_string, hudtable.label, value, max))) - elseif hb.settings.bar_type == "statbar_modern" then - player:hud_change(hudtable.hudids[name].bg, "number", hb.settings.statbar_length) + local value = hudtable.hudstate[name].value + local max = hudtable.hudstate[name].max + if hb.settings.bar_type == "progress_bar" then + if hudtable.hudids[name].icon ~= nil then + player:hud_change(hudtable.hudids[name].icon, "scale", {x=1,y=1}) end - player:hud_change(hudtable.hudids[name].bar, "number", hb.value_to_barlength(value, max)) - hudtable.hudstate[name].hidden = false + if hudtable.hudstate[name].max ~= 0 then + player:hud_change(hudtable.hudids[name].bg, "scale", {x=1,y=1}) + end + player:hud_change(hudtable.hudids[name].text, "text", make_label(hudtable.format_string, hudtable.format_string_config, hudtable.label, value, max)) + elseif hb.settings.bar_type == "statbar_modern" then + player:hud_change(hudtable.hudids[name].bg, "number", hb.settings.statbar_length) end + player:hud_change(hudtable.hudids[name].bar, "number", hb.value_to_barlength(value, max)) + hudtable.hudstate[name].hidden = false return true end @@ -452,16 +488,20 @@ local function custom_hud(player) else hide = true end - hb.init_hudbar(player, "health", player:get_hp(), nil, hide) + local hp = player:get_hp() + local hp_max = player:get_properties().hp_max + hb.init_hudbar(player, "health", math.min(hp, hp_max), hp_max, hide) local breath = player:get_breath() + local breath_max = player:get_properties().breath_max local hide_breath - if breath == 11 and hb.settings.autohide_breath == true then hide_breath = true else hide_breath = false end - hb.init_hudbar(player, "breath", math.min(breath, 10), nil, hide_breath or hide) + if breath >= breath_max and hb.settings.autohide_breath == true then hide_breath = true else hide_breath = false end + hb.init_hudbar(player, "breath", math.min(breath, breath_max-1), breath_max-1, hide_breath or hide) end end local function update_health(player) - hb.change_hudbar(player, "health", player:get_hp()) + local hp_max = player:get_properties().hp_max + hb.change_hudbar(player, "health", player:get_hp(), hp_max) end -- update built-in HUD bars @@ -472,13 +512,14 @@ local function update_hud(player) hb.unhide_hudbar(player, "health") end --air + local breath_max = player:get_properties().breath_max local breath = player:get_breath() - if breath == 11 and hb.settings.autohide_breath == true then + if breath >= breath_max and hb.settings.autohide_breath == true then hb.hide_hudbar(player, "breath") else hb.unhide_hudbar(player, "breath") - hb.change_hudbar(player, "breath", math.min(breath, 10)) + hb.change_hudbar(player, "breath", math.min(breath, breath_max-1), breath_max-1) end --health update_health(player) diff --git a/mods/HUD/hudbars/locale/de.txt b/mods/HUD/hudbars/locale/de.txt deleted file mode 100644 index 578764ea..00000000 --- a/mods/HUD/hudbars/locale/de.txt +++ /dev/null @@ -1,3 +0,0 @@ -Health = Leben -Breath = Atem -%s: %d/%d = %s: %d/%d diff --git a/mods/HUD/hudbars/locale/hudbars.de.tr b/mods/HUD/hudbars/locale/hudbars.de.tr new file mode 100644 index 00000000..3d1e697c --- /dev/null +++ b/mods/HUD/hudbars/locale/hudbars.de.tr @@ -0,0 +1,4 @@ +# textdomain: hudbars +Health=Leben +Breath=Atem +@1: @2/@3=@1: @2/@3 diff --git a/mods/HUD/hudbars/locale/hudbars.es.tr b/mods/HUD/hudbars/locale/hudbars.es.tr new file mode 100644 index 00000000..bbf02795 --- /dev/null +++ b/mods/HUD/hudbars/locale/hudbars.es.tr @@ -0,0 +1,4 @@ +# textdomain: hudbars +Health=Salud +Breath=Aliento +@1: @2/@3=@1: @2/@3 diff --git a/mods/HUD/hudbars/locale/it.txt b/mods/HUD/hudbars/locale/hudbars.it.tr similarity index 52% rename from mods/HUD/hudbars/locale/it.txt rename to mods/HUD/hudbars/locale/hudbars.it.tr index 40558ac3..3ada5b66 100644 --- a/mods/HUD/hudbars/locale/it.txt +++ b/mods/HUD/hudbars/locale/hudbars.it.tr @@ -1,5 +1,6 @@ -Health = Salute -Breath = Ossigeno +# textdomain: hudbars +Health=Salute +Breath=Ossigeno # Default format string for progress bar-style HUD bars, e.g. “Health 5/20” -%s: %d/%d +@1: @2/@3=@1: @2/@3 diff --git a/mods/HUD/hudbars/locale/hudbars.ms.tr b/mods/HUD/hudbars/locale/hudbars.ms.tr new file mode 100644 index 00000000..eb811ab6 --- /dev/null +++ b/mods/HUD/hudbars/locale/hudbars.ms.tr @@ -0,0 +1,4 @@ +# textdomain: hudbars +Health=Kesihatan +Breath=Nafas +@1: @2/@3=@1: @2/@3 diff --git a/mods/HUD/hudbars/locale/nl.txt b/mods/HUD/hudbars/locale/hudbars.nl.tr similarity index 52% rename from mods/HUD/hudbars/locale/nl.txt rename to mods/HUD/hudbars/locale/hudbars.nl.tr index 33e161e0..b9c4a417 100644 --- a/mods/HUD/hudbars/locale/nl.txt +++ b/mods/HUD/hudbars/locale/hudbars.nl.tr @@ -1,5 +1,6 @@ -Health = Gezondheid -Breath = Adem +# textdomain: hudbars +Health=Gezondheid +Breath=Adem # Default format string for progress bar-style HUD bars, e.g. “Health 5/20” -%s: %d/%d +@1: @2/@3=@1: @2/@3 diff --git a/mods/HUD/hudbars/locale/es.txt b/mods/HUD/hudbars/locale/hudbars.pt.tr similarity index 59% rename from mods/HUD/hudbars/locale/es.txt rename to mods/HUD/hudbars/locale/hudbars.pt.tr index f53858dd..a818f092 100644 --- a/mods/HUD/hudbars/locale/es.txt +++ b/mods/HUD/hudbars/locale/hudbars.pt.tr @@ -1,5 +1,6 @@ -Health = Salud -Breath = Aliento +# textdomain: hudbars +Health=Saude +Breath=Folego # Formato de string padrão para progresso bar-style de barras do HUD, por exemplo “Saude 5/20” -%s: %d/%d +@1: @2/@3=@1: @2/@3 diff --git a/mods/HUD/hudbars/locale/hudbars.ru.tr b/mods/HUD/hudbars/locale/hudbars.ru.tr new file mode 100644 index 00000000..2d278e33 --- /dev/null +++ b/mods/HUD/hudbars/locale/hudbars.ru.tr @@ -0,0 +1,4 @@ +# textdomain: hudbars +Health=HP +Breath=дыхание +@1: @2/@3=@1: @2/@3 diff --git a/mods/HUD/hudbars/locale/hudbars.tr.tr b/mods/HUD/hudbars/locale/hudbars.tr.tr new file mode 100644 index 00000000..6a2ce0b5 --- /dev/null +++ b/mods/HUD/hudbars/locale/hudbars.tr.tr @@ -0,0 +1,4 @@ +# textdomain: hudbars +Health=Can +Breath=Nefes +@1: @2/@3=@1: @2/@3 diff --git a/mods/HUD/hudbars/locale/pt.txt b/mods/HUD/hudbars/locale/pt.txt deleted file mode 100644 index 2de62650..00000000 --- a/mods/HUD/hudbars/locale/pt.txt +++ /dev/null @@ -1,5 +0,0 @@ -Health = Saude -Breath = Folego - -# Formato de string padrão para progresso bar-style de barras do HUD, por exemplo “Saude 5/20” -%s: %d/%d diff --git a/mods/HUD/hudbars/locale/template.txt b/mods/HUD/hudbars/locale/template.txt index 0a26b8fe..37b05591 100644 --- a/mods/HUD/hudbars/locale/template.txt +++ b/mods/HUD/hudbars/locale/template.txt @@ -1,5 +1,6 @@ -Health -Breath +# textdomain: hudbars +Health= +Breath= # Default format string for progress bar-style HUD bars, e.g. “Health 5/20” -%s: %d/%d +@1: @2/@3= diff --git a/mods/HUD/hudbars/locale/tr.txt b/mods/HUD/hudbars/locale/tr.txt deleted file mode 100644 index b49c7a06..00000000 --- a/mods/HUD/hudbars/locale/tr.txt +++ /dev/null @@ -1,3 +0,0 @@ -Health = Can -Breath = Nefes -%s: %d/%d = %s: %d/%d diff --git a/mods/HUD/hudbars/mod.conf b/mods/HUD/hudbars/mod.conf index add28e65..5fa238a8 100644 --- a/mods/HUD/hudbars/mod.conf +++ b/mods/HUD/hudbars/mod.conf @@ -1 +1,2 @@ name = hudbars +description = Replaces the health and breath symbols in the HUD by “progress bars” and shows exact values. Other mods can add more progress bars for custom player stats. diff --git a/mods/HUD/hudbars/settingtypes.txt b/mods/HUD/hudbars/settingtypes.txt index 77c1dd09..3e4390e2 100644 --- a/mods/HUD/hudbars/settingtypes.txt +++ b/mods/HUD/hudbars/settingtypes.txt @@ -110,7 +110,7 @@ hudbars_start_statbar_offset_right_x (Right HUD statbar x offset) int 25 hudbars_start_statbar_offset_right_y (Right HUD statbar y offset) int -90 # The vertical distance between two HUD bars, in pixels. -hudbars_vmargin (Vertical distance between HUD bars) int 28 0 +hudbars_vmargin (Vertical distance between HUD bars) int 24 0 [Performance] # The of seconds which need to pass before the server updates the default HUD bars From 377bf31c5d30f064d8e570d1fd7612fe878892d5 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Wed, 5 Feb 2020 02:40:07 +0100 Subject: [PATCH 499/737] Fix crash when killing player with dispenser arrow --- mods/HUD/mcl_death_messages/init.lua | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/mods/HUD/mcl_death_messages/init.lua b/mods/HUD/mcl_death_messages/init.lua index ce87118d..7bfef748 100644 --- a/mods/HUD/mcl_death_messages/init.lua +++ b/mods/HUD/mcl_death_messages/init.lua @@ -198,12 +198,13 @@ minetest.register_on_dieplayer(function(player, reason) if hitter:get_luaentity()._shooter then shooter = hitter:get_luaentity()._shooter end - local s_ent = shooter:get_luaentity() + local is_mob = false + local s_ent = shooter and shooter:get_luaentity() if shooter == nil then msg = dmsg("arrow", name) elseif shooter:is_player() then msg = dmsg("arrow_name", name, shooter:get_player_name()) - elseif s_ent._cmi_is_mob then + elseif s_ent and s_ent._cmi_is_mob then if s_ent.nametag ~= "" then msg = dmsg("arrow_name", name, shooter:get_player_name()) elseif s_ent.name == "mobs_mc:skeleton" then From 2ef5f0232dbc6099c46a0f44e2e8ee48612558f5 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Wed, 5 Feb 2020 03:11:07 +0100 Subject: [PATCH 500/737] Update minecart German translation --- mods/ENTITIES/mcl_minecarts/init.lua | 2 +- mods/ENTITIES/mcl_minecarts/locale/mcl_minecarts.de.tr | 6 ++++++ mods/ENTITIES/mcl_minecarts/locale/template.txt | 6 ++++++ 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/mods/ENTITIES/mcl_minecarts/init.lua b/mods/ENTITIES/mcl_minecarts/init.lua index 03553481..136366dc 100644 --- a/mods/ENTITIES/mcl_minecarts/init.lua +++ b/mods/ENTITIES/mcl_minecarts/init.lua @@ -745,7 +745,7 @@ register_minecart( "mcl_minecarts:tnt_minecart", S("Minecart with TNT"), S("A minecart with TNT is an explosive vehicle that travels on rail."), - S("Place it on rails. Punch it to move it. The TNT is ignited with a slint and steel or when the minecart is on an powered activator rail.") .. "\n" .. + S("Place it on rails. Punch it to move it. The TNT is ignited with a flint and steel or when the minecart is on an powered activator rail.") .. "\n" .. S("To obtain the minecart and TNT, punch them while holding down the sneak key. You can't do this if the TNT was ignited."), "mcl_minecarts_minecart_block.b3d", { diff --git a/mods/ENTITIES/mcl_minecarts/locale/mcl_minecarts.de.tr b/mods/ENTITIES/mcl_minecarts/locale/mcl_minecarts.de.tr index 65df678e..b3a9e219 100644 --- a/mods/ENTITIES/mcl_minecarts/locale/mcl_minecarts.de.tr +++ b/mods/ENTITIES/mcl_minecarts/locale/mcl_minecarts.de.tr @@ -4,6 +4,12 @@ Minecarts can be used for a quick transportion on rails.=Loren können für eine Minecarts only ride on rails and always follow the tracks. At a T-junction with no straight way ahead, they turn left. The speed is affected by the rail type.=Loren fahren nur auf Schienen und bleiben immer auf der Strecke. An einer Einmündung ohne einem Weg nach vorne fahren sie nach links. Die Geschwindigkeit hängt vom Schienentyp ab. You can place the minecart on rails. Right-click it to enter it. Punch it to get it moving.=Sie können die Lore auf Schienen platzieren. Rechtsklicken, um einzusteigen. To obtain the minecart, punch it while holding down the sneak key.=Um die Lore aufzusammeln, schlagen Sie sie, während Sie die Schleichen-Taste gedrückt halten. +A minecart with TNT is an explosive vehicle that travels on rail.=Eine Lore mit TNT ist ein explosives Fahrzeug, das auf Schienen fährt. +Place it on rails. Punch it to move it. The TNT is ignited with a flint and steel or when the minecart is on an powered activator rail.=Auf Schienen platzieren. Zuschlagen zum Bewegen. Das TNT wird mit einem Feuerzeug angezündet, oder, wenn die Lore sich auf einer bestromten Aktivierungsschiene befindet. +To obtain the minecart and TNT, punch them while holding down the sneak key. You can't do this if the TNT was ignited.=Um die Lore und das TNT zu erhalten, schlagen Sie sie, während Sie die Schleichtaste drücken. Das ist nicht möglich, wenn das TNT bereits gezündet wurde. +A minecart with furnace is a vehicle that travels on rails. It can propel itself with fuel.=Eine Lore mit Ofen ist ein Fahrzeug, das auf Rädern fährt. Sie kann mit Brennstoff angetrieben werden. +Place it on rails. If you give it some coal, the furnace will start burning for a long time and the minecart will be able to move itself. Punch it to get it moving.=Auf Schienen platzieren. Wird Kohle eingefügt, wird der Ofen für eine lange Zeit brennen und die Lore wird fähig sein, sich selbst anzutreiben. Zuschlagen, um die Bewegung einzuläuten. +To obtain the minecart and furnace, punch them while holding down the sneak key.=Um die Lore und den Ofen zu erhalten, schlagen Sie zu, während Sie die Schleichtaste drücken. Minecart with Chest=Lore mit Truhe Minecart with Furnace=Lore mit Ofen Minecart with Command Block=Lore mit Befehlsblock diff --git a/mods/ENTITIES/mcl_minecarts/locale/template.txt b/mods/ENTITIES/mcl_minecarts/locale/template.txt index 74bd547b..367bf109 100644 --- a/mods/ENTITIES/mcl_minecarts/locale/template.txt +++ b/mods/ENTITIES/mcl_minecarts/locale/template.txt @@ -4,6 +4,12 @@ Minecarts can be used for a quick transportion on rails.= Minecarts only ride on rails and always follow the tracks. At a T-junction with no straight way ahead, they turn left. The speed is affected by the rail type.= You can place the minecart on rails. Right-click it to enter it. Punch it to get it moving.= To obtain the minecart, punch it while holding down the sneak key.= +A minecart with TNT is an explosive vehicle that travels on rail.= +Place it on rails. Punch it to move it. The TNT is ignited with a flint and steel or when the minecart is on an powered activator rail.= +To obtain the minecart and TNT, punch them while holding down the sneak key. You can't do this if the TNT was ignited.= +A minecart with furnace is a vehicle that travels on rails. It can propel itself with fuel.= +Place it on rails. If you give it some coal, the furnace will start burning for a long time and the minecart will be able to move itself. Punch it to get it moving.= +To obtain the minecart and furnace, punch them while holding down the sneak key.= Minecart with Chest= Minecart with Furnace= Minecart with Command Block= From bed0849bb096cf1af4030148e132b441831fa2a2 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Wed, 5 Feb 2020 03:11:32 +0100 Subject: [PATCH 501/737] Add setting: mcl_tnt_griefing --- mods/ENTITIES/mcl_mobs/api.lua | 2 ++ mods/ITEMS/mcl_beds/functions.lua | 2 +- mods/ITEMS/mcl_tnt/init.lua | 18 ++++++++++++++++-- mods/ITEMS/mcl_tnt/locale/mcl_tnt.de.tr | 1 + mods/ITEMS/mcl_tnt/locale/template.txt | 3 ++- settingtypes.txt | 3 +++ 6 files changed, 25 insertions(+), 4 deletions(-) diff --git a/mods/ENTITIES/mcl_mobs/api.lua b/mods/ENTITIES/mcl_mobs/api.lua index b07dd00a..153ac6ae 100644 --- a/mods/ENTITIES/mcl_mobs/api.lua +++ b/mods/ENTITIES/mcl_mobs/api.lua @@ -2179,6 +2179,7 @@ local do_states = function(self, dtime) radius = node_break_radius, damage_radius = entity_damage_radius, sound = self.sounds.explode, + is_tnt = false, }) else @@ -3740,6 +3741,7 @@ function mobs:boom(self, pos, radius) damage_radius = radius, sound = self.sounds and self.sounds.explode, explode_center = true, + is_tnt = false, }) else mobs:safe_boom(self, pos, radius) diff --git a/mods/ITEMS/mcl_beds/functions.lua b/mods/ITEMS/mcl_beds/functions.lua index 30c4004a..f62e68e6 100644 --- a/mods/ITEMS/mcl_beds/functions.lua +++ b/mods/ITEMS/mcl_beds/functions.lua @@ -308,7 +308,7 @@ function mcl_beds.on_rightclick(pos, player, is_top) -- Bed goes BOOM in the Nether or End. minetest.remove_node(pos) if minetest.get_modpath("mcl_tnt") then - tnt.boom(pos, {radius = 4, damage_radius = 4}) + tnt.boom(pos, {radius = 4, damage_radius = 4, is_tnt = false}) end return end diff --git a/mods/ITEMS/mcl_tnt/init.lua b/mods/ITEMS/mcl_tnt/init.lua index 62f3710a..a2758d0a 100644 --- a/mods/ITEMS/mcl_tnt/init.lua +++ b/mods/ITEMS/mcl_tnt/init.lua @@ -1,4 +1,5 @@ local S = minetest.get_translator("mcl_tnt") +local tnt_griefing = minetest.settings:get_bool("mcl_tnt_griefing", true) local mod_death_messages = minetest.get_modpath("mcl_death_messages") @@ -78,6 +79,14 @@ if minetest.get_modpath("mesecons") then rules = mesecon.rules.alldirs, }} end + +local longdesc +if tnt_griefing then + longdesc = S("An explosive device. When it explodes, it will hurt living beings and destroy blocks around it. TNT has an explosion radius of @1. With a small chance, blocks may drop as an item (as if being mined) rather than being destroyed. TNT can be ignited by tools, explosions, fire, lava and redstone signals.", TNT_RANGE) +else + longdesc = S("An explosive device. When it explodes, it will hurt living beings. TNT has an explosion radius of @1. TNT can be ignited by tools, explosions, fire, lava and redstone signals.", TNT_RANGE) +end + minetest.register_node("mcl_tnt:tnt", { tiles = {"default_tnt_top.png", "default_tnt_bottom.png", "default_tnt_side.png", "default_tnt_side.png", @@ -87,7 +96,7 @@ minetest.register_node("mcl_tnt:tnt", { description = S("TNT"), paramtype = "light", sunlight_propagates = true, - _doc_items_longdesc = S("An explosive device. When it explodes, it will hurt living beings and destroy blocks around it. TNT has an explosion radius of @1. With a small chance, blocks may drop as an item (as if being mined) rather than being destroyed. TNT can be ignited by tools, explosions, fire, lava and redstone signals.", TNT_RANGE), + _doc_items_longdesc = longdesc, _doc_items_usagehelp = S("Place the TNT and ignite it with one of the methods above. Quickly get in safe distance. The TNT will start to be affected by gravity and explodes in 4 seconds."), groups = { dig_immediate = 3, tnt = 1, enderman_takable=1 }, mesecons = tnt_mesecons, @@ -213,6 +222,9 @@ tnt.boom = function(pos, info) else sound = info.sound end + if info.is_tnt == nil then + info.is_tnt = true + end minetest.sound_play(sound, {pos = pos,gain = 1.0,max_hear_distance = 16,}) local node = minetest.get_node(pos) if minetest.get_item_group("water") == 1 or minetest.get_item_group("lava") == 1 then @@ -230,9 +242,11 @@ tnt.boom = function(pos, info) -- TODO: Implement the real blast resistance algorithm if def and n.name ~= "air" and n.name ~= "ignore" and (def._mcl_blast_resistance == nil or def._mcl_blast_resistance < 1000) then activate_if_tnt(n.name, np, pos, 3) + if (not tnt_griefing) and info.is_tnt ~= false then + -- No-op -- Custom blast function defined by node. -- Node removal and drops must be handled manually. - if def.on_blast then + elseif def.on_blast then def.on_blast(np, 1.0) -- Default destruction handling: Remove nodes, drop items else diff --git a/mods/ITEMS/mcl_tnt/locale/mcl_tnt.de.tr b/mods/ITEMS/mcl_tnt/locale/mcl_tnt.de.tr index d2378a8a..6f85f4cf 100644 --- a/mods/ITEMS/mcl_tnt/locale/mcl_tnt.de.tr +++ b/mods/ITEMS/mcl_tnt/locale/mcl_tnt.de.tr @@ -2,4 +2,5 @@ @1 was caught in an explosion.=@1 wurde Opfer einer Explosion. TNT=TNT An explosive device. When it explodes, it will hurt living beings and destroy blocks around it. TNT has an explosion radius of @1. With a small chance, blocks may drop as an item (as if being mined) rather than being destroyed. TNT can be ignited by tools, explosions, fire, lava and redstone signals.=Ein Sprengstoff. Wenn er explodiert, wird er Lebewesen verletzen und Blöcke in der Nähe zerstören. TNT hat einen Explosionsradius von @1. Mit einer geringen Wahrscheinlichkeit werden Blöcke als Gegenstand abfallen (als ob sie abgebaut worden wären), anstatt völlig zerstört zu werden. TNT kann mit Werkzeugen, Explosionen, Feuer, Lava und Redstone-Signalen angezündet werden. +An explosive device. When it explodes, it will hurt living beings. TNT has an explosion radius of @1. TNT can be ignited by tools, explosions, fire, lava and redstone signals.=Ein Sprengstoff. Wenn er explodiert, wird er Lebewesen verletzen. TNT hat einen Explosionsradius von @1. TNT kann mit Werkzeugen, Explosionen, Feuer, Lava und Redstone-Signalen angezündet werden. Place the TNT and ignite it with one of the methods above. Quickly get in safe distance. The TNT will start to be affected by gravity and explodes in 4 seconds.=Platizeren sie das TNT und zünden Sie es mit einer der obigen Methoden an. Begeben Sie sich rasch in eine sichere Entfernung. Das TNT wird anfangen, von der Schwerkraft beeinflusst zu sein und explodiert in 4 Sekunden. diff --git a/mods/ITEMS/mcl_tnt/locale/template.txt b/mods/ITEMS/mcl_tnt/locale/template.txt index fc3ae612..c2c3c47e 100644 --- a/mods/ITEMS/mcl_tnt/locale/template.txt +++ b/mods/ITEMS/mcl_tnt/locale/template.txt @@ -1,5 +1,6 @@ # textdomain: mcl_tnt @1 was caught in an explosion.= TNT= -An explosive device. When it explodes, it will hurt living beings and destroy blocks around it. TNT has an explosion radius of @1. With a small chance, blocks may drop as an item (as if being mined) rather than being destroyed. TNT can be ignited by tools, explosions, fire, lava and redstone signals. +An explosive device. When it explodes, it will hurt living beings and destroy blocks around it. TNT has an explosion radius of @1. With a small chance, blocks may drop as an item (as if being mined) rather than being destroyed. TNT can be ignited by tools, explosions, fire, lava and redstone signals.= +An explosive device. When it explodes, it will hurt living beings. TNT has an explosion radius of @1. TNT can be ignited by tools, explosions, fire, lava and redstone signals.= Place the TNT and ignite it with one of the methods above. Quickly get in safe distance. The TNT will start to be affected by gravity and explodes in 4 seconds.= diff --git a/settingtypes.txt b/settingtypes.txt index a71c9a5c..ba2714f9 100644 --- a/settingtypes.txt +++ b/settingtypes.txt @@ -24,6 +24,9 @@ mcl_doWeatherCycle (Change weather) bool true # Note that blocks never have drops when in Creative Mode. mcl_doTileDrops (Blocks have drops) bool true +# If enabled, TNT explosions destroy blocks. +mcl_tnt_griefing (TNT destroys blocks) bool true + [Players] # If enabled, players respawn at the bed they last lay on instead of normal # spawn. From f4a06d62174bc5be4be2eb43fff8e858012079de Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Wed, 5 Feb 2020 12:45:29 +0100 Subject: [PATCH 502/737] Remove TNT node after explode --- mods/ITEMS/mcl_tnt/init.lua | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_tnt/init.lua b/mods/ITEMS/mcl_tnt/init.lua index a2758d0a..7b0adc8b 100644 --- a/mods/ITEMS/mcl_tnt/init.lua +++ b/mods/ITEMS/mcl_tnt/init.lua @@ -14,6 +14,8 @@ local function activate_if_tnt(nname, np, tnt_np, tntr) if nname == "mcl_tnt:tnt" then local e = spawn_tnt(np, nname) e:set_velocity({x=(np.x - tnt_np.x)*5+(tntr / 4), y=(np.y - tnt_np.y)*5+(tntr / 3), z=(np.z - tnt_np.z)*5+(tntr / 4)}) + minetest.remove_node(np) + minetest.check_for_falling(np) end end @@ -46,7 +48,7 @@ tnt = {} tnt.ignite = function(pos) minetest.remove_node(pos) spawn_tnt(pos, "mcl_tnt:tnt") - core.check_for_falling(pos) + minetest.check_for_falling(pos) end -- Add smoke particle of entity at pos. @@ -251,7 +253,7 @@ tnt.boom = function(pos, info) -- Default destruction handling: Remove nodes, drop items else minetest.remove_node(np) - core.check_for_falling(np) + minetest.check_for_falling(np) if n.name ~= "mcl_tnt:tnt" and math.random() > 0.9 then local drop = minetest.get_node_drops(n.name, "") for _,item in ipairs(drop) do From c6a8cbdb5999034f54d19fae4d0aab538e688af1 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Wed, 5 Feb 2020 12:46:27 +0100 Subject: [PATCH 503/737] Version 0.58.0 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index ba20145d..4f9c4805 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ An unofficial Minecraft-like game for Minetest. Forked from MineClone by davedevils. Developed by Wuzzy and contributors. Not developed or endorsed by Mojang AB. -Version: 0.57.1 +Version: 0.58.0 ### Gameplay You start in a randomly-generated world made entirely of cubes. You can explore From 1ab41a494bd4e5f553e5f3fbc29a46788d13a18e Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Thu, 6 Feb 2020 16:57:47 +0100 Subject: [PATCH 504/737] Remove activator rail from README --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 4f9c4805..a73e1b6f 100644 --- a/README.md +++ b/README.md @@ -67,7 +67,6 @@ an explanation. #### Incomplete items These items do not work yet, but you can get them with `/giveme` for testing: -* Activator Rail: `mcl_minecarts:activator_rail` * Minecart with Chest: `mcl_minecarts:chest_minecart` * Minecart with Furnace: `mcl_minecarts:furnace_minecart` * Minecart with Hopper: `mcl_minecarts:hopper_minecart` From e6133ac67085209127e75186f8be794fde32981e Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Fri, 14 Feb 2020 21:09:36 +0100 Subject: [PATCH 505/737] Fix TNT minecart igniting --- mods/ENTITIES/mcl_minecarts/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ENTITIES/mcl_minecarts/init.lua b/mods/ENTITIES/mcl_minecarts/init.lua index 136366dc..d845041c 100644 --- a/mods/ENTITIES/mcl_minecarts/init.lua +++ b/mods/ENTITIES/mcl_minecarts/init.lua @@ -771,7 +771,7 @@ register_minecart( if held:get_name() == "mcl_fire:flint_and_steel" then if not minetest.settings:get_bool("creative_mode") then held:add_wear(65535/65) -- 65 uses - local index = clicker:get_wielded_index() + local index = clicker:get_wield_index() local inv = clicker:get_inventory() inv:set_stack("main", index, held) end From bcffcdf0032706235f885dc386ba42193f6538e7 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Fri, 14 Feb 2020 21:10:45 +0100 Subject: [PATCH 506/737] Version 0.58.1 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index a73e1b6f..d777ab9d 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ An unofficial Minecraft-like game for Minetest. Forked from MineClone by davedevils. Developed by Wuzzy and contributors. Not developed or endorsed by Mojang AB. -Version: 0.58.0 +Version: 0.58.1 ### Gameplay You start in a randomly-generated world made entirely of cubes. You can explore From 641921f4c7da7ef64e8592f470929897704fc91b Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 17 Feb 2020 16:17:35 +0100 Subject: [PATCH 507/737] Add tool stats in help --- mods/HELP/mcl_doc/init.lua | 110 +++++++++++++++++++++++++ mods/HELP/mcl_doc/locale/mcl_doc.de.tr | 16 ++++ mods/HELP/mcl_doc/locale/template.txt | 16 ++++ mods/ITEMS/mcl_tools/init.lua | 60 ++++++++------ 4 files changed, 177 insertions(+), 25 deletions(-) diff --git a/mods/HELP/mcl_doc/init.lua b/mods/HELP/mcl_doc/init.lua index f5f2f88f..c4018f85 100644 --- a/mods/HELP/mcl_doc/init.lua +++ b/mods/HELP/mcl_doc/init.lua @@ -267,4 +267,114 @@ doc.sub.items.register_factoid("nodes", "drops", function(itemstring, def) return "" end) +-- Digging capabilities of tool +doc.sub.items.register_factoid("tools", "misc", function(itemstring, def) + if not def.tool_capabilities then + return "" + end + local groupcaps = def.tool_capabilities.groupcaps + if not groupcaps then + return "" + end + local formstring = "" + local capstr = "" + local caplines = 0 + for k,v in pairs(groupcaps) do + local speedstr = "" + local miningusesstr = "" + -- Mining capabilities + caplines = caplines + 1 + local maxlevel = v.maxlevel + if not maxlevel then + -- Default from tool.h + maxlevel = 1 + end + + -- Digging speed + local speed_class = def.groups and def.groups.dig_speed_class + if speed_class == 1 then + speedstr = S("Painfully slow") + elseif speed_class == 2 then + speedstr = S("Very slow") + elseif speed_class == 3 then + speedstr = S("Slow") + elseif speed_class == 4 then + speedstr = S("Fast") + elseif speed_class == 5 then + speedstr = S("Very fast") + elseif speed_class == 6 then + speedstr = S("Extremely fast") + elseif speed_class == 7 then + speedstr = S("Instantaneous") + end + + -- Number of mining uses + local base_uses = v.uses + if not base_uses then + -- Default from tool.h + base_uses = 20 + end + if def._doc_items_durability == nil and base_uses > 0 then + local real_uses = base_uses * math.pow(3, maxlevel) + if real_uses < 65535 then + miningusesstr = S("@1 uses", real_uses) + else + miningusesstr = S("Unlimited uses") + end + end + + if speedstr ~= "" then + capstr = capstr .. S("Mining speed: @1", speedstr) .. "\n" + end + if miningusesstr ~= "" then + capstr = capstr .. S("Mining durability: @1", miningusesstr) .. "\n" + end + + -- Only show one group at max + break + end + if caplines > 0 then + formstring = formstring .. S("This tool is capable of mining.") .. "\n" + -- Capabilities + formstring = formstring .. capstr + -- Max. drop level + local mdl = def.tool_capabilities.max_drop_level + if not def.tool_capabilities.max_drop_level then + mdl = 0 + end + formstring = formstring .. S("Block breaking strength: @1", mdl) .. "\n" + end + if caplines > 0 then + formstring = formstring .. "\n\n" + end + return formstring +end) + +-- Melee damage +doc.sub.items.register_factoid("tools", "misc", function(itemstring, def) + local tool_capabilities = def.tool_capabilities + if not tool_capabilities then + return "" + end + + local formstring = "" + -- Weapon data + local damage_groups = tool_capabilities.damage_groups + if damage_groups ~= nil and damage_groups.fleshy ~= nil then + formstring = formstring .. S("This is a melee weapon which deals damage by punching.") .. "\n" + + -- Damage groups + local dmg = damage_groups.fleshy + formstring = formstring .. S("Maximum damage: @1 HP", dmg) .. "\n" + + -- Full punch interval + local punch = 1.0 + if tool_capabilities.full_punch_interval ~= nil then + punch = tool_capabilities.full_punch_interval + end + formstring = formstring .. S("Full punch interval: @1 s", string.format("%.1f", punch)) + formstring = formstring .. "\n" + end + return formstring +end) diff --git a/mods/HELP/mcl_doc/locale/mcl_doc.de.tr b/mods/HELP/mcl_doc/locale/mcl_doc.de.tr index b9207b4a..dc4e8562 100644 --- a/mods/HELP/mcl_doc/locale/mcl_doc.de.tr +++ b/mods/HELP/mcl_doc/locale/mcl_doc.de.tr @@ -55,3 +55,19 @@ This blocks drops the following when mined by shears: @1=Dieser Block wird folge • Shears=• Schere • Sword=• Schwert • Hand=• Hand +This is a melee weapon which deals damage by punching.=Dies ist eine Nahkampfwaffe, die Schaden durch Schläge verursacht. +Maximum damage: @1 HP=Maximalschaden: @1 HP +Full punch interval: @1 s=Ausholintervall: @1 s +This tool is capable of mining.=Dieses Werkzeug kann Blöcke abbauen. +Mining speed: @1=Grabegeschwindigkeit: @1 +Painfully slow=Furchtbar langsam +Very slow=Sehr langsam +Slow=Langsam +Fast=Schnell +Very fast=Sehr schnell +Extremely fast=Extrem schnell +Instantaneous=Unmittelbar +@1 uses=@1 Verwendungen +Unlimited uses=Unbegrenzte Verwendungen +Block breaking strength: @1=Blockbruchstärke: @1 +Mining durability: @1=Grabehaltbarkeit: @1 diff --git a/mods/HELP/mcl_doc/locale/template.txt b/mods/HELP/mcl_doc/locale/template.txt index 542d2940..b622bde9 100644 --- a/mods/HELP/mcl_doc/locale/template.txt +++ b/mods/HELP/mcl_doc/locale/template.txt @@ -55,3 +55,19 @@ This blocks drops the following when mined by shears: @1= • Shears= • Sword= • Hand= +This is a melee weapon which deals damage by punching.= +Maximum damage: @1 HP= +Full punch interval: @1 s= +This tool is capable of mining.= +Mining speed: @1= +Painfully slow= +Very slow= +Slow= +Fast= +Very fast= +Extremely fast= +Instantaneous= +@1 uses= +Unlimited uses= +Block breaking strength: @1= +Mining durability: @1= diff --git a/mods/ITEMS/mcl_tools/init.lua b/mods/ITEMS/mcl_tools/init.lua index 3078d7f5..bb8f620c 100644 --- a/mods/ITEMS/mcl_tools/init.lua +++ b/mods/ITEMS/mcl_tools/init.lua @@ -13,12 +13,19 @@ local S = minetest.get_translator("mcl_tools") - 3: Stone - 4: Iron - 5: Diamond + +dig_speed_class group: +- 1: Painfully slow +- 2: Very slow +- 3: Slow +- 4: Fast +- 5: Very fast +- 6: Extremely fast +- 7: Instantaneous ]] --- TODO: Add legacy support for Minetest Game groups like crumbly, snappy, cracky, etc. for all tools - -- The hand -local groupcaps, hand_range +local groupcaps, hand_range, hand_groups if minetest.settings:get_bool("creative_mode") then -- Instant breaking in creative mode groupcaps = { @@ -29,11 +36,13 @@ if minetest.settings:get_bool("creative_mode") then groupcaps[k] = { times = v, uses = 0 } end hand_range = 10 + hand_groups = { dig_speed_class = 7 } else groupcaps = { handy_dig = {times=mcl_autogroup.digtimes.handy_dig, uses=0}, } hand_range = 4 + hand_groups = { dig_speed_class = 1 } end minetest.register_item(":", { type = "none", @@ -50,7 +59,8 @@ minetest.register_item(":", { max_drop_level = 0, groupcaps = groupcaps, damage_groups = {fleshy=1}, - } + }, + groups = hand_groups, }) -- Help texts @@ -68,7 +78,7 @@ minetest.register_tool("mcl_tools:pick_wood", { _doc_items_longdesc = pickaxe_longdesc, _doc_items_hidden = false, inventory_image = "default_tool_woodpick.png", - groups = { tool=1, pickaxe=1 }, + groups = { tool=1, pickaxe=1, dig_speed_class=2, }, tool_capabilities = { -- 1/1.2 full_punch_interval = 0.83333333, @@ -85,7 +95,7 @@ minetest.register_tool("mcl_tools:pick_stone", { description = S("Stone Pickaxe"), _doc_items_longdesc = pickaxe_longdesc, inventory_image = "default_tool_stonepick.png", - groups = { tool=1, pickaxe=1 }, + groups = { tool=1, pickaxe=1, dig_speed_class=3, }, tool_capabilities = { -- 1/1.2 full_punch_interval = 0.83333333, @@ -102,7 +112,7 @@ minetest.register_tool("mcl_tools:pick_iron", { description = S("Iron Pickaxe"), _doc_items_longdesc = pickaxe_longdesc, inventory_image = "default_tool_steelpick.png", - groups = { tool=1, pickaxe=1 }, + groups = { tool=1, pickaxe=1, dig_speed_class=4, }, tool_capabilities = { -- 1/1.2 full_punch_interval = 0.83333333, @@ -119,7 +129,7 @@ minetest.register_tool("mcl_tools:pick_gold", { description = S("Golden Pickaxe"), _doc_items_longdesc = pickaxe_longdesc, inventory_image = "default_tool_goldpick.png", - groups = { tool=1, pickaxe=1 }, + groups = { tool=1, pickaxe=1, dig_speed_class=6, }, tool_capabilities = { -- 1/1.2 full_punch_interval = 0.83333333, @@ -136,7 +146,7 @@ minetest.register_tool("mcl_tools:pick_diamond", { description = S("Diamond Pickaxe"), _doc_items_longdesc = pickaxe_longdesc, inventory_image = "default_tool_diamondpick.png", - groups = { tool=1, pickaxe=1 }, + groups = { tool=1, pickaxe=1, dig_speed_class=5, }, tool_capabilities = { -- 1/1.2 full_punch_interval = 0.83333333, @@ -254,7 +264,7 @@ minetest.register_tool("mcl_tools:shovel_wood", { _doc_items_hidden = false, inventory_image = "default_tool_woodshovel.png", wield_image = "default_tool_woodshovel.png^[transformR90", - groups = { tool=1, shovel=1 }, + groups = { tool=1, shovel=1, dig_speed_class=2, }, tool_capabilities = { full_punch_interval = 1, max_drop_level=1, @@ -273,7 +283,7 @@ minetest.register_tool("mcl_tools:shovel_stone", { _doc_items_usagehelp = shovel_use, inventory_image = "default_tool_stoneshovel.png", wield_image = "default_tool_stoneshovel.png^[transformR90", - groups = { tool=1, shovel=1 }, + groups = { tool=1, shovel=1, dig_speed_class=3, }, tool_capabilities = { full_punch_interval = 1, max_drop_level=3, @@ -292,7 +302,7 @@ minetest.register_tool("mcl_tools:shovel_iron", { _doc_items_usagehelp = shovel_use, inventory_image = "default_tool_steelshovel.png", wield_image = "default_tool_steelshovel.png^[transformR90", - groups = { tool=1, shovel=1 }, + groups = { tool=1, shovel=1, dig_speed_class=4, }, tool_capabilities = { full_punch_interval = 1, max_drop_level=4, @@ -311,7 +321,7 @@ minetest.register_tool("mcl_tools:shovel_gold", { _doc_items_usagehelp = shovel_use, inventory_image = "default_tool_goldshovel.png", wield_image = "default_tool_goldshovel.png^[transformR90", - groups = { tool=1, shovel=1 }, + groups = { tool=1, shovel=1, dig_speed_class=6, }, tool_capabilities = { full_punch_interval = 1, max_drop_level=2, @@ -330,7 +340,7 @@ minetest.register_tool("mcl_tools:shovel_diamond", { _doc_items_usagehelp = shovel_use, inventory_image = "default_tool_diamondshovel.png", wield_image = "default_tool_diamondshovel.png^[transformR90", - groups = { tool=1, shovel=1 }, + groups = { tool=1, shovel=1, dig_speed_class=5, }, tool_capabilities = { full_punch_interval = 1, max_drop_level=5, @@ -350,7 +360,7 @@ minetest.register_tool("mcl_tools:axe_wood", { _doc_items_longdesc = axe_longdesc, _doc_items_hidden = false, inventory_image = "default_tool_woodaxe.png", - groups = { tool=1, axe=1 }, + groups = { tool=1, axe=1, dig_speed_class=2, }, tool_capabilities = { full_punch_interval = 1.25, max_drop_level=1, @@ -366,7 +376,7 @@ minetest.register_tool("mcl_tools:axe_stone", { description = S("Stone Axe"), _doc_items_longdesc = axe_longdesc, inventory_image = "default_tool_stoneaxe.png", - groups = { tool=1, axe=1 }, + groups = { tool=1, axe=1, dig_speed_class=3, }, tool_capabilities = { full_punch_interval = 1.25, max_drop_level=3, @@ -382,7 +392,7 @@ minetest.register_tool("mcl_tools:axe_iron", { description = S("Iron Axe"), _doc_items_longdesc = axe_longdesc, inventory_image = "default_tool_steelaxe.png", - groups = { tool=1, axe=1 }, + groups = { tool=1, axe=1, dig_speed_class=4, }, tool_capabilities = { -- 1/0.9 full_punch_interval = 1.11111111, @@ -399,7 +409,7 @@ minetest.register_tool("mcl_tools:axe_gold", { description = S("Golden Axe"), _doc_items_longdesc = axe_longdesc, inventory_image = "default_tool_goldaxe.png", - groups = { tool=1, axe=1 }, + groups = { tool=1, axe=1, dig_speed_class=6, }, tool_capabilities = { full_punch_interval = 1.0, max_drop_level=2, @@ -415,7 +425,7 @@ minetest.register_tool("mcl_tools:axe_diamond", { description = S("Diamond Axe"), _doc_items_longdesc = axe_longdesc, inventory_image = "default_tool_diamondaxe.png", - groups = { tool=1, axe=1 }, + groups = { tool=1, axe=1, dig_speed_class=5, }, tool_capabilities = { full_punch_interval = 1.0, max_drop_level=5, @@ -434,7 +444,7 @@ minetest.register_tool("mcl_tools:sword_wood", { _doc_items_longdesc = sword_longdesc, _doc_items_hidden = false, inventory_image = "default_tool_woodsword.png", - groups = { weapon=1 }, + groups = { weapon=1, sword=1, dig_speed_class=2, }, tool_capabilities = { full_punch_interval = 0.625, max_drop_level=1, @@ -451,7 +461,7 @@ minetest.register_tool("mcl_tools:sword_stone", { description = S("Stone Sword"), _doc_items_longdesc = sword_longdesc, inventory_image = "default_tool_stonesword.png", - groups = { weapon=1 }, + groups = { weapon=1, sword=1, dig_speed_class=3, }, tool_capabilities = { full_punch_interval = 0.625, max_drop_level=3, @@ -468,7 +478,7 @@ minetest.register_tool("mcl_tools:sword_iron", { description = S("Iron Sword"), _doc_items_longdesc = sword_longdesc, inventory_image = "default_tool_steelsword.png", - groups = { weapon=1 }, + groups = { weapon=1, sword=1, dig_speed_class=4, }, tool_capabilities = { full_punch_interval = 0.625, max_drop_level=4, @@ -485,7 +495,7 @@ minetest.register_tool("mcl_tools:sword_gold", { description = S("Golden Sword"), _doc_items_longdesc = sword_longdesc, inventory_image = "default_tool_goldsword.png", - groups = { weapon=1 }, + groups = { weapon=1, sword=1, dig_speed_class=6, }, tool_capabilities = { full_punch_interval = 0.625, max_drop_level=2, @@ -502,7 +512,7 @@ minetest.register_tool("mcl_tools:sword_diamond", { description = S("Diamond Sword"), _doc_items_longdesc = sword_longdesc, inventory_image = "default_tool_diamondsword.png", - groups = { weapon=1 }, + groups = { weapon=1, sword=1, dig_speed_class=5, }, tool_capabilities = { full_punch_interval = 0.625, max_drop_level=5, @@ -524,7 +534,7 @@ minetest.register_tool("mcl_tools:shears", { inventory_image = "default_tool_shears.png", wield_image = "default_tool_shears.png", stack_max = 1, - groups = { tool=1, shears=1 }, + groups = { tool=1, shears=1, dig_speed_class=4, }, tool_capabilities = { full_punch_interval = 0.5, max_drop_level=1, From 9499076ac859ae431671847bdb96a93cb16c8000 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 17 Feb 2020 17:11:04 +0100 Subject: [PATCH 508/737] Don't show message when armor got destroyed --- mods/ITEMS/minetest-3d_armor/3d_armor/armor.lua | 4 ---- 1 file changed, 4 deletions(-) diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor/armor.lua b/mods/ITEMS/minetest-3d_armor/3d_armor/armor.lua index a1ea3369..d86eba66 100644 --- a/mods/ITEMS/minetest-3d_armor/3d_armor/armor.lua +++ b/mods/ITEMS/minetest-3d_armor/3d_armor/armor.lua @@ -510,10 +510,6 @@ minetest.register_on_player_hpchange(function(player, hp_change) 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 From 113a49da411ff92a1bca54b46b28223aa8671d68 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 17 Feb 2020 17:26:06 +0100 Subject: [PATCH 509/737] Armor: remove "wear" value from registrations --- .../ITEMS/minetest-3d_armor/3d_armor/init.lua | 20 ------------------- 1 file changed, 20 deletions(-) diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor/init.lua b/mods/ITEMS/minetest-3d_armor/3d_armor/init.lua index ee4af5b5..b3b990c1 100644 --- a/mods/ITEMS/minetest-3d_armor/3d_armor/init.lua +++ b/mods/ITEMS/minetest-3d_armor/3d_armor/init.lua @@ -13,7 +13,6 @@ minetest.register_tool("3d_armor:helmet_leather", { _doc_items_usagehelp = usage, inventory_image = "3d_armor_inv_helmet_leather.png", groups = {armor_head=5, armor_heal=0, armor_use=100}, - wear = 0, _repair_material = "mcl_mobitems:leather", }) @@ -23,7 +22,6 @@ minetest.register_tool("3d_armor:helmet_iron", { _doc_items_usagehelp = usage, inventory_image = "3d_armor_inv_helmet_iron.png", groups = {armor_head=10, armor_heal=5, armor_use=250}, - wear = 0, _repair_material = "mcl_core:iron_ingot", }) @@ -33,7 +31,6 @@ minetest.register_tool("3d_armor:helmet_gold", { _doc_items_usagehelp = usage, inventory_image = "3d_armor_inv_helmet_gold.png", groups = {armor_head=15, armor_heal=10, armor_use=500}, - wear = 0, _repair_material = "mcl_core:gold_ingot", }) @@ -43,7 +40,6 @@ minetest.register_tool("3d_armor:helmet_diamond",{ _doc_items_usagehelp = usage, inventory_image = "3d_armor_inv_helmet_diamond.png", groups = {armor_head=20, armor_heal=15, armor_use=750}, - wear = 0, _repair_material = "mcl_core:diamond", }) @@ -53,7 +49,6 @@ minetest.register_tool("3d_armor:helmet_chain", { _doc_items_usagehelp = usage, inventory_image = "3d_armor_inv_helmet_chain.png", groups = {armor_head=15, armor_heal=10, armor_use=500}, - wear = 0, _repair_material = "mcl_core:iron_ingot", }) @@ -65,7 +60,6 @@ minetest.register_tool("3d_armor:chestplate_leather", { _doc_items_usagehelp = usage, inventory_image = "3d_armor_inv_chestplate_leather.png", groups = {armor_torso=15, armor_heal=0, armor_use=100}, - wear = 0, _repair_material = "mcl_mobitems:leather", }) @@ -75,7 +69,6 @@ minetest.register_tool("3d_armor:chestplate_iron", { _doc_items_usagehelp = usage, inventory_image = "3d_armor_inv_chestplate_iron.png", groups = {armor_torso=20, armor_heal=5, armor_use=250}, - wear = 0, _repair_material = "mcl_core:iron_ingot", }) @@ -85,7 +78,6 @@ minetest.register_tool("3d_armor:chestplate_gold", { _doc_items_usagehelp = usage, inventory_image = "3d_armor_inv_chestplate_gold.png", groups = {armor_torso=25, armor_heal=10, armor_use=500}, - wear = 0, _repair_material = "mcl_core:gold_ingot", }) @@ -95,7 +87,6 @@ minetest.register_tool("3d_armor:chestplate_diamond",{ _doc_items_usagehelp = usage, inventory_image = "3d_armor_inv_chestplate_diamond.png", groups = {armor_torso=30, armor_heal=15, armor_use=750}, - wear = 0, _repair_material = "mcl_core:diamond", }) @@ -105,7 +96,6 @@ minetest.register_tool("3d_armor:chestplate_chain", { _doc_items_usagehelp = usage, inventory_image = "3d_armor_inv_chestplate_chain.png", groups = {armor_torso=25, armor_heal=10, armor_use=500}, - wear = 0, _repair_material = "mcl_core:iron_ingot", }) @@ -117,7 +107,6 @@ minetest.register_tool("3d_armor:leggings_leather", { _doc_items_usagehelp = usage, inventory_image = "3d_armor_inv_leggings_leather.png", groups = {armor_legs=10, armor_heal=0, armor_use=100}, - wear = 0, _repair_material = "mcl_mobitems:leather", }) @@ -127,7 +116,6 @@ minetest.register_tool("3d_armor:leggings_iron", { _doc_items_usagehelp = usage, inventory_image = "3d_armor_inv_leggings_iron.png", groups = {armor_legs=15, armor_heal=5, armor_use=250}, - wear = 0, _repair_material = "mcl_core:iron_ingot", }) @@ -137,7 +125,6 @@ minetest.register_tool("3d_armor:leggings_gold", { _doc_items_usagehelp = usage, inventory_image = "3d_armor_inv_leggings_gold.png", groups = {armor_legs=20, armor_heal=10, armor_use=500}, - wear = 0, _repair_material = "mcl_core:gold_ingot", }) @@ -147,7 +134,6 @@ minetest.register_tool("3d_armor:leggings_diamond",{ _doc_items_usagehelp = usage, inventory_image = "3d_armor_inv_leggings_diamond.png", groups = {armor_legs=25, armor_heal=15, armor_use=750}, - wear = 0, _repair_material = "mcl_core:diamond", }) @@ -157,7 +143,6 @@ minetest.register_tool("3d_armor:leggings_chain", { _doc_items_usagehelp = usage, inventory_image = "3d_armor_inv_leggings_chain.png", groups = {armor_legs=20, armor_heal=10, armor_use=500}, - wear = 0, _repair_material = "mcl_core:iron_ingot", }) -- Regisiter Boots @@ -168,7 +153,6 @@ minetest.register_tool("3d_armor:boots_leather", { _doc_items_usagehelp = usage, inventory_image = "3d_armor_inv_boots_leather.png", groups = {armor_feet=5, armor_heal=0, armor_use=100}, - wear = 0, _repair_material = "mcl_mobitems:leather", }) @@ -178,7 +162,6 @@ minetest.register_tool("3d_armor:boots_iron", { _doc_items_usagehelp = usage, inventory_image = "3d_armor_inv_boots_iron.png", groups = {armor_feet=10, armor_heal=5, armor_use=250}, - wear = 0, _repair_material = "mcl_core:iron_ingot", }) @@ -188,7 +171,6 @@ minetest.register_tool("3d_armor:boots_gold", { _doc_items_usagehelp = usage, inventory_image = "3d_armor_inv_boots_gold.png", groups = {armor_feet=15, armor_heal=10, armor_use=500}, - wear = 0, _repair_material = "mcl_core:gold_ingot", }) @@ -198,7 +180,6 @@ minetest.register_tool("3d_armor:boots_diamond",{ _doc_items_usagehelp = usage, inventory_image = "3d_armor_inv_boots_diamond.png", groups = {armor_feet=20, armor_heal=15, armor_use=750}, - wear = 0, _repair_material = "mcl_core:diamond", }) @@ -208,7 +189,6 @@ minetest.register_tool("3d_armor:boots_chain", { _doc_items_usagehelp = usage, inventory_image = "3d_armor_inv_boots_chain.png", groups = {armor_feet=15, armor_heal=10, armor_use=500}, - wear = 0, _repair_material = "mcl_core:iron_ingot", }) From 004013c3a46e4ab7f42c424fc1ed5e263e86b94b Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 17 Feb 2020 17:31:39 +0100 Subject: [PATCH 510/737] Remove 3d_armor_trans.png --- mods/ITEMS/minetest-3d_armor/3d_armor/armor.lua | 10 +++++----- .../3d_armor/textures/3d_armor_trans.png | Bin 75 -> 0 bytes 2 files changed, 5 insertions(+), 5 deletions(-) delete mode 100644 mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_trans.png diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor/armor.lua b/mods/ITEMS/minetest-3d_armor/3d_armor/armor.lua index d86eba66..14d6f216 100644 --- a/mods/ITEMS/minetest-3d_armor/3d_armor/armor.lua +++ b/mods/ITEMS/minetest-3d_armor/3d_armor/armor.lua @@ -102,7 +102,7 @@ armor.set_player_armor = function(self, player) if not name then return end - local armor_texture = "3d_armor_trans.png" + local armor_texture = "blank.png" local armor_level = 0 local armor_heal = 0 local armor_fire = 0 @@ -274,8 +274,8 @@ mcl_player.player_register_model("3d_armor_character.b3d", { animation_speed = 30, textures = { armor.default_skin..".png", - "3d_armor_trans.png", - "3d_armor_trans.png", + "blank.png", + "blank.png", }, animations = { stand = {x=0, y=79}, @@ -383,8 +383,8 @@ minetest.register_on_joinplayer(function(player) } armor.textures[name] = { skin = armor.default_skin..".png", - armor = "3d_armor_trans.png", - wielditem = "3d_armor_trans.png", + armor = "blank.png", + wielditem = "blank.png", preview = armor.default_skin.."_preview.png", } if skin_mod == "mcl_skins" then diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_trans.png b/mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_trans.png deleted file mode 100644 index 4d7beb8065852f68443a92759630f668a48b8c6f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 75 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7ggjjwLo7}wCrGd^P7vu~ c;$UE45ny0!wO>`lz`(%Z>FVdQ&MBb@0Qe#gDF6Tf From 81ca7469d75ce6317e12e18c72410b018f59432a Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 17 Feb 2020 17:44:38 +0100 Subject: [PATCH 511/737] TNT explosions deal punch damage --- mods/ITEMS/mcl_throwing/init.lua | 2 +- mods/ITEMS/mcl_tnt/init.lua | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_throwing/init.lua b/mods/ITEMS/mcl_throwing/init.lua index c997a394..b1d9db37 100644 --- a/mods/ITEMS/mcl_throwing/init.lua +++ b/mods/ITEMS/mcl_throwing/init.lua @@ -338,7 +338,7 @@ local pearl_on_step = function(self, dtime) local oldpos = player:get_pos() -- Teleport and hurt player player:set_pos(telepos) - player:set_hp(player:get_hp() - 5, { type = "fall", origin = "mod" }) + player:set_hp(player:get_hp() - 5, { type = "fall", from = "mod" }) -- 5% chance to spawn endermite at the player's origin local r = math.random(1,20) diff --git a/mods/ITEMS/mcl_tnt/init.lua b/mods/ITEMS/mcl_tnt/init.lua index 7b0adc8b..47864bfa 100644 --- a/mods/ITEMS/mcl_tnt/init.lua +++ b/mods/ITEMS/mcl_tnt/init.lua @@ -38,7 +38,7 @@ local function do_tnt_physics(tnt_np,tntr) mcl_death_messages.player_damage(obj, S("@1 was caught in an explosion.", obj:get_player_name())) end end - obj:set_hp(obj:get_hp() - damage) + obj:set_hp(obj:get_hp() - damage, { type = "punch", from = "mod" }) end end end From 023f70ee1c9397e17936157c94c383fed54ef86a Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 17 Feb 2020 17:46:25 +0100 Subject: [PATCH 512/737] Remove more uses of 3d_armor_trans.png --- mods/ITEMS/minetest-3d_armor/3d_armor_stand/init.lua | 4 ++-- mods/ITEMS/minetest-3d_armor/wieldview/init.lua | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor_stand/init.lua b/mods/ITEMS/minetest-3d_armor/3d_armor_stand/init.lua index 85c7c3de..f17f73cb 100644 --- a/mods/ITEMS/minetest-3d_armor/3d_armor_stand/init.lua +++ b/mods/ITEMS/minetest-3d_armor/3d_armor_stand/init.lua @@ -33,7 +33,7 @@ local function update_entity(pos) object = minetest.add_entity(pos, "3d_armor_stand:armor_entity") end if object then - local texture = "3d_armor_trans.png" + local texture = "blank.png" local textures = {} local meta = minetest.get_meta(pos) local inv = meta:get_inventory() @@ -244,7 +244,7 @@ minetest.register_entity("3d_armor_stand:armor_entity", { visual_size = {x=1, y=1}, collisionbox = {-0.1,-0.4,-0.1, 0.1,1.3,0.1}, pointable = false, - textures = {"3d_armor_trans.png"}, + textures = {"blank.png"}, pos = nil, timer = 0, on_activate = function(self) diff --git a/mods/ITEMS/minetest-3d_armor/wieldview/init.lua b/mods/ITEMS/minetest-3d_armor/wieldview/init.lua index 9aef99e3..2824097d 100644 --- a/mods/ITEMS/minetest-3d_armor/wieldview/init.lua +++ b/mods/ITEMS/minetest-3d_armor/wieldview/init.lua @@ -18,7 +18,7 @@ wieldview = { dofile(minetest.get_modpath(minetest.get_current_modname()).."/transform.lua") wieldview.get_item_texture = function(self, item) - local texture = "3d_armor_trans.png" + local texture = "blank.png" if item ~= "" then if minetest.registered_items[item] then if minetest.registered_items[item].inventory_image ~= "" then From dcc14d1f3f6f90b426ed6a7fb3810c4a8bede5f3 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 17 Feb 2020 18:19:04 +0100 Subject: [PATCH 513/737] Implement MC's armor durability --- .../minetest-3d_armor/3d_armor/armor.lua | 17 +++++--- .../ITEMS/minetest-3d_armor/3d_armor/init.lua | 40 +++++++++---------- 2 files changed, 32 insertions(+), 25 deletions(-) diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor/armor.lua b/mods/ITEMS/minetest-3d_armor/3d_armor/armor.lua index 14d6f216..793eda4e 100644 --- a/mods/ITEMS/minetest-3d_armor/3d_armor/armor.lua +++ b/mods/ITEMS/minetest-3d_armor/3d_armor/armor.lua @@ -486,25 +486,32 @@ if ARMOR_DROP == true or ARMOR_DESTROY == true then end) end -minetest.register_on_player_hpchange(function(player, hp_change) +minetest.register_on_player_hpchange(function(player, hp_change, reason) 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 + -- Armor doesn't protect from set_hp (commands like /kill) + -- and drowning damage. + if reason.type == "set_hp" or reason.type == "drown" then return hp_change end local heal_max = 0 local state = 0 local items = 0 + local armor_damage = math.max(1, math.floor(math.abs(hp_change)/4)) for i=1, 6 do local stack = player_inv:get_stack("armor", i) if stack:get_count() > 0 then + -- Damage armor local use = stack:get_definition().groups["armor_use"] or 0 - local heal = stack:get_definition().groups["armor_heal"] or 0 + if use > 0 then + local wear = armor_damage * math.floor(65536/use) + stack:add_wear(wear) + end + local item = stack:get_name() - stack:add_wear(use) + local heal = stack:get_definition().groups["armor_heal"] or 0 armor_inv:set_stack("armor", i, stack) player_inv:set_stack("armor", i, stack) state = state + stack:get_wear() diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor/init.lua b/mods/ITEMS/minetest-3d_armor/3d_armor/init.lua index b3b990c1..ee0b74f7 100644 --- a/mods/ITEMS/minetest-3d_armor/3d_armor/init.lua +++ b/mods/ITEMS/minetest-3d_armor/3d_armor/init.lua @@ -12,7 +12,7 @@ minetest.register_tool("3d_armor:helmet_leather", { _doc_items_longdesc = longdesc, _doc_items_usagehelp = usage, inventory_image = "3d_armor_inv_helmet_leather.png", - groups = {armor_head=5, armor_heal=0, armor_use=100}, + groups = {armor_head=5, armor_heal=0, armor_use=56}, _repair_material = "mcl_mobitems:leather", }) @@ -21,7 +21,7 @@ minetest.register_tool("3d_armor:helmet_iron", { _doc_items_longdesc = longdesc, _doc_items_usagehelp = usage, inventory_image = "3d_armor_inv_helmet_iron.png", - groups = {armor_head=10, armor_heal=5, armor_use=250}, + groups = {armor_head=10, armor_heal=5, armor_use=166}, _repair_material = "mcl_core:iron_ingot", }) @@ -30,7 +30,7 @@ minetest.register_tool("3d_armor:helmet_gold", { _doc_items_longdesc = longdesc, _doc_items_usagehelp = usage, inventory_image = "3d_armor_inv_helmet_gold.png", - groups = {armor_head=15, armor_heal=10, armor_use=500}, + groups = {armor_head=15, armor_heal=10, armor_use=78}, _repair_material = "mcl_core:gold_ingot", }) @@ -39,7 +39,7 @@ minetest.register_tool("3d_armor:helmet_diamond",{ _doc_items_longdesc = longdesc, _doc_items_usagehelp = usage, inventory_image = "3d_armor_inv_helmet_diamond.png", - groups = {armor_head=20, armor_heal=15, armor_use=750}, + groups = {armor_head=20, armor_heal=15, armor_use=364}, _repair_material = "mcl_core:diamond", }) @@ -48,7 +48,7 @@ minetest.register_tool("3d_armor:helmet_chain", { _doc_items_longdesc = longdesc, _doc_items_usagehelp = usage, inventory_image = "3d_armor_inv_helmet_chain.png", - groups = {armor_head=15, armor_heal=10, armor_use=500}, + groups = {armor_head=15, armor_heal=10, armor_use=166}, _repair_material = "mcl_core:iron_ingot", }) @@ -59,7 +59,7 @@ minetest.register_tool("3d_armor:chestplate_leather", { _doc_items_longdesc = longdesc, _doc_items_usagehelp = usage, inventory_image = "3d_armor_inv_chestplate_leather.png", - groups = {armor_torso=15, armor_heal=0, armor_use=100}, + groups = {armor_torso=15, armor_heal=0, armor_use=81}, _repair_material = "mcl_mobitems:leather", }) @@ -68,7 +68,7 @@ minetest.register_tool("3d_armor:chestplate_iron", { _doc_items_longdesc = longdesc, _doc_items_usagehelp = usage, inventory_image = "3d_armor_inv_chestplate_iron.png", - groups = {armor_torso=20, armor_heal=5, armor_use=250}, + groups = {armor_torso=20, armor_heal=5, armor_use=241}, _repair_material = "mcl_core:iron_ingot", }) @@ -77,7 +77,7 @@ minetest.register_tool("3d_armor:chestplate_gold", { _doc_items_longdesc = longdesc, _doc_items_usagehelp = usage, inventory_image = "3d_armor_inv_chestplate_gold.png", - groups = {armor_torso=25, armor_heal=10, armor_use=500}, + groups = {armor_torso=25, armor_heal=10, armor_use=113}, _repair_material = "mcl_core:gold_ingot", }) @@ -86,7 +86,7 @@ minetest.register_tool("3d_armor:chestplate_diamond",{ _doc_items_longdesc = longdesc, _doc_items_usagehelp = usage, inventory_image = "3d_armor_inv_chestplate_diamond.png", - groups = {armor_torso=30, armor_heal=15, armor_use=750}, + groups = {armor_torso=30, armor_heal=15, armor_use=529}, _repair_material = "mcl_core:diamond", }) @@ -95,7 +95,7 @@ minetest.register_tool("3d_armor:chestplate_chain", { _doc_items_longdesc = longdesc, _doc_items_usagehelp = usage, inventory_image = "3d_armor_inv_chestplate_chain.png", - groups = {armor_torso=25, armor_heal=10, armor_use=500}, + groups = {armor_torso=25, armor_heal=10, armor_use=241}, _repair_material = "mcl_core:iron_ingot", }) @@ -106,7 +106,7 @@ minetest.register_tool("3d_armor:leggings_leather", { _doc_items_longdesc = longdesc, _doc_items_usagehelp = usage, inventory_image = "3d_armor_inv_leggings_leather.png", - groups = {armor_legs=10, armor_heal=0, armor_use=100}, + groups = {armor_legs=10, armor_heal=0, armor_use=76}, _repair_material = "mcl_mobitems:leather", }) @@ -115,7 +115,7 @@ minetest.register_tool("3d_armor:leggings_iron", { _doc_items_longdesc = longdesc, _doc_items_usagehelp = usage, inventory_image = "3d_armor_inv_leggings_iron.png", - groups = {armor_legs=15, armor_heal=5, armor_use=250}, + groups = {armor_legs=15, armor_heal=5, armor_use=226}, _repair_material = "mcl_core:iron_ingot", }) @@ -124,7 +124,7 @@ minetest.register_tool("3d_armor:leggings_gold", { _doc_items_longdesc = longdesc, _doc_items_usagehelp = usage, inventory_image = "3d_armor_inv_leggings_gold.png", - groups = {armor_legs=20, armor_heal=10, armor_use=500}, + groups = {armor_legs=20, armor_heal=10, armor_use=106}, _repair_material = "mcl_core:gold_ingot", }) @@ -133,7 +133,7 @@ minetest.register_tool("3d_armor:leggings_diamond",{ _doc_items_longdesc = longdesc, _doc_items_usagehelp = usage, inventory_image = "3d_armor_inv_leggings_diamond.png", - groups = {armor_legs=25, armor_heal=15, armor_use=750}, + groups = {armor_legs=25, armor_heal=15, armor_use=496}, _repair_material = "mcl_core:diamond", }) @@ -142,7 +142,7 @@ minetest.register_tool("3d_armor:leggings_chain", { _doc_items_longdesc = longdesc, _doc_items_usagehelp = usage, inventory_image = "3d_armor_inv_leggings_chain.png", - groups = {armor_legs=20, armor_heal=10, armor_use=500}, + groups = {armor_legs=20, armor_heal=10, armor_use=226}, _repair_material = "mcl_core:iron_ingot", }) -- Regisiter Boots @@ -152,7 +152,7 @@ minetest.register_tool("3d_armor:boots_leather", { _doc_items_longdesc = longdesc, _doc_items_usagehelp = usage, inventory_image = "3d_armor_inv_boots_leather.png", - groups = {armor_feet=5, armor_heal=0, armor_use=100}, + groups = {armor_feet=5, armor_heal=0, armor_use=66}, _repair_material = "mcl_mobitems:leather", }) @@ -161,7 +161,7 @@ minetest.register_tool("3d_armor:boots_iron", { _doc_items_longdesc = longdesc, _doc_items_usagehelp = usage, inventory_image = "3d_armor_inv_boots_iron.png", - groups = {armor_feet=10, armor_heal=5, armor_use=250}, + groups = {armor_feet=10, armor_heal=5, armor_use=196}, _repair_material = "mcl_core:iron_ingot", }) @@ -170,7 +170,7 @@ minetest.register_tool("3d_armor:boots_gold", { _doc_items_longdesc = longdesc, _doc_items_usagehelp = usage, inventory_image = "3d_armor_inv_boots_gold.png", - groups = {armor_feet=15, armor_heal=10, armor_use=500}, + groups = {armor_feet=15, armor_heal=10, armor_use=92}, _repair_material = "mcl_core:gold_ingot", }) @@ -179,7 +179,7 @@ minetest.register_tool("3d_armor:boots_diamond",{ _doc_items_longdesc = longdesc, _doc_items_usagehelp = usage, inventory_image = "3d_armor_inv_boots_diamond.png", - groups = {armor_feet=20, armor_heal=15, armor_use=750}, + groups = {armor_feet=20, armor_heal=15, armor_use=430}, _repair_material = "mcl_core:diamond", }) @@ -188,7 +188,7 @@ minetest.register_tool("3d_armor:boots_chain", { _doc_items_longdesc = longdesc, _doc_items_usagehelp = usage, inventory_image = "3d_armor_inv_boots_chain.png", - groups = {armor_feet=15, armor_heal=10, armor_use=500}, + groups = {armor_feet=15, armor_heal=10, armor_use=196}, _repair_material = "mcl_core:iron_ingot", }) From 988ca6ffe70d79e28c0752d282f1c94a683717d0 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 17 Feb 2020 18:37:23 +0100 Subject: [PATCH 514/737] Interpret many damage sources as punches --- mods/ENTITIES/mcl_falling_nodes/init.lua | 2 +- mods/ENVIRONMENT/lightning/init.lua | 4 ++-- mods/HUD/mcl_death_messages/init.lua | 10 ++++++++-- .../mcl_death_messages/locale/mcl_death_messages.de.tr | 1 + mods/HUD/mcl_death_messages/locale/template.txt | 1 + mods/ITEMS/mcl_nether/init.lua | 2 +- mods/PLAYER/mcl_playerplus/init.lua | 2 +- 7 files changed, 15 insertions(+), 7 deletions(-) diff --git a/mods/ENTITIES/mcl_falling_nodes/init.lua b/mods/ENTITIES/mcl_falling_nodes/init.lua index 5e1168ca..8fe4f17d 100644 --- a/mods/ENTITIES/mcl_falling_nodes/init.lua +++ b/mods/ENTITIES/mcl_falling_nodes/init.lua @@ -57,7 +57,7 @@ local deal_falling_damage = function(self, dtime) mcl_death_messages.player_damage(v, msg) end end - v:set_hp(hp) + v:set_hp(hp, { type = "punch", from = "mod" }) end end end diff --git a/mods/ENVIRONMENT/lightning/init.lua b/mods/ENVIRONMENT/lightning/init.lua index bf077105..6ed0fafc 100644 --- a/mods/ENVIRONMENT/lightning/init.lua +++ b/mods/ENVIRONMENT/lightning/init.lua @@ -132,7 +132,7 @@ lightning.strike = function(pos) if minetest.get_modpath("mcl_death_messages") then mcl_death_messages.player_damage(obj, S("@1 was struck by lightning.", obj:get_player_name())) end - obj:set_hp(obj:get_hp()-5) + obj:set_hp(obj:get_hp()-5, { type = "punch", from = "mod" }) -- Mobs elseif lua and lua._cmi_is_mob then -- pig → zombie pigman (no damage) @@ -164,7 +164,7 @@ lightning.strike = function(pos) -- Other mobs: Just damage else - obj:set_hp(obj:get_hp()-5, "lightning") + obj:set_hp(obj:get_hp()-5, { type = "punch", from = "mod" }) end end end diff --git a/mods/HUD/mcl_death_messages/init.lua b/mods/HUD/mcl_death_messages/init.lua index 7bfef748..e32de137 100644 --- a/mods/HUD/mcl_death_messages/init.lua +++ b/mods/HUD/mcl_death_messages/init.lua @@ -32,6 +32,9 @@ local msgs = { ["murder"] = { N("@1 was killed by @2."), }, + ["murder_any"] = { + N("@1 was killed."), + }, ["mob_kill"] = { N("@1 was killed by a mob."), }, @@ -127,7 +130,10 @@ minetest.register_on_dieplayer(function(player, reason) return end local msg - if reason.type == "node_damage" then + if last_damages[name] then + -- custom message + msg = last_damages[name].message + elseif reason.type == "node_damage" then local pos = player:get_pos() -- Check multiple nodes because players occupy multiple nodes -- (we add one additional node because the check may fail if the player was @@ -170,7 +176,7 @@ minetest.register_on_dieplayer(function(player, reason) local hittername, hittertype, hittersubtype, shooter -- Unknown hitter if hitter == nil then - msg = dmsg("murder_any") + msg = dmsg("murder_any", name) -- Player elseif hitter:is_player() then hittername = hitter:get_player_name() diff --git a/mods/HUD/mcl_death_messages/locale/mcl_death_messages.de.tr b/mods/HUD/mcl_death_messages/locale/mcl_death_messages.de.tr index a37f556d..b9ef6680 100644 --- a/mods/HUD/mcl_death_messages/locale/mcl_death_messages.de.tr +++ b/mods/HUD/mcl_death_messages/locale/mcl_death_messages.de.tr @@ -10,6 +10,7 @@ @1 drowned.=@1 ertrank. @1 ran out of oxygen.=@1 ging die Luft aus. @1 was killed by @2.=@1 wurde von @2 getötet. +@1 was killed.=@1 wurde getötet. @1 was killed by a mob.=@1 wurde von einem Mob getötet. @1 was burned to death by a blaze's fireball.=@1 wurde von einem Feuerball einer Lohe zu Tode verbrannt. @1 was killed by a fireball from a blaze.=@1 wurde von einem Feuerball einer Lohe getötet. diff --git a/mods/HUD/mcl_death_messages/locale/template.txt b/mods/HUD/mcl_death_messages/locale/template.txt index fc83e296..db074f75 100644 --- a/mods/HUD/mcl_death_messages/locale/template.txt +++ b/mods/HUD/mcl_death_messages/locale/template.txt @@ -10,6 +10,7 @@ @1 drowned.= @1 ran out of oxygen.= @1 was killed by @2.= +@1 was killed.= @1 was killed by a mob.= @1 was burned to death by a blaze's fireball.= @1 was killed by a fireball from a blaze.= diff --git a/mods/ITEMS/mcl_nether/init.lua b/mods/ITEMS/mcl_nether/init.lua index f183fcc0..4025d360 100644 --- a/mods/ITEMS/mcl_nether/init.lua +++ b/mods/ITEMS/mcl_nether/init.lua @@ -100,7 +100,7 @@ minetest.register_node("mcl_nether:magma", { if mod_death_messages then mcl_death_messages.player_damage(player, S("@1 stood too long on a magma block.", player:get_player_name())) end - player:set_hp(player:get_hp() - 1) + player:set_hp(player:get_hp() - 1, { type = "punch", from = "mod" }) end end, _mcl_blast_resistance = 2.5, diff --git a/mods/PLAYER/mcl_playerplus/init.lua b/mods/PLAYER/mcl_playerplus/init.lua index c3315f42..19e5c2d5 100644 --- a/mods/PLAYER/mcl_playerplus/init.lua +++ b/mods/PLAYER/mcl_playerplus/init.lua @@ -137,7 +137,7 @@ minetest.register_globalstep(function(dtime) if dist < 1.1 or dist_feet < 1.1 then if player:get_hp() > 0 then mcl_death_messages.player_damage(player, S("@1 was prickled to death by a cactus.", name)) - player:set_hp(player:get_hp() - 1) + player:set_hp(player:get_hp() - 1, { type = "punch", from = "mod" }) end end end From 2e6610da420c3767c8ee9851933eccb8ac3c95fd Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 17 Feb 2020 19:55:02 +0100 Subject: [PATCH 515/737] Overhaul armor protection formula --- .../minetest-3d_armor/3d_armor/armor.lua | 66 ++++++++++++------- .../ITEMS/minetest-3d_armor/3d_armor/init.lua | 40 +++++------ 2 files changed, 63 insertions(+), 43 deletions(-) diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor/armor.lua b/mods/ITEMS/minetest-3d_armor/3d_armor/armor.lua index 793eda4e..4d1eb0a4 100644 --- a/mods/ITEMS/minetest-3d_armor/3d_armor/armor.lua +++ b/mods/ITEMS/minetest-3d_armor/3d_armor/armor.lua @@ -79,7 +79,6 @@ elseif minetest.get_modpath("wardrobe") then end armor.def = { - state = 0, count = 0, } @@ -104,11 +103,10 @@ armor.set_player_armor = function(self, player) end local armor_texture = "blank.png" local armor_level = 0 - local armor_heal = 0 + local mcl_armor_points = 0 local armor_fire = 0 local armor_water = 0 local armor_radiation = 0 - local state = 0 local items = 0 local elements = {} local textures = {} @@ -131,9 +129,8 @@ armor.set_player_armor = function(self, player) 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) + mcl_armor_points = mcl_armor_points + (def.groups["mcl_armor_points"] 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) @@ -164,7 +161,7 @@ armor.set_player_armor = function(self, player) armor_level = armor_level * 1.1 end armor_level = armor_level * ARMOR_LEVEL_MULTIPLIER - armor_heal = armor_heal * ARMOR_HEAL_MULTIPLIER + mcl_armor_points = mcl_armor_points * ARMOR_HEAL_MULTIPLIER armor_radiation = armor_radiation * ARMOR_RADIATION_MULTIPLIER if #textures > 0 then armor_texture = table.concat(textures, "^") @@ -182,10 +179,9 @@ armor.set_player_armor = function(self, player) -- Physics override intentionally removed because of possible conflicts 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].heal = mcl_armor_points self.def[name].jump = physics_o.jump self.def[name].speed = physics_o.speed self.def[name].gravity = physics_o.gravity @@ -200,6 +196,24 @@ armor.update_armor = function(self, player) -- Other mods can hook on to this function, see hud mod for example end +armor.get_armor_points = function(self, player) + local name, player_inv, armor_inv = armor:get_valid_player(player, "[get_armor_points]") + if not name then + return nil + end + local pts = 0 + for i=1, 6 do + local stack = player_inv:get_stack("armor", i) + if stack:get_count() > 0 then + local p = stack:get_definition().groups.mcl_armor_points + if p then + pts = pts + p + end + end + end + return pts +end + armor.get_player_skin = function(self, name) local skin = nil if skin_mod == "mcl_skins" then @@ -232,7 +246,7 @@ armor.get_armor_formspec = function(self, name) 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("mcl_armor_points", armor.def[name].heal) formspec = formspec:gsub("armor_fire", armor.def[name].fire) formspec = formspec:gsub("armor_radiation", armor.def[name].radiation) return formspec @@ -370,7 +384,6 @@ minetest.register_on_joinplayer(function(player) armor_inv:set_stack("armor", i, stack) end armor.def[name] = { - state = 0, count = 0, level = 0, heal = 0, @@ -490,45 +503,52 @@ minetest.register_on_player_hpchange(function(player, hp_change, reason) local name, player_inv, armor_inv = armor:get_valid_player(player, "[on_hpchange]") if name and hp_change < 0 then - -- Armor doesn't protect from set_hp (commands like /kill) - -- and drowning damage. - if reason.type == "set_hp" or reason.type == "drown" then + -- Armor doesn't protect from set_hp (commands like /kill), + -- falling and drowning damage. + if reason.type == "set_hp" or reason.type == "drown" or reason.type == "fall" then return hp_change end local heal_max = 0 - local state = 0 local items = 0 local armor_damage = math.max(1, math.floor(math.abs(hp_change)/4)) + + local total_points = 0 + local total_toughness = 0 for i=1, 6 do local stack = player_inv:get_stack("armor", i) if stack:get_count() > 0 then -- Damage armor - local use = stack:get_definition().groups["armor_use"] or 0 + local use = stack:get_definition().groups["mcl_armor_uses"] or 0 if use > 0 then local wear = armor_damage * math.floor(65536/use) stack:add_wear(wear) end local item = stack:get_name() - local heal = stack:get_definition().groups["armor_heal"] or 0 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 armor:set_player_armor(player) armor:update_inventory(player) end - heal_max = heal_max + heal + + local pts = stack:get_definition().groups["mcl_armor_points"] or 0 + local tough = stack:get_definition().groups["mcl_armor_toughness"] or 0 + total_points = total_points + pts + total_toughness = total_toughness + tough end end - armor.def[name].state = state + local damage = math.abs(hp_change) + + -- Damage calculation formula (from ) + damage = damage * (1 - math.min(20, math.max((total_points/5), total_points - damage / (2+(total_toughness/4)))) / 25) + damage = math.floor(damage+0.5) + + hp_change = -math.abs(damage) + 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 diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor/init.lua b/mods/ITEMS/minetest-3d_armor/3d_armor/init.lua index ee0b74f7..f3b28177 100644 --- a/mods/ITEMS/minetest-3d_armor/3d_armor/init.lua +++ b/mods/ITEMS/minetest-3d_armor/3d_armor/init.lua @@ -12,7 +12,7 @@ minetest.register_tool("3d_armor:helmet_leather", { _doc_items_longdesc = longdesc, _doc_items_usagehelp = usage, inventory_image = "3d_armor_inv_helmet_leather.png", - groups = {armor_head=5, armor_heal=0, armor_use=56}, + groups = {armor_head=1, mcl_armor_points=1, mcl_armor_uses=56}, _repair_material = "mcl_mobitems:leather", }) @@ -21,7 +21,7 @@ minetest.register_tool("3d_armor:helmet_iron", { _doc_items_longdesc = longdesc, _doc_items_usagehelp = usage, inventory_image = "3d_armor_inv_helmet_iron.png", - groups = {armor_head=10, armor_heal=5, armor_use=166}, + groups = {armor_head=1, mcl_armor_points=2, mcl_armor_uses=166}, _repair_material = "mcl_core:iron_ingot", }) @@ -30,7 +30,7 @@ minetest.register_tool("3d_armor:helmet_gold", { _doc_items_longdesc = longdesc, _doc_items_usagehelp = usage, inventory_image = "3d_armor_inv_helmet_gold.png", - groups = {armor_head=15, armor_heal=10, armor_use=78}, + groups = {armor_head=1, mcl_armor_points=2, mcl_armor_uses=78}, _repair_material = "mcl_core:gold_ingot", }) @@ -39,7 +39,7 @@ minetest.register_tool("3d_armor:helmet_diamond",{ _doc_items_longdesc = longdesc, _doc_items_usagehelp = usage, inventory_image = "3d_armor_inv_helmet_diamond.png", - groups = {armor_head=20, armor_heal=15, armor_use=364}, + groups = {armor_head=1, mcl_armor_points=3, mcl_armor_uses=364, mcl_armor_toughness=2}, _repair_material = "mcl_core:diamond", }) @@ -48,7 +48,7 @@ minetest.register_tool("3d_armor:helmet_chain", { _doc_items_longdesc = longdesc, _doc_items_usagehelp = usage, inventory_image = "3d_armor_inv_helmet_chain.png", - groups = {armor_head=15, armor_heal=10, armor_use=166}, + groups = {armor_head=1, mcl_armor_points=2, mcl_armor_uses=166}, _repair_material = "mcl_core:iron_ingot", }) @@ -59,7 +59,7 @@ minetest.register_tool("3d_armor:chestplate_leather", { _doc_items_longdesc = longdesc, _doc_items_usagehelp = usage, inventory_image = "3d_armor_inv_chestplate_leather.png", - groups = {armor_torso=15, armor_heal=0, armor_use=81}, + groups = {armor_torso=1, mcl_armor_points=3, mcl_armor_uses=81}, _repair_material = "mcl_mobitems:leather", }) @@ -68,7 +68,7 @@ minetest.register_tool("3d_armor:chestplate_iron", { _doc_items_longdesc = longdesc, _doc_items_usagehelp = usage, inventory_image = "3d_armor_inv_chestplate_iron.png", - groups = {armor_torso=20, armor_heal=5, armor_use=241}, + groups = {armor_torso=1, mcl_armor_points=6, mcl_armor_uses=241}, _repair_material = "mcl_core:iron_ingot", }) @@ -77,7 +77,7 @@ minetest.register_tool("3d_armor:chestplate_gold", { _doc_items_longdesc = longdesc, _doc_items_usagehelp = usage, inventory_image = "3d_armor_inv_chestplate_gold.png", - groups = {armor_torso=25, armor_heal=10, armor_use=113}, + groups = {armor_torso=1, mcl_armor_points=5, mcl_armor_uses=113}, _repair_material = "mcl_core:gold_ingot", }) @@ -86,7 +86,7 @@ minetest.register_tool("3d_armor:chestplate_diamond",{ _doc_items_longdesc = longdesc, _doc_items_usagehelp = usage, inventory_image = "3d_armor_inv_chestplate_diamond.png", - groups = {armor_torso=30, armor_heal=15, armor_use=529}, + groups = {armor_torso=1, mcl_armor_points=8, mcl_armor_uses=529, mcl_armor_toughness=2}, _repair_material = "mcl_core:diamond", }) @@ -95,7 +95,7 @@ minetest.register_tool("3d_armor:chestplate_chain", { _doc_items_longdesc = longdesc, _doc_items_usagehelp = usage, inventory_image = "3d_armor_inv_chestplate_chain.png", - groups = {armor_torso=25, armor_heal=10, armor_use=241}, + groups = {armor_torso=1, mcl_armor_points=5, mcl_armor_uses=241}, _repair_material = "mcl_core:iron_ingot", }) @@ -106,7 +106,7 @@ minetest.register_tool("3d_armor:leggings_leather", { _doc_items_longdesc = longdesc, _doc_items_usagehelp = usage, inventory_image = "3d_armor_inv_leggings_leather.png", - groups = {armor_legs=10, armor_heal=0, armor_use=76}, + groups = {armor_legs=1, mcl_armor_points=2, mcl_armor_uses=76}, _repair_material = "mcl_mobitems:leather", }) @@ -115,7 +115,7 @@ minetest.register_tool("3d_armor:leggings_iron", { _doc_items_longdesc = longdesc, _doc_items_usagehelp = usage, inventory_image = "3d_armor_inv_leggings_iron.png", - groups = {armor_legs=15, armor_heal=5, armor_use=226}, + groups = {armor_legs=1, mcl_armor_points=5, mcl_armor_uses=226}, _repair_material = "mcl_core:iron_ingot", }) @@ -124,7 +124,7 @@ minetest.register_tool("3d_armor:leggings_gold", { _doc_items_longdesc = longdesc, _doc_items_usagehelp = usage, inventory_image = "3d_armor_inv_leggings_gold.png", - groups = {armor_legs=20, armor_heal=10, armor_use=106}, + groups = {armor_legs=1, mcl_armor_points=3, mcl_armor_uses=106}, _repair_material = "mcl_core:gold_ingot", }) @@ -133,7 +133,7 @@ minetest.register_tool("3d_armor:leggings_diamond",{ _doc_items_longdesc = longdesc, _doc_items_usagehelp = usage, inventory_image = "3d_armor_inv_leggings_diamond.png", - groups = {armor_legs=25, armor_heal=15, armor_use=496}, + groups = {armor_legs=1, mcl_armor_points=6, mcl_armor_uses=496, mcl_armor_toughness=2}, _repair_material = "mcl_core:diamond", }) @@ -142,7 +142,7 @@ minetest.register_tool("3d_armor:leggings_chain", { _doc_items_longdesc = longdesc, _doc_items_usagehelp = usage, inventory_image = "3d_armor_inv_leggings_chain.png", - groups = {armor_legs=20, armor_heal=10, armor_use=226}, + groups = {armor_legs=1, mcl_armor_points=4, mcl_armor_uses=226}, _repair_material = "mcl_core:iron_ingot", }) -- Regisiter Boots @@ -152,7 +152,7 @@ minetest.register_tool("3d_armor:boots_leather", { _doc_items_longdesc = longdesc, _doc_items_usagehelp = usage, inventory_image = "3d_armor_inv_boots_leather.png", - groups = {armor_feet=5, armor_heal=0, armor_use=66}, + groups = {armor_feet=1, mcl_armor_points=1, mcl_armor_uses=66}, _repair_material = "mcl_mobitems:leather", }) @@ -161,7 +161,7 @@ minetest.register_tool("3d_armor:boots_iron", { _doc_items_longdesc = longdesc, _doc_items_usagehelp = usage, inventory_image = "3d_armor_inv_boots_iron.png", - groups = {armor_feet=10, armor_heal=5, armor_use=196}, + groups = {armor_feet=1, mcl_armor_points=2, mcl_armor_uses=196}, _repair_material = "mcl_core:iron_ingot", }) @@ -170,7 +170,7 @@ minetest.register_tool("3d_armor:boots_gold", { _doc_items_longdesc = longdesc, _doc_items_usagehelp = usage, inventory_image = "3d_armor_inv_boots_gold.png", - groups = {armor_feet=15, armor_heal=10, armor_use=92}, + groups = {armor_feet=1, mcl_armor_points=1, mcl_armor_uses=92}, _repair_material = "mcl_core:gold_ingot", }) @@ -179,7 +179,7 @@ minetest.register_tool("3d_armor:boots_diamond",{ _doc_items_longdesc = longdesc, _doc_items_usagehelp = usage, inventory_image = "3d_armor_inv_boots_diamond.png", - groups = {armor_feet=20, armor_heal=15, armor_use=430}, + groups = {armor_feet=1, mcl_armor_points=3, mcl_armor_uses=430, mcl_armor_toughness=2}, _repair_material = "mcl_core:diamond", }) @@ -188,7 +188,7 @@ minetest.register_tool("3d_armor:boots_chain", { _doc_items_longdesc = longdesc, _doc_items_usagehelp = usage, inventory_image = "3d_armor_inv_boots_chain.png", - groups = {armor_feet=15, armor_heal=10, armor_use=196}, + groups = {armor_feet=1, mcl_armor_points=1, mcl_armor_uses=196}, _repair_material = "mcl_core:iron_ingot", }) From e3b68c4364d13490f15bd612a558a15accd9c2d8 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 17 Feb 2020 20:19:07 +0100 Subject: [PATCH 516/737] Display armor points properly --- mods/HUD/hbarmor/depends.txt | 3 -- mods/HUD/hbarmor/init.lua | 37 ++++++------------- mods/HUD/hbarmor/locale/hbarmor.de.tr | 2 +- mods/HUD/hbarmor/locale/hbarmor.es.tr | 2 +- mods/HUD/hbarmor/locale/hbarmor.it.tr | 4 +- mods/HUD/hbarmor/locale/template.txt | 4 +- mods/HUD/hbarmor/mod.conf | 1 + .../minetest-3d_armor/3d_armor/armor.lua | 2 +- 8 files changed, 18 insertions(+), 37 deletions(-) delete mode 100644 mods/HUD/hbarmor/depends.txt diff --git a/mods/HUD/hbarmor/depends.txt b/mods/HUD/hbarmor/depends.txt deleted file mode 100644 index 32c22245..00000000 --- a/mods/HUD/hbarmor/depends.txt +++ /dev/null @@ -1,3 +0,0 @@ -hudbars -3d_armor -intllib? diff --git a/mods/HUD/hbarmor/init.lua b/mods/HUD/hbarmor/init.lua index 21193f91..c2530b61 100644 --- a/mods/HUD/hbarmor/init.lua +++ b/mods/HUD/hbarmor/init.lua @@ -1,9 +1,4 @@ -local S -if (minetest.get_modpath("intllib")) then - S = intllib.Getter() -else - S = function ( s ) return s end -end +local S = minetest.get_translator("hbarmor") if (not armor) or (not armor.def) then minetest.log("error", "[hbarmor] Outdated 3d_armor version. Please update your version of 3d_armor!") @@ -51,9 +46,12 @@ local function custom_hud(player) local ret = hbarmor.get_armor(player) if ret == false then minetest.log("error", "[hbarmor] Call to hbarmor.get_armor in custom_hud returned with false!") + return end local arm = tonumber(hbarmor.armor[name]) - if not arm then arm = 0 end + if not arm then + arm = 0 + end local hide if hbarmor.autohide then hide = must_hide(name, arm) @@ -65,35 +63,24 @@ local function custom_hud(player) end --register and define armor HUD bar -hb.register_hudbar("armor", 0xFFFFFF, S("Armor"), { icon = "hbarmor_icon.png", bgicon = "hbarmor_bgicon.png", bar = "hbarmor_bar.png" }, 0, 100, hbarmor.autohide, S("%s: %d%%")) +hb.register_hudbar("armor", 0xFFFFFF, S("Armor"), { icon = "hbarmor_icon.png", bgicon = "hbarmor_bgicon.png", bar = "hbarmor_bar.png" }, 0, 20, hbarmor.autohide) function hbarmor.get_armor(player) if not player or not armor.def then return false end local name = player:get_player_name() - local def = armor.def[name] or nil - if def and def.state and def.count then - hbarmor.set_armor(name, def.state, def.count) - else + local pts = armor:get_armor_points(player) + if not pts then return false + else + hbarmor.set_armor(name, pts) end return true end -function hbarmor.set_armor(player_name, ges_state, items) - local max_items = 4 - if items == 5 then - max_items = items - end - local max = max_items * 65535 - local lvl = max - ges_state - lvl = lvl/max - if ges_state == 0 and items == 0 then - lvl = 0 - end - - hbarmor.armor[player_name] = math.max(0, math.min(lvl* (items * (100 / max_items)), 100)) +function hbarmor.set_armor(player_name, pts) + hbarmor.armor[player_name] = math.max(0, math.min(20, pts)) end -- update hud elemtens if value has changed diff --git a/mods/HUD/hbarmor/locale/hbarmor.de.tr b/mods/HUD/hbarmor/locale/hbarmor.de.tr index d1be8698..e7aa7d78 100644 --- a/mods/HUD/hbarmor/locale/hbarmor.de.tr +++ b/mods/HUD/hbarmor/locale/hbarmor.de.tr @@ -1,2 +1,2 @@ +# textdomain:hbarmor Armor=Panzerung -%s: %d%%=%s: %d%% diff --git a/mods/HUD/hbarmor/locale/hbarmor.es.tr b/mods/HUD/hbarmor/locale/hbarmor.es.tr index 78bd409f..f9529b48 100644 --- a/mods/HUD/hbarmor/locale/hbarmor.es.tr +++ b/mods/HUD/hbarmor/locale/hbarmor.es.tr @@ -1,2 +1,2 @@ +# textdomain:hbarmor Armor=Armadura -%s: %d%%=%s: %d%% diff --git a/mods/HUD/hbarmor/locale/hbarmor.it.tr b/mods/HUD/hbarmor/locale/hbarmor.it.tr index f9c8f99e..f02b5c43 100644 --- a/mods/HUD/hbarmor/locale/hbarmor.it.tr +++ b/mods/HUD/hbarmor/locale/hbarmor.it.tr @@ -1,4 +1,2 @@ +# textdomain:hbarmor Armor=Armatura - -# Format string for displaying the armor. E.g. "Armor: 100%" -%s: %d%%=%s: %d%% diff --git a/mods/HUD/hbarmor/locale/template.txt b/mods/HUD/hbarmor/locale/template.txt index 09bc54ce..80e7a09e 100644 --- a/mods/HUD/hbarmor/locale/template.txt +++ b/mods/HUD/hbarmor/locale/template.txt @@ -1,4 +1,2 @@ +# textdomain:hbarmor Armor= - -# Format string for displaying the armor. E.g. "Armor: 100%" -%s: %d%%= diff --git a/mods/HUD/hbarmor/mod.conf b/mods/HUD/hbarmor/mod.conf index 47352c19..80d38910 100644 --- a/mods/HUD/hbarmor/mod.conf +++ b/mods/HUD/hbarmor/mod.conf @@ -1 +1,2 @@ name = hbarmor +depends = hudbars, 3d_armor diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor/armor.lua b/mods/ITEMS/minetest-3d_armor/3d_armor/armor.lua index 4d1eb0a4..adfb0291 100644 --- a/mods/ITEMS/minetest-3d_armor/3d_armor/armor.lua +++ b/mods/ITEMS/minetest-3d_armor/3d_armor/armor.lua @@ -205,7 +205,7 @@ armor.get_armor_points = function(self, player) for i=1, 6 do local stack = player_inv:get_stack("armor", i) if stack:get_count() > 0 then - local p = stack:get_definition().groups.mcl_armor_points + local p = minetest.get_item_group(stack:get_name(), "mcl_armor_points") if p then pts = pts + p end From bef99ac211cb74d8f22786a0f6e8bb1debb346a7 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 17 Feb 2020 20:24:26 +0100 Subject: [PATCH 517/737] =?UTF-8?q?Rename=20mod:=20hbarmor=20=E2=86=92=20m?= =?UTF-8?q?cl=5Fhbarmor?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mods/HUD/hbarmor/README.md | 42 ------------ mods/HUD/hbarmor/screenshot.png | Bin 10821 -> 0 bytes mods/HUD/hbarmor/settingtypes.txt | 7 -- mods/HUD/mcl_hbarmor/README.md | 26 ++++++++ .../{hbarmor => mcl_hbarmor}/description.txt | 0 mods/HUD/{hbarmor => mcl_hbarmor}/init.lua | 62 ++++++++---------- .../locale/hbarmor.de.tr | 0 .../locale/hbarmor.es.tr | 0 .../locale/hbarmor.it.tr | 0 .../locale/template.txt | 0 mods/HUD/{hbarmor => mcl_hbarmor}/mod.conf | 2 +- mods/HUD/mcl_hbarmor/settingtypes.txt | 3 + .../textures/hbarmor_bar.png | Bin .../textures/hbarmor_bgicon.png | Bin .../textures/hbarmor_icon.png | Bin tools/Conversion_Table.csv | 4 +- 16 files changed, 60 insertions(+), 86 deletions(-) delete mode 100644 mods/HUD/hbarmor/README.md delete mode 100644 mods/HUD/hbarmor/screenshot.png delete mode 100644 mods/HUD/hbarmor/settingtypes.txt create mode 100644 mods/HUD/mcl_hbarmor/README.md rename mods/HUD/{hbarmor => mcl_hbarmor}/description.txt (100%) rename mods/HUD/{hbarmor => mcl_hbarmor}/init.lua (64%) rename mods/HUD/{hbarmor => mcl_hbarmor}/locale/hbarmor.de.tr (100%) rename mods/HUD/{hbarmor => mcl_hbarmor}/locale/hbarmor.es.tr (100%) rename mods/HUD/{hbarmor => mcl_hbarmor}/locale/hbarmor.it.tr (100%) rename mods/HUD/{hbarmor => mcl_hbarmor}/locale/template.txt (100%) rename mods/HUD/{hbarmor => mcl_hbarmor}/mod.conf (59%) create mode 100644 mods/HUD/mcl_hbarmor/settingtypes.txt rename mods/HUD/{hbarmor => mcl_hbarmor}/textures/hbarmor_bar.png (100%) rename mods/HUD/{hbarmor => mcl_hbarmor}/textures/hbarmor_bgicon.png (100%) rename mods/HUD/{hbarmor => mcl_hbarmor}/textures/hbarmor_icon.png (100%) diff --git a/mods/HUD/hbarmor/README.md b/mods/HUD/hbarmor/README.md deleted file mode 100644 index c410a9b6..00000000 --- a/mods/HUD/hbarmor/README.md +++ /dev/null @@ -1,42 +0,0 @@ -# HUD bar for `3d_armor` [`hbarmor`] - -* Version: 0.4.0 - -## Description -This mod adds a simple HUD bar which displays the current damage -of the player's armor (from the 3D Armor [`3d_armor`] mod) as a percentage (rounded). - -100% armor means the armor is in perfect shape. 0% means the armor is almost destroyed -or non-existant. Note that to reach 100%, the player must wear at least 4 different -pieces of armor in perfect shape. - -The armor bar also does not tell anything about the armor's strength, -only how worn out it already is. - -By default, the armor bar is hidden if the player wears no armor. - -## Dependencies -* HUD bars [`hudbars`], major version 1 -* 3D Armor [`3d_armor`] (tested with Minetest 0.4.14) - -## Licensing -This mod is entirly free softare. - -### Source code - -* License: MIT License (see below) -* Authors: Wuzzy, forked from the mod “Better HUD (and hunger)” [`hud`] by BlockMen (2013-2014) - -### Textures - -* `hbarmor_icon.png`—Stu ([CC BY-SA 3.0](https://creativecommons.org/licenses/by-sa/3.0/)), modified by BlockMen -* `hbarmor_bgicon.png`—Stu (CC BY-SA 3.0), modified by BlockMen -* `hbarmor_bar.png`—Wuzzy (MIT License) - -Everything else is under the MIT License: -© Copyright BlockMen (2013-2014) - -This program is free software. It comes without any warranty, to -the extent permitted by applicable law. You can redistribute it -and/or modify it under the terms of the MIT License. -See for more details. diff --git a/mods/HUD/hbarmor/screenshot.png b/mods/HUD/hbarmor/screenshot.png deleted file mode 100644 index 907cf900de5407f5fffc0b6e7cb4d6ac082972f8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10821 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%0DhsoDmqo;Om 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 AMgRZ+ diff --git a/mods/HUD/hbarmor/settingtypes.txt b/mods/HUD/hbarmor/settingtypes.txt deleted file mode 100644 index 067d5045..00000000 --- a/mods/HUD/hbarmor/settingtypes.txt +++ /dev/null @@ -1,7 +0,0 @@ -#If true, automatically hides the armor HUD bar when the player wears no -#armor. Otherwise, the armor bar shows “0%”. -hbarmor_autohide (Automatically hide armor HUD bar) bool true - -#Time difference in seconds between updates to the armor HUD bar. -#Increase this number for slow servers. -hbarmor_tick (Armor HUD bar update frequency) float 0.1 0.0 4.0 diff --git a/mods/HUD/mcl_hbarmor/README.md b/mods/HUD/mcl_hbarmor/README.md new file mode 100644 index 00000000..0f4816e4 --- /dev/null +++ b/mods/HUD/mcl_hbarmor/README.md @@ -0,0 +1,26 @@ +# MineClone 2 HUD bar for `3d_armor` [`mcl_hbarmor`] + +## Description +This mod adds a simple HUD bar which displays the player's armor points. +The players has 0-20 armor points. + +The armor bar is hidden if the player wears no armor. + +## Licensing +This mod is entirly free softare. + +### Source code +License: MIT License (see below) + +### Textures + +See MineClone 2 license. + +### MIT License +Everything else is under the MIT License: +© Copyright BlockMen (2013-2014) + +This program is free software. It comes without any warranty, to +the extent permitted by applicable law. You can redistribute it +and/or modify it under the terms of the MIT License. +See for more details. diff --git a/mods/HUD/hbarmor/description.txt b/mods/HUD/mcl_hbarmor/description.txt similarity index 100% rename from mods/HUD/hbarmor/description.txt rename to mods/HUD/mcl_hbarmor/description.txt diff --git a/mods/HUD/hbarmor/init.lua b/mods/HUD/mcl_hbarmor/init.lua similarity index 64% rename from mods/HUD/hbarmor/init.lua rename to mods/HUD/mcl_hbarmor/init.lua index c2530b61..f05d5045 100644 --- a/mods/HUD/hbarmor/init.lua +++ b/mods/HUD/mcl_hbarmor/init.lua @@ -1,33 +1,27 @@ -local S = minetest.get_translator("hbarmor") +local S = minetest.get_translator("mcl_hbarmor") if (not armor) or (not armor.def) then - minetest.log("error", "[hbarmor] Outdated 3d_armor version. Please update your version of 3d_armor!") + minetest.log("error", "[mcl_hbarmor] Outdated 3d_armor version. Please update your version of 3d_armor!") end -local hbarmor = {} +local mcl_hbarmor = {} -- HUD statbar values -hbarmor.armor = {} +mcl_hbarmor.armor = {} -- Stores if player's HUD bar has been initialized so far. -hbarmor.player_active = {} +mcl_hbarmor.player_active = {} -- Time difference in seconds between updates to the HUD armor bar. -- Increase this number for slow servers. -hbarmor.tick = 0.1 +mcl_hbarmor.tick = 0.1 -- If true, the armor bar is hidden when the player does not wear any armor -hbarmor.autohide = true +mcl_hbarmor.autohide = true ---load custom settings -local set = minetest.settings:get_bool("hbarmor_autohide") -if set ~= nil then - hbarmor.autohide = set -end - -set = minetest.settings:get("hbarmor_tick") +set = minetest.settings:get("mcl_hbarmor_tick") if tonumber(set) ~= nil then - hbarmor.tick = tonumber(set) + mcl_hbarmor.tick = tonumber(set) end @@ -43,17 +37,17 @@ local function custom_hud(player) local name = player:get_player_name() if minetest.settings:get_bool("enable_damage") then - local ret = hbarmor.get_armor(player) + local ret = mcl_hbarmor.get_armor(player) if ret == false then - minetest.log("error", "[hbarmor] Call to hbarmor.get_armor in custom_hud returned with false!") + minetest.log("error", "[mcl_hbarmor] Call to mcl_hbarmor.get_armor in custom_hud returned with false!") return end - local arm = tonumber(hbarmor.armor[name]) + local arm = tonumber(mcl_hbarmor.armor[name]) if not arm then arm = 0 end local hide - if hbarmor.autohide then + if mcl_hbarmor.autohide then hide = must_hide(name, arm) else hide = false @@ -63,9 +57,9 @@ local function custom_hud(player) end --register and define armor HUD bar -hb.register_hudbar("armor", 0xFFFFFF, S("Armor"), { icon = "hbarmor_icon.png", bgicon = "hbarmor_bgicon.png", bar = "hbarmor_bar.png" }, 0, 20, hbarmor.autohide) +hb.register_hudbar("armor", 0xFFFFFF, S("Armor"), { icon = "hbarmor_icon.png", bgicon = "hbarmor_bgicon.png", bar = "hbarmor_bar.png" }, 0, 20, mcl_hbarmor.autohide) -function hbarmor.get_armor(player) +function mcl_hbarmor.get_armor(player) if not player or not armor.def then return false end @@ -74,25 +68,25 @@ function hbarmor.get_armor(player) if not pts then return false else - hbarmor.set_armor(name, pts) + mcl_hbarmor.set_armor(name, pts) end return true end -function hbarmor.set_armor(player_name, pts) - hbarmor.armor[player_name] = math.max(0, math.min(20, pts)) +function mcl_hbarmor.set_armor(player_name, pts) + mcl_hbarmor.armor[player_name] = math.max(0, math.min(20, pts)) end -- update hud elemtens if value has changed local function update_hud(player) local name = player:get_player_name() --armor - local arm = tonumber(hbarmor.armor[name]) + local arm = tonumber(mcl_hbarmor.armor[name]) if not arm then arm = 0 - hbarmor.armor[name] = 0 + mcl_hbarmor.armor[name] = 0 end - if hbarmor.autohide then + if mcl_hbarmor.autohide then -- hide armor bar completely when there is none if must_hide(name, arm) then hb.hide_hudbar(player, "armor") @@ -108,12 +102,12 @@ end minetest.register_on_joinplayer(function(player) local name = player:get_player_name() custom_hud(player) - hbarmor.player_active[name] = true + mcl_hbarmor.player_active[name] = true end) minetest.register_on_leaveplayer(function(player) local name = player:get_player_name() - hbarmor.player_active[name] = false + mcl_hbarmor.player_active[name] = false end) local main_timer = 0 @@ -121,15 +115,15 @@ local timer = 0 minetest.register_globalstep(function(dtime) main_timer = main_timer + dtime timer = timer + dtime - if main_timer > hbarmor.tick or timer > 4 then + if main_timer > mcl_hbarmor.tick or timer > 4 then if minetest.settings:get_bool("enable_damage") then - if main_timer > hbarmor.tick then main_timer = 0 end + if main_timer > mcl_hbarmor.tick then main_timer = 0 end for _,player in ipairs(minetest.get_connected_players()) do local name = player:get_player_name() - if hbarmor.player_active[name] == true then - local ret = hbarmor.get_armor(player) + if mcl_hbarmor.player_active[name] == true then + local ret = mcl_hbarmor.get_armor(player) if ret == false then - minetest.log("error", "[hbarmor] Call to hbarmor.get_armor in globalstep returned with false!") + minetest.log("error", "[mcl_hbarmor] Call to mcl_hbarmor.get_armor in globalstep returned with false!") end -- update all hud elements update_hud(player) diff --git a/mods/HUD/hbarmor/locale/hbarmor.de.tr b/mods/HUD/mcl_hbarmor/locale/hbarmor.de.tr similarity index 100% rename from mods/HUD/hbarmor/locale/hbarmor.de.tr rename to mods/HUD/mcl_hbarmor/locale/hbarmor.de.tr diff --git a/mods/HUD/hbarmor/locale/hbarmor.es.tr b/mods/HUD/mcl_hbarmor/locale/hbarmor.es.tr similarity index 100% rename from mods/HUD/hbarmor/locale/hbarmor.es.tr rename to mods/HUD/mcl_hbarmor/locale/hbarmor.es.tr diff --git a/mods/HUD/hbarmor/locale/hbarmor.it.tr b/mods/HUD/mcl_hbarmor/locale/hbarmor.it.tr similarity index 100% rename from mods/HUD/hbarmor/locale/hbarmor.it.tr rename to mods/HUD/mcl_hbarmor/locale/hbarmor.it.tr diff --git a/mods/HUD/hbarmor/locale/template.txt b/mods/HUD/mcl_hbarmor/locale/template.txt similarity index 100% rename from mods/HUD/hbarmor/locale/template.txt rename to mods/HUD/mcl_hbarmor/locale/template.txt diff --git a/mods/HUD/hbarmor/mod.conf b/mods/HUD/mcl_hbarmor/mod.conf similarity index 59% rename from mods/HUD/hbarmor/mod.conf rename to mods/HUD/mcl_hbarmor/mod.conf index 80d38910..4d595c8c 100644 --- a/mods/HUD/hbarmor/mod.conf +++ b/mods/HUD/mcl_hbarmor/mod.conf @@ -1,2 +1,2 @@ -name = hbarmor +name = mcl_hbarmor depends = hudbars, 3d_armor diff --git a/mods/HUD/mcl_hbarmor/settingtypes.txt b/mods/HUD/mcl_hbarmor/settingtypes.txt new file mode 100644 index 00000000..cfd875df --- /dev/null +++ b/mods/HUD/mcl_hbarmor/settingtypes.txt @@ -0,0 +1,3 @@ +#Time difference in seconds between updates to the armor HUD bar. +#Increase this number for slow servers. +hbarmor_tick (Armor HUD bar update frequency) float 0.1 0.0 4.0 diff --git a/mods/HUD/hbarmor/textures/hbarmor_bar.png b/mods/HUD/mcl_hbarmor/textures/hbarmor_bar.png similarity index 100% rename from mods/HUD/hbarmor/textures/hbarmor_bar.png rename to mods/HUD/mcl_hbarmor/textures/hbarmor_bar.png diff --git a/mods/HUD/hbarmor/textures/hbarmor_bgicon.png b/mods/HUD/mcl_hbarmor/textures/hbarmor_bgicon.png similarity index 100% rename from mods/HUD/hbarmor/textures/hbarmor_bgicon.png rename to mods/HUD/mcl_hbarmor/textures/hbarmor_bgicon.png diff --git a/mods/HUD/hbarmor/textures/hbarmor_icon.png b/mods/HUD/mcl_hbarmor/textures/hbarmor_icon.png similarity index 100% rename from mods/HUD/hbarmor/textures/hbarmor_icon.png rename to mods/HUD/mcl_hbarmor/textures/hbarmor_icon.png diff --git a/tools/Conversion_Table.csv b/tools/Conversion_Table.csv index 8444b022..ab4a9451 100644 --- a/tools/Conversion_Table.csv +++ b/tools/Conversion_Table.csv @@ -1,7 +1,7 @@ Source path,Source file,Target path,Target file,xs,ys,xl,yl,xt,yt,Blacklisted? /assets/minecraft/textures/particle,particles.png,/mods/CORE/mcl_particles/textures,mcl_particles_bubble.png,0,16,8,8,0,0,y -/assets/minecraft/textures/gui,icons.png,/mods/HUD/hbarmor/textures,hbarmor_icon.png,34,9,9,9,0,0,y -/assets/minecraft/textures/gui,icons.png,/mods/HUD/hbarmor/textures,hbarmor_bgicon.png,16,9,9,9,0,0,y +/assets/minecraft/textures/gui,icons.png,/mods/HUD/mcl_hbarmor/textures,hbarmor_icon.png,34,9,9,9,0,0,y +/assets/minecraft/textures/gui,icons.png,/mods/HUD/mcl_hbarmor/textures,hbarmor_bgicon.png,16,9,9,9,0,0,y /assets/minecraft/textures/gui,icons.png,/mods/HUD/hudbars/textures,hudbars_icon_health.png,52,0,9,9,0,0,y /assets/minecraft/textures/gui,icons.png,/mods/HUD/hudbars/textures,hudbars_bgicon_health.png,16,0,9,9,0,0,y /assets/minecraft/textures/gui,icons.png,/mods/HUD/hudbars/textures,hudbars_icon_breath.png,16,18,9,9,0,0,y From 33acd2327f5eff2a216bbd6b0637ba958edba800 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 17 Feb 2020 20:41:58 +0100 Subject: [PATCH 518/737] Remove unused and dead code in 3d_armor mod --- .../minetest-3d_armor/3d_armor/README.txt | 23 +-- .../minetest-3d_armor/3d_armor/armor.conf | 23 --- .../3d_armor/armor.conf.example | 61 ------ .../minetest-3d_armor/3d_armor/armor.lua | 174 +----------------- 4 files changed, 8 insertions(+), 273 deletions(-) delete mode 100644 mods/ITEMS/minetest-3d_armor/3d_armor/armor.conf delete mode 100644 mods/ITEMS/minetest-3d_armor/3d_armor/armor.conf.example diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor/README.txt b/mods/ITEMS/minetest-3d_armor/3d_armor/README.txt index 224f81c9..8f44f375 100644 --- a/mods/ITEMS/minetest-3d_armor/3d_armor/README.txt +++ b/mods/ITEMS/minetest-3d_armor/3d_armor/README.txt @@ -1,24 +1,11 @@ [mod] Visible Player Armor [3d_armor] ===================================== - -Depends: default - -Recommends: inventory_plus or unified_inventory (use only one) +MineClone 2 edition +------------------------------------- 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 some forms of damage. -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. - -Fire protection added by TenPlus1 when using crystal armor if Ethereal mod active, level 1 -protects against torches, level 2 for crystal spike, level 3 for fire, level 5 for lava. - -Configuration -------------- - -Armor 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. +Armor takes damage when a player is hurt. +This mod is based on 3D Armor mod by stu. diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor/armor.conf b/mods/ITEMS/minetest-3d_armor/3d_armor/armor.conf deleted file mode 100644 index 3d22006f..00000000 --- a/mods/ITEMS/minetest-3d_armor/3d_armor/armor.conf +++ /dev/null @@ -1,23 +0,0 @@ --- Armor Configuration -ARMOR_MATERIALS = { - leather = "mcl_mobitems:leather", - iron = "mcl_core:iron_ingot", - chain = nil, - gold = "mcl_core:gold_ingot", - diamond = "mcl_core:diamond", -} - -ARMOR_FIRE_PROTECT = false - -ARMOR_FIRE_NODES = { - {"default:lava_source", 5, 4}, - {"default:lava_flowing", 5, 4}, - {"mcl_fire:fire", 3, 4}, - {"mcl_fire:eternal_fire", 3, 4}, -} - --- Armor drop/destroy disabled. Armor dropping is handled in mcl_death -ARMOR_DROP = false -ARMOR_DESTROY = false -ARMOR_HEAL_MULTIPLIER = 0 -ARMOR_RADIATION_MULTIPLIER = 0 diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor/armor.conf.example b/mods/ITEMS/minetest-3d_armor/3d_armor/armor.conf.example deleted file mode 100644 index 75e072d9..00000000 --- a/mods/ITEMS/minetest-3d_armor/3d_armor/armor.conf.example +++ /dev/null @@ -1,61 +0,0 @@ --- 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/ITEMS/minetest-3d_armor/3d_armor/armor.lua b/mods/ITEMS/minetest-3d_armor/3d_armor/armor.lua index adfb0291..11f6441d 100644 --- a/mods/ITEMS/minetest-3d_armor/3d_armor/armor.lua +++ b/mods/ITEMS/minetest-3d_armor/3d_armor/armor.lua @@ -1,55 +1,10 @@ -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 = "mcl_core:cactus", - iron = "mcl_core:iron_ingot", - bronze = "mcl_core:bronze_ingot", - diamond = "mcl_core:diamond", - gold = "mcl_core:gold_ingot", - mithril = "moreores:mithril_ingot", - crystal = "ethereal:crystal_ingot", -} -ARMOR_FIRE_PROTECT = minetest.get_modpath("ethereal") ~= nil -ARMOR_FIRE_NODES = { - {"mcl_core:lava_source", 5, 8}, - {"mcl_core:lava_flowing", 5, 8}, - {"fire:basic_flame", 3, 4}, - {"fire:permanent_flame", 3, 4}, - {"ethereal:crystal_spike", 2, 1}, - {"ethereal:fire_flower", 2, 1}, - {"mcl_torches:torch", 1, 1}, -} +local ARMOR_INIT_DELAY = 1 +local ARMOR_INIT_TIMES = 1 +local ARMOR_BONES_DELAY = 1 local skin_mod = nil local modpath = minetest.get_modpath(minetest.get_current_modname()) -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 = { timer = 0, @@ -104,9 +59,6 @@ armor.set_player_armor = function(self, player) local armor_texture = "blank.png" local armor_level = 0 local mcl_armor_points = 0 - local armor_fire = 0 - local armor_water = 0 - local armor_radiation = 0 local items = 0 local elements = {} local textures = {} @@ -131,9 +83,6 @@ armor.set_player_armor = function(self, player) armor_level = armor_level + level items = items + 1 mcl_armor_points = mcl_armor_points + (def.groups["mcl_armor_points"] 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 @@ -160,20 +109,15 @@ armor.set_player_armor = function(self, player) if material.type and material.count == #self.elements then armor_level = armor_level * 1.1 end - armor_level = armor_level * ARMOR_LEVEL_MULTIPLIER - mcl_armor_points = mcl_armor_points * ARMOR_HEAL_MULTIPLIER - armor_radiation = armor_radiation * ARMOR_RADIATION_MULTIPLIER if #textures > 0 then armor_texture = table.concat(textures, "^") end local armor_groups = player:get_armor_groups() armor_groups.fleshy = 100 armor_groups.level = nil - armor_groups.radiation = nil 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) -- Physics override intentionally removed because of possible conflicts @@ -185,9 +129,6 @@ armor.set_player_armor = function(self, player) 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 @@ -247,8 +188,6 @@ armor.get_armor_formspec = function(self, name) formspec = formspec:gsub("armor_preview", armor.textures[name].preview) formspec = formspec:gsub("armor_level", armor.def[name].level) formspec = formspec:gsub("mcl_armor_points", 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 @@ -390,9 +329,6 @@ minetest.register_on_joinplayer(function(player) jump = 1, speed = 1, gravity = 1, - fire = 0, - water = 0, - radiation = 0, } armor.textures[name] = { skin = armor.default_skin..".png", @@ -445,60 +381,6 @@ minetest.register_on_joinplayer(function(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:set_velocity({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 ARMOR_DESTROY == false then - minetest.after(ARMOR_BONES_DELAY, function(pos, drop) - 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, pos, drop) - end - end) -end - minetest.register_on_player_hpchange(function(player, hp_change, reason) local name, player_inv, armor_inv = armor:get_valid_player(player, "[on_hpchange]") if name and hp_change < 0 then @@ -554,53 +436,3 @@ minetest.register_on_player_hpchange(function(player, hp_change, reason) 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:get_pos() - 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) From 97d293f8b4263dc7e11929d64d0f0aa3c1c66d44 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 17 Feb 2020 20:53:31 +0100 Subject: [PATCH 519/737] Add armor factoid --- mods/HELP/mcl_doc/init.lua | 41 ++++++++++++++++++++++++++ mods/HELP/mcl_doc/locale/mcl_doc.de.tr | 6 ++++ mods/HELP/mcl_doc/locale/template.txt | 6 ++++ 3 files changed, 53 insertions(+) diff --git a/mods/HELP/mcl_doc/init.lua b/mods/HELP/mcl_doc/init.lua index c4018f85..e6bdae33 100644 --- a/mods/HELP/mcl_doc/init.lua +++ b/mods/HELP/mcl_doc/init.lua @@ -128,6 +128,47 @@ doc.sub.items.register_factoid(nil, "groups", function(itemstring, def) return s end) +-- Armor +doc.sub.items.register_factoid("tools", "use", function(itemstring, def) + local def = minetest.registered_items[itemstring] + local s = "" + local head = minetest.get_item_group(itemstring, "armor_head") + local torso = minetest.get_item_group(itemstring, "armor_torso") + local legs = minetest.get_item_group(itemstring, "armor_legs") + local feet = minetest.get_item_group(itemstring, "armor_feet") + if head > 0 then + s = s .. S("It can be worn on the head.") + s = s .. "\n" + end + if torso > 0 then + s = s .. S("It can be worn on the torso.") + s = s .. "\n" + end + if legs > 0 then + s = s .. S("It can be worn on the legs.") + s = s .. "\n" + end + if feet > 0 then + s = s .. S("It can be worn on the feet.") + s = s .. "\n" + end + return s +end) +doc.sub.items.register_factoid("tools", "groups", function(itemstring, def) + local def = minetest.registered_items[itemstring] + local s = "" + local use = minetest.get_item_group(itemstring, "mcl_armor_uses") + local pts = minetest.get_item_group(itemstring, "mcl_armor_points") + if pts > 0 then + s = s .. S("Armor points: @1", pts) + s = s .. "\n" + end + if use > 0 then + s = s .. S("Armor durability: @1", use) + end + return s +end) + -- TODO: Move this info to the crafting guide doc.sub.items.register_factoid(nil, "groups", function(itemstring, def) if def._repair_material then diff --git a/mods/HELP/mcl_doc/locale/mcl_doc.de.tr b/mods/HELP/mcl_doc/locale/mcl_doc.de.tr index dc4e8562..e929f9ae 100644 --- a/mods/HELP/mcl_doc/locale/mcl_doc.de.tr +++ b/mods/HELP/mcl_doc/locale/mcl_doc.de.tr @@ -71,3 +71,9 @@ Instantaneous=Unmittelbar Unlimited uses=Unbegrenzte Verwendungen Block breaking strength: @1=Blockbruchstärke: @1 Mining durability: @1=Grabehaltbarkeit: @1 +Armor points: @1=Rüstungspunkte: @1 +Armor durability: @1=Rüstungshaltbarkeit: @1 +It can be worn on the head.=Es kann auf dem Kopf getragen werden. +It can be worn on the torso.=Es kann am Torso getragen werden. +It can be worn on the legs.=Es kann an den Beinen getragen werden. +It can be worn on the feet.=Es kann an den Füßen getragen werden. diff --git a/mods/HELP/mcl_doc/locale/template.txt b/mods/HELP/mcl_doc/locale/template.txt index b622bde9..de652f05 100644 --- a/mods/HELP/mcl_doc/locale/template.txt +++ b/mods/HELP/mcl_doc/locale/template.txt @@ -71,3 +71,9 @@ Instantaneous= Unlimited uses= Block breaking strength: @1= Mining durability: @1= +Armor points: @1= +Armor durability: @1= +It can be worn on the head.= +It can be worn on the torso.= +It can be worn on the legs.= +It can be worn on the feet.= From ae7615c55705a9039ebf5cc6f1559c2270f40275 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 17 Feb 2020 20:58:29 +0100 Subject: [PATCH 520/737] Move armor factoid to nil group --- mods/HELP/mcl_doc/init.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/HELP/mcl_doc/init.lua b/mods/HELP/mcl_doc/init.lua index e6bdae33..6f9b5a20 100644 --- a/mods/HELP/mcl_doc/init.lua +++ b/mods/HELP/mcl_doc/init.lua @@ -129,7 +129,7 @@ doc.sub.items.register_factoid(nil, "groups", function(itemstring, def) end) -- Armor -doc.sub.items.register_factoid("tools", "use", function(itemstring, def) +doc.sub.items.register_factoid(nil, "use", function(itemstring, def) local def = minetest.registered_items[itemstring] local s = "" local head = minetest.get_item_group(itemstring, "armor_head") @@ -154,7 +154,7 @@ doc.sub.items.register_factoid("tools", "use", function(itemstring, def) end return s end) -doc.sub.items.register_factoid("tools", "groups", function(itemstring, def) +doc.sub.items.register_factoid(nil, "groups", function(itemstring, def) local def = minetest.registered_items[itemstring] local s = "" local use = minetest.get_item_group(itemstring, "mcl_armor_uses") From f700463c4fe9a5f3a19d335790e66ecadc65a42d Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 17 Feb 2020 21:49:12 +0100 Subject: [PATCH 521/737] Increase FOV to 86.1 --- mods/PLAYER/mcl_player/init.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/mods/PLAYER/mcl_player/init.lua b/mods/PLAYER/mcl_player/init.lua index a766eed2..d2dca49c 100644 --- a/mods/PLAYER/mcl_player/init.lua +++ b/mods/PLAYER/mcl_player/init.lua @@ -107,6 +107,7 @@ minetest.register_on_joinplayer(function(player) mcl_player.player_attached[player:get_player_name()] = false mcl_player.player_set_model(player, "character.b3d") player:set_local_animation({x=0, y=79}, {x=168, y=187}, {x=189, y=198}, {x=200, y=219}, 30) + player:set_fov(86.1) -- see >>> end) minetest.register_on_leaveplayer(function(player) From ef077fed7286330df374722e942af57c79c1efbc Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 18 Feb 2020 07:33:08 +0100 Subject: [PATCH 522/737] Add armor equip/unequip sounds --- .../minetest-3d_armor/3d_armor/README.txt | 17 +++++ .../minetest-3d_armor/3d_armor/armor.lua | 20 +++++- .../ITEMS/minetest-3d_armor/3d_armor/init.lua | 64 ++++++++++++++++++ .../sounds/3d_armor_equip_chainmail.ogg | Bin 0 -> 17331 bytes .../sounds/3d_armor_equip_diamond.ogg | Bin 0 -> 16647 bytes .../sounds/3d_armor_equip_generic.ogg | Bin 0 -> 17882 bytes .../3d_armor/sounds/3d_armor_equip_iron.ogg | Bin 0 -> 17566 bytes .../sounds/3d_armor_equip_leather.ogg | Bin 0 -> 14777 bytes .../sounds/3d_armor_unequip_chainmail.ogg | Bin 0 -> 18699 bytes .../sounds/3d_armor_unequip_diamond.ogg | Bin 0 -> 16968 bytes .../3d_armor/sounds/3d_armor_unequip_iron.ogg | Bin 0 -> 21675 bytes .../sounds/3d_armor_unequip_leather.ogg | Bin 0 -> 13956 bytes 12 files changed, 100 insertions(+), 1 deletion(-) create mode 100644 mods/ITEMS/minetest-3d_armor/3d_armor/sounds/3d_armor_equip_chainmail.ogg create mode 100644 mods/ITEMS/minetest-3d_armor/3d_armor/sounds/3d_armor_equip_diamond.ogg create mode 100644 mods/ITEMS/minetest-3d_armor/3d_armor/sounds/3d_armor_equip_generic.ogg create mode 100644 mods/ITEMS/minetest-3d_armor/3d_armor/sounds/3d_armor_equip_iron.ogg create mode 100644 mods/ITEMS/minetest-3d_armor/3d_armor/sounds/3d_armor_equip_leather.ogg create mode 100644 mods/ITEMS/minetest-3d_armor/3d_armor/sounds/3d_armor_unequip_chainmail.ogg create mode 100644 mods/ITEMS/minetest-3d_armor/3d_armor/sounds/3d_armor_unequip_diamond.ogg create mode 100644 mods/ITEMS/minetest-3d_armor/3d_armor/sounds/3d_armor_unequip_iron.ogg create mode 100644 mods/ITEMS/minetest-3d_armor/3d_armor/sounds/3d_armor_unequip_leather.ogg diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor/README.txt b/mods/ITEMS/minetest-3d_armor/3d_armor/README.txt index 8f44f375..92ff6d14 100644 --- a/mods/ITEMS/minetest-3d_armor/3d_armor/README.txt +++ b/mods/ITEMS/minetest-3d_armor/3d_armor/README.txt @@ -9,3 +9,20 @@ a player's armor group level making them less vulnerable to some forms of damage Armor takes damage when a player is hurt. This mod is based on 3D Armor mod by stu. + +Media credits +------------- +* 3d_armor_equip_diamond.ogg +* 3d_armor_unequip_diamond.ogg +Licensed CC0, by Freesound.org user juryduty. +Source: + +* 3d_armor_equip_iron.ogg +* 3d_armor_unequip_iron.ogg +Licensed CC0, by Freesound.org user mtchanary. +Source: + +All other sounds licensed CC0 by OpenGameArt.org user artisticdude. +Source: + +Other media files: See MineClone 2 license. diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor/armor.lua b/mods/ITEMS/minetest-3d_armor/3d_armor/armor.lua index 11f6441d..8661f641 100644 --- a/mods/ITEMS/minetest-3d_armor/3d_armor/armor.lua +++ b/mods/ITEMS/minetest-3d_armor/3d_armor/armor.lua @@ -265,6 +265,22 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) end end) +local function play_equip_sound(player, stack, unequip) + local def = stack:get_definition() + local estr = "equip" + if unequip then + estr = "unequip" + end + local snd = def.sounds and def.sounds["_mcl_armor_"..estr] + if not snd then + -- Fallback sound + snd = { name = "3d_armor_"..estr.."_iron" } + end + if snd then + minetest.sound_play(snd, {object=player, gain=0.5, max_hear_distance=8}) + end +end + minetest.register_on_joinplayer(function(player) mcl_player.player_set_model(player, "3d_armor_character.b3d") local name = player:get_player_name() @@ -274,11 +290,13 @@ minetest.register_on_joinplayer(function(player) player:get_inventory():set_stack(listname, index, stack) armor:set_player_armor(player) armor:update_inventory(player) + play_equip_sound(player, stack) 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) + play_equip_sound(player, stack, true) end, on_move = function(inv, from_list, from_index, to_list, to_index, count, player) local plaver_inv = player:get_inventory() @@ -287,6 +305,7 @@ minetest.register_on_joinplayer(function(player) player_inv:set_stack(from_list, from_index, nil) armor:set_player_armor(player) armor:update_inventory(player) + play_equip_sound(player, stack) end, allow_put = function(inv, listname, index, stack, player) local iname = stack:get_name() @@ -435,4 +454,3 @@ minetest.register_on_player_hpchange(function(player, hp_change, reason) end return hp_change end, true) - diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor/init.lua b/mods/ITEMS/minetest-3d_armor/3d_armor/init.lua index f3b28177..774bd07a 100644 --- a/mods/ITEMS/minetest-3d_armor/3d_armor/init.lua +++ b/mods/ITEMS/minetest-3d_armor/3d_armor/init.lua @@ -14,6 +14,10 @@ minetest.register_tool("3d_armor:helmet_leather", { inventory_image = "3d_armor_inv_helmet_leather.png", groups = {armor_head=1, mcl_armor_points=1, mcl_armor_uses=56}, _repair_material = "mcl_mobitems:leather", + sounds = { + _mcl_armor_equip = "3d_armor_equip_leather", + _mcl_armor_unequip = "3d_armor_unequip_leather", + }, }) minetest.register_tool("3d_armor:helmet_iron", { @@ -23,6 +27,10 @@ minetest.register_tool("3d_armor:helmet_iron", { inventory_image = "3d_armor_inv_helmet_iron.png", groups = {armor_head=1, mcl_armor_points=2, mcl_armor_uses=166}, _repair_material = "mcl_core:iron_ingot", + sounds = { + _mcl_armor_equip = "3d_armor_equip_iron", + _mcl_armor_unequip = "3d_armor_unequip_iron", + }, }) minetest.register_tool("3d_armor:helmet_gold", { @@ -41,6 +49,10 @@ minetest.register_tool("3d_armor:helmet_diamond",{ inventory_image = "3d_armor_inv_helmet_diamond.png", groups = {armor_head=1, mcl_armor_points=3, mcl_armor_uses=364, mcl_armor_toughness=2}, _repair_material = "mcl_core:diamond", + sounds = { + _mcl_armor_equip = "3d_armor_equip_diamond", + _mcl_armor_unequip = "3d_armor_unequip_diamond", + }, }) minetest.register_tool("3d_armor:helmet_chain", { @@ -50,6 +62,10 @@ minetest.register_tool("3d_armor:helmet_chain", { inventory_image = "3d_armor_inv_helmet_chain.png", groups = {armor_head=1, mcl_armor_points=2, mcl_armor_uses=166}, _repair_material = "mcl_core:iron_ingot", + sounds = { + _mcl_armor_equip = "3d_armor_equip_chainmail", + _mcl_armor_unequip = "3d_armor_unequip_chainmail", + }, }) -- Regisiter Torso Armor @@ -61,6 +77,10 @@ minetest.register_tool("3d_armor:chestplate_leather", { inventory_image = "3d_armor_inv_chestplate_leather.png", groups = {armor_torso=1, mcl_armor_points=3, mcl_armor_uses=81}, _repair_material = "mcl_mobitems:leather", + sounds = { + _mcl_armor_equip = "3d_armor_equip_leather", + _mcl_armor_unequip = "3d_armor_unequip_leather", + }, }) minetest.register_tool("3d_armor:chestplate_iron", { @@ -70,6 +90,10 @@ minetest.register_tool("3d_armor:chestplate_iron", { inventory_image = "3d_armor_inv_chestplate_iron.png", groups = {armor_torso=1, mcl_armor_points=6, mcl_armor_uses=241}, _repair_material = "mcl_core:iron_ingot", + sounds = { + _mcl_armor_equip = "3d_armor_equip_iron", + _mcl_armor_unequip = "3d_armor_unequip_iron", + }, }) minetest.register_tool("3d_armor:chestplate_gold", { @@ -88,6 +112,10 @@ minetest.register_tool("3d_armor:chestplate_diamond",{ inventory_image = "3d_armor_inv_chestplate_diamond.png", groups = {armor_torso=1, mcl_armor_points=8, mcl_armor_uses=529, mcl_armor_toughness=2}, _repair_material = "mcl_core:diamond", + sounds = { + _mcl_armor_equip = "3d_armor_equip_diamond", + _mcl_armor_unequip = "3d_armor_unequip_diamond", + }, }) minetest.register_tool("3d_armor:chestplate_chain", { @@ -97,6 +125,10 @@ minetest.register_tool("3d_armor:chestplate_chain", { inventory_image = "3d_armor_inv_chestplate_chain.png", groups = {armor_torso=1, mcl_armor_points=5, mcl_armor_uses=241}, _repair_material = "mcl_core:iron_ingot", + sounds = { + _mcl_armor_equip = "3d_armor_equip_chainmail", + _mcl_armor_unequip = "3d_armor_unequip_chainmail", + }, }) -- Regisiter Leg Armor @@ -108,6 +140,10 @@ minetest.register_tool("3d_armor:leggings_leather", { inventory_image = "3d_armor_inv_leggings_leather.png", groups = {armor_legs=1, mcl_armor_points=2, mcl_armor_uses=76}, _repair_material = "mcl_mobitems:leather", + sounds = { + _mcl_armor_equip = "3d_armor_equip_leather", + _mcl_armor_unequip = "3d_armor_unequip_leather", + }, }) minetest.register_tool("3d_armor:leggings_iron", { @@ -117,6 +153,10 @@ minetest.register_tool("3d_armor:leggings_iron", { inventory_image = "3d_armor_inv_leggings_iron.png", groups = {armor_legs=1, mcl_armor_points=5, mcl_armor_uses=226}, _repair_material = "mcl_core:iron_ingot", + sounds = { + _mcl_armor_equip = "3d_armor_equip_iron", + _mcl_armor_unequip = "3d_armor_unequip_iron", + }, }) minetest.register_tool("3d_armor:leggings_gold", { @@ -135,6 +175,10 @@ minetest.register_tool("3d_armor:leggings_diamond",{ inventory_image = "3d_armor_inv_leggings_diamond.png", groups = {armor_legs=1, mcl_armor_points=6, mcl_armor_uses=496, mcl_armor_toughness=2}, _repair_material = "mcl_core:diamond", + sounds = { + _mcl_armor_equip = "3d_armor_equip_diamond", + _mcl_armor_unequip = "3d_armor_unequip_diamond", + }, }) minetest.register_tool("3d_armor:leggings_chain", { @@ -144,6 +188,10 @@ minetest.register_tool("3d_armor:leggings_chain", { inventory_image = "3d_armor_inv_leggings_chain.png", groups = {armor_legs=1, mcl_armor_points=4, mcl_armor_uses=226}, _repair_material = "mcl_core:iron_ingot", + sounds = { + _mcl_armor_equip = "3d_armor_equip_chainmail", + _mcl_armor_unequip = "3d_armor_unequip_chainmail", + }, }) -- Regisiter Boots @@ -154,6 +202,10 @@ minetest.register_tool("3d_armor:boots_leather", { inventory_image = "3d_armor_inv_boots_leather.png", groups = {armor_feet=1, mcl_armor_points=1, mcl_armor_uses=66}, _repair_material = "mcl_mobitems:leather", + sounds = { + _mcl_armor_equip = "3d_armor_equip_leather", + _mcl_armor_unequip = "3d_armor_unequip_leather", + }, }) minetest.register_tool("3d_armor:boots_iron", { @@ -163,6 +215,10 @@ minetest.register_tool("3d_armor:boots_iron", { inventory_image = "3d_armor_inv_boots_iron.png", groups = {armor_feet=1, mcl_armor_points=2, mcl_armor_uses=196}, _repair_material = "mcl_core:iron_ingot", + sounds = { + _mcl_armor_equip = "3d_armor_equip_iron", + _mcl_armor_unequip = "3d_armor_unequip_iron", + }, }) minetest.register_tool("3d_armor:boots_gold", { @@ -181,6 +237,10 @@ minetest.register_tool("3d_armor:boots_diamond",{ inventory_image = "3d_armor_inv_boots_diamond.png", groups = {armor_feet=1, mcl_armor_points=3, mcl_armor_uses=430, mcl_armor_toughness=2}, _repair_material = "mcl_core:diamond", + sounds = { + _mcl_armor_equip = "3d_armor_equip_diamond", + _mcl_armor_unequip = "3d_armor_unequip_diamond", + }, }) minetest.register_tool("3d_armor:boots_chain", { @@ -190,6 +250,10 @@ minetest.register_tool("3d_armor:boots_chain", { inventory_image = "3d_armor_inv_boots_chain.png", groups = {armor_feet=1, mcl_armor_points=1, mcl_armor_uses=196}, _repair_material = "mcl_core:iron_ingot", + sounds = { + _mcl_armor_equip = "3d_armor_equip_chainmail", + _mcl_armor_unequip = "3d_armor_unequip_chainmail", + }, }) -- Register Craft Recipies diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor/sounds/3d_armor_equip_chainmail.ogg b/mods/ITEMS/minetest-3d_armor/3d_armor/sounds/3d_armor_equip_chainmail.ogg new file mode 100644 index 0000000000000000000000000000000000000000..3e98e0e05c862341adda7211c882cdf6183de1c2 GIT binary patch literal 17331 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 literal 0 HcmV?d00001 diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor/sounds/3d_armor_equip_generic.ogg b/mods/ITEMS/minetest-3d_armor/3d_armor/sounds/3d_armor_equip_generic.ogg new file mode 100644 index 0000000000000000000000000000000000000000..29b4bcd5f56c46fe96a9d0b5995b55a926a7ac0a GIT binary patch literal 17882 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

    !g7>dxTv+SS zT2uRY^YJy(Z&pXy&NB5r!pzWM$auww_f)2G+nJ@YT9=~=j=$e_KO*`_@$IA9Q-cpR zb~{YU3~)Q@om_7JI@##4^0~D?udMKU`d{l-mvT*z_(sF{U2S0tx?FNUUjII^OK3;6 z_v7-;EX}oZ_ISNtsVh;k^6~GC-`~Gj{q(ijX*VHVEnM0p`n~f8zhCBGD~ldf)qnL= zZpquZREur){PSK%xMz^9L+dP}NIJ>sVP0O%9eg9r|)&H0O&JVQgS~;6#cDY09 z59QS9QEQK6^uD(|6aVb#wJ7Uf@#Qv`w`^LZXKMZC`&;$JGS`1eU!0w4)R)ZIpPu`C z854h^`7%) zUB2h}_3yhX;(G6OG@jd(KKs=5BNyHunPxX@b@Nr}hd zYMZU+zpxjLo{@ZMt@wwa=k>*hrT^L9uZfxMbaQL*JB@z=zkgow%K3R`>l@Br6Zlr2 zsw(?)SwLDR2Y{r)}A_130)_eAVj%$n}LlYhDL{8BwtnfWW_|Jm=FeQXJr zf7$(g-&;QYt#owy6c}{h=fwHX>X${!-ZAem%iHwj=lgT<@A4P@n|Jj6nyNpk&3n(q e+`oO}@c-|r>GR^c?$0}3z<2(;Q2@gkMg{&k{Qg{!3fp~W`hWj zPDTa>h6B5gFB5F~j|#3bLrgMdU|@*IEXdIFFG^R)$xI3Zo3G%hU}RuuVPI@%rl8@M zU#?(iV4$jymRg=#q)?oZnv+wk338wa0|SF&P>5%6h^lE~66)%|1pimrVAvdbwh8pVcdkEf<`)b+=sd z@-e&`mb`8+TWn47Im_pBpadt_9|{Z%EKY2aDFRL$AmckUm(3{RGCBeAmI6ZqC}P|v zig<1mIlWQl>_rv-Pdb6ZrWcJ}gF}2nLqkJLW5df*ua}ixFRP85(Hgy@HgZR6^o`co z@2!avZBX>1_WpMe0()J7kzs+d<+R6|i2$sMDXKAaC%{3U{IW!HZ7}x!+1g>I9NadEwPZp znFnGM3j;&P!Y2x|F3kFT){<}5(*-L_?+bPIef<9khHnr}$jwt=ZW-Ib-J(pZl3I=iOOOkQjRMabRFz zNxUI(Y;Kc6Z68~bh~hHE$#NzAe3KU#p3qz(*W2gjwX!)NNK$=iNfX%T3JeS_0^n2( zBfv=+l8Tp1>e4!;vH6VAX&n%;=I}YI*BcHCIP(~8x#Xo|dNnM$ck8ox#p^6RvX^eX z7Nxy(N|2Z4QgHZzGKfOT1V=VWa3*P+QFKak`GO`cNN_?T?t{vCLD`E)==?{SKq1vY zA=QgUy1~Y_p&_B+Wx0{lOK)#)jlEHN|9b8H>%H;fZRiOLo^u$SI22pJd2&ipkKyq- z&3;atkO+q5oI;V~6J<_LRPo-V;(JNw>?afd&n6dzT?0*ggGFO6ik4m$OAR)Qy=kImDAEYXRVw$@8!xxTwo=LoRiVDd`8#uj;`k&eHxw9GCOCj+PNs_)VkNZ2qJjS zaW7JFF9PKp*CG|9oO8fX#yLpk_$D3S&k#S_UNp81EpZh`jsOOR0~2_>!R1I`knYtW z)2l(cp&_>Tb4+Mx=v5Qn%O;H%CQM~ukYr$Zag;-`MPSn6X;A|E!cSRhn0}8lOcObB zuX^bW$G)NuGn2e5HMTB4XSlRuVobF5M5QB%d{&`;nkyWiU-RV9Wp{E8V_^tnU|?|S zFgzlW)Z=(U!KKHLL$amAkWI1qf+L4&>l7mn#i|4tkEIL@ z4GioI4Gi21FH8_+beO}y&@`dA!;nKXS-^^8Wr;x0Dv9O^mg=g-d|n!=O9i~VM3V)K zo~xvs^W;=rBI4z_vUx&~#?qw$URjz;C4#+l%LIbBmM#(T%GBH{678jXtjmyNW^s_w z^Cc}oQCv%xOtVy9+B_kMec_ZzLD@@}Tr+yUq~wCK6NXu`5nJ=cuVV^_rLG%G7fpqb@mW zEM0Ob%5&+~055OVrPrJ^*KWO*5Vu@r3i(rZ!KTepEM-x3m(3DS|Z_Sm(kH7l1&1ZNv=yOz~!cuXewtmRUXzRS$_s3i=gO_uqI%bEl?wJU zTy`zXXXR0e zG3L-bD$#OGVW~v3facK|#R5u8C5ri+j?E|*@Hz=%Y09<;f#OBLOH)&nfg#`l1A{<9 z^Rgq47+TxburN3=F-WvbNjhWsTw%(jpq2?iJ(ka9T7rVQ1cJH@pU-Iy@ba1(R-GVCQ3CV063S={D8%M#iC5_66W1 zE5g8#z>~yd*fytFz=&gFF^?0wV$nIzmrGKDoH7-c`gnP$E)lbQzN93`NOR%RfFL#1 zB_UCo3=D4$FfzP3;G|)aqRKFVoq<7diAZvfVcV3TF2iFo&R&|JHjd^}P#fp@l%O8N zV>60-43EhapR+tBk$lGTxlHmI!{>8~`wWkPS|7(j63^!(LmDHT3=CQY3=A9_0#k~c zCN6Mt4r5|i$-vNJ=miSHAgNY~;&YZ9OHDispUo*2@LCDsP6>i=HB~{fic=;9fn=RD zRF|H!N(3=AJw z*clcuNr$;xXi9PGfc?nGa6qDYf+L$^GN@(LBH+Zq$-p21a;L#U9ucWcLJS_P3=BL$ zU54ySmxzGVmY1g{C{=(`3Mi?8BEQQJoN%(|7K77*gf)a~*aqPy^MD+lZFnsTq*x;R z%vMlNH@p^=?X`BRMD|+K=To9Uvc>0E85B$`7#d`6Y_K}yc`+hkp`tcpgAD_NhbFjT zxfB!|$7XGPPN zEZt*K*=M&tpA-aEvUcZkkSW(%3=XO{EDn2JihP(+01k&c z3=D3X$L19CfvRHxCyuF*Yzm1ut)<`uqX>#Z#S~EfErCcloj{Ukxd6)8V2J=H&85ZX zEZHGCS^~U4ITU2Fke9~NDd5y4;KZ>MlrN!5gg^-^$O=>|ffJjT=2Eb2E#MRv<3Vfm17z2aE;Tg$&j_M1iOo_^#(G=kHV#$(AUO5|0y&OS- z738&c>oubnE2d2H@>+XTEV*Z9b5M|$>e4GoJsYp_IeF=B6^riP_$(@$ec_TRQQe>f zwr+3p1h4G1PbHE!SU$hysG+&_MpBRI^{8sTm0QG;d$xXy$v$h@5fs#AculJKtm*eV z-d<~u&dOeA%09nXVA;|eS-qyu=Tr+={kRg4yIPQ?hK5zM5riIVyha3;XiQWPR zhZuuN6Rb{exYQx-e?Xv7L~0WkLkA;+LXRVxVhbd)le!>T9g&ZZu`n>GSuilLL>ydq z=F+O(N6Y*^E#haIe?f5eM8)YrhLeRI`>zCaPfchKD`*yP09R-y7#IXPHa?3g?h}}D zE$Qvf5HHKDjnAhjHqF^G$NMCYqhD0EZpsM_b;E5UMlB*+ZbiME64aBldSgkCq36n@ z)4ZN5FfcGQF)%O-8VPfVI5al$FjzQvOkiT*;^vV(?CRj4r?~jQf&w24^|@vY42~UV z1Ufs8Di|)5($HGQ+;Eh&t%l*mg&Q8bcQoiR$6PoX%kISCB+wKg^Gg*f}`4xOsT__yq)ofI9qOH4P1*&J_cL0|Ns?Ljz>Yp+Oid#o(69>J3t8)O*`X zIVv_btuU{ou&}V?|NloxiE#y`IYl`+`9+1vX{m{&Wfj$FIXAw<<~J|4FDr}w_r&ww z-d$hs^|maPeknft5)YJN3T&^I7w`{7*01 z#QuB2S^aQY^sa7=y>DVq+!Ff#D}L>zGyW^|qJHju%VWF!anAR5AsfXid9%;h+02-~ z#54Xx;#Lpo=r@5;3X8SouDKd`rHRqzsB>CVe|O*KYkIb-zkhyN9JfESy!`zX{aMlP_^zDzygYg1i-Pqf zEb|Z6FWl%=9dT~@@mAB%xA(aoweGOFbn%fCSAw~}bM5DjIpJOZ=KFoGKK$-UdfUJE z$}Ky;Fhj_%vn1U9&HWdD-^T9#@sEGH|FTc9 ze=qpt?tT4+SNZf?ry1|dSE@YN(r))`OW@qXlrK^FroTQ1Was*A42t*VSC?CQ{mieY zu0bA_37W}9@9#ghPJH^XkC}lXWv7?;f_s62KVx{ikLyXy^NlX?EIpGRyCLRPW%1Md zyXRZnJ@)3%?z+B1m3DV}n@#(_J#Z;M6*b}48oTuY&$Rq4@?s_(*to|Y9n0b-few_;Do`l@;=YD1T?t08Qvhy+r14GNs zKcSlze&;Ix*S=}*-vwJf-|jm7@%{8ijsA6KKk2=D{;tt{>psn6CUB%zet3s`!DPuF`7Kued#>fyls()3@!8+vr^Tm#uXYdFCD<78 zPyUgdLTH+I^X6+`k1)n;?ONo1=v38??{@L`uN-|8vT4)rfTEfE_5KEmg#W+2{N>g^ z`Y)f#KmWF?U;p*>y|;H)7Q8*SC61?jP3pbOx@+9qKb_d~_KeZyTk!(+1<7?!MUHP@ zc>lDN_mgY&$;Fu=;=$m;_@5D+C zi@EVLj*9>MBz?WSJN@I!D!JNS9~Lccd;VblR@uAa{rmrH`SIn#t@WR;_1t~*?eS9c z@cXfQlk1KJy|ql+y+@kAvfjA1>O*#-z3$b$*Q34#uHSyE^z;0WlG}fN&dKsxd+~mc zt@)=oottd$c6pg@{><}R%V$0;ep1^# zv42~K!n=o+Hzj7DGWb*Zvgq#9vnRWq*~|Ox@wzPyXE+oYe6ixNvi+Kh;)B=9x9&C% z5jOtV&#QKPfA*f|&(h0xU&*a|c4dVr*WI2u%O{`US!NPe&A#@)KbTf46BKVdm#{i1%alnMFW#-Nf5IGfkGL++*exm2+3fsDnIQf@Hqs%8w+j{Z*lD8*j@4D`_=Yxd)`dW|5 z{Oo^~=eKo;i@*EvUS!K0x%ey3?`Bqn+^aIsJ`-;4zw`oY!=cg)2}7T2G9 z*xNMC{b%Jj>C&4{Z<@}&>+8FHZ*tL_*-ZbDp1xe%U9)-Bd2)>`?V;#Ny{%Ixtdl2-?>vsRM>6#z^wZB^zQ-1NnUA_YC?|J;^|TqzS2r^B>?~lAWjXV^E~hZa|J>UT zU&B7H?CX2yuD&i)a&FS8eMjWd-xn6Y>CFtbk7}&m@tawFD);pqllF{TS?8~1yYGHG zv+JzFw{2GUZgurNs$O>1bS>+dp1OeTQ>%aJF)(b|n!$PMuk!1!S1;d-DdqA zIqmAYx}f@>8-Atkyg7TmeC@79?{ciyzvrHwbY0=bzmj{=-*oMwt4}Vy$9yxj-R;_+ z@0X`No43C4>XWbE73->hOB6R4|2XA5gYo*KX?b9!C`sVYWBs@P*{QN=o&r^F}>)(y9t+4&@VY*SZ*x8#g_G>Jjy#MiadG749zT5Bj zJ&vu5dMjD~%C~P;@kfz=t2X`<$t=zLV6f$HoZ2U`#JRa**QN@uSiZ{q^M*CMWdEikKL7RQ>C^Y_ z`F%m=-Rs|_)vtflUElnATkGD;%xhi`)np&fae3>%+gnw2;YEF+=IdKh&;EYDdGBuT z`Fq#;x%HaOeqVoCtD13ce#h$FQa4v^DrY!z@DH0$^xO+(EA{tZcK=&dyyJWLYJL6K z@~-n$ccVT&)Oq{z@S}IpF?D|qzkZV1UA^*;rD5qG#}8XXBYZNB@Z9@Q#9P1S`WCO> zV)uU+ZCUqd56{~tR{!|_$@tyoD7m=!$6=cb`Np&NJ+bbs6w&nm``(9vlwscm7s?cbkfw?-jqE?s>g));9O&TejL3hgr_| ze*S)Y)6rG&SJtl!jCpu&8K1(!gC&PkDoUGwXk0XVl78mL-_j{6)@$Z9gvN9H{iVw# zI*WnlSO;TdHuHwZG-}rpIr)k?sBI z_3HM&(?6cMwejz{#I*2voo33>Hn0D2eu=x?$&q%&@s5{|Pw(uX9*Xi6?=p&=Fa2|| zKXvc;V~r<_H!c< zt9{+P1^3dA`(I^Q_@9@v=kWyJQwNnUM_W9-_($68QN+%}E55~=uTA-4YPR{k-@Wgb zYx4HJ`M2#?E%VuI=aaL`_AH*jKKbLO73mBNPk3!P6T+8D>Bt$Fv1joA?X!ROz4+dT z8VNnmhc@fk%f)xBmEW5;U)gtSWx4jkKih?GNPP2ttL<5Gs`$w_$Bi4gidWlzP?>-I zt^1SwKi1*uY9r7Na?|D-d2Q*QXr!a1P~XAJ+&b-A%$ zDkH*%=hgYg8MVs~&zpB$`~TNnmH*3a*Izi_w=}QeTrK-g!5=f8zmH5>_@|wr?s?Fw zn~Emh?Emhsx!x3dZ$ixV3kB;Yp7%N#($s7AAgyXklZ@U?3;mi&%XozuK0MgO_dZ89 zetLFpw}>>eh+L`T$s6*SizA@)xQfJ>T@lfj5Dz2RJyIk8sw{V}oo5|Ds^;7;x#HZ|gEc%LNBiqxm z;JE#DCijmT^VI!hviZf3wrYxA;N9w!`oGeDH8OV=U++J9IQZ?Nzg53d^RjLJB%BG( z4=i1`cu&9E3O>fa?U~FBAMXd6pMH=M{Ij<8`qT1?uYJ$Lp88xioW|B;y7YG8vz=H1H+y#Qm)M$R$=zR8SbP1h54!p@ zjINWx1C*zR6ADa7XM8T zU|{(3^-J4tQH!OYPV_E%{#KlQ`|_WA7#2K#yW)P>_SeD=#SD|8l?=_^&SLi7WB4-p zxZJVhi>mJW|5KVM*A=xs)_kd6h4icK+ufYPHtDuH1Yd~Dd;UJWa?-aAtHTbOTz+kR zg3tTi_09b^f6dZ*fBEw9(A-(k;wq0a85pj-6u6S093FT3zm;XfGlsqAj_$vDIVL-S z;qd;|OWOCu7dL#qt{kS)bG+-lu<}po+g?-l2%P@6sbS$~(f9tZ6z3bPo_i=cV^w(Y zUKWmXT#k!EUzXa(pOa=geoeq4gH438}WJmBrJ(e==UJB$vg& zpmJ`*g3h@gbDkNV-u6FoUu@j+<&S^upRclaX8W|-rCjOO<$>GG?6$S;zpniLfnd*B zu17l$-L!w$k#qdt6ZXkI<~Qg3(Jq-9`QNHpqN4V*Y9OE%$V|UM&gIi zbC(Y?FhGYSG!a7*pal{${@N!grDtXqR}^LEWo4(QXB6fC|G(h>f8L~w^pyDI%(T?l z=(wyqXSpmLX7#EX7TCYBp7$l9VyE=R`q)Y5W~NsEoA+`Xw`F+I@+HfY_8H7_uHfyl z7hXH(g?CxF>1oS-e=1J@+J9{Y+y5^ccg<>x>D8KGYc+M!>J2O39^CX(cxfENqFXcB z7=AsFiRWfu_;c2#ZRhgzPbXche%DnLzp1&k@P+;Bsb#vS_x{Y@=C|#`=1JTeOXRBl zMAdO#Yj|pQLH6*Ij}O%CKmNV*yW7`qh0gi^-wv%5snT-2snlQd;>w9_&)&#j^u2Rv*9?=Z!Kwa-E*C8jIFNNBA;GkFs&9eze2L#OWov%P zw(ZH>t^TK@b;+LZyGybyt}k2EGL3$(#?c3hQr}%u z=dqX2dG#)4-|Np?q-Hs#rEQm=V%@eWqwBRowfJ>eiNB6FcXu%{Fx)xo#cS)OAIry1c8l`%1ppwE8bzcJ4G|RsXSt>6hKS{-xQ^IC<*p!soMd_<#Mm zHM@7Z$&3Ay_s)~+*pL)>=0T0j9_=%8>pZSjIOWAHDzxa1S=ITUXCuRP-j*}Zch3F! zdgGh)l|st>>*p{tFq}DA!=sbzXE%9PT5g4ursm5`x%_?AD*4IRKFj>fOyOmyx^K7e zYD`UEi{O@MVY|||>(}Nzoc{RN=IZ*SG#{4Bo!4(zt`FXDvL^xQ?4B#yH0 z+y6W}TT-`U#>4g7*4^`-^EIaYclFIBYZ>5^|xz!`ftbY?<&i_ElSP5c%f)} z%ipAp89H1EtiD_>N8cB)tz0Cy@{5Aid-olkeb1imv#DMhr}KV-Eyu@J=eO1IdwAFE z-nw(Q&4ucwgnn0r2R*h7SI%;+@w}Fl;KAb?TR-#jjI)=od_Kn=>m3)7*Ui7zZI$od zdQm%8-dw48o`BRv@-gBJpO;9+dD+iP&|hk`sO8a?1r^gy|J^g~>zuEBr+STlu3T4W zl`2~6xZydgbKc%(%)fU_Iq=mpPT5+f9dPnjLg&p-SyK;}$>}X_pLpW>xBQ=f&UM`4 z%YW2v71Lh%Utt>Gr#<&C z?N3`~$z!)m)>me?r>yD~^8;+vR(nbq7>=CuT5M%(`JF{*_8R-CcBg_0U8J;kecdHc z`hDB;cQ4lcJZbaq{$}H>tzRZAyMHeIKx}7VhHh;}wOm}>ou)Nf0q4~&H^}80tebcA z>!#j@u(MO^TwO!BW$pZ!v_&JC3WW+B<{v+x$HP!_^Az)hncPypthWVy{p=|E^0(2t zx<9wx{(pS6@oVF!?b|m+OWv#9d9$aj_WtQX^G=O~S$U9s*XcD=^M5?kshwAw``&7;&GqKL$|<4$vzXW!=16)o zP1qAX?bw4giC_1Bo%hwit8}4`p2ns(PyT;1nsWV?;h)_f^{*d&#xN=3qN9I3GXwLl z9S==c&ep4+T_MZ-Xa22Iey@L(J^#{o^#U)y=%QL+m+kDvPSv$Qa>+d54hAH9S zb2r^Ty3x)qMv9@zMS9&N1%{s4%cm`vF@N*t%@6Ai&o4OMy12;BB6dUY*NC~7AD*p! z)}t7Ib8+eKf9sc*+AaTgeY)szfmi!}PF`oeu60gZc=d_92luR=U3P1yZ>hw-@*{Kk zT-szpi;63*OJwd}yYjBy>t8AJ<;q@v{#o{Gf{#(&k;BfH>=P%QzxVlN-)8RT&GW83 z{rKX;@3?=5e)^Rj`}R}G;^fQ9NUa0OXWm)yd;Kcpni^|jnUefWXy)b0NisdMj0`%v z5ALmB>%d^o@MXdN_eOC)CS5l1HM`bQ&d6Y+7418NDL|rNJ4?(?oz007|Nj2Jb5D~+ z;o18cdw={ndRS1FMXI{_7r|IP-eoIx~ats-5qB`R5c!+*Y{G>2#Ri zzwH0_sDJ*w%G(|*d~kpM=C^O*bhVJy&X>}6^iBMNjy*iNXj=2?>7_~Laqs`|xv#QJ z&V0kn&pW5+O~bnh#w9uH&NY3R`}@KD=7O`=Cv5zZE@bnmKk@I%nd#rxMpRpT{{FRf z?Jo7xYs-ro54tm)iT=HI(zUf7`TsuEF8ZM+!&TJ0%p&AA_sQKaE*f03d%Dkb=dRP= z6F&U7cV8#H&?k9zjaNeRv=2M3FkP5w=2~F%Im_*^VWZ)cXIJCX?C1V6wPxTw$lK-U z>{H*z#lJuF*5;&TT9b=qKjyG*Qr4bu>zI7q#Q*a3Kcv5fo5ea^C`%1yGrm2K@A-A- zZ}+#%jqjViYi06I>tAnPAD!KM(ft0#+6&dM+5b;!{3R}xGuP~9xvjN~d0K^~>D@cq zx>E&RlAHQhCB#&6OmzLR+t!+ef#HE_G{b{QyY0QtFfu%t#B+L6eGC%=!?neyA|)Mk zJv1wn?u#$^B7LdS^QE(G%DnskFMf0v`}U{fP~Vf@pK0e7rSAFS{(P?g@B80td~!eb z{}W_*@HKOJ))h;){fV=5>^E-lHeU2y?y#}1>55Ma zO!wNn{Ss{5leOyi*}RXR|30pl*=+H9;t@ZF5A&oah)no*u1uDp;l|>->$n&gbOLXG z{C{+tN5c%}%$XZXEg6!Y9rO?|SrxS}|Gn2I>!(-RwcIL>*8kkLS31-*>%NQV&Z)X) ztN(sYf9tl&b>lX_Hin8j-fs-bPETk5Gv!u>bEt?wj{2f8*DN z1ijR~&;NWa_rF!_zjE*X5L_&{oFRA?n_!aJ$+Y~kyS2;hdpSIt$rFgAz;9N1ve+mpCuHhZ4RboH9_laT@}4vK4h zP8FCiI2?Ux$I@DMJ@4nO<8@-GyY{8ueQC@)y|TET-@NLFT&?wkwY@J_J32nRvF>wa zZdXZYtblT9eMI@popt9fOD1Re%`h&@*|2i=gXUxe?Ko=W`13N{?@9?-@ZP4 z9=)Ob$HHr`JJfAoCikV(U1zpD9PvCvNRD~Vr4=Gy>Sy)Dt~vJq%7$kXd(X^y>Zg#g zKK-A5tgV8;)5#rM)9dVc9xRKgw>4s5ShCSecgNDnPwy`HXLaX3-`AHBzYN~X*8Se~ znSW{jeVtc#%szg*|Eqe%af&OVq~L znt!H$S6%*6dr@QZHoa}4+Rs)^5I_6sWaL9n<~wcr(QE#T@9b-H=knjftUYsfzNwME z*uj(fTk9*URZ{HvYm@9VcUyGsKYOTVmFfcJ2j3XhY&@m=rQTTkBzxA2ExZ5!T)2Am z+rO(ii+@+#{x3Im*A4gCw%?*^qF!tKTpkr^wUf6(K1OkV)XR*JHQC9XUAyfyYfn|P z?%4Uhr91QF&4_OjVlG#Xt}hl~GiPBi|8R|^WMvu8#(ya{rm~)TdFA|j8}m!+7k7R1 zukXqC{T{ur_WE5BWhMO>akjmGELL(#Gpy&F{%`ZluRkZ)9gbm-Pw?5?;U01-QR>-z zmELaY4;_1%x6WBt>CmI${IoV8>!UD}0qY;3n5Cx_Y^S=fmwWZQCfc<9*G1X4U(fqL z%b9lj{n~$v>)$^6HKTmp`}w=uf0b=McSiH%Wi8XsYRucMuOHO;AJfRTJv406zV+gt zjP<6?vtRIiz26J@_bK%$Yohq;=gq6waem?j^ZQ;4%BuVsN>*~|3Iv(f`K?a7V*gj? zje(8S)qOtOPg_(;PfPw^Z2NM~Ho+eWGk#sMEi(VQlJ`U5%(C>uzg@3x_%KW5dGwF! zA7wlJ?ml>&zA}Z?cYE0#k+!CT7u=sNF#J(F=WzWUr-Y84jhUN)PknAKF8?k2<-a-g=bk>^BE5EsXqU3v$}-CZQ+M9w`VpPgvMV-!@ArSo z+x%xQ`<`tS#l&0tX5;$T+h(NIg`fIt=(D0pj5YfIk@MlxEf~ygo`o@}EL~@@z$BV` z661&X`S<@uzx_4AME19@=h|uKO{-k9nzQ$)sUF|{XSJ9_4bP7FaP2jJyyRxQFv#S5 zvRp6YS8@OO_gokEU03DvtbW$Rvb#u$H+RDQ3#R3Q1qBWLj3O(`A`Bug)_7Vy``0lk zv!hH>b8pFOt&``^eRP`}`q=xk|IET^cN`DTXa2&a^y>1JT%+XVqvtzUWM=+KvZ~!T z`{&e<$2YAOA7=Mua$UeH<vV_0mJrBbIR+W{fbPDcv$0$j%{93+JB67yDEs;03 zFS|bb?DkKm@2@tLjDNkH^~;3jB_AS~&h9_FzMtp*kDfoj9`W=ZIkEX5Q`jGgO;v^V zB_eg3h3uX^uy#GXLize!Y3D!ZnGVXNF}SSt%4mo&>b%47efyek)6Z|Je{pWlpM9Ud z6>Z(~f9w4lujYPKTmN|0@{0@a?cTfk+1{R`HcONWUeDIZi<{!|HMDiF-SK`l`@fC% zQhL0+emQSmnX+oX==zEW-!3XXe?MvZr|Fy9fBgI3|2P;rmT{{PZ*wM=^Lf1dD)iN{QChTp3*I{x?lzO^y) z!}qVe=fC)U`{`979=CVfyZ^a;>T=S%Qvv(JUGKTCxar3H_wn?okjpFXw;X6Bm;{Jbm`*m04$7OTh2iN|6Ug*=c{h|D<7OgU)p9@wk z?`d{dv1ZX6t{H);sx9!9Vz0;{E@p-DC64Jl)>ST_x9z@clxz|7N2^y-aB~mt=R47 zyx$%^xO3+GeP93E{wyn9zSv4Fxymv}vhLpg{kxyZpIh&?|I@9dYwwocUcK`FwX0V} z;`P_JbL&^_pWZ+7-tX=^n#)c`?%VC-nVPh)PdK^9FiWR#&i<-@^AEdDI&#E>G57Xg zr=}gZuU+0-|9HZi8;jJ`Cr`FK{imdIubUQo$Ky>Eec|)({b$>{`fXP9jt5IQkFk_i z{+y;=`ERQB)s~Y-wmiC6V7Ev9(W-CX^;2g^Fg)`&>)A~1kaNKcKDrrqy=9?!SpPwI7y|H_f>;8;cR})xnyxg&E_DPR! z)@&AQ6aUlo?X{A1HNoraZ?9Rm)|@L{pRZF zH-8*Gd;00>-1@T@x4GCi_8t1J_=NXw%EfsHPrP^E)~howOZ0Zi;yx39jlGpuYX9g&3F9}8zTr>)DdTQMnk&3V67lYi{lyvqOAr_ED*W(G<&yUz7Zzwowt z5eNUj5byS!4=GHi(`Tk%UekR2-z~O#di%|0pWb=u(6)HR>rcJguiTtJ$M#9W(b?YE0_ANGJf{^^~wIXej#kztSpalTT6V=53N7iZj|1!xdENGNpa@(j^x9R30OSXWJf`WCmKR235RW~gwy197vrw%R#28KEjZe~95 zPk}1cpO)=>_kM{)&ZEwqcV2BaKmR&Ye961*yJBR1ZHbAP&(~C%E!1D$bEEj?4Ik;% zxxPWNXMcQh&kgn}uI5;tAG7u9tsPr>G!Ms~o$`I|2D?uNKf|Jz@Altma4_Tck6l|I zt1;O)$p!~Y%wFPq*<$m=(A7UL&bOcBV_SK;@8%N+(G#i+0^9n89lVl)Sj}$Neg1wd zludw-?{{5tqZXrvk#eXC>jB0;&)C}pH`cJYq-j`L39oThS@Go>)6Cb2CvF}5`SW@2 zsYAJ`;)&iD*L+M;HO?H{2t?Ow#k2fwyfFkU6H}z zx{T_H^()TqzO(vQ+KJY4o*N$tv5J)3f3|$#E2aq7gM1t;wi=o@3Xc}YUR65r=CGSW zao=-wd%iubTO6Al51!C+zMPi7o@0W_wX>h{KZ%<%F&sJkvw5TCI)U4bTvJ-qLT=U1 zvkQIsf9`$JU4AD@pIm5owk3FpK+%$e0Y_dY{j)7qNK+8|m!3JZK_Ebtq0VJCZpwcZdIGoi0^ z^0Lk?W=579RC<+3KeIYpLB32OnYBp(_)v}uw=olz4=pBnH@ec z?0BWKb>fGQd_wv{92#-fOAfDk=AQj_=ABI|Qg*V$zj{y;tvhXoaM0b|99j_TbMbT9E>a^S5rE_U#&#`_^wUnE!mNEE}I*AIv!oL`8cKKkzDj< z!{FUnZ}`;X4wq%R-us!p&s^tLJHOcFT_M>MW__@#`S$#8;Zj|;+Va)&m1f9)xpGD2 zcBW)>dkfay3-GPACfY?k`h^~ zD8(3J&~H|IDVkMkLrm|+xuKUYh%jn2JXyMjRYh{D1Z&!O4^cCD4K{pgno(A+UhN^B zIi*@}|L<$RWlt?!w5cI##)%A`i5)(nO7&X}Uwyc-P9(c`QUCK9NdeFFervNZ*ttCR z6niLsaNXg}qP6qR-B2{ilQTT6Q1ex-&UV&@+Gkhw*Ir5x=LueHUp#H)-MK5%`~G@o zJ9+<~AaYqGbB^%*ZONCHe6vaSF*UTgsoQ*_^Qgrvn_t&cBG;`<@^G6RCX>2VLv|8p zP|)dbJe(#B9D%dn$qHS`WYwM@WU9^J5~6iIBrN-(K%dS6&iWJE-3(qWjqCVO(!0`> z=gicpGj6W%DfiP#>)q@0q_HRIP3D^~#%GJ_E1yj-(%kwdc>m1TYdpCMQaQJ;lK3qp z{Mfu~^PVyLX4c&QDf7c#7pBMkJDfB*!#&bi@Tu+fM^n_^iZm$X+8vp+{QL4do;{{>w$~lK ztp2Fp%=6LHL=L%guWatV?yK81vnX{#v(KXZPe*s&WWSVNb??jVJd>w8UY9xVz7*Df z)?8E~S8meoo3Cq%%~^MMM7-BJtL3t0d&KLVbGg~L6JOSHzfZsFZ@7=et7K)_|116e zclJ&7Fj{kK#rkje`xqHJ9V7ORU0ciO>HYko}qW^8(D zy+{?~YoBZJie(}!UHfj9O5B~VEH|&M%>2hy&g@AajH2#~Gt{{-Pg(k_5@{N}& zeLDQY=UJ4pBvzlyJe2g+_3}P#!yCZ|dH8M4%G4U>#xD;m=`@*?_AAuz+>Bt~*OvmV z)aUxjhM3g2FJAtnO)6J=_OxeCF>blOuRLyjpKo^ipIAXdoN3B?zsasrA2W1*S={(> zZXc(x+tT-(^}8aHx~4OzHiR!_FW)BhRHQI)%d=f(lj066aa!8ECgsb{wP&Y#-njcA z%_9BgONlF`iCIZWzuvq#R*{$cp>5f$J)(7!vQqSNA4=c98+3NQQ?z4@z!dgLdnGqJ z`97Tbc`?iM|^Yl4Z`Hp314 zFZ{Nt#qK|S?V@tr)|sFF*y&#=vrCZW=Hn_CoBl@etDPakF^?xEw`0q9cKo_JIV|Li zirB_K9gi|wHPr8Zd;IpsyAHYV7h&Ju|KjI8ar2so^|!K|vxhS)v!8x7GW~V7Zuhag z=@-LR-S*6{xcNy<`9S6a4d(}DdrvoAna!d9=#}mTA=PcG7Hs?+5xyx#?c9mOzj~ML zm3wZe_*<`LeM8b!X}zo0Q)b-xrMBvswOQ`%cc zo7wO$T4jsc#6{v^*A1o5?A2SGd;ZFz4_lu!2PCjNNlplP>VNeglU>W=HD7J?yg&Ec z-uzV2Z&C49Eyv|@&lGR8Rwl*F=Uw}>!sCY5oTxvNeV3-TUrhTd@!Qi&@m1udyP3D8 z(jRg*-%j(Eu|C7n8Kr#hmCU!vhKYC9ACr9>6SMN1$5jFS$hqG(RUhQy$y~PH?5s_P z;jSYyg3eEtU#He7aAW)Xma>0;O*CU8_i(hWy2$+cbot|G5vExbQ z|MlDNR{8j}3zl5J9$T1fp?}mvLH0?%r{I01m`fGsb3C)oeoIVATKi{vq~u}EDQ5TA zb|tRgJyYK^Z{bC?56Ab)%(BwrxmliffByaTBEMSlx@{zd`L^xK zN&BMlT+c##I>%iH%`(?hl9rGDeG@-aE5{n@axp$zmhsk2JN>1r?j9A0{(p=^{&IYG z=limhXWlR7_pk6d{qR-$3MWpT$o=8_7qkA{r~kT&NBr$Yt;dhoij|1|e0BY3_}1xe z)3r5^sQ)ooXTMsSxmWM`$L4Jx_Fb})Uh3i5>sgn3wt6aOj_GTs_Y&C;8aqv3^S+@nhI6ZIP*_kg3 z!q+tZU3b5`*Yo?jdG-ID-)a6sJy!Mk=W^@g=asu6~6b)3w-#m?Dfw5_1E0){QBZwzWrDCvWUvV>#y%zIB)B^ z^v4z1_owa)k=d2}C-9f{41ws~7TGLr&tLVczOgBjxcI% zg->?YNzc@dvapZ5dsCOGO3lv0;{BiJult)P9s5=@n_cl_SlP<7xf5GWz9ql?thPon zK*)E=!Xk51zU+{k+VvlOay86sBc|$}>g1kbB!4mC`cn7u>;*x4<&W(ylAht1Gw02r z{!XP?*Pk6`0v`z_xWeRR_G%=UinT)H!^cV&G~>9ymg`CD(knNxnY`NWp@vA^3_{{LS6 z>tk^ALcVs1OA5{m8FT(@DV~?PIsR+L?J`5L>ZR{ihL+aWs2LTOdF}XXC32o8FYrvw z%g>=Qvv=_-nC7?t{_Z^e?)2lUb>#PLJ5K2&k{Qg{!3fp~W`hWj zPDTa>hGfp;CW5a2QNdMah)Jdl3=9#O1sQt&Md=DTnMq+_^A$W5j0_Ad42%uU6g2$u z%M}a_3{(};Qp;0|6pAxab8?C`K{hb5LJZM%at>o;;9y{2F!WJ4+Hhe)CVPtB!M7HU+^nBoCq9X05jF{SgUL~@VeF&Lp>k|N5$z{1d=!P&R?nP=8H%XA6# zzM=(|nSK__71+B1A6Rl8`l^Ta86RvoV3_;Sz6Y*%-P#AR&UEa zy-DZvCLXX721W)JkZTwgWX@WKfzl$Ur4mLC87H(D9GDm!ju*-tFH~_2QaN6v!wwGN z6ATO-3=Tm$M~h6{i%pIf+Z->paW8Q>ImPGf7axAG5(Xx4v@^!f zD9pMr>+@MlzFAKftQ47j`Cw)DE(BD0InbxxVBzIA5^ z#5}N}#phPW%{h0_^5LA~bDg(lXYb^Uol|`7XUd#+XE{M)=*h={fq^CQhQzVCO$xPr zY)K-D%M>TemGtvXUSN1abBSDUpPSdp=71nc^`#|EV4o{6FtiAOQ!$JHCuK+~UNWgm z>y*akGe)O%K*XBE=d50DI4t1IW4Ps#myYSxu;kvY&*l}cv-HSby7gL=_R=XqUYbk6 z;Rnhf3MmsD*(AZ4q-{pgDb3{znz$gr35mE5D(3}dFCwAyA7uiCR0D-nFB<6v8{3A4 zgoc;pMouriy}dQ|M(O?QwfC?0#*4S1CoFi*VQ}J5Yys!VDM>ws$LBQrIdMWF7?yJi zMUGFDIXO|qdy|UqC7rXMO#DBaToiTSA$Hi2I+=|*y7JI zp`oEyO?)q#G+vl6m4QK$f#Jnb4#gIMNsFgN3G53$WvOBMJV0zs=JnkQJQs}}QlX{at0@bVH(7BG6Ql5)jn2|*f5mj-xcX)cur_R=jA2;y40M8qpobE`i4VPU@;sG1A zcFC2bEX{4#qSk;dUjnimB;l!B?B~U^VxShB`au;ojy zMP+Z@2C{rhNKht7N7mY7*P_;}Tq+TqZMf}PR=`0>e1aMlf1^X z9PD#3FHhaABFS00#{#^vz^>BWb}h?i?NKQ&uu+~Xw_c0tUAt8(*voL)wJe{NMU@&A;JT}LeL-VLa%Q1ze z63qgdM`siZC@qyJ=5snWqgcS}B#5Oc+ad&t7XdF#O;HAhfCmf=0twB_jyz&$ZCk^_ z;Kalr(K03JjOBBMDU*U)CIt0ZK9^|;3hELF>N0#jr#ZmOYif{>;WLm}*2*9+!((8v zm8m@-F##{nm0Np2VggQ@np>|~K9?yG^734|^oG^*In4rInyO2$MLm~k5deu@OL{%0 zS-?qCb?KF;ZpD@$FHhB_(~`OkTY^C9rbKlcP74Y0TDkOEQuoGVL0(>(ORq(B8y=e# zl(ll}wWOYn$D)G0K*7~*cq}TLk%57okAZ>F?SiMJ$vuW`Q-Zn-kI6WDX@c4~noB`#oaa-5dJK=vDDE*lCR2RQ z@|Z;O8O!G~$!83o&nfORJO*lg90y4}pOXw}jBqkAXcaIpaBK)nDQ=p$z{xp`iD4xJ zLyMsoC=7$7S|y6lS#m5j@i2Tgr&z#iC4@UA2*TA=1<5K-nG^()b<$8>dd`vq6ntKD ziv^rC7EYPs#IbZrP>|QkRsk=~rBgzpw3bep6y&vXYZxS4v(_>&d|+W`SimG5=5C=W z#jOMOBO}8BiRKB8Y>LUCmQjm<69*>)g9ON(1`Byaq&5jLc(5`s@C0=kvM*gC0!~|A zo|>Rk0ZJ*Lqy~!oE<X7Hfh=hfT+Kdf03=AHc;D+T=P;4BV0g4S! z9Dv1^!C7D~f_Mg%I0K5D9?NGkpyuhEVm}6kfJSBphlXCI*}^?6q98wVuro09B!ZLw z1h2(YKq0C+HB4&hoMs_Vik@bvuDUcRC`)(S8B0ygsgr`Tb<2c;vUHbTOIowBc|uV3 z%B^C_y|OJqQC+&nq>A4vOqmpw4N9LHOPAhATC?%mEN4xSlC`GKV}i1Dk40sl-THh| z5Ln6Doy$R{T#G4wZwoSI>$5r4=U5qL*jO+)sNS$R>~$&fVMYNs9PThMxM?1nQ_Kgd zjs=`Jrb4nQB;vG|f)k7)C<+x*K>4=>BH?rbNuuQfC}V>q0-Q9L7N4_Zhv;Yt@B-yf zkjX+`8cU~uQ4DM1Vj z7r^l;I8`iZxn#IpqcWGI8YF)`WME)`sm)RWX$4uUtO{d+JwzJuO8XL2PM9G}aTc&)t_m3_{ZU9slF&aDyIXHB2qYv#A& zxSzG!^m$D7d)x2xn)3{=#S~vS2vXv>Ln8aU<#(ADKC2&cJPap#3m6K0e06z@TQqz`zo5aNU_pt9lv|;EVDK~ zpQ6|_XUiP#lRS=oQQ5jFCp6Rzw}}|Fh-|qP^>Rv3Ptxj*B|V0oE00d|dal60z|h3N zz$|Da%pu~?*vP|R;ovcWiGhooNA|F*gM*&p;sXl`d@R)GnlUgqcAOFD>^Q1mxKK(% zYZ-IHQP#E^h7%WVc#H1+oX! zuYSPDpm38xY0=D?k6(QF!N4gfsiF62A3GNFjF#KR(@Ca+@$Vhu;VP#|I;N;@w z;pO8O5EKF*RA^`bb*>l~92giF8XBO(22x<{44`2Hkiw|mXD_uG85tRa!xIxD!{TF8 zLc$_K!{QT?V`KmS_x}IiJv2NpEHp4WAwE7bCOQnHd&`e&Gevl;D(a{2R=1q4eAoV= z>HK@=^2>!{>NdRoxHG)`)U%IXcWVEv-P(NVUl}LEi7nghIecdBk7kZ-oOt`rBeRW* zBW}vreY*VQYSimr|0B;Hk(={%+nQ5Jr}(p$@84VfS*Pp?=iidwcjt%xu70yo$Y$U7 zI&1m;o4aMLAMOs9xBu`_`44|XIK!4R;xdBq)yvNHuQL`Gn6Y&u1JmS?1r7{q4i2~H zP2m(^VA%5V(u6=gy=~L}&v!3p=PP+PzhJ@6%AaKk|F%xIP3yOx|9o5d*Ot{+x4*9W zWW4{W)oGpV|9i{kXIFDGC_m8ESpRSv6b{QMmV_3;Yi45I zOpW^sx7_tP9vO1RZ`GlHzt$i6`SRJbTa)Yl=H1=XFTd%_2es{cmwbLZ``h-{x20!a z{l5NtPUZeRY7DJ%_q4B0dSBgL^x)2u*z$mtGT+%*-^u*(vuQ}uWBm8N{KNP1&8+Ws z{J+b`&vGlvWR6!w`$u-W$iF9-TYRwjzn3SnDyR0&-RS)NXQ$OZI9&F&X3Od0A7pF( z^zq;L%>L~U<2QyAIiGVlmt_6(-(d0O|38j~IQ|2CQ@I2g7#I@Rb?!AVGcd`#OJiTv za`=k;>BWV?Gd_R)^}1?rl}tyh^&a_u5B|U1`u(xC^_~0wDlhE&t9yH1w=089geRk; zxBs&P;??GhI0W2SW-u@?`uAAb9tjUi-XI&%+SzSw2gs6#jY&S#&uWyU?NT+O|Y z&#(SgxqZvkKCd>M=x7*h}-E;QI^t;NR_mtdcmPlW;!^+FodBRj_ z(~M;M`rG<{QueYcDzHd#FkGu!#^KP&VDoF%rQGz|qU^nv2mY4E9sATg_x-E&{5z}v zOE1Od$mjKMZOKsg#2&U|J$FLzPYjd_j$gOZ))k6Qj{nBymGgvb2IbJ>sE&E-mIN7 z;or^rKAqR+|6bT!`a<5n`ndDnev|6R{!iizhd6J0n?~8(`or?^)t8$)xu$PUUM+OM zUQW%mVpdW>N~#n?%&(+tt<0w+zRh>%YCUsi$A0}UZ&Oe9|1R79?^nI|^`lcuE5qk3 z)4{t@kdyl=Xx_1C`#c_lJA=am&%4>*Ji zM!lH0koo=+krUEamR3sU?iSeZ+xVtWGIqtZ8Of81)0f`&_n*ob^Xp1Mu{P78D|c=D z&XxNAER5K`i?8kXiHkQ9w%qBv`tRNR-nv4UYgvofuj`&V_{=AopW#RN#uuF`$`U4V zrgl8#pMRY@c>H2S%tV!cr(0&#o%%)<;q$vp1S|{|J|?LXQ{US?ykMExjVvN zYtH)o^6bCMMxWAZRX!X&I44iHb!{8N0>i0+_phAx;?94nWweJoUwBD8Z==e|8}nD5 zd-3s0sO(yAf%oTx8Df4_usbbF{`i~w-RawN{ag8~U;jA$>Fm$-PjAor?fuc=|AoC~ z=NG?OH*L@FO^>U@e;0oYm1B_E^WnOm?~1uEY8JccZ4fWnw@^=Nx$44+_B$ed_Fs&v zp1;)QdD9W?SWosEwrqxDS8h8b{J#CGWBJG6+HK+dvERMp_dia*yff})RW{!q)1*_g zZR4jJr5^wGw0!&br#6fZ*Lbx1AMA_&?V??t@#)#8$*dv&e%ID5`Z#f>^x8P@u6_6N zKE$t@cmDKz_7tv4^~+8>59U@J`MfzZ<^Hb|YuwGw{ohp{8<%xYEd2kk_57)ontN-^ zKV3BbnzwiDi?~#V8!Jmn`nIdxdhvz3xc|^@hzXq8_ zSEW@yw$xtcU|6E{mM7%8>e;KW>T9Z2Y}@?*?)SILqcfM<*8N-?J?Wm@=U)|j`}L2n zi+n%ZF6HvFcVGWJXK=V<5HJ1j|6OVOD_<6yv`>{izG}yo`rZHcna}cT?G@a2PC9n~ zx;^!63{#|T@&rUa_+GvIxQv|K#meH3Ez6!KhG(Cj{k(7e(H8q-THfbRSqHz1Uq9*f z>TR-9SIo|jiN0t&J2>~%dbj5c zRV!K^#=N&*GZD_kZw8`BU#_AC~{N-RPbF|6|`b-aPzs zf+5dNeIe(08~@L=*=u7HQ@0{O{9^65^8V-fD>vWTyNZAM>SfmR{J#5d>uh(H)4hM9 zto*-f_wK*$m9yvh_4)sPS$;V8@@etQn}4S4I+l?0yllGp)NV_;X$L&!s0X{B`CYO~&uIO&M^9!S zN%c0p+cd{@{~o(~!~ShMH{NjBI_0OOeaQX99|uJF=RUdPD)V-;&aV=KtxAt(E_iis zLWbcAwUgqG8go*l#4OKjy|JZ_;la?MMXrrE*&@_FP| zRUCP`-}c_eKtBQ{<~?F%({8SmUABO-4nO@e%S4$%b(f!nssv? z`gXoaYlEG}!34KrqfM{A*{@sJb|TD!dA082KJ`A!%dK@GZD^K53<9X-Swo2J8zGv?1nC{NCn^AQ<`8?P0$BSfNT6};0x=?dc)7zD7 z%O4)uzWf%u`?nkW;<}h7{Qa?}ygmKov(2j8%qAayZaS?b@#~|<B|TI$=IE5I9d{V{etJbYioMn zPMi4T=GkqlE3ACC)<0_7n8w0zdE&l$$tUJdPR`WcbMwoA^D1o|=a0{wTNNNOq2XHZ z)GKG^bJbq_@^E^9?v5~tMcaJ##MGQVBEj=v-J3f*mL(UQxPS2e+tmvn#qR$<_3Mer z{DRv*u8n=E{ij+q{M|uw=6Rh<`c7Q>#XD{J8tdt)HsK47UfFTUY~t4TIZCth-pkAW z2;#C4e0BH#nHS$*GIBh+KVhbOdVsz8Zo8j*bd?gpon_;Ja7<*QjaV@6Fv6n;p*d`*q@sEn6RV z?w-B(cKGcQho&%Vxm{duENu**88Rf?fAi(#!_&Tx?>%JNXAryU=;pXpEAJgjtk{-Q zC#J#h=BxlG%hqYP#mkPzdh;*OEZB8R>bhIerTaURC+SK3)Ha#F{h7VE@=7^Lo6f!4 z#dbzl#|ty)=$pRidUR;RvA29nKWF*6r#?OTc7@08MgQK2Z{zKGE5z{Uq6X)ZzDI85 zuhn0!<(YeWPj$LU#kS9`_S2p`@#mDix_w^H^;3ucs`1^vsqe=AS@Q95#t(N)cG>M- z^Y3R-xou~pX!g%v|JRje1<%=+?V5FF_4`5@2A^j=$*UGL1m3*5_TT*Lk8hS-n(IIP zUqZFYv}(Pa-2BaZkN)L0J5YT#|H0>-+}iOB6T`E#cLs+(v%QdDpeE4K#c+#-q2qOf z;vL>c&P<73OiU`j3NCo5E#4GYfBf_8iSs@MOWo~%{OaQ6Uwip)A6+LqPrFq0^k$pe z^K|VC=1Hbo$e4ZK&UoYFA<3=hE0wJbriI^reLZZ>^v7e}7|dwd3~Mihu8W=Y~I@UK2G-O+9>e%&WR=mDy*luf2b7 ze?R=#ljBQIo;;b$@GV^4p|hfGpQgjaf;*-wg?xSXs=fJie{POz3`6n!z0ZU{G2}4K zPTV#5t3yWh)1{ve)|lnwPpz`ta6Nze-B-UXw_g6I{rXnyHRIX**6G*Q?cLd3nfbNf z{y*!3=JST#ZM*YM7P{P6A8fX*UE}CX_aLXB8~Q$Pm%lpC&L~$FUAO1bL&h%;7i?+t zJi6fTW9$Ftt>4+1=$HSDtJ(Q0y!8C-eSgl(vrF&pmAxHaexy&g>|O50r)Hz(DC{PgqgJ+FWF zKQFluDgMf7`rE(a<*vV9oxezpG0B&vxKS z8{?ecThrU;oZGW2?A9zl;oUpaw4+xCEi#H+TmAi{?1SGEw(oOgnxl15a>r8h8UMb# z`?}I@N9eZ5e{=S-p+fyd+(k753Jw4&yW6{|JwTZ^mT99AKcnh zcOrOQY|YDtuFoRB6pUo#t}s;hDzfGOKX_oBh@4u74ex_#^SNEVz2Irl6Tkjv-}j}{ zmZ`_>i(b`z_i^yd=XUk;_q+JCAAR@l@9uMNQWyQpsQkb8ntsuvvxhktbiZf)sxA<) zixc`O7Td|ptLvz6$F*VWy*o1gu`!GSJJ;^{rodRWq{>G+NGC!EM#ANk58=M_p<*lmb&@QeYY=3Waeb$*x&ze#TgtFO8dS_e%|w% z+jE}ZE8TZ9=Kby8?_RyMah@A>Y5v3B{`!I$CTgu&jQjuIIDT$j zY=jQG_6GUx)a!Z)y6wEbb+2s|Q}8T$ZFyV#d-nVM&08C}85nq8vN*rF^+^A7z3uVX zss8^JJM-o-+?ev8;{@aXKcBzY=QSUb+QT5*#>i69=)%#|&CcRprGKuD8b;sFJQwez|eND{7MSbtlj^m@5tUc zcvk+$`Fm~u{xdQx*eSEUftRSFpugcubWU6Rt5Fu8TiEpm8a(k^Snz`#(j z$w_VU$<+)ES3@1xW}m&!#mQjAz|e5|zdUQeO8(c!&(|k29#&weIBhYHP4|?@+R=4A;N_$sF&3EsQ z_wU}m>C4OX=a(n&t*qX;$GWVtuKezn((1apjNOrG)qmDSEPwI-{U^t1+u}>Z>*oD> zeg3i6)}vBill|}7zdgTF*Ys=hmbay`lXrc;t69Ex`up^om8DzzZ?Ad(E`7SF*_-V} z&m#2JFfc^i*nj`fKYsad(KpuIExnO{_vpR-Vvmn}nkw2b@n%tv_ z{8!=Ht6Z}$AAWeJ?nckWT-MX;{vOlWXaCRf3$yxkW4mQnmf7vtx9vman?(E1pZz~S zxb@!btgruf_u`fEl7{@r#nNkK?)=TN_0*GOH=Fi*XZ)-fqw{Md7y`=oC(WyvKjpXj z=h(f!i;r>16x1GGafbVF#p_K8OlrcSrdJkT^5Eb)%)~!|xkZpOVXhk&L%~aqr04%+ z`wA^Cn6xC`Yq%2RGlPMl^^WPLRAC0GWJw409=7FyMYFb-7rb_oDky6`5In_W0w}^6 z7=v2wc%$ZS^8S3gCcgf&gqirWX9;otXT)anv+qvuDeIqob{_M4|M$m}!|THKGIV%k zUVi;c?pd$%Qsm-u{;Ve%hi+ciHaS z$NnyD;X7BEUN-mU(OZ9;r=PaSmye1ld3I|lqr?BF)!R!KzpoPOd3miQkh390D1+6P ziBF+{fq|ifkAas#=FkSFFolT=H>|D?Jv~EL>|2C~opX`)6r zNpjWUvFr(Fuaw{T`_WC9hqX34iJ_^NUGYI3hlUt?M7v?n&*SfZ{$l?d%V2VA2D6s3 z!wu{I)2?U#-d!VSp7cIt(No3kH}6F2ysJ$}caN#Sw?sXzW;{V&@^S|D>mt0-lZ(1Fn zAE&?X{%rX>I(-{={Ik&4wKdFjKlJ2MN1|WZ-fMqXRquIsmhHg4%&FOoWfxV8-);;) zyiH^&hn&Y!T^k05hLtP~SFg^?Wn=}a^Vi&eUuT<}%go+tlU}^x&HiVGQ~McC>=B-GioqwIxS6N%}{I2uuwYpoXkDhq9 z>+JWJ4=at!s{d-g*S#zM+U@y-V%_)o*VF5@I z`B=TQs(QznI&0Xixu1h8#sYpHk#$9dq?zP7ZdCv$QHnJ+aF=wNU*|opd4j*Lt&Cl@W z=KOP(Wf_vs_r?C!oi;mSO+#t%jrwN?7+0tMKi0*1FFpBivG_JKvk#Bv@NPRF`=)l^ z?)@8T&xtY2jt$$9+5Gn4p*n6EodesL+P6yU{I-nP_(5;=KKt0iO*3M*f7)vtwV#jS z+``Yx?`@uZMeJ=mf6bS8$0K*2zr32dd-9JzkBfEkSoY?%_5MGmxPw`Zhl7dX^8ppM z4PDFh+l3Mwm049>JrWLZhwS8J?&|rRxbLNbLd#<|o*jq2l(4M-y3kRf@$t1CvJ4kF zo7xu(ab+YlxpXryFgh^2xR@x+wBYqr7d@Lf33(rP|NpI9_x-!Or5ZB>18C-`;Gyrf z2!Z_9XFGe0A9Q~_dVAiU+-(ued>f<~7($p`9Ap$jI7F2=CxjhjV_3i_#4y37s)2XT z-eZl72ImrUk6AXjF>N#ZxoxI11H*%E<{G{n;|iVxV}=I|0$vQ(cNk;|#f?_bDu%3qF7mbq5^?Te(cZYAqR=f3Z6j#j8&DapT(QezN_5a^qw`5(+ z&hRUb`GCQWdzX{@-bg6FtlYk~EaHERvD>s`3#4D{=Kb9Ax25jgyf=n3=DcjvetrLT z{jT|q7yF<7YF%jaBWCt{3HHrDf_5nP72NP&RwH%!T;;p#>)vmi&n{*7dscED+qr56 zhVw!uf12_OujMXE$!7=*(cawiceb*CB6H<$$J-1C)IYE}TsoC@;Kj#lr*<#?*7x72 zEGC;lAgmd9JlL^L5`xg$xA~5}q>b$eYa3q{qO};Kk0sz_GxXm4Si5P5X#2gH}RSjnAuw zsiBv&EZ7)){26Ban{2jNQaO|=A^zbEm`WhYtgo4@f{me`aVxy=$|Ub6ZzLfj)zxF z@2;cQ$|*~yP5+qD@@$*#=BT%S1$|Yni>UA?SIn-7|MFLjZnpW@c$h+LRA-^A-*2G*2`wM|6|5p{;H^KzTxq;Tcf_eZ$DhO;a2k2oNwX3%X4qMxqm>f zTQtDhdYf-{(zaFgasAq_Uo$Xp^}k-Dw6=<;eb?_VyX`luEi}5uX!gs6i9so&VV=wq z4~GuNk4$X>3|@2OPqONKwm8-M+tZV4ym$V6qI}irT4U~nU30qp z&&_TvdaaH$Pqd_jlt~v1c0RZS1eMweeZ6zq;y(Od1dK>&MU6>8`4Mb-hz{uA<(b$XTOk(|nZ(KFih?U@-ovVUsrJ*;nWyH+@UtMN>B>5im%mCt2b zJT)3VJUY9GWlJ(+TCX!RAOEbTlZ+|84|eHZ6DSK{_;hfIG|Q8v3}UvHCwdQAa>Otw zPv^Pwm!UzC!C^5wgFSctK^FfcGEa2Q;WFgravkEuzIkAdTn zBg2OTCZ->44sUoIZTbwq{S(`j#_)hsNSys}k;59E_61HW1p1agNn_`66lP#x;FR%a zv`}MYU}$uiH|fNZ&`Tw)H9X6XH*DEusm8b=l2KcqfuYiwDWPf);{*Ob4VnxL6BuR$ zY1*e0{ETG03^IX%VM86$vIZUoh6hfyb!_@tq7(k>i@$o!FLzY8ZkH^V!tAZf#8 zOVw`GxO_4G>#MbX{$06QlXsWRosq14(8T@Omye1Ezp2grtTB7)oT`I2y=rd!3b*YCWODYLcx!&^0q?!r3~zH8@2tJz zsM36qtF^!52N)pbqFFO0-Q4cW8Rb#PFn{ z`!S1zwm#}{~iC2$1^fA{wq#) z)@x*RIQ;QL>&4ZEm7mUjwT;?$am}$O52}ne-o8`4#Mkne<8fZQ^83rR3s2A5bzkV( zS;viUW<{>v6tUmt#lrx9v-ZE|ZEH8&$l37Y*XFeqDx12Ei&s6huuXp0?i{<$GtzOvg=W_D5mU{-f(s>@_?awNTimd(j)BOJV zuYVu@`f&P%ePpz1TIr7)mrI}j*`|H?(yO2Q3RCOdp9x-W;@lg%ApP>$<9Tax%H}rS zd(bQ~HT3mn|0DG`UVQeNr}tWZYFVWC=7q2Ad3#PtF-*{^VaT%4+UO`b`CYl+)-F{+ z#s;6L{QUE$S4~_tfm>O+;?P7c50x8v+%iQs4m_P|ZS|;mr?$L$x`o!!W_^Z+|Mh$h z6PmoDPP(aeDKnfo7Weyr^oDO`%niI3el+ub5P*a-h-3+5RbY_$2wHv`4 z3=H>*FL&`+!2f;@eVqd4*fev5sX9_R1@M=bpRs zb608Kuj7+mZ<#ImBgFN}{p0V>$=3DCANM)-=+;60x)Tqd&-?%K@`6Z%QxBg?t^e_l zf0fPhh-= z!`{XaS6zG2%7;2Or`VoZFm2)GQ2E3%gNY%7L4mcwPy0Y72Ll7ca)tl~EsmMTK%1Z# zm}D7_iUd!1yx`b^b&f0w4;t7cy0aNFq?lw{dYpAqrTQ2f1Q@uK1dhZ^_@$7@z_6h4 zOldO%gSlJ^2g3r;>KF?Kg?DU|r!ai7U}Io7z&e3hDuIgu)No>G5MdBtV9i({u&jom zfm?`y!GnRBi-CcGnSo&eGpHBpAnskjz~I0nSNu8Ur9uOTsnYg~XVQ-x+`LTJx4`JG zO5F968TaOjTz|-U`_-41F5XLDMP4#6yLupu3cGvYj2k!|@zrL@1&gXBtf3(Z* zb2~gWwKo3TdfA^9xkmc((vLpheg57z#$Leqn0Z>?*|1W}de2j9>UN%)!(gyeioqvb z&HA3izC{1s$2Pt#t2jMZDa-MU=_xjb120zlY6yhuMHMWa@Q&g2_65v4iiQ52G*3Qk zt=GaXknrxR-G)MexHoBh#~vRrU=fk%V2ojTpb*1k-jK_7d+w!68AhpG1>c2#E7#g- zIZLuQNLDyGvu$mVeo(+_!YF_2ap4Vih6Wac1_p+y3%t)T1~48>Nahd{Uvco`LM0=a zhO`~;g&0^AB(GV`ReX~y&2vPUsjbn5(cr>y5eKysjxnhU9E`zs#|>i{8yJ`z6d4;t z7&sWVCo(Y{+6jsW&}z3HM-I^jlg9-MwE2o;7#K9Ba~7T{5nQ9u$Jmr)mBRCYL6PqT zXj20N2WWtWq2VDb^St8S#}8@$2>j4;>jdNd-x{SAcf$_xFTVDm?$MK*d+Il2PuIM7 z`0&JsnZIHm&-0q_!g3=DxopXlurmbqV!v4j(ou`(}Rq|AxtRg*(4=yb|*c&78o%a6v7; zv~-y?|Lf;n>UpO!b{5`{?W$bx)kMT^m7m0{lk@i-XSwi7ercuKm%7)*=4o$lto=K6 zX}S@6{ps!Bf`8uLu;P{JsuV`Hv%xYUBDJO=&Ehvj3scm}m|ri9;pXQM{igbbE&7i2 zHk$_vL+WKFmFKeWh-58c6H%G;E5b{=l=F1m%ddiGw>}a*?z?m)rzE44l3`y8m+Ab3bPNw5RL+I&U->zqS08%&@Px`rTZ9xdV;2CK#Rqt@q|)aESE3<@;yN z8m=wYsxDUT#lP?Sv@rU(m|bW0yDELH`1X;${N=M4PW&o+B^`4-zxM4W%cQJy+qu73 b)atCS9u$1Q7FfAS$;l>b`i3MvK0ZDGy;_J! literal 0 HcmV?d00001 diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor/sounds/3d_armor_unequip_chainmail.ogg b/mods/ITEMS/minetest-3d_armor/3d_armor/sounds/3d_armor_unequip_chainmail.ogg new file mode 100644 index 0000000000000000000000000000000000000000..01692b5d2f29a1337974d0778fe4f09a58740f20 GIT binary patch literal 18699 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 literal 0 HcmV?d00001 diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor/sounds/3d_armor_unequip_diamond.ogg b/mods/ITEMS/minetest-3d_armor/3d_armor/sounds/3d_armor_unequip_diamond.ogg new file mode 100644 index 0000000000000000000000000000000000000000..bdfdf803705d9cfd053152707da7a0963d2b53e1 GIT binary patch literal 16968 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 OgT0K=Wq;N9`1k;ELx#@) literal 0 HcmV?d00001 From edab0be8f5986a7967645dc9be51042afb9452c3 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 18 Feb 2020 14:51:15 +0100 Subject: [PATCH 523/737] Play armor (un-)equip sounds on armor stand --- .../minetest-3d_armor/3d_armor/armor.lua | 38 +++++++++---------- .../minetest-3d_armor/3d_armor_stand/init.lua | 2 + 2 files changed, 21 insertions(+), 19 deletions(-) diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor/armor.lua b/mods/ITEMS/minetest-3d_armor/3d_armor/armor.lua index 8661f641..007bb274 100644 --- a/mods/ITEMS/minetest-3d_armor/3d_armor/armor.lua +++ b/mods/ITEMS/minetest-3d_armor/3d_armor/armor.lua @@ -221,6 +221,22 @@ armor.get_valid_player = function(self, player, msg) return name, player_inv, armor_inv, pos end +armor.play_equip_sound = function(self, player, stack, unequip) + local def = stack:get_definition() + local estr = "equip" + if unequip then + estr = "unequip" + end + local snd = def.sounds and def.sounds["_mcl_armor_"..estr] + if not snd then + -- Fallback sound + snd = { name = "3d_armor_"..estr.."_iron" } + end + if snd then + minetest.sound_play(snd, {object=player, gain=0.5, max_hear_distance=8}) + end +end + -- Register Player Model mcl_player.player_register_model("3d_armor_character.b3d", { @@ -265,22 +281,6 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) end end) -local function play_equip_sound(player, stack, unequip) - local def = stack:get_definition() - local estr = "equip" - if unequip then - estr = "unequip" - end - local snd = def.sounds and def.sounds["_mcl_armor_"..estr] - if not snd then - -- Fallback sound - snd = { name = "3d_armor_"..estr.."_iron" } - end - if snd then - minetest.sound_play(snd, {object=player, gain=0.5, max_hear_distance=8}) - end -end - minetest.register_on_joinplayer(function(player) mcl_player.player_set_model(player, "3d_armor_character.b3d") local name = player:get_player_name() @@ -290,13 +290,13 @@ minetest.register_on_joinplayer(function(player) player:get_inventory():set_stack(listname, index, stack) armor:set_player_armor(player) armor:update_inventory(player) - play_equip_sound(player, stack) + armor:play_equip_sound(player, stack) 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) - play_equip_sound(player, stack, true) + armor:play_equip_sound(player, stack, true) end, on_move = function(inv, from_list, from_index, to_list, to_index, count, player) local plaver_inv = player:get_inventory() @@ -305,7 +305,7 @@ minetest.register_on_joinplayer(function(player) player_inv:set_stack(from_list, from_index, nil) armor:set_player_armor(player) armor:update_inventory(player) - play_equip_sound(player, stack) + armor:play_equip_sound(player, stack) end, allow_put = function(inv, listname, index, stack, player) local iname = stack:get_name() diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor_stand/init.lua b/mods/ITEMS/minetest-3d_armor/3d_armor_stand/init.lua index f17f73cb..e2d0f122 100644 --- a/mods/ITEMS/minetest-3d_armor/3d_armor_stand/init.lua +++ b/mods/ITEMS/minetest-3d_armor/3d_armor_stand/init.lua @@ -146,6 +146,7 @@ minetest.register_node("3d_armor_stand:armor_stand", { single_item:set_count(1) if inv:is_empty(list) then inv:add_item(list, single_item) + armor:play_equip_sound(clicker, single_item) update_entity(pos) itemstack:take_item() return itemstack @@ -170,6 +171,7 @@ minetest.register_node("3d_armor_stand:armor_stand", { taken = true end if taken then + armor:play_equip_sound(clicker, stand_armor, true) stand_armor:take_item() inv:set_stack("armor_" .. elements[e], 1, stand_armor) end From fb251db925ce500cb81421290e5a47ddb6e6913d Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 18 Feb 2020 15:44:54 +0100 Subject: [PATCH 524/737] =?UTF-8?q?Rename=20mod:=203d=5Farmor=20=E2=86=92?= =?UTF-8?q?=20mcl=5Farmor?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mods/ENTITIES/mobs_mc/villager.lua | 18 +- mods/HUD/mcl_hbarmor/README.md | 2 +- mods/HUD/mcl_hbarmor/init.lua | 2 +- mods/HUD/mcl_hbarmor/mod.conf | 2 +- mods/HUD/mcl_inventory/creative.lua | 2 +- mods/HUD/mcl_inventory/depends.txt | 2 +- mods/HUD/mcl_inventory/init.lua | 2 +- .../ITEMS/REDSTONE/mcl_dispensers/depends.txt | 2 +- mods/ITEMS/mcl_fishing/init.lua | 2 +- .../sounds/3d_armor_equip_generic.ogg | Bin 17882 -> 0 bytes .../3d_armor_stand/README.txt | 4 +- .../3d_armor_stand/depends.txt | 2 +- .../minetest-3d_armor/3d_armor_stand/init.lua | 3 + mods/ITEMS/minetest-3d_armor/README.md | 32 +--- .../{3d_armor => mcl_armor}/README.txt | 14 +- .../minetest-3d_armor/mcl_armor/alias.lua | 23 +++ .../{3d_armor => mcl_armor}/armor.lua | 24 +-- .../{3d_armor => mcl_armor}/depends.txt | 0 .../{3d_armor => mcl_armor}/description.txt | 0 .../{3d_armor => mcl_armor}/init.lua | 164 +++++++++--------- .../locale/mcl_armor.de.tr} | 2 +- .../locale/mcl_armor.es.tr} | 2 +- .../locale/template.txt | 2 +- .../models/mcl_armor_character.b3d} | Bin .../models/mcl_armor_character.blend} | Bin .../sounds/mcl_armor_equip_chainmail.ogg} | Bin .../sounds/mcl_armor_equip_diamond.ogg} | Bin .../sounds/mcl_armor_equip_iron.ogg} | Bin .../sounds/mcl_armor_equip_leather.ogg} | Bin .../sounds/mcl_armor_unequip_chainmail.ogg} | Bin .../sounds/mcl_armor_unequip_diamond.ogg} | Bin .../sounds/mcl_armor_unequip_iron.ogg} | Bin .../sounds/mcl_armor_unequip_leather.ogg} | Bin .../textures/mcl_armor_boots_chain.png} | Bin .../mcl_armor_boots_chain_preview.png} | Bin .../textures/mcl_armor_boots_diamond.png} | Bin .../mcl_armor_boots_diamond_preview.png} | Bin .../textures/mcl_armor_boots_gold.png} | Bin .../mcl_armor_boots_gold_preview.png} | Bin .../textures/mcl_armor_boots_iron.png} | Bin .../mcl_armor_boots_iron_preview.png} | Bin .../textures/mcl_armor_boots_leather.png} | Bin .../mcl_armor_boots_leather_preview.png} | Bin .../textures/mcl_armor_chestplate_chain.png} | Bin .../mcl_armor_chestplate_chain_preview.png} | Bin .../mcl_armor_chestplate_diamond.png} | Bin .../mcl_armor_chestplate_diamond_preview.png} | Bin .../textures/mcl_armor_chestplate_gold.png} | Bin .../mcl_armor_chestplate_gold_preview.png} | Bin .../textures/mcl_armor_chestplate_iron.png} | Bin .../mcl_armor_chestplate_iron_preview.png} | Bin .../mcl_armor_chestplate_leather.png} | Bin .../mcl_armor_chestplate_leather_preview.png} | Bin .../textures/mcl_armor_helmet_chain.png} | Bin .../mcl_armor_helmet_chain_preview.png} | Bin .../textures/mcl_armor_helmet_diamond.png} | Bin .../mcl_armor_helmet_diamond_preview.png} | Bin .../textures/mcl_armor_helmet_gold.png} | Bin .../mcl_armor_helmet_gold_preview.png} | Bin .../textures/mcl_armor_helmet_iron.png} | Bin .../mcl_armor_helmet_iron_preview.png} | Bin .../textures/mcl_armor_helmet_leather.png} | Bin .../mcl_armor_helmet_leather_preview.png} | Bin .../textures/mcl_armor_inv_boots_chain.png} | Bin .../textures/mcl_armor_inv_boots_diamond.png} | Bin .../textures/mcl_armor_inv_boots_gold.png} | Bin .../textures/mcl_armor_inv_boots_iron.png} | Bin .../textures/mcl_armor_inv_boots_leather.png} | Bin .../mcl_armor_inv_chestplate_chain.png} | Bin .../mcl_armor_inv_chestplate_diamond.png} | Bin .../mcl_armor_inv_chestplate_gold.png} | Bin .../mcl_armor_inv_chestplate_iron.png} | Bin .../mcl_armor_inv_chestplate_leather.png} | Bin .../textures/mcl_armor_inv_helmet_chain.png} | Bin .../mcl_armor_inv_helmet_diamond.png} | Bin .../textures/mcl_armor_inv_helmet_gold.png} | Bin .../textures/mcl_armor_inv_helmet_iron.png} | Bin .../mcl_armor_inv_helmet_leather.png} | Bin .../mcl_armor_inv_leggings_chain.png} | Bin .../mcl_armor_inv_leggings_diamond.png} | Bin .../textures/mcl_armor_inv_leggings_gold.png} | Bin .../textures/mcl_armor_inv_leggings_iron.png} | Bin .../mcl_armor_inv_leggings_leather.png} | Bin .../textures/mcl_armor_leggings_chain.png} | Bin .../mcl_armor_leggings_chain_preview.png} | Bin .../textures/mcl_armor_leggings_diamond.png} | Bin .../mcl_armor_leggings_diamond_preview.png} | Bin .../textures/mcl_armor_leggings_gold.png} | Bin .../mcl_armor_leggings_gold_preview.png} | Bin .../textures/mcl_armor_leggings_iron.png} | Bin .../mcl_armor_leggings_iron_preview.png} | Bin .../textures/mcl_armor_leggings_leather.png} | Bin .../mcl_armor_leggings_leather_preview.png} | Bin .../minetest-3d_armor/wieldview/README.txt | 2 +- .../minetest-3d_armor/wieldview/depends.txt | 2 +- mods/MISC/mcl_temp_helper_recipes/init.lua | 8 +- mods/PLAYER/mcl_death_drop/depends.txt | 2 +- mods/PLAYER/mcl_playerinfo/depends.txt | 1 - mods/PLAYER/mcl_playerplus/depends.txt | 1 - mods/PLAYER/mcl_playerplus/init.lua | 1 - mods/PLAYER/mcl_skins/depends.txt | 2 +- mods/PLAYER/mcl_skins/init.lua | 2 +- tools/Conversion_Table.csv | 40 ++--- 103 files changed, 185 insertions(+), 182 deletions(-) delete mode 100644 mods/ITEMS/minetest-3d_armor/3d_armor/sounds/3d_armor_equip_generic.ogg rename mods/ITEMS/minetest-3d_armor/{3d_armor => mcl_armor}/README.txt (73%) create mode 100644 mods/ITEMS/minetest-3d_armor/mcl_armor/alias.lua rename mods/ITEMS/minetest-3d_armor/{3d_armor => mcl_armor}/armor.lua (94%) rename mods/ITEMS/minetest-3d_armor/{3d_armor => mcl_armor}/depends.txt (100%) rename mods/ITEMS/minetest-3d_armor/{3d_armor => mcl_armor}/description.txt (100%) rename mods/ITEMS/minetest-3d_armor/{3d_armor => mcl_armor}/init.lua (60%) rename mods/ITEMS/minetest-3d_armor/{3d_armor/locale/3d_armor.de.tr => mcl_armor/locale/mcl_armor.de.tr} (97%) rename mods/ITEMS/minetest-3d_armor/{3d_armor/locale/3d_armor.es.tr => mcl_armor/locale/mcl_armor.es.tr} (97%) rename mods/ITEMS/minetest-3d_armor/{3d_armor => mcl_armor}/locale/template.txt (95%) rename mods/ITEMS/minetest-3d_armor/{3d_armor/models/3d_armor_character.b3d => mcl_armor/models/mcl_armor_character.b3d} (100%) rename mods/ITEMS/minetest-3d_armor/{3d_armor/models/3d_armor_character.blend => mcl_armor/models/mcl_armor_character.blend} (100%) rename mods/ITEMS/minetest-3d_armor/{3d_armor/sounds/3d_armor_equip_chainmail.ogg => mcl_armor/sounds/mcl_armor_equip_chainmail.ogg} (100%) rename mods/ITEMS/minetest-3d_armor/{3d_armor/sounds/3d_armor_equip_diamond.ogg => mcl_armor/sounds/mcl_armor_equip_diamond.ogg} (100%) rename mods/ITEMS/minetest-3d_armor/{3d_armor/sounds/3d_armor_equip_iron.ogg => mcl_armor/sounds/mcl_armor_equip_iron.ogg} (100%) rename mods/ITEMS/minetest-3d_armor/{3d_armor/sounds/3d_armor_equip_leather.ogg => mcl_armor/sounds/mcl_armor_equip_leather.ogg} (100%) rename mods/ITEMS/minetest-3d_armor/{3d_armor/sounds/3d_armor_unequip_chainmail.ogg => mcl_armor/sounds/mcl_armor_unequip_chainmail.ogg} (100%) rename mods/ITEMS/minetest-3d_armor/{3d_armor/sounds/3d_armor_unequip_diamond.ogg => mcl_armor/sounds/mcl_armor_unequip_diamond.ogg} (100%) rename mods/ITEMS/minetest-3d_armor/{3d_armor/sounds/3d_armor_unequip_iron.ogg => mcl_armor/sounds/mcl_armor_unequip_iron.ogg} (100%) rename mods/ITEMS/minetest-3d_armor/{3d_armor/sounds/3d_armor_unequip_leather.ogg => mcl_armor/sounds/mcl_armor_unequip_leather.ogg} (100%) rename mods/ITEMS/minetest-3d_armor/{3d_armor/textures/3d_armor_boots_chain.png => mcl_armor/textures/mcl_armor_boots_chain.png} (100%) rename mods/ITEMS/minetest-3d_armor/{3d_armor/textures/3d_armor_boots_chain_preview.png => mcl_armor/textures/mcl_armor_boots_chain_preview.png} (100%) rename mods/ITEMS/minetest-3d_armor/{3d_armor/textures/3d_armor_boots_diamond.png => mcl_armor/textures/mcl_armor_boots_diamond.png} (100%) rename mods/ITEMS/minetest-3d_armor/{3d_armor/textures/3d_armor_boots_diamond_preview.png => mcl_armor/textures/mcl_armor_boots_diamond_preview.png} (100%) rename mods/ITEMS/minetest-3d_armor/{3d_armor/textures/3d_armor_boots_gold.png => mcl_armor/textures/mcl_armor_boots_gold.png} (100%) rename mods/ITEMS/minetest-3d_armor/{3d_armor/textures/3d_armor_boots_gold_preview.png => mcl_armor/textures/mcl_armor_boots_gold_preview.png} (100%) rename mods/ITEMS/minetest-3d_armor/{3d_armor/textures/3d_armor_boots_iron.png => mcl_armor/textures/mcl_armor_boots_iron.png} (100%) rename mods/ITEMS/minetest-3d_armor/{3d_armor/textures/3d_armor_boots_iron_preview.png => mcl_armor/textures/mcl_armor_boots_iron_preview.png} (100%) rename mods/ITEMS/minetest-3d_armor/{3d_armor/textures/3d_armor_boots_leather.png => mcl_armor/textures/mcl_armor_boots_leather.png} (100%) rename mods/ITEMS/minetest-3d_armor/{3d_armor/textures/3d_armor_boots_leather_preview.png => mcl_armor/textures/mcl_armor_boots_leather_preview.png} (100%) rename mods/ITEMS/minetest-3d_armor/{3d_armor/textures/3d_armor_chestplate_chain.png => mcl_armor/textures/mcl_armor_chestplate_chain.png} (100%) rename mods/ITEMS/minetest-3d_armor/{3d_armor/textures/3d_armor_chestplate_chain_preview.png => mcl_armor/textures/mcl_armor_chestplate_chain_preview.png} (100%) rename mods/ITEMS/minetest-3d_armor/{3d_armor/textures/3d_armor_chestplate_diamond.png => mcl_armor/textures/mcl_armor_chestplate_diamond.png} (100%) rename mods/ITEMS/minetest-3d_armor/{3d_armor/textures/3d_armor_chestplate_diamond_preview.png => mcl_armor/textures/mcl_armor_chestplate_diamond_preview.png} (100%) rename mods/ITEMS/minetest-3d_armor/{3d_armor/textures/3d_armor_chestplate_gold.png => mcl_armor/textures/mcl_armor_chestplate_gold.png} (100%) rename mods/ITEMS/minetest-3d_armor/{3d_armor/textures/3d_armor_chestplate_gold_preview.png => mcl_armor/textures/mcl_armor_chestplate_gold_preview.png} (100%) rename mods/ITEMS/minetest-3d_armor/{3d_armor/textures/3d_armor_chestplate_iron.png => mcl_armor/textures/mcl_armor_chestplate_iron.png} (100%) rename mods/ITEMS/minetest-3d_armor/{3d_armor/textures/3d_armor_chestplate_iron_preview.png => mcl_armor/textures/mcl_armor_chestplate_iron_preview.png} (100%) rename mods/ITEMS/minetest-3d_armor/{3d_armor/textures/3d_armor_chestplate_leather.png => mcl_armor/textures/mcl_armor_chestplate_leather.png} (100%) rename mods/ITEMS/minetest-3d_armor/{3d_armor/textures/3d_armor_chestplate_leather_preview.png => mcl_armor/textures/mcl_armor_chestplate_leather_preview.png} (100%) rename mods/ITEMS/minetest-3d_armor/{3d_armor/textures/3d_armor_helmet_chain.png => mcl_armor/textures/mcl_armor_helmet_chain.png} (100%) rename mods/ITEMS/minetest-3d_armor/{3d_armor/textures/3d_armor_helmet_chain_preview.png => mcl_armor/textures/mcl_armor_helmet_chain_preview.png} (100%) rename mods/ITEMS/minetest-3d_armor/{3d_armor/textures/3d_armor_helmet_diamond.png => mcl_armor/textures/mcl_armor_helmet_diamond.png} (100%) rename mods/ITEMS/minetest-3d_armor/{3d_armor/textures/3d_armor_helmet_diamond_preview.png => mcl_armor/textures/mcl_armor_helmet_diamond_preview.png} (100%) rename mods/ITEMS/minetest-3d_armor/{3d_armor/textures/3d_armor_helmet_gold.png => mcl_armor/textures/mcl_armor_helmet_gold.png} (100%) rename mods/ITEMS/minetest-3d_armor/{3d_armor/textures/3d_armor_helmet_gold_preview.png => mcl_armor/textures/mcl_armor_helmet_gold_preview.png} (100%) rename mods/ITEMS/minetest-3d_armor/{3d_armor/textures/3d_armor_helmet_iron.png => mcl_armor/textures/mcl_armor_helmet_iron.png} (100%) rename mods/ITEMS/minetest-3d_armor/{3d_armor/textures/3d_armor_helmet_iron_preview.png => mcl_armor/textures/mcl_armor_helmet_iron_preview.png} (100%) rename mods/ITEMS/minetest-3d_armor/{3d_armor/textures/3d_armor_helmet_leather.png => mcl_armor/textures/mcl_armor_helmet_leather.png} (100%) rename mods/ITEMS/minetest-3d_armor/{3d_armor/textures/3d_armor_helmet_leather_preview.png => mcl_armor/textures/mcl_armor_helmet_leather_preview.png} (100%) rename mods/ITEMS/minetest-3d_armor/{3d_armor/textures/3d_armor_inv_boots_chain.png => mcl_armor/textures/mcl_armor_inv_boots_chain.png} (100%) rename mods/ITEMS/minetest-3d_armor/{3d_armor/textures/3d_armor_inv_boots_diamond.png => mcl_armor/textures/mcl_armor_inv_boots_diamond.png} (100%) rename mods/ITEMS/minetest-3d_armor/{3d_armor/textures/3d_armor_inv_boots_gold.png => mcl_armor/textures/mcl_armor_inv_boots_gold.png} (100%) rename mods/ITEMS/minetest-3d_armor/{3d_armor/textures/3d_armor_inv_boots_iron.png => mcl_armor/textures/mcl_armor_inv_boots_iron.png} (100%) rename mods/ITEMS/minetest-3d_armor/{3d_armor/textures/3d_armor_inv_boots_leather.png => mcl_armor/textures/mcl_armor_inv_boots_leather.png} (100%) rename mods/ITEMS/minetest-3d_armor/{3d_armor/textures/3d_armor_inv_chestplate_chain.png => mcl_armor/textures/mcl_armor_inv_chestplate_chain.png} (100%) rename mods/ITEMS/minetest-3d_armor/{3d_armor/textures/3d_armor_inv_chestplate_diamond.png => mcl_armor/textures/mcl_armor_inv_chestplate_diamond.png} (100%) rename mods/ITEMS/minetest-3d_armor/{3d_armor/textures/3d_armor_inv_chestplate_gold.png => mcl_armor/textures/mcl_armor_inv_chestplate_gold.png} (100%) rename mods/ITEMS/minetest-3d_armor/{3d_armor/textures/3d_armor_inv_chestplate_iron.png => mcl_armor/textures/mcl_armor_inv_chestplate_iron.png} (100%) rename mods/ITEMS/minetest-3d_armor/{3d_armor/textures/3d_armor_inv_chestplate_leather.png => mcl_armor/textures/mcl_armor_inv_chestplate_leather.png} (100%) rename mods/ITEMS/minetest-3d_armor/{3d_armor/textures/3d_armor_inv_helmet_chain.png => mcl_armor/textures/mcl_armor_inv_helmet_chain.png} (100%) rename mods/ITEMS/minetest-3d_armor/{3d_armor/textures/3d_armor_inv_helmet_diamond.png => mcl_armor/textures/mcl_armor_inv_helmet_diamond.png} (100%) rename mods/ITEMS/minetest-3d_armor/{3d_armor/textures/3d_armor_inv_helmet_gold.png => mcl_armor/textures/mcl_armor_inv_helmet_gold.png} (100%) rename mods/ITEMS/minetest-3d_armor/{3d_armor/textures/3d_armor_inv_helmet_iron.png => mcl_armor/textures/mcl_armor_inv_helmet_iron.png} (100%) rename mods/ITEMS/minetest-3d_armor/{3d_armor/textures/3d_armor_inv_helmet_leather.png => mcl_armor/textures/mcl_armor_inv_helmet_leather.png} (100%) rename mods/ITEMS/minetest-3d_armor/{3d_armor/textures/3d_armor_inv_leggings_chain.png => mcl_armor/textures/mcl_armor_inv_leggings_chain.png} (100%) rename mods/ITEMS/minetest-3d_armor/{3d_armor/textures/3d_armor_inv_leggings_diamond.png => mcl_armor/textures/mcl_armor_inv_leggings_diamond.png} (100%) rename mods/ITEMS/minetest-3d_armor/{3d_armor/textures/3d_armor_inv_leggings_gold.png => mcl_armor/textures/mcl_armor_inv_leggings_gold.png} (100%) rename mods/ITEMS/minetest-3d_armor/{3d_armor/textures/3d_armor_inv_leggings_iron.png => mcl_armor/textures/mcl_armor_inv_leggings_iron.png} (100%) rename mods/ITEMS/minetest-3d_armor/{3d_armor/textures/3d_armor_inv_leggings_leather.png => mcl_armor/textures/mcl_armor_inv_leggings_leather.png} (100%) rename mods/ITEMS/minetest-3d_armor/{3d_armor/textures/3d_armor_leggings_chain.png => mcl_armor/textures/mcl_armor_leggings_chain.png} (100%) rename mods/ITEMS/minetest-3d_armor/{3d_armor/textures/3d_armor_leggings_chain_preview.png => mcl_armor/textures/mcl_armor_leggings_chain_preview.png} (100%) rename mods/ITEMS/minetest-3d_armor/{3d_armor/textures/3d_armor_leggings_diamond.png => mcl_armor/textures/mcl_armor_leggings_diamond.png} (100%) rename mods/ITEMS/minetest-3d_armor/{3d_armor/textures/3d_armor_leggings_diamond_preview.png => mcl_armor/textures/mcl_armor_leggings_diamond_preview.png} (100%) rename mods/ITEMS/minetest-3d_armor/{3d_armor/textures/3d_armor_leggings_gold.png => mcl_armor/textures/mcl_armor_leggings_gold.png} (100%) rename mods/ITEMS/minetest-3d_armor/{3d_armor/textures/3d_armor_leggings_gold_preview.png => mcl_armor/textures/mcl_armor_leggings_gold_preview.png} (100%) rename mods/ITEMS/minetest-3d_armor/{3d_armor/textures/3d_armor_leggings_iron.png => mcl_armor/textures/mcl_armor_leggings_iron.png} (100%) rename mods/ITEMS/minetest-3d_armor/{3d_armor/textures/3d_armor_leggings_iron_preview.png => mcl_armor/textures/mcl_armor_leggings_iron_preview.png} (100%) rename mods/ITEMS/minetest-3d_armor/{3d_armor/textures/3d_armor_leggings_leather.png => mcl_armor/textures/mcl_armor_leggings_leather.png} (100%) rename mods/ITEMS/minetest-3d_armor/{3d_armor/textures/3d_armor_leggings_leather_preview.png => mcl_armor/textures/mcl_armor_leggings_leather_preview.png} (100%) diff --git a/mods/ENTITIES/mobs_mc/villager.lua b/mods/ENTITIES/mobs_mc/villager.lua index 4e3229c5..13d547f9 100644 --- a/mods/ENTITIES/mobs_mc/villager.lua +++ b/mods/ENTITIES/mobs_mc/villager.lua @@ -203,25 +203,25 @@ local professions = { trades = { { { { "mcl_core:coal_lump", 16, 24 }, E1 }, - { { "mcl_core:emerald", 4, 6 }, { "3d_armor:helmet_iron", 1, 1 } }, + { { "mcl_core:emerald", 4, 6 }, { "mcl_armor:helmet_iron", 1, 1 } }, }, { { { "mcl_core:iron_ingot", 7, 9 }, E1 }, - { { "mcl_core:emerald", 10, 14 }, { "3d_armor:chestplate_iron", 1, 1 } }, + { { "mcl_core:emerald", 10, 14 }, { "mcl_armor:chestplate_iron", 1, 1 } }, }, { { { "mcl_core:diamond", 3, 4 }, E1 }, -- TODO: enchant - { { "mcl_core:emerald", 16, 19 }, { "3d_armor:chestplate_diamond", 1, 1 } }, + { { "mcl_core:emerald", 16, 19 }, { "mcl_armor:chestplate_diamond", 1, 1 } }, }, { - { { "mcl_core:emerald", 5, 7 }, { "3d_armor:boots_chain", 1, 1 } }, - { { "mcl_core:emerald", 9, 11 }, { "3d_armor:leggings_chain", 1, 1 } }, - { { "mcl_core:emerald", 5, 7 }, { "3d_armor:helmet_chain", 1, 1 } }, - { { "mcl_core:emerald", 11, 15 }, { "3d_armor:chestplate_chain", 1, 1 } }, + { { "mcl_core:emerald", 5, 7 }, { "mcl_armor:boots_chain", 1, 1 } }, + { { "mcl_core:emerald", 9, 11 }, { "mcl_armor:leggings_chain", 1, 1 } }, + { { "mcl_core:emerald", 5, 7 }, { "mcl_armor:helmet_chain", 1, 1 } }, + { { "mcl_core:emerald", 11, 15 }, { "mcl_armor:chestplate_chain", 1, 1 } }, }, }, }, @@ -231,12 +231,12 @@ local professions = { trades = { { { { "mcl_mobitems:leather", 9, 12 }, E1 }, - { { "mcl_core:emerald", 2, 4 }, { "3d_armor:leggings_leather", 2, 4 } }, + { { "mcl_core:emerald", 2, 4 }, { "mcl_armor:leggings_leather", 2, 4 } }, }, { -- TODO: enchant - { { "mcl_core:emerald", 7, 12 }, { "3d_armor:chestplate_leather", 1, 1 } }, + { { "mcl_core:emerald", 7, 12 }, { "mcl_armor:chestplate_leather", 1, 1 } }, }, { diff --git a/mods/HUD/mcl_hbarmor/README.md b/mods/HUD/mcl_hbarmor/README.md index 0f4816e4..0eccd691 100644 --- a/mods/HUD/mcl_hbarmor/README.md +++ b/mods/HUD/mcl_hbarmor/README.md @@ -1,4 +1,4 @@ -# MineClone 2 HUD bar for `3d_armor` [`mcl_hbarmor`] +# MineClone 2 HUD bar for `mcl_armor` [`mcl_hbarmor`] ## Description This mod adds a simple HUD bar which displays the player's armor points. diff --git a/mods/HUD/mcl_hbarmor/init.lua b/mods/HUD/mcl_hbarmor/init.lua index f05d5045..36dad2a5 100644 --- a/mods/HUD/mcl_hbarmor/init.lua +++ b/mods/HUD/mcl_hbarmor/init.lua @@ -1,7 +1,7 @@ local S = minetest.get_translator("mcl_hbarmor") if (not armor) or (not armor.def) then - minetest.log("error", "[mcl_hbarmor] Outdated 3d_armor version. Please update your version of 3d_armor!") + minetest.log("error", "[mcl_hbarmor] Outdated mcl_armor version. Please update your version of mcl_armor!") end local mcl_hbarmor = {} diff --git a/mods/HUD/mcl_hbarmor/mod.conf b/mods/HUD/mcl_hbarmor/mod.conf index 4d595c8c..de5a2f20 100644 --- a/mods/HUD/mcl_hbarmor/mod.conf +++ b/mods/HUD/mcl_hbarmor/mod.conf @@ -1,2 +1,2 @@ name = mcl_hbarmor -depends = hudbars, 3d_armor +depends = hudbars, mcl_armor diff --git a/mods/HUD/mcl_inventory/creative.lua b/mods/HUD/mcl_inventory/creative.lua index bcca4772..7032994a 100644 --- a/mods/HUD/mcl_inventory/creative.lua +++ b/mods/HUD/mcl_inventory/creative.lua @@ -7,7 +7,7 @@ local players = {} -- Containing all the items for each Creative Mode tab local inventory_lists = {} -local show_armor = minetest.get_modpath("3d_armor") ~= nil +local show_armor = minetest.get_modpath("mcl_armor") ~= nil local mod_player = minetest.get_modpath("mcl_player") ~= nil -- TODO: Brewing is disabled. Add brewing (uncommented code) when it is implemented properly diff --git a/mods/HUD/mcl_inventory/depends.txt b/mods/HUD/mcl_inventory/depends.txt index 46d93c42..056b070d 100644 --- a/mods/HUD/mcl_inventory/depends.txt +++ b/mods/HUD/mcl_inventory/depends.txt @@ -1,4 +1,4 @@ mcl_init mcl_player? _mcl_autogroup? -3d_armor? +mcl_armor? diff --git a/mods/HUD/mcl_inventory/init.lua b/mods/HUD/mcl_inventory/init.lua index 03227e85..84f25524 100644 --- a/mods/HUD/mcl_inventory/init.lua +++ b/mods/HUD/mcl_inventory/init.lua @@ -3,7 +3,7 @@ local F = minetest.formspec_escape mcl_inventory = {} -local show_armor = minetest.get_modpath("3d_armor") ~= nil +local show_armor = minetest.get_modpath("mcl_armor") ~= nil local mod_player = minetest.get_modpath("mcl_player") ~= nil local mod_craftguide = minetest.get_modpath("mcl_craftguide") ~= nil diff --git a/mods/ITEMS/REDSTONE/mcl_dispensers/depends.txt b/mods/ITEMS/REDSTONE/mcl_dispensers/depends.txt index c17d2db0..9eb136da 100644 --- a/mods/ITEMS/REDSTONE/mcl_dispensers/depends.txt +++ b/mods/ITEMS/REDSTONE/mcl_dispensers/depends.txt @@ -6,6 +6,6 @@ mcl_worlds mcl_core mcl_nether 3d_armor_stand -3d_armor +mcl_armor doc? screwdriver? diff --git a/mods/ITEMS/mcl_fishing/init.lua b/mods/ITEMS/mcl_fishing/init.lua index fd469781..4ca7976f 100644 --- a/mods/ITEMS/mcl_fishing/init.lua +++ b/mods/ITEMS/mcl_fishing/init.lua @@ -65,7 +65,7 @@ local fish = function(itemstack, player) { itemstring = "mcl_core:bowl", weight = 10 }, { itemstring = "mcl_fishing:fishing_rod", weight = 2, wear_min = 6554, wear_max = 65535 }, -- 10%-100% damage { itemstring = "mcl_mobitems:leather", weight = 10 }, - { itemstring = "3d_armor:boots_leather", weight = 10, wear_min = 6554, wear_max = 65535 }, -- 10%-100% damage + { itemstring = "mcl_armor:boots_leather", weight = 10, wear_min = 6554, wear_max = 65535 }, -- 10%-100% damage { itemstring = "mcl_mobitems:rotten_flesh", weight = 10 }, { itemstring = "mcl_core:stick", weight = 5 }, { itemstring = "mcl_mobitems:string", weight = 5 }, diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor/sounds/3d_armor_equip_generic.ogg b/mods/ITEMS/minetest-3d_armor/3d_armor/sounds/3d_armor_equip_generic.ogg deleted file mode 100644 index 29b4bcd5f56c46fe96a9d0b5995b55a926a7ac0a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17882 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

    !g7>dxTv+SS zT2uRY^YJy(Z&pXy&NB5r!pzWM$auww_f)2G+nJ@YT9=~=j=$e_KO*`_@$IA9Q-cpR zb~{YU3~)Q@om_7JI@##4^0~D?udMKU`d{l-mvT*z_(sF{U2S0tx?FNUUjII^OK3;6 z_v7-;EX}oZ_ISNtsVh;k^6~GC-`~Gj{q(ijX*VHVEnM0p`n~f8zhCBGD~ldf)qnL= zZpquZREur){PSK%xMz^9L+dP}NIJ>sVP0O%9eg9r|)&H0O&JVQgS~;6#cDY09 z59QS9QEQK6^uD(|6aVb#wJ7Uf@#Qv`w`^LZXKMZC`&;$JGS`1eU!0w4)R)ZIpPu`C z854h^`7%) zUB2h}_3yhX;(G6OG@jd(KKs=5BNyHunPxX@b@Nr}hd zYMZU+zpxjLo{@ZMt@wwa=k>*hrT^L9uZfxMbaQL*JB@z=zkgow%K3R`>l@Br6Zlr2 zsw(?)SwLDR2Y{r)}A_130)_eAVj%$n}LlYhDL{8BwtnfWW_|Jm=FeQXJr zf7$(g-&;QYt#owy6c}{h=fwHX>X${!-ZAem%iHwj=lgT<@A4P@n|Jj6nyNpk&3n(q e+`oO}@c-|r>GR^c?$0}3z<2(;Q2@gkMg{ -* 3d_armor_equip_iron.ogg -* 3d_armor_unequip_iron.ogg +* mcl_armor_equip_iron.ogg +* mcl_armor_unequip_iron.ogg Licensed CC0, by Freesound.org user mtchanary. Source: diff --git a/mods/ITEMS/minetest-3d_armor/mcl_armor/alias.lua b/mods/ITEMS/minetest-3d_armor/mcl_armor/alias.lua new file mode 100644 index 00000000..19c2424d --- /dev/null +++ b/mods/ITEMS/minetest-3d_armor/mcl_armor/alias.lua @@ -0,0 +1,23 @@ +minetest.register_alias("3d_armor:helmet_leather", "mcl_armor:helmet_leather") +minetest.register_alias("3d_armor:helmet_iron", "mcl_armor:helmet_iron") +minetest.register_alias("3d_armor:helmet_chain", "mcl_armor:helmet_chain") +minetest.register_alias("3d_armor:helmet_gold", "mcl_armor:helmet_gold") +minetest.register_alias("3d_armor:helmet_diamond", "mcl_armor:helmet_diamond") + +minetest.register_alias("3d_armor:chestplate_leather", "mcl_armor:chestplate_leather") +minetest.register_alias("3d_armor:chestplate_iron", "mcl_armor:chestplate_iron") +minetest.register_alias("3d_armor:chestplate_chain", "mcl_armor:chestplate_chain") +minetest.register_alias("3d_armor:chestplate_gold", "mcl_armor:chestplate_gold") +minetest.register_alias("3d_armor:chestplate_diamond", "mcl_armor:chestplate_diamond") + +minetest.register_alias("3d_armor:leggings_leather", "mcl_armor:leggings_leather") +minetest.register_alias("3d_armor:leggings_iron", "mcl_armor:leggings_iron") +minetest.register_alias("3d_armor:leggings_chain", "mcl_armor:leggings_chain") +minetest.register_alias("3d_armor:leggings_gold", "mcl_armor:leggings_gold") +minetest.register_alias("3d_armor:leggings_diamond", "mcl_armor:leggings_diamond") + +minetest.register_alias("3d_armor:boots_leather", "mcl_armor:boots_leather") +minetest.register_alias("3d_armor:boots_iron", "mcl_armor:boots_iron") +minetest.register_alias("3d_armor:boots_chain", "mcl_armor:boots_chain") +minetest.register_alias("3d_armor:boots_gold", "mcl_armor:boots_gold") +minetest.register_alias("3d_armor:boots_diamond", "mcl_armor:boots_diamond") diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor/armor.lua b/mods/ITEMS/minetest-3d_armor/mcl_armor/armor.lua similarity index 94% rename from mods/ITEMS/minetest-3d_armor/3d_armor/armor.lua rename to mods/ITEMS/minetest-3d_armor/mcl_armor/armor.lua index 007bb274..d06d5444 100644 --- a/mods/ITEMS/minetest-3d_armor/3d_armor/armor.lua +++ b/mods/ITEMS/minetest-3d_armor/mcl_armor/armor.lua @@ -18,7 +18,6 @@ armor = { .."listring[current_player;craft]", textures = {}, default_skin = "character", - version = "0.4.6", } if minetest.get_modpath("mcl_skins") then @@ -71,6 +70,9 @@ armor.set_player_armor = function(self, player) for i=1, 6 do local stack = player_inv:get_stack("armor", i) local item = stack:get_name() + if minetest.registered_aliases[item] then + item = minetest.registered_aliases[item] + end if stack:get_count() == 1 then local def = stack:get_definition() for k, v in pairs(elements) do @@ -177,11 +179,11 @@ 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]") + minetest.log("error", "mcl_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]") + minetest.log("error", "mcl_armor: Armor def["..name.."] is nil [get_armor_formspec]") return "" end local formspec = armor.formspec.."list[detached:"..name.."_armor;armor;0,1;2,3;]" @@ -197,25 +199,25 @@ 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) + minetest.log("error", "mcl_armor: Player reference is nil "..msg) return end local name = player:get_player_name() if not name then - minetest.log("error", "3d_armor: Player name is nil "..msg) + minetest.log("error", "mcl_armor: Player name is nil "..msg) return end local pos = player:get_pos() 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) + minetest.log("error", "mcl_armor: Player position is nil "..msg) return elseif not player_inv then - minetest.log("error", "3d_armor: Player inventory is nil "..msg) + minetest.log("error", "mcl_armor: Player inventory is nil "..msg) return elseif not armor_inv then - minetest.log("error", "3d_armor: Detached armor inventory is nil "..msg) + minetest.log("error", "mcl_armor: Detached armor inventory is nil "..msg) return end return name, player_inv, armor_inv, pos @@ -230,7 +232,7 @@ armor.play_equip_sound = function(self, player, stack, unequip) local snd = def.sounds and def.sounds["_mcl_armor_"..estr] if not snd then -- Fallback sound - snd = { name = "3d_armor_"..estr.."_iron" } + snd = { name = "mcl_armor_"..estr.."_iron" } end if snd then minetest.sound_play(snd, {object=player, gain=0.5, max_hear_distance=8}) @@ -239,7 +241,7 @@ end -- Register Player Model -mcl_player.player_register_model("3d_armor_character.b3d", { +mcl_player.player_register_model("mcl_armor_character.b3d", { animation_speed = 30, textures = { armor.default_skin..".png", @@ -282,7 +284,7 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) end) minetest.register_on_joinplayer(function(player) - mcl_player.player_set_model(player, "3d_armor_character.b3d") + mcl_player.player_set_model(player, "mcl_armor_character.b3d") local name = player:get_player_name() local player_inv = player:get_inventory() local armor_inv = minetest.create_detached_inventory(name.."_armor", { diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor/depends.txt b/mods/ITEMS/minetest-3d_armor/mcl_armor/depends.txt similarity index 100% rename from mods/ITEMS/minetest-3d_armor/3d_armor/depends.txt rename to mods/ITEMS/minetest-3d_armor/mcl_armor/depends.txt diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor/description.txt b/mods/ITEMS/minetest-3d_armor/mcl_armor/description.txt similarity index 100% rename from mods/ITEMS/minetest-3d_armor/3d_armor/description.txt rename to mods/ITEMS/minetest-3d_armor/mcl_armor/description.txt diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor/init.lua b/mods/ITEMS/minetest-3d_armor/mcl_armor/init.lua similarity index 60% rename from mods/ITEMS/minetest-3d_armor/3d_armor/init.lua rename to mods/ITEMS/minetest-3d_armor/mcl_armor/init.lua index 774bd07a..42ad8f24 100644 --- a/mods/ITEMS/minetest-3d_armor/3d_armor/init.lua +++ b/mods/ITEMS/minetest-3d_armor/mcl_armor/init.lua @@ -1,258 +1,259 @@ -local S = minetest.get_translator("3d_armor") +local S = minetest.get_translator("mcl_armor") dofile(minetest.get_modpath(minetest.get_current_modname()).."/armor.lua") +dofile(minetest.get_modpath(minetest.get_current_modname()).."/alias.lua") -- Regisiter Head Armor local longdesc = S("This is a piece of equippable armor which reduces the amount of damage you receive.") local usage = S("To equip it, put it on the corresponding armor slot in your inventory menu.") -minetest.register_tool("3d_armor:helmet_leather", { +minetest.register_tool("mcl_armor:helmet_leather", { description = S("Leather Cap"), _doc_items_longdesc = longdesc, _doc_items_usagehelp = usage, - inventory_image = "3d_armor_inv_helmet_leather.png", + inventory_image = "mcl_armor_inv_helmet_leather.png", groups = {armor_head=1, mcl_armor_points=1, mcl_armor_uses=56}, _repair_material = "mcl_mobitems:leather", sounds = { - _mcl_armor_equip = "3d_armor_equip_leather", - _mcl_armor_unequip = "3d_armor_unequip_leather", + _mcl_armor_equip = "mcl_armor_equip_leather", + _mcl_armor_unequip = "mcl_armor_unequip_leather", }, }) -minetest.register_tool("3d_armor:helmet_iron", { +minetest.register_tool("mcl_armor:helmet_iron", { description = S("Iron Helmet"), _doc_items_longdesc = longdesc, _doc_items_usagehelp = usage, - inventory_image = "3d_armor_inv_helmet_iron.png", + inventory_image = "mcl_armor_inv_helmet_iron.png", groups = {armor_head=1, mcl_armor_points=2, mcl_armor_uses=166}, _repair_material = "mcl_core:iron_ingot", sounds = { - _mcl_armor_equip = "3d_armor_equip_iron", - _mcl_armor_unequip = "3d_armor_unequip_iron", + _mcl_armor_equip = "mcl_armor_equip_iron", + _mcl_armor_unequip = "mcl_armor_unequip_iron", }, }) -minetest.register_tool("3d_armor:helmet_gold", { +minetest.register_tool("mcl_armor:helmet_gold", { description = S("Golden Helmet"), _doc_items_longdesc = longdesc, _doc_items_usagehelp = usage, - inventory_image = "3d_armor_inv_helmet_gold.png", + inventory_image = "mcl_armor_inv_helmet_gold.png", groups = {armor_head=1, mcl_armor_points=2, mcl_armor_uses=78}, _repair_material = "mcl_core:gold_ingot", }) -minetest.register_tool("3d_armor:helmet_diamond",{ +minetest.register_tool("mcl_armor:helmet_diamond",{ description = S("Diamond Helmet"), _doc_items_longdesc = longdesc, _doc_items_usagehelp = usage, - inventory_image = "3d_armor_inv_helmet_diamond.png", + inventory_image = "mcl_armor_inv_helmet_diamond.png", groups = {armor_head=1, mcl_armor_points=3, mcl_armor_uses=364, mcl_armor_toughness=2}, _repair_material = "mcl_core:diamond", sounds = { - _mcl_armor_equip = "3d_armor_equip_diamond", - _mcl_armor_unequip = "3d_armor_unequip_diamond", + _mcl_armor_equip = "mcl_armor_equip_diamond", + _mcl_armor_unequip = "mcl_armor_unequip_diamond", }, }) -minetest.register_tool("3d_armor:helmet_chain", { +minetest.register_tool("mcl_armor:helmet_chain", { description = S("Chain Helmet"), _doc_items_longdesc = longdesc, _doc_items_usagehelp = usage, - inventory_image = "3d_armor_inv_helmet_chain.png", + inventory_image = "mcl_armor_inv_helmet_chain.png", groups = {armor_head=1, mcl_armor_points=2, mcl_armor_uses=166}, _repair_material = "mcl_core:iron_ingot", sounds = { - _mcl_armor_equip = "3d_armor_equip_chainmail", - _mcl_armor_unequip = "3d_armor_unequip_chainmail", + _mcl_armor_equip = "mcl_armor_equip_chainmail", + _mcl_armor_unequip = "mcl_armor_unequip_chainmail", }, }) -- Regisiter Torso Armor -minetest.register_tool("3d_armor:chestplate_leather", { +minetest.register_tool("mcl_armor:chestplate_leather", { description = S("Leather Tunic"), _doc_items_longdesc = longdesc, _doc_items_usagehelp = usage, - inventory_image = "3d_armor_inv_chestplate_leather.png", + inventory_image = "mcl_armor_inv_chestplate_leather.png", groups = {armor_torso=1, mcl_armor_points=3, mcl_armor_uses=81}, _repair_material = "mcl_mobitems:leather", sounds = { - _mcl_armor_equip = "3d_armor_equip_leather", - _mcl_armor_unequip = "3d_armor_unequip_leather", + _mcl_armor_equip = "mcl_armor_equip_leather", + _mcl_armor_unequip = "mcl_armor_unequip_leather", }, }) -minetest.register_tool("3d_armor:chestplate_iron", { +minetest.register_tool("mcl_armor:chestplate_iron", { description = S("Iron Chestplate"), _doc_items_longdesc = longdesc, _doc_items_usagehelp = usage, - inventory_image = "3d_armor_inv_chestplate_iron.png", + inventory_image = "mcl_armor_inv_chestplate_iron.png", groups = {armor_torso=1, mcl_armor_points=6, mcl_armor_uses=241}, _repair_material = "mcl_core:iron_ingot", sounds = { - _mcl_armor_equip = "3d_armor_equip_iron", - _mcl_armor_unequip = "3d_armor_unequip_iron", + _mcl_armor_equip = "mcl_armor_equip_iron", + _mcl_armor_unequip = "mcl_armor_unequip_iron", }, }) -minetest.register_tool("3d_armor:chestplate_gold", { +minetest.register_tool("mcl_armor:chestplate_gold", { description = S("Golden Chestplate"), _doc_items_longdesc = longdesc, _doc_items_usagehelp = usage, - inventory_image = "3d_armor_inv_chestplate_gold.png", + inventory_image = "mcl_armor_inv_chestplate_gold.png", groups = {armor_torso=1, mcl_armor_points=5, mcl_armor_uses=113}, _repair_material = "mcl_core:gold_ingot", }) -minetest.register_tool("3d_armor:chestplate_diamond",{ +minetest.register_tool("mcl_armor:chestplate_diamond",{ description = S("Diamond Chestplate"), _doc_items_longdesc = longdesc, _doc_items_usagehelp = usage, - inventory_image = "3d_armor_inv_chestplate_diamond.png", + inventory_image = "mcl_armor_inv_chestplate_diamond.png", groups = {armor_torso=1, mcl_armor_points=8, mcl_armor_uses=529, mcl_armor_toughness=2}, _repair_material = "mcl_core:diamond", sounds = { - _mcl_armor_equip = "3d_armor_equip_diamond", - _mcl_armor_unequip = "3d_armor_unequip_diamond", + _mcl_armor_equip = "mcl_armor_equip_diamond", + _mcl_armor_unequip = "mcl_armor_unequip_diamond", }, }) -minetest.register_tool("3d_armor:chestplate_chain", { +minetest.register_tool("mcl_armor:chestplate_chain", { description = S("Chain Chestplate"), _doc_items_longdesc = longdesc, _doc_items_usagehelp = usage, - inventory_image = "3d_armor_inv_chestplate_chain.png", + inventory_image = "mcl_armor_inv_chestplate_chain.png", groups = {armor_torso=1, mcl_armor_points=5, mcl_armor_uses=241}, _repair_material = "mcl_core:iron_ingot", sounds = { - _mcl_armor_equip = "3d_armor_equip_chainmail", - _mcl_armor_unequip = "3d_armor_unequip_chainmail", + _mcl_armor_equip = "mcl_armor_equip_chainmail", + _mcl_armor_unequip = "mcl_armor_unequip_chainmail", }, }) -- Regisiter Leg Armor -minetest.register_tool("3d_armor:leggings_leather", { +minetest.register_tool("mcl_armor:leggings_leather", { description = S("Leather Pants"), _doc_items_longdesc = longdesc, _doc_items_usagehelp = usage, - inventory_image = "3d_armor_inv_leggings_leather.png", + inventory_image = "mcl_armor_inv_leggings_leather.png", groups = {armor_legs=1, mcl_armor_points=2, mcl_armor_uses=76}, _repair_material = "mcl_mobitems:leather", sounds = { - _mcl_armor_equip = "3d_armor_equip_leather", - _mcl_armor_unequip = "3d_armor_unequip_leather", + _mcl_armor_equip = "mcl_armor_equip_leather", + _mcl_armor_unequip = "mcl_armor_unequip_leather", }, }) -minetest.register_tool("3d_armor:leggings_iron", { +minetest.register_tool("mcl_armor:leggings_iron", { description = S("Iron Leggings"), _doc_items_longdesc = longdesc, _doc_items_usagehelp = usage, - inventory_image = "3d_armor_inv_leggings_iron.png", + inventory_image = "mcl_armor_inv_leggings_iron.png", groups = {armor_legs=1, mcl_armor_points=5, mcl_armor_uses=226}, _repair_material = "mcl_core:iron_ingot", sounds = { - _mcl_armor_equip = "3d_armor_equip_iron", - _mcl_armor_unequip = "3d_armor_unequip_iron", + _mcl_armor_equip = "mcl_armor_equip_iron", + _mcl_armor_unequip = "mcl_armor_unequip_iron", }, }) -minetest.register_tool("3d_armor:leggings_gold", { +minetest.register_tool("mcl_armor:leggings_gold", { description = S("Golden Leggings"), _doc_items_longdesc = longdesc, _doc_items_usagehelp = usage, - inventory_image = "3d_armor_inv_leggings_gold.png", + inventory_image = "mcl_armor_inv_leggings_gold.png", groups = {armor_legs=1, mcl_armor_points=3, mcl_armor_uses=106}, _repair_material = "mcl_core:gold_ingot", }) -minetest.register_tool("3d_armor:leggings_diamond",{ +minetest.register_tool("mcl_armor:leggings_diamond",{ description = S("Diamond Leggings"), _doc_items_longdesc = longdesc, _doc_items_usagehelp = usage, - inventory_image = "3d_armor_inv_leggings_diamond.png", + inventory_image = "mcl_armor_inv_leggings_diamond.png", groups = {armor_legs=1, mcl_armor_points=6, mcl_armor_uses=496, mcl_armor_toughness=2}, _repair_material = "mcl_core:diamond", sounds = { - _mcl_armor_equip = "3d_armor_equip_diamond", - _mcl_armor_unequip = "3d_armor_unequip_diamond", + _mcl_armor_equip = "mcl_armor_equip_diamond", + _mcl_armor_unequip = "mcl_armor_unequip_diamond", }, }) -minetest.register_tool("3d_armor:leggings_chain", { +minetest.register_tool("mcl_armor:leggings_chain", { description = S("Chain Leggings"), _doc_items_longdesc = longdesc, _doc_items_usagehelp = usage, - inventory_image = "3d_armor_inv_leggings_chain.png", + inventory_image = "mcl_armor_inv_leggings_chain.png", groups = {armor_legs=1, mcl_armor_points=4, mcl_armor_uses=226}, _repair_material = "mcl_core:iron_ingot", sounds = { - _mcl_armor_equip = "3d_armor_equip_chainmail", - _mcl_armor_unequip = "3d_armor_unequip_chainmail", + _mcl_armor_equip = "mcl_armor_equip_chainmail", + _mcl_armor_unequip = "mcl_armor_unequip_chainmail", }, }) -- Regisiter Boots -minetest.register_tool("3d_armor:boots_leather", { +minetest.register_tool("mcl_armor:boots_leather", { description = S("Leather Boots"), _doc_items_longdesc = longdesc, _doc_items_usagehelp = usage, - inventory_image = "3d_armor_inv_boots_leather.png", + inventory_image = "mcl_armor_inv_boots_leather.png", groups = {armor_feet=1, mcl_armor_points=1, mcl_armor_uses=66}, _repair_material = "mcl_mobitems:leather", sounds = { - _mcl_armor_equip = "3d_armor_equip_leather", - _mcl_armor_unequip = "3d_armor_unequip_leather", + _mcl_armor_equip = "mcl_armor_equip_leather", + _mcl_armor_unequip = "mcl_armor_unequip_leather", }, }) -minetest.register_tool("3d_armor:boots_iron", { +minetest.register_tool("mcl_armor:boots_iron", { description = S("Iron Boots"), _doc_items_longdesc = longdesc, _doc_items_usagehelp = usage, - inventory_image = "3d_armor_inv_boots_iron.png", + inventory_image = "mcl_armor_inv_boots_iron.png", groups = {armor_feet=1, mcl_armor_points=2, mcl_armor_uses=196}, _repair_material = "mcl_core:iron_ingot", sounds = { - _mcl_armor_equip = "3d_armor_equip_iron", - _mcl_armor_unequip = "3d_armor_unequip_iron", + _mcl_armor_equip = "mcl_armor_equip_iron", + _mcl_armor_unequip = "mcl_armor_unequip_iron", }, }) -minetest.register_tool("3d_armor:boots_gold", { +minetest.register_tool("mcl_armor:boots_gold", { description = S("Golden Boots"), _doc_items_longdesc = longdesc, _doc_items_usagehelp = usage, - inventory_image = "3d_armor_inv_boots_gold.png", + inventory_image = "mcl_armor_inv_boots_gold.png", groups = {armor_feet=1, mcl_armor_points=1, mcl_armor_uses=92}, _repair_material = "mcl_core:gold_ingot", }) -minetest.register_tool("3d_armor:boots_diamond",{ +minetest.register_tool("mcl_armor:boots_diamond",{ description = S("Diamond Boots"), _doc_items_longdesc = longdesc, _doc_items_usagehelp = usage, - inventory_image = "3d_armor_inv_boots_diamond.png", + inventory_image = "mcl_armor_inv_boots_diamond.png", groups = {armor_feet=1, mcl_armor_points=3, mcl_armor_uses=430, mcl_armor_toughness=2}, _repair_material = "mcl_core:diamond", sounds = { - _mcl_armor_equip = "3d_armor_equip_diamond", - _mcl_armor_unequip = "3d_armor_unequip_diamond", + _mcl_armor_equip = "mcl_armor_equip_diamond", + _mcl_armor_unequip = "mcl_armor_unequip_diamond", }, }) -minetest.register_tool("3d_armor:boots_chain", { +minetest.register_tool("mcl_armor:boots_chain", { description = S("Chain Boots"), _doc_items_longdesc = longdesc, _doc_items_usagehelp = usage, - inventory_image = "3d_armor_inv_boots_chain.png", + inventory_image = "mcl_armor_inv_boots_chain.png", groups = {armor_feet=1, mcl_armor_points=1, mcl_armor_uses=196}, _repair_material = "mcl_core:iron_ingot", sounds = { - _mcl_armor_equip = "3d_armor_equip_chainmail", - _mcl_armor_unequip = "3d_armor_unequip_chainmail", + _mcl_armor_equip = "mcl_armor_equip_chainmail", + _mcl_armor_unequip = "mcl_armor_unequip_chainmail", }, }) @@ -273,7 +274,7 @@ for k, v in pairs(craft_ingreds) do local c = v[2] if m ~= nil then minetest.register_craft({ - output = "3d_armor:helmet_"..k, + output = "mcl_armor:helmet_"..k, recipe = { {m, m, m}, {m, "", m}, @@ -281,7 +282,7 @@ for k, v in pairs(craft_ingreds) do }, }) minetest.register_craft({ - output = "3d_armor:chestplate_"..k, + output = "mcl_armor:chestplate_"..k, recipe = { {m, "", m}, {m, m, m}, @@ -289,7 +290,7 @@ for k, v in pairs(craft_ingreds) do }, }) minetest.register_craft({ - output = "3d_armor:leggings_"..k, + output = "mcl_armor:leggings_"..k, recipe = { {m, m, m}, {m, "", m}, @@ -297,7 +298,7 @@ for k, v in pairs(craft_ingreds) do }, }) minetest.register_craft({ - output = "3d_armor:boots_"..k, + output = "mcl_armor:boots_"..k, recipe = { {m, "", m}, {m, "", m}, @@ -308,26 +309,27 @@ for k, v in pairs(craft_ingreds) do minetest.register_craft({ type = "cooking", output = c, - recipe = "3d_armor:helmet_"..k, + recipe = "mcl_armor:helmet_"..k, cooktime = 10, }) minetest.register_craft({ type = "cooking", output = c, - recipe = "3d_armor:chestplate_"..k, + recipe = "mcl_armor:chestplate_"..k, cooktime = 10, }) minetest.register_craft({ type = "cooking", output = c, - recipe = "3d_armor:leggings_"..k, + recipe = "mcl_armor:leggings_"..k, cooktime = 10, }) minetest.register_craft({ type = "cooking", output = c, - recipe = "3d_armor:boots_"..k, + recipe = "mcl_armor:boots_"..k, cooktime = 10, }) end end + diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor/locale/3d_armor.de.tr b/mods/ITEMS/minetest-3d_armor/mcl_armor/locale/mcl_armor.de.tr similarity index 97% rename from mods/ITEMS/minetest-3d_armor/3d_armor/locale/3d_armor.de.tr rename to mods/ITEMS/minetest-3d_armor/mcl_armor/locale/mcl_armor.de.tr index 12c7c09e..09da3a9c 100644 --- a/mods/ITEMS/minetest-3d_armor/3d_armor/locale/3d_armor.de.tr +++ b/mods/ITEMS/minetest-3d_armor/mcl_armor/locale/mcl_armor.de.tr @@ -1,4 +1,4 @@ -# textdomain: 3d_armor +# textdomain: mcl_armor This is a piece of equippable armor which reduces the amount of damage you receive.=Dies ist ein Teil einer tragbaren Rüstung, die die Menge an Schaden, den Sie erleiden, reduziert. To equip it, put it on the corresponding armor slot in your inventory menu.=Um es zu tragen, legen Sie es in den passenden Rüstungsplatz in ihrem Inventarmenü. Leather Cap=Lederkappe diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor/locale/3d_armor.es.tr b/mods/ITEMS/minetest-3d_armor/mcl_armor/locale/mcl_armor.es.tr similarity index 97% rename from mods/ITEMS/minetest-3d_armor/3d_armor/locale/3d_armor.es.tr rename to mods/ITEMS/minetest-3d_armor/mcl_armor/locale/mcl_armor.es.tr index 6606d2ff..e770dff0 100644 --- a/mods/ITEMS/minetest-3d_armor/3d_armor/locale/3d_armor.es.tr +++ b/mods/ITEMS/minetest-3d_armor/mcl_armor/locale/mcl_armor.es.tr @@ -1,4 +1,4 @@ -# textdomain: 3d_armor +# textdomain: mcl_armor This is a piece of equippable armor which reduces the amount of damage you receive.=Dies ist ein Teil einer tragbaren Rüstung, die die Menge an Schaden, den Sie erleiden, reduziert. To equip it, put it on the corresponding armor slot in your inventory menu.=Um es zu tragen, legen Sie es in den passenden Rüstungsplatz in ihrem Inventarmenü. Leather Cap=Sombrero de cuero diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor/locale/template.txt b/mods/ITEMS/minetest-3d_armor/mcl_armor/locale/template.txt similarity index 95% rename from mods/ITEMS/minetest-3d_armor/3d_armor/locale/template.txt rename to mods/ITEMS/minetest-3d_armor/mcl_armor/locale/template.txt index f0126bca..8a95fca0 100644 --- a/mods/ITEMS/minetest-3d_armor/3d_armor/locale/template.txt +++ b/mods/ITEMS/minetest-3d_armor/mcl_armor/locale/template.txt @@ -1,4 +1,4 @@ -# textdomain: 3d_armor +# textdomain: mcl_armor This is a piece of equippable armor which reduces the amount of damage you receive.= To equip it, put it on the corresponding armor slot in your inventory menu.= Leather Cap= diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor/models/3d_armor_character.b3d b/mods/ITEMS/minetest-3d_armor/mcl_armor/models/mcl_armor_character.b3d similarity index 100% rename from mods/ITEMS/minetest-3d_armor/3d_armor/models/3d_armor_character.b3d rename to mods/ITEMS/minetest-3d_armor/mcl_armor/models/mcl_armor_character.b3d diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor/models/3d_armor_character.blend b/mods/ITEMS/minetest-3d_armor/mcl_armor/models/mcl_armor_character.blend similarity index 100% rename from mods/ITEMS/minetest-3d_armor/3d_armor/models/3d_armor_character.blend rename to mods/ITEMS/minetest-3d_armor/mcl_armor/models/mcl_armor_character.blend diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor/sounds/3d_armor_equip_chainmail.ogg b/mods/ITEMS/minetest-3d_armor/mcl_armor/sounds/mcl_armor_equip_chainmail.ogg similarity index 100% rename from mods/ITEMS/minetest-3d_armor/3d_armor/sounds/3d_armor_equip_chainmail.ogg rename to mods/ITEMS/minetest-3d_armor/mcl_armor/sounds/mcl_armor_equip_chainmail.ogg diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor/sounds/3d_armor_equip_diamond.ogg b/mods/ITEMS/minetest-3d_armor/mcl_armor/sounds/mcl_armor_equip_diamond.ogg similarity index 100% rename from mods/ITEMS/minetest-3d_armor/3d_armor/sounds/3d_armor_equip_diamond.ogg rename to mods/ITEMS/minetest-3d_armor/mcl_armor/sounds/mcl_armor_equip_diamond.ogg diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor/sounds/3d_armor_equip_iron.ogg b/mods/ITEMS/minetest-3d_armor/mcl_armor/sounds/mcl_armor_equip_iron.ogg similarity index 100% rename from mods/ITEMS/minetest-3d_armor/3d_armor/sounds/3d_armor_equip_iron.ogg rename to mods/ITEMS/minetest-3d_armor/mcl_armor/sounds/mcl_armor_equip_iron.ogg diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor/sounds/3d_armor_equip_leather.ogg b/mods/ITEMS/minetest-3d_armor/mcl_armor/sounds/mcl_armor_equip_leather.ogg similarity index 100% rename from mods/ITEMS/minetest-3d_armor/3d_armor/sounds/3d_armor_equip_leather.ogg rename to mods/ITEMS/minetest-3d_armor/mcl_armor/sounds/mcl_armor_equip_leather.ogg diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor/sounds/3d_armor_unequip_chainmail.ogg b/mods/ITEMS/minetest-3d_armor/mcl_armor/sounds/mcl_armor_unequip_chainmail.ogg similarity index 100% rename from mods/ITEMS/minetest-3d_armor/3d_armor/sounds/3d_armor_unequip_chainmail.ogg rename to mods/ITEMS/minetest-3d_armor/mcl_armor/sounds/mcl_armor_unequip_chainmail.ogg diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor/sounds/3d_armor_unequip_diamond.ogg b/mods/ITEMS/minetest-3d_armor/mcl_armor/sounds/mcl_armor_unequip_diamond.ogg similarity index 100% rename from mods/ITEMS/minetest-3d_armor/3d_armor/sounds/3d_armor_unequip_diamond.ogg rename to mods/ITEMS/minetest-3d_armor/mcl_armor/sounds/mcl_armor_unequip_diamond.ogg diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor/sounds/3d_armor_unequip_iron.ogg b/mods/ITEMS/minetest-3d_armor/mcl_armor/sounds/mcl_armor_unequip_iron.ogg similarity index 100% rename from mods/ITEMS/minetest-3d_armor/3d_armor/sounds/3d_armor_unequip_iron.ogg rename to mods/ITEMS/minetest-3d_armor/mcl_armor/sounds/mcl_armor_unequip_iron.ogg diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor/sounds/3d_armor_unequip_leather.ogg b/mods/ITEMS/minetest-3d_armor/mcl_armor/sounds/mcl_armor_unequip_leather.ogg similarity index 100% rename from mods/ITEMS/minetest-3d_armor/3d_armor/sounds/3d_armor_unequip_leather.ogg rename to mods/ITEMS/minetest-3d_armor/mcl_armor/sounds/mcl_armor_unequip_leather.ogg diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_boots_chain.png b/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_boots_chain.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_boots_chain.png rename to mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_boots_chain.png diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_boots_chain_preview.png b/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_boots_chain_preview.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_boots_chain_preview.png rename to mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_boots_chain_preview.png diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_boots_diamond.png b/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_boots_diamond.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_boots_diamond.png rename to mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_boots_diamond.png diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_boots_diamond_preview.png b/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_boots_diamond_preview.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_boots_diamond_preview.png rename to mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_boots_diamond_preview.png diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_boots_gold.png b/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_boots_gold.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_boots_gold.png rename to mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_boots_gold.png diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_boots_gold_preview.png b/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_boots_gold_preview.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_boots_gold_preview.png rename to mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_boots_gold_preview.png diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_boots_iron.png b/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_boots_iron.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_boots_iron.png rename to mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_boots_iron.png diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_boots_iron_preview.png b/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_boots_iron_preview.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_boots_iron_preview.png rename to mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_boots_iron_preview.png diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_boots_leather.png b/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_boots_leather.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_boots_leather.png rename to mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_boots_leather.png diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_boots_leather_preview.png b/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_boots_leather_preview.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_boots_leather_preview.png rename to mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_boots_leather_preview.png diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_chestplate_chain.png b/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_chestplate_chain.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_chestplate_chain.png rename to mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_chestplate_chain.png diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_chestplate_chain_preview.png b/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_chestplate_chain_preview.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_chestplate_chain_preview.png rename to mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_chestplate_chain_preview.png diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_chestplate_diamond.png b/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_chestplate_diamond.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_chestplate_diamond.png rename to mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_chestplate_diamond.png diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_chestplate_diamond_preview.png b/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_chestplate_diamond_preview.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_chestplate_diamond_preview.png rename to mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_chestplate_diamond_preview.png diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_chestplate_gold.png b/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_chestplate_gold.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_chestplate_gold.png rename to mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_chestplate_gold.png diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_chestplate_gold_preview.png b/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_chestplate_gold_preview.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_chestplate_gold_preview.png rename to mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_chestplate_gold_preview.png diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_chestplate_iron.png b/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_chestplate_iron.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_chestplate_iron.png rename to mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_chestplate_iron.png diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_chestplate_iron_preview.png b/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_chestplate_iron_preview.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_chestplate_iron_preview.png rename to mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_chestplate_iron_preview.png diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_chestplate_leather.png b/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_chestplate_leather.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_chestplate_leather.png rename to mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_chestplate_leather.png diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_chestplate_leather_preview.png b/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_chestplate_leather_preview.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_chestplate_leather_preview.png rename to mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_chestplate_leather_preview.png diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_helmet_chain.png b/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_helmet_chain.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_helmet_chain.png rename to mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_helmet_chain.png diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_helmet_chain_preview.png b/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_helmet_chain_preview.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_helmet_chain_preview.png rename to mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_helmet_chain_preview.png diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_helmet_diamond.png b/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_helmet_diamond.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_helmet_diamond.png rename to mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_helmet_diamond.png diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_helmet_diamond_preview.png b/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_helmet_diamond_preview.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_helmet_diamond_preview.png rename to mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_helmet_diamond_preview.png diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_helmet_gold.png b/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_helmet_gold.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_helmet_gold.png rename to mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_helmet_gold.png diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_helmet_gold_preview.png b/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_helmet_gold_preview.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_helmet_gold_preview.png rename to mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_helmet_gold_preview.png diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_helmet_iron.png b/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_helmet_iron.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_helmet_iron.png rename to mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_helmet_iron.png diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_helmet_iron_preview.png b/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_helmet_iron_preview.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_helmet_iron_preview.png rename to mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_helmet_iron_preview.png diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_helmet_leather.png b/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_helmet_leather.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_helmet_leather.png rename to mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_helmet_leather.png diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_helmet_leather_preview.png b/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_helmet_leather_preview.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_helmet_leather_preview.png rename to mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_helmet_leather_preview.png diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_inv_boots_chain.png b/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_inv_boots_chain.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_inv_boots_chain.png rename to mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_inv_boots_chain.png diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_inv_boots_diamond.png b/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_inv_boots_diamond.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_inv_boots_diamond.png rename to mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_inv_boots_diamond.png diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_inv_boots_gold.png b/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_inv_boots_gold.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_inv_boots_gold.png rename to mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_inv_boots_gold.png diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_inv_boots_iron.png b/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_inv_boots_iron.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_inv_boots_iron.png rename to mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_inv_boots_iron.png diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_inv_boots_leather.png b/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_inv_boots_leather.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_inv_boots_leather.png rename to mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_inv_boots_leather.png diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_inv_chestplate_chain.png b/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_inv_chestplate_chain.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_inv_chestplate_chain.png rename to mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_inv_chestplate_chain.png diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_inv_chestplate_diamond.png b/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_inv_chestplate_diamond.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_inv_chestplate_diamond.png rename to mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_inv_chestplate_diamond.png diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_inv_chestplate_gold.png b/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_inv_chestplate_gold.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_inv_chestplate_gold.png rename to mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_inv_chestplate_gold.png diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_inv_chestplate_iron.png b/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_inv_chestplate_iron.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_inv_chestplate_iron.png rename to mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_inv_chestplate_iron.png diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_inv_chestplate_leather.png b/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_inv_chestplate_leather.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_inv_chestplate_leather.png rename to mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_inv_chestplate_leather.png diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_inv_helmet_chain.png b/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_inv_helmet_chain.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_inv_helmet_chain.png rename to mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_inv_helmet_chain.png diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_inv_helmet_diamond.png b/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_inv_helmet_diamond.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_inv_helmet_diamond.png rename to mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_inv_helmet_diamond.png diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_inv_helmet_gold.png b/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_inv_helmet_gold.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_inv_helmet_gold.png rename to mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_inv_helmet_gold.png diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_inv_helmet_iron.png b/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_inv_helmet_iron.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_inv_helmet_iron.png rename to mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_inv_helmet_iron.png diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_inv_helmet_leather.png b/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_inv_helmet_leather.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_inv_helmet_leather.png rename to mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_inv_helmet_leather.png diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_inv_leggings_chain.png b/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_inv_leggings_chain.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_inv_leggings_chain.png rename to mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_inv_leggings_chain.png diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_inv_leggings_diamond.png b/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_inv_leggings_diamond.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_inv_leggings_diamond.png rename to mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_inv_leggings_diamond.png diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_inv_leggings_gold.png b/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_inv_leggings_gold.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_inv_leggings_gold.png rename to mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_inv_leggings_gold.png diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_inv_leggings_iron.png b/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_inv_leggings_iron.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_inv_leggings_iron.png rename to mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_inv_leggings_iron.png diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_inv_leggings_leather.png b/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_inv_leggings_leather.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_inv_leggings_leather.png rename to mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_inv_leggings_leather.png diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_leggings_chain.png b/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_leggings_chain.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_leggings_chain.png rename to mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_leggings_chain.png diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_leggings_chain_preview.png b/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_leggings_chain_preview.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_leggings_chain_preview.png rename to mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_leggings_chain_preview.png diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_leggings_diamond.png b/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_leggings_diamond.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_leggings_diamond.png rename to mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_leggings_diamond.png diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_leggings_diamond_preview.png b/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_leggings_diamond_preview.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_leggings_diamond_preview.png rename to mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_leggings_diamond_preview.png diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_leggings_gold.png b/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_leggings_gold.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_leggings_gold.png rename to mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_leggings_gold.png diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_leggings_gold_preview.png b/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_leggings_gold_preview.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_leggings_gold_preview.png rename to mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_leggings_gold_preview.png diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_leggings_iron.png b/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_leggings_iron.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_leggings_iron.png rename to mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_leggings_iron.png diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_leggings_iron_preview.png b/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_leggings_iron_preview.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_leggings_iron_preview.png rename to mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_leggings_iron_preview.png diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_leggings_leather.png b/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_leggings_leather.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_leggings_leather.png rename to mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_leggings_leather.png diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_leggings_leather_preview.png b/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_leggings_leather_preview.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/3d_armor/textures/3d_armor_leggings_leather_preview.png rename to mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_leggings_leather_preview.png diff --git a/mods/ITEMS/minetest-3d_armor/wieldview/README.txt b/mods/ITEMS/minetest-3d_armor/wieldview/README.txt index e6be7490..66133c74 100644 --- a/mods/ITEMS/minetest-3d_armor/wieldview/README.txt +++ b/mods/ITEMS/minetest-3d_armor/wieldview/README.txt @@ -1,7 +1,7 @@ [mod] visible wielded items [wieldview] ======================================= -Depends on: 3d_armor +Depends on: mcl_armor Makes hand wielded items visible to other players. diff --git a/mods/ITEMS/minetest-3d_armor/wieldview/depends.txt b/mods/ITEMS/minetest-3d_armor/wieldview/depends.txt index b6cac219..2bbf820f 100644 --- a/mods/ITEMS/minetest-3d_armor/wieldview/depends.txt +++ b/mods/ITEMS/minetest-3d_armor/wieldview/depends.txt @@ -1 +1 @@ -3d_armor +mcl_armor diff --git a/mods/MISC/mcl_temp_helper_recipes/init.lua b/mods/MISC/mcl_temp_helper_recipes/init.lua index 2bb7ff61..fdde8004 100644 --- a/mods/MISC/mcl_temp_helper_recipes/init.lua +++ b/mods/MISC/mcl_temp_helper_recipes/init.lua @@ -40,7 +40,7 @@ minetest.register_craft({ }) minetest.register_craft({ - output = "3d_armor:helmet_chain", + output = "mcl_armor:helmet_chain", recipe = { { "xpanes:bar_flat", "mcl_core:iron_ingot", "xpanes:bar_flat" }, { "xpanes:bar_flat", "", "xpanes:bar_flat" }, @@ -48,7 +48,7 @@ minetest.register_craft({ }) minetest.register_craft({ - output = "3d_armor:leggings_chain", + output = "mcl_armor:leggings_chain", recipe = { { "xpanes:bar_flat", "mcl_core:iron_ingot", "xpanes:bar_flat" }, { "xpanes:bar_flat", "", "xpanes:bar_flat" }, @@ -57,7 +57,7 @@ minetest.register_craft({ }) minetest.register_craft({ - output = "3d_armor:boots_chain", + output = "mcl_armor:boots_chain", recipe = { { "xpanes:bar_flat", "", "xpanes:bar_flat" }, { "xpanes:bar_flat", "", "xpanes:bar_flat" }, @@ -65,7 +65,7 @@ minetest.register_craft({ }) minetest.register_craft({ - output = "3d_armor:chestplate_chain", + output = "mcl_armor:chestplate_chain", recipe = { { "xpanes:bar_flat", "", "xpanes:bar_flat" }, { "xpanes:bar_flat", "mcl_core:iron_ingot", "xpanes:bar_flat" }, diff --git a/mods/PLAYER/mcl_death_drop/depends.txt b/mods/PLAYER/mcl_death_drop/depends.txt index b6cac219..2bbf820f 100644 --- a/mods/PLAYER/mcl_death_drop/depends.txt +++ b/mods/PLAYER/mcl_death_drop/depends.txt @@ -1 +1 @@ -3d_armor +mcl_armor diff --git a/mods/PLAYER/mcl_playerinfo/depends.txt b/mods/PLAYER/mcl_playerinfo/depends.txt index 3fb37201..d0334ff5 100644 --- a/mods/PLAYER/mcl_playerinfo/depends.txt +++ b/mods/PLAYER/mcl_playerinfo/depends.txt @@ -2,4 +2,3 @@ mcl_init mcl_core mcl_particles mcl_death_messages -3d_armor? diff --git a/mods/PLAYER/mcl_playerplus/depends.txt b/mods/PLAYER/mcl_playerplus/depends.txt index 3e89821c..6bbe4cbd 100644 --- a/mods/PLAYER/mcl_playerplus/depends.txt +++ b/mods/PLAYER/mcl_playerplus/depends.txt @@ -5,6 +5,5 @@ mcl_hunger mcl_death_messages playerphysics mcl_playerinfo -3d_armor? mcl_weather mcl_spawn diff --git a/mods/PLAYER/mcl_playerplus/init.lua b/mods/PLAYER/mcl_playerplus/init.lua index 19e5c2d5..99939d1d 100644 --- a/mods/PLAYER/mcl_playerplus/init.lua +++ b/mods/PLAYER/mcl_playerplus/init.lua @@ -3,7 +3,6 @@ local S = minetest.get_translator("mcl_playerplus") -- Internal player state local mcl_playerplus_internal = {} -local armor_mod = minetest.get_modpath("3d_armor") local def = {} local time = 0 diff --git a/mods/PLAYER/mcl_skins/depends.txt b/mods/PLAYER/mcl_skins/depends.txt index e0804a6f..09bdf520 100644 --- a/mods/PLAYER/mcl_skins/depends.txt +++ b/mods/PLAYER/mcl_skins/depends.txt @@ -1,4 +1,4 @@ mcl_player mcl_inventory? intllib? -3d_armor? +mcl_armor? diff --git a/mods/PLAYER/mcl_skins/init.lua b/mods/PLAYER/mcl_skins/init.lua index 401ba160..c1f557d9 100644 --- a/mods/PLAYER/mcl_skins/init.lua +++ b/mods/PLAYER/mcl_skins/init.lua @@ -105,7 +105,7 @@ mcl_skins.set_player_skin = function(player, skin_id) mcl_skins.previews[playername] = preview player:get_meta():set_string("mcl_skins:skin_id", tostring(skin_id)) mcl_skins.update_player_skin(player) - if minetest.get_modpath("3d_armor") then + if minetest.get_modpath("mcl_armor") then armor.textures[playername].skin = skin_file armor:update_player_visuals(player) end diff --git a/tools/Conversion_Table.csv b/tools/Conversion_Table.csv index ab4a9451..db82bd1f 100644 --- a/tools/Conversion_Table.csv +++ b/tools/Conversion_Table.csv @@ -589,26 +589,26 @@ Source path,Source file,Target path,Target file,xs,ys,xl,yl,xt,yt,Blacklisted? /assets/minecraft/textures/blocks,wool_colored_purple.png,/mods/ITEMS/mcl_wool/textures,wool_violet.png,,,,,,, /assets/minecraft/textures/blocks,wool_colored_white.png,/mods/ITEMS/mcl_wool/textures,wool_white.png,,,,,,, /assets/minecraft/textures/blocks,wool_colored_yellow.png,/mods/ITEMS/mcl_wool/textures,wool_yellow.png,,,,,,, -/assets/minecraft/textures/items,chainmail_boots.png,/mods/ITEMS/minetest-3d_armor/3d_armor/textures,3d_armor_inv_boots_chain.png,,,,,,, -/assets/minecraft/textures/items,diamond_boots.png,/mods/ITEMS/minetest-3d_armor/3d_armor/textures,3d_armor_inv_boots_diamond.png,,,,,,, -/assets/minecraft/textures/items,gold_boots.png,/mods/ITEMS/minetest-3d_armor/3d_armor/textures,3d_armor_inv_boots_gold.png,,,,,,, -/assets/minecraft/textures/items,iron_boots.png,/mods/ITEMS/minetest-3d_armor/3d_armor/textures,3d_armor_inv_boots_iron.png,,,,,,, -/assets/minecraft/textures/items,leather_boots.png,/mods/ITEMS/minetest-3d_armor/3d_armor/textures,3d_armor_inv_boots_leather.png,,,,,,, -/assets/minecraft/textures/items,chainmail_chestplate.png,/mods/ITEMS/minetest-3d_armor/3d_armor/textures,3d_armor_inv_chestplate_chain.png,,,,,,, -/assets/minecraft/textures/items,diamond_chestplate.png,/mods/ITEMS/minetest-3d_armor/3d_armor/textures,3d_armor_inv_chestplate_diamond.png,,,,,,, -/assets/minecraft/textures/items,gold_chestplate.png,/mods/ITEMS/minetest-3d_armor/3d_armor/textures,3d_armor_inv_chestplate_gold.png,,,,,,, -/assets/minecraft/textures/items,iron_chestplate.png,/mods/ITEMS/minetest-3d_armor/3d_armor/textures,3d_armor_inv_chestplate_iron.png,,,,,,, -/assets/minecraft/textures/items,leather_chestplate.png,/mods/ITEMS/minetest-3d_armor/3d_armor/textures,3d_armor_inv_chestplate_leather.png,,,,,,, -/assets/minecraft/textures/items,chainmail_helmet.png,/mods/ITEMS/minetest-3d_armor/3d_armor/textures,3d_armor_inv_helmet_chain.png,,,,,,, -/assets/minecraft/textures/items,diamond_helmet.png,/mods/ITEMS/minetest-3d_armor/3d_armor/textures,3d_armor_inv_helmet_diamond.png,,,,,,, -/assets/minecraft/textures/items,gold_helmet.png,/mods/ITEMS/minetest-3d_armor/3d_armor/textures,3d_armor_inv_helmet_gold.png,,,,,,, -/assets/minecraft/textures/items,iron_helmet.png,/mods/ITEMS/minetest-3d_armor/3d_armor/textures,3d_armor_inv_helmet_iron.png,,,,,,, -/assets/minecraft/textures/items,leather_helmet.png,/mods/ITEMS/minetest-3d_armor/3d_armor/textures,3d_armor_inv_helmet_leather.png,,,,,,, -/assets/minecraft/textures/items,chainmail_leggings.png,/mods/ITEMS/minetest-3d_armor/3d_armor/textures,3d_armor_inv_leggings_chain.png,,,,,,, -/assets/minecraft/textures/items,diamond_leggings.png,/mods/ITEMS/minetest-3d_armor/3d_armor/textures,3d_armor_inv_leggings_diamond.png,,,,,,, -/assets/minecraft/textures/items,gold_leggings.png,/mods/ITEMS/minetest-3d_armor/3d_armor/textures,3d_armor_inv_leggings_gold.png,,,,,,, -/assets/minecraft/textures/items,iron_leggings.png,/mods/ITEMS/minetest-3d_armor/3d_armor/textures,3d_armor_inv_leggings_iron.png,,,,,,, -/assets/minecraft/textures/items,leather_leggings.png,/mods/ITEMS/minetest-3d_armor/3d_armor/textures,3d_armor_inv_leggings_leather.png,,,,,,, +/assets/minecraft/textures/items,chainmail_boots.png,/mods/ITEMS/minetest-3d_armor/mcl_armor/textures,mcl_armor_inv_boots_chain.png,,,,,,, +/assets/minecraft/textures/items,diamond_boots.png,/mods/ITEMS/minetest-3d_armor/mcl_armor/textures,mcl_armor_inv_boots_diamond.png,,,,,,, +/assets/minecraft/textures/items,gold_boots.png,/mods/ITEMS/minetest-3d_armor/mcl_armor/textures,mcl_armor_inv_boots_gold.png,,,,,,, +/assets/minecraft/textures/items,iron_boots.png,/mods/ITEMS/minetest-3d_armor/mcl_armor/textures,mcl_armor_inv_boots_iron.png,,,,,,, +/assets/minecraft/textures/items,leather_boots.png,/mods/ITEMS/minetest-3d_armor/mcl_armor/textures,mcl_armor_inv_boots_leather.png,,,,,,, +/assets/minecraft/textures/items,chainmail_chestplate.png,/mods/ITEMS/minetest-3d_armor/mcl_armor/textures,mcl_armor_inv_chestplate_chain.png,,,,,,, +/assets/minecraft/textures/items,diamond_chestplate.png,/mods/ITEMS/minetest-3d_armor/mcl_armor/textures,mcl_armor_inv_chestplate_diamond.png,,,,,,, +/assets/minecraft/textures/items,gold_chestplate.png,/mods/ITEMS/minetest-3d_armor/mcl_armor/textures,mcl_armor_inv_chestplate_gold.png,,,,,,, +/assets/minecraft/textures/items,iron_chestplate.png,/mods/ITEMS/minetest-3d_armor/mcl_armor/textures,mcl_armor_inv_chestplate_iron.png,,,,,,, +/assets/minecraft/textures/items,leather_chestplate.png,/mods/ITEMS/minetest-3d_armor/mcl_armor/textures,mcl_armor_inv_chestplate_leather.png,,,,,,, +/assets/minecraft/textures/items,chainmail_helmet.png,/mods/ITEMS/minetest-3d_armor/mcl_armor/textures,mcl_armor_inv_helmet_chain.png,,,,,,, +/assets/minecraft/textures/items,diamond_helmet.png,/mods/ITEMS/minetest-3d_armor/mcl_armor/textures,mcl_armor_inv_helmet_diamond.png,,,,,,, +/assets/minecraft/textures/items,gold_helmet.png,/mods/ITEMS/minetest-3d_armor/mcl_armor/textures,mcl_armor_inv_helmet_gold.png,,,,,,, +/assets/minecraft/textures/items,iron_helmet.png,/mods/ITEMS/minetest-3d_armor/mcl_armor/textures,mcl_armor_inv_helmet_iron.png,,,,,,, +/assets/minecraft/textures/items,leather_helmet.png,/mods/ITEMS/minetest-3d_armor/mcl_armor/textures,mcl_armor_inv_helmet_leather.png,,,,,,, +/assets/minecraft/textures/items,chainmail_leggings.png,/mods/ITEMS/minetest-3d_armor/mcl_armor/textures,mcl_armor_inv_leggings_chain.png,,,,,,, +/assets/minecraft/textures/items,diamond_leggings.png,/mods/ITEMS/minetest-3d_armor/mcl_armor/textures,mcl_armor_inv_leggings_diamond.png,,,,,,, +/assets/minecraft/textures/items,gold_leggings.png,/mods/ITEMS/minetest-3d_armor/mcl_armor/textures,mcl_armor_inv_leggings_gold.png,,,,,,, +/assets/minecraft/textures/items,iron_leggings.png,/mods/ITEMS/minetest-3d_armor/mcl_armor/textures,mcl_armor_inv_leggings_iron.png,,,,,,, +/assets/minecraft/textures/items,leather_leggings.png,/mods/ITEMS/minetest-3d_armor/mcl_armor/textures,mcl_armor_inv_leggings_leather.png,,,,,,, /assets/minecraft/textures/items,wooden_armorstand.png,/mods/ITEMS/minetest-3d_armor/3d_armor_stand/textures,3d_armor_stand_item.png,,,,,,, /assets/minecraft/textures/blocks,dispenser_front_horizontal.png,/mods/ITEMS/REDSTONE/mcl_dispensers/textures,mcl_dispensers_dispenser_front_horizontal.png,,,,,,, /assets/minecraft/textures/blocks,dispenser_front_vertical.png,/mods/ITEMS/REDSTONE/mcl_dispensers/textures,mcl_dispensers_dispenser_front_vertical.png,,,,,,, From ab4e46f97b57a85f82b485d679edc1045be9fe69 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 18 Feb 2020 15:48:21 +0100 Subject: [PATCH 525/737] Move armor mods --- .../3d_armor_stand/LICENSE.txt | 3 +- .../3d_armor_stand/README.txt | 0 .../3d_armor_stand/depends.txt | 0 .../3d_armor_stand/init.lua | 0 .../locale/3d_armor_stand.de.tr | 0 .../locale/3d_armor_stand.es.tr | 0 .../3d_armor_stand/locale/template.txt | 0 .../3d_armor_stand/models/3d_armor_entity.obj | 0 .../3d_armor_stand/models/3d_armor_stand.obj | 0 .../textures/3d_armor_stand_item.png | Bin .../mcl_armor/README.txt | 0 .../mcl_armor/alias.lua | 0 .../mcl_armor/armor.lua | 0 .../mcl_armor/depends.txt | 0 .../mcl_armor/description.txt | 0 .../mcl_armor/init.lua | 0 .../mcl_armor/locale/mcl_armor.de.tr | 0 .../mcl_armor/locale/mcl_armor.es.tr | 0 .../mcl_armor/locale/template.txt | 0 .../mcl_armor/models/mcl_armor_character.b3d | Bin .../models/mcl_armor_character.blend | Bin .../sounds/mcl_armor_equip_chainmail.ogg | Bin .../sounds/mcl_armor_equip_diamond.ogg | Bin .../mcl_armor/sounds/mcl_armor_equip_iron.ogg | Bin .../sounds/mcl_armor_equip_leather.ogg | Bin .../sounds/mcl_armor_unequip_chainmail.ogg | Bin .../sounds/mcl_armor_unequip_diamond.ogg | Bin .../sounds/mcl_armor_unequip_iron.ogg | Bin .../sounds/mcl_armor_unequip_leather.ogg | Bin .../textures/mcl_armor_boots_chain.png | Bin .../mcl_armor_boots_chain_preview.png | Bin .../textures/mcl_armor_boots_diamond.png | Bin .../mcl_armor_boots_diamond_preview.png | Bin .../textures/mcl_armor_boots_gold.png | Bin .../textures/mcl_armor_boots_gold_preview.png | Bin .../textures/mcl_armor_boots_iron.png | Bin .../textures/mcl_armor_boots_iron_preview.png | Bin .../textures/mcl_armor_boots_leather.png | Bin .../mcl_armor_boots_leather_preview.png | Bin .../textures/mcl_armor_chestplate_chain.png | Bin .../mcl_armor_chestplate_chain_preview.png | Bin .../textures/mcl_armor_chestplate_diamond.png | Bin .../mcl_armor_chestplate_diamond_preview.png | Bin .../textures/mcl_armor_chestplate_gold.png | Bin .../mcl_armor_chestplate_gold_preview.png | Bin .../textures/mcl_armor_chestplate_iron.png | Bin .../mcl_armor_chestplate_iron_preview.png | Bin .../textures/mcl_armor_chestplate_leather.png | Bin .../mcl_armor_chestplate_leather_preview.png | Bin .../textures/mcl_armor_helmet_chain.png | Bin .../mcl_armor_helmet_chain_preview.png | Bin .../textures/mcl_armor_helmet_diamond.png | Bin .../mcl_armor_helmet_diamond_preview.png | Bin .../textures/mcl_armor_helmet_gold.png | Bin .../mcl_armor_helmet_gold_preview.png | Bin .../textures/mcl_armor_helmet_iron.png | Bin .../mcl_armor_helmet_iron_preview.png | Bin .../textures/mcl_armor_helmet_leather.png | Bin .../mcl_armor_helmet_leather_preview.png | Bin .../textures/mcl_armor_inv_boots_chain.png | Bin .../textures/mcl_armor_inv_boots_diamond.png | Bin .../textures/mcl_armor_inv_boots_gold.png | Bin .../textures/mcl_armor_inv_boots_iron.png | Bin .../textures/mcl_armor_inv_boots_leather.png | Bin .../mcl_armor_inv_chestplate_chain.png | Bin .../mcl_armor_inv_chestplate_diamond.png | Bin .../mcl_armor_inv_chestplate_gold.png | Bin .../mcl_armor_inv_chestplate_iron.png | Bin .../mcl_armor_inv_chestplate_leather.png | Bin .../textures/mcl_armor_inv_helmet_chain.png | Bin .../textures/mcl_armor_inv_helmet_diamond.png | Bin .../textures/mcl_armor_inv_helmet_gold.png | Bin .../textures/mcl_armor_inv_helmet_iron.png | Bin .../textures/mcl_armor_inv_helmet_leather.png | Bin .../textures/mcl_armor_inv_leggings_chain.png | Bin .../mcl_armor_inv_leggings_diamond.png | Bin .../textures/mcl_armor_inv_leggings_gold.png | Bin .../textures/mcl_armor_inv_leggings_iron.png | Bin .../mcl_armor_inv_leggings_leather.png | Bin .../textures/mcl_armor_leggings_chain.png | Bin .../mcl_armor_leggings_chain_preview.png | Bin .../textures/mcl_armor_leggings_diamond.png | Bin .../mcl_armor_leggings_diamond_preview.png | Bin .../textures/mcl_armor_leggings_gold.png | Bin .../mcl_armor_leggings_gold_preview.png | Bin .../textures/mcl_armor_leggings_iron.png | Bin .../mcl_armor_leggings_iron_preview.png | Bin .../textures/mcl_armor_leggings_leather.png | Bin .../mcl_armor_leggings_leather_preview.png | Bin mods/ITEMS/minetest-3d_armor/LICENSE.md | 7 --- mods/ITEMS/minetest-3d_armor/README.md | 19 -------- mods/ITEMS/minetest-3d_armor/modpack.conf | 2 - .../wieldview/LICENSE.txt | 0 .../wieldview/README.txt | 0 .../wieldview/depends.txt | 0 .../wieldview/description.txt | 0 .../wieldview/init.lua | 0 .../wieldview/transform.lua | 0 tools/Conversion_Table.csv | 42 +++++++++--------- 99 files changed, 23 insertions(+), 50 deletions(-) rename mods/ITEMS/{minetest-3d_armor => }/3d_armor_stand/LICENSE.txt (57%) rename mods/ITEMS/{minetest-3d_armor => }/3d_armor_stand/README.txt (100%) rename mods/ITEMS/{minetest-3d_armor => }/3d_armor_stand/depends.txt (100%) rename mods/ITEMS/{minetest-3d_armor => }/3d_armor_stand/init.lua (100%) rename mods/ITEMS/{minetest-3d_armor => }/3d_armor_stand/locale/3d_armor_stand.de.tr (100%) rename mods/ITEMS/{minetest-3d_armor => }/3d_armor_stand/locale/3d_armor_stand.es.tr (100%) rename mods/ITEMS/{minetest-3d_armor => }/3d_armor_stand/locale/template.txt (100%) rename mods/ITEMS/{minetest-3d_armor => }/3d_armor_stand/models/3d_armor_entity.obj (100%) rename mods/ITEMS/{minetest-3d_armor => }/3d_armor_stand/models/3d_armor_stand.obj (100%) rename mods/ITEMS/{minetest-3d_armor => }/3d_armor_stand/textures/3d_armor_stand_item.png (100%) rename mods/ITEMS/{minetest-3d_armor => }/mcl_armor/README.txt (100%) rename mods/ITEMS/{minetest-3d_armor => }/mcl_armor/alias.lua (100%) rename mods/ITEMS/{minetest-3d_armor => }/mcl_armor/armor.lua (100%) rename mods/ITEMS/{minetest-3d_armor => }/mcl_armor/depends.txt (100%) rename mods/ITEMS/{minetest-3d_armor => }/mcl_armor/description.txt (100%) rename mods/ITEMS/{minetest-3d_armor => }/mcl_armor/init.lua (100%) rename mods/ITEMS/{minetest-3d_armor => }/mcl_armor/locale/mcl_armor.de.tr (100%) rename mods/ITEMS/{minetest-3d_armor => }/mcl_armor/locale/mcl_armor.es.tr (100%) rename mods/ITEMS/{minetest-3d_armor => }/mcl_armor/locale/template.txt (100%) rename mods/ITEMS/{minetest-3d_armor => }/mcl_armor/models/mcl_armor_character.b3d (100%) rename mods/ITEMS/{minetest-3d_armor => }/mcl_armor/models/mcl_armor_character.blend (100%) rename mods/ITEMS/{minetest-3d_armor => }/mcl_armor/sounds/mcl_armor_equip_chainmail.ogg (100%) rename mods/ITEMS/{minetest-3d_armor => }/mcl_armor/sounds/mcl_armor_equip_diamond.ogg (100%) rename mods/ITEMS/{minetest-3d_armor => }/mcl_armor/sounds/mcl_armor_equip_iron.ogg (100%) rename mods/ITEMS/{minetest-3d_armor => }/mcl_armor/sounds/mcl_armor_equip_leather.ogg (100%) rename mods/ITEMS/{minetest-3d_armor => }/mcl_armor/sounds/mcl_armor_unequip_chainmail.ogg (100%) rename mods/ITEMS/{minetest-3d_armor => }/mcl_armor/sounds/mcl_armor_unequip_diamond.ogg (100%) rename mods/ITEMS/{minetest-3d_armor => }/mcl_armor/sounds/mcl_armor_unequip_iron.ogg (100%) rename mods/ITEMS/{minetest-3d_armor => }/mcl_armor/sounds/mcl_armor_unequip_leather.ogg (100%) rename mods/ITEMS/{minetest-3d_armor => }/mcl_armor/textures/mcl_armor_boots_chain.png (100%) rename mods/ITEMS/{minetest-3d_armor => }/mcl_armor/textures/mcl_armor_boots_chain_preview.png (100%) rename mods/ITEMS/{minetest-3d_armor => }/mcl_armor/textures/mcl_armor_boots_diamond.png (100%) rename mods/ITEMS/{minetest-3d_armor => }/mcl_armor/textures/mcl_armor_boots_diamond_preview.png (100%) rename mods/ITEMS/{minetest-3d_armor => }/mcl_armor/textures/mcl_armor_boots_gold.png (100%) rename mods/ITEMS/{minetest-3d_armor => }/mcl_armor/textures/mcl_armor_boots_gold_preview.png (100%) rename mods/ITEMS/{minetest-3d_armor => }/mcl_armor/textures/mcl_armor_boots_iron.png (100%) rename mods/ITEMS/{minetest-3d_armor => }/mcl_armor/textures/mcl_armor_boots_iron_preview.png (100%) rename mods/ITEMS/{minetest-3d_armor => }/mcl_armor/textures/mcl_armor_boots_leather.png (100%) rename mods/ITEMS/{minetest-3d_armor => }/mcl_armor/textures/mcl_armor_boots_leather_preview.png (100%) rename mods/ITEMS/{minetest-3d_armor => }/mcl_armor/textures/mcl_armor_chestplate_chain.png (100%) rename mods/ITEMS/{minetest-3d_armor => }/mcl_armor/textures/mcl_armor_chestplate_chain_preview.png (100%) rename mods/ITEMS/{minetest-3d_armor => }/mcl_armor/textures/mcl_armor_chestplate_diamond.png (100%) rename mods/ITEMS/{minetest-3d_armor => }/mcl_armor/textures/mcl_armor_chestplate_diamond_preview.png (100%) rename mods/ITEMS/{minetest-3d_armor => }/mcl_armor/textures/mcl_armor_chestplate_gold.png (100%) rename mods/ITEMS/{minetest-3d_armor => }/mcl_armor/textures/mcl_armor_chestplate_gold_preview.png (100%) rename mods/ITEMS/{minetest-3d_armor => }/mcl_armor/textures/mcl_armor_chestplate_iron.png (100%) rename mods/ITEMS/{minetest-3d_armor => }/mcl_armor/textures/mcl_armor_chestplate_iron_preview.png (100%) rename mods/ITEMS/{minetest-3d_armor => }/mcl_armor/textures/mcl_armor_chestplate_leather.png (100%) rename mods/ITEMS/{minetest-3d_armor => }/mcl_armor/textures/mcl_armor_chestplate_leather_preview.png (100%) rename mods/ITEMS/{minetest-3d_armor => }/mcl_armor/textures/mcl_armor_helmet_chain.png (100%) rename mods/ITEMS/{minetest-3d_armor => }/mcl_armor/textures/mcl_armor_helmet_chain_preview.png (100%) rename mods/ITEMS/{minetest-3d_armor => }/mcl_armor/textures/mcl_armor_helmet_diamond.png (100%) rename mods/ITEMS/{minetest-3d_armor => }/mcl_armor/textures/mcl_armor_helmet_diamond_preview.png (100%) rename mods/ITEMS/{minetest-3d_armor => }/mcl_armor/textures/mcl_armor_helmet_gold.png (100%) rename mods/ITEMS/{minetest-3d_armor => }/mcl_armor/textures/mcl_armor_helmet_gold_preview.png (100%) rename mods/ITEMS/{minetest-3d_armor => }/mcl_armor/textures/mcl_armor_helmet_iron.png (100%) rename mods/ITEMS/{minetest-3d_armor => }/mcl_armor/textures/mcl_armor_helmet_iron_preview.png (100%) rename mods/ITEMS/{minetest-3d_armor => }/mcl_armor/textures/mcl_armor_helmet_leather.png (100%) rename mods/ITEMS/{minetest-3d_armor => }/mcl_armor/textures/mcl_armor_helmet_leather_preview.png (100%) rename mods/ITEMS/{minetest-3d_armor => }/mcl_armor/textures/mcl_armor_inv_boots_chain.png (100%) rename mods/ITEMS/{minetest-3d_armor => }/mcl_armor/textures/mcl_armor_inv_boots_diamond.png (100%) rename mods/ITEMS/{minetest-3d_armor => }/mcl_armor/textures/mcl_armor_inv_boots_gold.png (100%) rename mods/ITEMS/{minetest-3d_armor => }/mcl_armor/textures/mcl_armor_inv_boots_iron.png (100%) rename mods/ITEMS/{minetest-3d_armor => }/mcl_armor/textures/mcl_armor_inv_boots_leather.png (100%) rename mods/ITEMS/{minetest-3d_armor => }/mcl_armor/textures/mcl_armor_inv_chestplate_chain.png (100%) rename mods/ITEMS/{minetest-3d_armor => }/mcl_armor/textures/mcl_armor_inv_chestplate_diamond.png (100%) rename mods/ITEMS/{minetest-3d_armor => }/mcl_armor/textures/mcl_armor_inv_chestplate_gold.png (100%) rename mods/ITEMS/{minetest-3d_armor => }/mcl_armor/textures/mcl_armor_inv_chestplate_iron.png (100%) rename mods/ITEMS/{minetest-3d_armor => }/mcl_armor/textures/mcl_armor_inv_chestplate_leather.png (100%) rename mods/ITEMS/{minetest-3d_armor => }/mcl_armor/textures/mcl_armor_inv_helmet_chain.png (100%) rename mods/ITEMS/{minetest-3d_armor => }/mcl_armor/textures/mcl_armor_inv_helmet_diamond.png (100%) rename mods/ITEMS/{minetest-3d_armor => }/mcl_armor/textures/mcl_armor_inv_helmet_gold.png (100%) rename mods/ITEMS/{minetest-3d_armor => }/mcl_armor/textures/mcl_armor_inv_helmet_iron.png (100%) rename mods/ITEMS/{minetest-3d_armor => }/mcl_armor/textures/mcl_armor_inv_helmet_leather.png (100%) rename mods/ITEMS/{minetest-3d_armor => }/mcl_armor/textures/mcl_armor_inv_leggings_chain.png (100%) rename mods/ITEMS/{minetest-3d_armor => }/mcl_armor/textures/mcl_armor_inv_leggings_diamond.png (100%) rename mods/ITEMS/{minetest-3d_armor => }/mcl_armor/textures/mcl_armor_inv_leggings_gold.png (100%) rename mods/ITEMS/{minetest-3d_armor => }/mcl_armor/textures/mcl_armor_inv_leggings_iron.png (100%) rename mods/ITEMS/{minetest-3d_armor => }/mcl_armor/textures/mcl_armor_inv_leggings_leather.png (100%) rename mods/ITEMS/{minetest-3d_armor => }/mcl_armor/textures/mcl_armor_leggings_chain.png (100%) rename mods/ITEMS/{minetest-3d_armor => }/mcl_armor/textures/mcl_armor_leggings_chain_preview.png (100%) rename mods/ITEMS/{minetest-3d_armor => }/mcl_armor/textures/mcl_armor_leggings_diamond.png (100%) rename mods/ITEMS/{minetest-3d_armor => }/mcl_armor/textures/mcl_armor_leggings_diamond_preview.png (100%) rename mods/ITEMS/{minetest-3d_armor => }/mcl_armor/textures/mcl_armor_leggings_gold.png (100%) rename mods/ITEMS/{minetest-3d_armor => }/mcl_armor/textures/mcl_armor_leggings_gold_preview.png (100%) rename mods/ITEMS/{minetest-3d_armor => }/mcl_armor/textures/mcl_armor_leggings_iron.png (100%) rename mods/ITEMS/{minetest-3d_armor => }/mcl_armor/textures/mcl_armor_leggings_iron_preview.png (100%) rename mods/ITEMS/{minetest-3d_armor => }/mcl_armor/textures/mcl_armor_leggings_leather.png (100%) rename mods/ITEMS/{minetest-3d_armor => }/mcl_armor/textures/mcl_armor_leggings_leather_preview.png (100%) delete mode 100644 mods/ITEMS/minetest-3d_armor/LICENSE.md delete mode 100644 mods/ITEMS/minetest-3d_armor/README.md delete mode 100644 mods/ITEMS/minetest-3d_armor/modpack.conf rename mods/{ITEMS/minetest-3d_armor => PLAYER}/wieldview/LICENSE.txt (100%) rename mods/{ITEMS/minetest-3d_armor => PLAYER}/wieldview/README.txt (100%) rename mods/{ITEMS/minetest-3d_armor => PLAYER}/wieldview/depends.txt (100%) rename mods/{ITEMS/minetest-3d_armor => PLAYER}/wieldview/description.txt (100%) rename mods/{ITEMS/minetest-3d_armor => PLAYER}/wieldview/init.lua (100%) rename mods/{ITEMS/minetest-3d_armor => PLAYER}/wieldview/transform.lua (100%) diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor_stand/LICENSE.txt b/mods/ITEMS/3d_armor_stand/LICENSE.txt similarity index 57% rename from mods/ITEMS/minetest-3d_armor/3d_armor_stand/LICENSE.txt rename to mods/ITEMS/3d_armor_stand/LICENSE.txt index 5c8246a9..d1947b56 100644 --- a/mods/ITEMS/minetest-3d_armor/3d_armor_stand/LICENSE.txt +++ b/mods/ITEMS/3d_armor_stand/LICENSE.txt @@ -3,5 +3,6 @@ License Source Code: LGPL v2.1 -Lecense Media: CC BY-SA 3.0 +License Media: CC BY-SA 3.0 +Source Code: Copyright (C) 2013 Stuart Jones - LGPL diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor_stand/README.txt b/mods/ITEMS/3d_armor_stand/README.txt similarity index 100% rename from mods/ITEMS/minetest-3d_armor/3d_armor_stand/README.txt rename to mods/ITEMS/3d_armor_stand/README.txt diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor_stand/depends.txt b/mods/ITEMS/3d_armor_stand/depends.txt similarity index 100% rename from mods/ITEMS/minetest-3d_armor/3d_armor_stand/depends.txt rename to mods/ITEMS/3d_armor_stand/depends.txt diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor_stand/init.lua b/mods/ITEMS/3d_armor_stand/init.lua similarity index 100% rename from mods/ITEMS/minetest-3d_armor/3d_armor_stand/init.lua rename to mods/ITEMS/3d_armor_stand/init.lua diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor_stand/locale/3d_armor_stand.de.tr b/mods/ITEMS/3d_armor_stand/locale/3d_armor_stand.de.tr similarity index 100% rename from mods/ITEMS/minetest-3d_armor/3d_armor_stand/locale/3d_armor_stand.de.tr rename to mods/ITEMS/3d_armor_stand/locale/3d_armor_stand.de.tr diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor_stand/locale/3d_armor_stand.es.tr b/mods/ITEMS/3d_armor_stand/locale/3d_armor_stand.es.tr similarity index 100% rename from mods/ITEMS/minetest-3d_armor/3d_armor_stand/locale/3d_armor_stand.es.tr rename to mods/ITEMS/3d_armor_stand/locale/3d_armor_stand.es.tr diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor_stand/locale/template.txt b/mods/ITEMS/3d_armor_stand/locale/template.txt similarity index 100% rename from mods/ITEMS/minetest-3d_armor/3d_armor_stand/locale/template.txt rename to mods/ITEMS/3d_armor_stand/locale/template.txt diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor_stand/models/3d_armor_entity.obj b/mods/ITEMS/3d_armor_stand/models/3d_armor_entity.obj similarity index 100% rename from mods/ITEMS/minetest-3d_armor/3d_armor_stand/models/3d_armor_entity.obj rename to mods/ITEMS/3d_armor_stand/models/3d_armor_entity.obj diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor_stand/models/3d_armor_stand.obj b/mods/ITEMS/3d_armor_stand/models/3d_armor_stand.obj similarity index 100% rename from mods/ITEMS/minetest-3d_armor/3d_armor_stand/models/3d_armor_stand.obj rename to mods/ITEMS/3d_armor_stand/models/3d_armor_stand.obj diff --git a/mods/ITEMS/minetest-3d_armor/3d_armor_stand/textures/3d_armor_stand_item.png b/mods/ITEMS/3d_armor_stand/textures/3d_armor_stand_item.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/3d_armor_stand/textures/3d_armor_stand_item.png rename to mods/ITEMS/3d_armor_stand/textures/3d_armor_stand_item.png diff --git a/mods/ITEMS/minetest-3d_armor/mcl_armor/README.txt b/mods/ITEMS/mcl_armor/README.txt similarity index 100% rename from mods/ITEMS/minetest-3d_armor/mcl_armor/README.txt rename to mods/ITEMS/mcl_armor/README.txt diff --git a/mods/ITEMS/minetest-3d_armor/mcl_armor/alias.lua b/mods/ITEMS/mcl_armor/alias.lua similarity index 100% rename from mods/ITEMS/minetest-3d_armor/mcl_armor/alias.lua rename to mods/ITEMS/mcl_armor/alias.lua diff --git a/mods/ITEMS/minetest-3d_armor/mcl_armor/armor.lua b/mods/ITEMS/mcl_armor/armor.lua similarity index 100% rename from mods/ITEMS/minetest-3d_armor/mcl_armor/armor.lua rename to mods/ITEMS/mcl_armor/armor.lua diff --git a/mods/ITEMS/minetest-3d_armor/mcl_armor/depends.txt b/mods/ITEMS/mcl_armor/depends.txt similarity index 100% rename from mods/ITEMS/minetest-3d_armor/mcl_armor/depends.txt rename to mods/ITEMS/mcl_armor/depends.txt diff --git a/mods/ITEMS/minetest-3d_armor/mcl_armor/description.txt b/mods/ITEMS/mcl_armor/description.txt similarity index 100% rename from mods/ITEMS/minetest-3d_armor/mcl_armor/description.txt rename to mods/ITEMS/mcl_armor/description.txt diff --git a/mods/ITEMS/minetest-3d_armor/mcl_armor/init.lua b/mods/ITEMS/mcl_armor/init.lua similarity index 100% rename from mods/ITEMS/minetest-3d_armor/mcl_armor/init.lua rename to mods/ITEMS/mcl_armor/init.lua diff --git a/mods/ITEMS/minetest-3d_armor/mcl_armor/locale/mcl_armor.de.tr b/mods/ITEMS/mcl_armor/locale/mcl_armor.de.tr similarity index 100% rename from mods/ITEMS/minetest-3d_armor/mcl_armor/locale/mcl_armor.de.tr rename to mods/ITEMS/mcl_armor/locale/mcl_armor.de.tr diff --git a/mods/ITEMS/minetest-3d_armor/mcl_armor/locale/mcl_armor.es.tr b/mods/ITEMS/mcl_armor/locale/mcl_armor.es.tr similarity index 100% rename from mods/ITEMS/minetest-3d_armor/mcl_armor/locale/mcl_armor.es.tr rename to mods/ITEMS/mcl_armor/locale/mcl_armor.es.tr diff --git a/mods/ITEMS/minetest-3d_armor/mcl_armor/locale/template.txt b/mods/ITEMS/mcl_armor/locale/template.txt similarity index 100% rename from mods/ITEMS/minetest-3d_armor/mcl_armor/locale/template.txt rename to mods/ITEMS/mcl_armor/locale/template.txt diff --git a/mods/ITEMS/minetest-3d_armor/mcl_armor/models/mcl_armor_character.b3d b/mods/ITEMS/mcl_armor/models/mcl_armor_character.b3d similarity index 100% rename from mods/ITEMS/minetest-3d_armor/mcl_armor/models/mcl_armor_character.b3d rename to mods/ITEMS/mcl_armor/models/mcl_armor_character.b3d diff --git a/mods/ITEMS/minetest-3d_armor/mcl_armor/models/mcl_armor_character.blend b/mods/ITEMS/mcl_armor/models/mcl_armor_character.blend similarity index 100% rename from mods/ITEMS/minetest-3d_armor/mcl_armor/models/mcl_armor_character.blend rename to mods/ITEMS/mcl_armor/models/mcl_armor_character.blend diff --git a/mods/ITEMS/minetest-3d_armor/mcl_armor/sounds/mcl_armor_equip_chainmail.ogg b/mods/ITEMS/mcl_armor/sounds/mcl_armor_equip_chainmail.ogg similarity index 100% rename from mods/ITEMS/minetest-3d_armor/mcl_armor/sounds/mcl_armor_equip_chainmail.ogg rename to mods/ITEMS/mcl_armor/sounds/mcl_armor_equip_chainmail.ogg diff --git a/mods/ITEMS/minetest-3d_armor/mcl_armor/sounds/mcl_armor_equip_diamond.ogg b/mods/ITEMS/mcl_armor/sounds/mcl_armor_equip_diamond.ogg similarity index 100% rename from mods/ITEMS/minetest-3d_armor/mcl_armor/sounds/mcl_armor_equip_diamond.ogg rename to mods/ITEMS/mcl_armor/sounds/mcl_armor_equip_diamond.ogg diff --git a/mods/ITEMS/minetest-3d_armor/mcl_armor/sounds/mcl_armor_equip_iron.ogg b/mods/ITEMS/mcl_armor/sounds/mcl_armor_equip_iron.ogg similarity index 100% rename from mods/ITEMS/minetest-3d_armor/mcl_armor/sounds/mcl_armor_equip_iron.ogg rename to mods/ITEMS/mcl_armor/sounds/mcl_armor_equip_iron.ogg diff --git a/mods/ITEMS/minetest-3d_armor/mcl_armor/sounds/mcl_armor_equip_leather.ogg b/mods/ITEMS/mcl_armor/sounds/mcl_armor_equip_leather.ogg similarity index 100% rename from mods/ITEMS/minetest-3d_armor/mcl_armor/sounds/mcl_armor_equip_leather.ogg rename to mods/ITEMS/mcl_armor/sounds/mcl_armor_equip_leather.ogg diff --git a/mods/ITEMS/minetest-3d_armor/mcl_armor/sounds/mcl_armor_unequip_chainmail.ogg b/mods/ITEMS/mcl_armor/sounds/mcl_armor_unequip_chainmail.ogg similarity index 100% rename from mods/ITEMS/minetest-3d_armor/mcl_armor/sounds/mcl_armor_unequip_chainmail.ogg rename to mods/ITEMS/mcl_armor/sounds/mcl_armor_unequip_chainmail.ogg diff --git a/mods/ITEMS/minetest-3d_armor/mcl_armor/sounds/mcl_armor_unequip_diamond.ogg b/mods/ITEMS/mcl_armor/sounds/mcl_armor_unequip_diamond.ogg similarity index 100% rename from mods/ITEMS/minetest-3d_armor/mcl_armor/sounds/mcl_armor_unequip_diamond.ogg rename to mods/ITEMS/mcl_armor/sounds/mcl_armor_unequip_diamond.ogg diff --git a/mods/ITEMS/minetest-3d_armor/mcl_armor/sounds/mcl_armor_unequip_iron.ogg b/mods/ITEMS/mcl_armor/sounds/mcl_armor_unequip_iron.ogg similarity index 100% rename from mods/ITEMS/minetest-3d_armor/mcl_armor/sounds/mcl_armor_unequip_iron.ogg rename to mods/ITEMS/mcl_armor/sounds/mcl_armor_unequip_iron.ogg diff --git a/mods/ITEMS/minetest-3d_armor/mcl_armor/sounds/mcl_armor_unequip_leather.ogg b/mods/ITEMS/mcl_armor/sounds/mcl_armor_unequip_leather.ogg similarity index 100% rename from mods/ITEMS/minetest-3d_armor/mcl_armor/sounds/mcl_armor_unequip_leather.ogg rename to mods/ITEMS/mcl_armor/sounds/mcl_armor_unequip_leather.ogg diff --git a/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_boots_chain.png b/mods/ITEMS/mcl_armor/textures/mcl_armor_boots_chain.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_boots_chain.png rename to mods/ITEMS/mcl_armor/textures/mcl_armor_boots_chain.png diff --git a/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_boots_chain_preview.png b/mods/ITEMS/mcl_armor/textures/mcl_armor_boots_chain_preview.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_boots_chain_preview.png rename to mods/ITEMS/mcl_armor/textures/mcl_armor_boots_chain_preview.png diff --git a/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_boots_diamond.png b/mods/ITEMS/mcl_armor/textures/mcl_armor_boots_diamond.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_boots_diamond.png rename to mods/ITEMS/mcl_armor/textures/mcl_armor_boots_diamond.png diff --git a/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_boots_diamond_preview.png b/mods/ITEMS/mcl_armor/textures/mcl_armor_boots_diamond_preview.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_boots_diamond_preview.png rename to mods/ITEMS/mcl_armor/textures/mcl_armor_boots_diamond_preview.png diff --git a/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_boots_gold.png b/mods/ITEMS/mcl_armor/textures/mcl_armor_boots_gold.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_boots_gold.png rename to mods/ITEMS/mcl_armor/textures/mcl_armor_boots_gold.png diff --git a/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_boots_gold_preview.png b/mods/ITEMS/mcl_armor/textures/mcl_armor_boots_gold_preview.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_boots_gold_preview.png rename to mods/ITEMS/mcl_armor/textures/mcl_armor_boots_gold_preview.png diff --git a/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_boots_iron.png b/mods/ITEMS/mcl_armor/textures/mcl_armor_boots_iron.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_boots_iron.png rename to mods/ITEMS/mcl_armor/textures/mcl_armor_boots_iron.png diff --git a/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_boots_iron_preview.png b/mods/ITEMS/mcl_armor/textures/mcl_armor_boots_iron_preview.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_boots_iron_preview.png rename to mods/ITEMS/mcl_armor/textures/mcl_armor_boots_iron_preview.png diff --git a/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_boots_leather.png b/mods/ITEMS/mcl_armor/textures/mcl_armor_boots_leather.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_boots_leather.png rename to mods/ITEMS/mcl_armor/textures/mcl_armor_boots_leather.png diff --git a/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_boots_leather_preview.png b/mods/ITEMS/mcl_armor/textures/mcl_armor_boots_leather_preview.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_boots_leather_preview.png rename to mods/ITEMS/mcl_armor/textures/mcl_armor_boots_leather_preview.png diff --git a/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_chestplate_chain.png b/mods/ITEMS/mcl_armor/textures/mcl_armor_chestplate_chain.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_chestplate_chain.png rename to mods/ITEMS/mcl_armor/textures/mcl_armor_chestplate_chain.png diff --git a/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_chestplate_chain_preview.png b/mods/ITEMS/mcl_armor/textures/mcl_armor_chestplate_chain_preview.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_chestplate_chain_preview.png rename to mods/ITEMS/mcl_armor/textures/mcl_armor_chestplate_chain_preview.png diff --git a/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_chestplate_diamond.png b/mods/ITEMS/mcl_armor/textures/mcl_armor_chestplate_diamond.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_chestplate_diamond.png rename to mods/ITEMS/mcl_armor/textures/mcl_armor_chestplate_diamond.png diff --git a/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_chestplate_diamond_preview.png b/mods/ITEMS/mcl_armor/textures/mcl_armor_chestplate_diamond_preview.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_chestplate_diamond_preview.png rename to mods/ITEMS/mcl_armor/textures/mcl_armor_chestplate_diamond_preview.png diff --git a/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_chestplate_gold.png b/mods/ITEMS/mcl_armor/textures/mcl_armor_chestplate_gold.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_chestplate_gold.png rename to mods/ITEMS/mcl_armor/textures/mcl_armor_chestplate_gold.png diff --git a/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_chestplate_gold_preview.png b/mods/ITEMS/mcl_armor/textures/mcl_armor_chestplate_gold_preview.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_chestplate_gold_preview.png rename to mods/ITEMS/mcl_armor/textures/mcl_armor_chestplate_gold_preview.png diff --git a/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_chestplate_iron.png b/mods/ITEMS/mcl_armor/textures/mcl_armor_chestplate_iron.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_chestplate_iron.png rename to mods/ITEMS/mcl_armor/textures/mcl_armor_chestplate_iron.png diff --git a/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_chestplate_iron_preview.png b/mods/ITEMS/mcl_armor/textures/mcl_armor_chestplate_iron_preview.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_chestplate_iron_preview.png rename to mods/ITEMS/mcl_armor/textures/mcl_armor_chestplate_iron_preview.png diff --git a/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_chestplate_leather.png b/mods/ITEMS/mcl_armor/textures/mcl_armor_chestplate_leather.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_chestplate_leather.png rename to mods/ITEMS/mcl_armor/textures/mcl_armor_chestplate_leather.png diff --git a/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_chestplate_leather_preview.png b/mods/ITEMS/mcl_armor/textures/mcl_armor_chestplate_leather_preview.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_chestplate_leather_preview.png rename to mods/ITEMS/mcl_armor/textures/mcl_armor_chestplate_leather_preview.png diff --git a/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_helmet_chain.png b/mods/ITEMS/mcl_armor/textures/mcl_armor_helmet_chain.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_helmet_chain.png rename to mods/ITEMS/mcl_armor/textures/mcl_armor_helmet_chain.png diff --git a/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_helmet_chain_preview.png b/mods/ITEMS/mcl_armor/textures/mcl_armor_helmet_chain_preview.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_helmet_chain_preview.png rename to mods/ITEMS/mcl_armor/textures/mcl_armor_helmet_chain_preview.png diff --git a/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_helmet_diamond.png b/mods/ITEMS/mcl_armor/textures/mcl_armor_helmet_diamond.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_helmet_diamond.png rename to mods/ITEMS/mcl_armor/textures/mcl_armor_helmet_diamond.png diff --git a/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_helmet_diamond_preview.png b/mods/ITEMS/mcl_armor/textures/mcl_armor_helmet_diamond_preview.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_helmet_diamond_preview.png rename to mods/ITEMS/mcl_armor/textures/mcl_armor_helmet_diamond_preview.png diff --git a/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_helmet_gold.png b/mods/ITEMS/mcl_armor/textures/mcl_armor_helmet_gold.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_helmet_gold.png rename to mods/ITEMS/mcl_armor/textures/mcl_armor_helmet_gold.png diff --git a/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_helmet_gold_preview.png b/mods/ITEMS/mcl_armor/textures/mcl_armor_helmet_gold_preview.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_helmet_gold_preview.png rename to mods/ITEMS/mcl_armor/textures/mcl_armor_helmet_gold_preview.png diff --git a/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_helmet_iron.png b/mods/ITEMS/mcl_armor/textures/mcl_armor_helmet_iron.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_helmet_iron.png rename to mods/ITEMS/mcl_armor/textures/mcl_armor_helmet_iron.png diff --git a/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_helmet_iron_preview.png b/mods/ITEMS/mcl_armor/textures/mcl_armor_helmet_iron_preview.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_helmet_iron_preview.png rename to mods/ITEMS/mcl_armor/textures/mcl_armor_helmet_iron_preview.png diff --git a/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_helmet_leather.png b/mods/ITEMS/mcl_armor/textures/mcl_armor_helmet_leather.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_helmet_leather.png rename to mods/ITEMS/mcl_armor/textures/mcl_armor_helmet_leather.png diff --git a/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_helmet_leather_preview.png b/mods/ITEMS/mcl_armor/textures/mcl_armor_helmet_leather_preview.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_helmet_leather_preview.png rename to mods/ITEMS/mcl_armor/textures/mcl_armor_helmet_leather_preview.png diff --git a/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_inv_boots_chain.png b/mods/ITEMS/mcl_armor/textures/mcl_armor_inv_boots_chain.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_inv_boots_chain.png rename to mods/ITEMS/mcl_armor/textures/mcl_armor_inv_boots_chain.png diff --git a/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_inv_boots_diamond.png b/mods/ITEMS/mcl_armor/textures/mcl_armor_inv_boots_diamond.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_inv_boots_diamond.png rename to mods/ITEMS/mcl_armor/textures/mcl_armor_inv_boots_diamond.png diff --git a/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_inv_boots_gold.png b/mods/ITEMS/mcl_armor/textures/mcl_armor_inv_boots_gold.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_inv_boots_gold.png rename to mods/ITEMS/mcl_armor/textures/mcl_armor_inv_boots_gold.png diff --git a/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_inv_boots_iron.png b/mods/ITEMS/mcl_armor/textures/mcl_armor_inv_boots_iron.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_inv_boots_iron.png rename to mods/ITEMS/mcl_armor/textures/mcl_armor_inv_boots_iron.png diff --git a/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_inv_boots_leather.png b/mods/ITEMS/mcl_armor/textures/mcl_armor_inv_boots_leather.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_inv_boots_leather.png rename to mods/ITEMS/mcl_armor/textures/mcl_armor_inv_boots_leather.png diff --git a/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_inv_chestplate_chain.png b/mods/ITEMS/mcl_armor/textures/mcl_armor_inv_chestplate_chain.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_inv_chestplate_chain.png rename to mods/ITEMS/mcl_armor/textures/mcl_armor_inv_chestplate_chain.png diff --git a/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_inv_chestplate_diamond.png b/mods/ITEMS/mcl_armor/textures/mcl_armor_inv_chestplate_diamond.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_inv_chestplate_diamond.png rename to mods/ITEMS/mcl_armor/textures/mcl_armor_inv_chestplate_diamond.png diff --git a/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_inv_chestplate_gold.png b/mods/ITEMS/mcl_armor/textures/mcl_armor_inv_chestplate_gold.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_inv_chestplate_gold.png rename to mods/ITEMS/mcl_armor/textures/mcl_armor_inv_chestplate_gold.png diff --git a/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_inv_chestplate_iron.png b/mods/ITEMS/mcl_armor/textures/mcl_armor_inv_chestplate_iron.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_inv_chestplate_iron.png rename to mods/ITEMS/mcl_armor/textures/mcl_armor_inv_chestplate_iron.png diff --git a/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_inv_chestplate_leather.png b/mods/ITEMS/mcl_armor/textures/mcl_armor_inv_chestplate_leather.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_inv_chestplate_leather.png rename to mods/ITEMS/mcl_armor/textures/mcl_armor_inv_chestplate_leather.png diff --git a/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_inv_helmet_chain.png b/mods/ITEMS/mcl_armor/textures/mcl_armor_inv_helmet_chain.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_inv_helmet_chain.png rename to mods/ITEMS/mcl_armor/textures/mcl_armor_inv_helmet_chain.png diff --git a/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_inv_helmet_diamond.png b/mods/ITEMS/mcl_armor/textures/mcl_armor_inv_helmet_diamond.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_inv_helmet_diamond.png rename to mods/ITEMS/mcl_armor/textures/mcl_armor_inv_helmet_diamond.png diff --git a/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_inv_helmet_gold.png b/mods/ITEMS/mcl_armor/textures/mcl_armor_inv_helmet_gold.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_inv_helmet_gold.png rename to mods/ITEMS/mcl_armor/textures/mcl_armor_inv_helmet_gold.png diff --git a/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_inv_helmet_iron.png b/mods/ITEMS/mcl_armor/textures/mcl_armor_inv_helmet_iron.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_inv_helmet_iron.png rename to mods/ITEMS/mcl_armor/textures/mcl_armor_inv_helmet_iron.png diff --git a/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_inv_helmet_leather.png b/mods/ITEMS/mcl_armor/textures/mcl_armor_inv_helmet_leather.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_inv_helmet_leather.png rename to mods/ITEMS/mcl_armor/textures/mcl_armor_inv_helmet_leather.png diff --git a/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_inv_leggings_chain.png b/mods/ITEMS/mcl_armor/textures/mcl_armor_inv_leggings_chain.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_inv_leggings_chain.png rename to mods/ITEMS/mcl_armor/textures/mcl_armor_inv_leggings_chain.png diff --git a/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_inv_leggings_diamond.png b/mods/ITEMS/mcl_armor/textures/mcl_armor_inv_leggings_diamond.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_inv_leggings_diamond.png rename to mods/ITEMS/mcl_armor/textures/mcl_armor_inv_leggings_diamond.png diff --git a/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_inv_leggings_gold.png b/mods/ITEMS/mcl_armor/textures/mcl_armor_inv_leggings_gold.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_inv_leggings_gold.png rename to mods/ITEMS/mcl_armor/textures/mcl_armor_inv_leggings_gold.png diff --git a/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_inv_leggings_iron.png b/mods/ITEMS/mcl_armor/textures/mcl_armor_inv_leggings_iron.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_inv_leggings_iron.png rename to mods/ITEMS/mcl_armor/textures/mcl_armor_inv_leggings_iron.png diff --git a/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_inv_leggings_leather.png b/mods/ITEMS/mcl_armor/textures/mcl_armor_inv_leggings_leather.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_inv_leggings_leather.png rename to mods/ITEMS/mcl_armor/textures/mcl_armor_inv_leggings_leather.png diff --git a/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_leggings_chain.png b/mods/ITEMS/mcl_armor/textures/mcl_armor_leggings_chain.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_leggings_chain.png rename to mods/ITEMS/mcl_armor/textures/mcl_armor_leggings_chain.png diff --git a/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_leggings_chain_preview.png b/mods/ITEMS/mcl_armor/textures/mcl_armor_leggings_chain_preview.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_leggings_chain_preview.png rename to mods/ITEMS/mcl_armor/textures/mcl_armor_leggings_chain_preview.png diff --git a/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_leggings_diamond.png b/mods/ITEMS/mcl_armor/textures/mcl_armor_leggings_diamond.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_leggings_diamond.png rename to mods/ITEMS/mcl_armor/textures/mcl_armor_leggings_diamond.png diff --git a/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_leggings_diamond_preview.png b/mods/ITEMS/mcl_armor/textures/mcl_armor_leggings_diamond_preview.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_leggings_diamond_preview.png rename to mods/ITEMS/mcl_armor/textures/mcl_armor_leggings_diamond_preview.png diff --git a/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_leggings_gold.png b/mods/ITEMS/mcl_armor/textures/mcl_armor_leggings_gold.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_leggings_gold.png rename to mods/ITEMS/mcl_armor/textures/mcl_armor_leggings_gold.png diff --git a/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_leggings_gold_preview.png b/mods/ITEMS/mcl_armor/textures/mcl_armor_leggings_gold_preview.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_leggings_gold_preview.png rename to mods/ITEMS/mcl_armor/textures/mcl_armor_leggings_gold_preview.png diff --git a/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_leggings_iron.png b/mods/ITEMS/mcl_armor/textures/mcl_armor_leggings_iron.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_leggings_iron.png rename to mods/ITEMS/mcl_armor/textures/mcl_armor_leggings_iron.png diff --git a/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_leggings_iron_preview.png b/mods/ITEMS/mcl_armor/textures/mcl_armor_leggings_iron_preview.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_leggings_iron_preview.png rename to mods/ITEMS/mcl_armor/textures/mcl_armor_leggings_iron_preview.png diff --git a/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_leggings_leather.png b/mods/ITEMS/mcl_armor/textures/mcl_armor_leggings_leather.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_leggings_leather.png rename to mods/ITEMS/mcl_armor/textures/mcl_armor_leggings_leather.png diff --git a/mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_leggings_leather_preview.png b/mods/ITEMS/mcl_armor/textures/mcl_armor_leggings_leather_preview.png similarity index 100% rename from mods/ITEMS/minetest-3d_armor/mcl_armor/textures/mcl_armor_leggings_leather_preview.png rename to mods/ITEMS/mcl_armor/textures/mcl_armor_leggings_leather_preview.png diff --git a/mods/ITEMS/minetest-3d_armor/LICENSE.md b/mods/ITEMS/minetest-3d_armor/LICENSE.md deleted file mode 100644 index 38e8a9fd..00000000 --- a/mods/ITEMS/minetest-3d_armor/LICENSE.md +++ /dev/null @@ -1,7 +0,0 @@ -3D Armor - Visible Player Armor -=============================== - -Source Code: Copyright (C) 2013 Stuart Jones - LGPL - -Special credit to Jordach and MirceaKitsune for providing the default 3d character model. - diff --git a/mods/ITEMS/minetest-3d_armor/README.md b/mods/ITEMS/minetest-3d_armor/README.md deleted file mode 100644 index 4e2ddcd1..00000000 --- a/mods/ITEMS/minetest-3d_armor/README.md +++ /dev/null @@ -1,19 +0,0 @@ -Modpack - Armor -================== - -[mod] Visible Wielded Items `[wieldview]` ------------------------------------------ - -Makes hand wielded items visible to other players. - -Note: Currently only supports 16x16px texture packs, sorry! - -[mod] Visible Player Armor `[mcl_armor]` ----------------------------------------- - -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. - -Armor takes damage when a player is hurt, however, many armor items offer a 'stackable' -percentage chance of restoring the lost health points. - diff --git a/mods/ITEMS/minetest-3d_armor/modpack.conf b/mods/ITEMS/minetest-3d_armor/modpack.conf deleted file mode 100644 index a3ba1c4a..00000000 --- a/mods/ITEMS/minetest-3d_armor/modpack.conf +++ /dev/null @@ -1,2 +0,0 @@ -name = minetest-3d_armor -description = Armor-related mods diff --git a/mods/ITEMS/minetest-3d_armor/wieldview/LICENSE.txt b/mods/PLAYER/wieldview/LICENSE.txt similarity index 100% rename from mods/ITEMS/minetest-3d_armor/wieldview/LICENSE.txt rename to mods/PLAYER/wieldview/LICENSE.txt diff --git a/mods/ITEMS/minetest-3d_armor/wieldview/README.txt b/mods/PLAYER/wieldview/README.txt similarity index 100% rename from mods/ITEMS/minetest-3d_armor/wieldview/README.txt rename to mods/PLAYER/wieldview/README.txt diff --git a/mods/ITEMS/minetest-3d_armor/wieldview/depends.txt b/mods/PLAYER/wieldview/depends.txt similarity index 100% rename from mods/ITEMS/minetest-3d_armor/wieldview/depends.txt rename to mods/PLAYER/wieldview/depends.txt diff --git a/mods/ITEMS/minetest-3d_armor/wieldview/description.txt b/mods/PLAYER/wieldview/description.txt similarity index 100% rename from mods/ITEMS/minetest-3d_armor/wieldview/description.txt rename to mods/PLAYER/wieldview/description.txt diff --git a/mods/ITEMS/minetest-3d_armor/wieldview/init.lua b/mods/PLAYER/wieldview/init.lua similarity index 100% rename from mods/ITEMS/minetest-3d_armor/wieldview/init.lua rename to mods/PLAYER/wieldview/init.lua diff --git a/mods/ITEMS/minetest-3d_armor/wieldview/transform.lua b/mods/PLAYER/wieldview/transform.lua similarity index 100% rename from mods/ITEMS/minetest-3d_armor/wieldview/transform.lua rename to mods/PLAYER/wieldview/transform.lua diff --git a/tools/Conversion_Table.csv b/tools/Conversion_Table.csv index db82bd1f..57a84c15 100644 --- a/tools/Conversion_Table.csv +++ b/tools/Conversion_Table.csv @@ -589,27 +589,27 @@ Source path,Source file,Target path,Target file,xs,ys,xl,yl,xt,yt,Blacklisted? /assets/minecraft/textures/blocks,wool_colored_purple.png,/mods/ITEMS/mcl_wool/textures,wool_violet.png,,,,,,, /assets/minecraft/textures/blocks,wool_colored_white.png,/mods/ITEMS/mcl_wool/textures,wool_white.png,,,,,,, /assets/minecraft/textures/blocks,wool_colored_yellow.png,/mods/ITEMS/mcl_wool/textures,wool_yellow.png,,,,,,, -/assets/minecraft/textures/items,chainmail_boots.png,/mods/ITEMS/minetest-3d_armor/mcl_armor/textures,mcl_armor_inv_boots_chain.png,,,,,,, -/assets/minecraft/textures/items,diamond_boots.png,/mods/ITEMS/minetest-3d_armor/mcl_armor/textures,mcl_armor_inv_boots_diamond.png,,,,,,, -/assets/minecraft/textures/items,gold_boots.png,/mods/ITEMS/minetest-3d_armor/mcl_armor/textures,mcl_armor_inv_boots_gold.png,,,,,,, -/assets/minecraft/textures/items,iron_boots.png,/mods/ITEMS/minetest-3d_armor/mcl_armor/textures,mcl_armor_inv_boots_iron.png,,,,,,, -/assets/minecraft/textures/items,leather_boots.png,/mods/ITEMS/minetest-3d_armor/mcl_armor/textures,mcl_armor_inv_boots_leather.png,,,,,,, -/assets/minecraft/textures/items,chainmail_chestplate.png,/mods/ITEMS/minetest-3d_armor/mcl_armor/textures,mcl_armor_inv_chestplate_chain.png,,,,,,, -/assets/minecraft/textures/items,diamond_chestplate.png,/mods/ITEMS/minetest-3d_armor/mcl_armor/textures,mcl_armor_inv_chestplate_diamond.png,,,,,,, -/assets/minecraft/textures/items,gold_chestplate.png,/mods/ITEMS/minetest-3d_armor/mcl_armor/textures,mcl_armor_inv_chestplate_gold.png,,,,,,, -/assets/minecraft/textures/items,iron_chestplate.png,/mods/ITEMS/minetest-3d_armor/mcl_armor/textures,mcl_armor_inv_chestplate_iron.png,,,,,,, -/assets/minecraft/textures/items,leather_chestplate.png,/mods/ITEMS/minetest-3d_armor/mcl_armor/textures,mcl_armor_inv_chestplate_leather.png,,,,,,, -/assets/minecraft/textures/items,chainmail_helmet.png,/mods/ITEMS/minetest-3d_armor/mcl_armor/textures,mcl_armor_inv_helmet_chain.png,,,,,,, -/assets/minecraft/textures/items,diamond_helmet.png,/mods/ITEMS/minetest-3d_armor/mcl_armor/textures,mcl_armor_inv_helmet_diamond.png,,,,,,, -/assets/minecraft/textures/items,gold_helmet.png,/mods/ITEMS/minetest-3d_armor/mcl_armor/textures,mcl_armor_inv_helmet_gold.png,,,,,,, -/assets/minecraft/textures/items,iron_helmet.png,/mods/ITEMS/minetest-3d_armor/mcl_armor/textures,mcl_armor_inv_helmet_iron.png,,,,,,, -/assets/minecraft/textures/items,leather_helmet.png,/mods/ITEMS/minetest-3d_armor/mcl_armor/textures,mcl_armor_inv_helmet_leather.png,,,,,,, -/assets/minecraft/textures/items,chainmail_leggings.png,/mods/ITEMS/minetest-3d_armor/mcl_armor/textures,mcl_armor_inv_leggings_chain.png,,,,,,, -/assets/minecraft/textures/items,diamond_leggings.png,/mods/ITEMS/minetest-3d_armor/mcl_armor/textures,mcl_armor_inv_leggings_diamond.png,,,,,,, -/assets/minecraft/textures/items,gold_leggings.png,/mods/ITEMS/minetest-3d_armor/mcl_armor/textures,mcl_armor_inv_leggings_gold.png,,,,,,, -/assets/minecraft/textures/items,iron_leggings.png,/mods/ITEMS/minetest-3d_armor/mcl_armor/textures,mcl_armor_inv_leggings_iron.png,,,,,,, -/assets/minecraft/textures/items,leather_leggings.png,/mods/ITEMS/minetest-3d_armor/mcl_armor/textures,mcl_armor_inv_leggings_leather.png,,,,,,, -/assets/minecraft/textures/items,wooden_armorstand.png,/mods/ITEMS/minetest-3d_armor/3d_armor_stand/textures,3d_armor_stand_item.png,,,,,,, +/assets/minecraft/textures/items,chainmail_boots.png,/mods/ITEMS/mcl_armor/textures,mcl_armor_inv_boots_chain.png,,,,,,, +/assets/minecraft/textures/items,diamond_boots.png,/mods/ITEMS/mcl_armor/textures,mcl_armor_inv_boots_diamond.png,,,,,,, +/assets/minecraft/textures/items,gold_boots.png,/mods/ITEMS/mcl_armor/textures,mcl_armor_inv_boots_gold.png,,,,,,, +/assets/minecraft/textures/items,iron_boots.png,/mods/ITEMS/mcl_armor/textures,mcl_armor_inv_boots_iron.png,,,,,,, +/assets/minecraft/textures/items,leather_boots.png,/mods/ITEMS/mcl_armor/textures,mcl_armor_inv_boots_leather.png,,,,,,, +/assets/minecraft/textures/items,chainmail_chestplate.png,/mods/ITEMS/mcl_armor/textures,mcl_armor_inv_chestplate_chain.png,,,,,,, +/assets/minecraft/textures/items,diamond_chestplate.png,/mods/ITEMS/mcl_armor/textures,mcl_armor_inv_chestplate_diamond.png,,,,,,, +/assets/minecraft/textures/items,gold_chestplate.png,/mods/ITEMS/mcl_armor/textures,mcl_armor_inv_chestplate_gold.png,,,,,,, +/assets/minecraft/textures/items,iron_chestplate.png,/mods/ITEMS/mcl_armor/textures,mcl_armor_inv_chestplate_iron.png,,,,,,, +/assets/minecraft/textures/items,leather_chestplate.png,/mods/ITEMS/mcl_armor/textures,mcl_armor_inv_chestplate_leather.png,,,,,,, +/assets/minecraft/textures/items,chainmail_helmet.png,/mods/ITEMS/mcl_armor/textures,mcl_armor_inv_helmet_chain.png,,,,,,, +/assets/minecraft/textures/items,diamond_helmet.png,/mods/ITEMS/mcl_armor/textures,mcl_armor_inv_helmet_diamond.png,,,,,,, +/assets/minecraft/textures/items,gold_helmet.png,/mods/ITEMS/mcl_armor/textures,mcl_armor_inv_helmet_gold.png,,,,,,, +/assets/minecraft/textures/items,iron_helmet.png,/mods/ITEMS/mcl_armor/textures,mcl_armor_inv_helmet_iron.png,,,,,,, +/assets/minecraft/textures/items,leather_helmet.png,/mods/ITEMS/mcl_armor/textures,mcl_armor_inv_helmet_leather.png,,,,,,, +/assets/minecraft/textures/items,chainmail_leggings.png,/mods/ITEMS/mcl_armor/textures,mcl_armor_inv_leggings_chain.png,,,,,,, +/assets/minecraft/textures/items,diamond_leggings.png,/mods/ITEMS/mcl_armor/textures,mcl_armor_inv_leggings_diamond.png,,,,,,, +/assets/minecraft/textures/items,gold_leggings.png,/mods/ITEMS/mcl_armor/textures,mcl_armor_inv_leggings_gold.png,,,,,,, +/assets/minecraft/textures/items,iron_leggings.png,/mods/ITEMS/mcl_armor/textures,mcl_armor_inv_leggings_iron.png,,,,,,, +/assets/minecraft/textures/items,leather_leggings.png,/mods/ITEMS/mcl_armor/textures,mcl_armor_inv_leggings_leather.png,,,,,,, +/assets/minecraft/textures/items,wooden_armorstand.png,/mods/ITEMS/3d_armor_stand/textures,3d_armor_stand_item.png,,,,,,, /assets/minecraft/textures/blocks,dispenser_front_horizontal.png,/mods/ITEMS/REDSTONE/mcl_dispensers/textures,mcl_dispensers_dispenser_front_horizontal.png,,,,,,, /assets/minecraft/textures/blocks,dispenser_front_vertical.png,/mods/ITEMS/REDSTONE/mcl_dispensers/textures,mcl_dispensers_dispenser_front_vertical.png,,,,,,, /assets/minecraft/textures/blocks,dropper_front_horizontal.png,/mods/ITEMS/REDSTONE/mcl_droppers/textures,mcl_droppers_dropper_front_horizontal.png,,,,,,, From a52976a918ba85055a344101062a9f29da432b20 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 18 Feb 2020 16:00:02 +0100 Subject: [PATCH 526/737] Rename 3d_armor_stand to mcl_armor_stand --- mods/ITEMS/3d_armor_stand/README.txt | 6 ----- .../ITEMS/REDSTONE/mcl_dispensers/depends.txt | 2 +- mods/ITEMS/REDSTONE/mcl_dispensers/init.lua | 6 ++--- .../LICENSE.txt | 4 ++-- mods/ITEMS/mcl_armor_stand/README.txt | 6 +++++ .../depends.txt | 0 .../init.lua | 21 +++++++++--------- .../locale/mcl_armor_stand.de.tr} | 2 +- .../locale/mcl_armor_stand.es.tr} | 2 +- .../locale/template.txt | 2 +- .../models/3d_armor_entity.obj | 0 .../models/3d_armor_stand.obj | 0 .../textures/3d_armor_stand_item.png | Bin tools/Conversion_Table.csv | 2 +- 14 files changed, 27 insertions(+), 26 deletions(-) delete mode 100644 mods/ITEMS/3d_armor_stand/README.txt rename mods/ITEMS/{3d_armor_stand => mcl_armor_stand}/LICENSE.txt (59%) create mode 100644 mods/ITEMS/mcl_armor_stand/README.txt rename mods/ITEMS/{3d_armor_stand => mcl_armor_stand}/depends.txt (100%) rename mods/ITEMS/{3d_armor_stand => mcl_armor_stand}/init.lua (92%) rename mods/ITEMS/{3d_armor_stand/locale/3d_armor_stand.de.tr => mcl_armor_stand/locale/mcl_armor_stand.de.tr} (96%) rename mods/ITEMS/{3d_armor_stand/locale/3d_armor_stand.es.tr => mcl_armor_stand/locale/mcl_armor_stand.es.tr} (96%) rename mods/ITEMS/{3d_armor_stand => mcl_armor_stand}/locale/template.txt (91%) rename mods/ITEMS/{3d_armor_stand => mcl_armor_stand}/models/3d_armor_entity.obj (100%) rename mods/ITEMS/{3d_armor_stand => mcl_armor_stand}/models/3d_armor_stand.obj (100%) rename mods/ITEMS/{3d_armor_stand => mcl_armor_stand}/textures/3d_armor_stand_item.png (100%) diff --git a/mods/ITEMS/3d_armor_stand/README.txt b/mods/ITEMS/3d_armor_stand/README.txt deleted file mode 100644 index d5a2c18f..00000000 --- a/mods/ITEMS/3d_armor_stand/README.txt +++ /dev/null @@ -1,6 +0,0 @@ -[mod] 3d Armor Stand [3d_armor_stand] -===================================== - -Depends: mcl_armor - -Adds an armor stand for armor storage and display. diff --git a/mods/ITEMS/REDSTONE/mcl_dispensers/depends.txt b/mods/ITEMS/REDSTONE/mcl_dispensers/depends.txt index 9eb136da..ad7c191c 100644 --- a/mods/ITEMS/REDSTONE/mcl_dispensers/depends.txt +++ b/mods/ITEMS/REDSTONE/mcl_dispensers/depends.txt @@ -5,7 +5,7 @@ mcl_tnt mcl_worlds mcl_core mcl_nether -3d_armor_stand +mcl_armor_stand mcl_armor doc? screwdriver? diff --git a/mods/ITEMS/REDSTONE/mcl_dispensers/init.lua b/mods/ITEMS/REDSTONE/mcl_dispensers/init.lua index 30d70406..5dd0a6a2 100644 --- a/mods/ITEMS/REDSTONE/mcl_dispensers/init.lua +++ b/mods/ITEMS/REDSTONE/mcl_dispensers/init.lua @@ -156,9 +156,9 @@ local dispenserdef = { local dropnode_below = minetest.get_node(droppos_below) -- Put armor on player or armor stand local standpos - if dropnode.name == "3d_armor_stand:armor_stand" then + if dropnode.name == "mcl_armor_stand:armor_stand" then standpos = droppos - elseif dropnode_below.name == "3d_armor_stand:armor_stand" then + elseif dropnode_below.name == "mcl_armor_stand:armor_stand" then standpos = droppos_below end if standpos then @@ -166,7 +166,7 @@ local dispenserdef = { local dropinv = dropmeta:get_inventory() if dropinv:room_for_item(armor_type, dropitem) then dropinv:add_item(armor_type, dropitem) - minetest.registered_nodes["3d_armor_stand:armor_stand"].on_metadata_inventory_put(standpos) + minetest.registered_nodes["mcl_armor_stand:armor_stand"].on_metadata_inventory_put(standpos) stack:take_item() inv:set_stack("main", stack_id, stack) armor_dispensed = true diff --git a/mods/ITEMS/3d_armor_stand/LICENSE.txt b/mods/ITEMS/mcl_armor_stand/LICENSE.txt similarity index 59% rename from mods/ITEMS/3d_armor_stand/LICENSE.txt rename to mods/ITEMS/mcl_armor_stand/LICENSE.txt index d1947b56..3ef95067 100644 --- a/mods/ITEMS/3d_armor_stand/LICENSE.txt +++ b/mods/ITEMS/mcl_armor_stand/LICENSE.txt @@ -1,5 +1,5 @@ -[mod] 3d Armor Stand [3d_armor_stand] -===================================== +[mod] 3d Armor Stand [mcl_armor_stand] +====================================== License Source Code: LGPL v2.1 diff --git a/mods/ITEMS/mcl_armor_stand/README.txt b/mods/ITEMS/mcl_armor_stand/README.txt new file mode 100644 index 00000000..4ecbbba6 --- /dev/null +++ b/mods/ITEMS/mcl_armor_stand/README.txt @@ -0,0 +1,6 @@ +[mod] 3d Armor Stand [mcl_armor_stand] +====================================== + +Depends: mcl_armor + +Adds an armor stand for armor storage and display. diff --git a/mods/ITEMS/3d_armor_stand/depends.txt b/mods/ITEMS/mcl_armor_stand/depends.txt similarity index 100% rename from mods/ITEMS/3d_armor_stand/depends.txt rename to mods/ITEMS/mcl_armor_stand/depends.txt diff --git a/mods/ITEMS/3d_armor_stand/init.lua b/mods/ITEMS/mcl_armor_stand/init.lua similarity index 92% rename from mods/ITEMS/3d_armor_stand/init.lua rename to mods/ITEMS/mcl_armor_stand/init.lua index 98d3b6a7..5ebb8d62 100644 --- a/mods/ITEMS/3d_armor_stand/init.lua +++ b/mods/ITEMS/mcl_armor_stand/init.lua @@ -1,4 +1,4 @@ -local S = minetest.get_translator("3d_armor_stand") +local S = minetest.get_translator("mcl_armor_stand") local elements = {"head", "torso", "legs", "feet"} @@ -8,7 +8,7 @@ local function get_stand_object(pos) for _, obj in pairs(objects) do local ent = obj:get_luaentity() if ent then - if ent.name == "3d_armor_stand:armor_entity" then + if ent.name == "mcl_armor_stand:armor_entity" then -- Remove duplicates if object then obj:remove() @@ -25,12 +25,12 @@ local function update_entity(pos) local node = minetest.get_node(pos) local object = get_stand_object(pos) if object then - if not string.find(node.name, "3d_armor_stand:") then + if not string.find(node.name, "mcl_armor_stand:") then object:remove() return end else - object = minetest.add_entity(pos, "3d_armor_stand:armor_entity") + object = minetest.add_entity(pos, "mcl_armor_stand:armor_entity") end if object then local texture = "blank.png" @@ -87,7 +87,7 @@ local drop_armor = function(pos) end -- TODO: The armor stand should be an entity -minetest.register_node("3d_armor_stand:armor_stand", { +minetest.register_node("mcl_armor_stand:armor_stand", { description = S("Armor Stand"), _doc_items_longdesc = S("An armor stand is a decorative object which can display different pieces of armor. Anything which players can wear as armor can also be put on an armor stand."), _doc_items_usagehelp = S("Just place an armor item on the armor stand. To take the top piece of armor from the armor stand, select your hand and use the place key on the armor stand."), @@ -186,7 +186,7 @@ minetest.register_node("3d_armor_stand:armor_stand", { return itemstack end, after_place_node = function(pos) - minetest.add_entity(pos, "3d_armor_stand:armor_entity") + minetest.add_entity(pos, "mcl_armor_stand:armor_entity") end, allow_metadata_inventory_take = function(pos, listname, index, stack, player) local name = player:get_player_name() @@ -242,7 +242,7 @@ minetest.register_node("3d_armor_stand:armor_stand", { end, }) -minetest.register_entity("3d_armor_stand:armor_entity", { +minetest.register_entity("mcl_armor_stand:armor_entity", { physical = true, visual = "mesh", mesh = "3d_armor_entity.obj", @@ -282,8 +282,8 @@ minetest.register_entity("3d_armor_stand:armor_entity", { -- FIXME: Armor helper entity can get destroyed by /clearobjects minetest.register_lbm({ label = "Respawn armor stand entities", - name = "3d_armor_stand:respawn_entities", - nodenames = {"3d_armor_stand:armor_stand"}, + name = "mcl_armor_stand:respawn_entities", + nodenames = {"mcl_armor_stand:armor_stand"}, run_at_every_load = true, action = function(pos, node) update_entity(pos, node) @@ -291,7 +291,7 @@ minetest.register_lbm({ }) minetest.register_craft({ - output = "3d_armor_stand:armor_stand", + output = "mcl_armor_stand:armor_stand", recipe = { {"mcl_core:stick", "mcl_core:stick", "mcl_core:stick"}, {"", "mcl_core:stick", ""}, @@ -299,3 +299,4 @@ minetest.register_craft({ } }) +minetest.register_alias("3d_armor_stand:armor_stand", "mcl_armor_stand:armor_stand") diff --git a/mods/ITEMS/3d_armor_stand/locale/3d_armor_stand.de.tr b/mods/ITEMS/mcl_armor_stand/locale/mcl_armor_stand.de.tr similarity index 96% rename from mods/ITEMS/3d_armor_stand/locale/3d_armor_stand.de.tr rename to mods/ITEMS/mcl_armor_stand/locale/mcl_armor_stand.de.tr index b947719b..61b1efa5 100644 --- a/mods/ITEMS/3d_armor_stand/locale/3d_armor_stand.de.tr +++ b/mods/ITEMS/mcl_armor_stand/locale/mcl_armor_stand.de.tr @@ -1,4 +1,4 @@ -# textdomain: 3d_armor_stand +# textdomain: mcl_armor_stand Armor Stand=Rüstungsständer An armor stand is a decorative object which can display different pieces of armor. Anything which players can wear as armor can also be put on an armor stand.=Ein Rüstungsständer ist ein dekoratives Objekt, welches verschiedene Teile einer Rüstung präsentiert. Alles, was Spieler als Rüstung tragen kann, kann auch an einem Rüstungsständer platziert werden. Just place an armor item on the armor stand. To take the top piece of armor from the armor stand, select your hand and use the place key on the armor stand.=Platzieren Sie einfach einen Rüstungsgegenstand auf den Rüstungsständer. Um das oberte Rüstungsteil zu nehmen, wählen Sie Ihre Hand aus und benutzen Sie die Platzieren-Taste auf dem Rüstungsständer. diff --git a/mods/ITEMS/3d_armor_stand/locale/3d_armor_stand.es.tr b/mods/ITEMS/mcl_armor_stand/locale/mcl_armor_stand.es.tr similarity index 96% rename from mods/ITEMS/3d_armor_stand/locale/3d_armor_stand.es.tr rename to mods/ITEMS/mcl_armor_stand/locale/mcl_armor_stand.es.tr index 510a7398..8e33389a 100644 --- a/mods/ITEMS/3d_armor_stand/locale/3d_armor_stand.es.tr +++ b/mods/ITEMS/mcl_armor_stand/locale/mcl_armor_stand.es.tr @@ -1,4 +1,4 @@ -# textdomain: 3d_armor_stand +# textdomain: mcl_armor_stand Armor Stand=Soporte para armadura An armor stand is a decorative object which can display different pieces of armor. Anything which players can wear as armor can also be put on an armor stand.=Un soporte para armadura es un objeto decorativo que puede mostrar diferentes piezas de armadura. Cualquier cosa que los jugadores puedan usar como armadura también se puede poner en un soporte para armadura. Just place an armor item on the armor stand. To take the top piece of armor from the armor stand, select your hand and use the place key on the armor stand.=Simplemente coloca un objeto de armadura en el soporte para armadura. Para tomar la pieza superior de armadura del soporte para armadura, seleccione su mano y use la tecla de posición en el soporte para armadura. diff --git a/mods/ITEMS/3d_armor_stand/locale/template.txt b/mods/ITEMS/mcl_armor_stand/locale/template.txt similarity index 91% rename from mods/ITEMS/3d_armor_stand/locale/template.txt rename to mods/ITEMS/mcl_armor_stand/locale/template.txt index 9f7d0ca4..fa6acb73 100644 --- a/mods/ITEMS/3d_armor_stand/locale/template.txt +++ b/mods/ITEMS/mcl_armor_stand/locale/template.txt @@ -1,4 +1,4 @@ -# textdomain: 3d_armor_stand +# textdomain: mcl_armor_stand Armor Stand= An armor stand is a decorative object which can display different pieces of armor. Anything which players can wear as armor can also be put on an armor stand.= Just place an armor item on the armor stand. To take the top piece of armor from the armor stand, select your hand and use the place key on the armor stand.= diff --git a/mods/ITEMS/3d_armor_stand/models/3d_armor_entity.obj b/mods/ITEMS/mcl_armor_stand/models/3d_armor_entity.obj similarity index 100% rename from mods/ITEMS/3d_armor_stand/models/3d_armor_entity.obj rename to mods/ITEMS/mcl_armor_stand/models/3d_armor_entity.obj diff --git a/mods/ITEMS/3d_armor_stand/models/3d_armor_stand.obj b/mods/ITEMS/mcl_armor_stand/models/3d_armor_stand.obj similarity index 100% rename from mods/ITEMS/3d_armor_stand/models/3d_armor_stand.obj rename to mods/ITEMS/mcl_armor_stand/models/3d_armor_stand.obj diff --git a/mods/ITEMS/3d_armor_stand/textures/3d_armor_stand_item.png b/mods/ITEMS/mcl_armor_stand/textures/3d_armor_stand_item.png similarity index 100% rename from mods/ITEMS/3d_armor_stand/textures/3d_armor_stand_item.png rename to mods/ITEMS/mcl_armor_stand/textures/3d_armor_stand_item.png diff --git a/tools/Conversion_Table.csv b/tools/Conversion_Table.csv index 57a84c15..987ab64e 100644 --- a/tools/Conversion_Table.csv +++ b/tools/Conversion_Table.csv @@ -609,7 +609,7 @@ Source path,Source file,Target path,Target file,xs,ys,xl,yl,xt,yt,Blacklisted? /assets/minecraft/textures/items,gold_leggings.png,/mods/ITEMS/mcl_armor/textures,mcl_armor_inv_leggings_gold.png,,,,,,, /assets/minecraft/textures/items,iron_leggings.png,/mods/ITEMS/mcl_armor/textures,mcl_armor_inv_leggings_iron.png,,,,,,, /assets/minecraft/textures/items,leather_leggings.png,/mods/ITEMS/mcl_armor/textures,mcl_armor_inv_leggings_leather.png,,,,,,, -/assets/minecraft/textures/items,wooden_armorstand.png,/mods/ITEMS/3d_armor_stand/textures,3d_armor_stand_item.png,,,,,,, +/assets/minecraft/textures/items,wooden_armorstand.png,/mods/ITEMS/mcl_armor_stand/textures,3d_armor_stand_item.png,,,,,,, /assets/minecraft/textures/blocks,dispenser_front_horizontal.png,/mods/ITEMS/REDSTONE/mcl_dispensers/textures,mcl_dispensers_dispenser_front_horizontal.png,,,,,,, /assets/minecraft/textures/blocks,dispenser_front_vertical.png,/mods/ITEMS/REDSTONE/mcl_dispensers/textures,mcl_dispensers_dispenser_front_vertical.png,,,,,,, /assets/minecraft/textures/blocks,dropper_front_horizontal.png,/mods/ITEMS/REDSTONE/mcl_droppers/textures,mcl_droppers_dropper_front_horizontal.png,,,,,,, From 89afec17b16efc37bb989976498b782cf1145061 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 18 Feb 2020 16:13:37 +0100 Subject: [PATCH 527/737] Armor stand: Remove legacy entity --- mods/ITEMS/mcl_armor_stand/init.lua | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/mods/ITEMS/mcl_armor_stand/init.lua b/mods/ITEMS/mcl_armor_stand/init.lua index 5ebb8d62..72436330 100644 --- a/mods/ITEMS/mcl_armor_stand/init.lua +++ b/mods/ITEMS/mcl_armor_stand/init.lua @@ -299,4 +299,13 @@ minetest.register_craft({ } }) + +-- Legacy handling minetest.register_alias("3d_armor_stand:armor_stand", "mcl_armor_stand:armor_stand") +minetest.register_entity(":3d_armor_stand:armor_entity", { + on_activate = function(self) + minetest.log("action", "[mcl_armor_stand] Removing legacy entity: 3d_armor_stand:armor_entity") + self.object:remove() + end, + static_save = false, +}) From 364a4152ac783cd7ed4b44c223683980fcce7832 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 18 Feb 2020 16:36:22 +0100 Subject: [PATCH 528/737] Change fallback armor (un)equip sounds --- mods/ITEMS/mcl_armor/README.txt | 4 ++++ mods/ITEMS/mcl_armor/armor.lua | 2 +- mods/ITEMS/mcl_armor/init.lua | 16 ++++++++++++++++ .../sounds/mcl_armor_equip_generic.ogg | Bin 0 -> 5623 bytes .../sounds/mcl_armor_unequip_generic.ogg | Bin 0 -> 6630 bytes 5 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 mods/ITEMS/mcl_armor/sounds/mcl_armor_equip_generic.ogg create mode 100644 mods/ITEMS/mcl_armor/sounds/mcl_armor_unequip_generic.ogg diff --git a/mods/ITEMS/mcl_armor/README.txt b/mods/ITEMS/mcl_armor/README.txt index 6e9268c2..5e68b574 100644 --- a/mods/ITEMS/mcl_armor/README.txt +++ b/mods/ITEMS/mcl_armor/README.txt @@ -20,6 +20,10 @@ Source: Licensed CC0, by Freesound.org user mtchanary. Source: +* mcl_armor_equip_generic.ogg +* mcl_armor_unequip_generic.ogg +Licensed (CC BY-SA 3.0) by Mito551 + All other sounds licensed CC0 by OpenGameArt.org user artisticdude. Source: diff --git a/mods/ITEMS/mcl_armor/armor.lua b/mods/ITEMS/mcl_armor/armor.lua index d06d5444..f7c20d0d 100644 --- a/mods/ITEMS/mcl_armor/armor.lua +++ b/mods/ITEMS/mcl_armor/armor.lua @@ -232,7 +232,7 @@ armor.play_equip_sound = function(self, player, stack, unequip) local snd = def.sounds and def.sounds["_mcl_armor_"..estr] if not snd then -- Fallback sound - snd = { name = "mcl_armor_"..estr.."_iron" } + snd = { name = "mcl_armor_"..estr.."_generic" } end if snd then minetest.sound_play(snd, {object=player, gain=0.5, max_hear_distance=8}) diff --git a/mods/ITEMS/mcl_armor/init.lua b/mods/ITEMS/mcl_armor/init.lua index 42ad8f24..9d4646d9 100644 --- a/mods/ITEMS/mcl_armor/init.lua +++ b/mods/ITEMS/mcl_armor/init.lua @@ -41,6 +41,10 @@ minetest.register_tool("mcl_armor:helmet_gold", { inventory_image = "mcl_armor_inv_helmet_gold.png", groups = {armor_head=1, mcl_armor_points=2, mcl_armor_uses=78}, _repair_material = "mcl_core:gold_ingot", + sounds = { + _mcl_armor_equip = "mcl_armor_equip_iron", + _mcl_armor_unequip = "mcl_armor_unequip_iron", + }, }) minetest.register_tool("mcl_armor:helmet_diamond",{ @@ -104,6 +108,10 @@ minetest.register_tool("mcl_armor:chestplate_gold", { inventory_image = "mcl_armor_inv_chestplate_gold.png", groups = {armor_torso=1, mcl_armor_points=5, mcl_armor_uses=113}, _repair_material = "mcl_core:gold_ingot", + sounds = { + _mcl_armor_equip = "mcl_armor_equip_iron", + _mcl_armor_unequip = "mcl_armor_unequip_iron", + }, }) minetest.register_tool("mcl_armor:chestplate_diamond",{ @@ -167,6 +175,10 @@ minetest.register_tool("mcl_armor:leggings_gold", { inventory_image = "mcl_armor_inv_leggings_gold.png", groups = {armor_legs=1, mcl_armor_points=3, mcl_armor_uses=106}, _repair_material = "mcl_core:gold_ingot", + sounds = { + _mcl_armor_equip = "mcl_armor_equip_iron", + _mcl_armor_unequip = "mcl_armor_unequip_iron", + }, }) minetest.register_tool("mcl_armor:leggings_diamond",{ @@ -229,6 +241,10 @@ minetest.register_tool("mcl_armor:boots_gold", { inventory_image = "mcl_armor_inv_boots_gold.png", groups = {armor_feet=1, mcl_armor_points=1, mcl_armor_uses=92}, _repair_material = "mcl_core:gold_ingot", + sounds = { + _mcl_armor_equip = "mcl_armor_equip_iron", + _mcl_armor_unequip = "mcl_armor_unequip_iron", + }, }) minetest.register_tool("mcl_armor:boots_diamond",{ diff --git a/mods/ITEMS/mcl_armor/sounds/mcl_armor_equip_generic.ogg b/mods/ITEMS/mcl_armor/sounds/mcl_armor_equip_generic.ogg new file mode 100644 index 0000000000000000000000000000000000000000..1d3b3de2c78ba8d796f5178313ba273c26209943 GIT binary patch literal 5623 zcmeZIPY-5bVt@j5%k45CCX3;=O^kAkW%)%(nZ+OhMwc}pih+TloDs~}!3fp~W`hWj zPLK?T>E_h}vHwxPNoI&ax(o~q5t#)Udj3V}3OSicVPNAGJQa)#3=Iqo4Ga}Df|D~6 zOVd*GO4HL*OEf_Sg52Zk=j`v|8f5F3lAn~S5u~Z$SelYql9`{U5v0k;3Nc*M$vKRX zfrEj8!O%zHXv2jGp$rTH3=9b>ntYSfJT;e2S*TGtV~Pieb=079#+1&Z63IP=$6$nl zNs1@~0}Dfg24~;mXP#N-EYl^_`-&D=X8KtyS77f7d|=6W=&M?C-m)#rvh&Vqs&eo~ zvNA9*F*tZAwu%ISh@=k1Hi@JT#devZ6N<~{6me;-SkS~}bV8xo$LQsf$$nNZS1j(c zdZn@Df)lsymP=kfhF8Oq*X?DCttmcd`FswP-~{_afq{X=iA^#^z=;E7e23<;8AV)1 zCm`NZU}yjZx%)&B&y6CdH_Dv7sN(-gCs5e*qOogmh;L|UXlQ9{cvX~lGLI{mW!BM+SV{Jq=14% zfpe0Q=A^}*%hIyeWzOD~v3gtX=}kJPH}Qa#FfcN(fLz0{Aam9-43ri*EtN2G$T*?J z;K0P-aJ*3Fc%h1Gkjn8Q9d>XCpI~6%U~mZ1Ia*}mUTku_*yeb#jeCj9$tgZ(zxeQj zl`t@Yqn&}l!BFOCq0GsPD*i#bmy1lpi*2tL`(7`N4F`n?e%uI7FDwiUigVMZWi@aZ zPe=p@3n-u^7IHZAKx|@RVCY!*L}Av2S)b2Z^38g>V5P|H%Lh9{W~=X9Ib$|B26N6y zKAuy2PV>~vqYGwUm{okvlV{da2&+q3=AxZHzbbDZBnT1V@ncIT&6f#uB4xD@&dyXnoHz*``o-%HU|VrsxK{R z0{dKnfuThJoQh!tI4MI?@sdehTBkHNpD{YE10vQOK4Xn{ymU;jh9&oI zeKxOnouxFf4ucbi zVhcD=PD$!9JU*w{&xsQf!LXcDC~|zF%*lx=-kVf>FX^29Wa9tX?o?PH^&X9BNloOWfODA9Q)YP3OVXUdTOep#BoW++sPcE4v z;oUWNiBNLqS_Xy&26l!92JVFyCWtaRh%hiD@dR;cwoVB;r}=C`&?&>GGC^LJ%jX22 zv*eI%Ic3N;w^=}QsZ8)W&EqmHXB?l-X};j7!N8z!fRRDrfRlzviYtSFI>UnkmGhHL zyhT*KgHy*}0Ctchu0Na$(d(5oS#x5a!zx2gIH`}%$f2^Dq?6%D;S%{O#w z?s=2cn<1fh#X_%cOT8^t7e1}@zOiqlSm@PjzM)%7uTQIuzm^+218S772-qmI(Cgbw z14}{!LsKI|LL3xmNS(#ajR;-$(v1--IRoik`ty>$t=*6l zDp<8{-RezmK(f2mzCKp?dY3`XGR@P=R=?V{a@VfB*SiYOY|E8dyz13Ht<#4#oZ9sM z^)CG_rHX-}rFW;qJ`PWf{GJ%v>!w`m{cC@pDtx``(htk?`7%4V<;rZ%lit7f z_p#5~_K6mKOVej<%U!is| z*6Dp4PHi&0b1YwGw}DLTZL_}U>vK1)<*rRW@tyO0_U&VZzpWmBD_y*vhx2$p149EN zC~XLza#*OS&D3DQ$iSxfTqIaP>!?DBK+r3NB_W1vip73jM`fl2cx5S0xuSJUA*9dq z#GJ`OUKyHGE(NhKTpHk&y>QC4pzMvyt|YxxSR&??sXOITRMyI4SE70ZlLd^PFG)G) z$+>h3NTS%!>-mBud`@0Vmxy?K>4u&0Jh@=;B}b2yON4?wS8fgP%3iue%-hRwn@Dt? z;WZhrOx-0y(Vm*eM1pg5kIhm(rjT;Z^CZY}upLilOyP6#n%O+b%WLh_NkM1kOa>X% z+~?(~xowh{&%!C!yu3EH21Vr;zhl&9vgNnSa+$D*Qrww4M+af4m8c57I6 z*4kqMUfHTkCA_^hZWYVUGkhlHmAMvV`O2eW(S5qdW(8-PF1wZml8DZ=y*8`ZYwfiw zLA|=iW+mtDy*jJ#b@?3dzQc#cXv02eM zJC{w%$}xO4E2w+xvs=YErr)katpVBLz4cmDasSS*VGIlh8kiXz8aPuIfQk@Mwsq_X zI_H@wP;|ypi___hrTWSuA16)C&@+x4s$0)lYHA+6X33$tRLomT_h?wQrsh_$Y+VM1 z1>kJU=G%Fck&8Eylfi|NLE)If5s4Ny$)ys_7bKR5Bnv1ll_>V}S}Kx!&hw;1F`tu` zWb!#j4b7GSFD=bh0WVM0rA!PATrvy{OgR^(M93_Fl_Lo}Nj!#a3MC;%T7oS;Ug|3w z1){jumR<|WUV8LQRMy%pHyk+Dwq7&xRy}qlDsAnN8By8{3~vrFGQ0toBdQD&*cluo z7K$t76kE<%awxV4I6aeT5pd#I*eu}0 zv2@BMkVKHzONABzC(WfLAc-kKTnr3a1q=)v8v;{`no+s05XnUY6_&r?_bz zQn{elGd1B zzY^86_1Ua!FWqBN*=Kh$Fx+8fXV}0j?P{hj!Kr1E0`^3M!V;0>9>X?~q%OnfbDTLe zkIpDQr@2f5)H<1x)B|dN^caHMu*YVA#AHCkoZ>!^1XAM`%;m)5iIoft41!@vpa!`# z2c%W*CIsdt=Rml}WL6f(i!u%C;a;Xk`{n7f6h6t@n@ zj{H5 z=75Y7UJMO93=D-gvR-RmJE3rNPRlg!mI*}yNqT}oU6$?}Q#~Y)N?e^{xKt!KDEq~n zq@Fx* zhK1#ckP#OT*YTF(OPS0J0xc(aCU!*d2nnxhT$E(R5D}Abg1v#Kw|7f7_Y0!~tg&}W z6J7&thoPvS#_`MrKa+^@mR$JagvC@jHLduxf}itthq@WnD1Y;LUDksn>t&g0|N6 zZglSFdwTg(yno<57d5G{o_+9+!5)b1~p^yg6C!deMyte=F`WwG*ce?cC zxptdtoLIm8R_3>VTg>B6h@U*VUg^e(?~i8)|5Fz_Ep<6J-EQ3z6OX-Gb+a=!taUH? zIN6X%q_|sf^Pi??$`Ur7;y<{oXZ?Ghb#!g~LoJJ&_cHe}FtExTsC2gLOEPvU)Y`$OB)rh^J&PV6< z84IQP#PoHY-EML7_gt}~Wo!O&ZE(@H5>KwS59d7*?cEZ*cJ=fimMd{$yBu_m{#F$K z9Fk#uX#bMMG3SjG7C3IyTGTf`k!jvz)=aTk8$*t|opp>p6WZ9<61H@I-Nx!5L*2RF zr4ny)7aU#kbo=-FxgPfuE&9$TS?Z@g7vtJ|w&zhv_V21M;T(+f-0!TaEt}(Tkn8nS z12e{qzeTFkzqO`zsoU0nKELgs!Q;KYs{FV8-)4S0$i<#JTUt1K+q~C>dgbjBt2V~m z+w>zrH_qf--Z%|95O zvf3lXC7uOpy<9qT#rMU}cg(JDZ%7VT^E@T?<(AUl*=iHtzx$S*R1-Db!nI7-)#&Mr z?DDi{Q~z1km-X9PDpaI8NS-l%?QvDF(8t>T+`-*{b}hP5kW|i+;KwNECevy4wLyd7 z_o^OShFmSzHC<7WlQg%@Tz%r@zrCrK-|9a*?tc2m^M1w{jc@0}I+r|N`Q^RFnsWuu zC%xLJe`7`VGVY^~IFBs+ps0OeYR@bG+W+24vpqf-x`i<0ZcxjrZ{+p4vG)Ap4DRdZ z2Pf62-aDn(Gw(o)^{4)}gJBuK45~zR0$JrqllP%l~TRj+O44F6rd;XyM)aPkQv4x2yDo^0V*U(KVlgrO|rU zv=jL=C)CLwZJB8HLP%+grF@Cv^^ZU2T#Wvp_vjDfvZ+(~h0aPFXUnAS^ET&iyLva1 zyMGby?Zy8U^Zf7p+-f7c-t1DQeQVGQH!i-nhFm-Syww&8mb>mSyR~z(P2Gu#yIBFX z>v&WSZK=Oz8Jd!nGCQ+*`t-JJnHOtrT#;BH5&d<8WS)2Zg@sQl{N z{x91G)2hur@1GPp&zQE_$yWBhPEyx?!LDgC56|mzJ8%8{;j5-sY4oH8N9Nx>&6lzG z@0@R&f?j5y@(R7AW;|VH;mmt0POi8h7(DOro=dm)=>0x>ps1UZ#cy^+K;9RH!vUg; zUc7Z|RBrU2Gkd}fzt<<_-zq6pf5^;gJiBrYhp_I;jMGJnOLuIZ!oAUzr!4;#e#>8rxwd=RE_Iu-sAt*UDzf%BXP;Jfx};Rkv3o|Hj%KcV)wz>v zm)yQ}=1jppjlKJ;Sgq{$t6iQHGtq3b_9ec<`r3(Kj=Vm4m#H-Q&ZOHRMoX(EMz_~E z{W)E9sJ83pUEZu|v-yt1Gu@6qH~+@3H1&)?m)lc$R1Iu3G&*)AJ9e1uJ@j1iL=fBN zd)hIw*DqO}-m%Ei^*?vJiV(xT)IG7U+Rr!~5RlPJ_*IA?~o##MO#Fo?>6@!obEWcq$kf7#bKF8W<{Q1Se-C zmZqiVm8PesmS}l|Iz`$VWqj0q0!h}!;1_1_!1Qkub$!VUNOQ$TZfW zLct_Ol!1YTp+SSQZ}BtFtaFy>66$?L3oJAJES4*CwJQQ0+f-;rtCuSl z_gTHt*mA*%TX)MPFCW9JVaeg{ zE~66=Zz(V|fP&n8qKM~4k<%Mx&R$gU|D+QrY5z( zL88DpNlA0kV$Wr1S?e-qZ_8M{E%)>$ozt6mz)Bbx8CXEBVOWqkYZ(Sgi=3897&&B| z&|+|4VsJQKD093}#WhIfc##e}ID}6yFmNz91nC?tGI1|9IbLjYyx7LQ#O34^pR-?l z_`ymTn84A_z~EpgbF@(A%y$hXD#_=JzcO;WcKBQoguT;cdnc<8ytf< z=OiD`DL$upYUa@eGcU|4KIh3ZYbk_PDKwjX?aE8DiqA^1`fVD|U*^EeWw!d(ogonOz=jr|TNyX!+(FBSbBfP(-kP1glQVWs@wuNV zbKafh1c{+19|r~omc$zp$L2OE)b_C@i6|~poGe$;&o_C2;R($pa=m?SUMrgef+W?K zmNbEVuE4<1A^=XsFan&EA*p!Dq%N&f8k^4;oz?*nYYv~YdcEPWfHRNbmP=kbrdPv~ zd$&HDSG>;BBYWxAYf;)urv!OvE(M1lD1#`ZOmJkA1ZR@A8AYcwmoI4If&?cd;y$RH z7nHq-gwB7I2^3Nd6jHrtq#JB(8yXTCUX~j*4P`R_pjI9zup@!-iDsA;5moE zi9@jkoF}Iw^%x$X)9mNO35j4>&M6c*K2hf6L>2E%D!!L=&VDlS|7>zm*fr3^H&`_G zqG;)5vD9F**vqD=mqSypmZjd@mKwdiHgX#%w?Og?h`e43_97(bfU<~^W#40uNi5)O z0nRxKH2NM{^eKBzQi+_TRyi%bbJoh4^Ioo8#06G@$T=BZ%V%^g@928o(WlWlEwgjh zs-25+POW>riy(sM9QPs>_aacvaV=6o$~gxNWt@Xlj&IWO{S5J=?L}kT&=Oa1BWVZu}f21y16Wk)v27J;s!2~K&o z5gdlkR9F{UvMoF!(Xw2?n8%V=sbqqqy6uihmWO#hKM2wgb@6HLRWNVfct)~OG0DAQ*V9`jTEbk zzTW!qTkS&$kjdAtmWEENO}v(xxV`kgM&_){tVJtU&C*!4YUQeJxvSQ#jb8L()uL6W zHl?pxx8~HQ^{dzAyq=}8YTb%en{-yK(pkM}&F@t@ueYsOwQKFEO&eyfTm5?5d+x(J zuXh!!TDNZXrZ*tjU29(-D}24npk|ro>1C^5?OM5OSKjMgg=e>YM<8WLmN(Q zdjEQt{+3e3z|hjWQ(_;7r$&CyjW3@U{k?TluJ!)4zfTpu-gW7R<@tP>o!fF{Hs?w2 zU;F#mXKnjLi@v4lv$o}~TD5les@1PIV5OrNb$V;=6%uEdl#*G zwM*;tz73}~8QwXTFSFY~Cib>jU-b34o7QsICZG7uc|QC0vBKY0kH3{JUeCjMyq|%g zff1B8gikpvRMci_uwZ0hQ+zHGETDB%p+q3)mBNw`LpH@?Kd+-QQv$rQ6sKI#I;IfP z=XqkzWFfB%%_*0H*cUDh@XB5|wyuEb8&Ul_&u=tXr$I2x_!JaF(26$yJT_Wb~Ww=cw zI?wQ$j8~@a5}{~M&0`|Lxw^+@DIZfvIp=v2WI5Q5r!%JTIeE=&p5*1VcIu>{Gjk?` zjB4)l^3>cm$;)TqlxtpI8(V{-atyD{3Cb~@aw*DF^VlS>9NlA4(LP&C1){jYu3Eb_ zEIVuMu>h}Z)uj^NUK_WHW#<__lk&=33$lFWQL*Sg-D9(YvrU&>%K}M6=h|MIRqVC) z+LfSQ-D9(obN61IRsA03^Q0`@W7m?_f-KkCICWA~j^VRgQ9YJZE+u)cJUS_;NB7vQ z=$xI)re)h64@E3=R#PsS7|w2q@b+ zb_AXC%oHd(W2wdIbjDJBWs#4Qre^3FM-J7k=PWffk6yFnP+cnKt)+W3EL&4^t5~)! z1H%Gvwq^6}Jj%$$8_CJw!pNX-OyP(`3!CIpiRKFuOGJ_dl$J^q`*|%DNj~R!Qlgm8 zNlP;MoTG+jOMsV_W~+dgr|MEB1_mw}1_q{_3sWLw7Qo7p1fC=w!#0JI5F;(Y79TJ5 zm5l;X+-pm(1!XTidL}As?Uox39BW&z8F{N7yAqYQ_Q;GVZ3c!n2N)UNfXfk8h6(Hp z4ibw+lFwPD3nZPfd?91PVfaj@g-`3)oMt{J4$tv%1kdy_Jvd2 zG><7vnH02GBw4`Ab7c{alcwg;Fp$KQs5c5zE=A>-mI-)e>K==7_F8*1B72?U(rZa; zOs`*w>e>2iR<@V!v8e2`I~f@6u(C63V3u|@QGD!h@qCsJaNOF&1n@CcZ;qy7p z9GXXG6ra;vCIM=lOiAhiwLf|c!EM-MGeBZ8AYx8&A4meJaSP^hV)4XE1_lPfuq04} zT$%&YDt8kCbCYu*++#B!T#ypvhC5Ui){e*IMrW_xdMyf>U~t&a#m?}bT{_I&LQ{%c z2joWqJ_ZJf!!wHeEZJmR+B9D*Y2kC?Sm^9!siE2u;H9Zq?C0gRbjg$`ubIU`L0YOy zrv<%ISaK!GOLyzFD0bDQ*MhRvZoOv3v2@E7kX1JvJv5hIi|W=r7U1QzcI%C#9@Dm< zpsck=ZzQcTTyiNWNB5XS@|uNHu0>@V9+Sw{)!ce5sb}l4sBF)bTdyT`n_i3JW_XZS zz|i2ap|EZ0lFf%MJ^;tHA|nHf6F9U%9fP1Q!{-Y?sYTJn%kY^DD2*t#^uWYgCcwo6 zte!)XR!flAbBMYr0Z!ng#j&s@$V*eUMZie|%u;O;aN>kC;J}HoMaWBY=@f8^1U2fW z2sv>mf}3|!f}A)OP6+_X26=HPf=mHv<5UC%7l@^)2+<4D#=y|P3@U|{U#KiTrIcgx z@DOuA#tAQm1|9~6!W&tyHLsmeI69|gns>{DB7r15!JsZn_l>C@l1C-3PBC065*(EM zVop*|p#R)tFT=xYri6KEOl-PTv}SAB8Ab*M1r7!S0Y&3R2SyQz6ATT^Ei9T03pO0M zU>L)~@IeRAjiNkiB~~MX_jRlUqAl@fr)~X zgeD750r!9&FgEZrG^nt4babTkEk691S;Zx#Wyz5zEUI8>5W&F#>Y;*qRSXOq9N;cA zi=sYAhJgXpg$7wubw$EQ(9qP_$Y9gngXaz&K6U2QnbRltu(n=3R(bl#VGnlpEOKgYInFOD1(aIV#n(9pD6uqES$X!N|F|JO3G{JRibIq&V~PnH_y`SA=- zA3bjUv;5Zf4=c1}<$L7b{o3rA%Whxcknr36_dJ2qHt(LhzffaPVJcPUxc#%mXXSrA z&yq=>A1N;ra_L&)_HdS^%8&1UujP(3-cw%LD8phm-+#B+-MPJi3?gc_?azOgoMu0< z(|$7Vn&QCE!lC|K-iUk+p1kkhPvOPxzpa~AADehu^s&vpq6Kfvl^NzFt-L?4?C0~V z7gl}z%yueqSE}o6z1JU~e&O=Ye4be4y71$%+&ydwf23aDv=2P(z-M(@_eZ_~+qpT% zKGH3^75{`6EI9w?LC%N1AcF(@diUP1R6po_KB~y~WYt|mi{H0zi>|z9slV-58h3}b z^mfe!+O;w&txJTw0-C-x%l0sSImf)udhfLNZze|Enaz2Q$&sVMYm&)F=QBA=m}e|8 ztdp6y_gvhKy5;{re>eRiDmgfAZKCuHe zxd}Rk)vX>;QjMsGb1>ZFvRxMbAw}n0V$*WbnHh~s8VYVLixW;tQ(`s9snAZ->sdYj z!S+LE&V97Yx4HRx<+6>MJA|o!gx$NglkhyJ?b~uVYj5pre^vbM z`?b{taXe4&pJSRADRWxYO`$nZ=UFY=7uDKFr5?<&K6~a|bDAtN_5Z(%-}(7&RZQAm z>38Q((t%Byh1S*km-3$BKjIND6Z`Yj?pvvDp&D*KWsUA@cctv9ve@=vXHnM%ZlRQo zfA=n*UFOWtFfX~!CidX-BTt=rW>|DBo_C5ltYDGTqqS^P-TF#$>(l04a|rO_`MIEH zH+$lrm75bTz86g@UQ(s-2eSyP{!#qsU&n@IM_3bQxakQFBnUJn9zVP_wt& zh_~t7?VgIe$sR{ys{haM`D1ha%9O3I+>{nu>lz74%j`N9e4_Sw*CDH=+m6UTc3T}b z^_kvmCau=&sV8PTEL8OVs>bRm=~rd*cJjoXjaFNNr01XXDtN4WPnSu%LT$BAz}h_z z-=#?vswNz)kB#+M)9%SX{i18zqVK9t5`w-3t~zpi$}hP|0X&5V-)zl%-%@n@_v%*` z)?4>66_>UL^>xp5my(?qxo2+i&aEd>_{;WHZ#TIanb~mBU+Q`EB+r9A8~0ZKU489b z+S%GayMp5P*X3J$`1eWJKaca~x7uy>j{GsRwh!(%Zy!usmB=^LH)WR*yNtbY9C zazuKJB!de70aw}jq#Itvd-Nw?KCLm+gCXI?s?UsP4Gw*Z6?ttlWxHh2u9}|jPO*MZP|@3%d8qCt}}C*BKGvPhQ>orDkAObL{~W&(WgR zd4DUnKPZXY74Y$S`CIQyw(M)Mp`pHdh3{6~*E~A4vgTEHhLWG-jGXz!Ipuess2`K! z;c(PqFBbCSIzCZY?0$C(!@uw^Z##5Z%A1eW#!hK)Gjq`Y`Z;w?(zhuk98AKIvK>3E z?+Yu%9sLun-}17z=J&EAhpn@%&;I1we4k~*sm%0_D;$QO6z$^}0~Ty>xtzPv;fzOO z<@=W^kxOGYY4%AvSv@`S(JDbj^7D$1o;fG|bBk*=C8HMI7F%JtlwWsUz#8U21G|Ma zo(tP+2s#EcN%UHPh8r*!X^`jB?nH!Adco^8rDkFQ*}zkKGq z$vtb??%53PD{ptKT|aH+r@2+X`J@>Bg~vP-bo*?)s=D~Xj(g90TKyPLvt}^WP3fAr z#Ywws+x~OQ+}7t=d6|4OH-Go{vTyYE?T7s*>nvB5>Kgo6Jv5CA-7H9kJlilP|?fzSG-*X*? zJ>QR%-&JPJF24EFjO(O{!I`X)eM&+g=mi`bK+?y)C9z2f~^4ma5YY!kd*ESY1R zGqcdq>F$2}$yz(vFV+9s`#xUYcK@cw_i^Dp$tT}8wt-q|m zVx`U$Gt0{tS6;pJk&*Q~!}eL5B7Ua7zQx*gh}er+9AdP zXVYdCsxLb`=k0@rvrGJvmag8n_EUJg%k4^O&23GpKN%U~++(U)D;OW_`mk&Bx;Ze7}Ev{j-uRnVKgT0+#$ce*d!mQ@vdWAKl&j z?cueQqZ@8+Z|Pa>a^_n83&q``3(jun4$u%w{4TqA?eVCMOvbyqW8;>+&fxm}yzx$B zfBDzjX{O4RDJ8J#VCcT@nw8Zgc;)8boQ~cFg%Oi zef9Zv!3A5UdAl#)n)u+ccCq^R|Nr0bZ%?1}_08(`{dKvMe;j0&x3LmleKvlF$$E|Y zZRyLW)t4_?@gqm{KzH{gBU97X=jmF(!8P`~8&|IU`sYu~vSrJzeco*5^Rv)?x1pxt z!AFmh7MO88c-?w%`jjaF-eO&)dXK-pIc9Kl{qyu(Bh%EZ?(Tq^4d;Gty)(lnasKzF zEsbsIyoaxd#N{yv|NQ!fjm`eUn#4!!ad|vNAMc-+GB9P`(a5wvpZCq Date: Tue, 18 Feb 2020 18:12:51 +0100 Subject: [PATCH 529/737] 3 mob heads reduce mob detection range --- mods/ENTITIES/mcl_mobs/api.lua | 40 ++++++++++++++++----- mods/ENTITIES/mcl_mobs/mod.conf | 2 +- mods/ITEMS/mcl_armor/armor.lua | 27 ++++++++++++++ mods/ITEMS/mcl_heads/init.lua | 11 +++--- mods/ITEMS/mcl_heads/locale/mcl_heads.de.tr | 6 ++-- mods/ITEMS/mcl_heads/locale/template.txt | 6 ++-- 6 files changed, 73 insertions(+), 19 deletions(-) diff --git a/mods/ENTITIES/mcl_mobs/api.lua b/mods/ENTITIES/mcl_mobs/api.lua index 153ac6ae..cf5d30d2 100644 --- a/mods/ENTITIES/mcl_mobs/api.lua +++ b/mods/ENTITIES/mcl_mobs/api.lua @@ -91,6 +91,7 @@ local mod_tnt = minetest.get_modpath("mcl_tnt") ~= nil local mod_mobspawners = minetest.get_modpath("mcl_mobspawners") ~= nil local mod_hunger = minetest.get_modpath("mcl_hunger") ~= nil local mod_worlds = minetest.get_modpath("mcl_worlds") ~= nil +local mod_armor = minetest.get_modpath("mcl_armor") ~= nil -- play sound local mob_sound = function(self, soundname, is_opinion, fixed_pitch) @@ -134,6 +135,31 @@ local mob_sound = function(self, soundname, is_opinion, fixed_pitch) end end +-- Reeturn true if object is in view_range +local function object_in_range(self, object) + if not object then + return false + end + local factor + -- Apply view range reduction for special player armor + if object:is_player() and mod_armor then + factor = armor:get_mob_view_range_factor(object, self.name) + end + -- Distance check + local dist + if factor and factor == 0 then + return false + elseif factor then + dist = self.view_range * factor + else + dist = self.view_range + end + if vector.distance(self.object:get_pos(), object:get_pos()) > dist then + return false + else + return true + end +end -- attack player/mob local do_attack = function(self, player) @@ -1524,7 +1550,6 @@ local specific_attack = function(list, what) return false end - -- monster find someone to attack local monster_attack = function(self) @@ -1547,8 +1572,7 @@ local monster_attack = function(self) if objs[n]:is_player() then - if mobs.invis[ objs[n]:get_player_name() ] then - + if mobs.invis[ objs[n]:get_player_name() ] or (not object_in_range(self, objs[n])) then type = "" else player = objs[n] @@ -1678,8 +1702,8 @@ local runaway_from = function(self) if objs[n]:is_player() then if mobs.invis[ objs[n]:get_player_name() ] - or self.owner == objs[n]:get_player_name() then - + or self.owner == objs[n]:get_player_name() + or (not object_in_range(self, objs[n])) then type = "" else player = objs[n] @@ -1757,7 +1781,7 @@ local follow_flop = function(self) for n = 1, #players do - if vector.distance(players[n]:get_pos(), s) < self.view_range + if (object_in_range(self, players[n])) and not mobs.invis[ players[n]:get_player_name() ] then self.following = players[n] @@ -1808,7 +1832,7 @@ local follow_flop = function(self) local dist = vector.distance(p, s) -- dont follow if out of range - if dist > self.view_range then + if (not object_in_range(self, self.following)) then self.following = nil else local vec = { @@ -2071,7 +2095,7 @@ local do_states = function(self, dtime) local dist = vector.distance(p, s) -- stop attacking if player invisible or out of range - if dist > self.view_range + if not object_in_range(self, self.attack) or not self.attack or not self.attack:get_pos() or self.attack:get_hp() <= 0 diff --git a/mods/ENTITIES/mcl_mobs/mod.conf b/mods/ENTITIES/mcl_mobs/mod.conf index 4f619b93..aed56013 100644 --- a/mods/ENTITIES/mcl_mobs/mod.conf +++ b/mods/ENTITIES/mcl_mobs/mod.conf @@ -1,2 +1,2 @@ name = mcl_mobs -optional_depends = mcl_weather, mcl_tnt, mcl_hunger, mcl_worlds, invisibility, lucky_block, cmi, doc_identifier +optional_depends = mcl_weather, mcl_tnt, mcl_hunger, mcl_worlds, invisibility, lucky_block, cmi, doc_identifier, mcl_armor diff --git a/mods/ITEMS/mcl_armor/armor.lua b/mods/ITEMS/mcl_armor/armor.lua index f7c20d0d..ecb07e1c 100644 --- a/mods/ITEMS/mcl_armor/armor.lua +++ b/mods/ITEMS/mcl_armor/armor.lua @@ -157,6 +157,33 @@ armor.get_armor_points = function(self, player) return pts end +-- Returns a change factor for a mob's view_range for the given player +-- or nil, if there's no change. Certain armors (like mob heads) can +-- affect the view range of mobs. +armor.get_mob_view_range_factor = function(self, player, mob) + local name, player_inv, armor_inv = armor:get_valid_player(player, "[get_mob_view_range_factor]") + if not name then + return + end + local factor + for i=1, 6 do + local stack = player_inv:get_stack("armor", i) + if stack:get_count() > 0 then + local def = stack:get_definition() + if def._mcl_armor_mob_range_mob == mob then + if not factor then + factor = def._mcl_armor_mob_range_factor + elseif factor == 0 then + return 0 + else + factor = factor * def._mcl_armor_mob_range_factor + end + end + end + end + return factor +end + armor.get_player_skin = function(self, name) local skin = nil if skin_mod == "mcl_skins" then diff --git a/mods/ITEMS/mcl_heads/init.lua b/mods/ITEMS/mcl_heads/init.lua index ba365440..89d938f1 100644 --- a/mods/ITEMS/mcl_heads/init.lua +++ b/mods/ITEMS/mcl_heads/init.lua @@ -2,7 +2,7 @@ local S = minetest.get_translator("mcl_heads") -- Heads system -local function addhead(name, texture, desc, longdesc) +local function addhead(name, texture, desc, longdesc, rangemob, rangefactor) local on_rotate if minetest.get_modpath("screwdriver") then on_rotate = screwdriver.rotate_simple @@ -46,13 +46,16 @@ local function addhead(name, texture, desc, longdesc) on_rotate = on_rotate, _mcl_blast_resistance = 5, _mcl_hardness = 1, + _mcl_armor_mob_range_factor = rangefactor, + _mcl_armor_mob_range_mob = rangemob, + }) end -- Add heads -addhead("zombie", "mcl_heads_zombie_node.png", S("Zombie Head"), S("A zombie head is a small decorative block which resembles the head of a zombie. It can also be worn as a helmet for fun, but does not offer any protection.")) -addhead("creeper", "mcl_heads_creeper_node.png", S("Creeper Head"), S("A creeper head is a small decorative block which resembles the head of a creeper. It can also be worn as a helmet for fun, but does not offer any protection.")) +addhead("zombie", "mcl_heads_zombie_node.png", S("Zombie Head"), S("A zombie head is a small decorative block which resembles the head of a zombie. It can also be worn as a helmet, which reduces the detection range of zombies by 50%."), "mobs_mc:zombie", 0.5) +addhead("creeper", "mcl_heads_creeper_node.png", S("Creeper Head"), S("A creeper head is a small decorative block which resembles the head of a creeper. It can also be worn as a helmet, which reduces the detection range of creepers by 50%."), "mobs_mc:creeper", 0.5) -- Original Minecraft name: “Head” addhead("steve", "mcl_heads_steve_node.png", S("Human Head"), S("A human head is a small decorative block which resembles the head of a human (i.e. a player character). It can also be worn as a helmet for fun, but does not offer any protection.")) -addhead("skeleton", "mcl_heads_skeleton_node.png", S("Skeleton Skull"), S("A skeleton skull is a small decorative block which resembles the skull of a skeleton. It can also be worn as a helmet for fun, but does not offer any protection.")) +addhead("skeleton", "mcl_heads_skeleton_node.png", S("Skeleton Skull"), S("A skeleton skull is a small decorative block which resembles the skull of a skeleton. It can also be worn as a helmet, which reduces the detection range of skeletons by 50%."), "mobs_mc:skeleton", 0.5) addhead("wither_skeleton", "mcl_heads_wither_skeleton_node.png", S("Wither Skeleton Skull"), S("A wither skeleton skull is a small decorative block which resembles the skull of a wither skeleton. It can also be worn as a helmet for fun, but does not offer any protection.")) diff --git a/mods/ITEMS/mcl_heads/locale/mcl_heads.de.tr b/mods/ITEMS/mcl_heads/locale/mcl_heads.de.tr index 0adb187d..75e92aef 100644 --- a/mods/ITEMS/mcl_heads/locale/mcl_heads.de.tr +++ b/mods/ITEMS/mcl_heads/locale/mcl_heads.de.tr @@ -1,11 +1,11 @@ # textdomain: mcl_heads Zombie Head=Zombiekopf -A zombie head is a small decorative block which resembles the head of a zombie. It can also be worn as a helmet for fun, but does not offer any protection.=Ein Zombiekopf ist ein kleiner dekorativer Block, der so wie ein Kopf eines Zombies aussieht. Er kann auch als Helm zum Spaß getragen werden, aber er bietet keinerlei Schutz. +A zombie head is a small decorative block which resembles the head of a zombie. It can also be worn as a helmet, which reduces the detection range of zombies by 50%.=Ein Zombiekopf ist ein kleiner dekorativer Block, der so wie ein Kopf eines Zombies aussieht. Er kann auch als Helm getragen werden, was den Erkennungsradius von Zombies um 50% verringert. Creeper Head=Creeper-Kopf -A creeper head is a small decorative block which resembles the head of a creeper. It can also be worn as a helmet for fun, but does not offer any protection.=Ein Creeper-Kopf ist ein kleiner dekorativer Block, der so wie ein Kopf eines Creepers aussieht. Er kann auch als Helm zum Spaß getragen werden, aber er bietet keinerlei Schutz. +A creeper head is a small decorative block which resembles the head of a creeper. It can also be worn as a helmet, which reduces the detection range of creepers by 50%.=Ein Creeperkopf ist ein kleiner dekorativer Block, der so wie ein Kopf eines Creepers aussieht. Er kann auch als Helm getragen werden, was den Erkennungsradius von Creepern um 50% verringert. Human Head=Menschenkopf A human head is a small decorative block which resembles the head of a human (i.e. a player character). It can also be worn as a helmet for fun, but does not offer any protection.=Ein Menschenkopf ist ein kleiner dekorativer Block, der so wie der Kopf eines Menschen (das heißt, einer Spielerfigur) aussieht. Er kann auch als Helm zum Spaß getragen werden, aber er bietet keinerlei Schutz. Skeleton Skull=Skelettschädel -A skeleton skull is a small decorative block which resembles the skull of a skeleton. It can also be worn as a helmet for fun, but does not offer any protection.=Ein Skelettschädel ist ein kleiner dekorativer Block, der so wie ein Schädel eines Skeletts aussieht. Er kann auch als Helm zum Spaß getragen werden, aber er bietet keinerlei Schutz. +A skeleton skull is a small decorative block which resembles the skull of a skeleton. It can also be worn as a helmet, which reduces the detection range of skeletons by 50%.=Ein Skelettschädel ist ein kleiner dekorativer Block, der so wie ein Schädel eines Skeletts aussieht. Er kann auch als Helm getragen werden, was den Erkennungsradius von Skeletten um 50% verringert. Wither Skeleton Skull=Witherskelettschädel A wither skeleton skull is a small decorative block which resembles the skull of a wither skeleton. It can also be worn as a helmet for fun, but does not offer any protection.=Ein Witherskelettschädel ist ein kleiner dekorativer Block, der so wie ein Schädel eines Witherskeletts aussieht. Er kann auch als Helm zum Spaß getragen werden, aber er bietet keinerlei Schutz. diff --git a/mods/ITEMS/mcl_heads/locale/template.txt b/mods/ITEMS/mcl_heads/locale/template.txt index 7ff69df4..27a4513a 100644 --- a/mods/ITEMS/mcl_heads/locale/template.txt +++ b/mods/ITEMS/mcl_heads/locale/template.txt @@ -1,11 +1,11 @@ # textdomain: mcl_heads Zombie Head= -A zombie head is a small decorative block which resembles the head of a zombie. It can also be worn as a helmet for fun, but does not offer any protection.= +A zombie head is a small decorative block which resembles the head of a zombie. It can also be worn as a helmet, which reduces the detection range of zombies by 50%. Creeper Head= -A creeper head is a small decorative block which resembles the head of a creeper. It can also be worn as a helmet for fun, but does not offer any protection.= +A creeper head is a small decorative block which resembles the head of a creeper. It can also be worn as a helmet, which reduces the detection range of creepers by 50%. Human Head= A human head is a small decorative block which resembles the head of a human (i.e. a player character). It can also be worn as a helmet for fun, but does not offer any protection.= Skeleton Skull= -A skeleton skull is a small decorative block which resembles the skull of a skeleton. It can also be worn as a helmet for fun, but does not offer any protection.= +A skeleton skull is a small decorative block which resembles the skull of a skeleton. It can also be worn as a helmet, which reduces the detection range of skeletons by 50%. Wither Skeleton Skull= A wither skeleton skull is a small decorative block which resembles the skull of a wither skeleton. It can also be worn as a helmet for fun, but does not offer any protection.= From 7ba3616c77b5f1c52a1b3d2de8a8ba957c6ddaed Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 18 Feb 2020 18:13:45 +0100 Subject: [PATCH 530/737] mcl_heads: Clean up whitespace --- mods/ITEMS/mcl_heads/init.lua | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mods/ITEMS/mcl_heads/init.lua b/mods/ITEMS/mcl_heads/init.lua index 89d938f1..266f750b 100644 --- a/mods/ITEMS/mcl_heads/init.lua +++ b/mods/ITEMS/mcl_heads/init.lua @@ -15,8 +15,8 @@ local function addhead(name, texture, desc, longdesc, rangemob, rangefactor) is_ground_content = false, node_box = { type = "fixed", - fixed = { - { -0.25, -0.5, -0.25, 0.25, 0.0, 0.25, }, + fixed = { + { -0.25, -0.5, -0.25, 0.25, 0.0, 0.25, }, }, }, groups = {handy=1, armor_head=1,non_combat_armor=1, head=1, deco_block=1, dig_by_piston=1}, @@ -30,7 +30,7 @@ local function addhead(name, texture, desc, longdesc, rangemob, rangefactor) "[combine:16x16:4,0="..texture, -- right "[combine:16x16:-20,0="..texture, -- back "[combine:16x16:-4,0="..texture, -- front - }, + }, paramtype = "light", stack_max = 64, paramtype2 = "facedir", From 012dd0b86af8df19a4557436e7e2bbcc81a32cbe Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 18 Feb 2020 19:30:33 +0100 Subject: [PATCH 531/737] Add wallmounted heads --- mods/ITEMS/mcl_heads/depends.txt | 1 + mods/ITEMS/mcl_heads/init.lua | 42 +++++++++++++++++++++++++++++++- 2 files changed, 42 insertions(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_heads/depends.txt b/mods/ITEMS/mcl_heads/depends.txt index 976f16ae..60d34245 100644 --- a/mods/ITEMS/mcl_heads/depends.txt +++ b/mods/ITEMS/mcl_heads/depends.txt @@ -1,2 +1,3 @@ mcl_sounds screwdriver? +doc? diff --git a/mods/ITEMS/mcl_heads/init.lua b/mods/ITEMS/mcl_heads/init.lua index 266f750b..c0118ff3 100644 --- a/mods/ITEMS/mcl_heads/init.lua +++ b/mods/ITEMS/mcl_heads/init.lua @@ -1,5 +1,7 @@ local S = minetest.get_translator("mcl_heads") +local mod_doc = minetest.get_modpath("doc") + -- Heads system local function addhead(name, texture, desc, longdesc, rangemob, rangefactor) @@ -11,7 +13,7 @@ local function addhead(name, texture, desc, longdesc, rangemob, rangefactor) minetest.register_node("mcl_heads:"..name, { description = desc, _doc_items_longdesc = longdesc, - drawtype = "nodebox", + drawtype = "nodebox", is_ground_content = false, node_box = { type = "fixed", @@ -50,6 +52,44 @@ local function addhead(name, texture, desc, longdesc, rangemob, rangefactor) _mcl_armor_mob_range_mob = rangemob, }) + + minetest.register_node("mcl_heads:"..name.."_wall", { + _doc_items_create_entry = false, + drawtype = "nodebox", + is_ground_content = false, + node_box = { + type = "wallmounted", + wall_bottom = { -0.25, -0.5, -0.25, 0.25, 0.0, 0.25, }, + wall_top = { -0.25, 0.0, -0.25, 0.25, 0.5, 0.25, }, + wall_side = { -0.5, -0.25, -0.25, 0.0, 0.25, 0.25, }, + }, + groups = {handy=1, head=1, deco_block=1, dig_by_piston=1, not_in_creative_inventory=1}, + -- The head textures are based off the textures of an actual mob. + tiles = { + { name = "[combine:16x16:-4,-4="..texture, align_style = "world" }, -- front + { name = "[combine:16x16:-20,-4="..texture, align_style = "world" }, -- back + { name = "[combine:16x16:-8,-4="..texture, align_style = "world" }, -- left + { name = "[combine:16x16:0,-4="..texture, align_style = "world" }, -- right + { name = "([combine:16x16:-4,0="..texture..")^[transformR180", align_style = "node" }, -- top + { name = "([combine:16x16:-4,8="..texture..")^([combine:16x16:-12,8="..texture..")", align_style = "node" }, -- bottom + }, + paramtype = "light", + stack_max = 64, + paramtype2 = "wallmounted", + sunlight_propagates = true, + walkable = true, + sounds = mcl_sounds.node_sound_defaults({ + footstep = {name="default_hard_footstep", gain=0.3} + }), + drop = "mcl_heads:"..name, + on_rotate = on_rotate, + _mcl_blast_resistance = 5, + _mcl_hardness = 1, + }) + + if mod_doc then + doc.add_entry_alias("nodes", "mcl_heads:" .. name, "nodes", "mcl_heads:" .. name .. "_wall") + end end -- Add heads From bfc5670f0923b0b144126445ba3be0ccf37cf2b2 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 18 Feb 2020 19:51:10 +0100 Subject: [PATCH 532/737] Can place heads at walls --- mods/ITEMS/mcl_heads/init.lua | 42 ++++++++++++++++++++++++++++++++++- 1 file changed, 41 insertions(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_heads/init.lua b/mods/ITEMS/mcl_heads/init.lua index c0118ff3..317b6896 100644 --- a/mods/ITEMS/mcl_heads/init.lua +++ b/mods/ITEMS/mcl_heads/init.lua @@ -45,12 +45,52 @@ local function addhead(name, texture, desc, longdesc, rangemob, rangefactor) sounds = mcl_sounds.node_sound_defaults({ footstep = {name="default_hard_footstep", gain=0.3} }), + on_place = function(itemstack, placer, pointed_thing) + if pointed_thing.type ~= "node" then + -- no interaction possible with entities, for now. + return itemstack + end + + local under = pointed_thing.under + local node = minetest.get_node(under) + local def = minetest.registered_nodes[node.name] + if not def then return itemstack end + + -- Call on_rightclick if the pointed node defines it + if placer and not placer:get_player_control().sneak then + if minetest.registered_nodes[node.name] and minetest.registered_nodes[node.name].on_rightclick then + return minetest.registered_nodes[node.name].on_rightclick(under, node, placer, itemstack) or itemstack + end + end + + local above = pointed_thing.above + local diff = {x = under.x - above.x, y = under.y - above.y, z = under.z - above.z} + local wdir = minetest.dir_to_wallmounted(diff) + + local itemstring = itemstack:get_name() + local fakestack = ItemStack(itemstack) + local idef = fakestack:get_definition() + local retval + if wdir == 0 or wdir == 1 then + return minetest.item_place(itemstack, placer, pointed_thing) + else + retval = fakestack:set_name("mcl_heads:"..name.."_wall") + end + if not retval then + return itemstack + end + + local success + itemstack, success = minetest.item_place(fakestack, placer, pointed_thing, wdir) + itemstack:set_name(itemstring) + return itemstack + end, on_rotate = on_rotate, + _mcl_blast_resistance = 5, _mcl_hardness = 1, _mcl_armor_mob_range_factor = rangefactor, _mcl_armor_mob_range_mob = rangemob, - }) minetest.register_node("mcl_heads:"..name.."_wall", { From 5729d70814e5c1aef9b6e6bf4670ba381d43d94c Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 18 Feb 2020 20:04:15 +0100 Subject: [PATCH 533/737] Add secondary rotation for heads --- mods/ITEMS/mcl_heads/init.lua | 26 +++++++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/mods/ITEMS/mcl_heads/init.lua b/mods/ITEMS/mcl_heads/init.lua index 317b6896..bc55fe49 100644 --- a/mods/ITEMS/mcl_heads/init.lua +++ b/mods/ITEMS/mcl_heads/init.lua @@ -1,13 +1,29 @@ local S = minetest.get_translator("mcl_heads") local mod_doc = minetest.get_modpath("doc") +local mod_screwdriver = minetest.get_modpath("screwdriver") -- Heads system local function addhead(name, texture, desc, longdesc, rangemob, rangefactor) - local on_rotate - if minetest.get_modpath("screwdriver") then - on_rotate = screwdriver.rotate_simple + local on_rotate_floor, on_rotate_wall + if mod_screwdriver then + on_rotate_floor = function(pos, node, user, mode, new_param2) + if mode == screwdriver.ROTATE_AXIS then + node.name = node.name .. "_wall" + node.param2 = minetest.dir_to_wallmounted(minetest.facedir_to_dir(node.param2)) + minetest.set_node(pos, node) + return true + end + end + on_rotate_wall = function(pos, node, user, mode, new_param2) + if mode == screwdriver.ROTATE_AXIS then + node.name = string.sub(node.name, 1, string.len(node.name)-5) + node.param2 = minetest.dir_to_facedir(minetest.wallmounted_to_dir(node.param2)) + minetest.set_node(pos, node) + return true + end + end end minetest.register_node("mcl_heads:"..name, { @@ -85,7 +101,7 @@ local function addhead(name, texture, desc, longdesc, rangemob, rangefactor) itemstack:set_name(itemstring) return itemstack end, - on_rotate = on_rotate, + on_rotate = on_rotate_floor, _mcl_blast_resistance = 5, _mcl_hardness = 1, @@ -122,7 +138,7 @@ local function addhead(name, texture, desc, longdesc, rangemob, rangefactor) footstep = {name="default_hard_footstep", gain=0.3} }), drop = "mcl_heads:"..name, - on_rotate = on_rotate, + on_rotate = on_rotate_wall, _mcl_blast_resistance = 5, _mcl_hardness = 1, }) From 329452d5cee82fdd19ac13b1367e8a9d453e18e8 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 18 Feb 2020 20:10:35 +0100 Subject: [PATCH 534/737] Don't show armor bar for 0 armor --- mods/HUD/mcl_hbarmor/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/HUD/mcl_hbarmor/init.lua b/mods/HUD/mcl_hbarmor/init.lua index 36dad2a5..57978359 100644 --- a/mods/HUD/mcl_hbarmor/init.lua +++ b/mods/HUD/mcl_hbarmor/init.lua @@ -26,7 +26,7 @@ end local must_hide = function(playername, arm) - return ((not armor.def[playername].count or armor.def[playername].count == 0) and arm == 0) + return arm == 0 end local arm_printable = function(arm) From d88fa0c438973b1463d7ffdbe4000afd7fa238c7 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 18 Feb 2020 22:05:08 +0100 Subject: [PATCH 535/737] Can equip/swap armor with rightclick --- mods/ITEMS/mcl_armor/init.lua | 97 +++++++++++++++++++++++++++++++++++ 1 file changed, 97 insertions(+) diff --git a/mods/ITEMS/mcl_armor/init.lua b/mods/ITEMS/mcl_armor/init.lua index 9d4646d9..05b12db2 100644 --- a/mods/ITEMS/mcl_armor/init.lua +++ b/mods/ITEMS/mcl_armor/init.lua @@ -8,6 +8,62 @@ dofile(minetest.get_modpath(minetest.get_current_modname()).."/alias.lua") local longdesc = S("This is a piece of equippable armor which reduces the amount of damage you receive.") local usage = S("To equip it, put it on the corresponding armor slot in your inventory menu.") +local function on_armor_use(itemstack, user, pointed_thing) + if not user or user:is_player() == false then + return itemstack + end + + -- Call on_rightclick if the pointed node defines it + if pointed_thing.type == "node" then + local node = minetest.get_node(pointed_thing.under) + if user and not user:get_player_control().sneak then + if minetest.registered_nodes[node.name] and minetest.registered_nodes[node.name].on_rightclick then + return minetest.registered_nodes[node.name].on_rightclick(pointed_thing.under, node, user, itemstack) or itemstack + end + end + end + + local name, player_inv, armor_inv = armor:get_valid_player(user, "[on_armor_use]") + if not name then + return itemstack + end + + local def = itemstack:get_definition() + local slot + if def.groups and def.groups.armor_head then + slot = 2 + elseif def.groups and def.groups.armor_torso then + slot = 3 + elseif def.groups and def.groups.armor_legs then + slot = 4 + elseif def.groups and def.groups.armor_feet then + slot = 5 + end + + if slot then + local itemstack_single = ItemStack(itemstack) + itemstack_single:set_count(1) + local itemstack_slot = armor_inv:get_stack("armor", slot) + if itemstack_slot:is_empty() then + armor_inv:set_stack("armor", slot, itemstack_single) + player_inv:set_stack("armor", slot, itemstack_single) + armor:set_player_armor(user) + armor:update_inventory(user) + armor:play_equip_sound(user, itemstack_single) + itemstack:take_item() + elseif itemstack:get_count() <= 1 then + armor_inv:set_stack("armor", slot, itemstack_single) + player_inv:set_stack("armor", slot, itemstack_single) + armor:set_player_armor(user) + armor:update_inventory(user) + armor:play_equip_sound(user, itemstack_single) + itemstack = ItemStack(itemstack_slot) + end + end + + return itemstack +end + minetest.register_tool("mcl_armor:helmet_leather", { description = S("Leather Cap"), _doc_items_longdesc = longdesc, @@ -19,6 +75,8 @@ minetest.register_tool("mcl_armor:helmet_leather", { _mcl_armor_equip = "mcl_armor_equip_leather", _mcl_armor_unequip = "mcl_armor_unequip_leather", }, + on_place = on_armor_use, + on_secondary_use = on_armor_use, }) minetest.register_tool("mcl_armor:helmet_iron", { @@ -32,6 +90,9 @@ minetest.register_tool("mcl_armor:helmet_iron", { _mcl_armor_equip = "mcl_armor_equip_iron", _mcl_armor_unequip = "mcl_armor_unequip_iron", }, + + on_place = on_armor_use, + on_secondary_use = on_armor_use, }) minetest.register_tool("mcl_armor:helmet_gold", { @@ -45,6 +106,8 @@ minetest.register_tool("mcl_armor:helmet_gold", { _mcl_armor_equip = "mcl_armor_equip_iron", _mcl_armor_unequip = "mcl_armor_unequip_iron", }, + on_place = on_armor_use, + on_secondary_use = on_armor_use, }) minetest.register_tool("mcl_armor:helmet_diamond",{ @@ -58,6 +121,8 @@ minetest.register_tool("mcl_armor:helmet_diamond",{ _mcl_armor_equip = "mcl_armor_equip_diamond", _mcl_armor_unequip = "mcl_armor_unequip_diamond", }, + on_place = on_armor_use, + on_secondary_use = on_armor_use, }) minetest.register_tool("mcl_armor:helmet_chain", { @@ -71,6 +136,8 @@ minetest.register_tool("mcl_armor:helmet_chain", { _mcl_armor_equip = "mcl_armor_equip_chainmail", _mcl_armor_unequip = "mcl_armor_unequip_chainmail", }, + on_place = on_armor_use, + on_secondary_use = on_armor_use, }) -- Regisiter Torso Armor @@ -86,6 +153,8 @@ minetest.register_tool("mcl_armor:chestplate_leather", { _mcl_armor_equip = "mcl_armor_equip_leather", _mcl_armor_unequip = "mcl_armor_unequip_leather", }, + on_place = on_armor_use, + on_secondary_use = on_armor_use, }) minetest.register_tool("mcl_armor:chestplate_iron", { @@ -99,6 +168,8 @@ minetest.register_tool("mcl_armor:chestplate_iron", { _mcl_armor_equip = "mcl_armor_equip_iron", _mcl_armor_unequip = "mcl_armor_unequip_iron", }, + on_place = on_armor_use, + on_secondary_use = on_armor_use, }) minetest.register_tool("mcl_armor:chestplate_gold", { @@ -112,6 +183,8 @@ minetest.register_tool("mcl_armor:chestplate_gold", { _mcl_armor_equip = "mcl_armor_equip_iron", _mcl_armor_unequip = "mcl_armor_unequip_iron", }, + on_place = on_armor_use, + on_secondary_use = on_armor_use, }) minetest.register_tool("mcl_armor:chestplate_diamond",{ @@ -125,6 +198,8 @@ minetest.register_tool("mcl_armor:chestplate_diamond",{ _mcl_armor_equip = "mcl_armor_equip_diamond", _mcl_armor_unequip = "mcl_armor_unequip_diamond", }, + on_place = on_armor_use, + on_secondary_use = on_armor_use, }) minetest.register_tool("mcl_armor:chestplate_chain", { @@ -138,6 +213,8 @@ minetest.register_tool("mcl_armor:chestplate_chain", { _mcl_armor_equip = "mcl_armor_equip_chainmail", _mcl_armor_unequip = "mcl_armor_unequip_chainmail", }, + on_place = on_armor_use, + on_secondary_use = on_armor_use, }) -- Regisiter Leg Armor @@ -153,6 +230,8 @@ minetest.register_tool("mcl_armor:leggings_leather", { _mcl_armor_equip = "mcl_armor_equip_leather", _mcl_armor_unequip = "mcl_armor_unequip_leather", }, + on_place = on_armor_use, + on_secondary_use = on_armor_use, }) minetest.register_tool("mcl_armor:leggings_iron", { @@ -166,6 +245,8 @@ minetest.register_tool("mcl_armor:leggings_iron", { _mcl_armor_equip = "mcl_armor_equip_iron", _mcl_armor_unequip = "mcl_armor_unequip_iron", }, + on_place = on_armor_use, + on_secondary_use = on_armor_use, }) minetest.register_tool("mcl_armor:leggings_gold", { @@ -179,6 +260,8 @@ minetest.register_tool("mcl_armor:leggings_gold", { _mcl_armor_equip = "mcl_armor_equip_iron", _mcl_armor_unequip = "mcl_armor_unequip_iron", }, + on_place = on_armor_use, + on_secondary_use = on_armor_use, }) minetest.register_tool("mcl_armor:leggings_diamond",{ @@ -192,6 +275,8 @@ minetest.register_tool("mcl_armor:leggings_diamond",{ _mcl_armor_equip = "mcl_armor_equip_diamond", _mcl_armor_unequip = "mcl_armor_unequip_diamond", }, + on_place = on_armor_use, + on_secondary_use = on_armor_use, }) minetest.register_tool("mcl_armor:leggings_chain", { @@ -205,6 +290,8 @@ minetest.register_tool("mcl_armor:leggings_chain", { _mcl_armor_equip = "mcl_armor_equip_chainmail", _mcl_armor_unequip = "mcl_armor_unequip_chainmail", }, + on_place = on_armor_use, + on_secondary_use = on_armor_use, }) -- Regisiter Boots @@ -219,6 +306,8 @@ minetest.register_tool("mcl_armor:boots_leather", { _mcl_armor_equip = "mcl_armor_equip_leather", _mcl_armor_unequip = "mcl_armor_unequip_leather", }, + on_place = on_armor_use, + on_secondary_use = on_armor_use, }) minetest.register_tool("mcl_armor:boots_iron", { @@ -232,6 +321,8 @@ minetest.register_tool("mcl_armor:boots_iron", { _mcl_armor_equip = "mcl_armor_equip_iron", _mcl_armor_unequip = "mcl_armor_unequip_iron", }, + on_place = on_armor_use, + on_secondary_use = on_armor_use, }) minetest.register_tool("mcl_armor:boots_gold", { @@ -245,6 +336,8 @@ minetest.register_tool("mcl_armor:boots_gold", { _mcl_armor_equip = "mcl_armor_equip_iron", _mcl_armor_unequip = "mcl_armor_unequip_iron", }, + on_place = on_armor_use, + on_secondary_use = on_armor_use, }) minetest.register_tool("mcl_armor:boots_diamond",{ @@ -258,6 +351,8 @@ minetest.register_tool("mcl_armor:boots_diamond",{ _mcl_armor_equip = "mcl_armor_equip_diamond", _mcl_armor_unequip = "mcl_armor_unequip_diamond", }, + on_place = on_armor_use, + on_secondary_use = on_armor_use, }) minetest.register_tool("mcl_armor:boots_chain", { @@ -271,6 +366,8 @@ minetest.register_tool("mcl_armor:boots_chain", { _mcl_armor_equip = "mcl_armor_equip_chainmail", _mcl_armor_unequip = "mcl_armor_unequip_chainmail", }, + on_place = on_armor_use, + on_secondary_use = on_armor_use, }) -- Register Craft Recipies From 6426e55746319fc843fe9e505b95de706522668a Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 18 Feb 2020 22:17:52 +0100 Subject: [PATCH 536/737] Add on_secondary_use for heads and pumpkin --- mods/ITEMS/mcl_armor/armor.lua | 63 ++++++++ mods/ITEMS/mcl_armor/init.lua | 136 ++++++------------ mods/ITEMS/mcl_farming/depends.txt | 1 + .../mcl_farming/locale/mcl_farming.de.tr | 2 +- mods/ITEMS/mcl_farming/locale/template.txt | 2 +- mods/ITEMS/mcl_farming/pumpkin.lua | 7 +- mods/ITEMS/mcl_heads/depends.txt | 1 + mods/ITEMS/mcl_heads/init.lua | 9 +- 8 files changed, 120 insertions(+), 101 deletions(-) diff --git a/mods/ITEMS/mcl_armor/armor.lua b/mods/ITEMS/mcl_armor/armor.lua index ecb07e1c..c51001c8 100644 --- a/mods/ITEMS/mcl_armor/armor.lua +++ b/mods/ITEMS/mcl_armor/armor.lua @@ -32,6 +32,69 @@ elseif minetest.get_modpath("wardrobe") then skin_mod = "wardrobe" end +function armor.on_armor_use(itemstack, user, pointed_thing) + if not user or user:is_player() == false then + return itemstack + end + + -- Call on_rightclick if the pointed node defines it + if pointed_thing.type == "node" then + local node = minetest.get_node(pointed_thing.under) + if user and not user:get_player_control().sneak then + if minetest.registered_nodes[node.name] and minetest.registered_nodes[node.name].on_rightclick then + return minetest.registered_nodes[node.name].on_rightclick(pointed_thing.under, node, user, itemstack) or itemstack + end + end + end + + local name, player_inv, armor_inv = armor:get_valid_player(user, "[on_armor_use]") + if not name then + return itemstack + end + + local def = itemstack:get_definition() + local slot + if def.groups and def.groups.armor_head then + slot = 2 + elseif def.groups and def.groups.armor_torso then + slot = 3 + elseif def.groups and def.groups.armor_legs then + slot = 4 + elseif def.groups and def.groups.armor_feet then + slot = 5 + end + + if slot then + local itemstack_single = ItemStack(itemstack) + itemstack_single:set_count(1) + local itemstack_slot = armor_inv:get_stack("armor", slot) + if itemstack_slot:is_empty() then + armor_inv:set_stack("armor", slot, itemstack_single) + player_inv:set_stack("armor", slot, itemstack_single) + armor:set_player_armor(user) + armor:update_inventory(user) + armor:play_equip_sound(user, itemstack_single) + itemstack:take_item() + elseif itemstack:get_count() <= 1 then + armor_inv:set_stack("armor", slot, itemstack_single) + player_inv:set_stack("armor", slot, itemstack_single) + armor:set_player_armor(user) + armor:update_inventory(user) + armor:play_equip_sound(user, itemstack_single) + itemstack = ItemStack(itemstack_slot) + elseif itemstack:get_count() <= 1 then + armor_inv:set_stack("armor", slot, itemstack_single) + player_inv:set_stack("armor", slot, itemstack_single) + armor:set_player_armor(user) + armor:update_inventory(user) + armor:play_equip_sound(user, itemstack_single) + itemstack = ItemStack(itemstack_slot) + end + end + + return itemstack +end + armor.def = { count = 0, } diff --git a/mods/ITEMS/mcl_armor/init.lua b/mods/ITEMS/mcl_armor/init.lua index 05b12db2..1eb03d32 100644 --- a/mods/ITEMS/mcl_armor/init.lua +++ b/mods/ITEMS/mcl_armor/init.lua @@ -8,62 +8,6 @@ dofile(minetest.get_modpath(minetest.get_current_modname()).."/alias.lua") local longdesc = S("This is a piece of equippable armor which reduces the amount of damage you receive.") local usage = S("To equip it, put it on the corresponding armor slot in your inventory menu.") -local function on_armor_use(itemstack, user, pointed_thing) - if not user or user:is_player() == false then - return itemstack - end - - -- Call on_rightclick if the pointed node defines it - if pointed_thing.type == "node" then - local node = minetest.get_node(pointed_thing.under) - if user and not user:get_player_control().sneak then - if minetest.registered_nodes[node.name] and minetest.registered_nodes[node.name].on_rightclick then - return minetest.registered_nodes[node.name].on_rightclick(pointed_thing.under, node, user, itemstack) or itemstack - end - end - end - - local name, player_inv, armor_inv = armor:get_valid_player(user, "[on_armor_use]") - if not name then - return itemstack - end - - local def = itemstack:get_definition() - local slot - if def.groups and def.groups.armor_head then - slot = 2 - elseif def.groups and def.groups.armor_torso then - slot = 3 - elseif def.groups and def.groups.armor_legs then - slot = 4 - elseif def.groups and def.groups.armor_feet then - slot = 5 - end - - if slot then - local itemstack_single = ItemStack(itemstack) - itemstack_single:set_count(1) - local itemstack_slot = armor_inv:get_stack("armor", slot) - if itemstack_slot:is_empty() then - armor_inv:set_stack("armor", slot, itemstack_single) - player_inv:set_stack("armor", slot, itemstack_single) - armor:set_player_armor(user) - armor:update_inventory(user) - armor:play_equip_sound(user, itemstack_single) - itemstack:take_item() - elseif itemstack:get_count() <= 1 then - armor_inv:set_stack("armor", slot, itemstack_single) - player_inv:set_stack("armor", slot, itemstack_single) - armor:set_player_armor(user) - armor:update_inventory(user) - armor:play_equip_sound(user, itemstack_single) - itemstack = ItemStack(itemstack_slot) - end - end - - return itemstack -end - minetest.register_tool("mcl_armor:helmet_leather", { description = S("Leather Cap"), _doc_items_longdesc = longdesc, @@ -75,8 +19,8 @@ minetest.register_tool("mcl_armor:helmet_leather", { _mcl_armor_equip = "mcl_armor_equip_leather", _mcl_armor_unequip = "mcl_armor_unequip_leather", }, - on_place = on_armor_use, - on_secondary_use = on_armor_use, + on_place = armor.on_armor_use, + on_secondary_use = armor.on_armor_use, }) minetest.register_tool("mcl_armor:helmet_iron", { @@ -91,8 +35,8 @@ minetest.register_tool("mcl_armor:helmet_iron", { _mcl_armor_unequip = "mcl_armor_unequip_iron", }, - on_place = on_armor_use, - on_secondary_use = on_armor_use, + on_place = armor.on_armor_use, + on_secondary_use = armor.on_armor_use, }) minetest.register_tool("mcl_armor:helmet_gold", { @@ -106,8 +50,8 @@ minetest.register_tool("mcl_armor:helmet_gold", { _mcl_armor_equip = "mcl_armor_equip_iron", _mcl_armor_unequip = "mcl_armor_unequip_iron", }, - on_place = on_armor_use, - on_secondary_use = on_armor_use, + on_place = armor.on_armor_use, + on_secondary_use = armor.on_armor_use, }) minetest.register_tool("mcl_armor:helmet_diamond",{ @@ -121,8 +65,8 @@ minetest.register_tool("mcl_armor:helmet_diamond",{ _mcl_armor_equip = "mcl_armor_equip_diamond", _mcl_armor_unequip = "mcl_armor_unequip_diamond", }, - on_place = on_armor_use, - on_secondary_use = on_armor_use, + on_place = armor.on_armor_use, + on_secondary_use = armor.on_armor_use, }) minetest.register_tool("mcl_armor:helmet_chain", { @@ -136,8 +80,8 @@ minetest.register_tool("mcl_armor:helmet_chain", { _mcl_armor_equip = "mcl_armor_equip_chainmail", _mcl_armor_unequip = "mcl_armor_unequip_chainmail", }, - on_place = on_armor_use, - on_secondary_use = on_armor_use, + on_place = armor.on_armor_use, + on_secondary_use = armor.on_armor_use, }) -- Regisiter Torso Armor @@ -153,8 +97,8 @@ minetest.register_tool("mcl_armor:chestplate_leather", { _mcl_armor_equip = "mcl_armor_equip_leather", _mcl_armor_unequip = "mcl_armor_unequip_leather", }, - on_place = on_armor_use, - on_secondary_use = on_armor_use, + on_place = armor.on_armor_use, + on_secondary_use = armor.on_armor_use, }) minetest.register_tool("mcl_armor:chestplate_iron", { @@ -168,8 +112,8 @@ minetest.register_tool("mcl_armor:chestplate_iron", { _mcl_armor_equip = "mcl_armor_equip_iron", _mcl_armor_unequip = "mcl_armor_unequip_iron", }, - on_place = on_armor_use, - on_secondary_use = on_armor_use, + on_place = armor.on_armor_use, + on_secondary_use = armor.on_armor_use, }) minetest.register_tool("mcl_armor:chestplate_gold", { @@ -183,8 +127,8 @@ minetest.register_tool("mcl_armor:chestplate_gold", { _mcl_armor_equip = "mcl_armor_equip_iron", _mcl_armor_unequip = "mcl_armor_unequip_iron", }, - on_place = on_armor_use, - on_secondary_use = on_armor_use, + on_place = armor.on_armor_use, + on_secondary_use = armor.on_armor_use, }) minetest.register_tool("mcl_armor:chestplate_diamond",{ @@ -198,8 +142,8 @@ minetest.register_tool("mcl_armor:chestplate_diamond",{ _mcl_armor_equip = "mcl_armor_equip_diamond", _mcl_armor_unequip = "mcl_armor_unequip_diamond", }, - on_place = on_armor_use, - on_secondary_use = on_armor_use, + on_place = armor.on_armor_use, + on_secondary_use = armor.on_armor_use, }) minetest.register_tool("mcl_armor:chestplate_chain", { @@ -213,8 +157,8 @@ minetest.register_tool("mcl_armor:chestplate_chain", { _mcl_armor_equip = "mcl_armor_equip_chainmail", _mcl_armor_unequip = "mcl_armor_unequip_chainmail", }, - on_place = on_armor_use, - on_secondary_use = on_armor_use, + on_place = armor.on_armor_use, + on_secondary_use = armor.on_armor_use, }) -- Regisiter Leg Armor @@ -230,8 +174,8 @@ minetest.register_tool("mcl_armor:leggings_leather", { _mcl_armor_equip = "mcl_armor_equip_leather", _mcl_armor_unequip = "mcl_armor_unequip_leather", }, - on_place = on_armor_use, - on_secondary_use = on_armor_use, + on_place = armor.on_armor_use, + on_secondary_use = armor.on_armor_use, }) minetest.register_tool("mcl_armor:leggings_iron", { @@ -245,8 +189,8 @@ minetest.register_tool("mcl_armor:leggings_iron", { _mcl_armor_equip = "mcl_armor_equip_iron", _mcl_armor_unequip = "mcl_armor_unequip_iron", }, - on_place = on_armor_use, - on_secondary_use = on_armor_use, + on_place = armor.on_armor_use, + on_secondary_use = armor.on_armor_use, }) minetest.register_tool("mcl_armor:leggings_gold", { @@ -260,8 +204,8 @@ minetest.register_tool("mcl_armor:leggings_gold", { _mcl_armor_equip = "mcl_armor_equip_iron", _mcl_armor_unequip = "mcl_armor_unequip_iron", }, - on_place = on_armor_use, - on_secondary_use = on_armor_use, + on_place = armor.on_armor_use, + on_secondary_use = armor.on_armor_use, }) minetest.register_tool("mcl_armor:leggings_diamond",{ @@ -275,8 +219,8 @@ minetest.register_tool("mcl_armor:leggings_diamond",{ _mcl_armor_equip = "mcl_armor_equip_diamond", _mcl_armor_unequip = "mcl_armor_unequip_diamond", }, - on_place = on_armor_use, - on_secondary_use = on_armor_use, + on_place = armor.on_armor_use, + on_secondary_use = armor.on_armor_use, }) minetest.register_tool("mcl_armor:leggings_chain", { @@ -290,8 +234,8 @@ minetest.register_tool("mcl_armor:leggings_chain", { _mcl_armor_equip = "mcl_armor_equip_chainmail", _mcl_armor_unequip = "mcl_armor_unequip_chainmail", }, - on_place = on_armor_use, - on_secondary_use = on_armor_use, + on_place = armor.on_armor_use, + on_secondary_use = armor.on_armor_use, }) -- Regisiter Boots @@ -306,8 +250,8 @@ minetest.register_tool("mcl_armor:boots_leather", { _mcl_armor_equip = "mcl_armor_equip_leather", _mcl_armor_unequip = "mcl_armor_unequip_leather", }, - on_place = on_armor_use, - on_secondary_use = on_armor_use, + on_place = armor.on_armor_use, + on_secondary_use = armor.on_armor_use, }) minetest.register_tool("mcl_armor:boots_iron", { @@ -321,8 +265,8 @@ minetest.register_tool("mcl_armor:boots_iron", { _mcl_armor_equip = "mcl_armor_equip_iron", _mcl_armor_unequip = "mcl_armor_unequip_iron", }, - on_place = on_armor_use, - on_secondary_use = on_armor_use, + on_place = armor.on_armor_use, + on_secondary_use = armor.on_armor_use, }) minetest.register_tool("mcl_armor:boots_gold", { @@ -336,8 +280,8 @@ minetest.register_tool("mcl_armor:boots_gold", { _mcl_armor_equip = "mcl_armor_equip_iron", _mcl_armor_unequip = "mcl_armor_unequip_iron", }, - on_place = on_armor_use, - on_secondary_use = on_armor_use, + on_place = armor.on_armor_use, + on_secondary_use = armor.on_armor_use, }) minetest.register_tool("mcl_armor:boots_diamond",{ @@ -351,8 +295,8 @@ minetest.register_tool("mcl_armor:boots_diamond",{ _mcl_armor_equip = "mcl_armor_equip_diamond", _mcl_armor_unequip = "mcl_armor_unequip_diamond", }, - on_place = on_armor_use, - on_secondary_use = on_armor_use, + on_place = armor.on_armor_use, + on_secondary_use = armor.on_armor_use, }) minetest.register_tool("mcl_armor:boots_chain", { @@ -366,8 +310,8 @@ minetest.register_tool("mcl_armor:boots_chain", { _mcl_armor_equip = "mcl_armor_equip_chainmail", _mcl_armor_unequip = "mcl_armor_unequip_chainmail", }, - on_place = on_armor_use, - on_secondary_use = on_armor_use, + on_place = armor.on_armor_use, + on_secondary_use = armor.on_armor_use, }) -- Register Craft Recipies diff --git a/mods/ITEMS/mcl_farming/depends.txt b/mods/ITEMS/mcl_farming/depends.txt index 1d455601..0ed4f3f5 100644 --- a/mods/ITEMS/mcl_farming/depends.txt +++ b/mods/ITEMS/mcl_farming/depends.txt @@ -3,5 +3,6 @@ mcl_sounds mcl_wool mcl_torches mcl_weather +mcl_armor? mobs_mc doc? diff --git a/mods/ITEMS/mcl_farming/locale/mcl_farming.de.tr b/mods/ITEMS/mcl_farming/locale/mcl_farming.de.tr index 7f14774c..bdf9c9ea 100644 --- a/mods/ITEMS/mcl_farming/locale/mcl_farming.de.tr +++ b/mods/ITEMS/mcl_farming/locale/mcl_farming.de.tr @@ -66,7 +66,7 @@ A mature pumpkin stem attempts to grow a pumpkin at one of its four adjacent blo Faceless Pumpkin=Gesichtsloser Kürbis A faceless pumpkin is a decorative block. It can be carved with shears to obtain pumpkin seeds.=Ein gesichtsloser Kürbis ist ein dekorativer Block. Mit einer Schere kann man in ihm ein Muster schnitzen, um Kürbissamen zu erhalten. Pumpkin=Kürbis -A pumpkin can be worn as a helmet for fun, but it doesn't offer any protection. Pumpkins grow from pumpkin stems, which in turn grow from pumpkin seeds.=Einen Kürbis kann zum Spaß als Helm getragen werden, aber er bietet keinen Schutz. Kürbisse wachsen aus Kürbisstängeln, welche wiederum aus Kürbissamen wachsen. +A pumpkin can be worn as a helmet. Pumpkins grow from pumpkin stems, which in turn grow from pumpkin seeds.=Einen Kürbis kann zum Spaß als Helm getragen werden, aber er bietet keinen Schutz. Kürbisse wachsen aus Kürbisstängeln, welche wiederum aus Kürbissamen wachsen. Jack o'Lantern=Kürbislaterne A jack o'lantern is a traditional Halloween decoration made from a pumpkin. It glows brightly.=Eine Kürbislaterne ist eine traditionelle Dekoration für Halloween. Sie leuchtet hell. Pumpkin Pie=Kürbiskuchen diff --git a/mods/ITEMS/mcl_farming/locale/template.txt b/mods/ITEMS/mcl_farming/locale/template.txt index fb124df6..e0b73dda 100644 --- a/mods/ITEMS/mcl_farming/locale/template.txt +++ b/mods/ITEMS/mcl_farming/locale/template.txt @@ -66,7 +66,7 @@ A mature pumpkin stem attempts to grow a pumpkin at one of its four adjacent blo Faceless Pumpkin= A faceless pumpkin is a decorative block. It can be carved with shears to obtain pumpkin seeds.= Pumpkin= -A pumpkin can be worn as a helmet for fun, but it doesn't offer any protection. Pumpkins grow from pumpkin stems, which in turn grow from pumpkin seeds.= +A pumpkin can be worn as a helmet. Pumpkins grow from pumpkin stems, which in turn grow from pumpkin seeds.= Jack o'Lantern= A jack o'lantern is a traditional Halloween decoration made from a pumpkin. It glows brightly.= Pumpkin Pie= diff --git a/mods/ITEMS/mcl_farming/pumpkin.lua b/mods/ITEMS/mcl_farming/pumpkin.lua index dae762ad..d90b6e18 100644 --- a/mods/ITEMS/mcl_farming/pumpkin.lua +++ b/mods/ITEMS/mcl_farming/pumpkin.lua @@ -107,11 +107,16 @@ minetest.register_node("mcl_farming:pumpkin", pumpkin_base_def) local pumpkin_face_base_def = table.copy(pumpkin_base_def) pumpkin_face_base_def.description = S("Pumpkin") -pumpkin_face_base_def._doc_items_longdesc = S("A pumpkin can be worn as a helmet for fun, but it doesn't offer any protection. Pumpkins grow from pumpkin stems, which in turn grow from pumpkin seeds.") +pumpkin_face_base_def._doc_items_longdesc = S("A pumpkin can be worn as a helmet. Pumpkins grow from pumpkin stems, which in turn grow from pumpkin seeds.") pumpkin_face_base_def._doc_items_usagehelp = nil pumpkin_face_base_def.tiles = {"farming_pumpkin_top.png", "farming_pumpkin_top.png", "farming_pumpkin_side.png", "farming_pumpkin_side.png", "farming_pumpkin_side.png", "farming_pumpkin_face.png"} pumpkin_face_base_def.groups.armor_head=1 +pumpkin_face_base_def._mcl_armor_mob_range_factor = 0 +pumpkin_face_base_def._mcl_armor_mob_range_mob = "mobs_mc:enderman" pumpkin_face_base_def.groups.non_combat_armor=1 +if minetest.get_modpath("mcl_armor") then + pumpkin_face_base_def.on_secondary_use = armor.on_armor_use +end -- Register stem growth mcl_farming:add_plant("plant_pumpkin_stem", "mcl_farming:pumpkintige_unconnect", {"mcl_farming:pumpkin_1", "mcl_farming:pumpkin_2", "mcl_farming:pumpkin_3", "mcl_farming:pumpkin_4", "mcl_farming:pumpkin_5", "mcl_farming:pumpkin_6", "mcl_farming:pumpkin_7"}, 30, 5) diff --git a/mods/ITEMS/mcl_heads/depends.txt b/mods/ITEMS/mcl_heads/depends.txt index 60d34245..01846722 100644 --- a/mods/ITEMS/mcl_heads/depends.txt +++ b/mods/ITEMS/mcl_heads/depends.txt @@ -1,3 +1,4 @@ mcl_sounds +mcl_armor? screwdriver? doc? diff --git a/mods/ITEMS/mcl_heads/init.lua b/mods/ITEMS/mcl_heads/init.lua index bc55fe49..ffc768f7 100644 --- a/mods/ITEMS/mcl_heads/init.lua +++ b/mods/ITEMS/mcl_heads/init.lua @@ -3,6 +3,11 @@ local S = minetest.get_translator("mcl_heads") local mod_doc = minetest.get_modpath("doc") local mod_screwdriver = minetest.get_modpath("screwdriver") +local equip_armor +if minetest.get_modpath("mcl_armor") then + equip_armor = armor.on_armor_use +end + -- Heads system local function addhead(name, texture, desc, longdesc, rangemob, rangefactor) @@ -101,12 +106,12 @@ local function addhead(name, texture, desc, longdesc, rangemob, rangefactor) itemstack:set_name(itemstring) return itemstack end, + on_secondary_use = equip_armor, + on_rotate = on_rotate_floor, _mcl_blast_resistance = 5, _mcl_hardness = 1, - _mcl_armor_mob_range_factor = rangefactor, - _mcl_armor_mob_range_mob = rangemob, }) minetest.register_node("mcl_heads:"..name.."_wall", { From 565806558cc095fdf101b6774f572d42879105c3 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 18 Feb 2020 22:33:58 +0100 Subject: [PATCH 537/737] Play armor equip sound when armor got dispensed --- mods/ITEMS/REDSTONE/mcl_dispensers/init.lua | 2 ++ mods/ITEMS/mcl_armor/armor.lua | 25 +++++++++------------ mods/ITEMS/mcl_armor_stand/init.lua | 4 ++-- 3 files changed, 15 insertions(+), 16 deletions(-) diff --git a/mods/ITEMS/REDSTONE/mcl_dispensers/init.lua b/mods/ITEMS/REDSTONE/mcl_dispensers/init.lua index 5dd0a6a2..cc8d7b66 100644 --- a/mods/ITEMS/REDSTONE/mcl_dispensers/init.lua +++ b/mods/ITEMS/REDSTONE/mcl_dispensers/init.lua @@ -169,6 +169,7 @@ local dispenserdef = { minetest.registered_nodes["mcl_armor_stand:armor_stand"].on_metadata_inventory_put(standpos) stack:take_item() inv:set_stack("main", stack_id, stack) + armor:play_equip_sound(dropitem, nil, standpos) armor_dispensed = true end else @@ -202,6 +203,7 @@ local dispenserdef = { pinv:set_stack("armor", armor_slot, dropitem) armor:set_player_armor(player) armor:update_inventory(player) + armor:play_equip_sound(dropitem, player) stack:take_item() inv:set_stack("main", stack_id, stack) diff --git a/mods/ITEMS/mcl_armor/armor.lua b/mods/ITEMS/mcl_armor/armor.lua index c51001c8..ebed8208 100644 --- a/mods/ITEMS/mcl_armor/armor.lua +++ b/mods/ITEMS/mcl_armor/armor.lua @@ -73,21 +73,14 @@ function armor.on_armor_use(itemstack, user, pointed_thing) player_inv:set_stack("armor", slot, itemstack_single) armor:set_player_armor(user) armor:update_inventory(user) - armor:play_equip_sound(user, itemstack_single) + armor:play_equip_sound(itemstack_single, user) itemstack:take_item() elseif itemstack:get_count() <= 1 then armor_inv:set_stack("armor", slot, itemstack_single) player_inv:set_stack("armor", slot, itemstack_single) armor:set_player_armor(user) armor:update_inventory(user) - armor:play_equip_sound(user, itemstack_single) - itemstack = ItemStack(itemstack_slot) - elseif itemstack:get_count() <= 1 then - armor_inv:set_stack("armor", slot, itemstack_single) - player_inv:set_stack("armor", slot, itemstack_single) - armor:set_player_armor(user) - armor:update_inventory(user) - armor:play_equip_sound(user, itemstack_single) + armor:play_equip_sound(itemstack_single, user) itemstack = ItemStack(itemstack_slot) end end @@ -313,7 +306,7 @@ armor.get_valid_player = function(self, player, msg) return name, player_inv, armor_inv, pos end -armor.play_equip_sound = function(self, player, stack, unequip) +armor.play_equip_sound = function(self, stack, player, pos, unequip) local def = stack:get_definition() local estr = "equip" if unequip then @@ -325,7 +318,11 @@ armor.play_equip_sound = function(self, player, stack, unequip) snd = { name = "mcl_armor_"..estr.."_generic" } end if snd then - minetest.sound_play(snd, {object=player, gain=0.5, max_hear_distance=8}) + local dist = 8 + if pos then + dist = 16 + end + minetest.sound_play(snd, {object=player, pos=pos, gain=0.5, max_hear_distance=dist}) end end @@ -382,13 +379,13 @@ minetest.register_on_joinplayer(function(player) player:get_inventory():set_stack(listname, index, stack) armor:set_player_armor(player) armor:update_inventory(player) - armor:play_equip_sound(player, stack) + armor:play_equip_sound(stack, 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) - armor:play_equip_sound(player, stack, true) + armor:play_equip_sound(stack, player, nil, true) end, on_move = function(inv, from_list, from_index, to_list, to_index, count, player) local plaver_inv = player:get_inventory() @@ -397,7 +394,7 @@ minetest.register_on_joinplayer(function(player) player_inv:set_stack(from_list, from_index, nil) armor:set_player_armor(player) armor:update_inventory(player) - armor:play_equip_sound(player, stack) + armor:play_equip_sound(stack, player) end, allow_put = function(inv, listname, index, stack, player) local iname = stack:get_name() diff --git a/mods/ITEMS/mcl_armor_stand/init.lua b/mods/ITEMS/mcl_armor_stand/init.lua index 72436330..64b25721 100644 --- a/mods/ITEMS/mcl_armor_stand/init.lua +++ b/mods/ITEMS/mcl_armor_stand/init.lua @@ -149,7 +149,7 @@ minetest.register_node("mcl_armor_stand:armor_stand", { single_item:set_count(1) if inv:is_empty(list) then inv:add_item(list, single_item) - armor:play_equip_sound(clicker, single_item) + armor:play_equip_sound(single_item, nil, pos) update_entity(pos) itemstack:take_item() return itemstack @@ -174,7 +174,7 @@ minetest.register_node("mcl_armor_stand:armor_stand", { taken = true end if taken then - armor:play_equip_sound(clicker, stand_armor, true) + armor:play_equip_sound(stand_armor, nil, pos, true) stand_armor:take_item() inv:set_stack("armor_" .. elements[e], 1, stand_armor) end From 31186731166917515d0a30d2e87fcd043366f751 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 18 Feb 2020 23:49:35 +0100 Subject: [PATCH 538/737] Play sound for equipping horse armor or saddle --- mods/ENTITIES/mobs_mc/1_items_default.lua | 9 +++++++++ mods/ENTITIES/mobs_mc/horse.lua | 6 +++++- mods/ENTITIES/mobs_mc/pig.lua | 1 + 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/mods/ENTITIES/mobs_mc/1_items_default.lua b/mods/ENTITIES/mobs_mc/1_items_default.lua index f0e1301e..687c0ac1 100644 --- a/mods/ENTITIES/mobs_mc/1_items_default.lua +++ b/mods/ENTITIES/mobs_mc/1_items_default.lua @@ -283,6 +283,9 @@ if c("iron_horse_armor") then _doc_items_usagehelp = horse_armor_use, inventory_image = "mobs_mc_iron_horse_armor.png", _horse_overlay_image = "mobs_mc_horse_armor_iron.png", + sounds = { + _mcl_armor_equip = "mcl_armor_equip_iron", + }, stack_max = 1, groups = { horse_armor = 85 }, }) @@ -294,6 +297,9 @@ if c("gold_horse_armor") then _doc_items_usagehelp = horse_armor_use, inventory_image = "mobs_mc_gold_horse_armor.png", _horse_overlay_image = "mobs_mc_horse_armor_gold.png", + sounds = { + _mcl_armor_equip = "mcl_armor_equip_iron", + }, stack_max = 1, groups = { horse_armor = 60 }, }) @@ -305,6 +311,9 @@ if c("diamond_horse_armor") then _doc_items_usagehelp = horse_armor_use, inventory_image = "mobs_mc_diamond_horse_armor.png", _horse_overlay_image = "mobs_mc_horse_armor_diamond.png", + sounds = { + _mcl_armor_equip = "mcl_armor_equip_diamond", + }, stack_max = 1, groups = { horse_armor = 45 }, }) diff --git a/mods/ENTITIES/mobs_mc/horse.lua b/mods/ENTITIES/mobs_mc/horse.lua index bf95fa84..c16f6208 100644 --- a/mods/ENTITIES/mobs_mc/horse.lua +++ b/mods/ENTITIES/mobs_mc/horse.lua @@ -223,6 +223,7 @@ local horse = { local tex = horse_extra_texture(self) self.base_texture = tex self.object:set_properties({textures = self.base_texture}) + minetest.sound_play({name = "mcl_armor_equip_leather"}, {gain=0.5, max_hear_distance=12, pos=self.object:get_pos()}) -- Put on horse armor if tamed elseif can_equip_horse_armor(self.name) and not self.driver and not self._horse_armor @@ -252,7 +253,10 @@ local horse = { local tex = horse_extra_texture(self) self.base_texture = tex self.object:set_properties({textures = self.base_texture}) - + local def = w:get_definition() + if def.sounds and def.sounds._mcl_armor_equip then + minetest.sound_play({name = def.sounds._mcl_armor_equip}, {gain=0.5, max_hear_distance=12, pos=self.object:get_pos()}) + end -- Mount horse elseif not self.driver and self._saddle then diff --git a/mods/ENTITIES/mobs_mc/pig.lua b/mods/ENTITIES/mobs_mc/pig.lua index 768a3052..1d9c56b1 100644 --- a/mods/ENTITIES/mobs_mc/pig.lua +++ b/mods/ENTITIES/mobs_mc/pig.lua @@ -125,6 +125,7 @@ mobs:register_mob("mobs_mc:pig", { stack:take_item() inv:set_stack("main", clicker:get_wield_index(), stack) end + minetest.sound_play({name = "mcl_armor_equip_leather"}, {gain=0.5, max_hear_distance=8, pos=self.object:get_pos()}) return end From 604e1c4d195b0fbf703911da077bb2456ada6eff Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 18 Feb 2020 23:53:33 +0100 Subject: [PATCH 539/737] Link eating sound back to object again --- mods/PLAYER/mcl_hunger/hunger.lua | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/mods/PLAYER/mcl_hunger/hunger.lua b/mods/PLAYER/mcl_hunger/hunger.lua index 53799a05..eacec1bc 100644 --- a/mods/PLAYER/mcl_hunger/hunger.lua +++ b/mods/PLAYER/mcl_hunger/hunger.lua @@ -148,9 +148,7 @@ function mcl_hunger.item_eat(hunger_change, replace_with_item, poisontime, poiso max_hear_distance = 12, gain = 1.0, pitch = 1 + math.random(-10, 10)*0.005, - -- FIXME: Should be linked to object, but it's broken in Minetest 5.1.0 - -- See https://github.com/minetest/minetest/issues/9183 - pos = pos, + object = user, }) else -- Assume the item is a food @@ -189,9 +187,7 @@ function mcl_hunger.item_eat(hunger_change, replace_with_item, poisontime, poiso max_hear_distance = 12, gain = 1.0, pitch = 1 + math.random(-10, 10)*0.005, - -- FIXME: Should be linked to object, but it's broken in Minetest 5.1.0 - -- See https://github.com/minetest/minetest/issues/9183 - pos = pos, + object = user, }) end From 71cee9920aedcbbb6f0ab4ee75101ee3a250c7e5 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Wed, 19 Feb 2020 03:02:45 +0100 Subject: [PATCH 540/737] Heads: Add back armor def fields --- mods/ITEMS/mcl_heads/init.lua | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mods/ITEMS/mcl_heads/init.lua b/mods/ITEMS/mcl_heads/init.lua index ffc768f7..b20d696a 100644 --- a/mods/ITEMS/mcl_heads/init.lua +++ b/mods/ITEMS/mcl_heads/init.lua @@ -110,6 +110,8 @@ local function addhead(name, texture, desc, longdesc, rangemob, rangefactor) on_rotate = on_rotate_floor, + _mcl_armor_mob_range_mob = rangemob, + _mcl_armor_mob_range_factor = rangefactor, _mcl_blast_resistance = 5, _mcl_hardness = 1, }) From ba74546d484e38c1439bb53ce3611ba4e74b35a4 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Wed, 19 Feb 2020 04:54:17 +0100 Subject: [PATCH 541/737] Add extended tooltips --- mods/ENTITIES/mcl_boats/init.lua | 4 +- mods/ENTITIES/mcl_minecarts/init.lua | 16 +- mods/ENTITIES/mcl_minecarts/rails.lua | 4 + mods/ENTITIES/mcl_mobs/crafts.lua | 1 + mods/ENTITIES/mobs_mc/1_items_default.lua | 1 + mods/HELP/doc/doc_identifier/init.lua | 1 + mods/HELP/mcl_tt/depends.txt | 1 + mods/HELP/mcl_tt/init.lua | 103 +++++++++ mods/HELP/tt/API.md | 33 +++ mods/HELP/tt/README.md | 12 + mods/HELP/tt/init.lua | 55 +++++ mods/HELP/tt/locale/template.txt | 27 +++ mods/HELP/tt/locale/tt.de.tr | 27 +++ mods/HELP/tt/mod.conf | 2 + mods/HELP/tt/snippets_builtin.lua | 210 ++++++++++++++++++ mods/HELP/tt/snippets_core.lua | 11 + mods/ITEMS/REDSTONE/mcl_dispensers/init.lua | 1 + mods/ITEMS/REDSTONE/mcl_droppers/init.lua | 1 + mods/ITEMS/REDSTONE/mcl_observers/init.lua | 1 + mods/ITEMS/REDSTONE/mesecons_button/init.lua | 7 +- .../REDSTONE/mesecons_commandblock/init.lua | 1 + mods/ITEMS/REDSTONE/mesecons_delayer/init.lua | 4 +- .../REDSTONE/mesecons_lightstone/init.lua | 1 + .../REDSTONE/mesecons_noteblock/init.lua | 1 + mods/ITEMS/REDSTONE/mesecons_pistons/init.lua | 2 + .../REDSTONE/mesecons_pressureplates/init.lua | 11 + .../REDSTONE/mesecons_solarpanel/init.lua | 1 + mods/ITEMS/REDSTONE/mesecons_torch/init.lua | 1 + .../REDSTONE/mesecons_walllever/init.lua | 1 + mods/ITEMS/REDSTONE/mesecons_wires/init.lua | 4 +- mods/ITEMS/mcl_anvils/init.lua | 1 + mods/ITEMS/mcl_armor_stand/init.lua | 1 + mods/ITEMS/mcl_banners/init.lua | 1 + mods/ITEMS/mcl_beds/api.lua | 1 + mods/ITEMS/mcl_books/init.lua | 1 + mods/ITEMS/mcl_bows/arrow.lua | 1 + mods/ITEMS/mcl_bows/bow.lua | 1 + mods/ITEMS/mcl_cake/init.lua | 7 +- mods/ITEMS/mcl_cauldrons/init.lua | 1 + mods/ITEMS/mcl_clock/init.lua | 4 +- mods/ITEMS/mcl_colorblocks/init.lua | 3 + mods/ITEMS/mcl_compass/init.lua | 4 +- mods/ITEMS/mcl_core/nodes_cactuscane.lua | 2 + mods/ITEMS/mcl_core/nodes_misc.lua | 1 + mods/ITEMS/mcl_crafting_table/init.lua | 1 + mods/ITEMS/mcl_dye/init.lua | 2 + mods/ITEMS/mcl_end/chorus_plant.lua | 3 + mods/ITEMS/mcl_end/eye_of_ender.lua | 1 + mods/ITEMS/mcl_farming/beetroot.lua | 1 + mods/ITEMS/mcl_farming/carrots.lua | 1 + mods/ITEMS/mcl_farming/hoes.lua | 24 +- mods/ITEMS/mcl_farming/melon.lua | 1 + mods/ITEMS/mcl_farming/potatoes.lua | 1 + mods/ITEMS/mcl_farming/pumpkin.lua | 1 + mods/ITEMS/mcl_farming/soil.lua | 1 + mods/ITEMS/mcl_farming/wheat.lua | 1 + mods/ITEMS/mcl_fire/fire_charge.lua | 1 + mods/ITEMS/mcl_fire/flint_and_steel.lua | 1 + mods/ITEMS/mcl_fishing/init.lua | 1 + mods/ITEMS/mcl_flowerpots/init.lua | 1 + mods/ITEMS/mcl_furnaces/init.lua | 1 + mods/ITEMS/mcl_hoppers/init.lua | 1 + mods/ITEMS/mcl_itemframes/init.lua | 1 + mods/ITEMS/mcl_jukebox/init.lua | 1 + mods/ITEMS/mcl_maps/init.lua | 1 + mods/ITEMS/mcl_mobitems/init.lua | 3 + mods/ITEMS/mcl_mobspawners/init.lua | 1 + mods/ITEMS/mcl_monster_eggs/init.lua | 1 + mods/ITEMS/mcl_mushrooms/small.lua | 4 + mods/ITEMS/mcl_nether/init.lua | 2 + mods/ITEMS/mcl_nether/nether_wart.lua | 1 + mods/ITEMS/mcl_ocean/corals.lua | 8 + mods/ITEMS/mcl_ocean/kelp.lua | 4 +- mods/ITEMS/mcl_ocean/sea_pickle.lua | 4 +- mods/ITEMS/mcl_ocean/seagrass.lua | 4 +- mods/ITEMS/mcl_portals/portal_end.lua | 2 + mods/ITEMS/mcl_potions/init.lua | 6 + mods/ITEMS/mcl_signs/init.lua | 1 + mods/ITEMS/mcl_sponges/init.lua | 3 + mods/ITEMS/mcl_throwing/init.lua | 3 + mods/ITEMS/mcl_tnt/init.lua | 1 + 81 files changed, 647 insertions(+), 22 deletions(-) create mode 100644 mods/HELP/mcl_tt/depends.txt create mode 100644 mods/HELP/mcl_tt/init.lua create mode 100644 mods/HELP/tt/API.md create mode 100644 mods/HELP/tt/README.md create mode 100644 mods/HELP/tt/init.lua create mode 100644 mods/HELP/tt/locale/template.txt create mode 100644 mods/HELP/tt/locale/tt.de.tr create mode 100644 mods/HELP/tt/mod.conf create mode 100644 mods/HELP/tt/snippets_builtin.lua create mode 100644 mods/HELP/tt/snippets_core.lua diff --git a/mods/ENTITIES/mcl_boats/init.lua b/mods/ENTITIES/mcl_boats/init.lua index 9999b2b7..6c0ad9a1 100644 --- a/mods/ENTITIES/mcl_boats/init.lua +++ b/mods/ENTITIES/mcl_boats/init.lua @@ -279,7 +279,7 @@ local images = { "oak", "spruce", "birch", "jungle", "acacia", "dark_oak" } for b=1, #boat_ids do local itemstring = "mcl_boats:"..boat_ids[b] - local longdesc, usagehelp, help, helpname + local longdesc, usagehelp, tt_help, help, helpname help = false -- Only create one help entry for all boats if b == 1 then @@ -288,9 +288,11 @@ for b=1, #boat_ids do usagehelp = S("Rightclick on a water source to place the boat. Rightclick the boat to enter it. Use [Left] and [Right] to steer, [Forwards] to speed up and [Backwards] to slow down or move backwards. Rightclick the boat again to leave it, punch the boat to make it drop as an item.") helpname = S("Boat") end + tt_help = S("Water vehicle") minetest.register_craftitem(itemstring, { description = names[b], + _tt_help = tt_help, _doc_items_create_entry = help, _doc_items_entry_name = helpname, _doc_items_longdesc = longdesc, diff --git a/mods/ENTITIES/mcl_minecarts/init.lua b/mods/ENTITIES/mcl_minecarts/init.lua index d845041c..7c57334b 100644 --- a/mods/ENTITIES/mcl_minecarts/init.lua +++ b/mods/ENTITIES/mcl_minecarts/init.lua @@ -526,7 +526,7 @@ mcl_minecarts.place_minecart = function(itemstack, pointed_thing) end -local register_craftitem = function(itemstring, entity_id, description, longdesc, usagehelp, icon, creative) +local register_craftitem = function(itemstring, entity_id, description, tt_help, longdesc, usagehelp, icon, creative) entity_mapping[itemstring] = entity_id local groups = { minecart = 1, transport = 1 } @@ -566,6 +566,7 @@ local register_craftitem = function(itemstring, entity_id, description, longdesc groups = groups, } def.description = description + def._tt_help = tt_help def._doc_items_longdesc = longdesc def._doc_items_usagehelp = usagehelp def.inventory_image = icon @@ -588,9 +589,9 @@ Register a minecart * on_activate_by_rail: Called when above activator rail * creative: If false, don't show in Creative Inventory ]] -local function register_minecart(itemstring, entity_id, description, longdesc, usagehelp, mesh, textures, icon, drop, on_rightclick, on_activate_by_rail, creative) +local function register_minecart(itemstring, entity_id, description, tt_help, longdesc, usagehelp, mesh, textures, icon, drop, on_rightclick, on_activate_by_rail, creative) register_entity(entity_id, mesh, textures, drop, on_rightclick, on_activate_by_rail) - register_craftitem(itemstring, entity_id, description, longdesc, usagehelp, icon, creative) + register_craftitem(itemstring, entity_id, description, tt_help, longdesc, usagehelp, icon, creative) if minetest.get_modpath("doc_identifier") ~= nil then doc.sub.identifier.register_object(entity_id, "craftitems", itemstring) end @@ -601,6 +602,7 @@ register_minecart( "mcl_minecarts:minecart", "mcl_minecarts:minecart", S("Minecart"), + S("Vehicle for fast travel on rails"), S("Minecarts can be used for a quick transportion on rails.") .. "\n" .. S("Minecarts only ride on rails and always follow the tracks. At a T-junction with no straight way ahead, they turn left. The speed is affected by the rail type."), S("You can place the minecart on rails. Right-click it to enter it. Punch it to get it moving.") .. "\n" .. @@ -640,7 +642,7 @@ register_minecart( "mcl_minecarts:chest_minecart", "mcl_minecarts:chest_minecart", S("Minecart with Chest"), - nil, nil, + nil, nil, nil, "mcl_minecarts_minecart_chest.b3d", { "mcl_chests_normal.png", "mcl_minecarts_minecart.png" }, "mcl_minecarts_minecart_chest.png", @@ -652,6 +654,7 @@ register_minecart( "mcl_minecarts:furnace_minecart", "mcl_minecarts:furnace_minecart", S("Minecart with Furnace"), + nil, S("A minecart with furnace is a vehicle that travels on rails. It can propel itself with fuel."), S("Place it on rails. If you give it some coal, the furnace will start burning for a long time and the minecart will be able to move itself. Punch it to get it moving.") .. "\n" .. S("To obtain the minecart and furnace, punch them while holding down the sneak key."), @@ -705,7 +708,7 @@ register_minecart( "mcl_minecarts:command_block_minecart", "mcl_minecarts:command_block_minecart", S("Minecart with Command Block"), - nil, nil, + nil, nil, nil, "mcl_minecarts_minecart_block.b3d", { "jeija_commandblock_off.png^[verticalframe:2:0", @@ -726,7 +729,7 @@ register_minecart( "mcl_minecarts:hopper_minecart", "mcl_minecarts:hopper_minecart", S("Minecart with Hopper"), - nil, nil, + nil, nil, nil, "mcl_minecarts_minecart_hopper.b3d", { "mcl_hoppers_hopper_inside.png", @@ -744,6 +747,7 @@ register_minecart( "mcl_minecarts:tnt_minecart", "mcl_minecarts:tnt_minecart", S("Minecart with TNT"), + S("Vehicle for fast travel on rails").."\n"..S("Can be ignited by tools or powered activator rail"), S("A minecart with TNT is an explosive vehicle that travels on rail."), S("Place it on rails. Punch it to move it. The TNT is ignited with a flint and steel or when the minecart is on an powered activator rail.") .. "\n" .. S("To obtain the minecart and TNT, punch them while holding down the sneak key. You can't do this if the TNT was ignited."), diff --git a/mods/ENTITIES/mcl_minecarts/rails.lua b/mods/ENTITIES/mcl_minecarts/rails.lua index 4c0bcf8c..4c26aea8 100644 --- a/mods/ENTITIES/mcl_minecarts/rails.lua +++ b/mods/ENTITIES/mcl_minecarts/rails.lua @@ -73,6 +73,7 @@ register_rail("mcl_minecarts:rail", {"default_rail.png", "default_rail_curved.png", "default_rail_t_junction.png", "default_rail_crossing.png"}, { description = S("Rail"), + _tt_help = S("Track for minecarts"), _doc_items_longdesc = S("Rails can be used to build transport tracks for minecarts. Normal rails slightly slow down minecarts due to friction."), _doc_items_usagehelp = railuse, } @@ -83,6 +84,7 @@ register_rail("mcl_minecarts:golden_rail", {"mcl_minecarts_rail_golden.png", "mcl_minecarts_rail_golden_curved.png", "mcl_minecarts_rail_golden_t_junction.png", "mcl_minecarts_rail_golden_crossing.png"}, { description = S("Powered Rail"), + _tt_help = S("Track for minecarts").."\n"..S("Speed up when powered, slow down when not powered"), _doc_items_longdesc = S("Rails can be used to build transport tracks for minecarts. Powered rails are able to accelerate and brake minecarts."), _doc_items_usagehelp = railuse .. "\n" .. S("Without redstone power, the rail will brake minecarts. To make this rail accelerate minecarts, power it with redstone power."), _rail_acceleration = -3, @@ -121,6 +123,7 @@ register_rail("mcl_minecarts:activator_rail", {"mcl_minecarts_rail_activator.png", "mcl_minecarts_rail_activator_curved.png", "mcl_minecarts_rail_activator_t_junction.png", "mcl_minecarts_rail_activator_crossing.png"}, { description = S("Activator Rail"), + _tt_help = S("Track for minecarts").."\n"..S("Activates minecarts when powered"), _doc_items_longdesc = S("Rails can be used to build transport tracks for minecarts. Activator rails are used to activate special minecarts."), _doc_items_usagehelp = railuse .. "\n" .. S("To make this rail activate minecarts, power it with redstone power and send a minecart over this piece of rail."), mesecons = { @@ -172,6 +175,7 @@ register_rail("mcl_minecarts:detector_rail", {"mcl_minecarts_rail_detector.png", "mcl_minecarts_rail_detector_curved.png", "mcl_minecarts_rail_detector_t_junction.png", "mcl_minecarts_rail_detector_crossing.png"}, { description = S("Detector Rail"), + _tt_help = S("Track for minecarts").."\n"..S("Emits redstone power when a minecart is detected"), _doc_items_longdesc = S("Rails can be used to build transport tracks for minecarts. A detector rail is able to detect a minecart above it and powers redstone mechanisms."), _doc_items_usagehelp = railuse .. "\n" .. S("To detect a minecart and provide redstone power, connect it to redstone trails or redstone mechanisms and send any minecart over the rail."), mesecons = { diff --git a/mods/ENTITIES/mcl_mobs/crafts.lua b/mods/ENTITIES/mcl_mobs/crafts.lua index e9e6abf9..e8a5b60f 100644 --- a/mods/ENTITIES/mcl_mobs/crafts.lua +++ b/mods/ENTITIES/mcl_mobs/crafts.lua @@ -4,6 +4,7 @@ local S = minetest.get_translator("mcl_mobs") -- name tag minetest.register_craftitem("mcl_mobs:nametag", { description = S("Name Tag"), + _tt_help = S("Give names to mobs").."\n"..S("Set name at anvil"), _doc_items_longdesc = S("A name tag is an item to name a mob."), _doc_items_usagehelp = S("Before you use the name tag, you need to set a name at an anvil. Then you can use the name tag to name a mob. This uses up the name tag."), inventory_image = "mobs_nametag.png", diff --git a/mods/ENTITIES/mobs_mc/1_items_default.lua b/mods/ENTITIES/mobs_mc/1_items_default.lua index 687c0ac1..a86bc012 100644 --- a/mods/ENTITIES/mobs_mc/1_items_default.lua +++ b/mods/ENTITIES/mobs_mc/1_items_default.lua @@ -532,6 +532,7 @@ if c("totem") then -- Totem of Undying minetest.register_craftitem("mobs_mc:totem", { description = S("Totem of Undying"), + _tt_help = S("Protects you from death while wielding it"), _doc_items_longdesc = S("A totem of undying is a rare artifact which may safe you from certain death."), _doc_items_usagehelp = S("The totem only works while you hold it in your hand. If you receive fatal damage, you are saved from death and you get a second chance with 1 HP. The totem is destroyed in the process, however."), inventory_image = "mcl_totems_totem.png", diff --git a/mods/HELP/doc/doc_identifier/init.lua b/mods/HELP/doc/doc_identifier/init.lua index 2713d389..2e041ae2 100644 --- a/mods/HELP/doc/doc_identifier/init.lua +++ b/mods/HELP/doc/doc_identifier/init.lua @@ -161,6 +161,7 @@ end minetest.register_tool("doc_identifier:identifier_solid", { description = S("Lookup Tool"), + _tt_help = S("Show help for pointed thing"), _doc_items_longdesc = S("This useful little helper can be used to quickly learn more about about one's closer environment. It identifies and analyzes blocks, items and other things and it shows extensive information about the thing on which it is used."), _doc_items_usagehelp = S("Punch any block, item or other thing about you wish to learn more about. This will open up the appropriate help entry. The tool comes in two modes which are changed by using. In liquid mode, this tool points to liquids as well while in solid mode this is not the case."), _doc_items_hidden = false, diff --git a/mods/HELP/mcl_tt/depends.txt b/mods/HELP/mcl_tt/depends.txt new file mode 100644 index 00000000..c49c556e --- /dev/null +++ b/mods/HELP/mcl_tt/depends.txt @@ -0,0 +1 @@ +tt diff --git a/mods/HELP/mcl_tt/init.lua b/mods/HELP/mcl_tt/init.lua new file mode 100644 index 00000000..445ec09b --- /dev/null +++ b/mods/HELP/mcl_tt/init.lua @@ -0,0 +1,103 @@ +local S = minetest.get_translator("mcl_tt") + +-- Armor +tt.register_snippet(function(itemstring) + local def = minetest.registered_items[itemstring] + local s = "" + local head = minetest.get_item_group(itemstring, "armor_head") + local torso = minetest.get_item_group(itemstring, "armor_torso") + local legs = minetest.get_item_group(itemstring, "armor_legs") + local feet = minetest.get_item_group(itemstring, "armor_feet") + if head > 0 then + s = s .. S("Head armor") + end + if torso > 0 then + s = s .. S("Torso armor") + end + if legs > 0 then + s = s .. S("Legs armor") + end + if feet > 0 then + s = s .. S("Feet armor") + end + if s == "" then + s = nil + end + return s +end) +tt.register_snippet(function(itemstring) + local def = minetest.registered_items[itemstring] + local s = "" + local use = minetest.get_item_group(itemstring, "mcl_armor_uses") + local pts = minetest.get_item_group(itemstring, "mcl_armor_points") + if pts > 0 then + s = s .. S("Armor points: @1", pts) + s = s .. "\n" + end + if use > 0 then + s = s .. S("Armor durability: @1", use) + end + if s == "" then + s = nil + end + return s +end) +-- Horse armor +tt.register_snippet(function(itemstring) + local armor_g = minetest.get_item_group(itemstring, "horse_armor") + if armor_g and armor_g > 0 then + return S("Protection: @1%", 100 - armor_g) + end +end) + +tt.register_snippet(function(itemstring) + local def = minetest.registered_items[itemstring] + local s = "" + if def.groups.eatable and def.groups.eatable > 0 then + s = s .. S("Hunger points: +@1", def.groups.eatable) + end + if def._mcl_saturation and def._mcl_saturation > 0 then + if s ~= "" then + s = s .. "\n" + end + s = s .. S("Saturation points: +@1", string.format("%.1f", def._mcl_saturation)) + end + if s == "" then + s = nil + end + return s +end) + +tt.register_snippet(function(itemstring) + local def = minetest.registered_items[itemstring] + if minetest.get_item_group(itemstring, "crush_after_fall") == 1 then + return S("Deals damage when falling") + end +end) + +tt.register_snippet(function(itemstring) + local def = minetest.registered_items[itemstring] + if def.groups.place_flowerlike == 1 then + return S("Grows on grass blocks or dirt") + elseif def.groups.place_flowerlike == 2 then + return S("Grows on grass blocks, podzol, dirt or coarse dirt") + end +end) + +tt.register_snippet(function(itemstring) + local def = minetest.registered_items[itemstring] + if def.groups.flammable then + return S("Flammable") + end +end) + +tt.register_snippet(function(itemstring) + if itemstring == "mcl_heads:zombie" then + return S("Zombie view range: -50%") + elseif itemstring == "mcl_heads:skeleton" then + return S("Skeleton view range: -50%") + elseif itemstring == "mcl_heads:creeper" then + return S("Creeper view range: -50%") + end +end) + diff --git a/mods/HELP/tt/API.md b/mods/HELP/tt/API.md new file mode 100644 index 00000000..0f24e472 --- /dev/null +++ b/mods/HELP/tt/API.md @@ -0,0 +1,33 @@ +# Tooltip API +This API explains how to handle the extended item tooltips (`description` field). + +## Fields + +Add these to the item definition. + +* `_tt_ignore`: If `true`, the `description` of this item won't be altered at all +* `_tt_help`: Custom help text +* `_tt_food`: If `true`, item is a food item that can be consumed by the player +* `_tt_food_hp`: Health increase (in HP) for player when consuming food item + +Once this mod had overwritten the `description` field of an item was overwritten, it will save the original (unaltered) `description` in the `_tt_original_description` field. + +## `tt.register_snippet(func)` + +Register a custom snippet function. +`func` is a function of the form `func(itemstring)`. +It will be called for (nearly) every itemstring. + +Returns: Two values, the first one is required. +1st return value: A string you want to append to this item or `nil` if nothing shall be appended. +2nd return value: If nil, `tt` will take of the text color. If a ColorString in `"#RRGGBB"` format, entire text is colorized in this color. Return `false` to force `tt` to not apply text any colorization (useful if you want to call `minetest.colorize` yourself. + +Example: + +``` +tt.register_snippet(function(itemstring) + if minetest.get_item_group(itemstring, "magic") == 1 then + return "This item is magic" + end +end) +``` diff --git a/mods/HELP/tt/README.md b/mods/HELP/tt/README.md new file mode 100644 index 00000000..ca76902e --- /dev/null +++ b/mods/HELP/tt/README.md @@ -0,0 +1,12 @@ +# Extended Tooltip (`tt`) +This mod extends the tooltip of items to add more informative texts. + +It displays the following useful information: +* Weapon damage and speed +* Tool properties +* Noteworthy block properties +* Food satiation +* Custom help text (added by mods) + +## License +MIT License. diff --git a/mods/HELP/tt/init.lua b/mods/HELP/tt/init.lua new file mode 100644 index 00000000..1e639bae --- /dev/null +++ b/mods/HELP/tt/init.lua @@ -0,0 +1,55 @@ +local S = minetest.get_translator("tt") + +tt = {} +tt.COLOR_DEFAULT = "#d0ffd0" +tt.COLOR_DANGER = "#ffff00" +tt.COLOR_GOOD = "#00ff00" + +-- API +tt.registered_snippets = {} + +tt.register_snippet = function(func) + table.insert(tt.registered_snippets, func) +end + +-- Register core snippets + +dofile(minetest.get_modpath(minetest.get_current_modname()).."/snippets_core.lua") +dofile(minetest.get_modpath(minetest.get_current_modname()).."/snippets_builtin.lua") + +-- Apply item description updates + +local function append_snippets() + for itemstring, def in pairs(minetest.registered_items) do + if itemstring ~= "" and itemstring ~= "air" and itemstring ~= "ignore" and itemstring ~= "unknown" and def ~= nil and def.description ~= nil and def.description ~= "" and def._tt_ignore ~= true then + local desc = def.description + local orig_desc = desc + local first = true + -- Apply snippets + for s=1, #tt.registered_snippets do + local str, snippet_color = tt.registered_snippets[s](itemstring) + if snippet_color == nil then + snippet_color = tt.COLOR_DEFAULT + elseif snippet_color == false then + snippet_color = false + end + if str then + if first then + first = false + end + desc = desc .. "\n" + if snippet_color then + desc = desc .. minetest.colorize(snippet_color, str) + else + desc = desc .. str + end + end + end + if desc ~= def.description then + minetest.override_item(itemstring, { description = desc, _tt_original_description = orig_desc }) + end + end + end +end + +minetest.register_on_mods_loaded(append_snippets) diff --git a/mods/HELP/tt/locale/template.txt b/mods/HELP/tt/locale/template.txt new file mode 100644 index 00000000..488a0e26 --- /dev/null +++ b/mods/HELP/tt/locale/template.txt @@ -0,0 +1,27 @@ +# textdomain:tt +Damage: @1= +Damage (@1): @2= +Healing: @1= +Healing (@1): @2= +Full punch interval: @1s= +Food item= ++@1 satiation= +@1 satiation= ++@1 food points= +Contact damage: @1 per second= +Contact healing: @1 per second= +Drowning damage: @1= +Bouncy (@1%)= +Luminance: @1= +Slippery= +Climbable= +Climbable (only downwards)= +No jumping= +No swimming upwards= +No rising= +Fall damage: @1%= +Fall damage: +@1%= +No fall damage= +Digs @1 blocks= +Digs @1 blocks instantly= +Minimum dig time: @1s= diff --git a/mods/HELP/tt/locale/tt.de.tr b/mods/HELP/tt/locale/tt.de.tr new file mode 100644 index 00000000..b62daee1 --- /dev/null +++ b/mods/HELP/tt/locale/tt.de.tr @@ -0,0 +1,27 @@ +# textdomain:tt +Damage: @1=Schaden: @1 +Damage (@1): @2=Schaden (@1): @2 +Healing: @1=Heilung: @1 +Healing (@1): @2=Heilung (@1): @2 +Full punch interval: @1s=Zeit zum Ausholen: @1s +Food item=Lebensmittel ++@1 satiation=+@1 Sättigung +@1 satiation=@1 Sättigung ++@1 food points=+@1 Nahrungspunkte +Contact damage: @1 per second=Kontaktschaden: @1 pro Sekunde +Contact healing: @1 per second=Kontaktheilung: @1 pro Sekunde +Drowning damage: @1=Ertrinkensschaden: @1 +Bouncy (@1%)=Sprunghaft (@1%) +Luminance: @1=Lichtstärke: @1 +Slippery=Rutschig +Climbable=Erkletterbar +Climbable (only downwards)=Erkletterbar (nur nach unten) +No jumping=Kein Springen +No swimming upwards=Kein nach oben schwimmen +No rising=Kein Aufsteigen +Fall damage: @1%=Fallschaden: @1% +Fall damage: +@1%=Fallschaden: +@1% +No fall damage=Kein Fallschaden +Digs @1 blocks=Gräbt „@1“-Blöcke +Digs @1 blocks instantly=Gräbt „@1“-Blöcke sofort +Minimum dig time: @1s=Minimale Grabezeit: @1s diff --git a/mods/HELP/tt/mod.conf b/mods/HELP/tt/mod.conf new file mode 100644 index 00000000..aee1572f --- /dev/null +++ b/mods/HELP/tt/mod.conf @@ -0,0 +1,2 @@ +name = tt +description = Appends a helpful tooltip to the item description diff --git a/mods/HELP/tt/snippets_builtin.lua b/mods/HELP/tt/snippets_builtin.lua new file mode 100644 index 00000000..6d383f7d --- /dev/null +++ b/mods/HELP/tt/snippets_builtin.lua @@ -0,0 +1,210 @@ +local S = minetest.get_translator("tt") + +local function get_min_digtime(caps) + local mintime + local unique = true + local maxlevel = caps.maxlevel + if not maxlevel then + maxlevel = 1 + end + if maxlevel > 1 then + unique = false + end + if caps.times then + for r=1,3 do + local time = caps.times[r] + if time and maxlevel > 1 then + time = time / maxlevel + end + if time and ((not mintime) or (time < mintime)) then + if mintime and (time < mintime) then + unique = false + end + mintime = time + end + end + end + return mintime, unique +end + +local function newline(str) + if str ~= "" then + str = str .. "\n" + end + return str +end + +-- Digging capabilities of tool +tt.register_snippet(function(itemstring) + local def = minetest.registered_items[itemstring] + if not def.tool_capabilities then + return + end + local groupcaps = def.tool_capabilities.groupcaps + if not groupcaps then + return + end + local formstring = "" + local capstr = "" + local caplines = 0 + for k,v in pairs(groupcaps) do + local speedstr = "" + local miningusesstr = "" + -- Mining capabilities + caplines = caplines + 1 + local maxlevel = v.maxlevel + if not maxlevel then + -- Default from tool.h + maxlevel = 1 + end + + -- Digging speed + local speed_class = def.groups and def.groups.dig_speed_class + if speed_class == 1 then + speedstr = S("Painfully slow") + elseif speed_class == 2 then + speedstr = S("Very slow") + elseif speed_class == 3 then + speedstr = S("Slow") + elseif speed_class == 4 then + speedstr = S("Fast") + elseif speed_class == 5 then + speedstr = S("Very fast") + elseif speed_class == 6 then + speedstr = S("Extremely fast") + elseif speed_class == 7 then + speedstr = S("Instantaneous") + end + + -- Number of mining uses + local base_uses = v.uses + if not base_uses then + -- Default from tool.h + base_uses = 20 + end + if def._doc_items_durability == nil and base_uses > 0 then + local real_uses = base_uses * math.pow(3, maxlevel) + if real_uses < 65535 then + miningusesstr = S("@1 uses", real_uses) + else + miningusesstr = S("Unlimited uses") + end + end + + if speedstr ~= "" then + capstr = capstr .. S("Mining speed: @1", speedstr) .. "\n" + end + if miningusesstr ~= "" then + capstr = capstr .. S("Mining durability: @1", miningusesstr) .. "\n" + end + + -- Only show one group at max + break + end + if caplines > 0 then + -- Capabilities + formstring = formstring .. capstr + -- Max. drop level + local mdl = def.tool_capabilities.max_drop_level + if not def.tool_capabilities.max_drop_level then + mdl = 0 + end + formstring = formstring .. S("Block breaking strength: @1", mdl) + end + if formstring == "" then + formstring = nil + end + return formstring +end) + +-- Food +tt.register_snippet(function(itemstring) + local def = minetest.registered_items[itemstring] + local desc + if def._tt_food then + desc = S("Food item") + if def._tt_food_hp then + local msg = S("+@1 food points", def._tt_food_hp) + desc = desc .. "\n" .. msg + end + end + return desc +end) + +-- Node info +tt.register_snippet(function(itemstring) + local def = minetest.registered_items[itemstring] + local desc = "" + + -- Health-related node facts + if def.damage_per_second then + if def.damage_per_second > 0 then + desc = newline(desc) + desc = desc .. minetest.colorize(tt.COLOR_DANGER, S("Contact damage: @1 per second", def.damage_per_second)) + elseif def.damage_per_second < 0 then + desc = newline(desc) + desc = desc .. minetest.colorize(tt.COLOR_GOOD, S("Contact healing: @1 per second", math.abs(def.damage_per_second))) + end + end + if def.drowning and def.drowning ~= 0 then + desc = newline(desc) + desc = desc .. minetest.colorize(tt.COLOR_DANGER, S("Drowning damage: @1", def.drowning)) + end + local tmp = minetest.get_item_group(itemstring, "fall_damage_add_percent") + if tmp > 0 then + desc = newline(desc) + desc = desc .. minetest.colorize(tt.COLOR_DANGER, S("Fall damage: +@1%", tmp)) + elseif tmp == -100 then + desc = newline(desc) + desc = desc .. minetest.colorize(tt.COLOR_GOOD, S("No fall damage")) + elseif tmp < 0 then + desc = newline(desc) + desc = desc .. minetest.colorize(tt.COLOR_DEFAULT, S("Fall damage: @1%", tmp)) + end + + -- Movement-related node facts + if minetest.get_item_group(itemstring, "disable_jump") == 1 and not def.climbable then + if def.liquidtype == "none" then + desc = newline(desc) + desc = desc .. minetest.colorize(tt.COLOR_DEFAULT, S("No jumping")) + elseif minetest.get_item_group(itemstring, "fake_liquid") == 0 then + desc = newline(desc) + desc = desc .. minetest.colorize(tt.COLOR_DEFAULT, S("No swimming upwards")) + else + desc = newline(desc) + desc = desc .. minetest.colorize(tt.COLOR_DEFAULT, S("No rising")) + end + end + if def.climbable then + if minetest.get_item_group(itemstring, "disable_jump") == 1 then + desc = newline(desc) + desc = desc .. minetest.colorize(tt.COLOR_DEFAULT, S("Climbable (only downwards)")) + else + desc = newline(desc) + desc = desc .. minetest.colorize(tt.COLOR_DEFAULT, S("Climbable")) + end + end + if minetest.get_item_group(itemstring, "slippery") >= 1 then + desc = newline(desc) + desc = desc .. minetest.colorize(tt.COLOR_DEFAULT, S("Slippery")) + end + local tmp = minetest.get_item_group(itemstring, "bouncy") + if tmp >= 1 then + desc = newline(desc) + desc = desc .. minetest.colorize(tt.COLOR_DEFAULT, S("Bouncy (@1%)", tmp)) + end + + -- Node appearance + tmp = def.light_source + if tmp and tmp >= 1 then + desc = newline(desc) + desc = desc .. minetest.colorize(tt.COLOR_DEFAULT, S("Luminance: @1", tmp)) + end + + + if desc == "" then + desc = nil + end + return desc, false +end) + diff --git a/mods/HELP/tt/snippets_core.lua b/mods/HELP/tt/snippets_core.lua new file mode 100644 index 00000000..cc67a10c --- /dev/null +++ b/mods/HELP/tt/snippets_core.lua @@ -0,0 +1,11 @@ +-- CORE SNIPPETS -- + +-- Custom text (_tt_help) +tt.register_snippet(function(itemstring) + local def = minetest.registered_items[itemstring] + if def._tt_help then + return def._tt_help + end +end) + + diff --git a/mods/ITEMS/REDSTONE/mcl_dispensers/init.lua b/mods/ITEMS/REDSTONE/mcl_dispensers/init.lua index cc8d7b66..261546e7 100644 --- a/mods/ITEMS/REDSTONE/mcl_dispensers/init.lua +++ b/mods/ITEMS/REDSTONE/mcl_dispensers/init.lua @@ -283,6 +283,7 @@ local dispenserdef = { local horizontal_def = table.copy(dispenserdef) horizontal_def.description = S("Dispenser") +horizontal_def._tt_help = S("9 inventory slots").."\n"..S("Launches item when powered with redstone power") horizontal_def._doc_items_longdesc = S("A dispenser is a block which acts as a redstone component which, when powered with redstone power, dispenses an item. It has a container with 9 inventory slots.") horizontal_def._doc_items_usagehelp = S("Place the dispenser in one of 6 possible directions. The “hole” is where items will fly out of the dispenser. Use the dispenser to access its inventory. Insert the items you wish to dispense. Supply the dispenser with redstone energy once to dispense a random item.").."\n\n".. diff --git a/mods/ITEMS/REDSTONE/mcl_droppers/init.lua b/mods/ITEMS/REDSTONE/mcl_droppers/init.lua index 7167de19..fd728320 100644 --- a/mods/ITEMS/REDSTONE/mcl_droppers/init.lua +++ b/mods/ITEMS/REDSTONE/mcl_droppers/init.lua @@ -148,6 +148,7 @@ local dropperdef = { local horizontal_def = table.copy(dropperdef) horizontal_def.description = S("Dropper") +horizontal_def._tt_help = S("9 inventory slots").."\n"..S("Drops item when powered with redstone power") horizontal_def._doc_items_longdesc = S("A dropper is a redstone component and a container with 9 inventory slots which, when supplied with redstone power, drops an item or puts it into a container in front of it.") horizontal_def._doc_items_usagehelp = S("Droppers can be placed in 6 possible directions, items will be dropped out of the hole. Use the dropper to access its inventory. Supply it with redstone energy once to make the dropper drop or transfer a random item.") horizontal_def.after_place_node = function(pos, placer, itemstack, pointed_thing) diff --git a/mods/ITEMS/REDSTONE/mcl_observers/init.lua b/mods/ITEMS/REDSTONE/mcl_observers/init.lua index 802e2450..7b4955af 100644 --- a/mods/ITEMS/REDSTONE/mcl_observers/init.lua +++ b/mods/ITEMS/REDSTONE/mcl_observers/init.lua @@ -87,6 +87,7 @@ mesecon.register_node("mcl_observers:observer", }, { description = S("Observer"), + _tt_help = S("Observes block in front of it and sends a brief redstone pulse when it changes"), _doc_items_longdesc = S("An observer is a redstone component which observes the block in front of it and sends a very short redstone pulse whenever this block changes."), _doc_items_usagehelp = S("Place the observer directly in front of the block you want to observe with the “face” looking at the block. The arrow points to the side of the output, which is at the opposite side of the “face”. You can place your redstone dust or any other component here."), diff --git a/mods/ITEMS/REDSTONE/mesecons_button/init.lua b/mods/ITEMS/REDSTONE/mesecons_button/init.lua index b397be4b..30339858 100644 --- a/mods/ITEMS/REDSTONE/mesecons_button/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons_button/init.lua @@ -97,7 +97,11 @@ mesecon.register_button = function(basename, description, texture, recipeitem, s groups_off.button_push_by_arrow = 1 groups_on.button_push_by_arrow = 1 end - + local tt = S("Provides redstone power when pushed") + tt = tt .. "\n" .. S("Push duration: @1s", string.format("%.1f", button_timer)) + if push_by_arrow then + tt = tt .. "\n" .. S("Pushable by arrow") + end minetest.register_node("mesecons_button:button_"..basename.."_off", { drawtype = "nodebox", tiles = {texture}, @@ -113,6 +117,7 @@ mesecon.register_button = function(basename, description, texture, recipeitem, s node_box = boxes_off, groups = groups_off, description = description, + _tt_help = tt, _doc_items_longdesc = longdesc, _doc_items_usagehelp = buttonuse, on_place = on_button_place, diff --git a/mods/ITEMS/REDSTONE/mesecons_commandblock/init.lua b/mods/ITEMS/REDSTONE/mesecons_commandblock/init.lua index 91c682cb..0813668f 100644 --- a/mods/ITEMS/REDSTONE/mesecons_commandblock/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons_commandblock/init.lua @@ -204,6 +204,7 @@ end minetest.register_node("mesecons_commandblock:commandblock_off", { description = S("Command Block"), + _tt_help = S("Executes server commands when powered by redstone power"), _doc_items_longdesc = S("Command blocks are mighty redstone components which are able to alter reality itself. In other words, they cause the server to execute server commands when they are supplied with redstone power."), _doc_items_usagehelp = diff --git a/mods/ITEMS/REDSTONE/mesecons_delayer/init.lua b/mods/ITEMS/REDSTONE/mesecons_delayer/init.lua index c91b36ac..724fb77b 100644 --- a/mods/ITEMS/REDSTONE/mesecons_delayer/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons_delayer/init.lua @@ -181,9 +181,10 @@ boxes = { } end -local help, longdesc, usagehelp, icon, on_construct +local help, tt, longdesc, usagehelp, icon, on_construct if i == 1 then help = true + tt = S("Redstone component").."\n"..S("Restricts power to one direction").."\n"..S("Delays signal").."\n"..S("Output can be locked") longdesc = S("Redstone repeaters are versatile redstone components with multiple purposes: 1. They only allow signals to travel in one direction. 2. They delay the signal. 3. Optionally, they can lock their output in one state.") usagehelp = S("To power a redstone repeater, send a signal in “arrow” direction (the input). The signal goes out on the opposite side (the output) with a delay. To change the delay, use the redstone repeater. The delay is between 0.1 and 0.4 seconds long and can be changed in steps of 0.1 seconds. It is indicated by the position of the moving redstone torch.").."\n".. S("To lock a repeater, send a signal from an adjacent repeater into one of its sides. While locked, the moving redstone torch disappears, the output doesn't change and the input signal is ignored.") @@ -231,6 +232,7 @@ minetest.register_node("mesecons_delayer:delayer_off_"..tostring(i), { description = desc_off, inventory_image = icon, wield_image = icon, + _tt_help = tt, _doc_items_create_entry = help, _doc_items_longdesc = longdesc, _doc_items_usagehelp = usagehelp, diff --git a/mods/ITEMS/REDSTONE/mesecons_lightstone/init.lua b/mods/ITEMS/REDSTONE/mesecons_lightstone/init.lua index 822aa3be..0e01d52b 100644 --- a/mods/ITEMS/REDSTONE/mesecons_lightstone/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons_lightstone/init.lua @@ -7,6 +7,7 @@ minetest.register_node("mesecons_lightstone:lightstone_off", { groups = {handy=1, mesecon_effector_off = 1, mesecon = 2}, is_ground_content = false, description= S("Redstone Lamp"), + _tt_help = S("Glows when powered by redstone power"), _doc_items_longdesc = S("Redstone lamps are simple redstone components which glow brightly (light level @1) when they receive redstone power.", light), sounds = mcl_sounds.node_sound_glass_defaults(), mesecons = {effector = { diff --git a/mods/ITEMS/REDSTONE/mesecons_noteblock/init.lua b/mods/ITEMS/REDSTONE/mesecons_noteblock/init.lua index 342cbc7c..8080e82f 100644 --- a/mods/ITEMS/REDSTONE/mesecons_noteblock/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons_noteblock/init.lua @@ -2,6 +2,7 @@ local S = minetest.get_translator("mesecons_noteblock") minetest.register_node("mesecons_noteblock:noteblock", { description = S("Note Block"), + _tt_help = S("Plays a musical note when powered by redstone power"), _doc_items_longdesc = S("A note block is a musical block which plays one of many musical notes and different intruments when it is punched or supplied with redstone power."), _doc_items_usagehelp = S("Use the note block to choose the next musical note (there are 25 semitones, or 2 octaves). The intrument played depends on the material of the block below the note block:").."\n\n".. diff --git a/mods/ITEMS/REDSTONE/mesecons_pistons/init.lua b/mods/ITEMS/REDSTONE/mesecons_pistons/init.lua index ce0e17a2..38008147 100644 --- a/mods/ITEMS/REDSTONE/mesecons_pistons/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons_pistons/init.lua @@ -178,6 +178,7 @@ local usagehelp_piston = S("This block can have one of 6 possible orientations." -- offstate minetest.register_node("mesecons_pistons:piston_normal_off", { description = S("Piston"), + _tt_help = S("Pushes block when powered by redstone power"), _doc_items_longdesc = S("A piston is a redstone component with a pusher which pushes the block or blocks in front of it when it is supplied with redstone power. Not all blocks can be pushed, however."), _doc_items_usagehelp = usagehelp_piston, tiles = { @@ -280,6 +281,7 @@ local pistonspec_sticky = { -- offstate minetest.register_node("mesecons_pistons:piston_sticky_off", { description = S("Sticky Piston"), + _tt_help = S("Pushes or pulls block when powered by redstone power"), _doc_items_longdesc = S("A sticky piston is a redstone component with a sticky pusher which can be extended and retracted. It extends when it is supplied with redstone power. When the pusher extends, it pushes the block or blocks in front of it. When it retracts, it pulls back the single block in front of it. Note that not all blocks can be pushed or pulled."), _doc_items_usagehelp = usagehelp_piston, diff --git a/mods/ITEMS/REDSTONE/mesecons_pressureplates/init.lua b/mods/ITEMS/REDSTONE/mesecons_pressureplates/init.lua index c56b3f78..7bc6e2e3 100644 --- a/mods/ITEMS/REDSTONE/mesecons_pressureplates/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons_pressureplates/init.lua @@ -99,6 +99,16 @@ function mesecon.register_pressure_plate(basename, description, textures_off, te if not longdesc then longdesc = S("A pressure plate is a redstone component which supplies its surrounding blocks with redstone power while someone or something rests on top of it.") end + local tt = S("Provides redstone power when pushed") + if not activated_by then + tt = tt .. "\n" .. S("Pushed by players, mobs and objects") + elseif activated_by.mob and activated_by.player then + tt = tt .. "\n" .. S("Pushed by players and mobs") + elseif activated_by.mob then + tt = tt .. "\n" .. S("Pushed by mobs") + elseif activated_by.player then + tt = tt .. "\n" .. S("Pushed by players") + end mesecon.register_node(basename, { drawtype = "nodebox", @@ -125,6 +135,7 @@ function mesecon.register_pressure_plate(basename, description, textures_off, te mesecons = {receptor = { state = mesecon.state.off, rules = mesecon.rules.pplate }}, _doc_items_longdesc = longdesc, + _tt_help = tt, },{ node_box = pp_box_on, selection_box = pp_box_on, diff --git a/mods/ITEMS/REDSTONE/mesecons_solarpanel/init.lua b/mods/ITEMS/REDSTONE/mesecons_solarpanel/init.lua index 3571688f..eb5eafdb 100644 --- a/mods/ITEMS/REDSTONE/mesecons_solarpanel/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons_solarpanel/init.lua @@ -58,6 +58,7 @@ minetest.register_node("mesecons_solarpanel:solar_panel_off", { }, groups = {handy=1,axey=1, material_wood=1}, description=S("Daylight Sensor"), + _tt_help = S("Provides redstone power when in sunlight") .. "\n" ..S("Can be inverted"), _doc_items_longdesc = S("Daylight sensors are redstone components which provide redstone power when they are in sunlight and no power otherwise. They can also be inverted.").."\n".. S("In inverted state, they provide redstone power when they are not in sunlight and no power otherwise."), _doc_items_usagehelp = S("Use the daylight sensor to toggle its state."), diff --git a/mods/ITEMS/REDSTONE/mesecons_torch/init.lua b/mods/ITEMS/REDSTONE/mesecons_torch/init.lua index 81ca4cc4..cba14163 100644 --- a/mods/ITEMS/REDSTONE/mesecons_torch/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons_torch/init.lua @@ -192,6 +192,7 @@ mcl_torches.register_torch("mesecon_torch_on", S("Redstone Torch"), minetest.register_node("mesecons_torch:redstoneblock", { description = S("Block of Redstone"), + _tt_help = S("Provides redstone power"), _doc_items_longdesc = S("A block of redstone permanently supplies redstone power to its surrounding blocks."), tiles = {"redstone_redstone_block.png"}, stack_max = 64, diff --git a/mods/ITEMS/REDSTONE/mesecons_walllever/init.lua b/mods/ITEMS/REDSTONE/mesecons_walllever/init.lua index 49dbbe32..e7132796 100644 --- a/mods/ITEMS/REDSTONE/mesecons_walllever/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons_walllever/init.lua @@ -47,6 +47,7 @@ minetest.register_node("mesecons_walllever:wall_lever_off", { groups = {handy=1, dig_by_water=1, destroy_by_lava_flow=1, dig_by_piston=1, attached_node_facedir=1}, is_ground_content = false, description=S("Lever"), + _tt_help = S("Provides redstone power when flipped on"), _doc_items_longdesc = S("A lever is a redstone component which can be flipped on and off. It supplies redstone power to adjacent blocks while it is in the “on” state."), _doc_items_usagehelp = S("Use the lever to flip it on or off."), on_rightclick = function (pos, node) diff --git a/mods/ITEMS/REDSTONE/mesecons_wires/init.lua b/mods/ITEMS/REDSTONE/mesecons_wires/init.lua index 106f3fb6..75acd3ce 100644 --- a/mods/ITEMS/REDSTONE/mesecons_wires/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons_wires/init.lua @@ -217,7 +217,7 @@ local function register_wires() local tiles_off = { crossing_off, crossing_off, straight0_off, straight1_off, straight0_off, straight1_off } local tiles_on = { crossing_on, crossing_on, straight0_on, straight1_on, straight0_on, straight1_on } - local wirehelp, longdesc, usagehelp, img, desc_off, desc_on + local wirehelp, tt, longdesc, usagehelp, img, desc_off, desc_on if nodeid == "00000000" then -- Non-connected redstone wire nodebox.fixed = {-8/16, -.5, -8/16, 8/16, -.5+1/64, 8/16} @@ -225,6 +225,7 @@ local function register_wires() tiles_off = { dot_off, dot_off, "blank.png", "blank.png", "blank.png", "blank.png" } tiles_on = { dot_on, dot_on, "blank.png", "blank.png", "blank.png", "blank.png" } + tt = S("Transmits redstone power, powers mechanisms") longdesc = S("Redstone is a versatile conductive mineral which transmits redstone power. It can be placed on the ground as a trail.").."\n".. S("A redstone trail can be in two states: Powered or not powered. A powered redstone trail will power (and thus activate) adjacent redstone components.").."\n".. S("Redstone power can be received from various redstone components, such as a block of redstone or a button. Redstone power is used to activate numerous mechanisms, such as redstone lamps or pistons.") @@ -259,6 +260,7 @@ S("Read the help entries on the other redstone components to learn how redstone description = desc_off, inventory_image = img, wield_image = img, + _tt_help = tt, _doc_items_create_entry = wirehelp, _doc_items_longdesc = longdesc, _doc_items_usagehelp = usagehelp, diff --git a/mods/ITEMS/mcl_anvils/init.lua b/mods/ITEMS/mcl_anvils/init.lua index a12a13cd..26c4676c 100644 --- a/mods/ITEMS/mcl_anvils/init.lua +++ b/mods/ITEMS/mcl_anvils/init.lua @@ -449,6 +449,7 @@ S("• Tool + Tool: Place two tools of the same type in the input slots. The “ S("• Tool + Material: Some tools can also be repaired by combining them with an item that it's made of. For example, iron pickaxes can be repaired with iron ingots. This repairs the tool by 25%.").."\n".. S("Armor counts as a tool. It is possible to repair and rename a tool in a single step.").."\n\n".. S("The anvil has limited durability and 3 damage levels: undamaged, slightly damaged and very damaged. Each time you repair or rename something, there is a 12% chance the anvil gets damaged. Anvils also have a chance of being damaged when they fall by more than 1 block. If a very damaged anvil is damaged again, it is destroyed.") +anvildef0._tt_help = S("Repair and rename items") local anvildef1 = table.copy(anvildef) anvildef1.description = S("Slightly Damaged Anvil") diff --git a/mods/ITEMS/mcl_armor_stand/init.lua b/mods/ITEMS/mcl_armor_stand/init.lua index 64b25721..416a420d 100644 --- a/mods/ITEMS/mcl_armor_stand/init.lua +++ b/mods/ITEMS/mcl_armor_stand/init.lua @@ -89,6 +89,7 @@ end -- TODO: The armor stand should be an entity minetest.register_node("mcl_armor_stand:armor_stand", { description = S("Armor Stand"), + _tt_help = S("Display pieces of armor"), _doc_items_longdesc = S("An armor stand is a decorative object which can display different pieces of armor. Anything which players can wear as armor can also be put on an armor stand."), _doc_items_usagehelp = S("Just place an armor item on the armor stand. To take the top piece of armor from the armor stand, select your hand and use the place key on the armor stand."), drawtype = "mesh", diff --git a/mods/ITEMS/mcl_banners/init.lua b/mods/ITEMS/mcl_banners/init.lua index 870f39ca..6ec620d1 100644 --- a/mods/ITEMS/mcl_banners/init.lua +++ b/mods/ITEMS/mcl_banners/init.lua @@ -195,6 +195,7 @@ end -- Standing banner node -- This one is also used for the help entry to avoid spamming the help with 16 entries. minetest.register_node("mcl_banners:standing_banner", { + _tt_help = S("Paintable"), _doc_items_entry_name = "Banner", _doc_items_image = "mcl_banners_item_base.png^mcl_banners_item_overlay.png", _doc_items_longdesc = S("Banners are tall colorful decorative blocks. They can be placed on the floor and at walls. Banners can be emblazoned with a variety of patterns using a lot of dye in crafting."), diff --git a/mods/ITEMS/mcl_beds/api.lua b/mods/ITEMS/mcl_beds/api.lua index efc27b3e..d4d001a4 100644 --- a/mods/ITEMS/mcl_beds/api.lua +++ b/mods/ITEMS/mcl_beds/api.lua @@ -66,6 +66,7 @@ function mcl_beds.register_bed(name, def) end minetest.register_node(name .. "_bottom", { description = def.description, + _tt_help = S("Allows you to sleep"), _doc_items_longdesc = def._doc_items_longdesc or beddesc, _doc_items_usagehelp = def._doc_items_usagehelp or beduse, _doc_items_create_entry = def._doc_items_create_entry, diff --git a/mods/ITEMS/mcl_books/init.lua b/mods/ITEMS/mcl_books/init.lua index 1cc0ef3d..e83e02b1 100644 --- a/mods/ITEMS/mcl_books/init.lua +++ b/mods/ITEMS/mcl_books/init.lua @@ -110,6 +110,7 @@ end -- Book and Quill minetest.register_craftitem("mcl_books:writable_book", { description = S("Book and Quill"), + _tt_help = S("Write down some notes"), _doc_items_longdesc = S("This item can be used to write down some notes."), _doc_items_usagehelp = S("Hold it in the hand, then rightclick to read the current notes and edit then. You can edit the text as often as you like. You can also sign the book which turns it into a written book which you can stack, but it can't be edited anymore.").."\n".. S("A book can hold up to 4500 characters. The title length is limited to 64 characters."), diff --git a/mods/ITEMS/mcl_bows/arrow.lua b/mods/ITEMS/mcl_bows/arrow.lua index 421f5c3d..80c1160b 100644 --- a/mods/ITEMS/mcl_bows/arrow.lua +++ b/mods/ITEMS/mcl_bows/arrow.lua @@ -20,6 +20,7 @@ local mod_button = minetest.get_modpath("mesecons_button") minetest.register_craftitem("mcl_bows:arrow", { description = S("Arrow"), + _tt_help = S("Ammunition").."\n"..S("Damage from bow: 1-10").."\n"..S("Damage from dispenser: 3"), _doc_items_longdesc = S("Arrows are ammunition for bows and dispensers.").."\n".. S("An arrow fired from a bow has a regular damage of 1-9. At full charge, there's a 20% chance of a critical hit dealing 10 damage instead. An arrow fired from a dispenser always deals 3 damage.").."\n".. S("Arrows might get stuck on solid blocks and can be retrieved again. They are also capable of pushing wooden buttons."), diff --git a/mods/ITEMS/mcl_bows/bow.lua b/mods/ITEMS/mcl_bows/bow.lua index 4f39331d..68de5987 100644 --- a/mods/ITEMS/mcl_bows/bow.lua +++ b/mods/ITEMS/mcl_bows/bow.lua @@ -98,6 +98,7 @@ end -- Bow item, uncharged state minetest.register_tool("mcl_bows:bow", { description = S("Bow"), + _tt_help = S("Launch arrows"), _doc_items_longdesc = S("Bows are ranged weapons to shoot arrows at your foes.").."\n".. S("The speed and damage of the arrow increases the longer you charge. The regular damage of the arrow is between 1 and 9. At full charge, there's also a 20% of a critical hit, dealing 10 damage instead."), _doc_items_usagehelp = S("To use the bow, you first need to have at least one arrow anywhere in your inventory (unless in Creative Mode). Hold down the right mouse button to charge, release to shoot."), diff --git a/mods/ITEMS/mcl_cake/init.lua b/mods/ITEMS/mcl_cake/init.lua index f3cc0232..33cad619 100644 --- a/mods/ITEMS/mcl_cake/init.lua +++ b/mods/ITEMS/mcl_cake/init.lua @@ -3,6 +3,8 @@ #!#!#!#Released under CC Attribution-ShareAlike 3.0 Unported #!#!# ]]-- +local CAKE_HUNGER_POINTS = 2 + local S = minetest.get_translator("mcl_cake") local cake_texture = {"cake_top.png","cake_bottom.png","cake_inner.png","cake_side.png","cake_side.png","cake_side.png"} @@ -31,6 +33,7 @@ minetest.register_craft({ minetest.register_node("mcl_cake:cake", { description = S("Cake"), + _tt_help = S("With 7 tasty slices!").."\n"..S("Hunger points: +@1 per slice", CAKE_HUNGER_POINTS), _doc_items_longdesc = S("Cakes can be placed and eaten to restore hunger points. A cake has 7 slices. Each slice restores 2 hunger points and 0.4 saturation points. Cakes will be destroyed when dug or when the block below them is broken."), _doc_items_usagehelp = S("Place the cake anywhere, then rightclick it to eat a single slice. You can't eat from the cake when your hunger bar is full."), tiles = {"cake_top.png","cake_bottom.png","cake_side.png","cake_side.png","cake_side.png","cake_side.png"}, @@ -82,7 +85,7 @@ local register_slice = function(level, nodebox, desc) minetest.record_protection_violation(pos, name) return end - local newcake = minetest.do_item_eat(2, ItemStack(after_eat), ItemStack(this), clicker, {type="nothing"}) + local newcake = minetest.do_item_eat(CAKE_HUNGER_POINTS, ItemStack(after_eat), ItemStack(this), clicker, {type="nothing"}) -- Check if we were allowed to eat if newcake:get_name() ~= this or minetest.settings:get_bool("creative_mode") == true then minetest.add_node(pos,{type="node",name=after_eat,param2=0}) @@ -96,7 +99,7 @@ local register_slice = function(level, nodebox, desc) minetest.record_protection_violation(pos, name) return end - local newcake = minetest.do_item_eat(2, ItemStack("mcl:cake:cake 0"), ItemStack("mcl_cake:cake_1"), clicker, {type="nothing"}) + local newcake = minetest.do_item_eat(CAKE_HUNGER_POINTS, ItemStack("mcl:cake:cake 0"), ItemStack("mcl_cake:cake_1"), clicker, {type="nothing"}) -- Check if we were allowed to eat if newcake:get_name() ~= this or minetest.settings:get_bool("creative_mode") == true then minetest.remove_node(pos) diff --git a/mods/ITEMS/mcl_cauldrons/init.lua b/mods/ITEMS/mcl_cauldrons/init.lua index 68c507ce..bc65e966 100644 --- a/mods/ITEMS/mcl_cauldrons/init.lua +++ b/mods/ITEMS/mcl_cauldrons/init.lua @@ -45,6 +45,7 @@ end -- Empty cauldron minetest.register_node("mcl_cauldrons:cauldron", { description = S("Cauldron"), + _tt_help = S("Stores water"), _doc_items_longdesc = S("Cauldrons are used to store water and slowly fill up under rain."), _doc_items_usagehelp = S("Place a water pucket into the cauldron to fill it with water. Place an empty bucket on a full cauldron to retrieve the water. Place a water bottle into the cauldron to fill the cauldron to one third with water. Place a glass bottle in a cauldron with water to retrieve one third of the water."), wield_image = "mcl_cauldrons_cauldron.png", diff --git a/mods/ITEMS/mcl_clock/init.lua b/mods/ITEMS/mcl_clock/init.lua index 2e2d1b00..5d10b4cf 100644 --- a/mods/ITEMS/mcl_clock/init.lua +++ b/mods/ITEMS/mcl_clock/init.lua @@ -54,13 +54,15 @@ function watch.register_item(name, image, creative, frame) if doc_mod and not use_doc then doc.add_entry_alias("craftitems", mcl_clock.stereotype, "craftitems", name) end - local longdesc, usagehelp + local longdesc, usagehelp, tt if use_doc then longdesc = S("Clocks are tools which shows the current time of day in the Overworld.") usagehelp = S("The clock contains a rotating disc with a sun symbol (yellow disc) and moon symbol and a little “pointer” which shows the current time of day by estimating the real position of the sun and the moon in the sky. Noon is represented by the sun symbol and midnight is represented by the moon symbol.") + tt = S("Displays time of day in the Overworld") end minetest.register_craftitem(name, { description = S("Clock"), + _tt_help = tt, _doc_items_create_entry = use_doc, _doc_items_longdesc = longdesc, _doc_items_usagehelp = usagehelp, diff --git a/mods/ITEMS/mcl_colorblocks/init.lua b/mods/ITEMS/mcl_colorblocks/init.lua index 15c12ab3..f55003e0 100644 --- a/mods/ITEMS/mcl_colorblocks/init.lua +++ b/mods/ITEMS/mcl_colorblocks/init.lua @@ -28,6 +28,7 @@ local hc_desc = S("Terracotta is a basic building material. It comes in many dif local gt_desc = S("Glazed terracotta is a decorative block with a complex pattern. It can be rotated by placing it in different directions.") local cp_desc = S("Concrete powder is used for creating concrete, but it can also be used as decoration itself. It comes in different colors. Concrete powder turns into concrete of the same color when it comes in contact with water.") local c_desc = S("Concrete is a decorative block which comes in many different colors. It is notable for having a very strong and clean color.") +local cp_tt = S("Turns into concrete on water contact") minetest.register_node("mcl_colorblocks:hardened_clay", { description = S("Terracotta"), @@ -62,6 +63,7 @@ for _, row in ipairs(block.dyes) do local ldesc_hc, ldesc_gt, ldesc_cp, ldesc_c local create_entry local ename_hc, ename_gt, ename_cp, ename_c + local ltt_cp = cp_tt if is_canonical then ldesc_hc = hc_desc ldesc_gt = gt_desc @@ -91,6 +93,7 @@ for _, row in ipairs(block.dyes) do minetest.register_node("mcl_colorblocks:concrete_powder_"..name, { description = sdesc_cp, + _tt_help = ltt_cp, _doc_items_longdesc = ldesc_cp, _doc_items_create_entry = create_entry, _doc_items_entry_name = ename_cp, diff --git a/mods/ITEMS/mcl_compass/init.lua b/mods/ITEMS/mcl_compass/init.lua index ee7df7de..7a23cc50 100644 --- a/mods/ITEMS/mcl_compass/init.lua +++ b/mods/ITEMS/mcl_compass/init.lua @@ -78,14 +78,16 @@ for i,img in ipairs(images) do if i == stereotype_frame then inv = 0 end - local use_doc, longdesc, usagehelp + local use_doc, longdesc, usagehelp, tt use_doc = i == stereotype_frame if use_doc then + tt = S("Points to the world origin") longdesc = S("Compasses are tools which point to the world origin (X=0, Z=0) or the spawn point in the Overworld.") end local itemstring = "mcl_compass:"..(i-1) minetest.register_craftitem(itemstring, { description = S("Compass"), + _tt_help = tt, _doc_items_create_entry = use_doc, _doc_items_longdesc = longdesc, _doc_items_usagehelp = usagehelp, diff --git a/mods/ITEMS/mcl_core/nodes_cactuscane.lua b/mods/ITEMS/mcl_core/nodes_cactuscane.lua index 59efa759..326182db 100644 --- a/mods/ITEMS/mcl_core/nodes_cactuscane.lua +++ b/mods/ITEMS/mcl_core/nodes_cactuscane.lua @@ -4,6 +4,7 @@ local S = minetest.get_translator("mcl_core") minetest.register_node("mcl_core:cactus", { description = S("Cactus"), + _tt_help = S("Grows on sand").."\n"..S("Contact damage: @1 per half second", 1), _doc_items_longdesc = S("This is a piece of cactus commonly found in dry areas, especially deserts. Over time, cacti will grow up to 3 blocks high on sand or red sand. A cactus hurts living beings touching it with a damage of 1 HP every half second. When a cactus block is broken, all cactus blocks connected above it will break as well."), _doc_items_usagehelp = S("A cactus can only be placed on top of another cactus or any sand."), drawtype = "nodebox", @@ -47,6 +48,7 @@ minetest.register_node("mcl_core:cactus", { minetest.register_node("mcl_core:reeds", { description = S("Sugar Canes"), + _tt_help = S("Grows on sand or dirt next to water"), _doc_items_longdesc = S("Sugar canes are a plant which has some uses in crafting. Sugar canes will slowly grow up to 3 blocks when they are next to water and are placed on a grass block, dirt, sand, red sand, podzol or coarse dirt. When a sugar cane is broken, all sugar canes connected above will break as well."), _doc_items_usagehelp = S("Sugar canes can only be placed top of other sugar canes and on top of blocks on which they would grow."), drawtype = "plantlike", diff --git a/mods/ITEMS/mcl_core/nodes_misc.lua b/mods/ITEMS/mcl_core/nodes_misc.lua index 689a88e1..43161b44 100644 --- a/mods/ITEMS/mcl_core/nodes_misc.lua +++ b/mods/ITEMS/mcl_core/nodes_misc.lua @@ -56,6 +56,7 @@ minetest.register_node("mcl_core:slimeblock", { minetest.register_node("mcl_core:cobweb", { description = S("Cobweb"), + _tt_help = S("Slows down movement"), _doc_items_longdesc = S("Cobwebs can be walked through, but significantly slow you down."), drawtype = "plantlike", paramtype2 = "degrotate", diff --git a/mods/ITEMS/mcl_crafting_table/init.lua b/mods/ITEMS/mcl_crafting_table/init.lua index 2a02551e..f6e224d9 100644 --- a/mods/ITEMS/mcl_crafting_table/init.lua +++ b/mods/ITEMS/mcl_crafting_table/init.lua @@ -2,6 +2,7 @@ local S = minetest.get_translator("mcl_crafting_table") minetest.register_node("mcl_crafting_table:crafting_table", { description = S("Crafting Table"), + _tt_help = S("Gives access to 3×3 crafting grid"), _doc_items_longdesc = S("A crafting table is a block which grants you access to a 3×3 crafting grid which allows you to perform advanced crafts."), _doc_items_usagehelp = S("Rightclick the crafting table to access the 3×3 crafting grid."), _doc_items_hidden = false, diff --git a/mods/ITEMS/mcl_dye/init.lua b/mods/ITEMS/mcl_dye/init.lua index 30c493ff..eaacaecf 100644 --- a/mods/ITEMS/mcl_dye/init.lua +++ b/mods/ITEMS/mcl_dye/init.lua @@ -322,6 +322,7 @@ end minetest.register_craftitem("mcl_dye:white", { inventory_image = "mcl_dye_white.png", description = S("Bone Meal"), + _tt_help = S("Speeds up plant growth"), _doc_items_longdesc = S("Bone meal is a white dye and also useful as a fertilizer to speed up the growth of many plants."), _doc_items_usagehelp = S("Rightclick a sheep to turn its wool white. Rightclick a plant to speed up its growth. Note that not all plants can be fertilized like this. When you rightclick a grass block, tall grass and flowers will grow all over the place."), stack_max = 64, @@ -359,6 +360,7 @@ minetest.register_craftitem("mcl_dye:white", { minetest.register_craftitem("mcl_dye:brown", { inventory_image = "mcl_dye_brown.png", + _tt_help = S("Grows at the side of jungle trees"), _doc_items_longdesc = S("Cocoa beans are a brown dye and can be used to plant cocoas."), _doc_items_usagehelp = S("Rightclick a sheep to turn its wool brown. Rightclick on the side of a jungle tree trunk (Jungle Wood) to plant a young cocoa."), description = S("Cocoa Beans"), diff --git a/mods/ITEMS/mcl_end/chorus_plant.lua b/mods/ITEMS/mcl_end/chorus_plant.lua index c6c22336..b80babf6 100644 --- a/mods/ITEMS/mcl_end/chorus_plant.lua +++ b/mods/ITEMS/mcl_end/chorus_plant.lua @@ -116,6 +116,7 @@ end minetest.register_node("mcl_end:chorus_flower", { description = S("Chorus Flower"), + _tt_help = S("Grows on end stone"), _doc_items_longdesc = S("A chorus flower is the living part of a chorus plant. It can grow into a tall chorus plant, step by step. When it grows, it may die on old age eventually. It also dies when it is unable to grow."), _doc_items_usagehelp = S("Place it and wait for it to grow. It can only be placed on top of end stone, on top of a chorus plant stem, or at the side of exactly one chorus plant stem."), tiles = { @@ -205,6 +206,7 @@ minetest.register_node("mcl_end:chorus_flower", { minetest.register_node("mcl_end:chorus_flower_dead", { description = S("Dead Chorus Flower"), + _tt_help = S("Grows on end stone"), _doc_items_longdesc = S("This is a part of a chorus plant. It doesn't grow. Chorus flowers die of old age or when they are unable to grow. A dead chorus flower can be harvested to obtain a fresh chorus flower which is able to grow again."), tiles = { "mcl_end_chorus_flower_dead.png", @@ -543,6 +545,7 @@ end minetest.register_craftitem("mcl_end:chorus_fruit", { description = S("Chorus Fruit"), + _tt_help = S("Randomly teleports you when eaten"), _doc_items_longdesc = S("A chorus fruit is an edible fruit from the chorus plant which is home to the End. Eating it teleports you to the top of a random solid block nearby, provided you won't end up inside a liquid, solid or harmful blocks. Teleportation might fail if there are very few or no places to teleport to."), wield_image = "mcl_end_chorus_fruit.png", inventory_image = "mcl_end_chorus_fruit.png", diff --git a/mods/ITEMS/mcl_end/eye_of_ender.lua b/mods/ITEMS/mcl_end/eye_of_ender.lua index d074e392..3d2a990e 100644 --- a/mods/ITEMS/mcl_end/eye_of_ender.lua +++ b/mods/ITEMS/mcl_end/eye_of_ender.lua @@ -74,6 +74,7 @@ minetest.register_entity("mcl_end:ender_eye", { minetest.register_craftitem("mcl_end:ender_eye", { description = S("Eye of Ender"), + _tt_help = S("Guides you to an End portal shrine"), _doc_items_longdesc = S("This item is used to locate End portal shrines in the Overworld and to activate End portals.") .. "\n" .. S("NOTE: The End dimension is currently incomplete and might change in future versions."), _doc_items_usagehelp = S("Use the attack key to release the eye of ender. It will rise and fly in the horizontal direction of the closest end portal shrine. If you're very close, the eye of ender will take the direct path to the End portal shrine instead. After a few seconds, it stops. It may drop as an item, but there's a 20% chance it shatters.") .. "\n" .. S("To activate an End portal, eyes of ender need to be placed into each block of an intact End portal frame."), wield_image = "mcl_end_ender_eye.png", diff --git a/mods/ITEMS/mcl_farming/beetroot.lua b/mods/ITEMS/mcl_farming/beetroot.lua index a6f8fc9a..ff021153 100644 --- a/mods/ITEMS/mcl_farming/beetroot.lua +++ b/mods/ITEMS/mcl_farming/beetroot.lua @@ -2,6 +2,7 @@ local S = minetest.get_translator("mcl_farming") minetest.register_craftitem("mcl_farming:beetroot_seeds", { description = S("Beetroot Seeds"), + _tt_help = S("Can be sown on farmland"), _doc_items_longdesc = S("Grows into a beetroot plant. Chickens like beetroot seeds."), _doc_items_usagehelp = S("Place the beetroot seeds on farmland (which can be created with a hoe) to plant a beetroot plant. They grow in sunlight and grow faster on hydrated farmland. Rightclick an animal to feed it beetroot seeds."), groups = { craftitem=1 }, diff --git a/mods/ITEMS/mcl_farming/carrots.lua b/mods/ITEMS/mcl_farming/carrots.lua index 341bbeb0..6080b315 100644 --- a/mods/ITEMS/mcl_farming/carrots.lua +++ b/mods/ITEMS/mcl_farming/carrots.lua @@ -82,6 +82,7 @@ minetest.register_node("mcl_farming:carrot", { minetest.register_craftitem("mcl_farming:carrot_item", { description = S("Carrot"), + _tt_help = S("Can be planted on farmland"), _doc_items_longdesc = S("Carrots can be eaten and planted. Pigs and rabbits like carrots."), _doc_items_usagehelp = S("Hold it in your hand and rightclick to eat it. Place it on top of farmland to plant the carrot. It grows in sunlight and grows faster on hydrated farmland. Rightclick an animal to feed it."), inventory_image = "farming_carrot.png", diff --git a/mods/ITEMS/mcl_farming/hoes.lua b/mods/ITEMS/mcl_farming/hoes.lua index 04105b0a..578e3aa5 100644 --- a/mods/ITEMS/mcl_farming/hoes.lua +++ b/mods/ITEMS/mcl_farming/hoes.lua @@ -49,16 +49,26 @@ local hoe_on_place_function = function(wear_divisor) end end +local uses = { + wood = 60, + stone = 132, + iron = 251, + gold = 33, + diamond = 1562, +} + +local hoe_tt = S("Turns block into farmland") local hoe_longdesc = S("Hoes are essential tools for growing crops. They are used to create farmland in order to plant seeds on it. Hoes can also be used as very weak weapons in a pinch.") local hoe_usagehelp = S("Use the hoe on a cultivatable block (by rightclicking it) to turn it into farmland. Dirt, grass blocks and grass paths are cultivatable blocks. Using a hoe on coarse dirt turns it into dirt.") minetest.register_tool("mcl_farming:hoe_wood", { description = S("Wood Hoe"), + _tt_help = hoe_tt.."\n"..S("Uses: @1", uses.wood), _doc_items_longdesc = hoe_longdesc, _doc_items_usagehelp = hoe_usagehelp, _doc_items_hidden = false, inventory_image = "farming_tool_woodhoe.png", - on_place = hoe_on_place_function(60), + on_place = hoe_on_place_function(uses.wood), groups = { tool=1, hoe=1 }, tool_capabilities = { full_punch_interval = 1, @@ -91,10 +101,11 @@ minetest.register_craft({ minetest.register_tool("mcl_farming:hoe_stone", { description = S("Stone Hoe"), + _tt_help = hoe_tt.."\n"..S("Uses: @1", uses.stone), _doc_items_longdesc = hoe_longdesc, _doc_items_usagehelp = hoe_usagehelp, inventory_image = "farming_tool_stonehoe.png", - on_place = hoe_on_place_function(132), + on_place = hoe_on_place_function(uses.stone), groups = { tool=1, hoe=1 }, tool_capabilities = { full_punch_interval = 0.5, @@ -122,10 +133,11 @@ minetest.register_craft({ minetest.register_tool("mcl_farming:hoe_iron", { description = S("Iron Hoe"), + _tt_help = hoe_tt.."\n"..S("Uses: @1", uses.iron), _doc_items_longdesc = hoe_longdesc, _doc_items_usagehelp = hoe_usagehelp, inventory_image = "farming_tool_steelhoe.png", - on_place = hoe_on_place_function(251), + on_place = hoe_on_place_function(uses.iron), groups = { tool=1, hoe=1 }, tool_capabilities = { -- 1/3 @@ -161,10 +173,11 @@ minetest.register_craft({ minetest.register_tool("mcl_farming:hoe_gold", { description = S("Golden Hoe"), + _tt_help = hoe_tt.."\n"..S("Uses: @1", uses.gold), _doc_items_longdesc = hoe_longdesc, _doc_items_usagehelp = hoe_usagehelp, inventory_image = "farming_tool_goldhoe.png", - on_place = hoe_on_place_function(33), + on_place = hoe_on_place_function(uses.gold), groups = { tool=1, hoe=1 }, tool_capabilities = { full_punch_interval = 1, @@ -201,10 +214,11 @@ minetest.register_craft({ minetest.register_tool("mcl_farming:hoe_diamond", { description = S("Diamond Hoe"), + _tt_help = hoe_tt.."\n"..S("Uses: @1", uses.diamond), _doc_items_longdesc = hoe_longdesc, _doc_items_usagehelp = hoe_usagehelp, inventory_image = "farming_tool_diamondhoe.png", - on_place = hoe_on_place_function(1562), + on_place = hoe_on_place_function(uses.diamond), groups = { tool=1, hoe=1 }, tool_capabilities = { full_punch_interval = 0.25, diff --git a/mods/ITEMS/mcl_farming/melon.lua b/mods/ITEMS/mcl_farming/melon.lua index 18eb7faa..5a4b3243 100644 --- a/mods/ITEMS/mcl_farming/melon.lua +++ b/mods/ITEMS/mcl_farming/melon.lua @@ -3,6 +3,7 @@ local S = minetest.get_translator("mcl_farming") -- Seeds minetest.register_craftitem("mcl_farming:melon_seeds", { description = S("Melon Seeds"), + _tt_help = S("Can be sown on farmland"), _doc_items_longdesc = S("Grows into a melon stem which in turn grows melons. Chickens like melon seeds."), _doc_items_usagehelp = S("Place the melon seeds on farmland (which can be created with a hoe) to plant a melon stem. Melon stems grow in sunlight and grow faster on hydrated farmland. When mature, the stem will attempt to grow a melon at the side. Rightclick an animal to feed it melon seeds."), stack_max = 64, diff --git a/mods/ITEMS/mcl_farming/potatoes.lua b/mods/ITEMS/mcl_farming/potatoes.lua index 0ffbd1fa..3faed1e0 100644 --- a/mods/ITEMS/mcl_farming/potatoes.lua +++ b/mods/ITEMS/mcl_farming/potatoes.lua @@ -87,6 +87,7 @@ minetest.register_node("mcl_farming:potato", { minetest.register_craftitem("mcl_farming:potato_item", { description = S("Potato"), + _tt_help = S("Can be planted on farmland"), _doc_items_longdesc = S("Potatoes are food items which can be eaten, cooked in the furnace and planted. Pigs like potatoes."), _doc_items_usagehelp = S("Hold it in your hand and rightclick to eat it. Place it on top of farmland to plant it. It grows in sunlight and grows faster on hydrated farmland. Rightclick an animal to feed it."), inventory_image = "farming_potato.png", diff --git a/mods/ITEMS/mcl_farming/pumpkin.lua b/mods/ITEMS/mcl_farming/pumpkin.lua index d90b6e18..e46844c9 100644 --- a/mods/ITEMS/mcl_farming/pumpkin.lua +++ b/mods/ITEMS/mcl_farming/pumpkin.lua @@ -9,6 +9,7 @@ end -- Seeds minetest.register_craftitem("mcl_farming:pumpkin_seeds", { description = S("Pumpkin Seeds"), + _tt_help = S("Can be sown on farmland"), _doc_items_longdesc = S("Grows into a pumpkin stem which in turn grows pumpkins. Chickens like pumpkin seeds."), _doc_items_usagehelp = S("Place the pumpkin seeds on farmland (which can be created with a hoe) to plant a pumpkin stem. Pumpkin stems grow in sunlight and grow faster on hydrated farmland. When mature, the stem attempts to grow a pumpkin next to it. Rightclick an animal to feed it pumpkin seeds."), stack_max = 64, diff --git a/mods/ITEMS/mcl_farming/soil.lua b/mods/ITEMS/mcl_farming/soil.lua index 012a9659..82499716 100644 --- a/mods/ITEMS/mcl_farming/soil.lua +++ b/mods/ITEMS/mcl_farming/soil.lua @@ -3,6 +3,7 @@ local S = minetest.get_translator("mcl_farming") minetest.register_node("mcl_farming:soil", { tiles = {"mcl_farming_farmland_dry.png", "default_dirt.png"}, description = S("Farmland"), + _tt_help = S("Surface for farming plants").."\n"..S("Can become wet"), _doc_items_longdesc = S("Farmland is used for farming, a necessary surface to plant crops. It is created when a hoe is used on dirt or a similar block. Plants are able to grow on farmland, but slowly. Farmland will become hydrated farmland (on which plants grow faster) when it rains or a water source is nearby. This block will turn back to dirt when a solid block appears above it or a piston arm extends above it."), drop = "mcl_core:dirt", drawtype = "nodebox", diff --git a/mods/ITEMS/mcl_farming/wheat.lua b/mods/ITEMS/mcl_farming/wheat.lua index 4c8800da..aca5f654 100644 --- a/mods/ITEMS/mcl_farming/wheat.lua +++ b/mods/ITEMS/mcl_farming/wheat.lua @@ -3,6 +3,7 @@ local S = minetest.get_translator("mcl_farming") minetest.register_craftitem("mcl_farming:wheat_seeds", { -- Original Minecraft name: “Seeds” description = S("Wheat Seeds"), + _tt_help = S("Can be sown on farmland"), _doc_items_longdesc = S("Grows into a wheat plant. Chickens like wheat seeds."), _doc_items_usagehelp = S("Place the wheat seeds on farmland (which can be created with a hoe) to plant a wheat plant. They grow in sunlight and grow faster on hydrated farmland. Rightclick an animal to feed it wheat seeds."), groups = { craftitem=1 }, diff --git a/mods/ITEMS/mcl_fire/fire_charge.lua b/mods/ITEMS/mcl_fire/fire_charge.lua index 58e86778..fbf75f18 100644 --- a/mods/ITEMS/mcl_fire/fire_charge.lua +++ b/mods/ITEMS/mcl_fire/fire_charge.lua @@ -3,6 +3,7 @@ local S = minetest.get_translator("mcl_fire") -- Fire Charge minetest.register_craftitem("mcl_fire:fire_charge", { description = S("Fire Charge"), + _tt_help = S("Dispenser projectile").."\n"..S("Starts fires and ignites blocks"), _doc_items_longdesc = S("Fire charges are primarily projectiles which can be launched from dispensers, they will fly in a straight line and burst into a fire on impact. Alternatively, they can be used to ignite fires directly."), _doc_items_usagehelp = S("Put the fire charge into a dispenser and supply it with redstone power to launch it. To ignite a fire directly, simply place the fire charge on the ground, which uses it up."), inventory_image = "mcl_fire_fire_charge.png", diff --git a/mods/ITEMS/mcl_fire/flint_and_steel.lua b/mods/ITEMS/mcl_fire/flint_and_steel.lua index 6ca2132d..c5b1290b 100644 --- a/mods/ITEMS/mcl_fire/flint_and_steel.lua +++ b/mods/ITEMS/mcl_fire/flint_and_steel.lua @@ -3,6 +3,7 @@ local S = minetest.get_translator("mcl_fire") -- Flint and Steel minetest.register_tool("mcl_fire:flint_and_steel", { description = S("Flint and Steel"), + _tt_help = S("Starts fires and ignites blocks"), _doc_items_longdesc = S("Flint and steel is a tool to start fires and ignite blocks."), _doc_items_usagehelp = S("Rightclick the surface of a block to attempt to light a fire in front of it or ignite the block. A few blocks have an unique reaction when ignited."), inventory_image = "mcl_fire_flint_and_steel.png", diff --git a/mods/ITEMS/mcl_fishing/init.lua b/mods/ITEMS/mcl_fishing/init.lua index 4ca7976f..fe1484a1 100644 --- a/mods/ITEMS/mcl_fishing/init.lua +++ b/mods/ITEMS/mcl_fishing/init.lua @@ -308,6 +308,7 @@ end) -- Fishing Rod minetest.register_tool("mcl_fishing:fishing_rod", { description = S("Fishing Rod"), + _tt_help = S("Catch fish in water"), _doc_items_longdesc = S("Fishing rods can be used to catch fish."), _doc_items_usagehelp = S("Rightclick to launch the bobber. When it sinks right-click again to reel in an item. Who knows what you're going to catch?"), groups = { tool=1 }, diff --git a/mods/ITEMS/mcl_flowerpots/init.lua b/mods/ITEMS/mcl_flowerpots/init.lua index 3131abd1..c2a85d81 100644 --- a/mods/ITEMS/mcl_flowerpots/init.lua +++ b/mods/ITEMS/mcl_flowerpots/init.lua @@ -29,6 +29,7 @@ local cubes = { minetest.register_node("mcl_flowerpots:flower_pot", { description = S("Flower Pot"), + _tt_help = S("Can holds a small flower or plant"), _doc_items_longdesc = S("Flower pots are decorative blocks in which flowers and other small plants can be placed."), _doc_items_usagehelp = S("Just place a plant on the flower pot. Flower pots can hold small flowers (not higher than 1 block), saplings, ferns, dead bushes, mushrooms and cacti. Rightclick a potted plant to retrieve the plant."), drawtype = "mesh", diff --git a/mods/ITEMS/mcl_furnaces/init.lua b/mods/ITEMS/mcl_furnaces/init.lua index 8b817312..a85912aa 100644 --- a/mods/ITEMS/mcl_furnaces/init.lua +++ b/mods/ITEMS/mcl_furnaces/init.lua @@ -295,6 +295,7 @@ end minetest.register_node("mcl_furnaces:furnace", { description = S("Furnace"), + _tt_help = S("Uses fuel to smelt or cook items"), _doc_items_longdesc = S("Furnaces cook or smelt several items, using a furnace fuel, into something else."), _doc_items_usagehelp = S("Use the furnace to open the furnace menu. Place a furnace fuel in the lower slot and the source material in the upper slot. The furnace will slowly use its fuel to smelt the item. The result will be placed into the output slot at the right side.").."\n".. diff --git a/mods/ITEMS/mcl_hoppers/init.lua b/mods/ITEMS/mcl_hoppers/init.lua index 78a0d431..e9587c41 100644 --- a/mods/ITEMS/mcl_hoppers/init.lua +++ b/mods/ITEMS/mcl_hoppers/init.lua @@ -125,6 +125,7 @@ local def_hopper = { -- Enabled downwards hopper local def_hopper_enabled = table.copy(def_hopper) def_hopper_enabled.description = S("Hopper") +def_hopper_enabled._tt_help = S("5 inventory slots").."\n"..S("Collects items from above, moves items to container below").."\n"..S("Can be disabled with redstone power") def_hopper_enabled._doc_items_longdesc = S("Hoppers are containers with 5 inventory slots. They collect dropped items from above, take items from a container above and attempt to put its items it into an adjacent container. Hoppers can go either downwards or sideways. Hoppers interact with chests, droppers, dispensers, shulker boxes, furnaces and hoppers.").."\n\n".. S("Hoppers interact with containers the following way:").."\n".. diff --git a/mods/ITEMS/mcl_itemframes/init.lua b/mods/ITEMS/mcl_itemframes/init.lua index 2d5ec5c0..6c6d6202 100644 --- a/mods/ITEMS/mcl_itemframes/init.lua +++ b/mods/ITEMS/mcl_itemframes/init.lua @@ -101,6 +101,7 @@ end minetest.register_node("mcl_itemframes:item_frame",{ description = S("Item Frame"), + _tt_help = S("Holds an item"), _doc_items_longdesc = S("Item frames are decorative blocks in which items can be placed."), _doc_items_usagehelp = S("Just place any item on the item frame. Use the item frame again to retrieve the item."), drawtype = "mesh", diff --git a/mods/ITEMS/mcl_jukebox/init.lua b/mods/ITEMS/mcl_jukebox/init.lua index fb495e78..1329864f 100644 --- a/mods/ITEMS/mcl_jukebox/init.lua +++ b/mods/ITEMS/mcl_jukebox/init.lua @@ -126,6 +126,7 @@ end -- Jukebox minetest.register_node("mcl_jukebox:jukebox", { description = S("Jukebox"), + _tt_help = S("Uses music discs to play music"), _doc_items_longdesc = S("Jukeboxes play music when they're supplied with a music disc."), _doc_items_usagehelp = S("Place a music disc into an empty jukebox to insert the music disc and play music. If the jukebox already has a music disc, you will retrieve this music disc first. The music can only be heard by you, not by other players."), tiles = {"mcl_jukebox_top.png", "mcl_jukebox_side.png", "mcl_jukebox_side.png"}, diff --git a/mods/ITEMS/mcl_maps/init.lua b/mods/ITEMS/mcl_maps/init.lua index ceca739b..4e6eefc4 100644 --- a/mods/ITEMS/mcl_maps/init.lua +++ b/mods/ITEMS/mcl_maps/init.lua @@ -34,6 +34,7 @@ minetest.register_craftitem("mcl_maps:empty_map", { -- has a very greatly zoomed-out version and even a radar mode minetest.register_craftitem("mcl_maps:filled_map", { description = S("Map"), + _tt_help = S("Enables minimap"), _doc_items_longdesc = S("Maps show your surroundings as you explore the world."), _doc_items_usagehelp = S("Hold the map in any of the hotbar slots. This allows you to access the minimap by pressing the minimap key (see controls settings).").."\n".. S("In Creative Mode, you don't need this item; the minimap is always available."), diff --git a/mods/ITEMS/mcl_mobitems/init.lua b/mods/ITEMS/mcl_mobitems/init.lua index 8a670766..ea4eb095 100644 --- a/mods/ITEMS/mcl_mobitems/init.lua +++ b/mods/ITEMS/mcl_mobitems/init.lua @@ -146,6 +146,7 @@ end -- TODO: Clear *all* status effects minetest.register_craftitem("mcl_mobitems:milk_bucket", { description = S("Milk"), + _tt_help = S("Cures poison"), _doc_items_longdesc = S("Milk is very refreshing and can be obtained by using a bucket on a cow. Drinking it will cure all forms of poisoning, but restores no hunger points."), _doc_items_usagehelp = "Rightclick to drink the milk.", inventory_image = "mcl_mobitems_bucket_milk.png", @@ -272,6 +273,7 @@ minetest.register_craftitem("mcl_mobitems:rabbit_foot", { minetest.register_craftitem("mcl_mobitems:saddle", { description = S("Saddle"), + _tt_help = S("Can be placed on animals to ride them"), _doc_items_longdesc = S("Saddles can be put on some animals in order to mount them."), _doc_items_usagehelp = "Rightclick an animal (with the saddle in your hand) to try put on the saddle. Saddles fit on horses, mules, donkeys and pigs. Horses, mules and donkeys need to be tamed first, otherwise they'll reject the saddle. Saddled animals can be mounted by rightclicking them again.", wield_image = "mcl_mobitems_saddle.png", @@ -316,6 +318,7 @@ minetest.register_craftitem("mcl_mobitems:gunpowder", { minetest.register_tool("mcl_mobitems:carrot_on_a_stick", { description = S("Carrot on a Stick"), + _tt_help = S("Lets you ride a saddled pig"), _doc_items_longdesc = S("A carrot on a stick can be used on saddled pigs to ride them."), _doc_items_usagehelp = S("Place it on a saddled pig to mount it. You can now ride the pig like a horse. Pigs will also walk towards you when you just wield the carrot on a stick."), wield_image = "mcl_mobitems_carrot_on_a_stick.png", diff --git a/mods/ITEMS/mcl_mobspawners/init.lua b/mods/ITEMS/mcl_mobspawners/init.lua index 632e4fa7..8b9732c1 100644 --- a/mods/ITEMS/mcl_mobspawners/init.lua +++ b/mods/ITEMS/mcl_mobspawners/init.lua @@ -266,6 +266,7 @@ minetest.register_node("mcl_mobspawners:spawner", { paramtype = "light", walkable = true, description = S("Mob Spawner"), + _tt_help = S("Makes mobs appear"), _doc_items_longdesc = S("A mob spawner regularily causes mobs to appear around it while a player is nearby. Some mob spawners are disabled while in light."), _doc_items_usagehelp = S("If you have a spawn egg, you can use it to change the mob to spawn. Just place the item on the mob spawner. Player-set mob spawners always spawn mobs regardless of the light level."), groups = {pickaxey=1, material_stone=1, deco_block=1}, diff --git a/mods/ITEMS/mcl_monster_eggs/init.lua b/mods/ITEMS/mcl_monster_eggs/init.lua index 1f7244cb..7823b360 100644 --- a/mods/ITEMS/mcl_monster_eggs/init.lua +++ b/mods/ITEMS/mcl_monster_eggs/init.lua @@ -23,6 +23,7 @@ local register_block = function(subname, description, tiles, is_ground_content) is_ground_content = false, sounds = mcl_sounds.node_sound_stone_defaults(), after_dig_node = spawn_silverfish, + _tt_help = S("Hides a silverfish"), _doc_items_longdesc = S("An infested block is a block from which a silverfish will pop out when it is broken. It looks identical to its normal counterpart."), _mcl_hardness = 0, _mcl_blast_resistance = 3.75, diff --git a/mods/ITEMS/mcl_mushrooms/small.lua b/mods/ITEMS/mcl_mushrooms/small.lua index 75bdeeec..8105386f 100644 --- a/mods/ITEMS/mcl_mushrooms/small.lua +++ b/mods/ITEMS/mcl_mushrooms/small.lua @@ -23,12 +23,15 @@ local longdesc_intro_red = S("Red mushrooms are fungi which grow and spread in d local longdesc_append = S("A single mushroom of this species will slowly spread over time towards a random solid opaque block with a light level of 12 or lower in a 3×3×3 cube around the mushroom. It stops spreading when there are 5 or more mushrooms of the same species within an area of 9×3×9 blocks around the mushroom.").."\n".. S("Mushrooms will eventually uproot at a light level of 12 or higher. On mycelium or podzol, they survive and spread at any light level.") +local tt_help = S("Grows on podzol, mycelium and other blocks").."\n"..S("Spreads in darkness") + local usagehelp = S("This mushroom can be placed on mycelium and podzol at any light level. It can also be placed on blocks which are both solid and opaque, as long as the light level at daytime is not higher than 12.") minetest.register_node("mcl_mushrooms:mushroom_brown", { description = S("Brown Mushroom"), _doc_items_longdesc = longdesc_intro_brown .. "\n\n" .. longdesc_append, _doc_items_usagehelp = usagehelp, + _tt_help = tt_help, drawtype = "plantlike", tiles = { "farming_mushroom_brown.png" }, inventory_image = "farming_mushroom_brown.png", @@ -52,6 +55,7 @@ minetest.register_node("mcl_mushrooms:mushroom_red", { description = S("Red Mushroom"), _doc_items_longdesc = longdesc_intro_red .. "\n\n" .. longdesc_append, _doc_items_usagehelp = usagehelp, + _tt_help = tt_help, drawtype = "plantlike", tiles = { "farming_mushroom_red.png" }, inventory_image = "farming_mushroom_red.png", diff --git a/mods/ITEMS/mcl_nether/init.lua b/mods/ITEMS/mcl_nether/init.lua index 4025d360..b6a662fa 100644 --- a/mods/ITEMS/mcl_nether/init.lua +++ b/mods/ITEMS/mcl_nether/init.lua @@ -85,6 +85,7 @@ minetest.register_node("mcl_nether:netherrack", { minetest.register_node("mcl_nether:magma", { description = S("Magma Block"), + _tt_help = S("Deals damage when standing on it"), _doc_items_longdesc = S("Magma blocks are hot solid blocks which hurt anyone standing on it, unless they have fire resistance. Starting a fire on this block will create an eternal fire."), stack_max = 64, tiles = {{name="mcl_nether_magma.png", animation={type="vertical_frames", aspect_w=32, aspect_h=32, length=1.5}}}, @@ -113,6 +114,7 @@ minetest.register_node("mcl_nether:magma", { minetest.register_node("mcl_nether:soul_sand", { description = S("Soul Sand"), + _tt_help = S("Reduces walking speed"), _doc_items_longdesc = S("Soul sand is a block from the Nether. One can only slowly walk on soul sand. The slowing effect is amplified when the soul sand is on top of ice, packed ice or a slime block."), stack_max = 64, tiles = {"mcl_nether_soul_sand.png"}, diff --git a/mods/ITEMS/mcl_nether/nether_wart.lua b/mods/ITEMS/mcl_nether/nether_wart.lua index 7b01e462..caaf41e5 100644 --- a/mods/ITEMS/mcl_nether/nether_wart.lua +++ b/mods/ITEMS/mcl_nether/nether_wart.lua @@ -97,6 +97,7 @@ minetest.register_node("mcl_nether:nether_wart", { minetest.register_craftitem("mcl_nether:nether_wart_item", { description = S("Nether Wart"), + _tt_help = S("Grows on soul sand"), _doc_items_longdesc = S("Nether warts are plants home to the Nether. They can be planted on soul sand and grow in 4 stages."), _doc_items_usagehelp = S("Place this item on soul sand to plant it and watch it grow."), inventory_image = "mcl_nether_nether_wart.png", diff --git a/mods/ITEMS/mcl_ocean/corals.lua b/mods/ITEMS/mcl_ocean/corals.lua index a5d6cb85..a2d20d75 100644 --- a/mods/ITEMS/mcl_ocean/corals.lua +++ b/mods/ITEMS/mcl_ocean/corals.lua @@ -76,11 +76,15 @@ for c=1, #corals do local doc_desc_block = S("Coral blocks live in the oceans and need a water source next to them to survive. Without water, they die off.") local doc_desc_coral = S("Corals grow on top of coral blocks and need to be inside a water source to survive. Without water, it will die off, as well as the coral block below.") local doc_desc_fan = S("Corals fans grow on top of coral blocks and need to be inside a water source to survive. Without water, it will die off, as well as the coral block below.") + local tt_block = S("Needs water to live") + local tt_coral_dead = S("Grows on coral block of same species") + local tt_coral = tt_coral_dead .. S("Needs water to live") -- Coral Block minetest.register_node("mcl_ocean:"..id.."_coral_block", { description = corals[c][2], _doc_items_longdesc = doc_desc_block, + _tt_help = tt_block, tiles = { "mcl_ocean_"..id.."_coral_block.png" }, groups = { pickaxey = 1, building_block = 1, coral=1, coral_block=1, coral_species=c, }, sounds = mcl_sounds.node_sound_dirt_defaults(), @@ -102,6 +106,7 @@ for c=1, #corals do minetest.register_node("mcl_ocean:"..id.."_coral", { description = corals[c][4], _doc_items_longdesc = doc_desc_coral, + _tt_help = tt_coral, drawtype = "plantlike_rooted", paramtype = "light", paramtype2 = "meshoptions", @@ -134,6 +139,7 @@ for c=1, #corals do minetest.register_node("mcl_ocean:dead_"..id.."_coral", { description = corals[c][5], _doc_items_create_entry = false, + _tt_help = tt_coral_dead, drawtype = "plantlike_rooted", paramtype = "light", paramtype2 = "meshoptions", @@ -167,6 +173,7 @@ for c=1, #corals do minetest.register_node("mcl_ocean:"..id.."_coral_fan", { description = corals[c][6], _doc_items_longdesc = doc_desc_fan, + _tt_help = tt_coral, drawtype = "plantlike_rooted", paramtype = "light", paramtype2 = "meshoptions", @@ -199,6 +206,7 @@ for c=1, #corals do minetest.register_node("mcl_ocean:dead_"..id.."_coral_fan", { description = corals[c][7], _doc_items_create_entry = false, + _tt_help = tt_coral_dead, drawtype = "plantlike_rooted", paramtype = "light", paramtype2 = "meshoptions", diff --git a/mods/ITEMS/mcl_ocean/kelp.lua b/mods/ITEMS/mcl_ocean/kelp.lua index 1b41183a..a659f0ad 100644 --- a/mods/ITEMS/mcl_ocean/kelp.lua +++ b/mods/ITEMS/mcl_ocean/kelp.lua @@ -152,9 +152,10 @@ for s=1, #surfaces do sounds.dig = leaf_sounds.dig sounds.dug = leaf_sounds.dug sounds.place = leaf_sounds.place - local doc_longdesc, doc_img, desc + local tt_help, doc_longdesc, doc_img, desc if surfaces[s][1] == "dirt" then doc_longdesc = S("Kelp grows inside water on top of dirt, sand or gravel.") + tt_help = S("Grows in water on dirt, sand, gravel") desc = S("Kelp") doc_create = true doc_img = "mcl_ocean_kelp_item.png" @@ -162,6 +163,7 @@ for s=1, #surfaces do doc_create = false end minetest.register_node("mcl_ocean:kelp_"..surfaces[s][1], { + _tt_help = tt_help, _doc_items_entry_name = desc, _doc_items_longdesc = doc_longdesc, _doc_items_create_entry = doc_create, diff --git a/mods/ITEMS/mcl_ocean/sea_pickle.lua b/mods/ITEMS/mcl_ocean/sea_pickle.lua index 2b0edf99..9163a1eb 100644 --- a/mods/ITEMS/mcl_ocean/sea_pickle.lua +++ b/mods/ITEMS/mcl_ocean/sea_pickle.lua @@ -67,11 +67,12 @@ local ontop = "dead_brain_coral_block" local canonical = "mcl_ocean:sea_pickle_1_"..ontop for s=1,4 do - local desc, doc_desc, doc_use, doc_create, nici, img, img_off, on_place + local desc, doc_desc, doc_use, doc_create, tt_help, nici, img, img_off, on_place if s == 1 then desc = S("Sea Pickle") doc_desc = S("Sea pickles grow on dead brain coral blocks and provide light when underwater. They come in 4 sizes that vary in brightness.") doc_use = S("It can only be placed on top of dead brain coral blocks. Placing a sea pickle on another sea pickle will make it grow and brighter.") + tt_help = S("Glows when underwater").."\n"..S("4 possible sizes").."\n"..S("Grows on dead brain coral block") img = "mcl_ocean_sea_pickle_item.png" on_place = sea_pickle_on_place else @@ -88,6 +89,7 @@ for s=1,4 do minetest.register_node("mcl_ocean:sea_pickle_"..s.."_"..ontop, { description = desc, + _tt_help = tt_help, _doc_items_create_entry = doc_create, _doc_items_longdesc = doc_desc, _doc_items_usagehelp = doc_use, diff --git a/mods/ITEMS/mcl_ocean/seagrass.lua b/mods/ITEMS/mcl_ocean/seagrass.lua index 55435ad8..11406976 100644 --- a/mods/ITEMS/mcl_ocean/seagrass.lua +++ b/mods/ITEMS/mcl_ocean/seagrass.lua @@ -99,9 +99,10 @@ for s=1, #surfaces do sounds.dig = leaf_sounds.dig sounds.dug = leaf_sounds.dug sounds.place = leaf_sounds.place - local doc_longdesc, doc_img, desc + local tt_help, doc_longdesc, doc_img, desc if surfaces[s][1] == "dirt" then doc_longdesc = S("Seagrass grows inside water on top of dirt, sand or gravel.") + tt_help = S("Grows in water on dirt, sand, gravel") desc = S("Seagrass") doc_create = true doc_img = "mcl_ocean_seagrass.png" @@ -109,6 +110,7 @@ for s=1, #surfaces do doc_create = false end minetest.register_node("mcl_ocean:seagrass_"..surfaces[s][1], { + _tt_help = tt_help, _doc_items_entry_name = desc, _doc_items_longdesc = doc_longdesc, _doc_items_create_entry = doc_create, diff --git a/mods/ITEMS/mcl_portals/portal_end.lua b/mods/ITEMS/mcl_portals/portal_end.lua index a790a7b6..80b832ef 100644 --- a/mods/ITEMS/mcl_portals/portal_end.lua +++ b/mods/ITEMS/mcl_portals/portal_end.lua @@ -24,6 +24,7 @@ end -- End portal minetest.register_node("mcl_portals:portal_end", { description = S("End Portal"), + _tt_help = S("Used to construct end portals"), _doc_items_longdesc = S("An End portal teleports creatures and objects to the mysterious End dimension (and back!)."), _doc_items_usagehelp = S("Hop into the portal to teleport. Entering an End portal in the Overworld teleports you to a fixed position in the End dimension and creates a 5×5 obsidian platform at your destination. End portals in the End will lead back to your spawn point in the Overworld."), tiles = { @@ -309,6 +310,7 @@ end minetest.register_node("mcl_portals:end_portal_frame", { description = S("End Portal Frame"), + _tt_help = S("Used to construct end portals"), _doc_items_longdesc = S("End portal frames are used in the construction of End portals. Each block has a socket for an eye of ender.") .. "\n" .. S("NOTE: The End dimension is currently incomplete and might change in future versions."), _doc_items_usagehelp = S("To create an End portal, you need 12 end portal frames and 12 eyes of ender. The end portal frames have to be arranged around a horizontal 3×3 area with each block facing inward. Any other arrangement will fail.") .. "\n" .. S("Place an eye of ender into each block. The end portal appears in the middle after placing the final eye.") .. "\n" .. S("Once placed, an eye of ender can not be taken back."), groups = { creative_breakable = 1, deco_block = 1, end_portal_frame = 1 }, diff --git a/mods/ITEMS/mcl_potions/init.lua b/mods/ITEMS/mcl_potions/init.lua index 0fc24d65..73663673 100644 --- a/mods/ITEMS/mcl_potions/init.lua +++ b/mods/ITEMS/mcl_potions/init.lua @@ -20,6 +20,7 @@ minetest.register_craft({ minetest.register_craftitem("mcl_potions:glass_bottle", { description = S("Glass Bottle"), + _tt_help = S("Liquid container"), _doc_items_longdesc = S("A glass bottle is used as a container for liquids and can be used to collect water directly."), _doc_items_usagehelp = S("To collect water, it on a cauldron with water (which removes a level of water) or any water source (which removes no water)."), inventory_image = "mcl_potions_potion_bottle_empty.png", @@ -159,6 +160,7 @@ end minetest.register_craftitem("mcl_potions:potion_water", { description = S("Water Bottle"), + _tt_help = S("No effect"), _doc_items_longdesc = S("Water bottles can be used to fill cauldrons. Drinking water has no effect."), _doc_items_usagehelp = S("Use the “Place” key to drink. Place this item on a cauldron to pour the water into the cauldron."), stack_max = 1, @@ -203,6 +205,7 @@ minetest.register_craftitem("mcl_potions:potion_water", { minetest.register_craftitem("mcl_potions:potion_river_water", { description = S("River Water Bottle"), + _tt_help = S("No effect"), _doc_items_longdesc = S("River water bottles can be used to fill cauldrons. Drinking it has no effect."), _doc_items_usagehelp = S("Use the “Place” key to drink. Place this item on a cauldron to pour the river water into the cauldron."), @@ -252,6 +255,7 @@ local how_to_drink = S("Use the “Place” key to drink it.") minetest.register_craftitem("mcl_potions:potion_awkward", { description = S("Awkward Potion"), + _tt_help = S("No effect"), _doc_items_longdesc = S("This potion has an awkward taste and is used for brewing more potions. Drinking it has no effect."), _doc_items_usagehelp = how_to_drink, stack_max = 1, @@ -264,6 +268,7 @@ minetest.register_craftitem("mcl_potions:potion_awkward", { }) minetest.register_craftitem("mcl_potions:potion_mundane", { description = S("Mundane Potion"), + _tt_help = S("No effect"), _doc_items_longdesc = S("This potion has a clean taste and is used for brewing more potions. Drinking it has no effect."), _doc_items_usagehelp = how_to_drink, stack_max = 1, @@ -276,6 +281,7 @@ minetest.register_craftitem("mcl_potions:potion_mundane", { }) minetest.register_craftitem("mcl_potions:potion_thick", { description = S("Thick Potion"), + _tt_help = S("No effect"), _doc_items_longdesc = S("This potion has a bitter taste and is used for brewing more potions. Drinking it has no effect."), _doc_items_usagehelp = how_to_drink, stack_max = 1, diff --git a/mods/ITEMS/mcl_signs/init.lua b/mods/ITEMS/mcl_signs/init.lua index a4e6b3b1..3127b532 100644 --- a/mods/ITEMS/mcl_signs/init.lua +++ b/mods/ITEMS/mcl_signs/init.lua @@ -278,6 +278,7 @@ end minetest.register_node("mcl_signs:wall_sign", { description = S("Sign"), + _tt_help = S("Can be written"), _doc_items_longdesc = S("Signs can be written and come in two variants: Wall sign and sign on a sign post. Signs can be placed on the top and the sides of other blocks, but not below them."), _doc_items_usagehelp = S("After placing the sign, you can write something on it. You have 4 lines of text with up to 15 characters for each line; anything beyond these limits is lost. Not all characters are supported. The text can not be changed once it has been written; you have to break and place the sign again."), inventory_image = "default_sign.png", diff --git a/mods/ITEMS/mcl_sponges/init.lua b/mods/ITEMS/mcl_sponges/init.lua index 23ab7116..28edb4f7 100644 --- a/mods/ITEMS/mcl_sponges/init.lua +++ b/mods/ITEMS/mcl_sponges/init.lua @@ -37,6 +37,7 @@ end minetest.register_node("mcl_sponges:sponge", { description = S("Sponge"), + _tt_help = S("Removes water on contact"), _doc_items_longdesc = S("Sponges are blocks which remove water around them when they are placed or come in contact with water, turning it into a wet sponge."), drawtype = "normal", is_ground_content = false, @@ -95,6 +96,7 @@ minetest.register_node("mcl_sponges:sponge", { minetest.register_node("mcl_sponges:sponge_wet", { description = S("Waterlogged Sponge"), + _tt_help = S("Can be dried in furnace"), _doc_items_longdesc = S("A waterlogged sponge can be dried in the furnace to turn it into (dry) sponge. When there's an empty bucket in the fuel slot of a furnace, the water will pour into the bucket."), drawtype = "normal", is_ground_content = false, @@ -113,6 +115,7 @@ minetest.register_node("mcl_sponges:sponge_wet", { if minetest.get_modpath("mclx_core") then minetest.register_node("mcl_sponges:sponge_wet_river_water", { description = S("Riverwaterlogged Sponge"), + _tt_help = S("Can be dried in furnace"), _doc_items_longdesc = S("This is a sponge soaking wet with river water. It can be dried in the furnace to turn it into (dry) sponge. When there's an empty bucket in the fuel slot of the furnace, the river water will pour into the bucket.") .. "\n" .. S("A sponge becomes riverwaterlogged (instead of waterlogged) if it sucks up more river water than (normal) water."), drawtype = "normal", is_ground_content = false, diff --git a/mods/ITEMS/mcl_throwing/init.lua b/mods/ITEMS/mcl_throwing/init.lua index b1d9db37..7e9249a6 100644 --- a/mods/ITEMS/mcl_throwing/init.lua +++ b/mods/ITEMS/mcl_throwing/init.lua @@ -393,6 +393,7 @@ local how_to_throw = S("Use the punch key to throw.") -- Snowball minetest.register_craftitem("mcl_throwing:snowball", { description = S("Snowball"), + _tt_help = S("Throwable"), _doc_items_longdesc = S("Snowballs can be thrown or launched from a dispenser for fun. Hitting something with a snowball does nothing."), _doc_items_usagehelp = how_to_throw, inventory_image = "mcl_throwing_snowball.png", @@ -405,6 +406,7 @@ minetest.register_craftitem("mcl_throwing:snowball", { -- Egg minetest.register_craftitem("mcl_throwing:egg", { description = S("Egg"), + _tt_help = S("Throwable").."\n"..S("Chance to hatch chicks when broken"), _doc_items_longdesc = S("Eggs can be thrown or launched from a dispenser and breaks on impact. There is a small chance that 1 or even 4 chicks will pop out of the egg."), _doc_items_usagehelp = how_to_throw, inventory_image = "mcl_throwing_egg.png", @@ -417,6 +419,7 @@ minetest.register_craftitem("mcl_throwing:egg", { -- Ender Pearl minetest.register_craftitem("mcl_throwing:ender_pearl", { description = S("Ender Pearl"), + _tt_help = S("Throwable").."\n"..S("Teleports you on impact for cost of 5 HP"), _doc_items_longdesc = S("An ender pearl is an item which can be used for teleportation at the cost of health. It can be thrown and teleport the thrower to its impact location when it hits a solid block or a plant. Each teleportation hurts the user by 5 hit points."), _doc_items_usagehelp = how_to_throw, wield_image = "mcl_throwing_ender_pearl.png", diff --git a/mods/ITEMS/mcl_tnt/init.lua b/mods/ITEMS/mcl_tnt/init.lua index 47864bfa..4218af00 100644 --- a/mods/ITEMS/mcl_tnt/init.lua +++ b/mods/ITEMS/mcl_tnt/init.lua @@ -98,6 +98,7 @@ minetest.register_node("mcl_tnt:tnt", { description = S("TNT"), paramtype = "light", sunlight_propagates = true, + _tt_help = S("Ignited by tools, explosions, fire, lava, redstone").."\n"..S("Explosion radius: @1", tostring(TNT_RANGE)), _doc_items_longdesc = longdesc, _doc_items_usagehelp = S("Place the TNT and ignite it with one of the methods above. Quickly get in safe distance. The TNT will start to be affected by gravity and explodes in 4 seconds."), groups = { dig_immediate = 3, tnt = 1, enderman_takable=1 }, From e4fb7ae533615172592fd7335b9d3e1bc2742a14 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Wed, 19 Feb 2020 15:53:51 +0100 Subject: [PATCH 542/737] Add punch_attack_uses to weapons --- mods/ITEMS/mcl_farming/hoes.lua | 33 +++++++++++++++++++++++---------- mods/ITEMS/mcl_tools/init.lua | 20 ++++++++++++++++++++ 2 files changed, 43 insertions(+), 10 deletions(-) diff --git a/mods/ITEMS/mcl_farming/hoes.lua b/mods/ITEMS/mcl_farming/hoes.lua index 04105b0a..e48e8a43 100644 --- a/mods/ITEMS/mcl_farming/hoes.lua +++ b/mods/ITEMS/mcl_farming/hoes.lua @@ -49,6 +49,14 @@ local hoe_on_place_function = function(wear_divisor) end end +local uses = { + wood = 60, + stone = 132, + iron = 251, + gold = 33, + diamond = 1561, +} + local hoe_longdesc = S("Hoes are essential tools for growing crops. They are used to create farmland in order to plant seeds on it. Hoes can also be used as very weak weapons in a pinch.") local hoe_usagehelp = S("Use the hoe on a cultivatable block (by rightclicking it) to turn it into farmland. Dirt, grass blocks and grass paths are cultivatable blocks. Using a hoe on coarse dirt turns it into dirt.") @@ -58,11 +66,12 @@ minetest.register_tool("mcl_farming:hoe_wood", { _doc_items_usagehelp = hoe_usagehelp, _doc_items_hidden = false, inventory_image = "farming_tool_woodhoe.png", - on_place = hoe_on_place_function(60), + on_place = hoe_on_place_function(uses.wood), groups = { tool=1, hoe=1 }, tool_capabilities = { full_punch_interval = 1, - damage_groups = { fleshy = 1, } + damage_groups = { fleshy = 1, }, + punch_attack_uses = uses.wood, }, _repair_material = "group:wood", }) @@ -94,11 +103,12 @@ minetest.register_tool("mcl_farming:hoe_stone", { _doc_items_longdesc = hoe_longdesc, _doc_items_usagehelp = hoe_usagehelp, inventory_image = "farming_tool_stonehoe.png", - on_place = hoe_on_place_function(132), + on_place = hoe_on_place_function(uses.stone), groups = { tool=1, hoe=1 }, tool_capabilities = { full_punch_interval = 0.5, - damage_groups = { fleshy = 1, } + damage_groups = { fleshy = 1, }, + punch_attack_uses = uses.stone, }, _repair_material = "mcl_core:cobblestone", }) @@ -125,12 +135,13 @@ minetest.register_tool("mcl_farming:hoe_iron", { _doc_items_longdesc = hoe_longdesc, _doc_items_usagehelp = hoe_usagehelp, inventory_image = "farming_tool_steelhoe.png", - on_place = hoe_on_place_function(251), + on_place = hoe_on_place_function(uses.iron), groups = { tool=1, hoe=1 }, tool_capabilities = { -- 1/3 full_punch_interval = 0.33333333, - damage_groups = { fleshy = 1, } + damage_groups = { fleshy = 1, }, + punch_attack_uses = uses.iron, }, _repair_material = "mcl_core:iron_ingot", }) @@ -164,11 +175,12 @@ minetest.register_tool("mcl_farming:hoe_gold", { _doc_items_longdesc = hoe_longdesc, _doc_items_usagehelp = hoe_usagehelp, inventory_image = "farming_tool_goldhoe.png", - on_place = hoe_on_place_function(33), + on_place = hoe_on_place_function(uses.gold), groups = { tool=1, hoe=1 }, tool_capabilities = { full_punch_interval = 1, - damage_groups = { fleshy = 1, } + damage_groups = { fleshy = 1, }, + punch_attack_uses = uses.gold, }, _repair_material = "mcl_core:gold_ingot", }) @@ -204,11 +216,12 @@ minetest.register_tool("mcl_farming:hoe_diamond", { _doc_items_longdesc = hoe_longdesc, _doc_items_usagehelp = hoe_usagehelp, inventory_image = "farming_tool_diamondhoe.png", - on_place = hoe_on_place_function(1562), + on_place = hoe_on_place_function(uses.diamond), groups = { tool=1, hoe=1 }, tool_capabilities = { full_punch_interval = 0.25, - damage_groups = { fleshy = 1, } + damage_groups = { fleshy = 1, }, + punch_attack_uses = uses.diamond, }, _repair_material = "mcl_core:diamond", }) diff --git a/mods/ITEMS/mcl_tools/init.lua b/mods/ITEMS/mcl_tools/init.lua index bb8f620c..31d091c6 100644 --- a/mods/ITEMS/mcl_tools/init.lua +++ b/mods/ITEMS/mcl_tools/init.lua @@ -87,6 +87,7 @@ minetest.register_tool("mcl_tools:pick_wood", { pickaxey_dig_wood = {times=mcl_autogroup.digtimes.pickaxey_dig_wood, uses=60, maxlevel=0}, }, damage_groups = {fleshy=2}, + punch_attack_uses = 30, }, sound = { breaks = "default_tool_breaks" }, _repair_material = "group:wood", @@ -104,6 +105,7 @@ minetest.register_tool("mcl_tools:pick_stone", { pickaxey_dig_stone = {times=mcl_autogroup.digtimes.pickaxey_dig_stone, uses=132, maxlevel=0}, }, damage_groups = {fleshy=3}, + punch_attack_uses = 66, }, sound = { breaks = "default_tool_breaks" }, _repair_material = "mcl_core:cobble", @@ -121,6 +123,7 @@ minetest.register_tool("mcl_tools:pick_iron", { pickaxey_dig_iron = {times=mcl_autogroup.digtimes.pickaxey_dig_iron , uses=251, maxlevel=0}, }, damage_groups = {fleshy=4}, + punch_attack_uses = 126, }, sound = { breaks = "default_tool_breaks" }, _repair_material = "mcl_core:iron_ingot", @@ -138,6 +141,7 @@ minetest.register_tool("mcl_tools:pick_gold", { pickaxey_dig_gold = {times=mcl_autogroup.digtimes.pickaxey_dig_gold , uses=33, maxlevel=0}, }, damage_groups = {fleshy=2}, + punch_attack_uses = 17, }, sound = { breaks = "default_tool_breaks" }, _repair_material = "mcl_core:gold_ingot", @@ -155,6 +159,7 @@ minetest.register_tool("mcl_tools:pick_diamond", { pickaxey_dig_diamond = {times=mcl_autogroup.digtimes.pickaxey_dig_diamond, uses=1562, maxlevel=0}, }, damage_groups = {fleshy=5}, + punch_attack_uses = 781, }, sound = { breaks = "default_tool_breaks" }, _repair_material = "mcl_core:diamond", @@ -272,6 +277,7 @@ minetest.register_tool("mcl_tools:shovel_wood", { shovely_dig_wood = {times=mcl_autogroup.digtimes.shovely_dig_wood, uses=60, maxlevel=0}, }, damage_groups = {fleshy=2}, + punch_attack_uses = 30, }, on_place = make_grass_path, sound = { breaks = "default_tool_breaks" }, @@ -291,6 +297,7 @@ minetest.register_tool("mcl_tools:shovel_stone", { shovely_dig_stone = {times=mcl_autogroup.digtimes.shovely_dig_stone, uses=132, maxlevel=0}, }, damage_groups = {fleshy=3}, + punch_attack_uses = 66, }, on_place = make_grass_path, sound = { breaks = "default_tool_breaks" }, @@ -310,6 +317,7 @@ minetest.register_tool("mcl_tools:shovel_iron", { shovely_dig_iron = {times=mcl_autogroup.digtimes.shovely_dig_iron, uses=251, maxlevel=0}, }, damage_groups = {fleshy=4}, + punch_attack_uses = 126, }, on_place = make_grass_path, sound = { breaks = "default_tool_breaks" }, @@ -329,6 +337,7 @@ minetest.register_tool("mcl_tools:shovel_gold", { shovely_dig_gold = {times=mcl_autogroup.digtimes.shovely_dig_gold, uses=33, maxlevel=0}, }, damage_groups = {fleshy=2}, + punch_attack_uses = 17, }, on_place = make_grass_path, sound = { breaks = "default_tool_breaks" }, @@ -348,6 +357,7 @@ minetest.register_tool("mcl_tools:shovel_diamond", { shovely_dig_diamond = {times=mcl_autogroup.digtimes.shovely_dig_diamond, uses=1562, maxlevel=0}, }, damage_groups = {fleshy=5}, + punch_attack_uses = 781, }, on_place = make_grass_path, sound = { breaks = "default_tool_breaks" }, @@ -368,6 +378,7 @@ minetest.register_tool("mcl_tools:axe_wood", { axey_dig_wood = {times=mcl_autogroup.digtimes.axey_dig_wood, uses=60, maxlevel=0}, }, damage_groups = {fleshy=7}, + punch_attack_uses = 30, }, sound = { breaks = "default_tool_breaks" }, _repair_material = "group:wood", @@ -384,6 +395,7 @@ minetest.register_tool("mcl_tools:axe_stone", { axey_dig_stone = {times=mcl_autogroup.digtimes.axey_dig_stone, uses=132, maxlevel=0}, }, damage_groups = {fleshy=9}, + punch_attack_uses = 66, }, sound = { breaks = "default_tool_breaks" }, _repair_material = "mcl_core:cobble", @@ -401,6 +413,7 @@ minetest.register_tool("mcl_tools:axe_iron", { axey_dig_iron = {times=mcl_autogroup.digtimes.axey_dig_iron, uses=251, maxlevel=0}, }, damage_groups = {fleshy=9}, + punch_attack_uses = 126, }, sound = { breaks = "default_tool_breaks" }, _repair_material = "mcl_core:iron_ingot", @@ -417,6 +430,7 @@ minetest.register_tool("mcl_tools:axe_gold", { axey_dig_gold= {times=mcl_autogroup.digtimes.axey_dig_gold, uses=33, maxlevel=0}, }, damage_groups = {fleshy=7}, + punch_attack_uses = 17, }, sound = { breaks = "default_tool_breaks" }, _repair_material = "mcl_core:gold_ingot", @@ -433,6 +447,7 @@ minetest.register_tool("mcl_tools:axe_diamond", { axey_dig_diamond = {times=mcl_autogroup.digtimes.axey_dig_diamond, uses=1562, maxlevel=0}, }, damage_groups = {fleshy=9}, + punch_attack_uses = 781, }, sound = { breaks = "default_tool_breaks" }, _repair_material = "mcl_core:diamond", @@ -453,6 +468,7 @@ minetest.register_tool("mcl_tools:sword_wood", { swordy_cobweb_dig = {times=mcl_autogroup.digtimes.swordy_cobweb_dig , uses=60, maxlevel=0}, }, damage_groups = {fleshy=4}, + punch_attack_uses = 60, }, sound = { breaks = "default_tool_breaks" }, _repair_material = "group:wood", @@ -470,6 +486,7 @@ minetest.register_tool("mcl_tools:sword_stone", { swordy_cobweb_dig = {times=mcl_autogroup.digtimes.swordy_cobweb_dig , uses=132, maxlevel=0}, }, damage_groups = {fleshy=5}, + punch_attack_uses = 132, }, sound = { breaks = "default_tool_breaks" }, _repair_material = "mcl_core:cobble", @@ -487,6 +504,7 @@ minetest.register_tool("mcl_tools:sword_iron", { swordy_cobweb_dig = {times=mcl_autogroup.digtimes.swordy_cobweb_dig , uses=251, maxlevel=0}, }, damage_groups = {fleshy=6}, + punch_attack_uses = 251, }, sound = { breaks = "default_tool_breaks" }, _repair_material = "mcl_core:iron_ingot", @@ -504,6 +522,7 @@ minetest.register_tool("mcl_tools:sword_gold", { swordy_cobweb_dig = {times=mcl_autogroup.digtimes.swordy_cobweb_dig, uses=33, maxlevel=0}, }, damage_groups = {fleshy=4}, + punch_attack_uses = 33, }, sound = { breaks = "default_tool_breaks" }, _repair_material = "mcl_core:gold_ingot", @@ -521,6 +540,7 @@ minetest.register_tool("mcl_tools:sword_diamond", { swordy_cobweb_dig = {times=mcl_autogroup.digtimes.swordy_cobweb_dig, uses=1562, maxlevel=0}, }, damage_groups = {fleshy=7}, + punch_attack_uses = 1562, }, sound = { breaks = "default_tool_breaks" }, _repair_material = "mcl_core:diamond", From 589b750d0a2cb36caab6ccdcaea2a82816a61c77 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Wed, 19 Feb 2020 16:47:57 +0100 Subject: [PATCH 543/737] Add tool wear for punching mobs --- mods/ENTITIES/mcl_mobs/api.lua | 27 ++++++++++++++++++++------- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/mods/ENTITIES/mcl_mobs/api.lua b/mods/ENTITIES/mcl_mobs/api.lua index cf5d30d2..312604a2 100644 --- a/mods/ENTITIES/mcl_mobs/api.lua +++ b/mods/ENTITIES/mcl_mobs/api.lua @@ -2623,13 +2623,24 @@ local mob_punch = function(self, hitter, tflp, tool_capabilities, dir) punch_interval = tool_capabilities.full_punch_interval or 1.4 end - -- add weapon wear + -- add weapon wear manually + -- Required because we have custom health handling ("health" property) if minetest.settings:get_bool("creative_mode") ~= true - and weapon:get_definition() - and weapon:get_definition().tool_capabilities then - - weapon:add_wear(floor((punch_interval / 75) * 9000)) - hitter:set_wielded_item(weapon) + and tool_capabilities then + if tool_capabilities.punch_attack_uses then + -- Without this delay, the wear does not work. Quite hacky ... + minetest.after(0, function(name) + local player = minetest.get_player_by_name(name) + if not player then return end + local weapon = hitter:get_wielded_item(player) + local def = weapon:get_definition() + if def.tool_capabilities and def.tool_capabilities.punch_attack_uses then + local wear = floor(65535/tool_capabilities.punch_attack_uses) + weapon:add_wear(wear) + hitter:set_wielded_item(weapon) + end + end, hitter:get_player_name()) + end end local die = false @@ -2921,7 +2932,9 @@ local mob_activate = function(self, staticdata, def, dtime) self.path.following = false -- currently following path? self.path.stuck_timer = 0 -- if stuck for too long search for path - -- mob defaults + -- Armor groups + -- immortal=1 because we use custom health + -- handling (using "health" property) local armor if type(self.armor) == "table" then armor = table.copy(self.armor) From 6096b8dd9a149799ff0fad4ce14768fddfe058fc Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Wed, 19 Feb 2020 17:07:42 +0100 Subject: [PATCH 544/737] Fix translation placeholder in mcl_hunger --- mods/PLAYER/mcl_hunger/locale/mcl_hunger.de.tr | 2 +- mods/PLAYER/mcl_hunger/locale/mcl_hunger.es.tr | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/PLAYER/mcl_hunger/locale/mcl_hunger.de.tr b/mods/PLAYER/mcl_hunger/locale/mcl_hunger.de.tr index 7a04e091..8cf10946 100644 --- a/mods/PLAYER/mcl_hunger/locale/mcl_hunger.de.tr +++ b/mods/PLAYER/mcl_hunger/locale/mcl_hunger.de.tr @@ -5,4 +5,4 @@ Saturation=Sättigung %s: %.1f/%d=%s: %.1f Exhaust.=Erschöpf. %s: %d/%d=%s: %d/%d -@1 starved to death.=%1 verhungerte. +@1 starved to death.=@1 verhungerte. diff --git a/mods/PLAYER/mcl_hunger/locale/mcl_hunger.es.tr b/mods/PLAYER/mcl_hunger/locale/mcl_hunger.es.tr index 5ecd770e..15396a6d 100644 --- a/mods/PLAYER/mcl_hunger/locale/mcl_hunger.es.tr +++ b/mods/PLAYER/mcl_hunger/locale/mcl_hunger.es.tr @@ -5,4 +5,4 @@ Saturation=Saturación %s: %.1f/%d=%s: %.1f Exhaust.=Cansado. %s: %d/%d=%s: %d/%d -@1 starved to death.=%1 ha muerto de hambre. +@1 starved to death.=@1 ha muerto de hambre. From 4926f8d44337c9f307975e182a25abe7ed6b4cd9 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Wed, 19 Feb 2020 17:24:35 +0100 Subject: [PATCH 545/737] Mobs: Respect fall_damage_add_percent --- mods/ENTITIES/mcl_mobs/api.lua | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/mods/ENTITIES/mcl_mobs/api.lua b/mods/ENTITIES/mcl_mobs/api.lua index 312604a2..b0152f5c 100644 --- a/mods/ENTITIES/mcl_mobs/api.lua +++ b/mods/ENTITIES/mcl_mobs/api.lua @@ -2518,12 +2518,20 @@ local falling = function(self, pos) if d > 5 then - self.health = self.health - floor(d - 5) + local add = minetest.get_item_group(self.standing_on, "fall_damage_add_percent") + local damage = d - 5 + if add ~= 0 then + damage = damage + damage * (add/100) + end + damage = floor(damage) + if damage > 0 then + self.health = self.health - damage - effect(pos, 5, "tnt_smoke.png", 1, 2, 2, nil) + effect(pos, 5, "tnt_smoke.png", 1, 2, 2, nil) - if check_for_death(self, "fall", {type = "fall"}) then - return + if check_for_death(self, "fall", {type = "fall"}) then + return + end end end From 4ece91fde4d7efcdfa3902c14668158e4b107693 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Wed, 19 Feb 2020 22:28:18 +0100 Subject: [PATCH 546/737] Make squids larger --- mods/ENTITIES/mobs_mc/squid.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/ENTITIES/mobs_mc/squid.lua b/mods/ENTITIES/mobs_mc/squid.lua index 3b045a3b..6ad1b413 100644 --- a/mods/ENTITIES/mobs_mc/squid.lua +++ b/mods/ENTITIES/mobs_mc/squid.lua @@ -14,7 +14,7 @@ mobs:register_mob("mobs_mc:squid", { hp_max = 10, armor = 100, -- FIXME: If the squid is near the floor, it turns black - collisionbox = {-0.4, 0.1, -0.4, 0.4, 0.9, 0.4}, + collisionbox = {-0.4, 0.0, -0.4, 0.4, 0.9, 0.4}, visual = "mesh", mesh = "mobs_mc_squid.b3d", textures = { @@ -40,7 +40,7 @@ mobs:register_mob("mobs_mc:squid", { min = 1, max = 3,}, }, - visual_size = {x=1.75, y=1.75}, + visual_size = {x=3, y=3}, makes_footstep_sound = false, stepheight = 0.1, fly = true, From 401382106f40205bd616fa9c5be9d1ae432102ed Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sat, 22 Feb 2020 20:47:25 +0100 Subject: [PATCH 547/737] Fix crash when riding player leaves --- mods/ENTITIES/mcl_mobs/api.lua | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/mods/ENTITIES/mcl_mobs/api.lua b/mods/ENTITIES/mcl_mobs/api.lua index b0152f5c..9ccd43a0 100644 --- a/mods/ENTITIES/mcl_mobs/api.lua +++ b/mods/ENTITIES/mcl_mobs/api.lua @@ -2791,6 +2791,13 @@ local mob_punch = function(self, hitter, tflp, tool_capabilities, dir) end end +local mob_detach_child = function(self, child) + + if self.driver == child then + self.driver = nil + end + +end -- get entity staticdata local mob_staticdata = function(self) @@ -3362,6 +3369,8 @@ minetest.register_entity(name, { on_grown = def.on_grown, + on_detach_child = mob_detach_child, + on_activate = function(self, staticdata, dtime) return mob_activate(self, staticdata, def, dtime) end, From 4466383122840714d4264c5f3eb4afb37cac661f Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sat, 22 Feb 2020 20:53:21 +0100 Subject: [PATCH 548/737] Version 0.59.0 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index d777ab9d..70853d25 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ An unofficial Minecraft-like game for Minetest. Forked from MineClone by davedevils. Developed by Wuzzy and contributors. Not developed or endorsed by Mojang AB. -Version: 0.58.1 +Version: 0.59.0 ### Gameplay You start in a randomly-generated world made entirely of cubes. You can explore From fbd5374085bf502c21598813e634e7caf006d2df Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sun, 23 Feb 2020 16:17:04 +0100 Subject: [PATCH 549/737] Don't drip water+lava thru glass --- mods/ENTITIES/drippingwater/init.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/ENTITIES/drippingwater/init.lua b/mods/ENTITIES/drippingwater/init.lua index 6e23183f..46bfa1fa 100644 --- a/mods/ENTITIES/drippingwater/init.lua +++ b/mods/ENTITIES/drippingwater/init.lua @@ -93,7 +93,7 @@ minetest.register_entity("drippingwater:drop_lava", { minetest.register_abm( { label = "Create water drops", - nodenames = {"group:solid"}, + nodenames = {"group:opaque", "group:leaves"}, neighbors = {"group:water"}, interval = 2, chance = 22, @@ -111,7 +111,7 @@ minetest.register_abm( minetest.register_abm( { label = "Create lava drops", - nodenames = {"group:solid"}, + nodenames = {"group:opaque"}, neighbors = {"group:lava"}, interval = 2, chance = 22, From f93d3a897e8ac8c7207ebe31cb585ffcce7d75b7 Mon Sep 17 00:00:00 2001 From: wuniversales Date: Sun, 23 Feb 2020 16:26:21 +0100 Subject: [PATCH 550/737] Update Spanish translation --- mods/ITEMS/mcl_core/locale/mcl_core.es.tr | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/mods/ITEMS/mcl_core/locale/mcl_core.es.tr b/mods/ITEMS/mcl_core/locale/mcl_core.es.tr index 0a0b90c4..2750b9fa 100644 --- a/mods/ITEMS/mcl_core/locale/mcl_core.es.tr +++ b/mods/ITEMS/mcl_core/locale/mcl_core.es.tr @@ -64,8 +64,8 @@ Clay balls are a raw material, mainly used to create bricks in the furnace.=Las Clay is a versatile kind of earth commonly found at beaches underwater.=La arcilla es un tipo de tierra versátil que se encuentra comúnmente en las playas bajo el agua. Coal=Carbón Coal Ore=Mena de Carbón -Coarse Dirt=Suciedad gruesa -Coarse dirt acts as a soil for some plants and is similar to dirt, but it will never grow a cover.=La suciedad gruesa actúa como un suelo para algunas plantas y es similar a la suciedad, pero nunca crecerá una cubierta. +Coarse Dirt=Tierra estéril +Coarse dirt acts as a soil for some plants and is similar to dirt, but it will never grow a cover.=La tierra gruesa actúa como un suelo para algunas plantas y es similar a la tierra, pero nunca crecerá una cubierta. Cobblestone=Roca Cobweb=Telaraña Cobwebs can be walked through, but significantly slow you down.=Las telarañas se pueden atravesar, pero disminuyen significativamente la velocidad. @@ -145,7 +145,7 @@ Molten iron. It is used to craft armor, tools, and whatnot.=Hierro fundido. Se u Mossy Cobblestone=Roca musgosa Mossy Stone Bricks=Ladrillo de piedra musgoso Mycelium=Micelio -Mycelium is a type of dirt and the ideal soil for mushrooms. Unlike other dirt-type blocks, it can not be turned into farmland with a hoe. In light, mycelium slowly spreads over nearby dirt. Under an opaque block or a liquid, it eventually turns back into dirt.=El micelio es un tipo de tierra y el suelo ideal para los hongos. A diferencia de otros bloques de tipo de tierra, no se puede convertir en tierras de cultivo con una azada. A la luz, el micelio se extiende lentamente sobre la tierra cercana. Debajo de un bloque opaco o un líquido, eventualmente se convierte nuevamente en suciedad. +Mycelium is a type of dirt and the ideal soil for mushrooms. Unlike other dirt-type blocks, it can not be turned into farmland with a hoe. In light, mycelium slowly spreads over nearby dirt. Under an opaque block or a liquid, it eventually turns back into dirt.=El micelio es un tipo de tierra y el suelo ideal para los hongos. A diferencia de otros bloques de tipo de tierra, no se puede convertir en tierras de cultivo con una azada. A la luz, el micelio se extiende lentamente sobre la tierra cercana. Debajo de un bloque opaco o un líquido, eventualmente se convierte nuevamente en tierra. Oak Bark=Madera de roble sin corteza Oak Leaves=Hojas de roble Oak Sapling=Brote de roble @@ -162,7 +162,7 @@ Paper=Papel Paper is used to craft books and maps.=El papel se usa para crear libros y mapas. Pink Stained Glass=Cristal rosa Podzol=Podzol -Podzol is a type of dirt found in taiga forests. Only a few plants are able to survive on it.=El podzol es un tipo de suciedad que se encuentra en los bosques de taiga. Solo unas pocas plantas pueden sobrevivir en él. +Podzol is a type of dirt found in taiga forests. Only a few plants are able to survive on it.=El podzol es un tipo de tierra que se encuentra en los bosques de taiga. Solo unas pocas plantas pueden sobrevivir en él. Polished Andesite=Andesita pulida Polished Diorite=Diorita pulida Polished Granite=Granito pulido @@ -189,7 +189,7 @@ Smooth Red Sandstone=Arenisca roja lisa Smooth Sandstone=Arenisca lisa Smooth red sandstone is a decorative building block.=La piedra arenisca roja lisa es un elemento decorativo. Smooth sandstone is compressed sand and is a rather soft kind of stone.=La arenisca lisa es arena comprimida y es un tipo de piedra bastante blanda. -Snow=Nieve +Snow=Bloque de Nieve Some coal contained in stone, it is very common and can be found inside stone in medium to large clusters at nearly every height.=Algo de carbón contenido en la piedra, es muy común y se puede encontrar dentro de la piedra en grupos medianos a grandes en casi todas las alturas. Some iron contained in stone, it is prety common and can be found below sea level.=Algo de hierro contenido en piedra, es bastante común y se puede encontrar debajo del nivel del mar. Spruce Bark=Madera de abeto sin corteza @@ -219,8 +219,8 @@ This is a decorative block surrounded by the bark of a tree trunk.=Este es un bl This is a full block of snow. Snow of this thickness is usually found in areas of extreme cold.=Este es un bloque lleno de nieve. La nieve de este espesor generalmente se encuentra en áreas de frío extremo. This is a piece of cactus commonly found in dry areas, especially deserts. Over time, cacti will grow up to 3 blocks high on sand or red sand. A cactus hurts living beings touching it with a damage of 1 HP every half second. When a cactus block is broken, all cactus blocks connected above it will break as well.=Este es un pedazo de cactus que se encuentra comúnmente en áreas secas, especialmente en los desiertos. Con el tiempo, los cactus crecerán hasta 3 bloques de altura en arena o arena roja. Un cactus lastima a los seres vivos al tocarlo con un daño de 1 HP cada medio segundo. Cuando un bloque de cactus se rompe, todos los bloques de cactus conectados encima también se romperán. This stone contains pure gold, a rare metal.=Esta piedra contiene oro puro, un metal raro. -Top Snow=Nieve superior -Top snow is a layer of snow. It melts near light sources other than the sun with a light level of 12 or higher.=La nieve superior es una capa de nieve. Se derrite cerca de fuentes de luz distintas al sol con un nivel 12 de luz o más. +Top Snow=Nieve +Top snow is a layer of snow. It melts near light sources other than the sun with a light level of 12 or higher.=La nieve es una capa de nieve. Se derrite cerca de fuentes de luz distintas al sol con un nivel 12 de luz o más. Vines=Enredadera Vines are climbable blocks which can be placed on the sides of solid full-cube blocks. Vines slowly grow and spread.=Las enredaderas son bloques escalables que se pueden colocar a los lados de bloques sólidos de cubo completo. Las enredaderas crecen y se extienden lentamente Void=Vacío @@ -245,5 +245,5 @@ Lava interacts with water various ways:=La lava interactúa con el agua de varia • When lava is directly above water, the water turns into stone.=• Cuando la lava está directamente sobre el agua, el agua se convierte en piedra. Stained Glass=Vitral Granite is an igneous rock.=El granito es una roca ígnea. -Top snow can be stacked and has one of 8 different height levels. At levels 2-8, top snow is collidable. Top snow drops 2-9 snowballs, depending on its height.=La nieve superior se puede apilar y tiene unos 8 niveles de altura diferentes. En los niveles 2-8, la nieve superior es colisionable. La nieve superior cae de 2 a 9 bolas de nieve, dependiendo de su altura. -This block can only be placed on full solid blocks and on another top snow (which increases its height).=Este bloque solo se puede colocar en bloques sólidos completos y en otra nieve superior (lo que aumenta su altura). +Top snow can be stacked and has one of 8 different height levels. At levels 2-8, top snow is collidable. Top snow drops 2-9 snowballs, depending on its height.=La nieve se puede apilar y tiene unos 8 niveles de altura diferentes. En los niveles 2-8, la nieve es colisionable. La nieve cae de 2 a 9 bolas de nieve, dependiendo de su altura. +This block can only be placed on full solid blocks and on another top snow (which increases its height).=Este bloque solo se puede colocar en bloques sólidos completos y en otra nieve (lo que aumenta su altura). \ No newline at end of file From a375548992a17b3ad333ed4a5f88e87e50520f84 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sun, 23 Feb 2020 17:13:52 +0100 Subject: [PATCH 551/737] Heal horses differently depending on food --- mods/ENTITIES/mobs_mc/horse.lua | 43 ++++++++++++++++++++++++--------- 1 file changed, 32 insertions(+), 11 deletions(-) diff --git a/mods/ENTITIES/mobs_mc/horse.lua b/mods/ENTITIES/mobs_mc/horse.lua index c16f6208..b0379f14 100644 --- a/mods/ENTITIES/mobs_mc/horse.lua +++ b/mods/ENTITIES/mobs_mc/horse.lua @@ -184,14 +184,36 @@ local horse = { end local item = clicker:get_wielded_item() - if can_breed(self.name) and (item:get_name() == mobs_mc.items.golden_apple or item:get_name() == mobs_mc.items.golden_carrot) then + local iname = item:get_name() + local heal = 0 + if can_breed(self.name) then -- Breed horse with golden apple or golden carrot - if mobs:feed_tame(self, clicker, 1, true, false) then return end + if (iname == mobs_mc.items.golden_apple) then + heal = 10 + elseif (iname == mobs_mc.items.golden_carrot) then + heal = 4 + end + if heal > 0 and mobs:feed_tame(self, clicker, heal, true, false) then + return + end end -- Feed/tame with anything else - -- TODO: Different health bonus for feeding - if mobs:feed_tame(self, clicker, 1, false, true) then return end - if mobs:protect(self, clicker) then return end + if (iname == mobs_mc.items.sugar) then + heal = 1 + elseif (iname == mobs_mc.items.wheat) then + heal = 2 + elseif (iname == mobs_mc.items.apple) then + heal = 3 + elseif (iname == mobs_mc.items.hay_bale) then + heal = 20 + end + if heal > 0 and mobs:feed_tame(self, clicker, heal, false, true) then + return + end + + if mobs:protect(self, clicker) then + return + end -- Make sure tamed horse is mature and being clicked by owner only if self.tamed and not self.child and self.owner == clicker:get_player_name() then @@ -205,7 +227,7 @@ local horse = { -- Put on saddle if tamed elseif not self.driver and not self._saddle - and clicker:get_wielded_item():get_name() == mobs_mc.items.saddle then + and iname == mobs_mc.items.saddle then -- Put on saddle and take saddle from player's inventory local w = clicker:get_wielded_item() @@ -227,13 +249,12 @@ local horse = { -- Put on horse armor if tamed elseif can_equip_horse_armor(self.name) and not self.driver and not self._horse_armor - and minetest.get_item_group(clicker:get_wielded_item():get_name(), "horse_armor") > 0 then + and minetest.get_item_group(iname, "horse_armor") > 0 then -- Put on armor and take armor from player's inventory - local w = clicker:get_wielded_item() - local armor = minetest.get_item_group(w:get_name(), "horse_armor") - self._horse_armor = w:get_name() + local armor = minetest.get_item_group(iname, "horse_armor") + self._horse_armor = iname if not minetest.settings:get_bool("creative_mode") then w:take_item() clicker:set_wielded_item(w) @@ -265,7 +286,7 @@ local horse = { mobs.attach(self, clicker) -- Used to capture horse - elseif not self.driver and clicker:get_wielded_item():get_name() ~= "" then + elseif not self.driver and iname ~= "" then mobs:capture_mob(self, clicker, 0, 5, 60, false, nil) end end From 98e87fd5db149bf68f9ed17ea8ad5b28bcb8396d Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sun, 23 Feb 2020 20:37:42 +0100 Subject: [PATCH 552/737] mcl_attached: Check if dir is nil --- mods/CORE/mcl_attached/init.lua | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/mods/CORE/mcl_attached/init.lua b/mods/CORE/mcl_attached/init.lua index 45e1e56b..146cb225 100644 --- a/mods/CORE/mcl_attached/init.lua +++ b/mods/CORE/mcl_attached/init.lua @@ -7,15 +7,17 @@ minetest.check_single_for_falling = function(pos) local node = minetest.get_node(pos) if minetest.get_item_group(node.name, "attached_node_facedir") ~= 0 then local dir = minetest.facedir_to_dir(node.param2) - local cpos = vector.add(pos, dir) - local cnode = minetest.get_node(cpos) - if minetest.get_item_group(cnode.name, "solid") == 0 then - minetest.remove_node(pos) - local drops = minetest.get_node_drops(node.name, "") - for dr=1, #drops do - minetest.add_item(pos, drops[dr]) + if dir then + local cpos = vector.add(pos, dir) + local cnode = minetest.get_node(cpos) + if minetest.get_item_group(cnode.name, "solid") == 0 then + minetest.remove_node(pos) + local drops = minetest.get_node_drops(node.name, "") + for dr=1, #drops do + minetest.add_item(pos, drops[dr]) + end + ret = true end - ret = true end end From efb97d59a520dbc590fffc4236613612d794b429 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sun, 23 Feb 2020 20:39:13 +0100 Subject: [PATCH 553/737] Version 0.59.1 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 70853d25..de942a69 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ An unofficial Minecraft-like game for Minetest. Forked from MineClone by davedevils. Developed by Wuzzy and contributors. Not developed or endorsed by Mojang AB. -Version: 0.59.0 +Version: 0.59.1 ### Gameplay You start in a randomly-generated world made entirely of cubes. You can explore From 4cb5b26fa90f1448e63d0960caefcf59c3b8c459 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 25 Feb 2020 16:09:26 +0100 Subject: [PATCH 554/737] Fix crash in mcl_mobs --- mods/ENTITIES/mcl_mobs/api.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/ENTITIES/mcl_mobs/api.lua b/mods/ENTITIES/mcl_mobs/api.lua index 9ccd43a0..648fef2b 100644 --- a/mods/ENTITIES/mcl_mobs/api.lua +++ b/mods/ENTITIES/mcl_mobs/api.lua @@ -2095,9 +2095,9 @@ local do_states = function(self, dtime) local dist = vector.distance(p, s) -- stop attacking if player invisible or out of range - if not object_in_range(self, self.attack) - or not self.attack + if not self.attack or not self.attack:get_pos() + or not object_in_range(self, self.attack) or self.attack:get_hp() <= 0 or (self.attack:is_player() and mobs.invis[ self.attack:get_player_name() ]) then From d3d227d46bc592208211438c7ab36a78e7193cc9 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 25 Feb 2020 16:10:00 +0100 Subject: [PATCH 555/737] Version 0.59.2 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index de942a69..7e574fea 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ An unofficial Minecraft-like game for Minetest. Forked from MineClone by davedevils. Developed by Wuzzy and contributors. Not developed or endorsed by Mojang AB. -Version: 0.59.1 +Version: 0.59.2 ### Gameplay You start in a randomly-generated world made entirely of cubes. You can explore From 714634f4a0580139a47f6b2ff5d1972fd65ffb16 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 2 Mar 2020 16:43:05 +0100 Subject: [PATCH 556/737] Fix bug reporting link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 7e574fea..c3a433a5 100644 --- a/README.md +++ b/README.md @@ -182,7 +182,7 @@ Technical differences from Minecraft: ## Reporting bugs Please report all bugs and missing Minecraft features here: - + ## Other readme files From cbda2ef3263db88281d6de8efe173d22286283cc Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sun, 8 Mar 2020 03:18:47 +0100 Subject: [PATCH 557/737] Add _tt_help to many more items --- mods/ITEMS/REDSTONE/mcl_observers/init.lua | 2 +- mods/ITEMS/REDSTONE/mesecons_torch/init.lua | 3 +- mods/ITEMS/mcl_armor_stand/init.lua | 2 +- mods/ITEMS/mcl_banners/init.lua | 4 +-- mods/ITEMS/mcl_buckets/init.lua | 10 +++++-- mods/ITEMS/mcl_core/nodes_base.lua | 4 ++- mods/ITEMS/mcl_core/nodes_trees.lua | 33 ++++++++++++++++----- mods/ITEMS/mcl_doors/api_doors.lua | 21 +++++++++---- mods/ITEMS/mcl_doors/api_trapdoors.lua | 18 ++++++++--- mods/ITEMS/mcl_end/eye_of_ender.lua | 2 +- mods/ITEMS/mcl_farming/potatoes.lua | 1 + mods/ITEMS/mcl_fences/init.lua | 5 ++-- mods/ITEMS/mcl_fishing/init.lua | 1 + mods/ITEMS/mcl_mobitems/init.lua | 3 ++ mods/ITEMS/mcl_ocean/corals.lua | 2 +- mods/ITEMS/mcl_ocean/kelp.lua | 3 +- mods/ITEMS/mcl_ocean/sea_pickle.lua | 2 +- mods/ITEMS/mcl_ocean/seagrass.lua | 5 ++-- mods/ITEMS/mcl_portals/portal_end.lua | 1 + 19 files changed, 88 insertions(+), 34 deletions(-) diff --git a/mods/ITEMS/REDSTONE/mcl_observers/init.lua b/mods/ITEMS/REDSTONE/mcl_observers/init.lua index 7b4955af..7c0eb3a2 100644 --- a/mods/ITEMS/REDSTONE/mcl_observers/init.lua +++ b/mods/ITEMS/REDSTONE/mcl_observers/init.lua @@ -87,7 +87,7 @@ mesecon.register_node("mcl_observers:observer", }, { description = S("Observer"), - _tt_help = S("Observes block in front of it and sends a brief redstone pulse when it changes"), + _tt_help = S("Emits redstone pulse when block in front changes"), _doc_items_longdesc = S("An observer is a redstone component which observes the block in front of it and sends a very short redstone pulse whenever this block changes."), _doc_items_usagehelp = S("Place the observer directly in front of the block you want to observe with the “face” looking at the block. The arrow points to the side of the output, which is at the opposite side of the “face”. You can place your redstone dust or any other component here."), diff --git a/mods/ITEMS/REDSTONE/mesecons_torch/init.lua b/mods/ITEMS/REDSTONE/mesecons_torch/init.lua index cba14163..44335613 100644 --- a/mods/ITEMS/REDSTONE/mesecons_torch/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons_torch/init.lua @@ -186,7 +186,8 @@ mcl_torches.register_torch("mesecon_torch_on", S("Redstone Torch"), rules = torch_get_input_rules, action_on = torch_action_on, }, - } + }, + _tt_help = S("Provides redstone power when it's not powered itself"), } ) diff --git a/mods/ITEMS/mcl_armor_stand/init.lua b/mods/ITEMS/mcl_armor_stand/init.lua index 416a420d..88b46a34 100644 --- a/mods/ITEMS/mcl_armor_stand/init.lua +++ b/mods/ITEMS/mcl_armor_stand/init.lua @@ -89,7 +89,7 @@ end -- TODO: The armor stand should be an entity minetest.register_node("mcl_armor_stand:armor_stand", { description = S("Armor Stand"), - _tt_help = S("Display pieces of armor"), + _tt_help = S("Displays pieces of armor"), _doc_items_longdesc = S("An armor stand is a decorative object which can display different pieces of armor. Anything which players can wear as armor can also be put on an armor stand."), _doc_items_usagehelp = S("Just place an armor item on the armor stand. To take the top piece of armor from the armor stand, select your hand and use the place key on the armor stand."), drawtype = "mesh", diff --git a/mods/ITEMS/mcl_banners/init.lua b/mods/ITEMS/mcl_banners/init.lua index 6ec620d1..4b522021 100644 --- a/mods/ITEMS/mcl_banners/init.lua +++ b/mods/ITEMS/mcl_banners/init.lua @@ -195,8 +195,7 @@ end -- Standing banner node -- This one is also used for the help entry to avoid spamming the help with 16 entries. minetest.register_node("mcl_banners:standing_banner", { - _tt_help = S("Paintable"), - _doc_items_entry_name = "Banner", + _doc_items_entry_name = S("Banner"), _doc_items_image = "mcl_banners_item_base.png^mcl_banners_item_overlay.png", _doc_items_longdesc = S("Banners are tall colorful decorative blocks. They can be placed on the floor and at walls. Banners can be emblazoned with a variety of patterns using a lot of dye in crafting."), _doc_items_usagehelp = S("Use crafting to draw a pattern on top of the banner. Emblazoned banners can be emblazoned again to combine various patterns. You can draw up to 12 layers on a banner that way. If the banner includes a gradient, only 3 layers are possible.").."\n".. @@ -321,6 +320,7 @@ for colorid, colortab in pairs(mcl_banners.colors) do -- TODO: Combine the items into only 1 item. minetest.register_craftitem(itemstring, { description = desc, + _tt_help = S("Paintable decoration"), _doc_items_create_entry = false, inventory_image = inv, wield_image = inv, diff --git a/mods/ITEMS/mcl_buckets/init.lua b/mods/ITEMS/mcl_buckets/init.lua index 9b25c21a..b6e7ed00 100644 --- a/mods/ITEMS/mcl_buckets/init.lua +++ b/mods/ITEMS/mcl_buckets/init.lua @@ -55,12 +55,13 @@ end -- name = user-visible bucket description -- longdesc = long explanatory description (for help) -- usagehelp = short usage explanation (for help) +-- tt_help = very short tooltip help -- extra_check(pos, placer) = optional function(pos) which can returns false to avoid placing the liquid. -- placer is object/player who is placing the liquid, can be nil -- groups = optional list of item groups -- -- This function can be called from any mod (which depends on this one) -function mcl_buckets.register_liquid(source_place, source_take, itemname, inventory_image, name, longdesc, usagehelp, extra_check, groups) +function mcl_buckets.register_liquid(source_place, source_take, itemname, inventory_image, name, longdesc, usagehelp, tt_help, extra_check, groups) for i=1, #source_take do mcl_buckets.liquids[source_take[i]] = { source_place = source_place, @@ -77,6 +78,7 @@ function mcl_buckets.register_liquid(source_place, source_take, itemname, invent description = name, _doc_items_longdesc = longdesc, _doc_items_usagehelp = usagehelp, + _tt_help = tt_help, inventory_image = inventory_image, stack_max = 16, liquids_pointable = true, @@ -187,6 +189,7 @@ minetest.register_craftitem("mcl_buckets:bucket_empty", { description = S("Empty Bucket"), _doc_items_longdesc = S("A bucket can be used to collect and release liquids."), _doc_items_usagehelp = S("Punch a liquid source to collect it. You can then use the filled bucket to place the liquid somewhere else."), + _tt_help = S("Collects liquids"), inventory_image = "bucket.png", stack_max = 16, @@ -306,7 +309,8 @@ if mod_mcl_core then "bucket_lava.png", S("Lava Bucket"), S("A bucket can be used to collect and release liquids. This one is filled with hot lava, safely contained inside. Use with caution."), - S("Get in a safe distance and place the bucket to empty it and create a lava source at this spot. Don't burn yourself!") + S("Get in a safe distance and place the bucket to empty it and create a lava source at this spot. Don't burn yourself!"), + S("Places a lava source") ) -- Water bucket @@ -318,6 +322,7 @@ if mod_mcl_core then S("Water Bucket"), S("A bucket can be used to collect and release liquids. This one is filled with water."), S("Place it to empty the bucket and create a water source."), + S("Places a water source"), function(pos, placer) -- Check protection local placer_name = "" @@ -360,6 +365,7 @@ if mod_mclx_core then S("River Water Bucket"), S("A bucket can be used to collect and release liquids. This one is filled with river water."), S("Place it to empty the bucket and create a river water source."), + S("Places a river water source"), function(pos, placer) -- Check protection local placer_name = "" diff --git a/mods/ITEMS/mcl_core/nodes_base.lua b/mods/ITEMS/mcl_core/nodes_base.lua index 155c6372..df06c44b 100644 --- a/mods/ITEMS/mcl_core/nodes_base.lua +++ b/mods/ITEMS/mcl_core/nodes_base.lua @@ -862,10 +862,11 @@ for i=0,3 do end for i=1,8 do - local id, desc, longdesc, usagehelp, help, walkable, drawtype, node_box + local id, desc, longdesc, usagehelp, tt_help, help, walkable, drawtype, node_box if i == 1 then id = "mcl_core:snow" desc = S("Top Snow") + tt_help = S("Stackable") longdesc = S("Top snow is a layer of snow. It melts near light sources other than the sun with a light level of 12 or higher.").."\n"..S("Top snow can be stacked and has one of 8 different height levels. At levels 2-8, top snow is collidable. Top snow drops 2-9 snowballs, depending on its height.") usagehelp = S("This block can only be placed on full solid blocks and on another top snow (which increases its height).") walkable = false @@ -940,6 +941,7 @@ for i=1,8 do minetest.register_node(id, { description = desc, + _tt_help = tt_help, _doc_items_longdesc = longdesc, _doc_items_usagehelp = usagehelp, _doc_items_create_entry = help, diff --git a/mods/ITEMS/mcl_core/nodes_trees.lua b/mods/ITEMS/mcl_core/nodes_trees.lua index 92d2a7cd..ad162e5b 100644 --- a/mods/ITEMS/mcl_core/nodes_trees.lua +++ b/mods/ITEMS/mcl_core/nodes_trees.lua @@ -113,9 +113,10 @@ local register_leaves = function(subname, description, longdesc, tiles, drop1, d }) end -local register_sapling = function(subname, description, longdesc, texture, selbox) +local register_sapling = function(subname, description, longdesc, tt_help, texture, selbox) minetest.register_node("mcl_core:"..subname, { description = description, + _tt_help = tt_help, _doc_items_longdesc = longdesc, _doc_items_hidden = false, drawtype = "plantlike", @@ -169,12 +170,30 @@ register_wooden_planks("acaciawood", S("Acacia Wood Planks"), {"default_acacia_w register_wooden_planks("birchwood", S("Birch Wood Planks"), {"mcl_core_planks_birch.png"}) -register_sapling("sapling", S("Oak Sapling"), S("When placed on soil (such as dirt) and exposed to light, an oak sapling will grow into an oak after some time."), "default_sapling.png", {-5/16, -0.5, -5/16, 5/16, 0.5, 5/16}) -register_sapling("darksapling", S("Dark Oak Sapling"), S("Dark oak saplings can grow into dark oaks, but only in groups. A lonely dark oak sapling won't grow. A group of four dark oak saplings grows into a dark oak after some time when they are placed on soil (such as dirt) in a 2×2 square and exposed to light."), "mcl_core_sapling_big_oak.png", {-5/16, -0.5, -5/16, 5/16, 7/16, 5/16}) -register_sapling("junglesapling", S("Jungle Sapling"), S("When placed on soil (such as dirt) and exposed to light, a jungle sapling will grow into a jungle tree after some time. When there are 4 jungle saplings in a 2×2 square, they will grow to a huge jungle tree."), "default_junglesapling.png", {-5/16, -0.5, -5/16, 5/16, 0.5, 5/16}) -register_sapling("acaciasapling", S("Acacia Sapling"), S("When placed on soil (such as dirt) and exposed to light, an acacia sapling will grow into an acacia after some time."), "default_acacia_sapling.png", {-5/16, -0.5, -5/16, 5/16, 4/16, 5/16}) -register_sapling("sprucesapling", S("Spruce Sapling"), S("When placed on soil (such as dirt) and exposed to light, a spruce sapling will grow into a spruce after some time. When there are 4 spruce saplings in a 2×2 square, they will grow to a huge spruce."), "mcl_core_sapling_spruce.png", {-4/16, -0.5, -4/16, 4/16, 0.5, 4/16}) -register_sapling("birchsapling", S("Birch Sapling"), S("When placed on soil (such as dirt) and exposed to light, a birch sapling will grow into a birch after some time."), "mcl_core_sapling_birch.png", {-4/16, -0.5, -4/16, 4/16, 0.5, 4/16}) +register_sapling("sapling", S("Oak Sapling"), + S("When placed on soil (such as dirt) and exposed to light, an oak sapling will grow into an oak after some time."), + S("Needs soil and light to grow"), + "default_sapling.png", {-5/16, -0.5, -5/16, 5/16, 0.5, 5/16}) +register_sapling("darksapling", S("Dark Oak Sapling"), + S("Dark oak saplings can grow into dark oaks, but only in groups. A lonely dark oak sapling won't grow. A group of four dark oak saplings grows into a dark oak after some time when they are placed on soil (such as dirt) in a 2×2 square and exposed to light."), + S("Needs soil and light to grow") .. "\n" .. S("2×2 saplings required"), + "mcl_core_sapling_big_oak.png", {-5/16, -0.5, -5/16, 5/16, 7/16, 5/16}) +register_sapling("junglesapling", S("Jungle Sapling"), + S("When placed on soil (such as dirt) and exposed to light, a jungle sapling will grow into a jungle tree after some time. When there are 4 jungle saplings in a 2×2 square, they will grow to a huge jungle tree."), + S("Needs soil and light to grow") .. "\n" .. S("2×2 saplings = large tree"), + "default_junglesapling.png", {-5/16, -0.5, -5/16, 5/16, 0.5, 5/16}) +register_sapling("acaciasapling", S("Acacia Sapling"), + S("When placed on soil (such as dirt) and exposed to light, an acacia sapling will grow into an acacia after some time."), + S("Needs soil and light to grow"), + "default_acacia_sapling.png", {-5/16, -0.5, -5/16, 5/16, 4/16, 5/16}) +register_sapling("sprucesapling", S("Spruce Sapling"), + S("When placed on soil (such as dirt) and exposed to light, a spruce sapling will grow into a spruce after some time. When there are 4 spruce saplings in a 2×2 square, they will grow to a huge spruce."), + S("Needs soil and light to grow") .. "\n" .. S("2×2 saplings = large tree"), + "mcl_core_sapling_spruce.png", {-4/16, -0.5, -4/16, 4/16, 0.5, 4/16}) +register_sapling("birchsapling", S("Birch Sapling"), + S("When placed on soil (such as dirt) and exposed to light, a birch sapling will grow into a birch after some time."), + S("Needs soil and light to grow"), + "mcl_core_sapling_birch.png", {-4/16, -0.5, -4/16, 4/16, 0.5, 4/16}) register_leaves("leaves", S("Oak Leaves"), S("Oak leaves are grown from oak trees."), {"default_leaves.png"}, "mcl_core:sapling", 20, "mcl_core:apple", 200) diff --git a/mods/ITEMS/mcl_doors/api_doors.lua b/mods/ITEMS/mcl_doors/api_doors.lua index 951e4d9f..05560314 100644 --- a/mods/ITEMS/mcl_doors/api_doors.lua +++ b/mods/ITEMS/mcl_doors/api_doors.lua @@ -1,3 +1,5 @@ +local S = minetest.get_translator("mcl_doors") + -- This helper function calls on_place_node callbacks. local function on_place_node(place_to, newnode, placer, oldnode, itemstack, pointed_thing) @@ -66,26 +68,35 @@ function mcl_doors:register_door(name, def) def.selection_box_top = box end - local longdesc, usagehelp + local longdesc, usagehelp, tt_help + tt_help = def._tt_help longdesc = def._doc_items_longdesc if not longdesc then if def.only_redstone_can_open then - longdesc = "This door is a 2-block high barrier which can be opened or closed by hand or by redstone power." + longdesc = S("This door is a 2-block high barrier which can be opened or closed by hand or by redstone power.") else - longdesc = "This door is a 2-block high barrier which can only be opened by redstone power, not by hand." + longdesc = S("This door is a 2-block high barrier which can only be opened by redstone power, not by hand.") end end usagehelp = def._doc_items_usagehelp if not usagehelp then if def.only_redstone_can_open then - usagehelp = "To open or close this door, send a redstone signal to its bottom half." + usagehelp = S("To open or close this door, send a redstone signal to its bottom half.") else - usagehelp = "To open or close this door, rightclick it or send a redstone signal to its bottom half." + usagehelp = S("To open or close this door, rightclick it or send a redstone signal to its bottom half.") + end + end + if not tt_help then + if def.only_redstone_can_open then + tt_help = S("Opened or closed by redstone power") + else + tt_help = S("Use to open or close") end end minetest.register_craftitem(name, { description = def.description, + _tt_help = tt_help, _doc_items_longdesc = longdesc, _doc_items_usagehelp = usagehelp, inventory_image = def.inventory_image, diff --git a/mods/ITEMS/mcl_doors/api_trapdoors.lua b/mods/ITEMS/mcl_doors/api_trapdoors.lua index dc507023..42838204 100644 --- a/mods/ITEMS/mcl_doors/api_trapdoors.lua +++ b/mods/ITEMS/mcl_doors/api_trapdoors.lua @@ -1,3 +1,5 @@ +local S = minetest.get_translator("mcl_doors") + -- Wrapper around mintest.pointed_thing_to_face_pos. local function get_fpos(placer, pointed_thing) local fpos @@ -83,18 +85,25 @@ function mcl_doors:register_trapdoor(name, def) end -- Default help texts - local longdesc, usagehelp + local longdesc, usagehelp, tt_help longdesc = def._doc_items_longdesc if not longdesc then if def.only_redstone_can_open then - longdesc = "Trapdoors are horizontal barriers which can be opened or closed and climbed like a ladder when open. They occupy the upper or lower part of a block, depending on how they have been placed. This trapdoor can only be opened or closed by redstone power." + longdesc = S("Trapdoors are horizontal barriers which can be opened or closed and climbed like a ladder when open. They occupy the upper or lower part of a block, depending on how they have been placed. This trapdoor can only be opened or closed by redstone power.") else - longdesc = "Trapdoors are horizontal barriers which can be opened or closed and climbed like a ladder when open. They occupy the upper or lower part of a block, depending on how they have been placed. This trapdoor can be opened or closed by hand or redstone power." + longdesc = S("Trapdoors are horizontal barriers which can be opened or closed and climbed like a ladder when open. They occupy the upper or lower part of a block, depending on how they have been placed. This trapdoor can be opened or closed by hand or redstone power.") end end usagehelp = def._doc_items_usagehelp if not usagehelp and not def.only_redstone_can_open then - usagehelp = "To open or close this trapdoor, rightclick it or send a redstone signal to it." + usagehelp = S("To open or close this trapdoor, rightclick it or send a redstone signal to it.") + end + if not tt_help then + if def.only_redstone_can_open then + tt_help = S("Opened or closed by redstone power") + else + tt_help = S("Use to opened or close") + end end -- Closed trapdoor @@ -116,6 +125,7 @@ function mcl_doors:register_trapdoor(name, def) groups_closed.deco_block = 1 minetest.register_node(name, { description = def.description, + _tt_help = tt_help, _doc_items_longdesc = longdesc, _doc_items_usagehelp = usagehelp, drawtype = "nodebox", diff --git a/mods/ITEMS/mcl_end/eye_of_ender.lua b/mods/ITEMS/mcl_end/eye_of_ender.lua index 3d2a990e..41853def 100644 --- a/mods/ITEMS/mcl_end/eye_of_ender.lua +++ b/mods/ITEMS/mcl_end/eye_of_ender.lua @@ -74,7 +74,7 @@ minetest.register_entity("mcl_end:ender_eye", { minetest.register_craftitem("mcl_end:ender_eye", { description = S("Eye of Ender"), - _tt_help = S("Guides you to an End portal shrine"), + _tt_help = S("Guides you to the End dimension"), _doc_items_longdesc = S("This item is used to locate End portal shrines in the Overworld and to activate End portals.") .. "\n" .. S("NOTE: The End dimension is currently incomplete and might change in future versions."), _doc_items_usagehelp = S("Use the attack key to release the eye of ender. It will rise and fly in the horizontal direction of the closest end portal shrine. If you're very close, the eye of ender will take the direct path to the End portal shrine instead. After a few seconds, it stops. It may drop as an item, but there's a 20% chance it shatters.") .. "\n" .. S("To activate an End portal, eyes of ender need to be placed into each block of an intact End portal frame."), wield_image = "mcl_end_ender_eye.png", diff --git a/mods/ITEMS/mcl_farming/potatoes.lua b/mods/ITEMS/mcl_farming/potatoes.lua index 3faed1e0..d00405f5 100644 --- a/mods/ITEMS/mcl_farming/potatoes.lua +++ b/mods/ITEMS/mcl_farming/potatoes.lua @@ -118,6 +118,7 @@ minetest.register_craftitem("mcl_farming:potato_item_baked", { minetest.register_craftitem("mcl_farming:potato_item_poison", { description = S("Poisonous Potato"), + _tt_help = S("60% chance of poisoning"), _doc_items_longdesc = S("This potato doesn't look too healthy. You can eat it to restore hunger points, but there's a 60% chance it will poison you briefly."), stack_max = 64, inventory_image = "farming_potato_poison.png", diff --git a/mods/ITEMS/mcl_fences/init.lua b/mods/ITEMS/mcl_fences/init.lua index bb2ca0fc..50b4dda0 100644 --- a/mods/ITEMS/mcl_fences/init.lua +++ b/mods/ITEMS/mcl_fences/init.lua @@ -174,6 +174,7 @@ mcl_fences.register_fence_gate = function(id, fence_gate_name, texture, groups, cgroups_closed.mesecon_effector_off = nil minetest.register_node(gate_id, { description = fence_gate_name, + _tt_help = S("Use to open or close"), _doc_items_longdesc = S("Fence gates can be opened or closed and can't be jumped over. Fences will connect nicely to fence gates."), _doc_items_usagehelp = S("Right-click the fence gate to open or close it."), tiles = {texture}, @@ -306,7 +307,7 @@ minetest.register_craft({ burntime = 15, }) -local time_to_load= os.clock() - init -print(string.format("[MOD] "..minetest.get_current_modname().." loaded in %.4f s", time_to_load)) +local time_to_load = os.clock() - init +minetest.log("action", string.format("[MOD] "..minetest.get_current_modname().." loaded in %.4f s", time_to_load)) diff --git a/mods/ITEMS/mcl_fishing/init.lua b/mods/ITEMS/mcl_fishing/init.lua index fe1484a1..0bf63897 100644 --- a/mods/ITEMS/mcl_fishing/init.lua +++ b/mods/ITEMS/mcl_fishing/init.lua @@ -418,6 +418,7 @@ minetest.register_craftitem("mcl_fishing:clownfish_raw", { -- TODO: Add real status effect minetest.register_craftitem("mcl_fishing:pufferfish_raw", { description = S("Pufferfish"), + _tt_help = S("Very poisonous"), _doc_items_longdesc = S("Pufferfish are a common species of fish and can be obtained by fishing. They can technically be eaten, but they are very bad for humans. Eating a pufferfish only restores 1 hunger point and will poison you very badly (which drains your health non-fatally) and causes serious food poisoning (which increases your hunger)."), inventory_image = "mcl_fishing_pufferfish_raw.png", on_place = minetest.item_eat(1), diff --git a/mods/ITEMS/mcl_mobitems/init.lua b/mods/ITEMS/mcl_mobitems/init.lua index ea4eb095..9cebf1f3 100644 --- a/mods/ITEMS/mcl_mobitems/init.lua +++ b/mods/ITEMS/mcl_mobitems/init.lua @@ -4,6 +4,7 @@ local S = minetest.get_translator("mcl_mobitems") minetest.register_craftitem("mcl_mobitems:rotten_flesh", { description = S("Rotten Flesh"), + _tt_help = S("80% chance of food poisoning"), _doc_items_longdesc = S("Yuck! This piece of flesh clearly has seen better days. If you're really desperate, you can eat it to restore a few hunger points, but there's a 80% chance it causes food poisoning, which increases your hunger for a while."), inventory_image = "mcl_mobitems_rotten_flesh.png", wield_image = "mcl_mobitems_rotten_flesh.png", @@ -64,6 +65,7 @@ minetest.register_craftitem("mcl_mobitems:cooked_beef", { minetest.register_craftitem("mcl_mobitems:chicken", { description = S("Raw Chicken"), + _tt_help = S("30% chance of food poisoning"), _doc_items_longdesc = S("Raw chicken is a food item which is not safe to consume. You can eat it to restore a few hunger points, but there's a 30% chance to suffer from food poisoning, which increases your hunger rate for a while. Cooking raw chicken will make it safe to eat and increases its nutritional value."), inventory_image = "mcl_mobitems_chicken_raw.png", wield_image = "mcl_mobitems_chicken_raw.png", @@ -160,6 +162,7 @@ minetest.register_craftitem("mcl_mobitems:milk_bucket", { minetest.register_craftitem("mcl_mobitems:spider_eye", { description = S("Spider Eye"), + _tt_help = S("Poisonous"), _doc_items_longdesc = S("Spider eyes are used mainly in crafting. If you're really desperate, you can eat a spider eye, but it will poison you briefly."), inventory_image = "mcl_mobitems_spider_eye.png", wield_image = "mcl_mobitems_spider_eye.png", diff --git a/mods/ITEMS/mcl_ocean/corals.lua b/mods/ITEMS/mcl_ocean/corals.lua index a2d20d75..a84dd920 100644 --- a/mods/ITEMS/mcl_ocean/corals.lua +++ b/mods/ITEMS/mcl_ocean/corals.lua @@ -78,7 +78,7 @@ for c=1, #corals do local doc_desc_fan = S("Corals fans grow on top of coral blocks and need to be inside a water source to survive. Without water, it will die off, as well as the coral block below.") local tt_block = S("Needs water to live") local tt_coral_dead = S("Grows on coral block of same species") - local tt_coral = tt_coral_dead .. S("Needs water to live") + local tt_coral = tt_coral_dead .. "\n" .. S("Needs water to live") -- Coral Block minetest.register_node("mcl_ocean:"..id.."_coral_block", { diff --git a/mods/ITEMS/mcl_ocean/kelp.lua b/mods/ITEMS/mcl_ocean/kelp.lua index a659f0ad..e329ddcc 100644 --- a/mods/ITEMS/mcl_ocean/kelp.lua +++ b/mods/ITEMS/mcl_ocean/kelp.lua @@ -132,6 +132,7 @@ end minetest.register_craftitem("mcl_ocean:kelp", { description = S("Kelp"), + _tt_help = S("Grows in water on dirt, sand, gravel"), _doc_items_create_entry = false, inventory_image = "mcl_ocean_kelp_item.png", wield_image = "mcl_ocean_kelp_item.png", @@ -155,7 +156,6 @@ for s=1, #surfaces do local tt_help, doc_longdesc, doc_img, desc if surfaces[s][1] == "dirt" then doc_longdesc = S("Kelp grows inside water on top of dirt, sand or gravel.") - tt_help = S("Grows in water on dirt, sand, gravel") desc = S("Kelp") doc_create = true doc_img = "mcl_ocean_kelp_item.png" @@ -163,7 +163,6 @@ for s=1, #surfaces do doc_create = false end minetest.register_node("mcl_ocean:kelp_"..surfaces[s][1], { - _tt_help = tt_help, _doc_items_entry_name = desc, _doc_items_longdesc = doc_longdesc, _doc_items_create_entry = doc_create, diff --git a/mods/ITEMS/mcl_ocean/sea_pickle.lua b/mods/ITEMS/mcl_ocean/sea_pickle.lua index 9163a1eb..55ea1755 100644 --- a/mods/ITEMS/mcl_ocean/sea_pickle.lua +++ b/mods/ITEMS/mcl_ocean/sea_pickle.lua @@ -72,7 +72,7 @@ for s=1,4 do desc = S("Sea Pickle") doc_desc = S("Sea pickles grow on dead brain coral blocks and provide light when underwater. They come in 4 sizes that vary in brightness.") doc_use = S("It can only be placed on top of dead brain coral blocks. Placing a sea pickle on another sea pickle will make it grow and brighter.") - tt_help = S("Glows when underwater").."\n"..S("4 possible sizes").."\n"..S("Grows on dead brain coral block") + tt_help = S("Glows in the water").."\n"..S("4 possible sizes").."\n"..S("Grows on dead brain coral block") img = "mcl_ocean_sea_pickle_item.png" on_place = sea_pickle_on_place else diff --git a/mods/ITEMS/mcl_ocean/seagrass.lua b/mods/ITEMS/mcl_ocean/seagrass.lua index 11406976..6c0b5f74 100644 --- a/mods/ITEMS/mcl_ocean/seagrass.lua +++ b/mods/ITEMS/mcl_ocean/seagrass.lua @@ -79,6 +79,7 @@ end minetest.register_craftitem("mcl_ocean:seagrass", { description = S("Seagrass"), + _tt_help = S("Grows in water on dirt, sand, gravel"), _doc_items_create_entry = false, inventory_image = "mcl_ocean_seagrass.png^[verticalframe:12:0", wield_image = "mcl_ocean_seagrass.png^[verticalframe:12:0", @@ -99,10 +100,9 @@ for s=1, #surfaces do sounds.dig = leaf_sounds.dig sounds.dug = leaf_sounds.dug sounds.place = leaf_sounds.place - local tt_help, doc_longdesc, doc_img, desc + local doc_longdesc, doc_img, desc if surfaces[s][1] == "dirt" then doc_longdesc = S("Seagrass grows inside water on top of dirt, sand or gravel.") - tt_help = S("Grows in water on dirt, sand, gravel") desc = S("Seagrass") doc_create = true doc_img = "mcl_ocean_seagrass.png" @@ -110,7 +110,6 @@ for s=1, #surfaces do doc_create = false end minetest.register_node("mcl_ocean:seagrass_"..surfaces[s][1], { - _tt_help = tt_help, _doc_items_entry_name = desc, _doc_items_longdesc = doc_longdesc, _doc_items_create_entry = doc_create, diff --git a/mods/ITEMS/mcl_portals/portal_end.lua b/mods/ITEMS/mcl_portals/portal_end.lua index 80b832ef..c16c95eb 100644 --- a/mods/ITEMS/mcl_portals/portal_end.lua +++ b/mods/ITEMS/mcl_portals/portal_end.lua @@ -335,6 +335,7 @@ minetest.register_node("mcl_portals:end_portal_frame", { minetest.register_node("mcl_portals:end_portal_frame_eye", { description = S("End Portal Frame with Eye of Ender"), + _tt_help = S("Used to construct end portals"), _doc_items_create_entry = false, groups = { creative_breakable = 1, deco_block = 1, comparator_signal = 15, end_portal_frame = 2 }, tiles = { "mcl_portals_endframe_top.png^[lowpart:75:mcl_portals_endframe_eye.png", "mcl_portals_endframe_bottom.png", "mcl_portals_endframe_eye.png^mcl_portals_endframe_side.png" }, From 2554c6d597bc48a1197fc2d773fd6ca83c5556e1 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sun, 8 Mar 2020 03:46:24 +0100 Subject: [PATCH 558/737] Display weapon damage in tooltip --- mods/HELP/tt/snippets_builtin.lua | 52 +++++++++++++++++++++++++++---- 1 file changed, 46 insertions(+), 6 deletions(-) diff --git a/mods/HELP/tt/snippets_builtin.lua b/mods/HELP/tt/snippets_builtin.lua index 6d383f7d..b61cc7cc 100644 --- a/mods/HELP/tt/snippets_builtin.lua +++ b/mods/HELP/tt/snippets_builtin.lua @@ -44,7 +44,7 @@ tt.register_snippet(function(itemstring) if not groupcaps then return end - local formstring = "" + local minestring = "" local capstr = "" local caplines = 0 for k,v in pairs(groupcaps) do @@ -103,18 +103,58 @@ tt.register_snippet(function(itemstring) end if caplines > 0 then -- Capabilities - formstring = formstring .. capstr + minestring = minestring .. capstr -- Max. drop level local mdl = def.tool_capabilities.max_drop_level if not def.tool_capabilities.max_drop_level then mdl = 0 end - formstring = formstring .. S("Block breaking strength: @1", mdl) + minestring = minestring .. S("Block breaking strength: @1", mdl) end - if formstring == "" then - formstring = nil + + local weaponstring = "" + -- Weapon stats + if def.tool_capabilities.damage_groups then + for group, damage in pairs(def.tool_capabilities.damage_groups) do + local msg + if group == "fleshy" then + if damage >= 0 then + msg = S("Damage: @1", damage) + else + msg = S("Healing: @1", math.abs(damage)) + end + end + weaponstring = newline(weaponstring) + weaponstring = weaponstring .. msg + end + local full_punch_interval = def.tool_capabilities.full_punch_interval + if not full_punch_interval then + full_punch_interval = 1 + end + weaponstring = newline(weaponstring) + weaponstring = weaponstring .. S("Full punch interval: @1s", string.format("%.2f", full_punch_interval)) end - return formstring + + local ret + if minetest.get_item_group(itemstring, "weapon") == 1 then + ret = weaponstring + ret = newline(ret) + ret = ret .. minestring + else + ret = minestring + ret = newline(ret) + ret = ret .. weaponstring + end + + if ret == "" then + ret = nil + end + return ret +end) + +-- Weapon stats +tt.register_snippet(function(itemstring) + local def = minetest.registered_items[itemstring] end) -- Food From 4deb6eec204ac3bff5b397b31c73d7b7a3fe5cc0 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sun, 8 Mar 2020 08:50:21 +0100 Subject: [PATCH 559/737] Extra tooltips for mcl_chests --- mods/ITEMS/mcl_chests/init.lua | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_chests/init.lua b/mods/ITEMS/mcl_chests/init.lua index b41763d4..dcd04e10 100644 --- a/mods/ITEMS/mcl_chests/init.lua +++ b/mods/ITEMS/mcl_chests/init.lua @@ -77,7 +77,7 @@ local player_chest_close = function(player) end -- This is a helper function to register both chests and trapped chests. Trapped chests will make use of the additional parameters -local register_chest = function(basename, desc, longdesc, usagehelp, tiles_table, hidden, mesecons, on_rightclick_addendum, on_rightclick_addendum_left, on_rightclick_addendum_right, drop, canonical_basename) +local register_chest = function(basename, desc, longdesc, usagehelp, tt_help, tiles_table, hidden, mesecons, on_rightclick_addendum, on_rightclick_addendum_left, on_rightclick_addendum_right, drop, canonical_basename) -- START OF register_chest FUNCTION BODY if not drop then drop = "mcl_chests:"..basename @@ -92,6 +92,7 @@ end minetest.register_node("mcl_chests:"..basename, { description = desc, + _tt_help = tt_help, _doc_items_longdesc = longdesc, _doc_items_usagehelp = usagehelp, _doc_items_hidden = hidden, @@ -492,6 +493,7 @@ register_chest("chest", S("Chest"), S("Chests are containers which provide 27 inventory slots. Chests can be turned into large chests with double the capacity by placing two chests next to each other."), chestusage, + S("27 inventory slots") .. "\n" .. S("Can be combined to a double chest"), { small = {"default_chest_top.png", "mcl_chests_chest_bottom.png", "mcl_chests_chest_right.png", "mcl_chests_chest_left.png", @@ -522,6 +524,7 @@ register_chest("trapped_chest", S("Trapped Chest"), S("A trapped chest is a container which provides 27 inventory slots. When it is opened, it sends a redstone signal to its adjacent blocks as long it stays open. Trapped chests can be turned into large trapped chests with double the capacity by placing two trapped chests next to each other."), chestusage, + S("27 inventory slots") .. "\n" .. S("Can be combined to a double chest") .. "\n" .. S("Emits a redstone signal when opened"), traptiles, nil, {receptor = { @@ -560,7 +563,7 @@ register_chest("trapped_chest", ) register_chest("trapped_chest_on", - nil, nil, nil, traptiles, true, + nil, nil, nil, nil, traptiles, true, {receptor = { state = mesecon.state.on, rules = trapped_chest_mesecons_rules, @@ -643,6 +646,7 @@ minetest.register_craft({ minetest.register_node("mcl_chests:ender_chest", { description = S("Ender Chest"), + _tt_help = S("27 interdimensional inventory slots") .. "\n" .. S("Put items inside, retrieve them from any other ender chest"), _doc_items_longdesc = S("Ender chests grant you access to a single personal interdimensional inventory with 27 slots. This inventory is the same no matter from which ender chest you access it from. If you put one item into one ender chest, you will find it in all other ender chests. Each player will only see their own items, but not the items of other players."), _doc_items_usagehelp = S("Rightclick the ender chest to access your personal interdimensional inventory."), tiles = {"mcl_chests_ender_chest_top.png", "mcl_chests_ender_chest_bottom.png", @@ -756,6 +760,7 @@ for color, desc in pairs(boxtypes) do minetest.register_node("mcl_chests:"..color.."_shulker_box", { description = desc, + _tt_help = S("27 inventory slots") .. "\n" .. S("Can be carried around with its contents"), _doc_items_create_entry = create_entry, _doc_items_entry_name = entry_name, _doc_items_longdesc = longdesc, From 0e867e5247631be822c83ccf86a7872f3c705e18 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 10 Mar 2020 00:15:54 +0100 Subject: [PATCH 560/737] Fix creative tab styling for future MT 5.2.0 --- mods/HUD/mcl_inventory/creative.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/HUD/mcl_inventory/creative.lua b/mods/HUD/mcl_inventory/creative.lua index 7032994a..5c8a44be 100644 --- a/mods/HUD/mcl_inventory/creative.lua +++ b/mods/HUD/mcl_inventory/creative.lua @@ -396,7 +396,7 @@ mcl_inventory.set_creative_formspec = function(player, start_i, pagenum, inv_siz caption = "label[0,1.2;"..F(minetest.colorize("#313131", filtername[name])).."]" end - formspec = "size[10,9.3]".. + formspec = "size[10,9.3]style_type[item_image_button;border=false]".. mcl_vars.inventory_header.. "background[-0.19,-0.25;10.5,9.87;"..inv_bg.."]".. "label[-5,-5;"..name.."]".. From 03ad3cca29ae3efc24e9486e4be7dfa41efc5210 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 10 Mar 2020 05:01:49 +0100 Subject: [PATCH 561/737] Major default formspec style update - Uses formspec_prepend to set e.g. button style - Make all formspecs use the MCL2 style consistently --- mods/CORE/mcl_init/init.lua | 15 +++++++++++---- .../textures/mobs_mc_trading_formspec_bg.png | Bin 1936 -> 1442 bytes mods/ENTITIES/mobs_mc/villager.lua | 1 - mods/HELP/mcl_craftguide/init.lua | 6 ++---- mods/HUD/awards/api.lua | 9 ++++++--- .../awards/textures/awards_progress_gray.png | Bin 146 -> 71 bytes .../awards/textures/awards_progress_green.png | Bin 177 -> 71 bytes .../textures/mcl_base_textures_background.png | Bin 0 -> 171 bytes .../mcl_base_textures_background9.png | Bin 0 -> 171 bytes .../textures/mcl_base_textures_button9.png | Bin 0 -> 86 bytes .../mcl_base_textures_button9_pressed.png | Bin 0 -> 86 bytes mods/HUD/mcl_formspec_prepend/init.lua | 2 +- mods/HUD/mcl_inventory/creative.lua | 7 +++++-- mods/HUD/mcl_inventory/init.lua | 1 - .../textures/crafting_creative_active.png | Bin 215 -> 180 bytes .../textures/crafting_creative_down.png | Bin 3464 -> 629 bytes .../textures/crafting_creative_inactive.png | Bin 226 -> 181 bytes .../textures/crafting_creative_up.png | Bin 3469 -> 613 bytes .../textures/crafting_formspec_bg.png | Bin 1803 -> 1431 bytes .../textures/crafting_formspec_bg2.png | Bin 1422 -> 861 bytes .../textures/crafting_inventory_9_slots.png | Bin 1645 -> 1153 bytes .../textures/crafting_inventory_creative.png | Bin 3928 -> 1517 bytes .../crafting_inventory_creative_survival.png | Bin 2230 -> 1516 bytes .../textures/mcl_inventory_button9.png | Bin 0 -> 86 bytes .../mcl_inventory_button9_pressed.png | Bin 0 -> 86 bytes .../textures/mcl_inventory_slider.png | Bin 881 -> 104 bytes .../textures/mcl_inventory_slider_bg.png | Bin 1097 -> 96 bytes mods/ITEMS/REDSTONE/mcl_dispensers/init.lua | 1 - ..._dispensers_dispenser_front_horizontal.png | Bin 262 -> 252 bytes ...cl_dispensers_dispenser_front_vertical.png | Bin 256 -> 243 bytes mods/ITEMS/REDSTONE/mcl_droppers/init.lua | 1 - mods/ITEMS/REDSTONE/mcl_droppers/init_new.lua | 1 - .../mcl_droppers_dropper_front_horizontal.png | Bin 275 -> 265 bytes .../mcl_droppers_dropper_front_vertical.png | Bin 274 -> 251 bytes .../REDSTONE/mesecons_commandblock/init.lua | 2 +- mods/ITEMS/mcl_anvils/init.lua | 1 - .../textures/mcl_anvils_inventory.png | Bin 1584 -> 1088 bytes mods/ITEMS/mcl_books/depends.txt | 1 + mods/ITEMS/mcl_books/init.lua | 11 ++++++++++- .../mcl_books/textures/mcl_books_button9.png | Bin 0 -> 94 bytes .../textures/mcl_books_button9_pressed.png | Bin 0 -> 94 bytes mods/ITEMS/mcl_chests/init.lua | 5 ----- .../textures/mcl_chests_inventory_chest.png | Bin 1604 -> 1195 bytes .../mcl_chests_inventory_chest_large.png | Bin 1940 -> 1562 bytes mods/ITEMS/mcl_crafting_table/init.lua | 3 +-- .../textures/crafting_inventory_workbench.png | Bin 1605 -> 1282 bytes mods/ITEMS/mcl_furnaces/init.lua | 2 -- .../textures/crafting_inventory_furnace.png | Bin 1485 -> 1166 bytes mods/ITEMS/mcl_hoppers/init.lua | 1 - 49 files changed, 38 insertions(+), 32 deletions(-) create mode 100644 mods/HUD/mcl_base_textures/textures/mcl_base_textures_background.png create mode 100644 mods/HUD/mcl_base_textures/textures/mcl_base_textures_background9.png create mode 100644 mods/HUD/mcl_base_textures/textures/mcl_base_textures_button9.png create mode 100644 mods/HUD/mcl_base_textures/textures/mcl_base_textures_button9_pressed.png create mode 100644 mods/HUD/mcl_inventory/textures/mcl_inventory_button9.png create mode 100644 mods/HUD/mcl_inventory/textures/mcl_inventory_button9_pressed.png create mode 100644 mods/ITEMS/mcl_books/textures/mcl_books_button9.png create mode 100644 mods/ITEMS/mcl_books/textures/mcl_books_button9_pressed.png diff --git a/mods/CORE/mcl_init/init.lua b/mods/CORE/mcl_init/init.lua index afbe9dfa..ddcf1cd6 100644 --- a/mods/CORE/mcl_init/init.lua +++ b/mods/CORE/mcl_init/init.lua @@ -4,13 +4,20 @@ mcl_vars = {} --- GUI / inventory menu settings mcl_vars.gui_slots = "listcolors[#9990;#FFF7;#FFF0;#000;#FFF]" -- nonbg is added as formspec prepend in mcl_formspec_prepend -mcl_vars.gui_nonbg = mcl_vars.gui_slots +mcl_vars.gui_nonbg = mcl_vars.gui_slots .. + "style_type[image_button;border=false;bgimg=mcl_inventory_button9.png;bgimg_pressed=mcl_inventory_button9_pressed.png;bgimg_middle=2,2]".. + "style_type[button;border=false;bgimg=mcl_inventory_button9.png;bgimg_pressed=mcl_inventory_button9_pressed.png;bgimg_middle=2,2]".. + "style_type[field;textcolor=#323232]".. + "style_type[label;textcolor=#323232]".. + "style_type[textarea;textcolor=#323232]".. + "style_type[checkbox;textcolor=#323232]" -- Background stuff must be manually added by mods (no formspec prepend) -mcl_vars.gui_bg = "bgcolor[#080808BB;true]" -mcl_vars.gui_bg_img = "" +mcl_vars.gui_bg_color = "bgcolor[#00000000]" +mcl_vars.gui_bg_img = "background9[1,1;1,1;mcl_base_textures_background9.png;true;7]" -mcl_vars.inventory_header = mcl_vars.gui_bg +-- Legacy +mcl_vars.inventory_header = "" -- Mapgen variables local mg_name = minetest.get_mapgen_setting("mg_name") diff --git a/mods/ENTITIES/mobs_mc/textures/mobs_mc_trading_formspec_bg.png b/mods/ENTITIES/mobs_mc/textures/mobs_mc_trading_formspec_bg.png index 029c686cd63630a5e41a3c6b196cc5a6f87468a3..e271ddb24adb91d8c3fccdc099f7766e019ee5ae 100644 GIT binary patch literal 1442 zcmeAS@N?(olHy`uVBq!ia0y~yVD@8RU>0CuW?*1=#HC@%z`!6B;1lA?z`)Sm-Ri z+H+MxV=fc((%^&zC0smH{9ZO*%H%IO^nKoa!5^`G|97sFerTohE_;W6$M1I)eMgHE zE6!aiK5fC?P;7c`<-S{H~V(x@m}70%}w9A zCf56lqj}tB-XO&BR?!B9y%Zu$zF%4hqXZ7+)_4)T4bN}dF zKlwlAdT&XQY?%6Y(>v-{PS%#swK@K1r@>sC^p`tR=gwj7C|u{J{`|_E-&amrX3c%0 zy5YIAdUbKhruI{D=5yb8Udb%kbbR}PxSY9fW`4iNHg^xZtNMGrcR9AhTy&zMl+|I07*pVq@^vgozPnG9z=+z~I}Da|u&>kIwmK^)uk@{c|Fw z3`DVV*JG7uVDme1*(t2<2eQsm0OZznC&BK38Uyxrkpjp`F_R%;hG3UlfV>@IJHtXq zzgTGYOfazBXB^RK{IO2m&o1QmdPTIbfVcrE^xj!?LW1fM^@0!Tl~8`Qz9XmST7aE} zL9mvwX&0*9dw=BQVdeK%j?A&xsRr_S63CaZfJgZGvaGrxM0yU`(@z{gfrX;Qq7W3< zCmTU&q{tW982l+_`KyCU8!Pq;FVC+oPynS*g%kIyCamTLF;Ov7-f|J6iDpG2AYo5e KKbLh*2~7ZE6>!G@ literal 1936 zcmeAS@N?(olHy`uVBq!ia0y~yVD@8RU>0CuW?*1=#HC@%z`!6E;1lA?;K;zh!0`Y7 z{|gr`WMpJ?cXzwHyDwh6c<$V}nVFf&Qa2VbFfcHd1o;IsI6S+N#=yX?;OXKRQo;D< z?)I%A-U1F6e>=~RKPb$pP#eOwRg3k*M7wLJr5-MRI_Id}w~FeL@^Ja%p6T}sW&Z!I zFMam%Q}gAQuiiW^vEtKT{`vhcv*m4V-n;evefA=71%HQMq7s2w5-}qz$4N&V2;di^4sEumdCu;&uvytwiPusr#+6 z28l!5@ZHjMPFwJyOqx)0yN^zn_Tyas^h$vg5_P0=@^{<&$`(K4&YgT8^Iy8~lf91m zYpH9TmXYPpQ{=mA6X(3yyd{6;E&IcwP7HF;;= zoHL##egv$-NKfM1cYV9wIP?Xa2fYIg998Xk;B3tn&x3#P%J!B0W1EpZ?CmQu1v=x z3me^zB}}CY+pZkiGGVv>J2O5$eGW+@j;E<^HUAH*ZP@?yVXb*}@49zKGI!R$EqgF^ z+K=#KFYgo@`OSHBZ;nOebiZSrmy7D(eN*1>b9U_J-*0c~>&G7k#oNg~tD~{A>+b*A zY5wTQ%l_jhEee0dO%9$>@TlY$NM3W@zP-hZgReZyp3~PStnT+u{`574I=7FTZtmxQ zec8pYwqID?Zy&or-LaQ@K-LMR&#{nHe|+SmMPZb5SaH(FAAWP}>h8}G?zSux0wtKq zGlbRIAE`V$a?;eY6C@^74B~YPs~f8O@g4Cz(>Xc22rQ=Z48#*w_e=7dBhvxWcl`-i z45VfTD0Gj^v9J^X>05UaECy0zxV*j})8Nv)h&-KVCbK42?%N%E>7+%Wk>9b-$%T)$ zn5}tsEXnV&RpsJa&!v+5=EO_}8v-&k31l&f6`IF9&wwq$X*no2bXpb`DS-5%m^H@& zVD6Dz5|7wk>8x2 z$%T(n=JW`I;~VZ|sHD!p%-jgk=SLn}7k)abd_P#Y_|cPDAm2k>C{)~qH$+Z0T7W{* z7Zj35Ao>a)fl|a|X0SeFvk3XNG;fB5s@%O!Q1ru`oB~g%khFmCPcXt?a7Bqy$2u>6 z`Sv5R_Wi? 1 then perc = 1 end - formspec = formspec .. "background[0,4.80;" .. barwidth ..",0.25;awards_progress_gray.png;false]" - formspec = formspec .. "background[0,4.80;" .. (barwidth * perc) ..",0.25;awards_progress_green.png;false]" + formspec = formspec .. "background[0,4.80;" .. barwidth ..",0.3;awards_progress_gray.png;false]" + if perc > 0 then + formspec = formspec .. "background[0,4.80;" .. (barwidth * perc) ..",0.3;awards_progress_green.png;false]" + end if label then formspec = formspec .. "label[1.75,4.63;" .. minetest.formspec_escape(label) .. "]" end @@ -423,7 +425,8 @@ function awards.getFormspec(name, to, sid) end -- Create list box - formspec = formspec .. "textlist[4.75,0;6,5;awards;" + formspec = formspec .. + "textlist[4.75,0;6,5;awards;" local first = true for _,award in pairs(listofawards) do local def = awards.def[award.name] diff --git a/mods/HUD/awards/textures/awards_progress_gray.png b/mods/HUD/awards/textures/awards_progress_gray.png index a5fc6cb35bdfcdc2ccc407f3ecfe6a9b8da20651..ea60ae17b9261ac5374c018a454d357bd466941c 100644 GIT binary patch delta 41 wcmbQl=srP3na|V3F{FYqd4_elo~i`Hx?I^piHy(T3=9kmp00i_>zopr0P&*>*Z=?k delta 116 zcmZ>t#5h4EkF&rdvY3H^TNs2H8D`CqU|?WiFY)wsWq-iID9oxo_j~Uu1_lPn64!_l z=ltB<)VvY~=c3falGGH1^30M91$R&1fbd2>aRvqk9#0p?5RU7~2@7}_7#JKF7}La) SH!v_TFnGH9xvX=q64PgKP delta 148 zcmZ?Y$T&fzp0mIsvY3H^TNs2H8D`CqU|?WiFY)wsWq-iIC}b`F$Au%5fq_A?#5JPC zIX^cyHLrxhxhOTUBsE2$JhLQ2!QIn0AiR-JoPmKs+tbA{gyXvJ$&G>x3Ot7$=C-F? x;c=I7p6zsW{(`<4>QybuRZk=1?hBe9`nk?l?$~o-J~ajq@O1TaS?83{1OUzUEm{Bo diff --git a/mods/HUD/mcl_base_textures/textures/mcl_base_textures_background.png b/mods/HUD/mcl_base_textures/textures/mcl_base_textures_background.png new file mode 100644 index 0000000000000000000000000000000000000000..e5d693e7bd6a27fa99323c3de445df733b9562c0 GIT binary patch literal 171 zcmeAS@N?(olHy`uVBq!ia0y~yV9)|#4mJh`hNFj1Ml&!l6nVNhhEy=Vy~)USz<{Uq zp{)7wv%N;nZjme};(o~6FR0~I(hDbC7N}Z;JbUM_Zu0cd1@Sv_GtQmq zyXMH+;Lym#$|a%^umFj1j^VrW=644QjtcM8+ww2x!mg85o6L7Ua(=^By!5Ezt^Wl# R85kHCJYD@<);T3K0RVxhLZtuz literal 0 HcmV?d00001 diff --git a/mods/HUD/mcl_base_textures/textures/mcl_base_textures_background9.png b/mods/HUD/mcl_base_textures/textures/mcl_base_textures_background9.png new file mode 100644 index 0000000000000000000000000000000000000000..e5d693e7bd6a27fa99323c3de445df733b9562c0 GIT binary patch literal 171 zcmeAS@N?(olHy`uVBq!ia0y~yV9)|#4mJh`hNFj1Ml&!l6nVNhhEy=Vy~)USz<{Uq zp{)7wv%N;nZjme};(o~6FR0~I(hDbC7N}Z;JbUM_Zu0cd1@Sv_GtQmq zyXMH+;Lym#$|a%^umFj1j^VrW=644QjtcM8+ww2x!mg85o6L7Ua(=^By!5Ezt^Wl# R85kHCJYD@<);T3K0RVxhLZtuz literal 0 HcmV?d00001 diff --git a/mods/HUD/mcl_base_textures/textures/mcl_base_textures_button9.png b/mods/HUD/mcl_base_textures/textures/mcl_base_textures_button9.png new file mode 100644 index 0000000000000000000000000000000000000000..aab16013b47ede51604f2b017b6436f3f1a806b5 GIT binary patch literal 86 zcmeAS@N?(olHy`uVBq!ia0y~yU|<7b4kiW$hWvFE@(c_NvYsxEAr*|tKl)k3ni=yJ n?o4>V$9AJdp-WL_juV50j7x2tIQJq31_lOCS3j3^P6em!b literal 0 HcmV?d00001 diff --git a/mods/HUD/mcl_base_textures/textures/mcl_base_textures_button9_pressed.png b/mods/HUD/mcl_base_textures/textures/mcl_base_textures_button9_pressed.png new file mode 100644 index 0000000000000000000000000000000000000000..aeaea13a44849aa88ec127d44658316391752804 GIT binary patch literal 86 zcmeAS@N?(olHy`uVBq!ia0y~yU|<7b4kiW$hWvFE@(c_NvYsxEAr*|t1@27U2N||s oh%xxV&vv6lp-WL_juV6DA(vWz^Mel<7#J8lUHx3vIVCg!005R1?f?J) literal 0 HcmV?d00001 diff --git a/mods/HUD/mcl_formspec_prepend/init.lua b/mods/HUD/mcl_formspec_prepend/init.lua index 0eb97de6..2230a983 100644 --- a/mods/HUD/mcl_formspec_prepend/init.lua +++ b/mods/HUD/mcl_formspec_prepend/init.lua @@ -1,3 +1,3 @@ minetest.register_on_joinplayer(function(player) - player:set_formspec_prepend(mcl_vars.gui_nonbg) + player:set_formspec_prepend(mcl_vars.gui_nonbg .. mcl_vars.gui_bg_color .. mcl_vars.gui_bg_img) end) diff --git a/mods/HUD/mcl_inventory/creative.lua b/mods/HUD/mcl_inventory/creative.lua index 5c8a44be..ff623e1c 100644 --- a/mods/HUD/mcl_inventory/creative.lua +++ b/mods/HUD/mcl_inventory/creative.lua @@ -348,6 +348,7 @@ mcl_inventory.set_creative_formspec = function(player, start_i, pagenum, inv_siz "tooltip[__mcl_skins;"..F(S("Select player skin")).."]".. -- achievements button "image_button[9,4;1,1;mcl_achievements_button.png;__mcl_achievements;]".. + --"style_type[image_button;border=;bgimg=;bgimg_pressed=]".. "tooltip[__mcl_achievements;"..F(S("Achievements")).."]" -- For shortcuts @@ -387,6 +388,7 @@ mcl_inventory.set_creative_formspec = function(player, start_i, pagenum, inv_siz bg_img = "crafting_creative_inactive.png" end return + "style["..this_tab..";border=false;bgimg=;bgimg_pressed=]".. "item_image_button[" .. boffset[this_tab] ..";1,1;"..tab_icon[this_tab]..";"..this_tab..";]".. "image[" .. offset[this_tab] .. ";1.5,1.44;" .. bg_img .. hoch[this_tab].. "]" .. "image[" .. boffset[this_tab] .. ";1,1;crafting_creative_marker.png]" @@ -396,8 +398,9 @@ mcl_inventory.set_creative_formspec = function(player, start_i, pagenum, inv_siz caption = "label[0,1.2;"..F(minetest.colorize("#313131", filtername[name])).."]" end - formspec = "size[10,9.3]style_type[item_image_button;border=false]".. - mcl_vars.inventory_header.. + formspec = "size[10,9.3]".. + "no_prepend[]".. + mcl_vars.gui_nonbg..mcl_vars.gui_bg_color.. "background[-0.19,-0.25;10.5,9.87;"..inv_bg.."]".. "label[-5,-5;"..name.."]".. tab(name, "blocks") .. diff --git a/mods/HUD/mcl_inventory/init.lua b/mods/HUD/mcl_inventory/init.lua index 84f25524..994f11e4 100644 --- a/mods/HUD/mcl_inventory/init.lua +++ b/mods/HUD/mcl_inventory/init.lua @@ -90,7 +90,6 @@ local function set_inventory(player, armor_change_only) local form = "size[9,8.75]".. "background[-0.19,-0.25;9.41,9.49;crafting_formspec_bg.png]".. - mcl_vars.inventory_header.. player_preview.. --armor "list[detached:"..player_name.."_armor;armor;0,0;1,1;1]".. diff --git a/mods/HUD/mcl_inventory/textures/crafting_creative_active.png b/mods/HUD/mcl_inventory/textures/crafting_creative_active.png index 230bde3d23ef477caf7c132424cb2dbd3f85756b..a1dcc7135214cafce76c7dc991a80cccc06ccd8c 100644 GIT binary patch delta 152 zcmcc4xP@_oNHv8bP0l+XkKwQ=2wLb3=EtlL4Ls? z761P;Fff?!*?WwEfg#D$#WAFU@y%I7(FO*dBNq-cx;jk^V6RwFuf2u)x1sv)`iY0$ zO(}_axlQL%Uim+r*U9}y)6C!Kt$+9bOqhWL4_os=lLQEzu%X;JG`gzNaOEv4E1?rt jj~zJBqhz*eaFfe$!`njxgN@xNA5r$KJ diff --git a/mods/HUD/mcl_inventory/textures/crafting_creative_down.png b/mods/HUD/mcl_inventory/textures/crafting_creative_down.png index 4f100aae05a5491129efe1600d9c8e5c9303e29d..c7849992efeaec6377b62eedfde3735e06ad97d4 100644 GIT binary patch delta 444 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 Oz~JfX=d#Wzp$Py7@@^Oa diff --git a/mods/HUD/mcl_inventory/textures/crafting_creative_inactive.png b/mods/HUD/mcl_inventory/textures/crafting_creative_inactive.png index 94cb4369c1fc4dcb8f5c019f9d9ebfa15189bd20..cf2ebe83ec56d8d42933ca8887344d2156ae2f79 100644 GIT binary patch delta 153 zcmaFFxRr5&O1)5kPlzi682tbL|H6d}bLY;@$jJB|70SrKz`$4%@VZhJpSbahEd%F6$taD0e0stCSJj4J1 delta 198 zcmdnW_=s_WO1)x$Pl)S^SW^ZDhX4QnU$}7L%a<>6=g!T@$bg7I*!3G?6&M&8xJ!ck zfu%QBSBBQ6FRnY7U?9Q6)(oe7_% lHP?x&#||9mR5Dw|%b>J)=Q+O9p-do~Jzf1=);T3K0RV4XRs#S4 diff --git a/mods/HUD/mcl_inventory/textures/crafting_creative_up.png b/mods/HUD/mcl_inventory/textures/crafting_creative_up.png index ec5b2cacc19e8d7beba9f2ce32939377d45995ea..12843b3b2591349a6bdba7e5decac8f34275be98 100644 GIT binary patch delta 428 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 diff --git a/mods/HUD/mcl_inventory/textures/crafting_formspec_bg.png b/mods/HUD/mcl_inventory/textures/crafting_formspec_bg.png index 8e6550236ac21a2fcfd36d1311de76dbe667ab46..146c1422c8ceb3ebf82a3ddc81832e719dce9e42 100644 GIT binary patch literal 1431 zcmeAS@N?(olHy`uVBq!ia0y~yVD@8RU>0CuW?*1=#HC@%z`!6B;1lA?z`)?{?!I{O z;<?P>u70|R48kY6x^!?PP{3=FKso-U3d6^w819?ZPwC35_t_T#6I zC*F1p;LbXjx}3E%fvx-jo6`wBjR`6H3=d}XA^Hn4FZ z^*`^WrzQB8+zQq_`1~f4vCrKCr>mxIs;zwR?Em&<$<>Qa&r6EW^Z)o|tKG!^_ipvS z<(ymMq+W7~bM6ICIOU{1_X1oTNg6Ibueou(^hWjSMYmtOS-s)3cV7T;f8mQGQ|9t` zsaHR`(5Y!HImPeWk%hv+Wkwov-*h^wFME>`V0BZt-LL!7$ps~w)SEAz{9bGvwmH@9 z>i2JtUuE=Np7-zUJg?5He=2I+6hEt*!pr@9uAiJ! zvPs=PlEnlYi&#^L$RWH7Da-KzL(lftjOD5aSoa_e*!;dmNb$2^#ZwfQtQ%Lf! z>vI4H2sZyC1rI3LK;h!4UIL;z`R<=Td;YJ|lxdI4z8w*hpQeBD`tR)vp3g%Bs13*m zjkX^T%uCv?UJcR&4{MNN(5OHWC(R8g#{D|_z1Uc8`uj#(MtE99V#sd=CtJhgec|=? zYrg9qzjvYX!p7w4PjNZ0L_sZ=pnB}ly7#qdZbv^PAK(6llYxODp?h`DE*_q{#&em*E}P=W#^fa)hmMj|V+Uh3`pK2uV(xnK6S zFjDl0N5`aINtG;qQ}J~_^M`WNjpikCC2wxb`(vvJDoCJyAh~2A98`CYez!AToOEDg ia&;7_m_>3Ei1~*_L103(%39Z5AfBhIpUXO@geCx1i+L*m literal 1803 zcmeAS@N?(olHy`uVBq!ia0y~yVD@8RU>0CuW?*1=#HC@%z`!6K;1lA?00#g6|G#kI z!j~^!GBPsU-Q5>2UOad1+}kVn2{AA*FqQ=Q1v5B2yOGAgz&6j*#WAFU@$KD>Yp*zn zv|U`t(yY;NlS?4!|)ZTfDF3iTFWVCfm3BzE0buQM+`C zxc=%%-_wetvVK|UE`9R<`I6(e@B7JTKeN!?KS%C;(DLu|?F(le;}ljee5B&{=!oZ> zBb}2iI)&8>z2w0{bFMk$%J;7m+&Nu%d0oui}R+9V%=)nYRVq;0ZA;iDs(j&s0jAr`G=dvwH8ae2iYkPH3hd^+wq z2c#&I_ezna?e)j|YV7TweX+Ny-23O}R{3v_3yaQxZ3C&HfWda8Q+WA7|78!3bY5=Q zKT~*l2G~}xiB{@ zb1Z(=_Y14rPhZ~{rMLVCv)Q9$zw)9_Rh3QGPg_>THw&x#-79~75jU(-#qUFos*wGD|mF|Wbs{#!cTVs{pQ$+&lXm{fBOK~3l@cszFe12KG-R| z{39sbQKO4gk<1Ek;H?rmW7}8KKy(fWYr@R3qMFiW-mC_d0D4&ZwyE= zI2Ay|L0m+9gX|7&gTysh6fO;BfFmEQ`IG<=$&C{^xn-FK)YOK*TXF%GML7C6!*^!l39j^EFTAqDYa=K>!Zcqq< z9eX5`_sTk1>Ec<}PjX+qcirIG5me2`=6nM==!pZ!@*-b|`@q(M5=DHo z@oit5p}HSRco{w0avbDWGJ@q~BiMVhAnpT&sv)TKk}Q6N+sj#|7gUoU|D0=~nTi_g zphPekTo8g20fc+^6ex%#rO&@Va+1Bj#_#M5VRe)^l`OvX7-TWds3XUXxT9sO)Qd?Q zKYsC>^W^v4qtKEamWt81AP)$ugVPBp$%D9)%a&!%vCv(=&3?-6vn$U$Jd#=YmgnWn kX+d1e|M;b52mU(cpY^>bZjr;1&!9@p)78&qol`;+01&!D8UO$Q diff --git a/mods/HUD/mcl_inventory/textures/crafting_formspec_bg2.png b/mods/HUD/mcl_inventory/textures/crafting_formspec_bg2.png index fc70195b5630cfef906d8a27fdb7f0263c07f387..4c5113d7370050cd01cd417c0fd6f0bad2a10230 100644 GIT binary patch literal 861 zcmeAS@N?(olHy`uVBq!ia0y~yVD@8RU>0CuW?*1=#HC@%z`(#C;1lA?z`)?{?!I{O z;<x!7{eirS2X=7k! z_iWw;PxX>ZoO3~xllt5XoO4T@zyeSTMI1>QD*n$HRVSv33n#1RhrX2H@A-aTn1O-e zz|_#C;r$<9+$dk1y#MgCx~n%U688L`_u=XAaiQ@sQwKtMi5l7ZYY<|Y(x0fw` z$Uy@3Gc+WT#ZisBtatDC8n43@32)~0fr13dK_KS-%zc5KZSQ2}fjFM7elF{r5}E)! C$|-CB literal 1422 zcmeAS@N?(olHy`uVBq!ia0y~yVD@8RU>0CuW?*1=#HC@%z`!6K;1lA?00#g6|G#kI z!j~^!GBPsU-Q5>2UOad1+}kVn2{AA*FqQ=Q1v5B2yOGAgz^dr!;uuoF`1aby+`9%M zZGm0F9rGLnHZ_WQEY#fE6c+F>a8u($I}fFFMxpgPlpcP*T3=qk`7C6Yzvk0Styg<~ zmd$#;Tty{u8JR6FESToxUhO5NHItj#0A^s_XvdxvwCp2 zWX=(|JMlOSG0%>X_l~#x7NSd|_jCmF<5Hc;M&q zzJWl+8V zo3X`oi!@mF{k^F7CVi5-mmmM!|A5rYLrQ!+U6C$hEcbujoy(z8Mt!oomn%NHB8QSC zv8925aHqJj8PuI!veLWN5s?TBJ%V|p>R84@lb);h&u`!QdP|LE?GnZyzxukR=Ptkh mK8MXhqxOmP>sK~=m)F~VWyyPC+OQ8)u6nxqxvX0CuW?*1=#HC@%z`(#C;1lA?z`)?{?!I{O z;<fZ_LxmE$x?-e*Z7;iL6<;`*X(RA_55)YC#c(fyV2%fgy*M==k z{BYxjEyxkj*!fWKWaXu>?=v=jtozS?V5T_SHUHJGAVQbezz4+!fk=VJ@%`Uxybd>P j+*o}JRG>he1Ec;hv&g1PJ`=8W28npO`njxgN@xNA)=T4h literal 1645 zcmeAS@N?(olHy`uVBq!ia0y~yVD@8RU>0CuW?*1=#HC@%z`!6K;1lA?00#g6|G#kI z!j~^!GBPsU-Q5>2UOad1+}kVn2{AA*FqQ=Q1v5B2yOGAgz{cR|;uuoF`1bBb-y;qJ zZ5Nleum&JNCf{r(<*`N^!b>i@4NTe>dKpK-)$%XP@x$*KgYj&(085PX;9_qi07>Hd;s)KYB82 zPLE}w(X*5@os$hg=?x_201_+m^*c7lLb4d7bOtCX_E;7cDS*Uws(}pYv6L)+lyU}? z435pQuoM7^#Y_enatx&1=-HR|$spCJCUi|au_I;AK4JBr`*wq}4>)m^`1?gKGFT_M z{{4}Y%~|`iCD7fK?B@qS;1j%M$M&JN0Sx6xT=yN(~eP zqcA9cifbg8FP0hz7YcwMf-7_WlqF&{$sZ0-j-K`4ktwA1%GJzRd#BT z4j8Rj-#vXz_ILB-$1mrEKK*gS{@u>VXK!q8EiFxc{MP;Vo@=$q=G~jXN_9>xTC+)` z8;n*%bnBebg7CXHXrMYEg4uWS#7 zg?(-8o|M?#`z59QpRdt6e*9nI`Ljmp?=R||-65TCf9v_ychb8fr@*5DcgRp2zpHd_ zp4k!1Cw=Yd;uDlrn1s_|s0XM3`|&5YkoIowwIGv!U%%PGOSrp*hVnz8C@KyvD~={Qq6Jlg+C z)}Gu|W?pAJ?_6YPU;p37^Jb@>ySF$t%G~T;-Inv&cg@Q-6O&kpO7$4w4bKHe&qJd( zO)Xq6W47ir`{Q}Dm(IyrnP{N9U9;!q?9=!n-XzuiTHWuz{B4(CeJPi?a9%$6-(TaN sXY+g{KV{6#dG=&}^*?^%%0pyT|Csl3>D%?r2?dv_p00i_>zopr02jrIB>(^b literal 3928 zcmeAS@N?(olHy`uVBq!ia0y~yVBW~Uz-+|9%)r3Vb90+40|VpN0G|-o|Ns9>g36jCr+F=e*F05%a;`u6^|S_qNJoWckbMbjEv&qVr6CJ4I4J7sHmu_s;a4} zsjI7NXlQ6^YHDd|X=`ii=;-L`>gws~>Feto7#J8D8X6fH85uIyyNyIXgRNW@ct(Wo2h)=j7z%=H}+* z<>lw+7Zel}78Vv26)7qzDk&)`D=X9587?j^FJHcV_3G8@*RS8adGq$|+jsBYy?_7y z!-o$aKYsl5>C@-WpTB(h^7ZT2Z{NOs|Ni~Qj~_pO{`~dp*YDrI|NQy$_wV0-|Ni~| z|Np{;3rCI|fdrttyZhqBi|5XrOVH%R#KiSizs_V}U|3!fG-(?s87(J{zll&-c&0&IB>`fX=F*mkHCgMUHE1I`A^zI8^oOy}EtB|FU~7 z-MjnYX&e$bv2S^O#O$+|Ri5{!-#`8Ow&(8( zYlpy%3tzu{es_xeIr+4*-MO;@ySl#E{oS(rk$SxGe$BHQuCBZ0*DVW~q_@(`7@~N) z_BP|Ae6DV`e^1sws$brr9Tqq-^?jH2Sqayp2X|_-oryU5&$Z^MXP}^QSm8XSv^9&A z<}C<#!(bd1C|JE_k@mG7)-yLmMMO6q*V0NlrnM{SY{Y?{SZ}Z-NHs)(sVG#zx!{l^ zJ)t2-UMGvbJOE#*+(@E(6o82{IW0{TXulaQ|H+Id~*kD_> zbCJ@w8+;-gkI%C2x{=ISy+$c*jjX?5bq;&ijEx3%)j6xu11IvG>S2AevFprHFm)rj zQSZ&ht{chEnQkPDMqYloTRSYpc6q$^4sg(!8YS<&Q8(QYsACnU;ozr+0S0K<5T$GV%8gv)YC7vvA&52&{+`Sun~k0g#P0_(8nsm-L;mX zOlLtvfX;)LdwSWPl>cO7>i_1ghCi~{8>)V%{?_>4L zvU+Zvy6NQGCtusQB{LpvN@6UZ$6zf6vN=EpWHZ>IY^)Ee%MUD1a@g3Agl3n;Ka z7;J{Me}gRdy}OKWA|5OW-D!LvWwN+T)ihb|vNw}YF--Q2E6K1H3((o&$an+hw4+VZ zBI@%4D}Bs%&fW9>LYdA5i*yrVXH=D=%jNxkW?lLkataWNzr?IJaC||Hb^pI)5&hWT;#+JN`!Y7Sp4icl?+Ouf7`buHy)dL9_&YZ zbU!A66EDcwAPjOkNIM84q7Y;?2!m4Af&3s0--E;(NHqwqL4ED1xr}PF_dK|;`Ax)z zKU$ENjJAQGspv3&6&Wm=Lba_2xE^r+Iku#lrZ8nZAQ+g`K6$EA};m3p3A@;Q>OE# z_|yB>+Tmslt3Jj5E=yECDd@)dBlPaN2LTCbY1T~b4>))@Em}`MZrX5QMx(HSF-Lep z+PqKazRswuiQQ}Zz4q{;<$vocoLu>m|H4Kg!{ba=VM@*r>RE)taj%r)Gm;r) zS0@`DXYxJnm7)R?d{?IQEaHHS_QZc@Hae7>&M(bp?#wwabNkY4mu=~Nxp!|nC`B6` ze|4j;b3wA|rAEszrDr#EO=MRmf1Irj()M&_vZ|3?@fsJmMaim7mSM*iC7aIcJ1V0+ zk?}=DXF}iAjbGyPWwizGUD{Zzmeh9@V{*iYLI=~23SHc|%&Yj##l^|?uWNHW@63~3ojljNZ!(AJ+ETl=bk8XreRJRXdTvR+ zxY24_T*;enDvOfS)dXcB*Rmrn1+m#fnC*RDOh@4Wi` zn!W!^y@IZ7uix_|HDAvEsgq{@ved4yiW^m+fi zR?p4qnidvy+h*>(oW5gQ|NMFw^6yZz?tTfCjdEJ0YnQC$+j{lZ&MTU>s-|!EeCAh| zi+W+J*Z=GF<_Gcb{(bWdGP?Wsaret_W!^zv?@q+|YStI}{+#?f{onoR0?sOOr|Z8S p33^{xIc4MiQ=pD9q-Ovo8{`?E3ERxR_3}TM>*?y}vd$@?2>_K@?K1!X diff --git a/mods/HUD/mcl_inventory/textures/crafting_inventory_creative_survival.png b/mods/HUD/mcl_inventory/textures/crafting_inventory_creative_survival.png index e95ee6c89c3fbde868bf3c1062a9089ef1d2b724..50b27a64ab4b239491ea77017d2e82646e24bf4b 100644 GIT binary patch literal 1516 zcmeAS@N?(olHy`uVBq!ia0y~yVBW~Uz-+|A%)r3lsTnQ9z`!68;1lA?00#g6|G#kI zLPkc0ySw}1#f#_8o$G0=uz-Pqfw3gWFPOpM*^M*?2G%A|7srqa# zdcS3Xm!E?MTl<5Y(o1(0JrvR(aJ<>u{q@%aOP|M$d8Wr^Y3_UfCtdT$#|46KTJ*WW zmJv&MT{@gmS95yGlxYV)xCgn<(OJ5*&mz*#^R1-7(y7jyZ+-j{lPwY4dy+3&EHw~< z!Xl@*f>9`hFP1tL!gq~Kl{_#deARIst>4xE3QvV`|NnF<{f3U&?lj$g@6)s6KhM|N zn_F@0|H-sKe1<^nK{gjEM1(H5lGIb$Q}0$Dy_jCvb~b7A{rcCHk0s518=YFD143He zn>4@(!~qGdf$}w0gXI_LoWf877Wxsr^6L!O)cXG_=Ql*=l%0)|n{M{Pc-l>{Bq1Xg z5n&4+B|eo)H(9T@I5qoT{NJAInd-c1%^y9DHfA84xyf2rikR>LH;DL>q6qfC|em?T_$C#UIcj!s? zJIz~x-iyE=KM{arx(1qn_up{_JI4<>R?zp|GTT=)TX-P zKL-nK(*keaHclSj+<_1TnVD#cLz^;{yn#L3pzMm;Ocb^sloY*^h%0^!);xnWm}%V zt0>!3x24~^`rQrsWYp@vbGFKypL)0J^`?gv=h8IW!=l)n&u@LU`JlK6W;TRp5byA^ zl)ua8*Guy4y=rf)P*=11=j-o1ZP7u-PcnSXfKgVlHcjPk&Rgp8 P03_h)>gTe~DWM4f%RYo8 literal 2230 zcmeAS@N?(olHy`uVBq!ia0y~yVBW~Uz-+|9%)r3Vb90+40|UdE0G|+71_lO2MMWhg zC1qu06%`d#RaG@LHFb4$4Gj%VO-(H=Ep2UW9UUEAU0pprJ$-$B0|Ns?Lqj7YBV%J@ z6B83tQ&TfDGjnru3kwTNOG_&&D{E_O8yg#2TU$FjJ9~S32L}g7M@J_oCue787Z;b8 zFJHcT_3HKO*KgjudHeS5yLa#2zkmPX!-tO_KYsf3>GS8$U%q_#`t|F#Z{NOu|Ni60 zkDot({`&Rn_wV0-{`~p-_wT=d|Nj5~f8oM~BS(&8WMmW<7rVQ=FJ8QO?%cTy3=C5? zDHbv?Fff(``2{mLJiC#`z`#Dk)5S5Qg7NKL#`c(SiQ^CdSAW;Z=-w*g+I?>Oi{tOr zIT)-PT3T5W)_0%uV%cOV^lYAK`twSWx7%vJKl^mr`sAG1oWhI@Gy@Cv{h3pYcfkmc486NzSg6XCFNLBxUG)(x^?DGf0ZZVj;j9T48If2r1WUXTih&&l@D zsk7g03)^iM}T5|qfgDkhjXO|yh^B!bce=uGhFT7@D&H1|rW~v`}Z_|kI&>oOIAcro9Kp1J^ z$Ov*KD0-mYDn8mE%YDuUEDUihNKZr3K~Am%eXJtf^I*Y%BRWG;>mkt&kKqLokT`>Q z{=joksA-60?2MaQdgp~YD5lrNu8vu&Yx*!_dJZU5An8X#%;qBBnMJ+!e4#ggP4+db z{MG$!mBfpTl@~47ul$!X*>~Q*MQ_0g3+i%Xe`tdE;lr>Y85)s(0nj*x*beci!||Z0 ze^GpRK=>_GGbH3cct$21XTqwv!Pr0HI1@M+kith;1RS9v+q z)<_;snXJAm!&;1OL-O{JV+J>$MC#oFg(N7GKx_-pv2eV&ssGfq`8k_TUXI@)%U!bN zBg~gS7rl*m@U@#2WF82krX)z@z>_p6<$^FQ2x*}~H+HIN@{F8MF5up%RINAhBb?O>X-vVKAw=KD`&&=+*=~a*)jX{3gQ-_}CXz6N5X2WH}f~BiB zrSVMmo%dqV+lYh%eRqRE(YAbdhBdU9LQX!=><{xM?(jA^xIA#%o5h>Hs?W~(^aT`L zvbiV$9AJdp-WL_juV50j7x2tIQJq31_lOCS3j3^P6em!b literal 0 HcmV?d00001 diff --git a/mods/HUD/mcl_inventory/textures/mcl_inventory_button9_pressed.png b/mods/HUD/mcl_inventory/textures/mcl_inventory_button9_pressed.png new file mode 100644 index 0000000000000000000000000000000000000000..aeaea13a44849aa88ec127d44658316391752804 GIT binary patch literal 86 zcmeAS@N?(olHy`uVBq!ia0y~yU|<7b4kiW$hWvFE@(c_NvYsxEAr*|t1@27U2N||s oh%xxV&vv6lp-WL_juV6DA(vWz^Mel<7#J8lUHx3vIVCg!005R1?f?J) literal 0 HcmV?d00001 diff --git a/mods/HUD/mcl_inventory/textures/mcl_inventory_slider.png b/mods/HUD/mcl_inventory/textures/mcl_inventory_slider.png index 9808b3731c8f1dea70e73e54ee37f0b4c8f9a949..d93273a7bd30c24e1e5d764ca9202efc461919ba 100644 GIT binary patch delta 86 zcmey!mN7vhfRUMjfuWnbdNBh716zPkh-)<%EM>FZ#=yY9SQ6wH%;50sMj8VHgMg=t nV@L&K@`nHXtUS(5oD9z0&4r4hPcj%77#KWV{an^LB{Ts554;$7 delta 869 zcmd1!$TmTuo`a2nfnnp(mk$^in9f#(M3e+2mMat#<)>xlq$-qD7NjbqR%E6zFjU-n zJ2kNHjsj2HeM{H=hTNXBg&Zs^&0l={?VPd9cz5i|yI!@L8V)ka&GycRe!hLp5g*V| z#N&Ck_@w2cC6ld10O0pC5Jj zuWggP-}b_6PnXa6;yqt$q=oi9*>d0c=I5+mnbyA_ZabUzc>Vj60zKJ(Ad*vc>bu-y5yfKZI;Heoq#EeQmU(-co4et*Q0`U9-MmMv zGUQh11}M61VOM<>l6hh0FE?IqpBkfS$IkSoo{Z_?-p;Ce)~lJfqKZLq8e0~V;r;A| zPq*vT_sYz(cAU(4jKlcel@Iei_`k}{=$X08#dwB;zj(qt%idIT|b(i`U;6M0l>a^ja+gTTS+&|YEPJ@ z1s}b55WKNy+7Wh+30mb`%sDLT2X9pVIwrGt>FHC`CBjeJNLeVcnOHb9Or4}uuVY!X zVpRs$s##aBY|S`3Dfrr)%}*=cLxsJU)lWNnW^F|2$0x6Dp1s?B{g7)xYv#$LP9KB3 z))qu1?n)|abz93WU$n%zzvjk6cgrm2Ut6whd75@MI&*9B^uEXUi??6cJ3Y?dYNA)V z)z>r2=hjWz%=hHhgo$l^HaR~u7T>#Kb~Qcgi_^R0tSu{jlQLi4Y?eBbX76)hk6(!q zv!NeL{Ub9@g@u(y-F})MRm^7|J!BzrYJr>8!;)D?91P|jv3imAUE#ap_60Au@A$a> zL~G}}{0ZE`ch$a6yKQ}?Dz;uEvf-KL9K&9tf{m7UHedhg{>w$)F8jg$h4ncZ3f^8n z_%5)CT|8L&E0TeMfwRCPvY3HEPZ@+6E0)@qF)%R1vzK`Ky0SlJW@DGqJy#UAnt_4A z+|$J|B;xSf3xEIQWkn$D-vX2U|{fc^>bP0l+XkKt+E%+ delta 1087 zcmYc|$uU8qo`so#fx-Fpm&*(c%qyxwB1(c1%M}WW^3yVNQWZ)n3sMzQD>Bm<7%Fb9 zot9hlM1!a8e{q*>ld2-ial!b|>So)2`x2IIzWZ`!NZRowx;osAUpVF%{QFtmw!dIv z24A4=@=2FkwWmegxOnnb6Se~g4r|SRCIJU9;#ne?1<)JGen<>ZW#8lf(WOx8LQ8 za_itdVwDlLMQnwD^6kk=rA4z$w&h&eaO6ZY@1&g@b7I9FAIf#^TzxTxd7hj@%hJYK z4rlwfUYNK2%}=S+Gj}+r`4qTGd|cUDe(HWEzkBhzOR7;PS*mt1eqNQSlRPoHJffbF z@$BT_yFc&h+H9zc;a<})^PNdL%Zu>6u^~(QZ%sNInXo*ZhutXBo^OKEnY9r-oE$Nn z?JTOhdTw@1IL>3&H+8eiIt7PScQk!A2)H4*CMxgV$MTRS~f-bLdwe{@s4ECCKP4cN)y_m1=%*bs?^Hh(ou}nQ}IsHv*_XCd0 zle$_bd27C#apmDH!&`|D<92%WhGwq{E7rX#eQNp9WxA%>JEuOIySpUk|GZtT^QvFk zWh|KDCS!GJ!$fyUyTI(=v^iFnx6DkR`ENnl3cKLN;zj$HxwYR?65BqvHlX>|n|AJ~ z*mB66>i{V;nHCB=sKGxrf!zHf77h& z?T;cpUou$QwfAkZ$eoFoBv-G0KjSff`nQ*V;(u;k9A$GW$Fj11v*oJ<$C~P$p=*x> z7Hl)9T(M=^TjS@d=_!{U+AgZv`DTWn%Z8hVj`LP5JJKhvT;y+c_{u%Q<7ENY+G91f zYUA7P%X+98>bu02>nx0R=E~!m<*=tDCGo)@&rLjG6ZI{P`Zlhcr!Q%7qHKfus?@8_ z_n)a7T?r`MlNq@;bjda=q53_s9}XnGn|&Z!vhLfX-JebhCOev+`L0vCqGny|?ux@& z?0@91Z8%=G<^AGcRk07xvwVBoMA7#KJUJR*x381$4un6YB1eHjA-1AB?5uPggwW=l49DTB2oRz(a9 z43eHMjv*T7lM@1zcw!{j9Hts38m!8?u$qbCHltDB{W0g{GNJCA3S+<%Yyl=v+kztjCrekBmB?> z0VCZL%bQG7TK4@F-Jn(d=kjCSm&>=OGuxkEd~5BDr2)Z?OQ!H}G(Grt&!BIXhnjTa TL*?HL3=9mOu6{1-oD!Mq@R0TN#W$q=7O9wVCU}#d>WnzZer#RIG~erNX+BPmMw`4BJ-mK429kc&f0pwfs<$24UR_*XOkK> zymB@#7f8t3&$asQwD4=?A@83)Ho4Cr&{wza8>E?Z)e*6eV9|!K0U$5(0#L2 vwvWqy6~T(rc{wMurmr};p5p*xSl!Rxnj5=Cb8HzH7#KWV{an^LB{Ts5#0gFN delta 201 zcmey&*uXSFLW+Z#fq_9omp_<+fq}6&$lZxy-8q?;3=9lf6IHeAZEbC9T&1QnFfg=u zx;TbNT=tz1$;Yh7D&JQGqb(vRTlGgKZCLu7#J8lUHx3v IIVCg!0L$@DIsgCw diff --git a/mods/ITEMS/REDSTONE/mcl_droppers/init.lua b/mods/ITEMS/REDSTONE/mcl_droppers/init.lua index 7167de19..1065eed1 100644 --- a/mods/ITEMS/REDSTONE/mcl_droppers/init.lua +++ b/mods/ITEMS/REDSTONE/mcl_droppers/init.lua @@ -15,7 +15,6 @@ local setup_dropper = function(pos) -- Set formspec and inventory local form = "size[9,8.75]".. "background[-0.19,-0.25;9.41,9.49;crafting_inventory_9_slots.png]".. - mcl_vars.inventory_header.. "label[0,4.0;"..minetest.formspec_escape(minetest.colorize("#313131", S("Inventory"))).."]".. "list[current_player;main;0,4.5;9,3;9]".. "list[current_player;main;0,7.74;9,1;]".. diff --git a/mods/ITEMS/REDSTONE/mcl_droppers/init_new.lua b/mods/ITEMS/REDSTONE/mcl_droppers/init_new.lua index a36a2dbe..fc7238c4 100644 --- a/mods/ITEMS/REDSTONE/mcl_droppers/init_new.lua +++ b/mods/ITEMS/REDSTONE/mcl_droppers/init_new.lua @@ -15,7 +15,6 @@ local setup_dropper = function(pos) -- Set formspec and inventory local form = "size[9,8.75]".. "background[-0.19,-0.25;9.41,9.49;crafting_inventory_9_slots.png]".. - mcl_vars.inventory_header.. "label[0,4.0;"..minetest.formspec_escape(minetest.colorize("#313131", S("Inventory"))).."]".. "list[current_player;main;0,4.5;9,3;9]".. "list[current_player;main;0,7.74;9,1;]".. diff --git a/mods/ITEMS/REDSTONE/mcl_droppers/textures/mcl_droppers_dropper_front_horizontal.png b/mods/ITEMS/REDSTONE/mcl_droppers/textures/mcl_droppers_dropper_front_horizontal.png index 59c923465f7b9b1b46c461a2f6d8174920eca41c..e247e92c824b84f69b66ddf6bea8956b932d5d40 100644 GIT binary patch delta 217 zcmbQt)X6kKLW+f%fq~)e-A6$T3=FyfJ|V8{4K+)rPuR73=|p>#`u@Xu*BBTWrhB?L zhEy=}p5DmY3~LY0YLYe|t0XR+lyF2=i7J-Ohd~6(RYSe`c3Kd(f&P!&_Bn=Uf*| zbJ=bk*jQ%h7u?GhRC>N$&LrtX^7pFj<%;d^exJNl?|=M8*tUau=10!33bZ8(aC~I` Y%&N-H^m1i40|Nttr>mdKI;Vst0AB1`R{#J2 delta 227 zcmeBVn#?poLY;$|fq_9omp_<+fq}6&$lZxy-8q?;3=9m$0X`wF?F}`%Rxe#TeZoW| zm3m_(C3#T^&kqaC85kJ)JY5_^BrdB4c#9o&;80?&o8(#j|FPKe9T%2sXl*FCIgRl~ z<0L1+!aW^4*BrGQ8757=%NyMNlqKSgU&+c{%4Zqw&WMz<@{=y|dAFpNMUvU~$tt$* zfA6SEu&wza@o-c7Az|<8_v#lOs9fs$UAtYl_FIPG6ubN9wcFjVRd>z|QBOC#U&8m> jyP9oXbLwa9Yy6I{SWbP0l+XkKpl(_k diff --git a/mods/ITEMS/REDSTONE/mcl_droppers/textures/mcl_droppers_dropper_front_vertical.png b/mods/ITEMS/REDSTONE/mcl_droppers/textures/mcl_droppers_dropper_front_vertical.png index f0b5db9845fc6671cdc3d9cf689e19440a84fa5b..37bc9fa20cce5e308435837c044a24515778ed9f 100644 GIT binary patch delta 190 zcmbQl^qX;l1TPCS0|Ud`yN`kx7#MUX8X49r?O#5Dfq|jZ)5S5Qf|2*c#Bo zE{^+tVEGZx^prw85kIhC#o9O8!IWvi%JOaocYPX zz|iaI;us=vS$6^_-w_2KX3esszOw)S@04aJFY!?R;F$gP)5j}zmu(dqZfP9oaB10P z#I0b$p;LKQYBIIcQGtS>^G4SQ`KU diff --git a/mods/ITEMS/REDSTONE/mesecons_commandblock/init.lua b/mods/ITEMS/REDSTONE/mesecons_commandblock/init.lua index 91c682cb..c55e0e41 100644 --- a/mods/ITEMS/REDSTONE/mesecons_commandblock/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons_commandblock/init.lua @@ -170,7 +170,7 @@ local on_rightclick = function(pos, node, player, itemstack, pointed_thing) else textarea = "textarea[0.5,0.5;8.5,4;"..textarea_name..";"..F(S("Commands:"))..";"..F(commands).."]" end - local formspec = "invsize[9,5;]" .. + local formspec = "size[9,5;]" .. textarea .. submit .. "image_button[8,4.5;1,1;doc_button_icon_lores.png;doc;]" .. diff --git a/mods/ITEMS/mcl_anvils/init.lua b/mods/ITEMS/mcl_anvils/init.lua index a12a13cd..5e395371 100644 --- a/mods/ITEMS/mcl_anvils/init.lua +++ b/mods/ITEMS/mcl_anvils/init.lua @@ -17,7 +17,6 @@ local function get_anvil_formspec(set_name) end return "size[9,8.75]".. "background[-0.19,-0.25;9.41,9.49;mcl_anvils_inventory.png]".. - mcl_vars.inventory_header.. "label[0,4.0;"..minetest.formspec_escape(minetest.colorize("#313131", S("Inventory"))).."]".. "list[current_player;main;0,4.5;9,3;9]".. "list[current_player;main;0,7.74;9,1;]".. diff --git a/mods/ITEMS/mcl_anvils/textures/mcl_anvils_inventory.png b/mods/ITEMS/mcl_anvils/textures/mcl_anvils_inventory.png index df84b72510cae46c812328aa621cea9a6a09610d..d0ab108c618e18f4dabb5a95460433de935d9376 100644 GIT binary patch literal 1088 zcmeAS@N?(olHy`uVBq!ia0y~yVD@8RU>0CuW?*1=#HC@%z`(#C;1lA?z`)?{?!I{O z;<Bcm2QNtNA|# z?;MnwAN}gT(sUcQ#;5n+cgou@p5QnC^2r4yo79^xan9vpTN-R_C3!{WuFd1^roT3- zH(xqAkH<^BjFhcpq5nx0?j+ti5) z%?8arqhm$dR%JCGINl}nO@8Y2{8sYuzu#N@tQJo8djX<^tzNeHy;vd)7JyPH;z-hP zajS(W+CbvS#{F48_s_lbG#(Kd>%0vhmqOgJ+On)>|M%V*k5hJD+WFwdM%$l%IOmo) zsh3>hoO{7jy~Ig0CuW?*1=#HC@%z`!6K;1lA?00#g6|G#kI z!j~^!GBPsU-Q5>2UOad1+}kVn2{AA*FqQ=Q1v5B2yOGAgzwSDt>d0c+RotoNQ4jq+a+)#qSX&_Xw&ih}$U)R}A9{se|<*b3ul8PPPCk2FZfB zAiIRs3z4~CtFgF*IER4@hdLYC>LZ?Wkhx#ZQ_ZK#lbx4m=v+=tsd@JM{^alXV)8qW z8QHoWOaE7`Zfn!KRlU$i!|z*4z?@IVPcE>yIoa{<=F2}f2Uw{$KT7duJL+jUm#1s8 zt)z(h(-Nq{DOVs03x$?@@jt(9TPhI}wfuAV{r^7GY=5>wba8@pz5F|K@+a$=!s^vV z%XgPW?fdm_d7kCV+MRcc|63MrQs3`4$LQF}ITkl3TNa*@P%nOz;{WW3rste9os(^6 z3NQasXtcb=?_cliYcMtPFg5XW&U6OfvnbS>UUf0<-f@o)XTI-Oua5F|z8H55#QQeI z-VY@}DUVA~^dO}<5EoZmzPxeaWa0eeYN`Kw&96txe7D@T{Oo7hgNP_5oB&95@2REp z9-lk@&E(CzYnLWGt~(A2fR&G-sjAS*tfc79^BePy)xSUcRqS|e-`mX3HSPtZ<{(fm zfEo$%I*1E$C$=oJylCa~9iKPa^6p-~)#S;J`x|Ya_6NU$W!gD?ymP_9^6`Fk@!q3_ z&y%Y^$tuz?Yu`GxGUnA+%QBmP^WJ3Y@`6|o=7FLRe~hj?`trtwmFG7;{`ma~C@QVw zt+%P)7X+0#AkBmVfsArv$=W%mmd4FbKK}Uq$$8f<1>8?Q{_Tmi6MBgUvK_C}w;5U$ zNF96i{r2NES7hzx#3eVF99=KJ@X6nrnMn diff --git a/mods/ITEMS/mcl_books/depends.txt b/mods/ITEMS/mcl_books/depends.txt index 8b043fbb..e1ecc48c 100644 --- a/mods/ITEMS/mcl_books/depends.txt +++ b/mods/ITEMS/mcl_books/depends.txt @@ -1,3 +1,4 @@ +mcl_init? mcl_core? mcl_sounds? mcl_mobitems? diff --git a/mods/ITEMS/mcl_books/init.lua b/mods/ITEMS/mcl_books/init.lua index 1cc0ef3d..5ba99e30 100644 --- a/mods/ITEMS/mcl_books/init.lua +++ b/mods/ITEMS/mcl_books/init.lua @@ -3,6 +3,12 @@ local S =minetest.get_translator("mcl_books") local max_text_length = 4500 -- TODO: Increase to 12800 when scroll bar was added to written book local max_title_length = 64 +local header = "" +if minetest.get_modpath("mcl_init") then + header = "no_prepend[]" .. mcl_vars.gui_nonbg .. mcl_vars.gui_bg_color .. + "style_type[button;border=false;bgimg=mcl_books_button9.png;bgimg_pressed=mcl_books_button9_pressed.png;bgimg_middle=2,2]" +end + -- Book minetest.register_craftitem("mcl_books:book", { description = S("Book"), @@ -81,6 +87,7 @@ local write = function(itemstack, user, pointed_thing) local text = get_text(itemstack) local formspec = "size[8,9]".. + header.. "background[-0.5,-0.5;9,10;mcl_books_book_bg.png]".. "textarea[0.75,0.1;7.25,9;text;;"..minetest.formspec_escape(text).."]".. "button[0.75,7.95;3,1;sign;"..minetest.formspec_escape(S("Sign")).."]".. @@ -101,8 +108,9 @@ local read = function(itemstack, user, pointed_thing) local text = get_text(itemstack) local formspec = "size[8,9]".. + header.. "background[-0.5,-0.5;9,10;mcl_books_book_bg.png]".. - "textarea[0.75,0.1;7.25,9;;"..minetest.colorize("#000000", minetest.formspec_escape(text))..";]".. + "textarea[0.75,0.1;7.25,9;;"..minetest.formspec_escape(text)..";]".. "button_exit[2.25,7.95;3,1;ok;"..minetest.formspec_escape(S("Done")).."]" minetest.show_formspec(user:get_player_name(), "mcl_books:written_book", formspec) end @@ -135,6 +143,7 @@ minetest.register_on_player_receive_fields(function ( player, formname, fields ) local name = player:get_player_name() local formspec = "size[8,9]".. + header.. "background[-0.5,-0.5;9,10;mcl_books_book_bg.png]".. "field[0.75,1;7.25,1;title;"..minetest.formspec_escape(minetest.colorize("#000000", S("Enter book title:")))..";]".. "label[0.75,1.5;"..minetest.formspec_escape(minetest.colorize("#404040", S("by @1", name))).."]".. diff --git a/mods/ITEMS/mcl_books/textures/mcl_books_button9.png b/mods/ITEMS/mcl_books/textures/mcl_books_button9.png new file mode 100644 index 0000000000000000000000000000000000000000..27b80a89b6e8825f7515d3e1d4a938c88d92dc91 GIT binary patch literal 94 zcmeAS@N?(olHy`uVBq!ia0y~yU|<7b4kiW$hWvFE@(c_Ns-7;6Ar*|tJGSlM?A!Ip wrh#Mog(*!O3S3*v*_3je1da;u`6)6~i5Wz;Em^Ugfq{X+)78&qol`;+0NEcHZU6uP literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_books/textures/mcl_books_button9_pressed.png b/mods/ITEMS/mcl_books/textures/mcl_books_button9_pressed.png new file mode 100644 index 0000000000000000000000000000000000000000..08d4272ded058a6f4034bf3789a90ec5bba229db GIT binary patch literal 94 zcmeAS@N?(olHy`uVBq!ia0y~yU|<7b4kiW$hWvFE@(c_Ns-7;6Ar*|t99zuW7O%76 uS2(0=vQ&YoW1VgulTwb8z)=A{KSc)lmj;n(>(7I9GkCiCxvX}T(zUgD%a_kt&c;+$LJq+W7~6E1*F97!6kzUIBLvDD+_ zRbE_3=BI?1-t3TKfbu}elK5<`$wG;GdYRf%jfQ?NAdu% z{sRRNk~X-%(Si#se*gEGo@4cWy?60M6jBTx2%TqC^;4?9Z@=9^&UYH~rk*=yocz6n z4-^%1FMv%XCq}Tj49U2 zsW@%R$iTo5^Hg*3^z|QK{8(_mcgNxiF)L~Qp1YI3`@eaEND;&)7*Gl#HX*&QO>;Y6 zkrVTt6DelaeVTId^!198nhXCK5RUmTylFFX7D7&f5OHh{1SNfJ;@BJriI|CnPv;>y chG=Gk{pYT}_1i2;V?kOxUHx3vIVCg!0L=l}?EnA( literal 1604 zcmeAS@N?(olHy`uVBq!ia0y~yVD@8RU`}RXW?*2*-xD6iz`!6K;1lA?00#g6|G#kI z!j~^!GBPsU-Q5>2UOad1+}kVn2{AA*FqQ=Q1v5B2yOGAgzNl&K8y*8FRFJb-t%hn?z3%e}ObxyYE6jm=3 zQulkb#Qv>{-=ia*bB=UQwkQ-*FMNdHg4CdKL0X`SL9!sOir<_gp7I~}3cbB_H9g1X zx9!g5CoZm8wl6vP`x9A3kmMW-RI|~zl_tIBgJh$V0#j@&4v$h+R-8%nxZuO+{7FgicnQL9ti#-;5{9Wd)>MohHSw`=S z_x+ytMD`#g4nV<5WT4}4tKTCGr|$d-w9)9%ZC>CeE8U+=?aZocwMV-0ODt__24H%dYJa?Y&zk_wJ;%6Ex2(FaNYV zu(RytD=V`y|I7D+pJapu&)>MQdYAQk4n!P4^D-zT;7JrAODM%+3Fc3G&xb4y{JwEx z^{kbq`L4;^=eJjX>ibcRnzFE1@sB-VQS7c?J-zAs)xV2a&boS~Jm<~4J<90G4CG8A zT}?2+%WK~oU(L8uoAYK~TGrX%8VfGt@ev$)H6}VKF6RnCiacHY KT-G@yGywo5EXh#- diff --git a/mods/ITEMS/mcl_chests/textures/mcl_chests_inventory_chest_large.png b/mods/ITEMS/mcl_chests/textures/mcl_chests_inventory_chest_large.png index bace59eda855793581a07c3ea1d8e74f217f3cf6..98f738faaa88d47e73c0786c910bb96d9ba70c41 100644 GIT binary patch literal 1562 zcmeAS@N?(olHy`uVBq!ia0y~yVD@8RVBut8W?*1oE^&Rqz`(#C;1lA?z`)?{?!I{O z;<^^!vt-6Sj;D3=H6~ z_|nsxUvK`2Z+7|e;`cXh*#7*BVlv!=-~d7R2P96c3sGHS@f8#lTl#zZ?;wKW{EZ*q z%9X)E@x8D2?&SOPVZngn8e;uP(6ODtSb{=gd*5E^*x!7!%lB_CyiTv6SR?tpum27_ zDB22NLsJDLZPF5@f3ZZ^ z>Sc=`h*~(=??sEB)k3fUltLCqmWGKh5w=3n1`t!=a9ZQXsoQ+CY9lbL;Yb-y^4*KEC&HVl@*3 z0|O*1-bvp7m-j^0?0s1Jy|w3#@jm|iz2(2~D@3#q8xkOw5$W*B?`y+S@4r8O>>ZZ$v*4ut XW9QRXCq&3S0J+oC)z4*}Q$iB}C?}pH literal 1940 zcmeAS@N?(olHy`uVBq!ia0y~yVD@8RVBut8W?*1oE^&Rqz`!6K;1lA?00#g6|G#kI z!j~^!GBPsU-Q5>2UOad1+}kVn2{AA*FqQ=Q1v5B2yOGAgz^?A;;uuoF`1abt&bwX$ zZ5Q`-C1fe>=$PIpRKe}KQe;Y#m~fY|L|T5%{X(X@95F!$e_s3lF2L7cx8!%!Y`Ojm zXRE6%_wL=gdwIp(;N8`;=H+J9S8uak{-dnQrRHeu<=^%H{nt8GS=#}=%llTk%xf)^AOHIPZ!MFP zzdw;*czW&;&pA-5{2qa{!nq)u=OAQ3T$n?MbeHC~I*5hy`Xn^UbKcDRqYU$gmF)7= z1y?P~-^_cpuex~uU5iR&StNIZ{EW;62MTd6g?bC(@RzGBj$S)&kskAZ-kr;W%#zRh z?oO_6fraq$$6I)|NImbn8+^As|J`d(;CAb-`QBb>i4^|f6E@v0m)u? z3YDD$P6$YbK~f4r792(pZ-Z<`;esLnTl9%U+dqD?v0AIz-<>CAj#ZieKS7wcU+%eV zbRlbwb(w$Z{k=Qy=glz&$?m#CYN7-0G`W&Ww}Uv@P11RsBQ(%uP{ zOy`zIu|@S3AAh&<-EQ;mw|k3^fn=v!Lkt6X8%wH1NeiSpyfZlGZ_ni8?^eFCl{K7D zcTD02%+T+A~zEAyZJT>c=bULq|nrW>2BtM`BRvZFER__22{YY=Ip zFp4dz`1mnsTofNW_U`4UKgvixq(xj59Xs~*{YhI{!+=*eZrIK}k4PJSrya82-MC?U zwf6h7y6ST`ZrH}ot7k#vJc9X>)I?O+wKo3TjUE4NcP>|EJ0&Z0CuW?*1=#HC@%z`(#C;1lA?z`)?{?!I{O z;<>8e|Yie2K8t!pY?-H}@T% zBeS~f)Sh2A=I!|VL#tY9@q-)tl`nA4EpbvWxx_hl#jm_CC(iEpb7Nk{#^pEC>%NN1 zgl|$W`Sopct$K-(#@sh27nE#LZ_c{UIhV&vy&58NtHepY`O?XGJYMQ0S`t(IzNG}{ zS}&aJ_%g+xZK-g%wWZ9yo5EI8b^O&!vJ7Bm*xf5}T7LD}lF7C+C;R<~`}gtnpa0(e zGbh_F4E{T(WRrUFCC<6C&UmU<8>!EIb8=3J)AD=8mrl-uid%J`+srw|35t~)88i3|4&{0cCg;K(7QGVk_x|Q`h%Wca`i7^YB0-+QvDT5O(I3eP5+TDA<&-4`cW%s}3 zWME*Z=!6DG@t$Ah%J&nK=f8Zjl6 z+tiUFhi{w3DU0cc3tw*B&m3{W*6t>qL*;ef+e}6z_duB+*w^#UUc9DaO$SK8)78&q Iol`;+0A#K;Q~&?~ literal 1605 zcmeAS@N?(olHy`uVBq!ia0y~yVD@8RU>0CuW?*1=#HC@%z`!6K;1l9{;lc$528RFt z|6jOp;memV85tSw?(T~hFP=Mh?rG8KjtmS8j3q&S!3+-1Zlp0Vu-@==aSW+oe0yzU z?j0|Ywu_N=8kHCOv?2uFHSk&_FnZmQiB4F=BynQy4ra%VEVs3vA3DQzYxkUkKOfDO z{quxJ^S#|t6B)ip>-QC9R&tZS#o4{r%zV$g++<1p+)ML<>&mU3{F(H9_PhPH@KV|CMeQ$Ex$4%GL z=5C9*7~22Va}LNoFJFUw3M^d2@1(#m&i< zg+bqurAnVdr7{iF{jv^${bjk5d%13S$<<_N9K}Beg=yxhjD7zM)xSP8nHJ65XMgqK z|EHVYc*zsgGMhQx6E1Am3G|l_}lj<%ky=%Tk+X#Q-9Ba>zQ1?lomUpmZp_P@SI&aS@?FhZJHUE-o8Sd0RqK z&b)0g6Cck=uKv^~fK&)x&V7uM_;45{G1tO0`Rntib$3dw_FCI6XS+0^?!T9{f4;x7 m(F(RIxpNV>&s`4w#r0CuW?*1=#HC@%z`(#C;1lA?z`)?{?!I{O z;<z+Cbtyl1$!`S~M>mo~{cZ|1#w{=Ee$wP3{lOHk?trzvt1 r*^|BJSC#lkNbg<_Dk%`|0kaOs3--sgHcyH)193fF{an^LB{Ts50CuW?*1=#HC@%z`!6K;1lA?00#g6|G#kI z!j~^!GBPsU-Q5>2UOad1+}kVn2{AA*FqQ=Q1v5B2yOGAgz?$Ic;uuoF`1bC`-YX6w z#~*HAci?@{q^Yj#%Nn?2mMRyii#&MXwXpf}Q;r+T$_~cWLdpH#ejok+=JIB>&jOXd zL=0o}R!%m*H|LmP$+u5s{tGvo$0T>y$2zC$-Jh#BGk@jhZ(n{^cF0{i`_ib*sz7MD z@?#ahM@Ky89O;~FQ7EKd_z1!66vp5Rslye6WIW>4TRn|BXRDdCYrX${xl5VnyY5WJ zP%f-q2s0a@`w`4+uwfuy&p85@1#!s=lfPGEE*|on^J>i37zwX<&OTF+{diA}V zCqQOna|p;PEH+zU#s==lvHP&w*Y8ot^?9PW)qtWG7LJ&KE~g8QRxGxH^bi?umt!s_ z-ATLi-}dJ_-=}7e%^n|q?|DxU$#Z_x4s^}yMaOcF{k=cA`qpNp$IBk~-=Dlk8RpYR zCgEEowo87m_up3?yz}givp+smPbz0YB!*7nk_rhibZYCI!r6uYzdxDxZOw@tFMmA# zuJWD(q#u-+EY6DRLR|a)UPzvCp0VAZc~4{yLUJDQ!Hg>*VGG|AcEZIoyH z?!!D#;NVXrSC3?_%P`C{e)oS~&G%(RvkM<@tp3y|ppMOa%p8Ly1>v`@Q&?U0>6C2C z$7YZJy+3LDHgaO&ZL%y}lH9ZIuEoY*U%#2mwTitzH_lns~>bU+e eZ?=79Rp))qWes^T0YZC0#j>ZXpUXO@geCw0uBo>G diff --git a/mods/ITEMS/mcl_hoppers/init.lua b/mods/ITEMS/mcl_hoppers/init.lua index 78a0d431..931124ae 100644 --- a/mods/ITEMS/mcl_hoppers/init.lua +++ b/mods/ITEMS/mcl_hoppers/init.lua @@ -7,7 +7,6 @@ local chest = minetest.get_content_id("mcl_chests:chest") local mcl_hoppers_formspec = "size[9,7]".. "background[-0.19,-0.25;9.41,10.48;mcl_hoppers_inventory.png]".. - mcl_vars.inventory_header.. "label[2,0;"..minetest.formspec_escape(minetest.colorize("#313131", S("Hopper"))).."]".. "list[current_name;main;2,0.5;5,1;]".. "label[0,2;"..minetest.formspec_escape(minetest.colorize("#313131", S("Inventory"))).."]".. From 3bcb868f8bb073b27e6e0eeaf177a9a524500f1b Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 10 Mar 2020 05:10:48 +0100 Subject: [PATCH 562/737] Remove unused awards images --- mods/HUD/awards/textures/awards_firefighter.png | Bin 486 -> 0 bytes mods/HUD/awards/textures/awards_house.png | Bin 591 -> 0 bytes mods/HUD/awards/textures/awards_level1.png | Bin 195 -> 0 bytes mods/HUD/awards/textures/awards_level2.png | Bin 194 -> 0 bytes mods/HUD/awards/textures/awards_level3.png | Bin 193 -> 0 bytes mods/HUD/awards/textures/awards_level4.png | Bin 175 -> 0 bytes mods/HUD/awards/textures/awards_level5.png | Bin 177 -> 0 bytes mods/HUD/awards/textures/awards_level6.png | Bin 191 -> 0 bytes mods/HUD/awards/textures/awards_level7.png | Bin 178 -> 0 bytes mods/HUD/awards/textures/awards_mese.png | Bin 564 -> 0 bytes mods/HUD/awards/textures/awards_miniminer.png | Bin 455 -> 0 bytes mods/HUD/awards/textures/awards_novicebuilder.png | Bin 374 -> 0 bytes mods/HUD/awards/textures/awards_ui_bags.png | Bin 612 -> 0 bytes 13 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 mods/HUD/awards/textures/awards_firefighter.png delete mode 100644 mods/HUD/awards/textures/awards_house.png delete mode 100644 mods/HUD/awards/textures/awards_level1.png delete mode 100644 mods/HUD/awards/textures/awards_level2.png delete mode 100644 mods/HUD/awards/textures/awards_level3.png delete mode 100644 mods/HUD/awards/textures/awards_level4.png delete mode 100644 mods/HUD/awards/textures/awards_level5.png delete mode 100644 mods/HUD/awards/textures/awards_level6.png delete mode 100644 mods/HUD/awards/textures/awards_level7.png delete mode 100644 mods/HUD/awards/textures/awards_mese.png delete mode 100644 mods/HUD/awards/textures/awards_miniminer.png delete mode 100644 mods/HUD/awards/textures/awards_novicebuilder.png delete mode 100644 mods/HUD/awards/textures/awards_ui_bags.png diff --git a/mods/HUD/awards/textures/awards_firefighter.png b/mods/HUD/awards/textures/awards_firefighter.png deleted file mode 100644 index 7c2236bb43165f21b39aa3aaa8f7a76491d95f20..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 486 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s77>k44ofy`glX=O&z`&N| z?e47|qRdov}<9J60veqC0ALsa6Sz!VQh zXWhT-j@f1{Lf_c8xK7}0octup*@E@&0$nMUTT)Vs79QYk7HD6gc*@1#=xZD4KBqT5 z!t+@7-(W+^i^jUhMrCOO>#Q*zUsM~pSgZix=`3XL6KYn}M`^ET$$U)Da5q&p2+h*t( zhs3|X(RlpjhrD;QK7Q7An&x_9(~j_M|MfS9o_)pk>kjLb(|g(uSJc{R9aaC%5W;wr z-@tdD5a*tQ3cZ(|A6%?uSvB7*_OigHo+V#OuQRqi{H18g+_FL3ck}nIJFe_&JuhW? z)!Bb-;`_W$k8#zh46W7x5w>G(jjZ1V&wQ6sQ?QXcwaRO2O3C$uCAqylDurp0F=1L~ ho=vx6a#?@>r?fb8Lh|#h8aYr1d%F6$taD0e0sw>(!omOm diff --git a/mods/HUD/awards/textures/awards_house.png b/mods/HUD/awards/textures/awards_house.png deleted file mode 100644 index e23e30d4ad715f4f651365f8627796f5ad4651e9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 591 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s77>k44ofy`glX=O&z`&N| z?e4+=20xv5*E29Ma29w(7Bet#3xhBt!>l<_p(gsepZ?VhwVFfj0B zhD4M&=jZ08=9Pf;?^(BLCIbWGc25__5R21GC-2S0a!6a?j zr{7MGB0}|I{yfN(y1#73y^<*lOssZ1VvjRvPg}<5QKQmzA=qq7u=fO>W1oMsJos?^ zxTVQ)?gz{f&lxrxe9SDd)I)f7=Cy^5X)8aeE3_Rr-Ro>)y+76UWVP+jrP}NpHI8k4 z&Cjr-;2pd< zZ^0|C8AKHpRp@W6%B^%*yWg*8;se>M|E!kIi`(OW)4-rXfMeoP=O3ol-n%ZixjdY6 zw7T0{ckRx~oJo3jI~mH=;tlG)b0&#Qy_(&j$WV~~NYnh7yso^{z0P7^yM0y62cFsP z4xe|Vd+~9Dr$TS9)vOD>zW(v48yqejcNz4h^cO5k44ofy`glX=O&z`&N| z?e4ER6i?vsOkA>EyloG+#Mduh{w6 r5pP0LLPElhijPXnM!wgTe~DWM4fciuR0 diff --git a/mods/HUD/awards/textures/awards_level2.png b/mods/HUD/awards/textures/awards_level2.png deleted file mode 100644 index 9f9564facde18e565f69ab985db231c79a58d3f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 194 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s77>k44ofy`glX=O&z`&N| z?e4vf&}Yf1_L9R-~F0dM?IPtd3bnuiYM@RCN9}7u2I6cc;38w^(D;uvAbNh nF#3Qbqs5#|4!jV2#>8NwCbis7NA?5*0|SGntDnm{r-UW|jU_VI diff --git a/mods/HUD/awards/textures/awards_level3.png b/mods/HUD/awards/textures/awards_level3.png deleted file mode 100644 index 8931454ad3ac6b46e5a57e7307d928dae8e3775a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 193 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s77>k44ofy`glX=O&z`&N| z?e4vf&}Yf1_L9R-~F0dM?IPtd3bnuiYM@RCaRoet*WZ}f01`j$xES&YzBq~ o1_pDuDvvby^zUjor^mpsbe;llN{9Gr1_lNOPgg&ebxsLQ0Bia*egFUf diff --git a/mods/HUD/awards/textures/awards_level4.png b/mods/HUD/awards/textures/awards_level4.png deleted file mode 100644 index 68e393f045a6405de145f1d883fe8dc699a4aea5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 175 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s77>k44ofy`glX=O&z`&N| z?e4jxHe_I6VDNPHb6Mw<&;$TQG%vgW diff --git a/mods/HUD/awards/textures/awards_level5.png b/mods/HUD/awards/textures/awards_level5.png deleted file mode 100644 index d0a05bcc9aee4a0f0ba6082b282a437cc14ad7e1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 177 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s77>k44ofy`glX=O&z`&N| z?e4Z1dv-Ov(_>)R ZzfN!VLcLXg7#J8BJYD@<);T3K0RX_&FrWYc diff --git a/mods/HUD/awards/textures/awards_level6.png b/mods/HUD/awards/textures/awards_level6.png deleted file mode 100644 index 5c6482fdf9aa0d5a2da6885a5cff308d4108db8d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 191 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s77>k44ofy`glX=O&z`&N| z?e4vg2bnWK!5-D_D1s?8yg>9TI%g0ec;G}0|!3L{4Kz2k44ofy`glX=O&z`&N| z?e4Ewh30tT;MzWnR{%-F!dAZAxdX9n{O2?+@aJ=q-x8+`hAC0t=$tS7-B&cLuK W$no(}`6D1(7(8A5T-G@yGywoCS24=~ diff --git a/mods/HUD/awards/textures/awards_mese.png b/mods/HUD/awards/textures/awards_mese.png deleted file mode 100644 index 3fc800ec3055f5ff9f7a1fe8fbcf8821bcc09107..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 564 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7*pj^6T^PXNr}OT51_lPs z0*}aI1_o|n5N2eUHAjMhfq}im)7O>#E|UapDvMY6FTA=)lvP;t z{}Pr>@811LJiKnPYs)?V!+VXN&#QhX$r#}$VApVMR@LDE4UMpAdg(`REld2{$Ci+N zdqddObIHj(OdIs$Ji8nZ#hlz!udqUAxA<+@!#_7`UM$-AhQWg&Tlk90tU0r0mB?)` zd=2>di-VEnIZxpMV&w5IJr}3{Y6~@K~PqP^h>@9uEtDWEofZ4@Ha*(E=$^qF`5z|ba=YzzR7YED-&!Hr<+`KbT-r|eT<4W47P2li zKVIxq`X}l5z|fev{r%oGpa1Mp>I>GNGqXGM-3*xp7ftxqp86#ENMc=lEX#s`fR=~; zOIqH$+x^vVvXIN?+;DB#iTrz-)7I(ASl4G?H?Y_v+N6`=vT2*FBGq4O#x>=mp>7 PpxF0x^>bP0l+XkKpwsV5 diff --git a/mods/HUD/awards/textures/awards_miniminer.png b/mods/HUD/awards/textures/awards_miniminer.png deleted file mode 100644 index 45c72384e995a0b4b540f3996d8cfa67fa14a977..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 455 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7*pj^6T^I@&%o!LIx2{;q zz`(#+;1OBOz`!jG!i)^F=14FwFtC?+`ns~;Ws+dfWKs_-Z)0F!4Dobv46!)9bh54Y z;Q*1g`E?x~voFa%cyVpv*60P!0*+RqcdR@d*oBYq#qPEe*=X`WKr2OfPFJ+p+e-&U z=KkeA>f~|2aUoxkp66__CG2|Q=W5><+r8To~2Eb0uPj{txR|GSC=j? zX+O()antFf$WEq&%()>G8+IR7Q(e5^3ztG*+f5H%4wX zTy5qkq5DP4o`1tRf6hZ4%x@=nojWG`f-5U&`E&t)O%CNVt9(_%gZF*&6udw4LG8Dl zwfnpnj1K77d1N*}<|`@N_8{VW82_a|4^C`;CqLKlZlZ^OWHM`b$eP12fBTBpOewQdmgE`FSbhK4f{l!7IgA=- zPapX3#aONPIz!6r#91ON5)x}t1=|ihnHbwG#CBrV{JOM+8y`g$X+$z#RrQ~@^3dUi z*2cz0#{(U`jg5_s4_|V3EZS)k44ofy`glX=O&z`&N| z?e4Vz ziKmNWh{frplh0-g2Z|i6*PlG&ywS|CKM^x-1Tari&N6+LSk7Zr6kIXnXyV7{_^F<3wd|oZfFXx|A{ND0=Y+c~`D?$g=+ln>_XP^&i(>3Tg4*pZsH;i&uO5 zRM$UY#Ys&!_BRyC#J#OKHkt3#L=DZrzUE1jo(2^^Q}3v{OA7dy4}5)gaz>=XA=8dDh<7gJ*nX*}PIEzq&STjg1t?;ufZf0CIb8*o}8>s?! zWd^z4lMJ)%>s|BICpqqndVDsn-M;bs9?NE7wuyP~tM_t9I?VYt=RZ@1#Do8Q$A2d= QFfcH9y85}Sb4q9e0KW4LHUIzs From 1ea2b09ecb5dd2084d6767c0ea4d4fb112e6c6ba Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 10 Mar 2020 05:13:32 +0100 Subject: [PATCH 563/737] Commandblock: Fix help btn not working if no priv --- mods/ITEMS/REDSTONE/mesecons_commandblock/init.lua | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/mods/ITEMS/REDSTONE/mesecons_commandblock/init.lua b/mods/ITEMS/REDSTONE/mesecons_commandblock/init.lua index c55e0e41..52210c4c 100644 --- a/mods/ITEMS/REDSTONE/mesecons_commandblock/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons_commandblock/init.lua @@ -266,19 +266,20 @@ minetest.register_node("mesecons_commandblock:commandblock_on", { minetest.register_on_player_receive_fields(function(player, formname, fields) if string.sub(formname, 1, 13) == "commandblock_" then - if (not fields.submit and not fields.key_enter and not fields.doc) or (not fields.commands) then + if fields.doc and minetest.get_modpath("doc") then + doc.show_entry(player:get_player_name(), "nodes", "mesecons_commandblock:commandblock_off", true) return end + if (not fields.submit and not fields.key_enter) or (not fields.commands) then + return + end + local privs = minetest.get_player_privs(player:get_player_name()) if not privs.maphack then minetest.chat_send_player(player:get_player_name(), S("Access denied. You need the “maphack” privilege to edit command blocks.")) return end - if fields.doc and minetest.get_modpath("doc") then - doc.show_entry(player:get_player_name(), "nodes", "mesecons_commandblock:commandblock_off", true) - return - end local index, _, x, y, z = string.find(formname, "commandblock_(-?%d+)_(-?%d+)_(-?%d+)") if index ~= nil and x ~= nil and y ~= nil and z ~= nil then local pos = {x=tonumber(x), y=tonumber(y), z=tonumber(z)} From 96b30b918c9ea4738a7b35765f92cd9ea8e91e99 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 10 Mar 2020 05:17:53 +0100 Subject: [PATCH 564/737] Tweak commandblock button position --- mods/ITEMS/REDSTONE/mesecons_commandblock/init.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/REDSTONE/mesecons_commandblock/init.lua b/mods/ITEMS/REDSTONE/mesecons_commandblock/init.lua index 52210c4c..9bd4003e 100644 --- a/mods/ITEMS/REDSTONE/mesecons_commandblock/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons_commandblock/init.lua @@ -160,7 +160,7 @@ local on_rightclick = function(pos, node, player, itemstack, pointed_thing) -- Player can still view the contents of the command block. if can_edit then textarea_name = "commands" - submit = "button_exit[3.3,4.5;2,1;submit;"..F(S("Submit")).."]" + submit = "button_exit[3.3,4.4;2,1;submit;"..F(S("Submit")).."]" else textarea_name = "" submit = "" @@ -173,7 +173,7 @@ local on_rightclick = function(pos, node, player, itemstack, pointed_thing) local formspec = "size[9,5;]" .. textarea .. submit .. - "image_button[8,4.5;1,1;doc_button_icon_lores.png;doc;]" .. + "image_button[8,4.4;1,1;doc_button_icon_lores.png;doc;]" .. "tooltip[doc;"..F(S("Help")).."]" .. "label[0,4;"..F(commanderstr).."]" minetest.show_formspec(pname, "commandblock_"..pos.x.."_"..pos.y.."_"..pos.z, formspec) From f85a6b504207d812eb923b7a0bc9a05f69eab4c1 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 10 Mar 2020 05:34:54 +0100 Subject: [PATCH 565/737] Make some labels dark-gray --- mods/HELP/mcl_craftguide/init.lua | 5 ++--- mods/PLAYER/mcl_skins/init.lua | 4 ++-- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/mods/HELP/mcl_craftguide/init.lua b/mods/HELP/mcl_craftguide/init.lua index 50ade60d..5c1b3a4f 100644 --- a/mods/HELP/mcl_craftguide/init.lua +++ b/mods/HELP/mcl_craftguide/init.lua @@ -665,11 +665,10 @@ local function make_formspec(name) ESC(S("Previous page")), ESC(S("Next page"))) - fs[#fs + 1] = fmt("label[%f,%f;%s / %u]", + fs[#fs + 1] = fmt("label[%f,%f;%s]", sfinv_only and 6.3 or data.iX - 2.2, 0.22, - data.pagenum, - data.pagemax) + ESC(colorize("#383838", fmt("%s / %u", data.pagenum, data.pagemax)))) fs[#fs + 1] = fmt([[ image_button[%f,0.12;0.8,0.8;craftguide_prev_icon.png;prev;] diff --git a/mods/PLAYER/mcl_skins/init.lua b/mods/PLAYER/mcl_skins/init.lua index c1f557d9..b1d1feef 100644 --- a/mods/PLAYER/mcl_skins/init.lua +++ b/mods/PLAYER/mcl_skins/init.lua @@ -227,7 +227,7 @@ end) mcl_skins.show_formspec = function(playername) local formspec = "size[7,8.5]" - formspec = formspec .. "label[2,2;" .. minetest.formspec_escape(S("Select player skin:")) .. "]" + formspec = formspec .. "label[2,2;" .. minetest.formspec_escape(minetest.colorize("#383838", S("Select player skin:"))) .. "]" .. "textlist[0,2.5;6.8,6;skins_set;" local meta @@ -255,7 +255,7 @@ mcl_skins.show_formspec = function(playername) if meta then if meta.name and meta.name ~= "" then - formspec = formspec .. "label[2,0.5;" .. minetest.formspec_escape(S("Name: @1", meta.name)) .. "]" + formspec = formspec .. "label[2,0.5;" .. minetest.formspec_escape(minetest.colorize("#383838", S("Name: @1", meta.name))) .. "]" end end From 81fd3fad4094911d6eabc8ef7a25eb7bd825d935 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 10 Mar 2020 05:44:37 +0100 Subject: [PATCH 566/737] Fix hopper inventory screen --- .../textures/mcl_hoppers_inventory.png | Bin 1363 -> 992 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/mods/ITEMS/mcl_hoppers/textures/mcl_hoppers_inventory.png b/mods/ITEMS/mcl_hoppers/textures/mcl_hoppers_inventory.png index 409cdb2722100b8f43dc550814953ae99a9a555a..4ad34eedfab5b9a5ca9a218244aa296835164f99 100644 GIT binary patch literal 992 zcmeAS@N?(olHy`uVBq!ia0y~yVD@8RU`}RXW?*2*-xD6iz`(#C;1lA?z`)?{?!I{O z;<_jD?L8&p_u_E*l}sGQTY3bkHzNCX|VR4*Si1g;$!bP=ax9B z&%FSqN-lBEz2K=17JyP<@oUx#g{@w;_`O&nY_)K*--{MMIE5mPBn=mT+49|Pb)U?C z`_4dphn;%bD?)?0uQ<5hkEnndOrvTZJB~I$dZUs9Miyv@_Bl`_z z&Zm3np=wsgj{Sbm$-uzy;M5AE@ch>|Zj>)h-hcR6-;5d+5kIU{>E)9V_4RJaHq)R!>(ymvv4FO#o^CWkUb} literal 1363 zcmeAS@N?(olHy`uVBq!ia0y~yVD@8RU`}RXW?*2*-xD6iz`!6K;1lA?00#g6|G#kI z!j~^!GBPsU-Q5>2UOad1+}kVn2{AA*FqQ=Q1v5B2yOGAg!1Bz~#WAFU@y%VvW6|C+ z#~zkHOJg*SJUCG|WqZ2r!C0?y0oJa?@tPV2T$5*3)iK09_?X^ep=!H&d3oN_Eg5h3 z-TS%zd&bvO{ZWgqu6EC=D^GcP<@DaATh`32-j!A6VOl*$SiMk4-S3f#-<%_!b1XV1 zTNDbZ7h-ZBp~`}|M-Yl(+|J8>ca4^(ANzX!Sn~HJo!_Upx6Q3RzOnk!eQShbG>c$* zq4vVKox)&eAag8Cyc>UoL; zmsoTPtFOJHTmS9Mj(u9KaxtK2q@`A{b77xBES_ z@L2KjcbSV%?VT#78*95x>MbZ3AYm5v`|gXGg@03R()awf-MQSx=*=6D;*-`+$k7h7 zh=SMvg#j#0eOdXw_M7qJp67k$yAZKs4T(08!nNOaUo?LF>vYAd8@9RC{*@^=ZuUO! zyF0nO1(pzDE+Rf8IwylnhB*P8a8XnF%i#OJ-=rUtJTIGH;;;2RENYtH*Bx13*6&dU zE5?@x{_sBl2V&`)dE535XdsfD#Lt!rsb5VNSHHV&pMBq&d9SRcm&}@fe^bS-f9r2P zSnx&9^ZcumhEKz*3lu7J0h*xvX Date: Tue, 10 Mar 2020 05:44:52 +0100 Subject: [PATCH 567/737] Craftguide: Don't display burntime for groups --- mods/HELP/mcl_craftguide/init.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/HELP/mcl_craftguide/init.lua b/mods/HELP/mcl_craftguide/init.lua index 5c1b3a4f..5d9c2335 100644 --- a/mods/HELP/mcl_craftguide/init.lua +++ b/mods/HELP/mcl_craftguide/init.lua @@ -444,12 +444,12 @@ local function get_tooltip(item, groups, cooktime, burntime) tooltip = reg_items[item].description end - if cooktime then + if not groups and cooktime then tooltip = tooltip .. "\n" .. S("Cooking time: @1", colorize("yellow", cooktime)) end - if burntime then + if not groups and burntime then tooltip = tooltip .. "\n" .. S("Burning time: @1", colorize("yellow", burntime)) end From 1e5f3ee61026fb261419cf7ff3fb9d49cfe9bf84 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 10 Mar 2020 06:10:54 +0100 Subject: [PATCH 568/737] Creative: Replace fake slider with page buttons --- mods/HUD/mcl_inventory/creative.lua | 15 +++++---------- .../textures/crafting_creative_down.png | Bin 629 -> 0 bytes .../textures/crafting_creative_next.png | Bin 0 -> 528 bytes .../textures/crafting_creative_prev.png | Bin 0 -> 532 bytes .../textures/crafting_creative_up.png | Bin 613 -> 0 bytes .../textures/mcl_inventory_slider.png | Bin 104 -> 0 bytes .../textures/mcl_inventory_slider_bg.png | Bin 96 -> 0 bytes 7 files changed, 5 insertions(+), 10 deletions(-) delete mode 100644 mods/HUD/mcl_inventory/textures/crafting_creative_down.png create mode 100644 mods/HUD/mcl_inventory/textures/crafting_creative_next.png create mode 100644 mods/HUD/mcl_inventory/textures/crafting_creative_prev.png delete mode 100644 mods/HUD/mcl_inventory/textures/crafting_creative_up.png delete mode 100644 mods/HUD/mcl_inventory/textures/mcl_inventory_slider.png delete mode 100644 mods/HUD/mcl_inventory/textures/mcl_inventory_slider_bg.png diff --git a/mods/HUD/mcl_inventory/creative.lua b/mods/HUD/mcl_inventory/creative.lua index ff623e1c..4a449355 100644 --- a/mods/HUD/mcl_inventory/creative.lua +++ b/mods/HUD/mcl_inventory/creative.lua @@ -269,10 +269,6 @@ mcl_inventory.set_creative_formspec = function(player, start_i, pagenum, inv_siz end end local pagemax = math.max(1, math.floor((inv_size-1) / (9*5) + 1)) - local slider_height - local arrow_height = 0.85 - slider_height = (6.2-arrow_height*2) / pagemax - local slider_pos = (slider_height*(pagenum-1)*0.8713125)+2.23 local name = "nix" local formspec = "" local main_list @@ -357,12 +353,11 @@ mcl_inventory.set_creative_formspec = function(player, start_i, pagenum, inv_siz "listring[current_player;main]" else -- Creative inventory slots - main_list = "list[detached:creative_"..playername..";main;0,1.75;9,5;"..tostring(start_i).."]" .. - -- ... and scroll bar - "image[9.033,2.230;0.78,4.525;mcl_inventory_slider_bg.png]".. - "image[9.033," .. tostring(slider_pos) .. ";0.78,"..tostring(slider_height) .. ";mcl_inventory_slider.png]".. - "image_button[9.015,1.77;0.85,0.6;crafting_creative_up.png;creative_prev;]".. - "image_button[9.015,6.15;0.85,0.6;crafting_creative_down.png;creative_next;]" + main_list = "list[detached:creative_"..playername..";main;0,1.75;9,5;"..tostring(start_i).."]".. + -- Page buttons + "label[9.0,5.5;"..F(S("@1/@2", pagenum, pagemax)).."]".. + "image_button[9.0,6.0;0.7,0.7;crafting_creative_prev.png;creative_prev;]".. + "image_button[9.5,6.0;0.7,0.7;crafting_creative_next.png;creative_next;]" end local tab_icon = { diff --git a/mods/HUD/mcl_inventory/textures/crafting_creative_down.png b/mods/HUD/mcl_inventory/textures/crafting_creative_down.png deleted file mode 100644 index c7849992efeaec6377b62eedfde3735e06ad97d4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 629 zcmeAS@N?(olHy`uVBq!ia0y~yVDMsKU{K{?W?*2rw5IK^Kn5ZZpAD^1?@_DmoPw46j4-50~@bL5Xttu^@ zJ!3{xWMp(yl%JnpZDr-0S+gc|cUKe_Pw4NDjgD@psp;?Qi;Rfy_4Vy-Zx0O#sjIB) zZfgq*4fXf;udS%)X>adtZ4C?zY^Y>+K$}%Wy-+7SnuiL7*fG_bsB5gV*?S_!S`|rJR!g<5CRUvLmwfbhdY;7vi z+|+gb5=-8i+lTG%M42~eu9x&ZdP%k}a3kM2)iqpoh2cpmq3`Y;nbdxK`3H0Ve*TE0 zd(V|t{LtCB@RO2LdezE==9*`&S6|QWoclU9W7+q)oX>8*cD;Ih`Ld>5(e0rLH!pZY{r0(a3+8**>Yfk%6ZC5))BK5D3)P&T{|a5bNXlyR8pEW{ zYtk12&W5dCx!~do=%=p+p@EWs>z?GRP3dIEizuz^SOtXG1q?j_-^ZJn$>lQ40wfKp2dvf^e z2Zon*^!=7eUoJURQaxca+cc9jpWQ*0h10jsHuzg6*DJc<*kT?r5>Ts#@)LdX3UgydAO$PY~(H@+we=4uQsO~d;hOI<>S?qjS*XZ*4S-6&#>UE z&}CjmjfTsfYr?fRM(Gv){>E@^^Gpv_A%SkUL_;aTmXC}doXxNI_qQBQ*c!FfQiSJF zj)e-xW2Oh}>(qoNb{v0Lb#}I;4A;RqQw+2YR9T6BjNn=OkCCB&q1NVu42nIh4%3eF z*ZhC@K7Iaqce_Lx2AR(%E9U6@e=O7M!f{A~A#u~5BX7P|CEj|k%wq3gIQy){T)#+; zFPvR|dl;7gjl1H#lzsbYRbD|JmV`^M6-WjjRt^KCy^1wBC4jRsF)MOBYYRZ%^FaE5O6>UUqlPzUd)NS?VE7 zva{JA)NWE%RcROg3AX5GcXIjeA3V>N{i_f;>a$Fh+rg`+-I?`(ZA(Fz-x)!-|KUo( zOIgAVm!Ha9*XFi$${gRlzt(;-;bPmCplHw3F6Pc&t|=cUKlg#e+@wV}RqnqqdHurW h`-`Z~Kz;^>-gAfC=HvvgXJBAp@O1TaS?83{1OQ&r-`W5G literal 0 HcmV?d00001 diff --git a/mods/HUD/mcl_inventory/textures/crafting_creative_prev.png b/mods/HUD/mcl_inventory/textures/crafting_creative_prev.png new file mode 100644 index 0000000000000000000000000000000000000000..03225450ea34f0afae785da012dc0f5f59d0ba86 GIT binary patch literal 532 zcmeAS@N?(olHy`uVBq!ia0y~yU@!n-4mJh`hH$2z?F@1PLn;{G&T7p);vnF< zy&+@*U(g9dg*$et9$enC7GMqs&g7 z&7k9_g91Ym?|+64T}Orl1v|NJ$?p0~LN8NPlSbtkl6dL6&0Ir{9cvFKQG7 z44&4kj@s+?oRh)enPE=L+~a;-XkG$-%hDM5a({(sxlRgomEpL24l>#d`)JNM|BTX1Zf o@kCAjpxNp>FQ%odsvMAgGwqPuD@LUT1_lNOPgg&ebxsLQ00+$NO8@`> literal 0 HcmV?d00001 diff --git a/mods/HUD/mcl_inventory/textures/crafting_creative_up.png b/mods/HUD/mcl_inventory/textures/crafting_creative_up.png deleted file mode 100644 index 12843b3b2591349a6bdba7e5decac8f34275be98..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 613 zcmeAS@N?(olHy`uVBq!ia0y~yVDMsKU{K{?W?*2rw5IK0s{ksgMzwSTf@V`I-8pV z0s_K9LxY2ZLxO|5+uFKXT6){tBf`UdeSOOc3ma={=FXno)81ZFUhd)HQCm?lXXebh z%F6z}zQ~A(s?yR4{r$1g(LO#t4K+0ry1Ofiizjw>M@L2Z`T5mWR?e9DZeIW88uT|+$pvKNG3fo&OL{8b+p3zsfYAtGQS+zB4YKvB?%hCrC zDod_Q_wMp@n%0~lGAl2`NB5jWe(SNPW`eCwh8f+-uS#zA?~*NydAp$Fy2vT73?JKb zbw{fg7HX#MS@NrSn+EUhH~x1QW^85uJN-(APQYYM@w)DpE(?w=o-UI1u0HeJOo93T zx8IRedh;OZXL`))uWhZj)`Zs|+Y;kq&2#(idqZB!-Cg|k{n^`Hk0|ddzwOfgaN^w( z8M%&I@8l-FfAGy^vRHcgqqUrKw-v7Y{HW&Trro9b&si4*>;Lweq7tZ<>Q&1gqpYPc UEAZq&1_lNOPgg&ebxsLQ0EJ-`FaQ7m diff --git a/mods/HUD/mcl_inventory/textures/mcl_inventory_slider.png b/mods/HUD/mcl_inventory/textures/mcl_inventory_slider.png deleted file mode 100644 index d93273a7bd30c24e1e5d764ca9202efc461919ba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 104 zcmeAS@N?(olHy`uVBq!ia0y~yVDMsKU=UzrW?*3G=B{4Mz`(#3;1l9n4F*fuY_~Bm zFff(``2{mLJiCzwQtRpB7*fHQyx~7TE01#%Cxdf$bD^T>lMDt11_n=8KbLh*2~7Zh CLK#>9 diff --git a/mods/HUD/mcl_inventory/textures/mcl_inventory_slider_bg.png b/mods/HUD/mcl_inventory/textures/mcl_inventory_slider_bg.png deleted file mode 100644 index beefdb20ba378505019639a28db73e434482d092..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 96 zcmeAS@N?(olHy`uVBq!ia0y~yVDMsKU=UzpW?*1AvzoD(fq{WDz$e7j-Q9ie+`0e% z|BspXFN%SILCDj^F{FYqIf2)eox4L^T9lb#;--{^Ue}5Q85kHCJYD@<);T3K0RSe2 B7~}u| From 60effa71b4713080702792de1c2e468b8eca8314 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 10 Mar 2020 06:13:52 +0100 Subject: [PATCH 569/737] Inventory: Translate page counter --- mods/HUD/mcl_inventory/locale/mcl_inventory.de.tr | 1 + mods/HUD/mcl_inventory/locale/template.txt | 1 + 2 files changed, 2 insertions(+) diff --git a/mods/HUD/mcl_inventory/locale/mcl_inventory.de.tr b/mods/HUD/mcl_inventory/locale/mcl_inventory.de.tr index 2917e162..a2aa355d 100644 --- a/mods/HUD/mcl_inventory/locale/mcl_inventory.de.tr +++ b/mods/HUD/mcl_inventory/locale/mcl_inventory.de.tr @@ -17,3 +17,4 @@ Materials=Materialien Survival Inventory=Überlebensinventar Crafting=Fertigen Inventory=Inventar +@1/@2=@1/@2 diff --git a/mods/HUD/mcl_inventory/locale/template.txt b/mods/HUD/mcl_inventory/locale/template.txt index e0b729e0..649f3958 100644 --- a/mods/HUD/mcl_inventory/locale/template.txt +++ b/mods/HUD/mcl_inventory/locale/template.txt @@ -17,3 +17,4 @@ Materials= Survival Inventory= Crafting= Inventory= +@1/@2= From 6761ebdae574c8f76596c2cb7b25f9b79a26f651 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 10 Mar 2020 06:38:53 +0100 Subject: [PATCH 570/737] Fix shading of lower tabs in Creative inv. --- mods/HUD/mcl_inventory/creative.lua | 20 +++++++++--------- .../crafting_creative_active_down.png | Bin 0 -> 178 bytes .../crafting_creative_inactive_down.png | Bin 0 -> 177 bytes 3 files changed, 10 insertions(+), 10 deletions(-) create mode 100644 mods/HUD/mcl_inventory/textures/crafting_creative_active_down.png create mode 100644 mods/HUD/mcl_inventory/textures/crafting_creative_inactive_down.png diff --git a/mods/HUD/mcl_inventory/creative.lua b/mods/HUD/mcl_inventory/creative.lua index 4a449355..d5b5e474 100644 --- a/mods/HUD/mcl_inventory/creative.lua +++ b/mods/HUD/mcl_inventory/creative.lua @@ -209,13 +209,13 @@ hoch["rail"] = "" hoch["misc"] = "" hoch["nix"] = "" hoch["default"] = "" -hoch["food"] = "^[transformfy" -hoch["tools"] = "^[transformfy" -hoch["combat"] = "^[transformfy" -hoch["mobs"] = "^[transformfy" ---hoch["brew"] = "^[transformfy" -- TODO: add brew -hoch["matr"] = "^[transformfy" -hoch["inv"] = "^[transformfy" +hoch["food"] = "_down" +hoch["tools"] = "_down" +hoch["combat"] = "_down" +hoch["mobs"] = "_down" +--hoch["brew"] = "_down" -- TODO: add brew +hoch["matr"] = "_down" +hoch["inv"] = "_down" filtername = {} filtername["blocks"] = S("Building Blocks") @@ -378,14 +378,14 @@ mcl_inventory.set_creative_formspec = function(player, start_i, pagenum, inv_siz local function tab(current_tab, this_tab) local bg_img if current_tab == this_tab then - bg_img = "crafting_creative_active.png" + bg_img = "crafting_creative_active"..hoch[this_tab]..".png" else - bg_img = "crafting_creative_inactive.png" + bg_img = "crafting_creative_inactive"..hoch[this_tab]..".png" end return "style["..this_tab..";border=false;bgimg=;bgimg_pressed=]".. "item_image_button[" .. boffset[this_tab] ..";1,1;"..tab_icon[this_tab]..";"..this_tab..";]".. - "image[" .. offset[this_tab] .. ";1.5,1.44;" .. bg_img .. hoch[this_tab].. "]" .. + "image[" .. offset[this_tab] .. ";1.5,1.44;" .. bg_img .. "]" .. "image[" .. boffset[this_tab] .. ";1,1;crafting_creative_marker.png]" end local caption = "" diff --git a/mods/HUD/mcl_inventory/textures/crafting_creative_active_down.png b/mods/HUD/mcl_inventory/textures/crafting_creative_active_down.png new file mode 100644 index 0000000000000000000000000000000000000000..f24d0472484c0287dc1c5a4584fda58c425560aa GIT binary patch literal 178 zcmeAS@N?(olHy`uVBq!ia0y~yV8~`*U`S$NW?*1gI?v!c0|NtpfKP}kLw?SM3l|s| z82*l4DY+T_2glTW6AStnB}@7> literal 0 HcmV?d00001 From a845f0313d090547df8c0556dd80c03478439cc1 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 10 Mar 2020 07:01:41 +0100 Subject: [PATCH 571/737] Tweak craftguide icons to match colorsheme --- .../textures/craftguide_arrow.png | Bin 149 -> 136 bytes .../mcl_craftguide/textures/craftguide_bg.png | Bin 67 -> 0 bytes .../textures/craftguide_shapeless.png | Bin 169 -> 169 bytes .../textures/mcl_craftguide_fuel.png | Bin 301 -> 188 bytes 4 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 mods/HELP/mcl_craftguide/textures/craftguide_bg.png diff --git a/mods/HELP/mcl_craftguide/textures/craftguide_arrow.png b/mods/HELP/mcl_craftguide/textures/craftguide_arrow.png index 0a3740d8881fd98431c51050b18c9d382e1e069d..cde70b1ce77ed9a713793e77cbbb8d7584e6686a 100644 GIT binary patch delta 119 zcmbQr*ugkKqJWW^fq~(1{ka1S3=C`mJ|V9E|Nrmq?v~nbW6r?9z*rLG7tG-B>_!>` z1A~F5i(^OyV{$@5VnRX!b5fZ=9>XJMhd&Ju|NrNA_`|GmnrV?^%>)Y%xmA2?_*Hlr ZG`a+0)v{`?GcYhPc)I$ztaD0e0su|}C(Qr= delta 132 zcmeBRoXR*sqLzu7fq`Mk{Vf6v3=EtBJ|V9E|Nl=)N-8QU+IxKUX9fla#*!evUkSD2 diff --git a/mods/HELP/mcl_craftguide/textures/craftguide_shapeless.png b/mods/HELP/mcl_craftguide/textures/craftguide_shapeless.png index d954a9f7b813e5594a5e69b69636bf093f02e756..2b4edc4c13e23d21affe5bc75b26d61c3011da28 100644 GIT binary patch delta 20 bcmZ3w1;tmL_G^L0|Ud`G=oPB3=EOEa#1P!0#+1;up=*(1NA{CPYdDt0 zHZwVH@yh5>jSzp)~8ydg%Ebl#Q_WJXld%cniESG28ezuy` z>U>4qdmFt~%>VB`e!S>~bh5}A-Lp(*Bc2!DnidqfW0O(t^ixe=&CN647gpYReCkvK v!@4yZQ;+8ERrH+X$^Pg2#%ytp2h7=VMXk{bZwE0jFfe$!`njxgN@xNAsg;9( From 9422989ac693c8c58f738257c27326b04db08d59 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 10 Mar 2020 07:36:42 +0100 Subject: [PATCH 572/737] Redraw Creative trash slot --- .../textures/crafting_creative_trash.png | Bin 163 -> 294 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/mods/HUD/mcl_inventory/textures/crafting_creative_trash.png b/mods/HUD/mcl_inventory/textures/crafting_creative_trash.png index d2bdfb5cb5a8b10536a0ab8d8f34bf8c418b45a4..ec567d741582eb62751d671adf9a58da8eaf52ff 100644 GIT binary patch literal 294 zcmeAS@N?(olHy`uVBq!ia0y~yVDJKA7G?$phIjw&J25aY@CW#WxRwM4?wv7Xb$$KS zJ$u~U-DSOXx)~T4E_u2*hEy=Vo!Z*V%qYOTzcu^eR@oSK{qOOYxsx-UgpY~-GAhe> zc>GGz%KMME)~%Ede)%{nX!3rcs|zO0TIlT?WL&axN!p8`$yaz{wN^^*x}sw0Jl!j6 z8C&S*77@9_AzbGlYPO1JX&yCj$<=64?D}t(o&J2m1xpTRkrjy|8ZC-kR}{EJ4oR?P z39xb{b|{&4e40}4{{Q7){fG6T|C~SF|2FsW?hEBxX7Jf()@5B~E4Y0mM{VQNBgaH; yhvyWPir#4rynZUyuG&?;{_g%Oo4Sgw*uOK}x9x-#n+F2}1B0ilpUXO@geCxnmwJu> literal 163 zcmeAS@N?(olHy`uVBq!ia0y~yU{C;IMrH;E2G1=owlgp=um$*pxUR0RcXxN+W6s&c zz`zjU>Eakt!5GtP&d8w1<9h$AAg70;l!vpIO3LoI{}qvw{+!B}l6v74KI2sgr&!O6 zi=5s@%ap@+z1B1N&U;6E0>6T;LrLtRBT92+K54mDdWE&$x^miBhk?N>LNj6d?q}N= OK(@R3xvX Date: Tue, 10 Mar 2020 10:22:38 +0100 Subject: [PATCH 573/737] Make creative arrows white --- .../textures/crafting_creative_next.png | Bin 528 -> 387 bytes .../textures/crafting_creative_prev.png | Bin 532 -> 391 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/mods/HUD/mcl_inventory/textures/crafting_creative_next.png b/mods/HUD/mcl_inventory/textures/crafting_creative_next.png index fa71a50f3312d3a5e29e9ac47cb5f82f9add7f3c..65586775ccae0f9ef5d6ddf1b8ff56982b3096f3 100644 GIT binary patch delta 361 zcmbQh(#$+Txt@Wuz$3Dlfq`2Xgc%uT&5>YWU|=ut^mS!_!py}fs{d-3#?V;V}Q_$-;{v|K|)CD`wL!|vy0r`{e>-thHIi-?KItBIYH zif%1cTe4y4nmFO5yk|LdveFJ6ns~P%R97g;W~zaHPPTu|2DN*8R=$sZ(VVpQ(hVIW z1NL=Ws~q!F^bIRCE+^?dYv>jKvESUJ+5CqL6LUe2!OS1KH=fcH`Z0wkL*;{}@jcl;{8e delta 503 zcmZo>p1?9ext{U5r;B4q1>>6;t+|H-1lsO1%v~T|GQq&OdzZtEnUXFK*HoR2++}1N ze#!FH=9FXa|COhFyqdBxV$07OyUphr7MvBj%*&|JaM^QBxc0^7gnl z(CwCJC?(kPk@17G`St$(mct2KqqbU#@EppqP~mvY^niVxn()N>j^huj&d#=!;W{{H zihp0>lexKg|o|V55w}maaX*TvTr}F$}7mjl5pv@ zB1^u=E}8yCQ5rM8Y6x<$Xw+MMY`ge4Z@J@+yLpiuXM~rq$TMhOToLjvWvaq)H&s23 zgOS{G`Pc)`J(VkU*yCO1!?46NMYWU|=ut^mS!_!py}fYX0)5pa=s4qnf9S zV@Srmw~?oL4;k>(t}9AqQfqKb5QtzY+@$?>88zLQYG!~Fs*H%`nF9UGW-y2NPlgmz*>K$VSA7R*E}VY;#o7yH%`)h zwpL_9Q+#yObfF6(D^KovF~x^-b*KZ^zf0}E@-LmUx#1=2B&EQUAneH4om(#(>+&Hm-*kg1>f#y@&i TXw_;41_lOCS3j3^P6@UUt+_`W1YEZ_giPQII$>zsed&Oqv2jP=o9xoZ8`b7S zM6s)FP@n7h<^KJdktz9qEuR014-Nga|7_aj|4#OtAC@zUwB}yR-gY;E@qOnJ}X6xhMQazwx0^!eh69M_N7{9ZoE zbKlIf0!<(Rlm8FK>n)(|lBZl-a4X8Fc(~P+&;n{m;;$>&TFxU?Mi5-r>>d)dFBePg`WeSx6b`uRr>My;l^b>aTh8dwzxiz z-g-;a%AcX((OI>etpPhi{nTe|6zG`$rRvP{&z#-gGdOSOnn_yuGcXw1%N#mzX37tB zPH%<BT$yvV!)o9QdHfuQ>C_m(-B5lrPSlmNOR1`<>?G z{W~Sd@74cro4P8Jr1f)7E_JNz~JfX=d#Wzp$PyDyzA`% From 0fbb252af65d399e6c454c62b302ded6430d88cd Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 10 Mar 2020 18:01:24 +0100 Subject: [PATCH 574/737] Update doc_items --- mods/HELP/doc/doc_items/API.md | 2 +- mods/HELP/doc/doc_items/README.md | 7 +- mods/HELP/doc/doc_items/init.lua | 22 ++- .../HELP/doc/doc_items/locale/doc_items.fr.tr | 142 ++++++++++++++++++ mods/HELP/doc/doc_items/settingtypes.txt | 2 +- 5 files changed, 159 insertions(+), 16 deletions(-) create mode 100644 mods/HELP/doc/doc_items/locale/doc_items.fr.tr diff --git a/mods/HELP/doc/doc_items/API.md b/mods/HELP/doc/doc_items/API.md index f8d3b87c..ca795956 100644 --- a/mods/HELP/doc/doc_items/API.md +++ b/mods/HELP/doc/doc_items/API.md @@ -42,7 +42,7 @@ easy and quick manipulation of the item help entries. All fields are optional. * `_doc_items_hidden`: Whether entry is hidden (default: `false` for air and hand, `true` for everything else) * `_doc_items_create_entry`: Whether to create an entry for this item (default: `true`) * `_doc_items_entry_name`: The title of the entry. By default, this is the same as the `description` field - of the item. This field is required if the `description` is empty + of the item (discarding text after the first newline). This field is required if the `description` is empty * `_doc_items_durability`: This field is for describing how long a tool can be used before it breaks. Choose one data type: * It it is a `number`: Fixed number of uses before it breaks * If it is a `string`: Free-form text which explains how the durability works. Try to keep it short and only use it if the other types won't work diff --git a/mods/HELP/doc/doc_items/README.md b/mods/HELP/doc/doc_items/README.md index c3e6f67c..f361adb1 100644 --- a/mods/HELP/doc/doc_items/README.md +++ b/mods/HELP/doc/doc_items/README.md @@ -1,4 +1,4 @@ -# Item Help [`doc_items`] (Version 1.1.2) +# Item Help [`doc_items`] (Version 1.2.0) ## Description Automatically generated help texts of blocks, tools, weapons, crafting items and other items. @@ -66,3 +66,8 @@ Read `API.md` to learn more. ## License Everything in this mod is licensed under the MIT License. + +## Translation credits +French: Karamel +German: Wuzzy +Portuguese: BrunoMine diff --git a/mods/HELP/doc/doc_items/init.lua b/mods/HELP/doc/doc_items/init.lua index 7ad8d58b..b0be3e12 100644 --- a/mods/HELP/doc/doc_items/init.lua +++ b/mods/HELP/doc/doc_items/init.lua @@ -14,16 +14,8 @@ doc.sub.items.temp.eat_bad = S("Hold it in your hand, then leftclick to eat it. doc.sub.items.temp.rotate_node = S("This block's rotation is affected by the way you place it: Place it on the floor or ceiling for a vertical orientation; place it at the side for a horizontal orientation. Sneaking while placing it leads to a perpendicular orientation instead.") doc.sub.items.settings = {} -doc.sub.items.settings.friendly_group_names = false -local setting = minetest.settings:get_bool("doc_items_friendly_group_names") -if setting ~= nil then - doc.sub.items.settings.friendly_group_names = setting -end -doc.sub.items.settings.itemstring = false -setting = minetest.settings:get_bool("doc_items_show_itemstrings") -if setting ~= nil then - doc.sub.items.settings.itemstring = setting -end +doc.sub.items.settings.friendly_group_names = minetest.settings:get_bool("doc_items_friendly_group_names", false) +doc.sub.items.settings.itemstring = minetest.settings:get_bool("doc_items_show_itemstrings", false) -- Local stuff local groupdefs = {} @@ -73,10 +65,14 @@ local groups_to_string = function(grouptable, filter) end end --- Replaces all newlines with spaces +-- Removes all text after the first newline (including the newline) local scrub_newlines = function(text) - local new, x = string.gsub(text, "\n", " ") - return new + local spl = string.split(text, "\n") + if spl and #spl > 0 then + return spl[1] + else + return text + end end --[[ Append a newline to text, unless it already ends with a newline. ]] diff --git a/mods/HELP/doc/doc_items/locale/doc_items.fr.tr b/mods/HELP/doc/doc_items/locale/doc_items.fr.tr new file mode 100644 index 00000000..42d2771d --- /dev/null +++ b/mods/HELP/doc/doc_items/locale/doc_items.fr.tr @@ -0,0 +1,142 @@ +# textdomain:doc_items +Using it as fuel turns it into: @1.=L'utiliser comme combustible le transforme en : @1. +@1 seconds=@1 secondes +# Item count times item name +%@1×@2=%@1×@ +# Itemname (25%) +@1 (@2%)=@1 (@2%) +# Itemname (<0.5%) +@1 (<0.5%)=@1 (<0.5%) +# Itemname (ca. 25%) +@1 (ca. @2%)=@1 (ca. @2%) +# List separator (e.g. “one, two, three”) +, =, +# Final list separator (e.g. “One, two and three”) + and = et +1 second=1 seconde +A transparent block, basically empty space. It is usually left behind after digging something.=Un bloc transparent, tout simplement un espace vide. Il apparaît généralement après avoir creusé quelque chose. +Air=Air +Blocks=Blocs +Building another block at this block will place it inside and replace it.=Construire un autre bloc sur ce bloc le placera à l'intérieur et le remplacera. +Building this block is completely silent.=Construire ce bloc est complètement silentieux +Collidable: @1=Percutable : @1 +Description: @1=Description : @1 +Falling blocks can go through this block; they destroy it when doing so.=Les blocs en chute peuvent traverser ce bloc; ils le détruisent en faisant cela. +Full punch interval: @1 s=Intervalle de frappe : @1 +Hand=Main +Hold it in your hand, then leftclick to eat it.=Tenez-le en main, puis cliquez-gauche pour le manger. +Hold it in your hand, then leftclick to eat it. But why would you want to do this?=Tenez-le en main, puis cliquez-gauche pour le manger. Mais pourquoi feriez-vous cela ? +Item reference of all wieldable tools and weapons=L'index des outils et armes manipulables +Item reference of blocks and other things which are capable of occupying space=L'index des blocs et autres choses qui peuvent occuper l'espace +Item reference of items which are neither blocks, tools or weapons (esp. crafting items)=L'index des choses qui ne sont ni des blocs, ni des outils ou armes (particulièrement les objets d'assemblage) +Liquids can flow into this block and destroy it.=Les liquides peuvent couler sur ce bloc et le détruire. +Maximum stack size: @1=Taille maximum de pile : @1 +Mining level: @1=Niveau de minage : @1 +Mining ratings:=Notes de minage : +• @1, rating @2: @3 s - @4 s=• @1, note @2 : @3s - @4s +• @1, rating @2: @3 s=• @1, note @2 : @3s +Mining times:=Temps de minage : +Mining this block is completely silent.=Miner ce bloc est complètement silencieux. +Miscellaneous items=Objets divers +No=Non +Pointable: No=Pointable : Non +Pointable: Only by special items=Pointable : Seulement avec des objets spéciaux +Pointable: Yes=Pointable : Oui +Punches with this block don't work as usual; melee combat and mining are either not possible or work differently.=Les frappes avec ce bloc ne fonctionnent pas de la manière usuelle ; le combat au corps à corps et le minage ne sont soit pas possible ou fonctionnent différemment. +Punches with this item don't work as usual; melee combat and mining are either not possible or work differently.=Les frappes avec cet objet ne fonctionnent pas de la manière usuelle ; le combat au corps à corps et le minage ne sont soit pas possible ou fonctionnent différemment. +Punches with this tool don't work as usual; melee combat and mining are either not possible or work differently.=Les frappes avec cet outil ne fonctionnent pas de la manière usuelle ; le combat au corps à corps et le minage ne sont soit pas possible ou fonctionnent différemment. +Range: @1=Portée : @1 +# Range: () +Range: @1 (@2)=Portée : @1 (@2) +Range: 4=Portée : 4 +# Rating used for digging times +Rating @1=Note @1 +# @1 is minimal rating, @2 is maximum rating +Rating @1-@2=Note @1-@2 +The fall damage on this block is increased by @1%.=Les domages de chute sur ce bloc sont augmentés de @1%. +The fall damage on this block is reduced by @1%.=Les domages de chute sur ce bloc sont réduits de @1%. +This block allows light to propagate with a small loss of brightness, and sunlight can even go through losslessly.=Ce bloc laisse passer la lumière avec une petite perte de luminosité, et la lumière du soleil peut la traverser sans perte. +This block allows light to propagate with a small loss of brightness.=Ce bloc laisse passer la lumière avec une petite perte de luminosité. +This block allows sunlight to propagate without loss in brightness.=The bloc laisse passer la lumière du soleil sans perte de luminosité. +This block belongs to the @1 group.=Ce bloc appartient au groupe @1. +This block belongs to these groups: @1.=Ce bloc appartient aux groupes : @1. +This block can be climbed.=Ce bloc peut être escaladé. +This block can be destroyed by any mining tool immediately.=Ce bloc peut être détruit pas n'importe quel outil de minage instantanément. +This block can be destroyed by any mining tool in half a second.=Ce bloc peut être détruit pas n'importe quel outil de minage en une demi-seconde. +This block can be mined by any mining tool immediately.=Ce bloc peut être miné avec n'importe quel outil de minage instantanément. +This block can be mined by any mining tool in half a second.=Ce bloc peut être miné avec n'importe quel outil de minage en une demi-seconde. +This block can be mined by mining tools which match any of the following mining ratings and its toughness level.=Ce bloc peut être miné avec les outils de minages qui ont les notes de minage et les niveaux de robustesse suivants : +This block can not be destroyed by ordinary mining tools.=Ce bloc ne peut pas être détruit avec les outils de minage ordinaires. +This block can not be mined by ordinary mining tools.=Ce bloc ne peut pas être miné avec les outils de minage ordinaires. +This block can serve as a smelting fuel with a burning time of @1.=Ce bloc peut servir de combustible pendant @1. +This block causes a damage of @1 hit point per second.=Ce bloc cause des domages de @1 point de vie par seconde. +This block causes a damage of @1 hit points per second.=Ce bloc cause des domages de @1 points de vie par seconde. +This block connects to blocks of the @1 group.=Ce bloc se connecte aux blocs du groupe @1. +This block connects to blocks of the following groups: @1.=Ce bloc se connecte aux blocs des groupes suivants : @1 +This block connects to these blocks: @1.=Ce bloc se connecte à ces blocs : @1 +This block connects to this block: @1.=Ce bloc se connecte à ce bloc : @1. +This block decreases your breath and causes a drowning damage of @1 hit point every 2 seconds.=Ce bloc réduit votre souffle et cause des domages de noyade de @1 point de vie toutes les 2 secondes. +This block decreases your breath and causes a drowning damage of @1 hit points every 2 seconds.=Ce bloc réduit votre souffle et cause des domages de noyade de @1 points de vie toutes les 2 secondes. +This block is a light source with a light level of @1.=Ce bloc est une source de lumière de niveau @1. +This block glows faintly with a light level of @1.=Ce bloc brille xxx avec une lumière de niveau @1. +This block is a building block for creating various buildings.=Ce bloc est un bloc de construction pour créer différentes bâtisses. +This block is a liquid with these properties:=Ce bloc est un liquide aux proprités suivantes : +This block is affected by gravity and can fall.=Ce bloc est affecté par la gravité et peut tomber. +This block is completely silent when mined or built.=Ce bloc ne fait pas de bruit lorsque l'on le mine ou le construit. +This block is completely silent when walked on, mined or built.=Ce bloc ne fait pas de bruit lorsque l'on marche dessus, le mine ou le construit. +This block is destroyed when a falling block ends up inside it.=Ce bloc est détruit lorsqu'un autre bloc tombe dessus. +This block negates all fall damage.=Ce bloc annule tous les domages de chute. +This block points to liquids.=Ce bloc peut pointer les liquides. +This block will drop as an item when a falling block ends up inside it.=Ce bloc se transformera en objet lorsqu'un autre bloc tombe dessus. +This block will drop as an item when it is not attached to a surrounding block.=Ce bloc se transformera en objet lorsqu'il n'est plus rattaché à un bloc alentour. +This block will drop as an item when no collidable block is below it.=Ce bloc se transformera en objet lorsqu'il n'y aura plus de bloc percutable en dessous. +This block will drop the following items when mined: @1.=Ce bloc donnera les objets suivant lorsque miné : @1. +This block will drop the following when mined: @1×@2.=Ce bloc donnera les objets suivant lorsque miné : @1×@2. +This block will drop the following when mined: @1.=Ce bloc donnera les objets suivant lorsque miné : @1. +This block will drop the following when mined: @1.=Ce bloc donnera les objets suivant lorsque miné : @1. +This block will make you bounce off with an elasticity of @1%.=Ce bloc vous fera rebondir avec une élasticité de @1%. +This block will randomly drop one of the following when mined: @1.=Ce bloc laissera tomber de manière aléatoire un des éléments suivants lorsque miné : @1. +This block will randomly drop up to @1 drops of the following possible drops when mined: @2.=Ce bloc laissera tomber de manière aléatoire jusqu'à @1 des éléments suivants lorque miné : +This block won't drop anything when mined.=Ce bloc ne donnera rien lorsque miné. +This is a decorational block.=C'est un bloc de décoration. +This is a melee weapon which deals damage by punching.=C'est une arme de mêlée qui inflige des dommages en frappant. +Maximum damage per hit:=Dommages maximaux par frappe : +This item belongs to the @1 group.=Cet objet appartient au groupe @1. +This item belongs to these groups: @1.=Cet objet appartient aux groupes suivants : @1 +This item can serve as a smelting fuel with a burning time of @1.=Cet objet peut servir de combustible pendant @1. +This item is primarily used for crafting other items.=Cet objet est principalement utilisé pour fabriquer d'autres objets. +This item points to liquids.=Cet objet peut pointer les liquides. +This tool belongs to the @1 group.=Cet outil appartient au groupe @1. +This tool belongs to these groups: @1.=Cet outil appartient aux groupes suivants : @1. +This tool can serve as a smelting fuel with a burning time of @1.=Cet outil peut servir de combustible pendant @1. +This tool is capable of mining.=Cet outil peut miner. +Maximum toughness levels:=Niveau de robustesse maximum : +This tool points to liquids.=Cet outil peut pointer les liquides. +Tools and weapons=Outils et armes +Unknown Node=Nœud inconnu +Usage help: @1=Aide d'utilisation : @1 +Walking on this block is completely silent.=Marcher sur ce bloc est silencieux. +Whenever you are not wielding any item, you use the hand which acts as a tool with its own capabilities. When you are wielding an item which is not a mining tool or a weapon it will behave as if it would be the hand.=Quand vous ne maniez aucun objet, vous utilisez la main qui se comporte comme un outil avec ses propres capacités. Lorsque vous maniez un objet qui n'est pas un outil ou une arme il se comportera comme si c'était la main. +Yes=Oui +You can not jump while standing on this block.=Vous ne pouvez pas sauter en étant sur ce bloc. +any level=Tous les niveaux +level 0=Niveau 0 +level 0-@1=Niveau 0-@1 +unknown=inconnu +Unknown item (@1)=Objet inconnu (@1) +• @1: @2=• @1 : @2 +• @1: @2 HP=• @1 : @2 PV +• @1: @2, @3=• @1 : @2, @3 +• Flowing range: @1=• Distance de flux : @1 +• No flowing=• Ne coule pas +• Not renewable=• Ne se renouvelle pas +• Renewable=• Renouvelable +• Viscosity: @1=• Viscosité : @1 +Itemstring: "@1"=Identifiant d'objet : "@1" +Durability: @1 uses=Durabilité : @1 utilisations +Durability: @1=Durabilité : @1 +Mining durability:=Durabilité de minage : +• @1, level @2: @3 uses=• @1, niveau @2 : @3 utilisations +• @1, level @2: Unlimited=• @1, niveau @2 : Illimité +This block's rotation is affected by the way you place it: Place it on the floor or ceiling for a vertical orientation; place it at the side for a horizontal orientation. Sneaking while placing it leads to a perpendicular orientation instead.=La manière dont vous placez ce bloc affecte sa rotation : placez-le au sol ou au plafond pour une orientation verticale ; placez-le sur un coté pour une orientation horizontale. Pour le placer de manière perpendiculaire, utilisez la touche déplacement discrêt en le plaçant. +Toughness level: @1=Niveau de robustesse : @1 diff --git a/mods/HELP/doc/doc_items/settingtypes.txt b/mods/HELP/doc/doc_items/settingtypes.txt index 8b9d635e..43e66436 100644 --- a/mods/HELP/doc/doc_items/settingtypes.txt +++ b/mods/HELP/doc/doc_items/settingtypes.txt @@ -13,4 +13,4 @@ doc_items_friendly_group_names (Show “friendly” group names) bool false #with the “give” or “debug” privilege. #The itemstring is useful to power users and programmers and #is used e.g. for the /give and /giveme commands. -doc_items_show_itemstrings (Show itemstrings) bool false +doc_items_show_itemstrings (Always show itemstrings) bool false From 5053dde5f0da73046bafe6cb3a3b56e978ec3d19 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 10 Mar 2020 18:18:27 +0100 Subject: [PATCH 575/737] Update doc mod --- mods/HELP/doc/doc/README.md | 7 +++- mods/HELP/doc/doc/init.lua | 6 ++-- mods/HELP/doc/doc/locale/doc.fr.tr | 52 +++++++++++++++++++++++++++ mods/HELP/doc/doc/locale/template.txt | 2 +- 4 files changed, 63 insertions(+), 4 deletions(-) create mode 100644 mods/HELP/doc/doc/locale/doc.fr.tr diff --git a/mods/HELP/doc/doc/README.md b/mods/HELP/doc/doc/README.md index f95b5f89..72d2b85f 100644 --- a/mods/HELP/doc/doc/README.md +++ b/mods/HELP/doc/doc/README.md @@ -4,7 +4,7 @@ can access help pages about various things and the modder can add those pages. The mod itself does not provide any help texts, just the framework. It is the heart of the Help modpack, on which the other Help mods depend. -Current version: 1.1.1 +Current version: 1.2.1 ## For players ### Accessing the help @@ -50,3 +50,8 @@ For custom entities, you may also want to add support for `doc_identifier`. ## License of everything MIT License + +## Translation credits +French: Karamel +German: Wuzzy +Portuguese: BrunoMine diff --git a/mods/HELP/doc/doc/init.lua b/mods/HELP/doc/doc/init.lua index dcb4c785..4d5f8034 100644 --- a/mods/HELP/doc/doc/init.lua +++ b/mods/HELP/doc/doc/init.lua @@ -17,7 +17,7 @@ doc = {} -- Version number (follows the SemVer specification 2.0.0) doc.VERSION = {} doc.VERSION.MAJOR = 1 -doc.VERSION.MINOR = 0 +doc.VERSION.MINOR = 2 doc.VERSION.PATCH = 1 doc.VERSION.STRING = doc.VERSION.MAJOR.."."..doc.VERSION.MINOR.."."..doc.VERSION.PATCH @@ -657,7 +657,9 @@ end) function doc.formspec_core(tab) if tab == nil then tab = 1 else tab = tostring(tab) end - return "size["..doc.FORMSPEC.WIDTH..","..doc.FORMSPEC.HEIGHT.."]tabheader[0,0;doc_header;".. + return "size["..doc.FORMSPEC.WIDTH..","..doc.FORMSPEC.HEIGHT.."]".. + "style_type[textarea;textcolor=#FFFFFF]".. + "tabheader[0,0;doc_header;".. minetest.formspec_escape(S("Category list")) .. "," .. minetest.formspec_escape(S("Entry list")) .. "," .. minetest.formspec_escape(S("Entry")) .. ";" diff --git a/mods/HELP/doc/doc/locale/doc.fr.tr b/mods/HELP/doc/doc/locale/doc.fr.tr new file mode 100644 index 00000000..f7f33b0f --- /dev/null +++ b/mods/HELP/doc/doc/locale/doc.fr.tr @@ -0,0 +1,52 @@ +# textdomain:doc +<=< +>=> +Access to the requested entry has been denied; this entry is secret. You may unlock access by progressing in the game. Figure out on your own how to unlock this entry.=L'accès à cette page a été refusé; cette page est secrète. Vous pouvez débloquer l'accès en progressant dans le jeu. Trouvez comment débloquer cette page. +All entries read.=Toutes les pages sont lues. +All help entries revealed!=Toutes les pages d'aide ont été découvertes ! +All help entries are already revealed.=Toutes les pages d'aide sont déjà découvertes. +Allows you to reveal all hidden help entries with /help_reveal=Vous permet de découvrir toutes les pages d'aide cachées avec /help_reveal +Category list=Liste des catégories +Currently all entries in this category are hidden from you.=Toutes les pages de cette catégories vous sont cachées. +Unlock new entries by progressing in the game.=Débloquez de nouvelles pages en progressant dans le jeu. +Help=Aide +Entry=Page +Entry list=Liste des pages +Error: Access denied.=Erreur : Accès refusé. +Error: No help available.=Erreur : Aucune aide disponible. +# Affichage dans un bouton court +Go to category list=Voir les catégories +Go to entry list=Voir les pages +Help > @1=Aide > @1 +Help > @1 > @2=Aide > @1 > @2 +Help > @1 > (No Entry)=Aide > @1 > (Aucune page) +Help > (No Category)=Aide > (Aucune catégorie) +Hidden entries: @1=Pages cachées : @1 +Nameless entry (@1)=Pages sans nom (@1) +New entries: @1=Nouvelles pages : @1 +New help entry unlocked: @1 > @2=Nouvelles pages d'aide débloquées : @1 +No categories have been registered, but they are required to provide help.=Aucune catégorie n'a été enregistrée, mais elles sont nécessaires pour fournir l'aide. +The Documentation System [doc] does not come with help contents on its own, it needs additional mods to add help content. Please make sure such mods are enabled on for this world, and try again.=Le Système de Documentation [doc] n'est fourni avec aucun contenu d'aide, il a besoin d'autres mods pour ajouter le contenu de l'aide. Vérifiez que de tels mods sont activés pour ce monde, et réessayez. +Number of entries: @1=Nombre de pages : @1 +OK=OK +Open a window providing help entries about Minetest and more=Ouvrire une fenêtre contenant les pages d'aides à propos de Minetest. +Please select a category you wish to learn more about:=Veuillez choisir une catégorie pour laquelle vous souhaitez en savoir plus : +Recommended mods: doc_basics, doc_items, doc_identifier, doc_encyclopedia.=Mods recommandés : doc_basics, doc_items, doc_identifier, doc_encyclopedia. +Reveal all hidden help entries to you=Révéler toutes les pages d'aide cachées pour vous. +Show entry=Voir la page +Show category=Voir la catégorie +Show next entry=Voir la page suivante +Show previous entry=Voir la page précédente +This category does not have any entries.=Cette catégorie ne contient aucune page. +This category has the following entries:=Cette catégorie contient les pages suivantes : +This category is empty.=Cette catégorie est vide. +This is the help.=Ceci est l'aide. +You haven't chosen a category yet. Please choose one in the category list first.=Vous n'avez pas encore choisi de catégorie. Veulliez d'abord en choisir une dans la liste. +You haven't chosen an entry yet. Please choose one in the entry list first.=Vous n'avez pas encore choisi de page. Veuillez d'abord en choisir une dans la liste. +Collection of help texts=Collection des textes d'aide +Notify me when new help is available=Recevoir une notification quand une nouvelle page d'aide est disponible +Play notification sound when new help is available=Jouer un son de notification lorsqu'une nouvelle page d'aide est disponible +Show previous image=Voir l'image précédente +Show previous gallery page=Voir la page précédente de la galerie +Show next image=Voir l'image suivante +Show next gallery page=Voir la page suivante de la galerie diff --git a/mods/HELP/doc/doc/locale/template.txt b/mods/HELP/doc/doc/locale/template.txt index fdeecfdc..517c4286 100644 --- a/mods/HELP/doc/doc/locale/template.txt +++ b/mods/HELP/doc/doc/locale/template.txt @@ -7,7 +7,7 @@ All help entries revealed!= All help entries are already revealed.= Allows you to reveal all hidden help entries with /help_reveal= Category list= -Currently all entries in this category are hidden from you. +Currently all entries in this category are hidden from you.= Unlock new entries by progressing in the game.= Help= Entry= From 8adf6298a70f2f08f0e905a88324d88d7cc819a6 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 10 Mar 2020 18:29:28 +0100 Subject: [PATCH 576/737] Update doc mod again --- mods/HELP/doc/doc/init.lua | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/mods/HELP/doc/doc/init.lua b/mods/HELP/doc/doc/init.lua index 4d5f8034..70834fa8 100644 --- a/mods/HELP/doc/doc/init.lua +++ b/mods/HELP/doc/doc/init.lua @@ -658,7 +658,6 @@ end) function doc.formspec_core(tab) if tab == nil then tab = 1 else tab = tostring(tab) end return "size["..doc.FORMSPEC.WIDTH..","..doc.FORMSPEC.HEIGHT.."]".. - "style_type[textarea;textcolor=#FFFFFF]".. "tabheader[0,0;doc_header;".. minetest.formspec_escape(S("Category list")) .. "," .. minetest.formspec_escape(S("Entry list")) .. "," .. @@ -940,7 +939,9 @@ function doc.formspec_entry(category_id, entry_id, playername) if ename == nil or ename == "" then ename = S("Nameless entry (@1)", entry_id) end - formstring = "label[0,0;"..minetest.formspec_escape(S("Help > @1 > @2", category.def.name, ename)).."]" + + formstring = "style_type[textarea;textcolor=#FFFFFF]" + formstring = formstring .. "label[0,0;"..minetest.formspec_escape(S("Help > @1 > @2", category.def.name, ename)).."]" formstring = formstring .. category.def.build_formspec(entry.data, playername) formstring = formstring .. doc.formspec_entry_navigation(category_id, entry_id) end From 9ef313d0a10964b9f22c1acf950706a034bbfb49 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Wed, 11 Mar 2020 00:54:06 +0100 Subject: [PATCH 577/737] Fix bas variable name in commandblock mod --- mods/ITEMS/REDSTONE/mesecons_commandblock/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/REDSTONE/mesecons_commandblock/init.lua b/mods/ITEMS/REDSTONE/mesecons_commandblock/init.lua index 30f203b7..8a36210a 100644 --- a/mods/ITEMS/REDSTONE/mesecons_commandblock/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons_commandblock/init.lua @@ -155,7 +155,7 @@ local on_rightclick = function(pos, node, player, itemstack, pointed_thing) else commanderstr = S("Commander: @1", commander) end - local textrea_name, submit, textarea + local textarea_name, submit, textarea -- If editing is not allowed, only allow read-only access. -- Player can still view the contents of the command block. if can_edit then From 098bc3c7c7fd45df47d38a4be0b9bdc38d57f9d2 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Wed, 11 Mar 2020 00:57:40 +0100 Subject: [PATCH 578/737] Fix an inconsistent German translation --- mods/HELP/mcl_craftguide/locale/mcl_craftguide.de.tr | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/HELP/mcl_craftguide/locale/mcl_craftguide.de.tr b/mods/HELP/mcl_craftguide/locale/mcl_craftguide.de.tr index 02227194..5d8ea21b 100644 --- a/mods/HELP/mcl_craftguide/locale/mcl_craftguide.de.tr +++ b/mods/HELP/mcl_craftguide/locale/mcl_craftguide.de.tr @@ -1,5 +1,5 @@ # textdomain: mcl_craftguide -Any shulker box=Beliebige Shulkerbox +Any shulker box=Beliebige Schulkerkiste Any wool=Beliebige Wolle Any wood planks=Beliebige Holzplanken Any wood=Beliebiges Holz From 03a5519d01b5a0da6930739b71a56348653b0583 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Wed, 11 Mar 2020 01:44:23 +0100 Subject: [PATCH 579/737] Partial German translation of tooltip extensions --- mods/ENTITIES/mcl_boats/locale/mcl_boats.de.tr | 1 + mods/ENTITIES/mcl_boats/locale/template.txt | 1 + mods/ENTITIES/mcl_minecarts/locale/mcl_minecarts.de.tr | 6 ++++++ mods/ENTITIES/mcl_minecarts/locale/template.txt | 6 ++++++ mods/ENTITIES/mcl_mobs/locale/mcl_mobs.de.tr | 2 ++ mods/ENTITIES/mcl_mobs/locale/template.txt | 2 ++ mods/ENTITIES/mobs_mc/locale/mobs_mc.de.tr | 1 + mods/ENTITIES/mobs_mc/locale/template.txt | 1 + mods/HELP/doc/doc_identifier/locale/doc_identifier.de.tr | 1 + mods/HELP/doc/doc_identifier/locale/template.txt | 1 + mods/ITEMS/mcl_anvils/locale/mcl_anvils.de.tr | 1 + mods/ITEMS/mcl_anvils/locale/template.txt | 1 + mods/ITEMS/mcl_armor_stand/locale/mcl_armor_stand.de.tr | 1 + mods/ITEMS/mcl_armor_stand/locale/template.txt | 1 + mods/ITEMS/mcl_banners/locale/mcl_banners.de.tr | 1 + mods/ITEMS/mcl_banners/locale/template.txt | 1 + 16 files changed, 28 insertions(+) diff --git a/mods/ENTITIES/mcl_boats/locale/mcl_boats.de.tr b/mods/ENTITIES/mcl_boats/locale/mcl_boats.de.tr index 3c97cf5e..95066b53 100644 --- a/mods/ENTITIES/mcl_boats/locale/mcl_boats.de.tr +++ b/mods/ENTITIES/mcl_boats/locale/mcl_boats.de.tr @@ -8,3 +8,4 @@ Jungle Boat=Dschungelboot Oak Boat=Eichenboot Rightclick on a water source to place the boat. Rightclick the boat to enter it. Use [Left] and [Right] to steer, [Forwards] to speed up and [Backwards] to slow down or move backwards. Rightclick the boat again to leave it, punch the boat to make it drop as an item.=Rechtsklicken Sie auf eine Wasserquelle, um das Boot zu platzieren. Rechtsklicken Sie auf das Boot, um es zu betreten. Mit [Links] und [Rechts] lenken, mit [Vorwärts] und [Rückwärts] Geschwindigkeit regeln oder rückwärts fahren. Rechtsklicken Sie erneut auf das Boot, um es zu verlassen, schlagen Sie das Boot, um es als Gegenstand fallen zu lassen. Spruce Boat=Fichtenboot +Water vehicle=Wasserfahrzeug diff --git a/mods/ENTITIES/mcl_boats/locale/template.txt b/mods/ENTITIES/mcl_boats/locale/template.txt index 9af27b70..54f1fd64 100644 --- a/mods/ENTITIES/mcl_boats/locale/template.txt +++ b/mods/ENTITIES/mcl_boats/locale/template.txt @@ -8,3 +8,4 @@ Jungle Boat= Oak Boat= Rightclick on a water source to place the boat. Rightclick the boat to enter it. Use [Left] and [Right] to steer, [Forwards] to speed up and [Backwards] to slow down or move backwards. Rightclick the boat again to leave it, punch the boat to make it drop as an item.= Spruce Boat= +Water vehicle= diff --git a/mods/ENTITIES/mcl_minecarts/locale/mcl_minecarts.de.tr b/mods/ENTITIES/mcl_minecarts/locale/mcl_minecarts.de.tr index b3a9e219..4d9b6c2f 100644 --- a/mods/ENTITIES/mcl_minecarts/locale/mcl_minecarts.de.tr +++ b/mods/ENTITIES/mcl_minecarts/locale/mcl_minecarts.de.tr @@ -27,3 +27,9 @@ To make this rail activate minecarts, power it with redstone power and send a mi Detector Rail=Sensorschiene Rails can be used to build transport tracks for minecarts. A detector rail is able to detect a minecart above it and powers redstone mechanisms.=Schienen können benutzt werden, um Strecken für Loren zu bauen. Eine Sensorschiene kann eine Lore erkennen und versorgt Redstone-Mechanismen. To detect a minecart and provide redstone power, connect it to redstone trails or redstone mechanisms and send any minecart over the rail.=Um eine Lore zu erkennen und die Redstone-Energie zu aktivieren, verbinden Sie die Schiene mit Redstonestaub oder Redstone-Mechanismen und schicken Sie eine beliebige Lore über die Schiene. +Track for minecarts=Strecke für Loren +Speed up when powered, slow down when not powered=Beschleunigt, wenn bestromt, sonst verlangsamt es +Activates minecarts when powered=Aktiviert Loren, wenn bestromt +Emits redstone power when a minecart is detected=Gibt ein Redstonesignal aus, wenn eine Lore erfasst wird +Vehicle for fast travel on rails=Fahrzeug zum schnellen Transport auf Schienen +Can be ignited by tools or powered activator rail=Kann mit Werkzeugen oder bestromten Aktivierungsschienen angezündet werden diff --git a/mods/ENTITIES/mcl_minecarts/locale/template.txt b/mods/ENTITIES/mcl_minecarts/locale/template.txt index 367bf109..25418954 100644 --- a/mods/ENTITIES/mcl_minecarts/locale/template.txt +++ b/mods/ENTITIES/mcl_minecarts/locale/template.txt @@ -27,3 +27,9 @@ To make this rail activate minecarts, power it with redstone power and send a mi Detector Rail= Rails can be used to build transport tracks for minecarts. A detector rail is able to detect a minecart above it and powers redstone mechanisms.= To detect a minecart and provide redstone power, connect it to redstone trails or redstone mechanisms and send any minecart over the rail.= +Track for minecarts= +Speed up when powered, slow down when not powered= +Activates minecarts when powered= +Emits redstone power when a minecart is detected= +Vehicle for fast travel on rails= +Can be ignited by tools or powered activator rail= diff --git a/mods/ENTITIES/mcl_mobs/locale/mcl_mobs.de.tr b/mods/ENTITIES/mcl_mobs/locale/mcl_mobs.de.tr index 027c1664..3b1a310b 100644 --- a/mods/ENTITIES/mcl_mobs/locale/mcl_mobs.de.tr +++ b/mods/ENTITIES/mcl_mobs/locale/mcl_mobs.de.tr @@ -7,3 +7,5 @@ Name Tag=Namensschild A name tag is an item to name a mob.=Ein Namensschild ist ein Gegenstand, um einen Mob zu benennen. Before you use the name tag, you need to set a name at an anvil. Then you can use the name tag to name a mob. This uses up the name tag.=Bevor Sie ein Namensschild benutzen können, müssen Sie ihn an einem Amboss benennen. Dann können können Sie das Namensschild benutztn, um einen Mob zu benennen. Das wird das Namensschild verbrauchen. Only peaceful mobs allowed!=Nur friedliche Mobs erlaubt! +Give names to mobs=Benennt Mobs +Set name at anvil=Namen am Amboss setzen diff --git a/mods/ENTITIES/mcl_mobs/locale/template.txt b/mods/ENTITIES/mcl_mobs/locale/template.txt index 1751be38..e24974a4 100644 --- a/mods/ENTITIES/mcl_mobs/locale/template.txt +++ b/mods/ENTITIES/mcl_mobs/locale/template.txt @@ -7,3 +7,5 @@ Name Tag= A name tag is an item to name a mob.= Before you use the name tag, you need to set a name at an anvil. Then you can use the name tag to name a mob. This uses up the name tag.= Only peaceful mobs allowed!= +Give names to mobs= +Set name at anvil= diff --git a/mods/ENTITIES/mobs_mc/locale/mobs_mc.de.tr b/mods/ENTITIES/mobs_mc/locale/mobs_mc.de.tr index 1e514028..94e1b1f2 100644 --- a/mods/ENTITIES/mobs_mc/locale/mobs_mc.de.tr +++ b/mods/ENTITIES/mobs_mc/locale/mobs_mc.de.tr @@ -72,3 +72,4 @@ Weapon Smith=Waffenschmied Tool Smith=Werkzeugschmied Cleric=Priester Nitwit=Dorftrottel +Protects you from death when wielding it=Schützt vor dem Tod, wenn es gehalten wird diff --git a/mods/ENTITIES/mobs_mc/locale/template.txt b/mods/ENTITIES/mobs_mc/locale/template.txt index 3cd260ce..ea708f70 100644 --- a/mods/ENTITIES/mobs_mc/locale/template.txt +++ b/mods/ENTITIES/mobs_mc/locale/template.txt @@ -72,3 +72,4 @@ Weapon Smith= Tool Smith= Cleric= Nitwit= +Protects you from death when wielding it= diff --git a/mods/HELP/doc/doc_identifier/locale/doc_identifier.de.tr b/mods/HELP/doc/doc_identifier/locale/doc_identifier.de.tr index beba2e75..26fa3552 100644 --- a/mods/HELP/doc/doc_identifier/locale/doc_identifier.de.tr +++ b/mods/HELP/doc/doc_identifier/locale/doc_identifier.de.tr @@ -15,3 +15,4 @@ Punch any block, item or other thing about you wish to learn more about. This wi This block cannot be identified because the world has not materialized at this point yet. Try again in a few seconds.=Dieser Block kann nicht identifiziert werden, weil sich die Welt an dieser Stelle noch nicht materialisiert hat. Versuchen Sie es in ein paar Sekunden erneut. This is a player.=Dies ist ein Spieler. This useful little helper can be used to quickly learn more about about one's closer environment. It identifies and analyzes blocks, items and other things and it shows extensive information about the thing on which it is used.=Dieser nützliche kleine Helfer kann benutzt werden, um schnell etwas über die nähere Umgebung zu erfahren. Er identifiziert und analysiert Blöcke, Gegenstände und andere Dinge und zeigt ausführliche Informationen über all das, worauf man ihn anwendet. +Show help for pointed thing=Hilfe für gezeigtes Ding anzeigen diff --git a/mods/HELP/doc/doc_identifier/locale/template.txt b/mods/HELP/doc/doc_identifier/locale/template.txt index a35201af..104f0ea1 100644 --- a/mods/HELP/doc/doc_identifier/locale/template.txt +++ b/mods/HELP/doc/doc_identifier/locale/template.txt @@ -15,3 +15,4 @@ Punch any block, item or other thing about you wish to learn more about. This wi This block cannot be identified because the world has not materialized at this point yet. Try again in a few seconds.= This is a player.= This useful little helper can be used to quickly learn more about about one's closer environment. It identifies and analyzes blocks, items and other things and it shows extensive information about the thing on which it is used.= +Show help for pointed thing= diff --git a/mods/ITEMS/mcl_anvils/locale/mcl_anvils.de.tr b/mods/ITEMS/mcl_anvils/locale/mcl_anvils.de.tr index 29010796..9e7d8833 100644 --- a/mods/ITEMS/mcl_anvils/locale/mcl_anvils.de.tr +++ b/mods/ITEMS/mcl_anvils/locale/mcl_anvils.de.tr @@ -13,3 +13,4 @@ Armor counts as a tool. It is possible to repair and rename a tool in a single s The anvil has limited durability and 3 damage levels: undamaged, slightly damaged and very damaged. Each time you repair or rename something, there is a 12% chance the anvil gets damaged. Anvils also have a chance of being damaged when they fall by more than 1 block. If a very damaged anvil is damaged again, it is destroyed.=Der Amboss hat begrenze Lebensdauer und 3 Schadensstufen: Kein Schaden, leicht beschädigt, und stark beschädigt. Jedes mal, wenn Sie etwas reparieren oder umbenennen, gibt es eine 12%-ige Chance, dass der Amboss Schaden nimmt. Ambosse können auch beschädigt werden, wenn sie um mehr als 1 Block fallen. Wenn ein sehr beschädigter Amboss erneut beschädigt wird, wird er zerstört. Slightly Damaged Anvil=Leicht beschädigter Amboss Very Damaged Anvil=Stark beschädigter Amboss +Repair and rename items=Für die Reparatur und Umbenennung von Gegenständen diff --git a/mods/ITEMS/mcl_anvils/locale/template.txt b/mods/ITEMS/mcl_anvils/locale/template.txt index c76b7174..ebc741c0 100644 --- a/mods/ITEMS/mcl_anvils/locale/template.txt +++ b/mods/ITEMS/mcl_anvils/locale/template.txt @@ -13,3 +13,4 @@ Armor counts as a tool. It is possible to repair and rename a tool in a single s The anvil has limited durability and 3 damage levels: undamaged, slightly damaged and very damaged. Each time you repair or rename something, there is a 12% chance the anvil gets damaged. Anvils also have a chance of being damaged when they fall by more than 1 block. If a very damaged anvil is damaged again, it is destroyed.= Slightly Damaged Anvil= Very Damaged Anvil= +Repair and rename items= diff --git a/mods/ITEMS/mcl_armor_stand/locale/mcl_armor_stand.de.tr b/mods/ITEMS/mcl_armor_stand/locale/mcl_armor_stand.de.tr index 61b1efa5..e6f8fa91 100644 --- a/mods/ITEMS/mcl_armor_stand/locale/mcl_armor_stand.de.tr +++ b/mods/ITEMS/mcl_armor_stand/locale/mcl_armor_stand.de.tr @@ -2,3 +2,4 @@ Armor Stand=Rüstungsständer An armor stand is a decorative object which can display different pieces of armor. Anything which players can wear as armor can also be put on an armor stand.=Ein Rüstungsständer ist ein dekoratives Objekt, welches verschiedene Teile einer Rüstung präsentiert. Alles, was Spieler als Rüstung tragen kann, kann auch an einem Rüstungsständer platziert werden. Just place an armor item on the armor stand. To take the top piece of armor from the armor stand, select your hand and use the place key on the armor stand.=Platzieren Sie einfach einen Rüstungsgegenstand auf den Rüstungsständer. Um das oberte Rüstungsteil zu nehmen, wählen Sie Ihre Hand aus und benutzen Sie die Platzieren-Taste auf dem Rüstungsständer. +Displays pieces of armor=Stellt Rüstungsteile aus diff --git a/mods/ITEMS/mcl_armor_stand/locale/template.txt b/mods/ITEMS/mcl_armor_stand/locale/template.txt index fa6acb73..8d3f3cb8 100644 --- a/mods/ITEMS/mcl_armor_stand/locale/template.txt +++ b/mods/ITEMS/mcl_armor_stand/locale/template.txt @@ -2,3 +2,4 @@ Armor Stand= An armor stand is a decorative object which can display different pieces of armor. Anything which players can wear as armor can also be put on an armor stand.= Just place an armor item on the armor stand. To take the top piece of armor from the armor stand, select your hand and use the place key on the armor stand.= +Displays pieces of armor= diff --git a/mods/ITEMS/mcl_banners/locale/mcl_banners.de.tr b/mods/ITEMS/mcl_banners/locale/mcl_banners.de.tr index 958192ba..3bf65629 100644 --- a/mods/ITEMS/mcl_banners/locale/mcl_banners.de.tr +++ b/mods/ITEMS/mcl_banners/locale/mcl_banners.de.tr @@ -74,3 +74,4 @@ You can copy the pattern of a banner by placing two banners of the same color in @1 Chief Indented=Gezacktes Haupt (@1) And one additional layer=Und eine zusätzliche Schicht And @1 additional layers=Und @1 zusätzliche Schichten +Paintable decoration=Bemalbare Dekoration diff --git a/mods/ITEMS/mcl_banners/locale/template.txt b/mods/ITEMS/mcl_banners/locale/template.txt index e69629d9..944a1a7a 100644 --- a/mods/ITEMS/mcl_banners/locale/template.txt +++ b/mods/ITEMS/mcl_banners/locale/template.txt @@ -74,3 +74,4 @@ You can copy the pattern of a banner by placing two banners of the same color in @1 Chief Indented= And one additional layer= And @1 additional layer(s)= +Paintable decoration= From feba60cad81b3de0adde0b8c84213ba8df35afda Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Thu, 12 Mar 2020 01:35:11 +0100 Subject: [PATCH 580/737] Translate all extended tooltips to German --- mods/ENTITIES/mobs_mc/locale/mobs_mc.de.tr | 2 +- mods/ENTITIES/mobs_mc/locale/template.txt | 2 +- mods/HELP/mcl_tt/locale/mcl_tt.de.tr | 17 +++++++++++++++++ mods/HELP/mcl_tt/locale/template.txt | 17 +++++++++++++++++ mods/HELP/tt/locale/template.txt | 18 +++++++++++------- mods/HELP/tt/locale/tt.de.tr | 18 +++++++++++------- mods/ITEMS/REDSTONE/mcl_dispensers/init.lua | 2 +- .../mcl_dispensers/locale/mcl_dispensers.de.tr | 2 ++ .../mcl_dispensers/locale/template.txt | 2 ++ mods/ITEMS/REDSTONE/mcl_droppers/init.lua | 2 +- .../mcl_droppers/locale/mcl_droppers.de.tr | 2 ++ .../REDSTONE/mcl_droppers/locale/template.txt | 2 ++ .../mcl_observers/locale/mcl_observers.de.tr | 1 + .../REDSTONE/mcl_observers/locale/template.txt | 1 + .../locale/mesecons_button.de.tr | 3 +++ .../mesecons_button/locale/template.txt | 3 +++ .../locale/mesecons_commandblock.de.tr | 1 + .../mesecons_commandblock/locale/template.txt | 1 + mods/ITEMS/REDSTONE/mesecons_delayer/init.lua | 4 +++- .../locale/mesecons_delayer.de.tr | 3 +++ .../mesecons_delayer/locale/template.txt | 3 +++ .../locale/mesecons_lightstone.de.tr | 1 + .../mesecons_lightstone/locale/template.txt | 1 + .../locale/mesecons_noteblock.de.tr | 1 + .../mesecons_noteblock/locale/template.txt | 1 + .../locale/mesecons_pistons.de.tr | 2 ++ .../mesecons_pistons/locale/template.txt | 2 ++ .../REDSTONE/mesecons_pressureplates/init.lua | 8 ++++---- .../locale/mesecons_pressureplates.de.tr | 6 +++++- .../locale/template.txt | 5 +++++ .../locale/mesecons_solarpanel.de.tr | 2 ++ .../mesecons_solarpanel/locale/template.txt | 2 ++ .../mesecons_torch/locale/mesecons_torch.de.tr | 2 ++ .../mesecons_torch/locale/template.txt | 2 ++ .../ITEMS/REDSTONE/mesecons_walllever/init.lua | 2 +- .../locale/mesecons_walllever.de.tr | 1 + .../mesecons_walllever/locale/template.txt | 1 + .../mesecons_wires/locale/mesecons_wires.de.tr | 1 + .../mesecons_wires/locale/template.txt | 1 + mods/ITEMS/mcl_beds/locale/mcl_beds.de.tr | 1 + mods/ITEMS/mcl_beds/locale/template.txt | 1 + mods/ITEMS/mcl_books/locale/mcl_books.de.tr | 1 + mods/ITEMS/mcl_books/locale/template.txt | 1 + mods/ITEMS/mcl_bows/bow.lua | 2 +- mods/ITEMS/mcl_bows/locale/mcl_bows.de.tr | 4 ++++ mods/ITEMS/mcl_bows/locale/template.txt | 4 ++++ .../ITEMS/mcl_buckets/locale/mcl_buckets.de.tr | 4 ++++ mods/ITEMS/mcl_buckets/locale/template.txt | 4 ++++ mods/ITEMS/mcl_cake/locale/mcl_cake.de.tr | 2 ++ mods/ITEMS/mcl_cake/locale/template.txt | 2 ++ .../mcl_cauldrons/locale/mcl_cauldrons.de.tr | 1 + mods/ITEMS/mcl_cauldrons/locale/template.txt | 1 + mods/ITEMS/mcl_chests/init.lua | 8 ++++---- mods/ITEMS/mcl_chests/locale/mcl_chests.de.tr | 6 ++++++ mods/ITEMS/mcl_chests/locale/template.txt | 6 ++++++ mods/ITEMS/mcl_clock/init.lua | 2 +- mods/ITEMS/mcl_clock/locale/mcl_clock.de.tr | 1 + mods/ITEMS/mcl_clock/locale/template.txt | 1 + .../locale/mcl_colorblocks.de.tr | 1 + mods/ITEMS/mcl_colorblocks/locale/template.txt | 1 + .../ITEMS/mcl_compass/locale/mcl_compass.de.tr | 1 + mods/ITEMS/mcl_compass/locale/template.txt | 1 + mods/ITEMS/mcl_core/locale/mcl_core.de.tr | 8 ++++++++ mods/ITEMS/mcl_core/locale/template.txt | 8 ++++++++ mods/ITEMS/mcl_crafting_table/init.lua | 2 +- .../locale/mcl_crafting_table.de.tr | 1 + .../mcl_crafting_table/locale/template.txt | 1 + mods/ITEMS/mcl_doors/api_doors.lua | 4 ++-- mods/ITEMS/mcl_doors/api_trapdoors.lua | 4 ++-- mods/ITEMS/mcl_doors/locale/mcl_doors.de.tr | 3 ++- mods/ITEMS/mcl_doors/locale/template.txt | 2 ++ mods/ITEMS/mcl_dye/locale/mcl_dye.de.tr | 2 ++ mods/ITEMS/mcl_dye/locale/template.txt | 2 ++ mods/ITEMS/mcl_end/eye_of_ender.lua | 2 +- mods/ITEMS/mcl_end/locale/mcl_end.de.tr | 3 +++ mods/ITEMS/mcl_end/locale/template.txt | 3 +++ mods/ITEMS/mcl_farming/beetroot.lua | 2 +- mods/ITEMS/mcl_farming/carrots.lua | 2 +- .../ITEMS/mcl_farming/locale/mcl_farming.de.tr | 6 ++++++ mods/ITEMS/mcl_farming/locale/template.txt | 6 ++++++ mods/ITEMS/mcl_farming/melon.lua | 2 +- mods/ITEMS/mcl_farming/potatoes.lua | 2 +- mods/ITEMS/mcl_farming/pumpkin.lua | 2 +- mods/ITEMS/mcl_farming/soil.lua | 2 +- mods/ITEMS/mcl_farming/wheat.lua | 2 +- mods/ITEMS/mcl_fences/init.lua | 2 +- mods/ITEMS/mcl_fences/locale/mcl_fences.de.tr | 1 + mods/ITEMS/mcl_fences/locale/template.txt | 1 + mods/ITEMS/mcl_fire/locale/mcl_fire.de.tr | 2 ++ mods/ITEMS/mcl_fire/locale/template.txt | 2 ++ mods/ITEMS/mcl_fishing/init.lua | 2 +- .../ITEMS/mcl_fishing/locale/mcl_fishing.de.tr | 2 ++ mods/ITEMS/mcl_fishing/locale/template.txt | 2 ++ mods/ITEMS/mcl_flowerpots/init.lua | 2 +- .../mcl_flowerpots/locale/mcl_flowerpots.de.tr | 1 + mods/ITEMS/mcl_flowerpots/locale/template.txt | 1 + .../mcl_furnaces/locale/mcl_furnaces.de.tr | 1 + mods/ITEMS/mcl_furnaces/locale/template.txt | 1 + .../ITEMS/mcl_hoppers/locale/mcl_hoppers.de.tr | 3 +++ mods/ITEMS/mcl_hoppers/locale/template.txt | 3 +++ mods/ITEMS/mcl_itemframes/init.lua | 2 +- .../mcl_itemframes/locale/mcl_itemframes.de.tr | 2 +- mods/ITEMS/mcl_itemframes/locale/template.txt | 1 + .../ITEMS/mcl_jukebox/locale/mcl_jukebox.de.tr | 1 + mods/ITEMS/mcl_jukebox/locale/template.txt | 1 + mods/ITEMS/mcl_maps/locale/mcl_maps.de.tr | 1 + mods/ITEMS/mcl_maps/locale/template.txt | 1 + .../mcl_mobitems/locale/mcl_mobitems.de.tr | 6 ++++++ mods/ITEMS/mcl_mobitems/locale/template.txt | 6 ++++++ .../locale/mcl_mobspawners.de.tr | 1 + mods/ITEMS/mcl_mobspawners/locale/template.txt | 1 + .../locale/mcl_monster_eggs.de.tr | 1 + .../ITEMS/mcl_monster_eggs/locale/template.txt | 1 + .../mcl_mushrooms/locale/mcl_mushrooms.de.tr | 2 ++ mods/ITEMS/mcl_mushrooms/locale/template.txt | 2 ++ mods/ITEMS/mcl_nether/init.lua | 2 +- mods/ITEMS/mcl_nether/locale/mcl_nether.de.tr | 3 +++ mods/ITEMS/mcl_nether/locale/template.txt | 3 +++ mods/ITEMS/mcl_ocean/locale/mcl_ocean.de.tr | 6 ++++++ mods/ITEMS/mcl_ocean/locale/template.txt | 6 ++++++ .../ITEMS/mcl_portals/locale/mcl_portals.de.tr | 3 +++ mods/ITEMS/mcl_portals/locale/template.txt | 1 + .../ITEMS/mcl_potions/locale/mcl_potions.de.tr | 2 ++ mods/ITEMS/mcl_potions/locale/template.txt | 2 ++ mods/ITEMS/mcl_signs/locale/mcl_signs.de.tr | 1 + mods/ITEMS/mcl_signs/locale/template.txt | 1 + .../ITEMS/mcl_sponges/locale/mcl_sponges.de.tr | 2 ++ mods/ITEMS/mcl_sponges/locale/template.txt | 2 ++ .../mcl_throwing/locale/mcl_throwing.de.tr | 3 +++ mods/ITEMS/mcl_throwing/locale/template.txt | 3 +++ mods/ITEMS/mcl_tnt/init.lua | 2 +- mods/ITEMS/mcl_tnt/locale/mcl_tnt.de.tr | 2 ++ mods/ITEMS/mcl_tnt/locale/template.txt | 2 ++ 133 files changed, 323 insertions(+), 52 deletions(-) create mode 100644 mods/HELP/mcl_tt/locale/mcl_tt.de.tr create mode 100644 mods/HELP/mcl_tt/locale/template.txt diff --git a/mods/ENTITIES/mobs_mc/locale/mobs_mc.de.tr b/mods/ENTITIES/mobs_mc/locale/mobs_mc.de.tr index 94e1b1f2..24d3fa32 100644 --- a/mods/ENTITIES/mobs_mc/locale/mobs_mc.de.tr +++ b/mods/ENTITIES/mobs_mc/locale/mobs_mc.de.tr @@ -72,4 +72,4 @@ Weapon Smith=Waffenschmied Tool Smith=Werkzeugschmied Cleric=Priester Nitwit=Dorftrottel -Protects you from death when wielding it=Schützt vor dem Tod, wenn es gehalten wird +Protects you from death while wielding it=Schützt vor dem Tod, wenn es gehalten wird diff --git a/mods/ENTITIES/mobs_mc/locale/template.txt b/mods/ENTITIES/mobs_mc/locale/template.txt index ea708f70..04ba9e46 100644 --- a/mods/ENTITIES/mobs_mc/locale/template.txt +++ b/mods/ENTITIES/mobs_mc/locale/template.txt @@ -72,4 +72,4 @@ Weapon Smith= Tool Smith= Cleric= Nitwit= -Protects you from death when wielding it= +Protects you from death while wielding it= diff --git a/mods/HELP/mcl_tt/locale/mcl_tt.de.tr b/mods/HELP/mcl_tt/locale/mcl_tt.de.tr new file mode 100644 index 00000000..f793e59a --- /dev/null +++ b/mods/HELP/mcl_tt/locale/mcl_tt.de.tr @@ -0,0 +1,17 @@ +# textdomain: mcl_tt +Head armor=Kopfrüstung +Torso armor=Torsorüstung +Legs armor=Beinrüstung +Feet armor=Fußrüstung +Armor points: @1=Rüstungspunkte: @1 +Armor durability: @1=Rüstungshaltbarkeit: @1 +Protection: @1%=Schutz: @1% +Hunger points: +@1=Hungerpunkte: +@1 +Saturation points: +@1=Sättigungspunkte: +@1 +Deals damage when falling=Macht Schaden beim Fallen +Grows on grass blocks or dirt=Wächst auf Grasblöcken oder Erde +Grows on grass blocks, podzol, dirt or coarse dirt=Wächst auf Grasblöcken, Podsol, Erde oder grober Erde +Flammable=Entzündlich +Zombie view range: -50%=Zombiesichtweite: -50% +Skeleton view range: -50%=Skelettsichtweite: -50% +Creeper view range: -50%=Creepersichtweite: -50% diff --git a/mods/HELP/mcl_tt/locale/template.txt b/mods/HELP/mcl_tt/locale/template.txt new file mode 100644 index 00000000..357830bc --- /dev/null +++ b/mods/HELP/mcl_tt/locale/template.txt @@ -0,0 +1,17 @@ +# textdomain: mcl_tt +Head armor= +Torso armor= +Legs armor= +Feet armor= +Armor points: @1= +Armor durability: @1= +Protection: @1%= +Hunger points: +@1= +Saturation points: +@1= +Deals damage when falling= +Grows on grass blocks or dirt= +Grows on grass blocks, podzol, dirt or coarse dirt= +Flammable= +Zombie view range: -50%= +Skeleton view range: -50%= +Creeper view range: -50%= diff --git a/mods/HELP/tt/locale/template.txt b/mods/HELP/tt/locale/template.txt index 488a0e26..b5f11762 100644 --- a/mods/HELP/tt/locale/template.txt +++ b/mods/HELP/tt/locale/template.txt @@ -4,10 +4,6 @@ Damage (@1): @2= Healing: @1= Healing (@1): @2= Full punch interval: @1s= -Food item= -+@1 satiation= -@1 satiation= -+@1 food points= Contact damage: @1 per second= Contact healing: @1 per second= Drowning damage: @1= @@ -22,6 +18,14 @@ No rising= Fall damage: @1%= Fall damage: +@1%= No fall damage= -Digs @1 blocks= -Digs @1 blocks instantly= -Minimum dig time: @1s= +Mining speed: @1= +Very fast= +Extremely fast= +Fast= +Slow= +Very slow= +Painfully slow= +Mining durability: @1= +Block breaking strength: @1= +@1 uses= +Unlimited uses= diff --git a/mods/HELP/tt/locale/tt.de.tr b/mods/HELP/tt/locale/tt.de.tr index b62daee1..508787de 100644 --- a/mods/HELP/tt/locale/tt.de.tr +++ b/mods/HELP/tt/locale/tt.de.tr @@ -4,10 +4,6 @@ Damage (@1): @2=Schaden (@1): @2 Healing: @1=Heilung: @1 Healing (@1): @2=Heilung (@1): @2 Full punch interval: @1s=Zeit zum Ausholen: @1s -Food item=Lebensmittel -+@1 satiation=+@1 Sättigung -@1 satiation=@1 Sättigung -+@1 food points=+@1 Nahrungspunkte Contact damage: @1 per second=Kontaktschaden: @1 pro Sekunde Contact healing: @1 per second=Kontaktheilung: @1 pro Sekunde Drowning damage: @1=Ertrinkensschaden: @1 @@ -22,6 +18,14 @@ No rising=Kein Aufsteigen Fall damage: @1%=Fallschaden: @1% Fall damage: +@1%=Fallschaden: +@1% No fall damage=Kein Fallschaden -Digs @1 blocks=Gräbt „@1“-Blöcke -Digs @1 blocks instantly=Gräbt „@1“-Blöcke sofort -Minimum dig time: @1s=Minimale Grabezeit: @1s +Mining speed: @1=Grabegeschwindigkeit: @1 +Very fast=Sehr schnell +Extremely fast=Extrem schnell +Fast=Schnell +Slow=Langsam +Very slow=Sehr langsam +Painfully slow=Furchtbar langsam +Mining durability: @1=Grabehaltbarkeit: @1 +Block breaking strength: @1=Blockbruchstärke: @1 +@1 uses=@1 Verwendungen +Unlimited uses=Unbegrenzte Verwendungen diff --git a/mods/ITEMS/REDSTONE/mcl_dispensers/init.lua b/mods/ITEMS/REDSTONE/mcl_dispensers/init.lua index 8e6c85a8..6e9add61 100644 --- a/mods/ITEMS/REDSTONE/mcl_dispensers/init.lua +++ b/mods/ITEMS/REDSTONE/mcl_dispensers/init.lua @@ -282,7 +282,7 @@ local dispenserdef = { local horizontal_def = table.copy(dispenserdef) horizontal_def.description = S("Dispenser") -horizontal_def._tt_help = S("9 inventory slots").."\n"..S("Launches item when powered with redstone power") +horizontal_def._tt_help = S("9 inventory slots").."\n"..S("Launches item when powered by redstone power") horizontal_def._doc_items_longdesc = S("A dispenser is a block which acts as a redstone component which, when powered with redstone power, dispenses an item. It has a container with 9 inventory slots.") horizontal_def._doc_items_usagehelp = S("Place the dispenser in one of 6 possible directions. The “hole” is where items will fly out of the dispenser. Use the dispenser to access its inventory. Insert the items you wish to dispense. Supply the dispenser with redstone energy once to dispense a random item.").."\n\n".. diff --git a/mods/ITEMS/REDSTONE/mcl_dispensers/locale/mcl_dispensers.de.tr b/mods/ITEMS/REDSTONE/mcl_dispensers/locale/mcl_dispensers.de.tr index 1fd2959d..129350e5 100644 --- a/mods/ITEMS/REDSTONE/mcl_dispensers/locale/mcl_dispensers.de.tr +++ b/mods/ITEMS/REDSTONE/mcl_dispensers/locale/mcl_dispensers.de.tr @@ -21,3 +21,5 @@ The dispenser will do different things, depending on the dispensed item:=Der Wer Downwards-Facing Dispenser=Nach unten zeigender Werfer Upwards-Facing Dispenser=Nach oben zeigender Werfer Inventory=Inventar +9 inventory slots=9 Inventarplätze +Launches item when powered by redstone power=Wirft Gegenstand aus, wenn mit Redstoneenergie versorgt diff --git a/mods/ITEMS/REDSTONE/mcl_dispensers/locale/template.txt b/mods/ITEMS/REDSTONE/mcl_dispensers/locale/template.txt index ad477dfd..91129aac 100644 --- a/mods/ITEMS/REDSTONE/mcl_dispensers/locale/template.txt +++ b/mods/ITEMS/REDSTONE/mcl_dispensers/locale/template.txt @@ -21,3 +21,5 @@ The dispenser will do different things, depending on the dispensed item:= Downwards-Facing Dispenser= Upwards-Facing Dispenser= Inventory= +9 inventory slots= +Launches item when powered by redstone power= diff --git a/mods/ITEMS/REDSTONE/mcl_droppers/init.lua b/mods/ITEMS/REDSTONE/mcl_droppers/init.lua index e3cbd45c..ed026e5f 100644 --- a/mods/ITEMS/REDSTONE/mcl_droppers/init.lua +++ b/mods/ITEMS/REDSTONE/mcl_droppers/init.lua @@ -147,7 +147,7 @@ local dropperdef = { local horizontal_def = table.copy(dropperdef) horizontal_def.description = S("Dropper") -horizontal_def._tt_help = S("9 inventory slots").."\n"..S("Drops item when powered with redstone power") +horizontal_def._tt_help = S("9 inventory slots").."\n"..S("Drops item when powered by redstone power") horizontal_def._doc_items_longdesc = S("A dropper is a redstone component and a container with 9 inventory slots which, when supplied with redstone power, drops an item or puts it into a container in front of it.") horizontal_def._doc_items_usagehelp = S("Droppers can be placed in 6 possible directions, items will be dropped out of the hole. Use the dropper to access its inventory. Supply it with redstone energy once to make the dropper drop or transfer a random item.") horizontal_def.after_place_node = function(pos, placer, itemstack, pointed_thing) diff --git a/mods/ITEMS/REDSTONE/mcl_droppers/locale/mcl_droppers.de.tr b/mods/ITEMS/REDSTONE/mcl_droppers/locale/mcl_droppers.de.tr index 526e48cd..a4eb2eb0 100644 --- a/mods/ITEMS/REDSTONE/mcl_droppers/locale/mcl_droppers.de.tr +++ b/mods/ITEMS/REDSTONE/mcl_droppers/locale/mcl_droppers.de.tr @@ -5,3 +5,5 @@ Droppers can be placed in 6 possible directions, items will be dropped out of th Downwards-Facing Dropper=Nach unten zeigender Spender Upwards-Facing Dropper=Nach oben zeigender Spender Inventory=Inventar +9 inventory slots=9 Inventarplätze +Drops item when powered by redstone power=Gibt einen Gegenstand aus, wenn mit Redstoneenergie versorgt diff --git a/mods/ITEMS/REDSTONE/mcl_droppers/locale/template.txt b/mods/ITEMS/REDSTONE/mcl_droppers/locale/template.txt index 48e6cc79..24b2bc10 100644 --- a/mods/ITEMS/REDSTONE/mcl_droppers/locale/template.txt +++ b/mods/ITEMS/REDSTONE/mcl_droppers/locale/template.txt @@ -5,3 +5,5 @@ Droppers can be placed in 6 possible directions, items will be dropped out of th Downwards-Facing Dropper= Upwards-Facing Dropper= Inventory= +9 inventory slots= +Drops item when powered by redstone power= diff --git a/mods/ITEMS/REDSTONE/mcl_observers/locale/mcl_observers.de.tr b/mods/ITEMS/REDSTONE/mcl_observers/locale/mcl_observers.de.tr index ef23ad49..3ce085ad 100644 --- a/mods/ITEMS/REDSTONE/mcl_observers/locale/mcl_observers.de.tr +++ b/mods/ITEMS/REDSTONE/mcl_observers/locale/mcl_observers.de.tr @@ -2,3 +2,4 @@ Observer=Wächter An observer is a redstone component which observes the block in front of it and sends a very short redstone pulse whenever this block changes.=Ein Wächter ist eine Redstonekomponente, die den Block vor ihm beobachtet und einen sehr kurzen Redstoneimpuls sendet, wenn sich dieser Block ändert. Place the observer directly in front of the block you want to observe with the “face” looking at the block. The arrow points to the side of the output, which is at the opposite side of the “face”. You can place your redstone dust or any other component here.=Platzieren Sie den Wächter direkt vor dem Block, den Sie beobachten wollen, so dass das „Gesicht“ zum Block schaut. Der Pfeil zeigt auf die Seite des Signalausgangs, der sich gegenüber vom „Gesicht“ befindet. Hier können Sie Ihren Restonestaub oder eine beliebige andere Komponente platzieren. +Emits redstone pulse when block in front changes=Macht einen Redstonepuls, wenn der Block vor ihm sich ändert diff --git a/mods/ITEMS/REDSTONE/mcl_observers/locale/template.txt b/mods/ITEMS/REDSTONE/mcl_observers/locale/template.txt index 40dbfd71..7f599150 100644 --- a/mods/ITEMS/REDSTONE/mcl_observers/locale/template.txt +++ b/mods/ITEMS/REDSTONE/mcl_observers/locale/template.txt @@ -2,3 +2,4 @@ Observer= An observer is a redstone component which observes the block in front of it and sends a very short redstone pulse whenever this block changes.= Place the observer directly in front of the block you want to observe with the “face” looking at the block. The arrow points to the side of the output, which is at the opposite side of the “face”. You can place your redstone dust or any other component here.= +Emits redstone pulse when block in front changes= diff --git a/mods/ITEMS/REDSTONE/mesecons_button/locale/mesecons_button.de.tr b/mods/ITEMS/REDSTONE/mesecons_button/locale/mesecons_button.de.tr index 60d64437..9b311b9a 100644 --- a/mods/ITEMS/REDSTONE/mesecons_button/locale/mesecons_button.de.tr +++ b/mods/ITEMS/REDSTONE/mesecons_button/locale/mesecons_button.de.tr @@ -9,3 +9,6 @@ Dark Oak Button=Schwarzeichenknopf Spruce Button=Fichtenknopf Jungle Button=Dschungelknopf A wooden button is a redstone component made out of wood which can be pushed to provide redstone power. When pushed, it powers adjacent redstone components for 1.5 seconds. Wooden buttons may also be pushed by arrows.=Ein Holzknopf ist eine Redstonekomponente aus Holz. Er kann gedrückt werden, um ein Redstonesignal zu senden. Im gedrückten Zustand versorgt er benachbarte Redstonekomponenten für 1,5 Sekunden mit Redstoneenergie. Holzknöpfe können auch von Pfeilen gedrückt werden. +Provides redstone power when pushed=Gibt Redstoneenergie, wenn gedrückt +Push duration: @1s=Druckdauer: @1s +Pushable by arrow=Drückbar von Pfeilen diff --git a/mods/ITEMS/REDSTONE/mesecons_button/locale/template.txt b/mods/ITEMS/REDSTONE/mesecons_button/locale/template.txt index 5ae22b59..4c352b87 100644 --- a/mods/ITEMS/REDSTONE/mesecons_button/locale/template.txt +++ b/mods/ITEMS/REDSTONE/mesecons_button/locale/template.txt @@ -9,3 +9,6 @@ Dark Oak Button= Spruce Button= Jungle Button= A wooden button is a redstone component made out of wood which can be pushed to provide redstone power. When pushed, it powers adjacent redstone components for 1.5 seconds. Wooden buttons may also be pushed by arrows.= +Provides redstone power when pushed= +Push duration: @1s= +Pushable by arrow= diff --git a/mods/ITEMS/REDSTONE/mesecons_commandblock/locale/mesecons_commandblock.de.tr b/mods/ITEMS/REDSTONE/mesecons_commandblock/locale/mesecons_commandblock.de.tr index 35df4998..d114a47b 100644 --- a/mods/ITEMS/REDSTONE/mesecons_commandblock/locale/mesecons_commandblock.de.tr +++ b/mods/ITEMS/REDSTONE/mesecons_commandblock/locale/mesecons_commandblock.de.tr @@ -26,3 +26,4 @@ Example 2:@n give @@n mcl_core:apple 5@nGives the nearest player 5 apples=2. Access denied. You need the “maphack” privilege to edit command blocks.=Zugriff verweigert. Sie brauchen das „maphack“-Privileg, um Befehlsblöcke zu bearbeiten. Editing the command block has failed! You can only change the command block in Creative Mode!=Bearbeitung des Befehlsblocks fehlgeschlagen! Sie können den Befehlsblock nur im Kreativmodus ändern! Editing the command block has failed! The command block is gone.=Bearbeiten des Befehlsblocks fehlgeschlagen! Der Befehlsblock ist verschwunden. +Executes server commands when powered by redstone power=Führt Serverbefehle aus, wenn mit Redstoneenergie versorgt diff --git a/mods/ITEMS/REDSTONE/mesecons_commandblock/locale/template.txt b/mods/ITEMS/REDSTONE/mesecons_commandblock/locale/template.txt index ffa7d2ab..c03e0d1d 100644 --- a/mods/ITEMS/REDSTONE/mesecons_commandblock/locale/template.txt +++ b/mods/ITEMS/REDSTONE/mesecons_commandblock/locale/template.txt @@ -26,3 +26,4 @@ Example 2:@n give @@n mcl_core:apple 5@nGives the nearest player 5 apples= Access denied. You need the “maphack” privilege to edit command blocks.= Editing the command block has failed! You can only change the command block in Creative Mode!= Editing the command block has failed! The command block is gone.= +Executes server commands when powered by redstone power= diff --git a/mods/ITEMS/REDSTONE/mesecons_delayer/init.lua b/mods/ITEMS/REDSTONE/mesecons_delayer/init.lua index 724fb77b..80489814 100644 --- a/mods/ITEMS/REDSTONE/mesecons_delayer/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons_delayer/init.lua @@ -184,7 +184,9 @@ end local help, tt, longdesc, usagehelp, icon, on_construct if i == 1 then help = true - tt = S("Redstone component").."\n"..S("Restricts power to one direction").."\n"..S("Delays signal").."\n"..S("Output can be locked") + tt = S("Transmits redstone power only in one direction").."\n".. + S("Delays signal").."\n".. + S("Output locks when getting active redstone repeater signal from the side") longdesc = S("Redstone repeaters are versatile redstone components with multiple purposes: 1. They only allow signals to travel in one direction. 2. They delay the signal. 3. Optionally, they can lock their output in one state.") usagehelp = S("To power a redstone repeater, send a signal in “arrow” direction (the input). The signal goes out on the opposite side (the output) with a delay. To change the delay, use the redstone repeater. The delay is between 0.1 and 0.4 seconds long and can be changed in steps of 0.1 seconds. It is indicated by the position of the moving redstone torch.").."\n".. S("To lock a repeater, send a signal from an adjacent repeater into one of its sides. While locked, the moving redstone torch disappears, the output doesn't change and the input signal is ignored.") diff --git a/mods/ITEMS/REDSTONE/mesecons_delayer/locale/mesecons_delayer.de.tr b/mods/ITEMS/REDSTONE/mesecons_delayer/locale/mesecons_delayer.de.tr index 0d50d6e5..45c95952 100644 --- a/mods/ITEMS/REDSTONE/mesecons_delayer/locale/mesecons_delayer.de.tr +++ b/mods/ITEMS/REDSTONE/mesecons_delayer/locale/mesecons_delayer.de.tr @@ -8,3 +8,6 @@ Redstone Repeater (Locked)=Redstoneverstärker (gesperrt) Redstone Repeater (Locked, Powered)=Redstoneverstärker (gesperrt, bestromt) Redstone Repeater (Delay @1)=Redstoneverstärker (Verzögerung @1) Redstone Repeater (Delay @1, Powered)=Redstoneverstärker (Verzögerung @1, bestromt) +Transmits redstone power only in one direction=Überträgt Redstoneenergie in nur eine Richtung +Delays signal=Verzögert Signal +Output locks when getting active redstone repeater signal from the side=Ausgangssignal wird gesperrt, wenn Signal von aktivem Redstoneverstärker an der Seite erhalten diff --git a/mods/ITEMS/REDSTONE/mesecons_delayer/locale/template.txt b/mods/ITEMS/REDSTONE/mesecons_delayer/locale/template.txt index 90460893..58012480 100644 --- a/mods/ITEMS/REDSTONE/mesecons_delayer/locale/template.txt +++ b/mods/ITEMS/REDSTONE/mesecons_delayer/locale/template.txt @@ -8,3 +8,6 @@ Redstone Repeater (Locked)= Redstone Repeater (Locked, Powered)= Redstone Repeater (Delay @1)= Redstone Repeater (Delay @1, Powered)= +Transmits redstone power only in one direction= +Delays signal= +Output locks when getting active redstone repeater signal from the side= diff --git a/mods/ITEMS/REDSTONE/mesecons_lightstone/locale/mesecons_lightstone.de.tr b/mods/ITEMS/REDSTONE/mesecons_lightstone/locale/mesecons_lightstone.de.tr index 44b52180..a0cfc221 100644 --- a/mods/ITEMS/REDSTONE/mesecons_lightstone/locale/mesecons_lightstone.de.tr +++ b/mods/ITEMS/REDSTONE/mesecons_lightstone/locale/mesecons_lightstone.de.tr @@ -1,3 +1,4 @@ # textdomain: mesecons_lightstone Redstone Lamp=Redstonelampe Redstone lamps are simple redstone components which glow brightly (light level @1) when they receive redstone power.=Redstonelampen sind einfache Redstonekomponenten, die hell aufleuchten (Helligkeitspegel von @1), wenn sie Redstoneenergie erhalten. +Glows when powered by redstone power=Leuchtet, wenn mit Redstoneenergie versorgt diff --git a/mods/ITEMS/REDSTONE/mesecons_lightstone/locale/template.txt b/mods/ITEMS/REDSTONE/mesecons_lightstone/locale/template.txt index b8a5bf4d..2d2cc419 100644 --- a/mods/ITEMS/REDSTONE/mesecons_lightstone/locale/template.txt +++ b/mods/ITEMS/REDSTONE/mesecons_lightstone/locale/template.txt @@ -1,3 +1,4 @@ # textdomain: mesecons_lightstone Redstone Lamp= Redstone lamps are simple redstone components which glow brightly (light level @1) when they receive redstone power.= +Glows when powered by redstone power= diff --git a/mods/ITEMS/REDSTONE/mesecons_noteblock/locale/mesecons_noteblock.de.tr b/mods/ITEMS/REDSTONE/mesecons_noteblock/locale/mesecons_noteblock.de.tr index 27282396..1c8a8b05 100644 --- a/mods/ITEMS/REDSTONE/mesecons_noteblock/locale/mesecons_noteblock.de.tr +++ b/mods/ITEMS/REDSTONE/mesecons_noteblock/locale/mesecons_noteblock.de.tr @@ -8,3 +8,4 @@ Use the note block to choose the next musical note (there are 25 semitones, or 2 • Sand or gravel: Snare drum=• Sand oder Kies: Kleine Trommel • Anything else: Piano=• Alles andere: Klavier The note block will only play a note when it is below air, otherwise, it stays silent.=Der Notenblock wird nur eine Note spielen, wenn er sich unter Luft befindet, sonst bleibt er stumm. +Plays a musical note when powered by redstone power=Spielt eine Musiknote, wenn mit Redstoneenergie versorgt diff --git a/mods/ITEMS/REDSTONE/mesecons_noteblock/locale/template.txt b/mods/ITEMS/REDSTONE/mesecons_noteblock/locale/template.txt index c1d7dc02..a1d9db84 100644 --- a/mods/ITEMS/REDSTONE/mesecons_noteblock/locale/template.txt +++ b/mods/ITEMS/REDSTONE/mesecons_noteblock/locale/template.txt @@ -8,3 +8,4 @@ Use the note block to choose the next musical note (there are 25 semitones, or 2 • Sand or gravel: Snare drum= • Anything else: Piano= The note block will only play a note when it is below air, otherwise, it stays silent.= +Plays a musical note when powered by redstone power= diff --git a/mods/ITEMS/REDSTONE/mesecons_pistons/locale/mesecons_pistons.de.tr b/mods/ITEMS/REDSTONE/mesecons_pistons/locale/mesecons_pistons.de.tr index cebf8461..9719812b 100644 --- a/mods/ITEMS/REDSTONE/mesecons_pistons/locale/mesecons_pistons.de.tr +++ b/mods/ITEMS/REDSTONE/mesecons_pistons/locale/mesecons_pistons.de.tr @@ -4,3 +4,5 @@ Piston=Kolben A piston is a redstone component with a pusher which pushes the block or blocks in front of it when it is supplied with redstone power. Not all blocks can be pushed, however.=Ein Kolben ist eine Redstonekomponente mit einem Schieber den Block oder die Blöcke vor ihm schieben wird, wenn er mit Redstoneenergie versorgt wird. Allerdings können nicht alle Blöcke können geschoben werden. Sticky Piston=Klebriger Kolben A sticky piston is a redstone component with a sticky pusher which can be extended and retracted. It extends when it is supplied with redstone power. When the pusher extends, it pushes the block or blocks in front of it. When it retracts, it pulls back the single block in front of it. Note that not all blocks can be pushed or pulled.=Ein klebriger Kolben ist eine Redstonekomponente mit einem klebrigen Schieber, der ein- und ausgefahren werden kann. Er fährt aus, wenn er mit Redstoneenergie versorgt wird. Wenn der Schieber ausgefahren wird, schiebt er den Block oder die Blöcke vor ihm. Wird er eingefahren, zieht er den Block vor ihm zu sich. Nicht alle Blöcke können geschoben oder gezogen werden. +Pushes block when powered by redstone power=Schiebt Block, wenn mit Redstoneenergie versorgt +Pushes or pulls block when powered by redstone power=Schiebt oder zieht Block, wenn mit Redstoneenergie versorgt diff --git a/mods/ITEMS/REDSTONE/mesecons_pistons/locale/template.txt b/mods/ITEMS/REDSTONE/mesecons_pistons/locale/template.txt index 2cdd6512..6b54c584 100644 --- a/mods/ITEMS/REDSTONE/mesecons_pistons/locale/template.txt +++ b/mods/ITEMS/REDSTONE/mesecons_pistons/locale/template.txt @@ -4,3 +4,5 @@ Piston= A piston is a redstone component with a pusher which pushes the block or blocks in front of it when it is supplied with redstone power. Not all blocks can be pushed, however.= Sticky Piston= A sticky piston is a redstone component with a sticky pusher which can be extended and retracted. It extends when it is supplied with redstone power. When the pusher extends, it pushes the block or blocks in front of it. When it retracts, it pulls back the single block in front of it. Note that not all blocks can be pushed or pulled.= +Pushes block when powered by redstone power= +Pushes or pulls block when powered by redstone power= diff --git a/mods/ITEMS/REDSTONE/mesecons_pressureplates/init.lua b/mods/ITEMS/REDSTONE/mesecons_pressureplates/init.lua index 7bc6e2e3..2c8c20bf 100644 --- a/mods/ITEMS/REDSTONE/mesecons_pressureplates/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons_pressureplates/init.lua @@ -101,13 +101,13 @@ function mesecon.register_pressure_plate(basename, description, textures_off, te end local tt = S("Provides redstone power when pushed") if not activated_by then - tt = tt .. "\n" .. S("Pushed by players, mobs and objects") + tt = tt .. "\n" .. S("Pushable by players, mobs and objects") elseif activated_by.mob and activated_by.player then - tt = tt .. "\n" .. S("Pushed by players and mobs") + tt = tt .. "\n" .. S("Pushable by players and mobs") elseif activated_by.mob then - tt = tt .. "\n" .. S("Pushed by mobs") + tt = tt .. "\n" .. S("Pushable by mobs") elseif activated_by.player then - tt = tt .. "\n" .. S("Pushed by players") + tt = tt .. "\n" .. S("Pushable by players") end mesecon.register_node(basename, { diff --git a/mods/ITEMS/REDSTONE/mesecons_pressureplates/locale/mesecons_pressureplates.de.tr b/mods/ITEMS/REDSTONE/mesecons_pressureplates/locale/mesecons_pressureplates.de.tr index 678e061c..6e5e761e 100644 --- a/mods/ITEMS/REDSTONE/mesecons_pressureplates/locale/mesecons_pressureplates.de.tr +++ b/mods/ITEMS/REDSTONE/mesecons_pressureplates/locale/mesecons_pressureplates.de.tr @@ -9,4 +9,8 @@ Jungle Pressure Plate=Dschungeldruckplatte A wooden pressure plate is a redstone component which supplies its surrounding blocks with redstone power while any movable object (including dropped items, players and mobs) rests on top of it.=Eine Holzdruckplatte ist eine Redstonekomponente, die ihre benachbarten Blöcke mit Redstoneenergie versorgt, solange sich ein beliebiges bewegliches Objekt (wie Gegenstände, Spieler und Mobs) auf ihm befindet. Stone Pressure Plate=Steindruckplatte A stone pressure plate is a redstone component which supplies its surrounding blocks with redstone power while a player or mob stands on top of it. It is not triggered by anything else.=Eine Steindruckplatte ist eine Redstonekomponente, die ihre benachbarten Blöcke mit Redstoneenergie versorgt, solange sich ein Spieler oder Mob auf ihm befindet. Sie wird von nichts anderem ausgelöst. - +Provides redstone power when pushed=Gibt Redstoneenergie aus, wenn gedrückt +Pushable by players, mobs and objects=Drückbar von Spielern, Mobs und Objekten +Pushable by players and mobs=Drückbar von Spielern und Mobs +Pushable by players=Drückbar von Spielern +Pushable by mobs=Drückbar von Mobs diff --git a/mods/ITEMS/REDSTONE/mesecons_pressureplates/locale/template.txt b/mods/ITEMS/REDSTONE/mesecons_pressureplates/locale/template.txt index 0927706c..96eb3f92 100644 --- a/mods/ITEMS/REDSTONE/mesecons_pressureplates/locale/template.txt +++ b/mods/ITEMS/REDSTONE/mesecons_pressureplates/locale/template.txt @@ -9,3 +9,8 @@ Jungle Pressure Plate= A wooden pressure plate is a redstone component which supplies its surrounding blocks with redstone power while any movable object (including dropped items, players and mobs) rests on top of it.= Stone Pressure Plate= A stone pressure plate is a redstone component which supplies its surrounding blocks with redstone power while a player or mob stands on top of it. It is not triggered by anything else.= +Provides redstone power when pushed= +Pushable by players, mobs and objects= +Pushable by players and mobs= +Pushable by players= +Pushable by mobs= diff --git a/mods/ITEMS/REDSTONE/mesecons_solarpanel/locale/mesecons_solarpanel.de.tr b/mods/ITEMS/REDSTONE/mesecons_solarpanel/locale/mesecons_solarpanel.de.tr index b9272882..c33fe949 100644 --- a/mods/ITEMS/REDSTONE/mesecons_solarpanel/locale/mesecons_solarpanel.de.tr +++ b/mods/ITEMS/REDSTONE/mesecons_solarpanel/locale/mesecons_solarpanel.de.tr @@ -4,3 +4,5 @@ Daylight sensors are redstone components which provide redstone power when they Inverted Daylight Sensor=Invertierter Tageslichtsensor Use the daylight sensor to toggle its state.=Benutzen Sie den Tageslichtsensor, um seinen Zustand umzuschalten. In inverted state, they provide redstone power when they are not in sunlight and no power otherwise.=Im invertierten Zustand erzeugen sie Redstoneenergie, wenn sie sich nicht im Tageslicht befinden, ansonsten nicht. +Provides redstone power when in sunlight=Gibt Redstoneenergie aus, wenn im Sonnenlicht +Can be inverted=Kann invertiert werden diff --git a/mods/ITEMS/REDSTONE/mesecons_solarpanel/locale/template.txt b/mods/ITEMS/REDSTONE/mesecons_solarpanel/locale/template.txt index b776f507..84c3ce42 100644 --- a/mods/ITEMS/REDSTONE/mesecons_solarpanel/locale/template.txt +++ b/mods/ITEMS/REDSTONE/mesecons_solarpanel/locale/template.txt @@ -4,3 +4,5 @@ Daylight sensors are redstone components which provide redstone power when they Use the daylight sensor to toggle its state.= Inverted Daylight Sensor= In inverted state, they provide redstone power when they are not in sunlight and no power otherwise.= +Provides redstone power when in sunlight= +Can be inverted= diff --git a/mods/ITEMS/REDSTONE/mesecons_torch/locale/mesecons_torch.de.tr b/mods/ITEMS/REDSTONE/mesecons_torch/locale/mesecons_torch.de.tr index c10fb7dc..7f3f94c5 100644 --- a/mods/ITEMS/REDSTONE/mesecons_torch/locale/mesecons_torch.de.tr +++ b/mods/ITEMS/REDSTONE/mesecons_torch/locale/mesecons_torch.de.tr @@ -6,3 +6,5 @@ A redstone torch is a redstone component which can be used to invert a redstone Redstone torches can be placed at the side and on the top of full solid opaque blocks.=Redstonefackeln können an der Seite und auf der Oberseite der meisten undurchsichtigen ganzen Blöcke platziert werden. Block of Redstone=Redstoneblock A block of redstone permanently supplies redstone power to its surrounding blocks.=Ein Redstoneblock versorgt seine benachbarten Blöcke beständig mit Redstoneenergie. +Provides redstone power when it's not powered itself=Gibt Redstoneenergie aus, wenn es nicht selbst bestromt ist +Provides redstone power=Gibt Redstoneenergie aus diff --git a/mods/ITEMS/REDSTONE/mesecons_torch/locale/template.txt b/mods/ITEMS/REDSTONE/mesecons_torch/locale/template.txt index 387462c9..8cde3ad6 100644 --- a/mods/ITEMS/REDSTONE/mesecons_torch/locale/template.txt +++ b/mods/ITEMS/REDSTONE/mesecons_torch/locale/template.txt @@ -6,3 +6,5 @@ A redstone torch is a redstone component which can be used to invert a redstone Redstone torches can be placed at the side and on the top of full solid opaque blocks.= Block of Redstone= A block of redstone permanently supplies redstone power to its surrounding blocks.= +Provides redstone power when it's not powered itself= +Provides redstone power= diff --git a/mods/ITEMS/REDSTONE/mesecons_walllever/init.lua b/mods/ITEMS/REDSTONE/mesecons_walllever/init.lua index e7132796..09dd768b 100644 --- a/mods/ITEMS/REDSTONE/mesecons_walllever/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons_walllever/init.lua @@ -47,7 +47,7 @@ minetest.register_node("mesecons_walllever:wall_lever_off", { groups = {handy=1, dig_by_water=1, destroy_by_lava_flow=1, dig_by_piston=1, attached_node_facedir=1}, is_ground_content = false, description=S("Lever"), - _tt_help = S("Provides redstone power when flipped on"), + _tt_help = S("Provides redstone power while it's turned on"), _doc_items_longdesc = S("A lever is a redstone component which can be flipped on and off. It supplies redstone power to adjacent blocks while it is in the “on” state."), _doc_items_usagehelp = S("Use the lever to flip it on or off."), on_rightclick = function (pos, node) diff --git a/mods/ITEMS/REDSTONE/mesecons_walllever/locale/mesecons_walllever.de.tr b/mods/ITEMS/REDSTONE/mesecons_walllever/locale/mesecons_walllever.de.tr index 053f8191..27a3bb55 100644 --- a/mods/ITEMS/REDSTONE/mesecons_walllever/locale/mesecons_walllever.de.tr +++ b/mods/ITEMS/REDSTONE/mesecons_walllever/locale/mesecons_walllever.de.tr @@ -2,3 +2,4 @@ Lever=Hebel A lever is a redstone component which can be flipped on and off. It supplies redstone power to adjacent blocks while it is in the “on” state.=Ein Hebel ist eine Redstonekomponente, die ein- und ausgeschaltet werden kann. Er versorgt seine benachbarten Blöcke mit Redstoneenergie, solange er sich im eingeschalteten Zustand befindet. Use the lever to flip it on or off.=Benutzen Sie den Hebel, um ihn ein- oder auszuschalten. +Provides redstone power while it's turned on=Gibt Redstoneenergie aus, während er eingeschaltet ist diff --git a/mods/ITEMS/REDSTONE/mesecons_walllever/locale/template.txt b/mods/ITEMS/REDSTONE/mesecons_walllever/locale/template.txt index 59988e90..0187e6d2 100644 --- a/mods/ITEMS/REDSTONE/mesecons_walllever/locale/template.txt +++ b/mods/ITEMS/REDSTONE/mesecons_walllever/locale/template.txt @@ -2,3 +2,4 @@ Lever= A lever is a redstone component which can be flipped on and off. It supplies redstone power to adjacent blocks while it is in the “on” state.= Use the lever to flip it on or off.= +Provides redstone power while it's turned on= diff --git a/mods/ITEMS/REDSTONE/mesecons_wires/locale/mesecons_wires.de.tr b/mods/ITEMS/REDSTONE/mesecons_wires/locale/mesecons_wires.de.tr index 0fa27836..d6d82e8e 100644 --- a/mods/ITEMS/REDSTONE/mesecons_wires/locale/mesecons_wires.de.tr +++ b/mods/ITEMS/REDSTONE/mesecons_wires/locale/mesecons_wires.de.tr @@ -8,3 +8,4 @@ Redstone=Redstone Powered Redstone Spot (@1)=Bestromter Redstoneklecks (@1) Redstone Trail (@1)=Redstonespur (@1) Powered Redstone Trail (@1)=Bestromte Redstonespur (@1) +Transmits redstone power, powers mechanisms=Überträgt Redstoneenergie, bestromt Mechanismen diff --git a/mods/ITEMS/REDSTONE/mesecons_wires/locale/template.txt b/mods/ITEMS/REDSTONE/mesecons_wires/locale/template.txt index 632a3eef..91e6bdee 100644 --- a/mods/ITEMS/REDSTONE/mesecons_wires/locale/template.txt +++ b/mods/ITEMS/REDSTONE/mesecons_wires/locale/template.txt @@ -8,3 +8,4 @@ Redstone= Powered Redstone Spot (@1)= Redstone Trail (@1)= Powered Redstone Trail (@1)= +Transmits redstone power, powers mechanisms= diff --git a/mods/ITEMS/mcl_beds/locale/mcl_beds.de.tr b/mods/ITEMS/mcl_beds/locale/mcl_beds.de.tr index 079951c8..16592115 100644 --- a/mods/ITEMS/mcl_beds/locale/mcl_beds.de.tr +++ b/mods/ITEMS/mcl_beds/locale/mcl_beds.de.tr @@ -38,3 +38,4 @@ Note: Night skip is disabled.=Anmerkung: Überspringen der Nacht deaktiviert. You're sleeping.=Sie schlafen. You will fall asleep when all players are in bed.=Sie werden einschlafen, wenn alle Spieler im Bett sind. You're in bed.=Sie sind im Bett. +Allows you to sleep=Zum Einschafen diff --git a/mods/ITEMS/mcl_beds/locale/template.txt b/mods/ITEMS/mcl_beds/locale/template.txt index 9664c800..d18fbe5d 100644 --- a/mods/ITEMS/mcl_beds/locale/template.txt +++ b/mods/ITEMS/mcl_beds/locale/template.txt @@ -38,3 +38,4 @@ Note: Night skip is disabled.= You're sleeping.= You will fall asleep when all players are in bed.= You're in bed.= +Allows you to sleep= diff --git a/mods/ITEMS/mcl_books/locale/mcl_books.de.tr b/mods/ITEMS/mcl_books/locale/mcl_books.de.tr index c4613fd9..df51c185 100644 --- a/mods/ITEMS/mcl_books/locale/mcl_books.de.tr +++ b/mods/ITEMS/mcl_books/locale/mcl_books.de.tr @@ -23,3 +23,4 @@ To copy the text of the written book, place it into the crafting grid together w Bookshelf=Bücherregal Bookshelves are used for decoration.=Bücherregale werden zur Dekoration benutzt. Book and Quill=Buch und Federkiel +Write down some notes=Zum Aufschreiben von Notizen diff --git a/mods/ITEMS/mcl_books/locale/template.txt b/mods/ITEMS/mcl_books/locale/template.txt index 22c4dae9..8667d1f0 100644 --- a/mods/ITEMS/mcl_books/locale/template.txt +++ b/mods/ITEMS/mcl_books/locale/template.txt @@ -25,3 +25,4 @@ To copy the text of the written book, place it into the crafting grid together w Bookshelf= Bookshelves are used for decoration.= Book and Quill= +Write down some notes= diff --git a/mods/ITEMS/mcl_bows/bow.lua b/mods/ITEMS/mcl_bows/bow.lua index 68de5987..30292f4f 100644 --- a/mods/ITEMS/mcl_bows/bow.lua +++ b/mods/ITEMS/mcl_bows/bow.lua @@ -98,7 +98,7 @@ end -- Bow item, uncharged state minetest.register_tool("mcl_bows:bow", { description = S("Bow"), - _tt_help = S("Launch arrows"), + _tt_help = S("Launches arrows"), _doc_items_longdesc = S("Bows are ranged weapons to shoot arrows at your foes.").."\n".. S("The speed and damage of the arrow increases the longer you charge. The regular damage of the arrow is between 1 and 9. At full charge, there's also a 20% of a critical hit, dealing 10 damage instead."), _doc_items_usagehelp = S("To use the bow, you first need to have at least one arrow anywhere in your inventory (unless in Creative Mode). Hold down the right mouse button to charge, release to shoot."), diff --git a/mods/ITEMS/mcl_bows/locale/mcl_bows.de.tr b/mods/ITEMS/mcl_bows/locale/mcl_bows.de.tr index 4ca45c0e..c3b42681 100644 --- a/mods/ITEMS/mcl_bows/locale/mcl_bows.de.tr +++ b/mods/ITEMS/mcl_bows/locale/mcl_bows.de.tr @@ -9,3 +9,7 @@ Bows are ranged weapons to shoot arrows at your foes.=Bogen sind Fernwaffen, um The speed and damage of the arrow increases the longer you charge. The regular damage of the arrow is between 1 and 9. At full charge, there's also a 20% of a critical hit, dealing 10 damage instead.=Die Geschwindigkeit und der Schaden des Bogens erhöht sich, je länger sie den Bogen spannen. Der reguläre Schaden des Pfeiles ist zwischen 1 und 9. Ist der Bogen voll gespannt, gibt es eine 20%-ig Change für einen kritischen Treffer, der 10 Schaden anrichtet. To use the bow, you first need to have at least one arrow anywhere in your inventory (unless in Creative Mode). Hold down the right mouse button to charge, release to shoot.=Um den Bogen zu benutzen, muss sich im Inventar mindestens ein Pfeil befinden (außer im Kreativmodus). Halten sie die rechte Maustaste gedrückt zum Spannen, lassen Sie sie los zum Schießen. Bow=Bogen +Ammunition=Munition +Damage from bow: 1-10=Schaden vom Bogen: 1-10 +Damage from dispenser: 3=Schaden vom Werfer: 3 +Launches arrows=Verschießt Pfeile diff --git a/mods/ITEMS/mcl_bows/locale/template.txt b/mods/ITEMS/mcl_bows/locale/template.txt index c6c91b44..228b6170 100644 --- a/mods/ITEMS/mcl_bows/locale/template.txt +++ b/mods/ITEMS/mcl_bows/locale/template.txt @@ -9,3 +9,7 @@ Bows are ranged weapons to shoot arrows at your foes.= The speed and damage of the arrow increases the longer you charge. The regular damage of the arrow is between 1 and 9. At full charge, there's also a 20% of a critical hit, dealing 10 damage instead.= To use the bow, you first need to have at least one arrow anywhere in your inventory (unless in Creative Mode). Hold down the right mouse button to charge, release to shoot.= Bow= +Ammunition= +Damage from bow: 1-10= +Damage from dispenser: 3= +Launches arrows= diff --git a/mods/ITEMS/mcl_buckets/locale/mcl_buckets.de.tr b/mods/ITEMS/mcl_buckets/locale/mcl_buckets.de.tr index 26bb4ca4..99d07109 100644 --- a/mods/ITEMS/mcl_buckets/locale/mcl_buckets.de.tr +++ b/mods/ITEMS/mcl_buckets/locale/mcl_buckets.de.tr @@ -11,3 +11,7 @@ Place it to empty the bucket and create a water source.=Platzieren Sie ihn, um d River Water Bucket=Flusswassereimer A bucket can be used to collect and release liquids. This one is filled with river water.=Ein Eimer kann benutzt werden, um Flüssigkeiten aufzusammeln und wieder freizulassen. Dieser hier ist mit Flusswasser gefüllt. Place it to empty the bucket and create a river water source.=Platzieren Sie ihn, um den Eimer zu leeren und eine Flusswasserquelle zu erzeugen. +Collects liquids=Sammelt Flüssigkeiten auf +Places a lava source=Platziert eine Lavaquelle +Places a water source=Platziert eine Wasserquelle +Places a river water source=Platziert eine Flusswasserquelle diff --git a/mods/ITEMS/mcl_buckets/locale/template.txt b/mods/ITEMS/mcl_buckets/locale/template.txt index 6ad479fe..174d1b76 100644 --- a/mods/ITEMS/mcl_buckets/locale/template.txt +++ b/mods/ITEMS/mcl_buckets/locale/template.txt @@ -11,3 +11,7 @@ Place it to empty the bucket and create a water source.= River Water Bucket= A bucket can be used to collect and release liquids. This one is filled with river water.= Place it to empty the bucket and create a river water source.= +Collects liquids= +Places a lava source= +Places a water source= +Places a river water source= diff --git a/mods/ITEMS/mcl_cake/locale/mcl_cake.de.tr b/mods/ITEMS/mcl_cake/locale/mcl_cake.de.tr index 204f0d4a..f5af4f30 100644 --- a/mods/ITEMS/mcl_cake/locale/mcl_cake.de.tr +++ b/mods/ITEMS/mcl_cake/locale/mcl_cake.de.tr @@ -8,3 +8,5 @@ Cake (4 Slices Left)=Kuchen (4 Stücke übrig) Cake (3 Slices Left)=Kuchen (3 Stücke übrig) Cake (2 Slices Left)=Kuchen (2 Stücke übrig) Cake (1 Slice Left)=Kuchen (1 Stück übrig) +With 7 tasty slices!=Mit 7 leckeren Stücken! +Hunger points: +@1 per slice=Hungerpunkte: +@1 pro Stück diff --git a/mods/ITEMS/mcl_cake/locale/template.txt b/mods/ITEMS/mcl_cake/locale/template.txt index 921f9612..080e7395 100644 --- a/mods/ITEMS/mcl_cake/locale/template.txt +++ b/mods/ITEMS/mcl_cake/locale/template.txt @@ -8,3 +8,5 @@ Cake (4 Slices Left)= Cake (3 Slices Left)= Cake (2 Slices Left)= Cake (1 Slice Left)= +With 7 tasty slices!= +Hunger points: +@1 per slice= diff --git a/mods/ITEMS/mcl_cauldrons/locale/mcl_cauldrons.de.tr b/mods/ITEMS/mcl_cauldrons/locale/mcl_cauldrons.de.tr index 0e3a4c41..72432b04 100644 --- a/mods/ITEMS/mcl_cauldrons/locale/mcl_cauldrons.de.tr +++ b/mods/ITEMS/mcl_cauldrons/locale/mcl_cauldrons.de.tr @@ -8,3 +8,4 @@ Cauldron (3/3 Water)=Kessel (3/3 Wasser) Cauldron (1/3 River Water)=Kessel (1/3 Wasser) Cauldron (2/3 River Water)=Kessel (2/3 Flusswasser) Cauldron (3/3 River Water)=Kessel (3/3 Flusswasser) +Stores water=Speichert Wasser diff --git a/mods/ITEMS/mcl_cauldrons/locale/template.txt b/mods/ITEMS/mcl_cauldrons/locale/template.txt index 426d7d69..b4385631 100644 --- a/mods/ITEMS/mcl_cauldrons/locale/template.txt +++ b/mods/ITEMS/mcl_cauldrons/locale/template.txt @@ -8,3 +8,4 @@ Cauldron (3/3 Water)= Cauldron (1/3 River Water)= Cauldron (2/3 River Water)= Cauldron (3/3 River Water)= +Stores water= diff --git a/mods/ITEMS/mcl_chests/init.lua b/mods/ITEMS/mcl_chests/init.lua index b24bc0ca..cbff97b5 100644 --- a/mods/ITEMS/mcl_chests/init.lua +++ b/mods/ITEMS/mcl_chests/init.lua @@ -109,7 +109,7 @@ minetest.register_node("mcl_chests:"..basename, { local meta = minetest.get_meta(pos) --[[ This is a workaround for Minetest issue 5894 . - Apparently if we don't do this, double chests initially don't work when + Apparently if we don't do this, large chests initially don't work when placed at chunk borders, and some chests randomly don't work after placing. ]] -- FIXME: Remove this workaround when the bug has been fixed. @@ -490,7 +490,7 @@ register_chest("chest", S("Chest"), S("Chests are containers which provide 27 inventory slots. Chests can be turned into large chests with double the capacity by placing two chests next to each other."), chestusage, - S("27 inventory slots") .. "\n" .. S("Can be combined to a double chest"), + S("27 inventory slots") .. "\n" .. S("Can be combined to a large chest"), { small = {"default_chest_top.png", "mcl_chests_chest_bottom.png", "mcl_chests_chest_right.png", "mcl_chests_chest_left.png", @@ -521,7 +521,7 @@ register_chest("trapped_chest", S("Trapped Chest"), S("A trapped chest is a container which provides 27 inventory slots. When it is opened, it sends a redstone signal to its adjacent blocks as long it stays open. Trapped chests can be turned into large trapped chests with double the capacity by placing two trapped chests next to each other."), chestusage, - S("27 inventory slots") .. "\n" .. S("Can be combined to a double chest") .. "\n" .. S("Emits a redstone signal when opened"), + S("27 inventory slots") .. "\n" .. S("Can be combined to a large chest") .. "\n" .. S("Emits a redstone signal when opened"), traptiles, nil, {receptor = { @@ -643,7 +643,7 @@ minetest.register_craft({ minetest.register_node("mcl_chests:ender_chest", { description = S("Ender Chest"), - _tt_help = S("27 interdimensional inventory slots") .. "\n" .. S("Put items inside, retrieve them from any other ender chest"), + _tt_help = S("27 interdimensional inventory slots") .. "\n" .. S("Put items inside, retrieve them from any ender chest"), _doc_items_longdesc = S("Ender chests grant you access to a single personal interdimensional inventory with 27 slots. This inventory is the same no matter from which ender chest you access it from. If you put one item into one ender chest, you will find it in all other ender chests. Each player will only see their own items, but not the items of other players."), _doc_items_usagehelp = S("Rightclick the ender chest to access your personal interdimensional inventory."), tiles = {"mcl_chests_ender_chest_top.png", "mcl_chests_ender_chest_bottom.png", diff --git a/mods/ITEMS/mcl_chests/locale/mcl_chests.de.tr b/mods/ITEMS/mcl_chests/locale/mcl_chests.de.tr index 2fac283e..b4ef7969 100644 --- a/mods/ITEMS/mcl_chests/locale/mcl_chests.de.tr +++ b/mods/ITEMS/mcl_chests/locale/mcl_chests.de.tr @@ -28,3 +28,9 @@ To access the inventory of a shulker box, place and right-click it. To take a sh Shulker Box=Schulkerkiste Large Chest=Große Truhe Inventory=Inventar +27 inventory slots=27 Inventarplätze +Can be carried around with its contents=Kann mitsamt Inhalt transportiert werden +Can be combined to a large chest=Kann zu einer großen Truhe kombiniert werden +27 interdimensional inventory slots=27 interdimensionale Inventarplätze +Put items inside, retrieve them from any ender chest=Abgelegte Gegenstände können aus beliebigen Endertruhen genommen werden +Emits a redstone signal when opened=Sendet ein Redstonesignal beim Öffnen diff --git a/mods/ITEMS/mcl_chests/locale/template.txt b/mods/ITEMS/mcl_chests/locale/template.txt index 14254c14..d680c24c 100644 --- a/mods/ITEMS/mcl_chests/locale/template.txt +++ b/mods/ITEMS/mcl_chests/locale/template.txt @@ -28,3 +28,9 @@ To access the inventory of a shulker box, place and right-click it. To take a sh Shulker Box= Large Chest= Inventory= +27 inventory slots= +Can be carried around with its contents= +Can be combined to a large chest= +27 interdimensional inventory slots= +Put items inside, retrieve them from any ender chest= +Emits a redstone signal when opened= diff --git a/mods/ITEMS/mcl_clock/init.lua b/mods/ITEMS/mcl_clock/init.lua index 5d10b4cf..0532bf5f 100644 --- a/mods/ITEMS/mcl_clock/init.lua +++ b/mods/ITEMS/mcl_clock/init.lua @@ -58,7 +58,7 @@ function watch.register_item(name, image, creative, frame) if use_doc then longdesc = S("Clocks are tools which shows the current time of day in the Overworld.") usagehelp = S("The clock contains a rotating disc with a sun symbol (yellow disc) and moon symbol and a little “pointer” which shows the current time of day by estimating the real position of the sun and the moon in the sky. Noon is represented by the sun symbol and midnight is represented by the moon symbol.") - tt = S("Displays time of day in the Overworld") + tt = S("Displays the time of day in the Overworld") end minetest.register_craftitem(name, { description = S("Clock"), diff --git a/mods/ITEMS/mcl_clock/locale/mcl_clock.de.tr b/mods/ITEMS/mcl_clock/locale/mcl_clock.de.tr index f80daa41..00c2529e 100644 --- a/mods/ITEMS/mcl_clock/locale/mcl_clock.de.tr +++ b/mods/ITEMS/mcl_clock/locale/mcl_clock.de.tr @@ -2,3 +2,4 @@ Clocks are tools which shows the current time of day in the Overworld.=Uhren sind Werkzeuge, die die Tageszeit in der Oberwelt anzeigen. The clock contains a rotating disc with a sun symbol (yellow disc) and moon symbol and a little “pointer” which shows the current time of day by estimating the real position of the sun and the moon in the sky. Noon is represented by the sun symbol and midnight is represented by the moon symbol.=Die Uhr enthält eine rotierende Scheibe mit einem Sonnensymbol (gelbe Scheibe) und einem Mondsymbol, und sie hat einem kleinen „Pfeil“, der die jetzige Tageszeit anzeigt, indem die reale Position von Sonne und Mond im Himmel abgeschätzt wird. Die Sonne repräsentiert die Mittagszeit und der Mond repräsentiert Mitternacht. Clock=Uhr +Displays the time of day in the Overworld=Zeigt die Tageszeit in der Oberwelt diff --git a/mods/ITEMS/mcl_clock/locale/template.txt b/mods/ITEMS/mcl_clock/locale/template.txt index 07ff8cab..6589666c 100644 --- a/mods/ITEMS/mcl_clock/locale/template.txt +++ b/mods/ITEMS/mcl_clock/locale/template.txt @@ -2,3 +2,4 @@ Clocks are tools which shows the current time of day in the Overworld.= The clock contains a rotating disc with a sun symbol (yellow disc) and moon symbol and a little “pointer” which shows the current time of day by estimating the real position of the sun and the moon in the sky. Noon is represented by the sun symbol and midnight is represented by the moon symbol.= Clock= +Displays the time of day in the Overworld= diff --git a/mods/ITEMS/mcl_colorblocks/locale/mcl_colorblocks.de.tr b/mods/ITEMS/mcl_colorblocks/locale/mcl_colorblocks.de.tr index f0d77197..359a2f7c 100644 --- a/mods/ITEMS/mcl_colorblocks/locale/mcl_colorblocks.de.tr +++ b/mods/ITEMS/mcl_colorblocks/locale/mcl_colorblocks.de.tr @@ -73,3 +73,4 @@ Colored Terracotta=Gefärbte Terrakotta Glazed Terracotta=Glasierte Terrakotta Concrete Powder=Betonpulver Concrete=Beton +Turns into concrete on water contact=Wird zu Beton bei Wasserkontakt diff --git a/mods/ITEMS/mcl_colorblocks/locale/template.txt b/mods/ITEMS/mcl_colorblocks/locale/template.txt index f20c7965..ca1c059a 100644 --- a/mods/ITEMS/mcl_colorblocks/locale/template.txt +++ b/mods/ITEMS/mcl_colorblocks/locale/template.txt @@ -73,3 +73,4 @@ Colored Terracotta= Glazed Terracotta= Concrete Powder= Concrete= +Turns into concrete on water contact= diff --git a/mods/ITEMS/mcl_compass/locale/mcl_compass.de.tr b/mods/ITEMS/mcl_compass/locale/mcl_compass.de.tr index e20b0e52..a78b70c0 100644 --- a/mods/ITEMS/mcl_compass/locale/mcl_compass.de.tr +++ b/mods/ITEMS/mcl_compass/locale/mcl_compass.de.tr @@ -1,3 +1,4 @@ # textdomain: mcl_compass Compasses are tools which point to the world origin (X@=0, Z@=0) or the spawn point in the Overworld.=Kompasse sind Werkzeuge, die zum Ursprungspunkt der Welt (X@=0, Z@=0) oder den Einstiegspunkt der Welt zeigen. Compass=Kompass +Points to the world origin=Zeigt zum Startpunkt der Welt diff --git a/mods/ITEMS/mcl_compass/locale/template.txt b/mods/ITEMS/mcl_compass/locale/template.txt index 2db3584f..462a08bc 100644 --- a/mods/ITEMS/mcl_compass/locale/template.txt +++ b/mods/ITEMS/mcl_compass/locale/template.txt @@ -1,3 +1,4 @@ # textdomain: mcl_compass Compasses are tools which point to the world origin (X@=0, Z@=0) or the spawn point in the Overworld.= Compass= +Points to the world origin= diff --git a/mods/ITEMS/mcl_core/locale/mcl_core.de.tr b/mods/ITEMS/mcl_core/locale/mcl_core.de.tr index c0b9b738..2092fa33 100644 --- a/mods/ITEMS/mcl_core/locale/mcl_core.de.tr +++ b/mods/ITEMS/mcl_core/locale/mcl_core.de.tr @@ -247,3 +247,11 @@ Stained Glass=Buntglas Granite is an igneous rock.=Granit ist ein magmatisches Gestein. Top snow can be stacked and has one of 8 different height levels. At levels 2-8, top snow is collidable. Top snow drops 2-9 snowballs, depending on its height.=Eine Schneeschicht kann gestapelt werden und hat eine von 8 verschiedenen Höhestufen. Bei den Höhestufen 2-8 ist die Schneeschnicht kollidierbar. Schneeschichten werfen 2-9 Schneebälle ab, abhängig von ihrer Höhe. This block can only be placed on full solid blocks and on another top snow (which increases its height).=Dieser Block kann nur auf ganzen festen Blöcken und auf anderen Schneeschichten (was die Höhe erhöht) platziert werden. +Needs soil and light to grow=Benötigt Boden und Licht zum Wachsen +Grows on sand=Wächst auf Sand +Contact damage: @1 per half second=Kontaktschaden: @1 jede halbe Sekunde +Slows down movement=Verlangsamt die Fortbewegung +2×2 saplings required=2×2 Setzlinge benötigt +2×2 saplings @= large tree=2×2 Setzlinge @= großer Baum +Grows on sand or dirt next to water=Wächst auf Sand oder Erde neben Wasser +Stackable=Stapelbar diff --git a/mods/ITEMS/mcl_core/locale/template.txt b/mods/ITEMS/mcl_core/locale/template.txt index d97c6901..b7cd2a70 100644 --- a/mods/ITEMS/mcl_core/locale/template.txt +++ b/mods/ITEMS/mcl_core/locale/template.txt @@ -247,3 +247,11 @@ Stained Glass= Granite is an igneous rock.= Top snow can be stacked and has one of 8 different height levels. At levels 2-8, top snow is collidable. Top snow drops 2-9 snowballs, depending on its height.= This block can only be placed on full solid blocks and on another top snow (which increases its height).= +Needs soil and water to grow= +Grows on sand= +Contact damage: @1 per half second= +Slows down movement= +2×2 saplings required= +2×2 saplings @= large tree= +Grows on sand or dirt next to water= +Stackable= diff --git a/mods/ITEMS/mcl_crafting_table/init.lua b/mods/ITEMS/mcl_crafting_table/init.lua index 92f5d383..9d6979a4 100644 --- a/mods/ITEMS/mcl_crafting_table/init.lua +++ b/mods/ITEMS/mcl_crafting_table/init.lua @@ -2,7 +2,7 @@ local S = minetest.get_translator("mcl_crafting_table") minetest.register_node("mcl_crafting_table:crafting_table", { description = S("Crafting Table"), - _tt_help = S("Gives access to 3×3 crafting grid"), + _tt_help = S("3×3 crafting grid"), _doc_items_longdesc = S("A crafting table is a block which grants you access to a 3×3 crafting grid which allows you to perform advanced crafts."), _doc_items_usagehelp = S("Rightclick the crafting table to access the 3×3 crafting grid."), _doc_items_hidden = false, diff --git a/mods/ITEMS/mcl_crafting_table/locale/mcl_crafting_table.de.tr b/mods/ITEMS/mcl_crafting_table/locale/mcl_crafting_table.de.tr index 08b1a29e..00a9c9cc 100644 --- a/mods/ITEMS/mcl_crafting_table/locale/mcl_crafting_table.de.tr +++ b/mods/ITEMS/mcl_crafting_table/locale/mcl_crafting_table.de.tr @@ -5,3 +5,4 @@ Rightclick the crafting table to access the 3×3 crafting grid.=Rechtsklicken Si Recipe book=Fertigungsbuch Inventory=Inventar Crafting=Fertigen +3×3 crafting grid=3×3 Fertigungsgitter diff --git a/mods/ITEMS/mcl_crafting_table/locale/template.txt b/mods/ITEMS/mcl_crafting_table/locale/template.txt index 76070997..4563b734 100644 --- a/mods/ITEMS/mcl_crafting_table/locale/template.txt +++ b/mods/ITEMS/mcl_crafting_table/locale/template.txt @@ -5,3 +5,4 @@ Rightclick the crafting table to access the 3×3 crafting grid.= Recipe book= Crafting= Inventory= +3×3 crafting grid= diff --git a/mods/ITEMS/mcl_doors/api_doors.lua b/mods/ITEMS/mcl_doors/api_doors.lua index 05560314..6c78dd00 100644 --- a/mods/ITEMS/mcl_doors/api_doors.lua +++ b/mods/ITEMS/mcl_doors/api_doors.lua @@ -88,9 +88,9 @@ function mcl_doors:register_door(name, def) end if not tt_help then if def.only_redstone_can_open then - tt_help = S("Opened or closed by redstone power") + tt_help = S("Openable by redstone power") else - tt_help = S("Use to open or close") + tt_help = S("Openable by players and redstone power") end end diff --git a/mods/ITEMS/mcl_doors/api_trapdoors.lua b/mods/ITEMS/mcl_doors/api_trapdoors.lua index 42838204..11948ba8 100644 --- a/mods/ITEMS/mcl_doors/api_trapdoors.lua +++ b/mods/ITEMS/mcl_doors/api_trapdoors.lua @@ -100,9 +100,9 @@ function mcl_doors:register_trapdoor(name, def) end if not tt_help then if def.only_redstone_can_open then - tt_help = S("Opened or closed by redstone power") + tt_help = S("Openable by redstone power") else - tt_help = S("Use to opened or close") + tt_help = S("Openable by players and redstone power") end end diff --git a/mods/ITEMS/mcl_doors/locale/mcl_doors.de.tr b/mods/ITEMS/mcl_doors/locale/mcl_doors.de.tr index 7cb502c6..03be49a6 100644 --- a/mods/ITEMS/mcl_doors/locale/mcl_doors.de.tr +++ b/mods/ITEMS/mcl_doors/locale/mcl_doors.de.tr @@ -20,4 +20,5 @@ Wooden trapdoors are horizontal barriers which can be opened and closed by hand To open or close the trapdoor, rightclick it or send a redstone signal to it.=Um die Falltür zu öffnen oder zu schließen, rechtsklicken Sie sie oder schicken Sie ein Redstone-Signal zu ihr. Iron Trapdoor=Eisenfalltür Iron trapdoors are horizontal barriers which can only be opened and closed by redstone signals, but not by hand. They occupy the upper or lower part of a block, depending on how they have been placed. When open, they can be climbed like a ladder.=Eisenfalltüren sind horizontale Barrieren, die nur mit einem Redstone-Signal geöffnet oder geschlossen werden können, nicht von Hand. Sie belegen den oberen oder unteren Teil eines Blocks, je nach dem, wie sie platziert wurden. Wenn geöffnet, können sie wie eine Leiter erklommen werden. - +Openable by players and redstone power=Zu öffnen von Spielern und Redstoneenergie +Openable by redstone power=Zu öffnen von Redstoneenergie diff --git a/mods/ITEMS/mcl_doors/locale/template.txt b/mods/ITEMS/mcl_doors/locale/template.txt index 5b9f788a..d8c7c860 100644 --- a/mods/ITEMS/mcl_doors/locale/template.txt +++ b/mods/ITEMS/mcl_doors/locale/template.txt @@ -20,3 +20,5 @@ Wooden trapdoors are horizontal barriers which can be opened and closed by hand To open or close the trapdoor, rightclick it or send a redstone signal to it.= Iron Trapdoor= Iron trapdoors are horizontal barriers which can only be opened and closed by redstone signals, but not by hand. They occupy the upper or lower part of a block, depending on how they have been placed. When open, they can be climbed like a ladder.= +Openable by players and redstone power= +Openable by redstone power= diff --git a/mods/ITEMS/mcl_dye/locale/mcl_dye.de.tr b/mods/ITEMS/mcl_dye/locale/mcl_dye.de.tr index c12da579..29cd4d20 100644 --- a/mods/ITEMS/mcl_dye/locale/mcl_dye.de.tr +++ b/mods/ITEMS/mcl_dye/locale/mcl_dye.de.tr @@ -23,3 +23,5 @@ Rightclick a sheep to turn its wool white. Rightclick a plant to speed up its gr Cocoa beans are a brown dye and can be used to plant cocoas.=Kakaobohnen sind ein brauner Farbstoff und werden benutzt, um Kakao anzupflanzen. Rightclick a sheep to turn its wool brown. Rightclick on the side of a jungle tree trunk (Jungle Wood) to plant a young cocoa.=Rechtsklicken Sie auf ein Schaf, um die Wolle braun einzufärben. Rechtsklicken Sie an die Seite eines Dschungelbaumstamms (Dschungelholz), um eine junge Kakaoschote zu pflanzen. Cocoa Beans=Kakaobohnen +Grows at the side of jungle trees=Wächst an der Seite von Dschungelbäumen +Speeds up plant growth=Beschleunigt Pflanzenwachstum diff --git a/mods/ITEMS/mcl_dye/locale/template.txt b/mods/ITEMS/mcl_dye/locale/template.txt index f99638e4..94e250f0 100644 --- a/mods/ITEMS/mcl_dye/locale/template.txt +++ b/mods/ITEMS/mcl_dye/locale/template.txt @@ -23,3 +23,5 @@ Rightclick a sheep to turn its wool white. Rightclick a plant to speed up its gr Cocoa beans are a brown dye and can be used to plant cocoas.= Rightclick a sheep to turn its wool brown. Rightclick on the side of a jungle tree trunk (Jungle Wood) to plant a young cocoa.= Cocoa Beans= +Grows at the side of jungle trees= +Speeds up plant growth= diff --git a/mods/ITEMS/mcl_end/eye_of_ender.lua b/mods/ITEMS/mcl_end/eye_of_ender.lua index 41853def..117fb73c 100644 --- a/mods/ITEMS/mcl_end/eye_of_ender.lua +++ b/mods/ITEMS/mcl_end/eye_of_ender.lua @@ -74,7 +74,7 @@ minetest.register_entity("mcl_end:ender_eye", { minetest.register_craftitem("mcl_end:ender_eye", { description = S("Eye of Ender"), - _tt_help = S("Guides you to the End dimension"), + _tt_help = S("Guides the way to the mysterious End dimension"), _doc_items_longdesc = S("This item is used to locate End portal shrines in the Overworld and to activate End portals.") .. "\n" .. S("NOTE: The End dimension is currently incomplete and might change in future versions."), _doc_items_usagehelp = S("Use the attack key to release the eye of ender. It will rise and fly in the horizontal direction of the closest end portal shrine. If you're very close, the eye of ender will take the direct path to the End portal shrine instead. After a few seconds, it stops. It may drop as an item, but there's a 20% chance it shatters.") .. "\n" .. S("To activate an End portal, eyes of ender need to be placed into each block of an intact End portal frame."), wield_image = "mcl_end_ender_eye.png", diff --git a/mods/ITEMS/mcl_end/locale/mcl_end.de.tr b/mods/ITEMS/mcl_end/locale/mcl_end.de.tr index 0290bbfd..df3ad90f 100644 --- a/mods/ITEMS/mcl_end/locale/mcl_end.de.tr +++ b/mods/ITEMS/mcl_end/locale/mcl_end.de.tr @@ -23,3 +23,6 @@ Use the attack key to release the eye of ender. It will rise and fly in the hori To activate an End portal, eyes of ender need to be placed into each block of an intact End portal frame.=Um ein Endportal zu aktivieren, müssen Enderaugen in jeden Block eines intakten Endportalrahmens platziert werden. NOTE: The End dimension is currently incomplete and might change in future versions.=ANMERKUNG: Die Ende-Dimension ist momentan unfertig und könnte sich in künftigen Versionen ändern. The stem attaches itself to end stone and other chorus blocks.=Der Stängel muss sich neben anderen Chorusblöcken oder Endstein befinden. +Grows on end stone=Wächst auf Endstein +Randomly teleports you when eaten=Zufällige Teleportation, wenn gegessen +Guides the way to the mysterious End dimension=Weist den Weg zur mysteriösen Endedimension diff --git a/mods/ITEMS/mcl_end/locale/template.txt b/mods/ITEMS/mcl_end/locale/template.txt index 14cc9ff4..3f024383 100644 --- a/mods/ITEMS/mcl_end/locale/template.txt +++ b/mods/ITEMS/mcl_end/locale/template.txt @@ -23,3 +23,6 @@ Use the attack key to release the eye of ender. It will rise and fly in the hori To activate an End portal, eyes of ender need to be placed into each block of an intact End portal frame.= NOTE: The End dimension is currently incomplete and might change in future versions.= The stem attaches itself to end stone and other chorus blocks.= +Grows on end stone= +Randomly teleports you when eaten= +Guides the way to the mysterious End dimension= diff --git a/mods/ITEMS/mcl_farming/beetroot.lua b/mods/ITEMS/mcl_farming/beetroot.lua index ff021153..7caf5103 100644 --- a/mods/ITEMS/mcl_farming/beetroot.lua +++ b/mods/ITEMS/mcl_farming/beetroot.lua @@ -2,7 +2,7 @@ local S = minetest.get_translator("mcl_farming") minetest.register_craftitem("mcl_farming:beetroot_seeds", { description = S("Beetroot Seeds"), - _tt_help = S("Can be sown on farmland"), + _tt_help = S("Grows on farmland"), _doc_items_longdesc = S("Grows into a beetroot plant. Chickens like beetroot seeds."), _doc_items_usagehelp = S("Place the beetroot seeds on farmland (which can be created with a hoe) to plant a beetroot plant. They grow in sunlight and grow faster on hydrated farmland. Rightclick an animal to feed it beetroot seeds."), groups = { craftitem=1 }, diff --git a/mods/ITEMS/mcl_farming/carrots.lua b/mods/ITEMS/mcl_farming/carrots.lua index 6080b315..4599d39e 100644 --- a/mods/ITEMS/mcl_farming/carrots.lua +++ b/mods/ITEMS/mcl_farming/carrots.lua @@ -82,7 +82,7 @@ minetest.register_node("mcl_farming:carrot", { minetest.register_craftitem("mcl_farming:carrot_item", { description = S("Carrot"), - _tt_help = S("Can be planted on farmland"), + _tt_help = S("Grows on farmland"), _doc_items_longdesc = S("Carrots can be eaten and planted. Pigs and rabbits like carrots."), _doc_items_usagehelp = S("Hold it in your hand and rightclick to eat it. Place it on top of farmland to plant the carrot. It grows in sunlight and grows faster on hydrated farmland. Rightclick an animal to feed it."), inventory_image = "farming_carrot.png", diff --git a/mods/ITEMS/mcl_farming/locale/mcl_farming.de.tr b/mods/ITEMS/mcl_farming/locale/mcl_farming.de.tr index bdf9c9ea..0295e620 100644 --- a/mods/ITEMS/mcl_farming/locale/mcl_farming.de.tr +++ b/mods/ITEMS/mcl_farming/locale/mcl_farming.de.tr @@ -91,3 +91,9 @@ Hay Bale=Heuballen Hay bales are decorative blocks made from wheat.=Heuballen sind dekorative Blöcke, die aus Weizen gemacht sind. To carve a face into the pumpkin, use the shears on the side you want to carve.=Um ein Gesicht in den Kürbis zu schnitzen, benutzen Sie die Schere an der Seite, die Sie schnitzen wollen. Use the “Place” key on an animal to try to feed it wheat.=Benutzen Sie die „Platzieren“-Taste auf einem Tier, um zu versuchen, es zu füttern. +Grows on farmland=Wächst auf Ackerboden +Turns block into farmland=Macht Block zu Ackerboden +60% chance of poisoning=60% Vergiftungsgefahr +Surface for crops=Boden für Nutzpflanzen +Can become wet=Kann nass werden +Uses: @1=Verwendungen: @1 diff --git a/mods/ITEMS/mcl_farming/locale/template.txt b/mods/ITEMS/mcl_farming/locale/template.txt index e0b73dda..7359fefa 100644 --- a/mods/ITEMS/mcl_farming/locale/template.txt +++ b/mods/ITEMS/mcl_farming/locale/template.txt @@ -91,3 +91,9 @@ Hay Bale= Hay bales are decorative blocks made from wheat.= To carve a face into the pumpkin, use the shears on the side you want to carve.= Use the “Place” key on an animal to try to feed it wheat.= +Grows on farmland= +Turns block into farmland= +60% chance of poisoning= +Surface for crops= +Can become wet= +Uses: @1= diff --git a/mods/ITEMS/mcl_farming/melon.lua b/mods/ITEMS/mcl_farming/melon.lua index 5a4b3243..0734b35d 100644 --- a/mods/ITEMS/mcl_farming/melon.lua +++ b/mods/ITEMS/mcl_farming/melon.lua @@ -3,7 +3,7 @@ local S = minetest.get_translator("mcl_farming") -- Seeds minetest.register_craftitem("mcl_farming:melon_seeds", { description = S("Melon Seeds"), - _tt_help = S("Can be sown on farmland"), + _tt_help = S("Grows on farmland"), _doc_items_longdesc = S("Grows into a melon stem which in turn grows melons. Chickens like melon seeds."), _doc_items_usagehelp = S("Place the melon seeds on farmland (which can be created with a hoe) to plant a melon stem. Melon stems grow in sunlight and grow faster on hydrated farmland. When mature, the stem will attempt to grow a melon at the side. Rightclick an animal to feed it melon seeds."), stack_max = 64, diff --git a/mods/ITEMS/mcl_farming/potatoes.lua b/mods/ITEMS/mcl_farming/potatoes.lua index d00405f5..a4049cce 100644 --- a/mods/ITEMS/mcl_farming/potatoes.lua +++ b/mods/ITEMS/mcl_farming/potatoes.lua @@ -87,7 +87,7 @@ minetest.register_node("mcl_farming:potato", { minetest.register_craftitem("mcl_farming:potato_item", { description = S("Potato"), - _tt_help = S("Can be planted on farmland"), + _tt_help = S("Grows on farmland"), _doc_items_longdesc = S("Potatoes are food items which can be eaten, cooked in the furnace and planted. Pigs like potatoes."), _doc_items_usagehelp = S("Hold it in your hand and rightclick to eat it. Place it on top of farmland to plant it. It grows in sunlight and grows faster on hydrated farmland. Rightclick an animal to feed it."), inventory_image = "farming_potato.png", diff --git a/mods/ITEMS/mcl_farming/pumpkin.lua b/mods/ITEMS/mcl_farming/pumpkin.lua index e46844c9..f77d6f0d 100644 --- a/mods/ITEMS/mcl_farming/pumpkin.lua +++ b/mods/ITEMS/mcl_farming/pumpkin.lua @@ -9,7 +9,7 @@ end -- Seeds minetest.register_craftitem("mcl_farming:pumpkin_seeds", { description = S("Pumpkin Seeds"), - _tt_help = S("Can be sown on farmland"), + _tt_help = S("Grows on farmland"), _doc_items_longdesc = S("Grows into a pumpkin stem which in turn grows pumpkins. Chickens like pumpkin seeds."), _doc_items_usagehelp = S("Place the pumpkin seeds on farmland (which can be created with a hoe) to plant a pumpkin stem. Pumpkin stems grow in sunlight and grow faster on hydrated farmland. When mature, the stem attempts to grow a pumpkin next to it. Rightclick an animal to feed it pumpkin seeds."), stack_max = 64, diff --git a/mods/ITEMS/mcl_farming/soil.lua b/mods/ITEMS/mcl_farming/soil.lua index 82499716..87dcbe22 100644 --- a/mods/ITEMS/mcl_farming/soil.lua +++ b/mods/ITEMS/mcl_farming/soil.lua @@ -3,7 +3,7 @@ local S = minetest.get_translator("mcl_farming") minetest.register_node("mcl_farming:soil", { tiles = {"mcl_farming_farmland_dry.png", "default_dirt.png"}, description = S("Farmland"), - _tt_help = S("Surface for farming plants").."\n"..S("Can become wet"), + _tt_help = S("Surface for crops").."\n"..S("Can become wet"), _doc_items_longdesc = S("Farmland is used for farming, a necessary surface to plant crops. It is created when a hoe is used on dirt or a similar block. Plants are able to grow on farmland, but slowly. Farmland will become hydrated farmland (on which plants grow faster) when it rains or a water source is nearby. This block will turn back to dirt when a solid block appears above it or a piston arm extends above it."), drop = "mcl_core:dirt", drawtype = "nodebox", diff --git a/mods/ITEMS/mcl_farming/wheat.lua b/mods/ITEMS/mcl_farming/wheat.lua index aca5f654..0bf8724e 100644 --- a/mods/ITEMS/mcl_farming/wheat.lua +++ b/mods/ITEMS/mcl_farming/wheat.lua @@ -3,7 +3,7 @@ local S = minetest.get_translator("mcl_farming") minetest.register_craftitem("mcl_farming:wheat_seeds", { -- Original Minecraft name: “Seeds” description = S("Wheat Seeds"), - _tt_help = S("Can be sown on farmland"), + _tt_help = S("Grows on farmland"), _doc_items_longdesc = S("Grows into a wheat plant. Chickens like wheat seeds."), _doc_items_usagehelp = S("Place the wheat seeds on farmland (which can be created with a hoe) to plant a wheat plant. They grow in sunlight and grow faster on hydrated farmland. Rightclick an animal to feed it wheat seeds."), groups = { craftitem=1 }, diff --git a/mods/ITEMS/mcl_fences/init.lua b/mods/ITEMS/mcl_fences/init.lua index 50b4dda0..89b61c62 100644 --- a/mods/ITEMS/mcl_fences/init.lua +++ b/mods/ITEMS/mcl_fences/init.lua @@ -174,7 +174,7 @@ mcl_fences.register_fence_gate = function(id, fence_gate_name, texture, groups, cgroups_closed.mesecon_effector_off = nil minetest.register_node(gate_id, { description = fence_gate_name, - _tt_help = S("Use to open or close"), + _tt_help = S("Openable by players and redstone power"), _doc_items_longdesc = S("Fence gates can be opened or closed and can't be jumped over. Fences will connect nicely to fence gates."), _doc_items_usagehelp = S("Right-click the fence gate to open or close it."), tiles = {texture}, diff --git a/mods/ITEMS/mcl_fences/locale/mcl_fences.de.tr b/mods/ITEMS/mcl_fences/locale/mcl_fences.de.tr index a55eaebf..5a76fc59 100644 --- a/mods/ITEMS/mcl_fences/locale/mcl_fences.de.tr +++ b/mods/ITEMS/mcl_fences/locale/mcl_fences.de.tr @@ -15,3 +15,4 @@ Dark Oak Fence Gate=Schwarzeichenzauntor Acacia Fence=Akazienzaun Acacia Fence Gate=Akazienzauntor Nether Brick Fence=Netherziegelzaun +Openable by players and redstone power=Zu öffnen von Spielern und Redstoneenergie diff --git a/mods/ITEMS/mcl_fences/locale/template.txt b/mods/ITEMS/mcl_fences/locale/template.txt index 3a5c14ae..a4cd1cbe 100644 --- a/mods/ITEMS/mcl_fences/locale/template.txt +++ b/mods/ITEMS/mcl_fences/locale/template.txt @@ -15,3 +15,4 @@ Dark Oak Fence Gate= Acacia Fence= Acacia Fence Gate= Nether Brick Fence= +Openable by players and redstone power= diff --git a/mods/ITEMS/mcl_fire/locale/mcl_fire.de.tr b/mods/ITEMS/mcl_fire/locale/mcl_fire.de.tr index 22d91a5b..e3c30880 100644 --- a/mods/ITEMS/mcl_fire/locale/mcl_fire.de.tr +++ b/mods/ITEMS/mcl_fire/locale/mcl_fire.de.tr @@ -15,3 +15,5 @@ Eternal fire is a damaging block. Eternal fire can be extinguished by punches an @1 died in a fire.=@1 starb in einem Feuer. Fire=Feuer Eternal Fire=Ewiges Feuer +Dispenser projectile=Werferprojektil +Starts fires and ignites blocks=Entfacht Feuer und zündet Blöcke an diff --git a/mods/ITEMS/mcl_fire/locale/template.txt b/mods/ITEMS/mcl_fire/locale/template.txt index 065135ef..0bc7d254 100644 --- a/mods/ITEMS/mcl_fire/locale/template.txt +++ b/mods/ITEMS/mcl_fire/locale/template.txt @@ -15,3 +15,5 @@ Eternal fire is a damaging block. Eternal fire can be extinguished by punches an @1 died in a fire.= Fire= Eternal Fire= +Dispenser projectile= +Starts fires and ignites blocks= diff --git a/mods/ITEMS/mcl_fishing/init.lua b/mods/ITEMS/mcl_fishing/init.lua index 0bf63897..30c1826b 100644 --- a/mods/ITEMS/mcl_fishing/init.lua +++ b/mods/ITEMS/mcl_fishing/init.lua @@ -308,7 +308,7 @@ end) -- Fishing Rod minetest.register_tool("mcl_fishing:fishing_rod", { description = S("Fishing Rod"), - _tt_help = S("Catch fish in water"), + _tt_help = S("Catches fish in water"), _doc_items_longdesc = S("Fishing rods can be used to catch fish."), _doc_items_usagehelp = S("Rightclick to launch the bobber. When it sinks right-click again to reel in an item. Who knows what you're going to catch?"), groups = { tool=1 }, diff --git a/mods/ITEMS/mcl_fishing/locale/mcl_fishing.de.tr b/mods/ITEMS/mcl_fishing/locale/mcl_fishing.de.tr index 75120cd3..10f90859 100644 --- a/mods/ITEMS/mcl_fishing/locale/mcl_fishing.de.tr +++ b/mods/ITEMS/mcl_fishing/locale/mcl_fishing.de.tr @@ -14,3 +14,5 @@ Clownfish=Clownfisch Clownfish may be obtained by fishing (and luck) and is a food item which can be eaten safely.=Einen Clownfisch kann man beim Angeln mit etwas Glück fangen. Er ist ein Lebensmittel, der sicher verzehrt werden kann. Pufferfish=Kugelfisch Pufferfish are a common species of fish and can be obtained by fishing. They can technically be eaten, but they are very bad for humans. Eating a pufferfish only restores 1 hunger point and will poison you very badly (which drains your health non-fatally) and causes serious food poisoning (which increases your hunger).=Kugelfische sind eine verbreitete Fischart, die geangelt werden können. Sie können theoretisch gegessen werden, aber sie sind sehr schlecht für Menschen. Es gibt nur 1 Hungerpunkt und es wird Sie schwer vergiften (was Ihre Gesundheit verringert, aber nicht bis zum Tod) und Ihr Hungerpegel wird aufgrund der schweren Lebensmittelvergiftung stark ansteigen. +Catches fish in water=Fängt Fische im Wasser +Very poisonous=Sehr giftig diff --git a/mods/ITEMS/mcl_fishing/locale/template.txt b/mods/ITEMS/mcl_fishing/locale/template.txt index d2bac980..a1544666 100644 --- a/mods/ITEMS/mcl_fishing/locale/template.txt +++ b/mods/ITEMS/mcl_fishing/locale/template.txt @@ -14,3 +14,5 @@ Clownfish= Clownfish may be obtained by fishing (and luck) and is a food item which can be eaten safely.= Pufferfish= Pufferfish are a common species of fish and can be obtained by fishing. They can technically be eaten, but they are very bad for humans. Eating a pufferfish only restores 1 hunger point and will poison you very badly (which drains your health non-fatally) and causes serious food poisoning (which increases your hunger).= +Catches fish in water= +Very poisonous= diff --git a/mods/ITEMS/mcl_flowerpots/init.lua b/mods/ITEMS/mcl_flowerpots/init.lua index c2a85d81..d2c634bd 100644 --- a/mods/ITEMS/mcl_flowerpots/init.lua +++ b/mods/ITEMS/mcl_flowerpots/init.lua @@ -29,7 +29,7 @@ local cubes = { minetest.register_node("mcl_flowerpots:flower_pot", { description = S("Flower Pot"), - _tt_help = S("Can holds a small flower or plant"), + _tt_help = S("Can hold a small flower or plant"), _doc_items_longdesc = S("Flower pots are decorative blocks in which flowers and other small plants can be placed."), _doc_items_usagehelp = S("Just place a plant on the flower pot. Flower pots can hold small flowers (not higher than 1 block), saplings, ferns, dead bushes, mushrooms and cacti. Rightclick a potted plant to retrieve the plant."), drawtype = "mesh", diff --git a/mods/ITEMS/mcl_flowerpots/locale/mcl_flowerpots.de.tr b/mods/ITEMS/mcl_flowerpots/locale/mcl_flowerpots.de.tr index 321725ab..3031e38d 100644 --- a/mods/ITEMS/mcl_flowerpots/locale/mcl_flowerpots.de.tr +++ b/mods/ITEMS/mcl_flowerpots/locale/mcl_flowerpots.de.tr @@ -23,3 +23,4 @@ Cactus Flower Pot=Blumentopf mit Kaktus Flower Pot=Blumentopf Flower pots are decorative blocks in which flowers and other small plants can be placed.=Blumentöpfe sind dekorative Blöcke, in die Blumen und andere kleine Pflanzen platziert werden können. Just place a plant on the flower pot. Flower pots can hold small flowers (not higher than 1 block), saplings, ferns, dead bushes, mushrooms and cacti. Rightclick a potted plant to retrieve the plant.=Platzieren Sie einfach eine Pflanze auf den Blumentopf. Blumentöpfe können kleine Blumen (nicht höher als 1 Block), Setzlinge, Farne, tote Büsche, Pilze und Kakteen halten. Rechtsklicken Sie auf eine Topfpflanze, um sie zurück zu erhalten. +Can hold a small flower or plant=Hält eine kleine Blume oder Pflanze diff --git a/mods/ITEMS/mcl_flowerpots/locale/template.txt b/mods/ITEMS/mcl_flowerpots/locale/template.txt index c68a07e7..fcdf7d21 100644 --- a/mods/ITEMS/mcl_flowerpots/locale/template.txt +++ b/mods/ITEMS/mcl_flowerpots/locale/template.txt @@ -23,3 +23,4 @@ Cactus Flower Pot= Flower Pot= Flower pots are decorative blocks in which flowers and other small plants can be placed.= Just place a plant on the flower pot. Flower pots can hold small flowers (not higher than 1 block), saplings, ferns, dead bushes, mushrooms and cacti. Rightclick a potted plant to retrieve the plant.= +Can hold a small flower or plant= diff --git a/mods/ITEMS/mcl_furnaces/locale/mcl_furnaces.de.tr b/mods/ITEMS/mcl_furnaces/locale/mcl_furnaces.de.tr index 90cc5017..5e55af7f 100644 --- a/mods/ITEMS/mcl_furnaces/locale/mcl_furnaces.de.tr +++ b/mods/ITEMS/mcl_furnaces/locale/mcl_furnaces.de.tr @@ -6,3 +6,4 @@ Use the recipe book to see what you can smelt, what you can use as fuel and how Burning Furnace=Aktiver Ofen Recipe book=Fertigungsbuch Inventory=Inventar +Uses fuel to smelt or cook items=Benutzt Brennstoff, um Dinge zu schmelzen oder zu kochen diff --git a/mods/ITEMS/mcl_furnaces/locale/template.txt b/mods/ITEMS/mcl_furnaces/locale/template.txt index a3922621..4f88824b 100644 --- a/mods/ITEMS/mcl_furnaces/locale/template.txt +++ b/mods/ITEMS/mcl_furnaces/locale/template.txt @@ -6,3 +6,4 @@ Use the recipe book to see what you can smelt, what you can use as fuel and how Burning Furnace= Recipe book= Inventory= +Uses fuel to smelt or cook items= diff --git a/mods/ITEMS/mcl_hoppers/locale/mcl_hoppers.de.tr b/mods/ITEMS/mcl_hoppers/locale/mcl_hoppers.de.tr index cd752118..f0cc90d2 100644 --- a/mods/ITEMS/mcl_hoppers/locale/mcl_hoppers.de.tr +++ b/mods/ITEMS/mcl_hoppers/locale/mcl_hoppers.de.tr @@ -11,3 +11,6 @@ Disabled Hopper=Deaktivierter Trichter Side Hopper=Seitwärtstrichter Disabled Side Hopper=Deaktivierter Seitwärtstrichter Inventory=Inventar +5 inventory slots=5 Inventarplätze +Collects items from above, moves items to container below=Sammelt Gegenstände von oben, legt Gegenstände in Behälter unterhalb ab +Can be disabled with redstone power=Kann mit Redstoneenergie deaktiviert werden diff --git a/mods/ITEMS/mcl_hoppers/locale/template.txt b/mods/ITEMS/mcl_hoppers/locale/template.txt index df66e4ce..bc614d47 100644 --- a/mods/ITEMS/mcl_hoppers/locale/template.txt +++ b/mods/ITEMS/mcl_hoppers/locale/template.txt @@ -11,3 +11,6 @@ Disabled Hopper= Side Hopper= Disabled Side Hopper= Inventory= +5 inventory slots= +Collects items from above, moves items to container below= +Can be disabled with redstone power= diff --git a/mods/ITEMS/mcl_itemframes/init.lua b/mods/ITEMS/mcl_itemframes/init.lua index 6c6d6202..b9fa7048 100644 --- a/mods/ITEMS/mcl_itemframes/init.lua +++ b/mods/ITEMS/mcl_itemframes/init.lua @@ -101,7 +101,7 @@ end minetest.register_node("mcl_itemframes:item_frame",{ description = S("Item Frame"), - _tt_help = S("Holds an item"), + _tt_help = S("Can hold an item"), _doc_items_longdesc = S("Item frames are decorative blocks in which items can be placed."), _doc_items_usagehelp = S("Just place any item on the item frame. Use the item frame again to retrieve the item."), drawtype = "mesh", diff --git a/mods/ITEMS/mcl_itemframes/locale/mcl_itemframes.de.tr b/mods/ITEMS/mcl_itemframes/locale/mcl_itemframes.de.tr index 81a3f75b..07d7812f 100644 --- a/mods/ITEMS/mcl_itemframes/locale/mcl_itemframes.de.tr +++ b/mods/ITEMS/mcl_itemframes/locale/mcl_itemframes.de.tr @@ -2,4 +2,4 @@ Item Frame=Rahmen Item frames are decorative blocks in which items can be placed.=Rahmen sind dekorative Blöcke, in denen man Gegenstände platzieren kann. Just place any item on the item frame. Use the item frame again to retrieve the item.=Platzieren Sie einfach einen beliebigen Gegenstand in den Rahmen. Benutzen Sie den Rahmen erneut, um den Gegenstand zurück zu erhalten. - +Can hold an item=Kann einen Gegenstand halten diff --git a/mods/ITEMS/mcl_itemframes/locale/template.txt b/mods/ITEMS/mcl_itemframes/locale/template.txt index 55ff580f..bacbfaa6 100644 --- a/mods/ITEMS/mcl_itemframes/locale/template.txt +++ b/mods/ITEMS/mcl_itemframes/locale/template.txt @@ -2,3 +2,4 @@ Item Frame= Item frames are decorative blocks in which items can be placed.= Just place any item on the item frame. Use the item frame again to retrieve the item.= +Can hold an item= diff --git a/mods/ITEMS/mcl_jukebox/locale/mcl_jukebox.de.tr b/mods/ITEMS/mcl_jukebox/locale/mcl_jukebox.de.tr index 60dea78d..5f5aea19 100644 --- a/mods/ITEMS/mcl_jukebox/locale/mcl_jukebox.de.tr +++ b/mods/ITEMS/mcl_jukebox/locale/mcl_jukebox.de.tr @@ -8,3 +8,4 @@ Jukebox=Musikbox Jukeboxes play music when they're supplied with a music disc.=Musikboxen spielen Musik, wenn man ihnen eine Musikplatte gibt. Place a music disc into an empty jukebox to insert the music disc and play music. If the jukebox already has a music disc, you will retrieve this music disc first. The music can only be heard by you, not by other players.=Platzieren Sie eine Musikplatte in eine leere Musikbox, um die Musikplatte einzulegen und Musik zu spielen. Wenn die Musikbox schon eine Musikplatte hat, werden Sie zuerst diese Musikplatte erhalten. Die Musik kann nur von Ihnen gehört werden, aber nicht von anderen Spielern. Now playing: @1—@2=Sie hören: @1 – @2 +Uses music discs to play music=Benutzt Musikplatten, um Musik zu spielen diff --git a/mods/ITEMS/mcl_jukebox/locale/template.txt b/mods/ITEMS/mcl_jukebox/locale/template.txt index 5b46ce08..7189ba0e 100644 --- a/mods/ITEMS/mcl_jukebox/locale/template.txt +++ b/mods/ITEMS/mcl_jukebox/locale/template.txt @@ -8,3 +8,4 @@ Jukebox= Jukeboxes play music when they're supplied with a music disc.= Place a music disc into an empty jukebox to insert the music disc and play music. If the jukebox already has a music disc, you will retrieve this music disc first. The music can only be heard by you, not by other players.= Now playing: @1—@2= +Uses music discs to play music= diff --git a/mods/ITEMS/mcl_maps/locale/mcl_maps.de.tr b/mods/ITEMS/mcl_maps/locale/mcl_maps.de.tr index 3e7071e6..c8536372 100644 --- a/mods/ITEMS/mcl_maps/locale/mcl_maps.de.tr +++ b/mods/ITEMS/mcl_maps/locale/mcl_maps.de.tr @@ -6,3 +6,4 @@ Map=Karte Maps show your surroundings as you explore the world.=Karten zeigen Ihre Umgebung, während Sie die Welt erkunden. Hold the map in any of the hotbar slots. This allows you to access the minimap by pressing the minimap key (see controls settings).=Halten Sie die Karte in einen beliebigen Platz in der Schnellleiste. Damit können Sie jetzt die Übersichtskarte aktivieren, indem Sie die Taste zum Umschalten der Karte drücken (siehe Tastenbelegung). In Creative Mode, you don't need this item; the minimap is always available.=Im Kreativmodus brauchen Sie diesen Gegenstand nicht; die Übersichtskarte ist immer verfügbar. +Enables minimap=Aktiviert Übersichtskarte diff --git a/mods/ITEMS/mcl_maps/locale/template.txt b/mods/ITEMS/mcl_maps/locale/template.txt index 1db127f4..b7f850a9 100644 --- a/mods/ITEMS/mcl_maps/locale/template.txt +++ b/mods/ITEMS/mcl_maps/locale/template.txt @@ -6,3 +6,4 @@ Map= Maps show your surroundings as you explore the world.= Hold the map in any of the hotbar slots. This allows you to access the minimap by pressing the minimap key (see controls settings).= In Creative Mode, you don't need this item; the minimap is always available.= +Enables minimap= diff --git a/mods/ITEMS/mcl_mobitems/locale/mcl_mobitems.de.tr b/mods/ITEMS/mcl_mobitems/locale/mcl_mobitems.de.tr index a392ffc2..dcb605d2 100644 --- a/mods/ITEMS/mcl_mobitems/locale/mcl_mobitems.de.tr +++ b/mods/ITEMS/mcl_mobitems/locale/mcl_mobitems.de.tr @@ -60,3 +60,9 @@ Carrot on a Stick=Karottenrute A carrot on a stick can be used on saddled pigs to ride them.=Eine Karottenrute kann auf gesattelten Schweinen angewendet werden, um sie zu reiten. Place it on a saddled pig to mount it. You can now ride the pig like a horse. Pigs will also walk towards you when you just wield the carrot on a stick.=Platzieren Sie sie auf einem Schwein mit Sattel, um sich aufzusatteln. Sie können nun das Schwein wie ein Pferd reiten. Schweine werden auch auf Sie zugehen, wenn Sie einfach nur die Karottenrute halten. Wield the bone near wolves to attract them. Use the “Place” key on the wolf to give it a bone and tame it. You can then give commands to the tamed wolf by using the “Place” key on it.=Halten Sie den Knochen in der Nähe von Wölfen, um sie anzulocken. Benutzen Sie die „Platzieren“-Taste auf dem Wolf, um ihm den Knochen zu geben und ihn zu zähmen. Sie können dem gezähmten Wolf Befehle erteilen, indem Sie die „Platzieren“-Taste auf ihm benutzen. +Lets you ride a saddled pig=Um auf gesattelten Schweinen zu reiten +30% chance of food poisoning=30% Wahrscheinlichkeit von Lebensmittelvergiftung +80% chance of food poisoning=80% Wahrscheinlichkeit von Lebensmittelvergiftung +Cures poison=Kuriert Vergiftung +Can be placed on animals to ride them=Kann auf Tieren platziert werden, um sie zu reiten +Poisonous=Giftig diff --git a/mods/ITEMS/mcl_mobitems/locale/template.txt b/mods/ITEMS/mcl_mobitems/locale/template.txt index 2c2c15d1..e5cf32e4 100644 --- a/mods/ITEMS/mcl_mobitems/locale/template.txt +++ b/mods/ITEMS/mcl_mobitems/locale/template.txt @@ -60,3 +60,9 @@ Carrot on a Stick= A carrot on a stick can be used on saddled pigs to ride them.= Place it on a saddled pig to mount it. You can now ride the pig like a horse. Pigs will also walk towards you when you just wield the carrot on a stick.= Wield the bone near wolves to attract them. Use the “Place” key on the wolf to give it a bone and tame it. You can then give commands to the tamed wolf by using the “Place” key on it.= +Lets you ride a saddled pig= +30% chance of food poisoning= +80% chance of food poisoning= +Cures poison= +Can be placed on animals to ride them= +Poisonous= diff --git a/mods/ITEMS/mcl_mobspawners/locale/mcl_mobspawners.de.tr b/mods/ITEMS/mcl_mobspawners/locale/mcl_mobspawners.de.tr index 84a849ed..315b432c 100644 --- a/mods/ITEMS/mcl_mobspawners/locale/mcl_mobspawners.de.tr +++ b/mods/ITEMS/mcl_mobspawners/locale/mcl_mobspawners.de.tr @@ -2,3 +2,4 @@ Mob Spawner=Mobspawner A mob spawner regularily causes mobs to appear around it while a player is nearby. Some mob spawners are disabled while in light.=Ein Mobspawner lässt regelmäßig Mobs um ihn herum auftauchen, wenn sich ein Spieler in der Nähe befindet. Einige Mobspawner werden inaktiv, wenn sie sich im Licht befinden. If you have a spawn egg, you can use it to change the mob to spawn. Just place the item on the mob spawner. Player-set mob spawners always spawn mobs regardless of the light level.=Wenn Sie ein Spawn-Ei haben, können Sie es benutzen, um den Mobtyp, der erzeugt wird, zu ändern. Platzieren Sie den Gegenstand einfach auf dem Mobspawner. Von Spielern manipulierte Mobspawner erzeugen immer Mobs, unabhängig von der Helligkeit. +Makes mobs appear=Lässt Mobs auftauchen diff --git a/mods/ITEMS/mcl_mobspawners/locale/template.txt b/mods/ITEMS/mcl_mobspawners/locale/template.txt index 6a660585..82357e5f 100644 --- a/mods/ITEMS/mcl_mobspawners/locale/template.txt +++ b/mods/ITEMS/mcl_mobspawners/locale/template.txt @@ -2,3 +2,4 @@ Mob Spawner= A mob spawner regularily causes mobs to appear around it while a player is nearby. Some mob spawners are disabled while in light.= If you have a spawn egg, you can use it to change the mob to spawn. Just place the item on the mob spawner. Player-set mob spawners always spawn mobs regardless of the light level.= +Makes mobs appear= diff --git a/mods/ITEMS/mcl_monster_eggs/locale/mcl_monster_eggs.de.tr b/mods/ITEMS/mcl_monster_eggs/locale/mcl_monster_eggs.de.tr index 61145497..78c26bf7 100644 --- a/mods/ITEMS/mcl_monster_eggs/locale/mcl_monster_eggs.de.tr +++ b/mods/ITEMS/mcl_monster_eggs/locale/mcl_monster_eggs.de.tr @@ -6,3 +6,4 @@ Infested Stone Bricks=Verseuchte Steinziegel Infested Cracked Stone Bricks=Verseuchte rissige Steinziegel Infested Mossy Stone Bricks=Verseuchte moosige Steinziegel Infested Chiseled Stone Bricks=Verseuchte gemeißelte Steinziegel +Hides a silverfish=Verbirgt ein Silberfischchen diff --git a/mods/ITEMS/mcl_monster_eggs/locale/template.txt b/mods/ITEMS/mcl_monster_eggs/locale/template.txt index ce40fa8b..8f420b61 100644 --- a/mods/ITEMS/mcl_monster_eggs/locale/template.txt +++ b/mods/ITEMS/mcl_monster_eggs/locale/template.txt @@ -6,3 +6,4 @@ Infested Stone Bricks= Infested Cracked Stone Bricks= Infested Mossy Stone Bricks= Infested Chiseled Stone Bricks= +Hides a silverfish= diff --git a/mods/ITEMS/mcl_mushrooms/locale/mcl_mushrooms.de.tr b/mods/ITEMS/mcl_mushrooms/locale/mcl_mushrooms.de.tr index 8402e280..55996ed4 100644 --- a/mods/ITEMS/mcl_mushrooms/locale/mcl_mushrooms.de.tr +++ b/mods/ITEMS/mcl_mushrooms/locale/mcl_mushrooms.de.tr @@ -20,3 +20,5 @@ Red Mushroom=Roter Pilz Mushroom Stew=Pilzsuppe Mushroom stew is a healthy soup which can be consumed to restore some hunger points.=Pilzsuppe ist eine gesunde Suppe, die für ein paar Hungerpunkte konsumiert werden kann. By placing huge mushroom blocks of the same species next to each other, the sides that touch each other will turn into pores permanently.=Wenn Riesenpilzblöcke der selben Art nebeneinander platziert werden, werden sich die Seiten, die sich berühren, dauerhaft zu Poren verwandeln. +Grows on podzol, mycelium and other blocks=Wächst auf Podsol, Myzel und anderen Blöcken +Spreads in darkness=Breitet sich in der Dunkelheit aus diff --git a/mods/ITEMS/mcl_mushrooms/locale/template.txt b/mods/ITEMS/mcl_mushrooms/locale/template.txt index cbd1f600..41ebdaa8 100644 --- a/mods/ITEMS/mcl_mushrooms/locale/template.txt +++ b/mods/ITEMS/mcl_mushrooms/locale/template.txt @@ -20,3 +20,5 @@ Red Mushroom= Mushroom Stew= Mushroom stew is a healthy soup which can be consumed to restore some hunger points.= By placing huge mushroom blocks of the same species next to each other, the sides that touch each other will turn into pores permanently.= +Grows on podzol, mycelium and other blocks= +Spreads in darkness= diff --git a/mods/ITEMS/mcl_nether/init.lua b/mods/ITEMS/mcl_nether/init.lua index b6a662fa..50c0bf66 100644 --- a/mods/ITEMS/mcl_nether/init.lua +++ b/mods/ITEMS/mcl_nether/init.lua @@ -85,7 +85,7 @@ minetest.register_node("mcl_nether:netherrack", { minetest.register_node("mcl_nether:magma", { description = S("Magma Block"), - _tt_help = S("Deals damage when standing on it"), + _tt_help = S("Burns your feet"), _doc_items_longdesc = S("Magma blocks are hot solid blocks which hurt anyone standing on it, unless they have fire resistance. Starting a fire on this block will create an eternal fire."), stack_max = 64, tiles = {{name="mcl_nether_magma.png", animation={type="vertical_frames", aspect_w=32, aspect_h=32, length=1.5}}}, diff --git a/mods/ITEMS/mcl_nether/locale/mcl_nether.de.tr b/mods/ITEMS/mcl_nether/locale/mcl_nether.de.tr index 4ceafbd9..f81f381e 100644 --- a/mods/ITEMS/mcl_nether/locale/mcl_nether.de.tr +++ b/mods/ITEMS/mcl_nether/locale/mcl_nether.de.tr @@ -35,3 +35,6 @@ The mature nether wart is a plant from the Nether and reached its full size and Nether Wart=Netherwurz Nether warts are plants home to the Nether. They can be planted on soul sand and grow in 4 stages.=Netherwurze sind Pflanzen, die im Nether beheimatet sind. Sie können auf Seelensand gepflanzt werden und wachsen in 4 Stufen. Place this item on soul sand to plant it and watch it grow.=Platzieren Sie den Gegenstand auf Seelensand, um ihn zu pflanzen und sehen Sie dabei zu, wie es wächst. +Burns your feet=Verbrennt Ihre Füße +Grows on soul sand=Wächst auf Seelensand +Reduces walking speed=Reduziert das Schritttempo diff --git a/mods/ITEMS/mcl_nether/locale/template.txt b/mods/ITEMS/mcl_nether/locale/template.txt index cb0ba600..0d578faf 100644 --- a/mods/ITEMS/mcl_nether/locale/template.txt +++ b/mods/ITEMS/mcl_nether/locale/template.txt @@ -35,3 +35,6 @@ The mature nether wart is a plant from the Nether and reached its full size and Nether Wart= Nether warts are plants home to the Nether. They can be planted on soul sand and grow in 4 stages.= Place this item on soul sand to plant it and watch it grow.= +Burns your feet= +Grows on soul sand= +Reduces walking speed= diff --git a/mods/ITEMS/mcl_ocean/locale/mcl_ocean.de.tr b/mods/ITEMS/mcl_ocean/locale/mcl_ocean.de.tr index 37907c59..79384cd7 100644 --- a/mods/ITEMS/mcl_ocean/locale/mcl_ocean.de.tr +++ b/mods/ITEMS/mcl_ocean/locale/mcl_ocean.de.tr @@ -48,3 +48,9 @@ Corals fans grow on top of coral blocks and need to be inside a water source to Seagrass grows inside water on top of dirt, sand or gravel.=Seegras wächst im Wasser auf Erde, Sand oder Kies. A decorative block that serves as a great furnace fuel.=Ein dekorativer Block, der sich gut als Ofenbrennstoff eignet. Dried kelp is a food item.=Getrockneter Seetang ist ein Lebensmittel. +Grows on coral block of same species=Wächst auf Korallenblock der gleichen Art +Needs water to live=Benötigt Wasser zum Leben +Grows in water on dirt, sand, gravel=Wächst im Wasser auf Erde, Sand, Kies +Glows in the water=Leuchtet im Wasser +4 possible sizes=4 mögliche Größen +Grows on dead brain coral block=Wächst auf totem Hirnkorallenblock diff --git a/mods/ITEMS/mcl_ocean/locale/template.txt b/mods/ITEMS/mcl_ocean/locale/template.txt index 0c7f360d..aa0db175 100644 --- a/mods/ITEMS/mcl_ocean/locale/template.txt +++ b/mods/ITEMS/mcl_ocean/locale/template.txt @@ -48,3 +48,9 @@ Corals fans grow on top of coral blocks and need to be inside a water source to Seagrass grows inside water on top of dirt, sand or gravel.= A decorative block that serves as a great furnace fuel.= Dried kelp is a food item.= +Grows on coral block of same species= +Needs water to live= +Grows in water on dirt, sand, gravel +Glows in the water= +4 possible sizes= +Grows on dead brain coral block= diff --git a/mods/ITEMS/mcl_portals/locale/mcl_portals.de.tr b/mods/ITEMS/mcl_portals/locale/mcl_portals.de.tr index 55150a96..59340329 100644 --- a/mods/ITEMS/mcl_portals/locale/mcl_portals.de.tr +++ b/mods/ITEMS/mcl_portals/locale/mcl_portals.de.tr @@ -14,3 +14,6 @@ Stand in the portal for a moment to activate the teleportation. Entering a Nethe Obsidian is also used as the frame of Nether portals.=Obsidian wird auch als Rahmen von Netherportalen benutzt. To open a Nether portal, place an upright frame of obsidian with a width of 4 blocks and a height of 5 blocks, leaving only air in the center. After placing this frame, light a fire in the obsidian frame. Nether portals only work in the Overworld and the Nether.=Um ein Netherportal zu öffnen, platzieren Sie einen aufrechten Rahmen aus Obsidian mit einer Breite von 4 Blöcken und einer Höhe von 5 Blöcken, nur mit Luft in der Mitte. Nachdem Sie den Rahmen gebaut haben, entfachen Sie ein Feuer im Obsidianrahmen. Netherportale funktionieren nur in der Oberwelt und im Nether. Once placed, an eye of ender can not be taken back.=Sobald platziert, kann ein Enderauge nicht mehr zurück genommen werden. +Used to construct end portals=Benutzt zur Konstruktion von Endportalen +Liquid container=Flüssigkeitsbehälter +No effect=Keine Wirkung diff --git a/mods/ITEMS/mcl_portals/locale/template.txt b/mods/ITEMS/mcl_portals/locale/template.txt index 02482652..d7c5a30f 100644 --- a/mods/ITEMS/mcl_portals/locale/template.txt +++ b/mods/ITEMS/mcl_portals/locale/template.txt @@ -12,3 +12,4 @@ Stand in the portal for a moment to activate the teleportation. Entering a Nethe Obsidian is also used as the frame of Nether portals.= To open a Nether portal, place an upright frame of obsidian with a width of 4 blocks and a height of 5 blocks, leaving only air in the center. After placing this frame, light a fire in the obsidian frame. Nether portals only work in the Overworld and the Nether.= Once placed, an eye of ender can not be taken back.= +Used to construct end portals= diff --git a/mods/ITEMS/mcl_potions/locale/mcl_potions.de.tr b/mods/ITEMS/mcl_potions/locale/mcl_potions.de.tr index 87db24a0..c01b7f3c 100644 --- a/mods/ITEMS/mcl_potions/locale/mcl_potions.de.tr +++ b/mods/ITEMS/mcl_potions/locale/mcl_potions.de.tr @@ -21,3 +21,5 @@ Dragon's Breath=Drachenatem Use the “Place” key to drink it.=Benutzen Sie die „Platzieren“-Taste zum Trinken. Use the “Place” key to drink. Place this item on a cauldron to pour the water into the cauldron.=Benutzen Sie die „Platzieren“-Taste zum Trinken. Platzieren Sie diesen Gegenstand auf einen Kessel, um das Wasser in den Kessel zu schütten. Use the “Place” key to drink. Place this item on a cauldron to pour the river water into the cauldron.=Benutzen Sie die „Platzieren“-Taste zum Trinken. Platzieren Sie diesen Gegenstand auf einen Kessel, um das Flusswasser in den Kessel zu schütten. +Liquid container=Flüssigkeitsbehälter +No effect=Keine Wirkung diff --git a/mods/ITEMS/mcl_potions/locale/template.txt b/mods/ITEMS/mcl_potions/locale/template.txt index b7e08ebf..3eccfd70 100644 --- a/mods/ITEMS/mcl_potions/locale/template.txt +++ b/mods/ITEMS/mcl_potions/locale/template.txt @@ -21,3 +21,5 @@ Dragon's Breath= Use the “Place” key to drink it.= Use the “Place” key to drink. Place this item on a cauldron to pour the water into the cauldron.= Use the “Place” key to drink. Place this item on a cauldron to pour the river water into the cauldron.= +Liquid container= +No effect= diff --git a/mods/ITEMS/mcl_signs/locale/mcl_signs.de.tr b/mods/ITEMS/mcl_signs/locale/mcl_signs.de.tr index 5129696b..a7513659 100644 --- a/mods/ITEMS/mcl_signs/locale/mcl_signs.de.tr +++ b/mods/ITEMS/mcl_signs/locale/mcl_signs.de.tr @@ -6,3 +6,4 @@ Enter sign text:=Schildtext eingeben: Maximum line length: 15=Maximale Zeilenlänge: 15 Maximum lines: 4=Maximale Zeilen: 4 Done=Fertig +Can be written=Kann beschriftet werden diff --git a/mods/ITEMS/mcl_signs/locale/template.txt b/mods/ITEMS/mcl_signs/locale/template.txt index f4f4827b..6635e989 100644 --- a/mods/ITEMS/mcl_signs/locale/template.txt +++ b/mods/ITEMS/mcl_signs/locale/template.txt @@ -6,3 +6,4 @@ Enter sign text:= Maximum line length: 15= Maximum lines: 4= Done= +Can be written= diff --git a/mods/ITEMS/mcl_sponges/locale/mcl_sponges.de.tr b/mods/ITEMS/mcl_sponges/locale/mcl_sponges.de.tr index d226e8d1..4f0b827f 100644 --- a/mods/ITEMS/mcl_sponges/locale/mcl_sponges.de.tr +++ b/mods/ITEMS/mcl_sponges/locale/mcl_sponges.de.tr @@ -6,3 +6,5 @@ A waterlogged sponge can be dried in the furnace to turn it into (dry) sponge. W Riverwaterlogged Sponge=Flusswassergetränkter Schwamm This is a sponge soaking wet with river water. It can be dried in the furnace to turn it into (dry) sponge. When there's an empty bucket in the fuel slot of the furnace, the river water will pour into the bucket.=Dies ist ein Schwamm, der triefend nass und voller Flusswasser ist. Er kann in einem Ofen getrocknet werden, um ihn zu einem (trockenem) Schwamm zu verwandeln. Wenn es einen leeren Eimer im Brennstoffplatz des Ofens gibt, wird das Flusswasser in den Eimer fließen. A sponge becomes riverwaterlogged (instead of waterlogged) if it sucks up more river water than (normal) water.=Ein Schwamm wird flusswassergetränkt (statt wassergetränkt), wenn er mehr Flusswasser als (normales) Wasser aufsaugt. +Removes water on contact=Entfernt Wasser bei Berührung +Can be dried in furnace=Kann im Ofen getrocknet werden diff --git a/mods/ITEMS/mcl_sponges/locale/template.txt b/mods/ITEMS/mcl_sponges/locale/template.txt index 2de97226..9307c2cd 100644 --- a/mods/ITEMS/mcl_sponges/locale/template.txt +++ b/mods/ITEMS/mcl_sponges/locale/template.txt @@ -6,3 +6,5 @@ A waterlogged sponge can be dried in the furnace to turn it into (dry) sponge. W Riverwaterlogged Sponge= This is a sponge soaking wet with river water. It can be dried in the furnace to turn it into (dry) sponge. When there's an empty bucket in the fuel slot of the furnace, the river water will pour into the bucket.= A sponge becomes riverwaterlogged (instead of waterlogged) if it sucks up more river water than (normal) water.= +Removes water on contact= +Can be dried in furnace= diff --git a/mods/ITEMS/mcl_throwing/locale/mcl_throwing.de.tr b/mods/ITEMS/mcl_throwing/locale/mcl_throwing.de.tr index 61ad254f..f896c2ed 100644 --- a/mods/ITEMS/mcl_throwing/locale/mcl_throwing.de.tr +++ b/mods/ITEMS/mcl_throwing/locale/mcl_throwing.de.tr @@ -7,3 +7,6 @@ Egg=Ei Eggs can be thrown or launched from a dispenser and breaks on impact. There is a small chance that 1 or even 4 chicks will pop out of the egg.=Eier können geworfen werden oder aus einem Werfer abgefeuert werden. Sie zerbrechen beim Einschlag. Mit etwas Glück werden aus dem Ei eines oder sogar 4 Küken hinausfallen. Ender Pearl=Enderperle An ender pearl is an item which can be used for teleportation at the cost of health. It can be thrown and teleport the thrower to its impact location when it hits a solid block or a plant. Each teleportation hurts the user by 5 hit points.=Eine Enderperle ist ein Gegenstand, der zur Teleportation benutzt werden kann auf Kosten der Gesundheit. Sie kann geworfen werden und teleportiert den Werfer zur Einschlagsstelle, wenn sie einen Block oder eine Pflanze trifft. Jede Teleportation verletzt den Werfer um 5 Trefferpunkte. +Throwable=Wurfgeschoss +Chance to hatch chicks when broken=Chance, dass beim Aufprall Küken schlüpfen +Teleports you on impact for cost of 5 HP=Teleportiert Sie beim Aufprall, kostet 5 TP diff --git a/mods/ITEMS/mcl_throwing/locale/template.txt b/mods/ITEMS/mcl_throwing/locale/template.txt index c6c9313f..9bb4a581 100644 --- a/mods/ITEMS/mcl_throwing/locale/template.txt +++ b/mods/ITEMS/mcl_throwing/locale/template.txt @@ -7,3 +7,6 @@ Egg= Eggs can be thrown or launched from a dispenser and breaks on impact. There is a small chance that 1 or even 4 chicks will pop out of the egg.= Ender Pearl= An ender pearl is an item which can be used for teleportation at the cost of health. It can be thrown and teleport the thrower to its impact location when it hits a solid block or a plant. Each teleportation hurts the user by 5 hit points.= +Throwable= +Chance to hatch chicks when broken= +Teleports you on impact for cost of 5 HP= diff --git a/mods/ITEMS/mcl_tnt/init.lua b/mods/ITEMS/mcl_tnt/init.lua index 4218af00..42fbb7b5 100644 --- a/mods/ITEMS/mcl_tnt/init.lua +++ b/mods/ITEMS/mcl_tnt/init.lua @@ -98,7 +98,7 @@ minetest.register_node("mcl_tnt:tnt", { description = S("TNT"), paramtype = "light", sunlight_propagates = true, - _tt_help = S("Ignited by tools, explosions, fire, lava, redstone").."\n"..S("Explosion radius: @1", tostring(TNT_RANGE)), + _tt_help = S("Ignited by tools, explosions, fire, lava, redstone power").."\n"..S("Explosion radius: @1", tostring(TNT_RANGE)), _doc_items_longdesc = longdesc, _doc_items_usagehelp = S("Place the TNT and ignite it with one of the methods above. Quickly get in safe distance. The TNT will start to be affected by gravity and explodes in 4 seconds."), groups = { dig_immediate = 3, tnt = 1, enderman_takable=1 }, diff --git a/mods/ITEMS/mcl_tnt/locale/mcl_tnt.de.tr b/mods/ITEMS/mcl_tnt/locale/mcl_tnt.de.tr index 6f85f4cf..71c99cde 100644 --- a/mods/ITEMS/mcl_tnt/locale/mcl_tnt.de.tr +++ b/mods/ITEMS/mcl_tnt/locale/mcl_tnt.de.tr @@ -4,3 +4,5 @@ TNT=TNT An explosive device. When it explodes, it will hurt living beings and destroy blocks around it. TNT has an explosion radius of @1. With a small chance, blocks may drop as an item (as if being mined) rather than being destroyed. TNT can be ignited by tools, explosions, fire, lava and redstone signals.=Ein Sprengstoff. Wenn er explodiert, wird er Lebewesen verletzen und Blöcke in der Nähe zerstören. TNT hat einen Explosionsradius von @1. Mit einer geringen Wahrscheinlichkeit werden Blöcke als Gegenstand abfallen (als ob sie abgebaut worden wären), anstatt völlig zerstört zu werden. TNT kann mit Werkzeugen, Explosionen, Feuer, Lava und Redstone-Signalen angezündet werden. An explosive device. When it explodes, it will hurt living beings. TNT has an explosion radius of @1. TNT can be ignited by tools, explosions, fire, lava and redstone signals.=Ein Sprengstoff. Wenn er explodiert, wird er Lebewesen verletzen. TNT hat einen Explosionsradius von @1. TNT kann mit Werkzeugen, Explosionen, Feuer, Lava und Redstone-Signalen angezündet werden. Place the TNT and ignite it with one of the methods above. Quickly get in safe distance. The TNT will start to be affected by gravity and explodes in 4 seconds.=Platizeren sie das TNT und zünden Sie es mit einer der obigen Methoden an. Begeben Sie sich rasch in eine sichere Entfernung. Das TNT wird anfangen, von der Schwerkraft beeinflusst zu sein und explodiert in 4 Sekunden. +Ignited by tools, explosions, fire, lava, redstone power=Anzündbar von Werkzeugen, Explosionen, Feuer, Redstoneeergie +Explosion radius: @1=Explosionsradius: @1 diff --git a/mods/ITEMS/mcl_tnt/locale/template.txt b/mods/ITEMS/mcl_tnt/locale/template.txt index c2c3c47e..0361b76b 100644 --- a/mods/ITEMS/mcl_tnt/locale/template.txt +++ b/mods/ITEMS/mcl_tnt/locale/template.txt @@ -4,3 +4,5 @@ TNT= An explosive device. When it explodes, it will hurt living beings and destroy blocks around it. TNT has an explosion radius of @1. With a small chance, blocks may drop as an item (as if being mined) rather than being destroyed. TNT can be ignited by tools, explosions, fire, lava and redstone signals.= An explosive device. When it explodes, it will hurt living beings. TNT has an explosion radius of @1. TNT can be ignited by tools, explosions, fire, lava and redstone signals.= Place the TNT and ignite it with one of the methods above. Quickly get in safe distance. The TNT will start to be affected by gravity and explodes in 4 seconds.= +Ignited by tools, explosions, fire, lava, redstone power= +Explosion radius: @1= From 312b5aeb738d7b406415e82ab3cc22916fe41df0 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Thu, 12 Mar 2020 01:45:24 +0100 Subject: [PATCH 581/737] Make carpets flammable --- mods/ITEMS/mcl_wool/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_wool/init.lua b/mods/ITEMS/mcl_wool/init.lua index 95958ddf..9e3785b3 100644 --- a/mods/ITEMS/mcl_wool/init.lua +++ b/mods/ITEMS/mcl_wool/init.lua @@ -76,7 +76,7 @@ for _, row in ipairs(wool.dyes) do tiles = {texture..".png"}, wield_image = texture..".png", wield_scale = { x=1, y=1, z=0.5 }, - groups = {handy=1, carpet=1,attached_node=1,dig_by_water=1,deco_block=1,[color_group]=1}, + groups = {handy=1, carpet=1,attached_node=1,flammable=1,dig_by_water=1,deco_block=1,[color_group]=1}, sounds = mcl_sounds.node_sound_wool_defaults(), paramtype = "light", sunlight_propagates = true, From 7ee2340f5cb778b690b29561906a0db452bfaa99 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Thu, 12 Mar 2020 01:55:47 +0100 Subject: [PATCH 582/737] Show chat message if using minimap incorrectly --- mods/ITEMS/mcl_maps/init.lua | 39 +++++++++++++++-------- mods/ITEMS/mcl_maps/locale/mcl_maps.de.tr | 1 + mods/ITEMS/mcl_maps/locale/template.txt | 1 + 3 files changed, 27 insertions(+), 14 deletions(-) diff --git a/mods/ITEMS/mcl_maps/init.lua b/mods/ITEMS/mcl_maps/init.lua index 4e6eefc4..b15b27d3 100644 --- a/mods/ITEMS/mcl_maps/init.lua +++ b/mods/ITEMS/mcl_maps/init.lua @@ -28,6 +28,28 @@ minetest.register_craftitem("mcl_maps:empty_map", { stack_max = 64, }) +-- Checks if player is still allowed to display the minimap +local function update_minimap(player) + local creative = minetest.settings:get_bool("creative_mode") + if creative then + player:hud_set_flags({minimap=true, minimap_radar = true}) + else + if has_item_in_hotbar(player, "mcl_maps:filled_map") then + player:hud_set_flags({minimap = true, minimap_radar = false}) + else + player:hud_set_flags({minimap = false, minimap_radar = false}) + end + end +end + +-- Remind player how to use the minimap correctly +local function use_minimap(itemstack, player, pointed_thing) + if player and player:is_player() then + update_minimap(player) + minetest.chat_send_player(player:get_player_name(), S("Use the minimap key to show the map.")) + end +end + -- Enables minimap if carried in hotbar. -- If this item is NOT in the hotbar, the minimap is unavailable -- Note: This is not at all like Minecraft right now. Minetest's minimap is pretty overpowered, it @@ -41,6 +63,9 @@ minetest.register_craftitem("mcl_maps:filled_map", { groups = { tool = 1 }, inventory_image = "mcl_maps_map_filled.png^(mcl_maps_map_filled_markings.png^[colorize:#000000)", stack_max = 1, + + on_use = use_minimap, + on_secondary_use = use_minimap, }) minetest.register_craft({ @@ -64,20 +89,6 @@ local function has_item_in_hotbar(player, item) return false end --- Checks if player is still allowed to display the minimap -local function update_minimap(player) - local creative = minetest.settings:get_bool("creative_mode") - if creative then - player:hud_set_flags({minimap=true, minimap_radar = true}) - else - if has_item_in_hotbar(player, "mcl_maps:filled_map") then - player:hud_set_flags({minimap = true, minimap_radar = false}) - else - player:hud_set_flags({minimap = false, minimap_radar = false}) - end - end -end - minetest.register_on_joinplayer(function(player) update_minimap(player) end) diff --git a/mods/ITEMS/mcl_maps/locale/mcl_maps.de.tr b/mods/ITEMS/mcl_maps/locale/mcl_maps.de.tr index c8536372..6d1836b4 100644 --- a/mods/ITEMS/mcl_maps/locale/mcl_maps.de.tr +++ b/mods/ITEMS/mcl_maps/locale/mcl_maps.de.tr @@ -7,3 +7,4 @@ Maps show your surroundings as you explore the world.=Karten zeigen Ihre Umgebun Hold the map in any of the hotbar slots. This allows you to access the minimap by pressing the minimap key (see controls settings).=Halten Sie die Karte in einen beliebigen Platz in der Schnellleiste. Damit können Sie jetzt die Übersichtskarte aktivieren, indem Sie die Taste zum Umschalten der Karte drücken (siehe Tastenbelegung). In Creative Mode, you don't need this item; the minimap is always available.=Im Kreativmodus brauchen Sie diesen Gegenstand nicht; die Übersichtskarte ist immer verfügbar. Enables minimap=Aktiviert Übersichtskarte +Use the minimap key to show the map.=Taste „Karte an/aus“ benutzen, um die Karte zu betrachten. diff --git a/mods/ITEMS/mcl_maps/locale/template.txt b/mods/ITEMS/mcl_maps/locale/template.txt index b7f850a9..061ed45e 100644 --- a/mods/ITEMS/mcl_maps/locale/template.txt +++ b/mods/ITEMS/mcl_maps/locale/template.txt @@ -7,3 +7,4 @@ Maps show your surroundings as you explore the world.= Hold the map in any of the hotbar slots. This allows you to access the minimap by pressing the minimap key (see controls settings).= In Creative Mode, you don't need this item; the minimap is always available.= Enables minimap= +Use the minimap key to show the map.= From 6b529e1204ae39d86f1b50a57acc64986f8fe02c Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Thu, 12 Mar 2020 02:29:30 +0100 Subject: [PATCH 583/737] Colorize some item tooltips --- mods/ENTITIES/mobs_mc/1_items_default.lua | 2 +- mods/HELP/mcl_tt/init.lua | 2 +- mods/ITEMS/mcl_core/craftitems.lua | 3 ++- mods/ITEMS/mcl_core/nodes_cactuscane.lua | 2 +- mods/ITEMS/mcl_farming/locale/mcl_farming.de.tr | 2 +- mods/ITEMS/mcl_farming/potatoes.lua | 2 +- mods/ITEMS/mcl_fishing/init.lua | 2 +- mods/ITEMS/mcl_mobitems/init.lua | 8 ++++---- mods/ITEMS/mcl_nether/init.lua | 2 +- mods/ITEMS/mcl_throwing/init.lua | 2 +- 10 files changed, 14 insertions(+), 13 deletions(-) diff --git a/mods/ENTITIES/mobs_mc/1_items_default.lua b/mods/ENTITIES/mobs_mc/1_items_default.lua index a86bc012..8d67823b 100644 --- a/mods/ENTITIES/mobs_mc/1_items_default.lua +++ b/mods/ENTITIES/mobs_mc/1_items_default.lua @@ -532,7 +532,7 @@ if c("totem") then -- Totem of Undying minetest.register_craftitem("mobs_mc:totem", { description = S("Totem of Undying"), - _tt_help = S("Protects you from death while wielding it"), + _tt_help = minetest.colorize("#00FF00", S("Protects you from death while wielding it")), _doc_items_longdesc = S("A totem of undying is a rare artifact which may safe you from certain death."), _doc_items_usagehelp = S("The totem only works while you hold it in your hand. If you receive fatal damage, you are saved from death and you get a second chance with 1 HP. The totem is destroyed in the process, however."), inventory_image = "mcl_totems_totem.png", diff --git a/mods/HELP/mcl_tt/init.lua b/mods/HELP/mcl_tt/init.lua index 445ec09b..569dbe68 100644 --- a/mods/HELP/mcl_tt/init.lua +++ b/mods/HELP/mcl_tt/init.lua @@ -71,7 +71,7 @@ end) tt.register_snippet(function(itemstring) local def = minetest.registered_items[itemstring] if minetest.get_item_group(itemstring, "crush_after_fall") == 1 then - return S("Deals damage when falling") + return S("Deals damage when falling"), "#FFFF00" end end) diff --git a/mods/ITEMS/mcl_core/craftitems.lua b/mods/ITEMS/mcl_core/craftitems.lua index 3b980f1d..ab2bcd1f 100644 --- a/mods/ITEMS/mcl_core/craftitems.lua +++ b/mods/ITEMS/mcl_core/craftitems.lua @@ -146,7 +146,8 @@ minetest.register_craftitem("mcl_core:apple", { -- TODO: Status effects minetest.register_craftitem("mcl_core:apple_gold", { - description = minetest.colorize("#55FFFF", S("Golden Apple")), + -- TODO: Add special highlight color when this item is special + description = S("Golden Apple"), _doc_items_longdesc = S("Golden apples are precious food items which can be eaten."), wield_image = "mcl_core_apple_golden.png", inventory_image = "mcl_core_apple_golden.png", diff --git a/mods/ITEMS/mcl_core/nodes_cactuscane.lua b/mods/ITEMS/mcl_core/nodes_cactuscane.lua index 326182db..e8555f14 100644 --- a/mods/ITEMS/mcl_core/nodes_cactuscane.lua +++ b/mods/ITEMS/mcl_core/nodes_cactuscane.lua @@ -4,7 +4,7 @@ local S = minetest.get_translator("mcl_core") minetest.register_node("mcl_core:cactus", { description = S("Cactus"), - _tt_help = S("Grows on sand").."\n"..S("Contact damage: @1 per half second", 1), + _tt_help = S("Grows on sand").."\n"..minetest.colorize("#FFFF00", S("Contact damage: @1 per half second", 1)), _doc_items_longdesc = S("This is a piece of cactus commonly found in dry areas, especially deserts. Over time, cacti will grow up to 3 blocks high on sand or red sand. A cactus hurts living beings touching it with a damage of 1 HP every half second. When a cactus block is broken, all cactus blocks connected above it will break as well."), _doc_items_usagehelp = S("A cactus can only be placed on top of another cactus or any sand."), drawtype = "nodebox", diff --git a/mods/ITEMS/mcl_farming/locale/mcl_farming.de.tr b/mods/ITEMS/mcl_farming/locale/mcl_farming.de.tr index 0295e620..54b35630 100644 --- a/mods/ITEMS/mcl_farming/locale/mcl_farming.de.tr +++ b/mods/ITEMS/mcl_farming/locale/mcl_farming.de.tr @@ -93,7 +93,7 @@ To carve a face into the pumpkin, use the shears on the side you want to carve.= Use the “Place” key on an animal to try to feed it wheat.=Benutzen Sie die „Platzieren“-Taste auf einem Tier, um zu versuchen, es zu füttern. Grows on farmland=Wächst auf Ackerboden Turns block into farmland=Macht Block zu Ackerboden -60% chance of poisoning=60% Vergiftungsgefahr +60% chance of poisoning=60% Vergiftungswahrscheinlichkeit Surface for crops=Boden für Nutzpflanzen Can become wet=Kann nass werden Uses: @1=Verwendungen: @1 diff --git a/mods/ITEMS/mcl_farming/potatoes.lua b/mods/ITEMS/mcl_farming/potatoes.lua index a4049cce..2d8978df 100644 --- a/mods/ITEMS/mcl_farming/potatoes.lua +++ b/mods/ITEMS/mcl_farming/potatoes.lua @@ -118,7 +118,7 @@ minetest.register_craftitem("mcl_farming:potato_item_baked", { minetest.register_craftitem("mcl_farming:potato_item_poison", { description = S("Poisonous Potato"), - _tt_help = S("60% chance of poisoning"), + _tt_help = minetest.colorize("#FFFF00", S("60% chance of poisoning")), _doc_items_longdesc = S("This potato doesn't look too healthy. You can eat it to restore hunger points, but there's a 60% chance it will poison you briefly."), stack_max = 64, inventory_image = "farming_potato_poison.png", diff --git a/mods/ITEMS/mcl_fishing/init.lua b/mods/ITEMS/mcl_fishing/init.lua index 30c1826b..192a8f6e 100644 --- a/mods/ITEMS/mcl_fishing/init.lua +++ b/mods/ITEMS/mcl_fishing/init.lua @@ -418,7 +418,7 @@ minetest.register_craftitem("mcl_fishing:clownfish_raw", { -- TODO: Add real status effect minetest.register_craftitem("mcl_fishing:pufferfish_raw", { description = S("Pufferfish"), - _tt_help = S("Very poisonous"), + _tt_help = minetest.colorize("#FFFF00", S("Very poisonous")), _doc_items_longdesc = S("Pufferfish are a common species of fish and can be obtained by fishing. They can technically be eaten, but they are very bad for humans. Eating a pufferfish only restores 1 hunger point and will poison you very badly (which drains your health non-fatally) and causes serious food poisoning (which increases your hunger)."), inventory_image = "mcl_fishing_pufferfish_raw.png", on_place = minetest.item_eat(1), diff --git a/mods/ITEMS/mcl_mobitems/init.lua b/mods/ITEMS/mcl_mobitems/init.lua index 9cebf1f3..3e6aef48 100644 --- a/mods/ITEMS/mcl_mobitems/init.lua +++ b/mods/ITEMS/mcl_mobitems/init.lua @@ -4,7 +4,7 @@ local S = minetest.get_translator("mcl_mobitems") minetest.register_craftitem("mcl_mobitems:rotten_flesh", { description = S("Rotten Flesh"), - _tt_help = S("80% chance of food poisoning"), + _tt_help = minetest.colorize("#FFFF00", S("80% chance of food poisoning")), _doc_items_longdesc = S("Yuck! This piece of flesh clearly has seen better days. If you're really desperate, you can eat it to restore a few hunger points, but there's a 80% chance it causes food poisoning, which increases your hunger for a while."), inventory_image = "mcl_mobitems_rotten_flesh.png", wield_image = "mcl_mobitems_rotten_flesh.png", @@ -65,7 +65,7 @@ minetest.register_craftitem("mcl_mobitems:cooked_beef", { minetest.register_craftitem("mcl_mobitems:chicken", { description = S("Raw Chicken"), - _tt_help = S("30% chance of food poisoning"), + _tt_help = minetest.colorize("#FFFF00", S("30% chance of food poisoning")), _doc_items_longdesc = S("Raw chicken is a food item which is not safe to consume. You can eat it to restore a few hunger points, but there's a 30% chance to suffer from food poisoning, which increases your hunger rate for a while. Cooking raw chicken will make it safe to eat and increases its nutritional value."), inventory_image = "mcl_mobitems_chicken_raw.png", wield_image = "mcl_mobitems_chicken_raw.png", @@ -148,7 +148,7 @@ end -- TODO: Clear *all* status effects minetest.register_craftitem("mcl_mobitems:milk_bucket", { description = S("Milk"), - _tt_help = S("Cures poison"), + _tt_help = minetest.colorize("#00FF00", S("Cures poison")), _doc_items_longdesc = S("Milk is very refreshing and can be obtained by using a bucket on a cow. Drinking it will cure all forms of poisoning, but restores no hunger points."), _doc_items_usagehelp = "Rightclick to drink the milk.", inventory_image = "mcl_mobitems_bucket_milk.png", @@ -162,7 +162,7 @@ minetest.register_craftitem("mcl_mobitems:milk_bucket", { minetest.register_craftitem("mcl_mobitems:spider_eye", { description = S("Spider Eye"), - _tt_help = S("Poisonous"), + _tt_help = minetest.colorize("#FFFF00", S("Poisonous")), _doc_items_longdesc = S("Spider eyes are used mainly in crafting. If you're really desperate, you can eat a spider eye, but it will poison you briefly."), inventory_image = "mcl_mobitems_spider_eye.png", wield_image = "mcl_mobitems_spider_eye.png", diff --git a/mods/ITEMS/mcl_nether/init.lua b/mods/ITEMS/mcl_nether/init.lua index 50c0bf66..07c575f0 100644 --- a/mods/ITEMS/mcl_nether/init.lua +++ b/mods/ITEMS/mcl_nether/init.lua @@ -85,7 +85,7 @@ minetest.register_node("mcl_nether:netherrack", { minetest.register_node("mcl_nether:magma", { description = S("Magma Block"), - _tt_help = S("Burns your feet"), + _tt_help = minetest.colorize("#FFFF00", S("Burns your feet")), _doc_items_longdesc = S("Magma blocks are hot solid blocks which hurt anyone standing on it, unless they have fire resistance. Starting a fire on this block will create an eternal fire."), stack_max = 64, tiles = {{name="mcl_nether_magma.png", animation={type="vertical_frames", aspect_w=32, aspect_h=32, length=1.5}}}, diff --git a/mods/ITEMS/mcl_throwing/init.lua b/mods/ITEMS/mcl_throwing/init.lua index 7e9249a6..9dcbb2f2 100644 --- a/mods/ITEMS/mcl_throwing/init.lua +++ b/mods/ITEMS/mcl_throwing/init.lua @@ -419,7 +419,7 @@ minetest.register_craftitem("mcl_throwing:egg", { -- Ender Pearl minetest.register_craftitem("mcl_throwing:ender_pearl", { description = S("Ender Pearl"), - _tt_help = S("Throwable").."\n"..S("Teleports you on impact for cost of 5 HP"), + _tt_help = S("Throwable").."\n"..minetest.colorize("#FFFF00", S("Teleports you on impact for cost of 5 HP")), _doc_items_longdesc = S("An ender pearl is an item which can be used for teleportation at the cost of health. It can be thrown and teleport the thrower to its impact location when it hits a solid block or a plant. Each teleportation hurts the user by 5 hit points."), _doc_items_usagehelp = how_to_throw, wield_image = "mcl_throwing_ender_pearl.png", From 28b208549222322480fa6bf59956fd7da4252453 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Thu, 12 Mar 2020 02:35:02 +0100 Subject: [PATCH 584/737] Bump golden apple hunger points to 20 --- mods/ITEMS/mcl_core/craftitems.lua | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mods/ITEMS/mcl_core/craftitems.lua b/mods/ITEMS/mcl_core/craftitems.lua index ab2bcd1f..9dc9d370 100644 --- a/mods/ITEMS/mcl_core/craftitems.lua +++ b/mods/ITEMS/mcl_core/craftitems.lua @@ -153,8 +153,8 @@ minetest.register_craftitem("mcl_core:apple_gold", { inventory_image = "mcl_core_apple_golden.png", stack_max = 64, -- TODO: Reduce to 4 when it's ready - on_place = minetest.item_eat(8), - on_secondary_use = minetest.item_eat(8), - groups = { food = 2, eatable = 8, can_eat_when_full = 1 }, + on_place = minetest.item_eat(20), + on_secondary_use = minetest.item_eat(20), + groups = { food = 2, eatable = 20, can_eat_when_full = 1 }, _mcl_saturation = 9.6, }) From f0ba36412033ba3c8023d60f3d3646fa888a2ca6 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Thu, 12 Mar 2020 06:45:23 +0100 Subject: [PATCH 585/737] Fix crash in mcl_maps --- mods/ITEMS/mcl_maps/init.lua | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/mods/ITEMS/mcl_maps/init.lua b/mods/ITEMS/mcl_maps/init.lua index b15b27d3..4c919c34 100644 --- a/mods/ITEMS/mcl_maps/init.lua +++ b/mods/ITEMS/mcl_maps/init.lua @@ -28,6 +28,18 @@ minetest.register_craftitem("mcl_maps:empty_map", { stack_max = 64, }) +local function has_item_in_hotbar(player, item) + -- Requirement: player carries the tool in the hotbar + local inv = player:get_inventory() + local hotbar = player:hud_get_hotbar_itemcount() + for i=1, hotbar do + if inv:get_stack("main", i):get_name() == item then + return true + end + end + return false +end + -- Checks if player is still allowed to display the minimap local function update_minimap(player) local creative = minetest.settings:get_bool("creative_mode") @@ -77,18 +89,6 @@ minetest.register_craft({ } }) -local function has_item_in_hotbar(player, item) - -- Requirement: player carries the tool in the hotbar - local inv = player:get_inventory() - local hotbar = player:hud_get_hotbar_itemcount() - for i=1, hotbar do - if inv:get_stack("main", i):get_name() == item then - return true - end - end - return false -end - minetest.register_on_joinplayer(function(player) update_minimap(player) end) From 5a03ce6dacfa7315a74e86502d58e505d95d1fb7 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sat, 14 Mar 2020 07:17:23 +0100 Subject: [PATCH 586/737] Remove pointless content ID loading in mcl_hoppers --- mods/ITEMS/mcl_hoppers/init.lua | 2 -- 1 file changed, 2 deletions(-) diff --git a/mods/ITEMS/mcl_hoppers/init.lua b/mods/ITEMS/mcl_hoppers/init.lua index fa3b2b6c..d67793e2 100644 --- a/mods/ITEMS/mcl_hoppers/init.lua +++ b/mods/ITEMS/mcl_hoppers/init.lua @@ -1,7 +1,5 @@ local S = minetest.get_translator("mcl_hoppers") -local chest = minetest.get_content_id("mcl_chests:chest") - --[[ BEGIN OF NODE DEFINITIONS ]] local mcl_hoppers_formspec = From 73dc0a64b54c43419f26a0ccb572c8540dd09332 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sat, 14 Mar 2020 21:38:59 +0100 Subject: [PATCH 587/737] Update bed formspec --- mods/ITEMS/mcl_beds/functions.lua | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/mods/ITEMS/mcl_beds/functions.lua b/mods/ITEMS/mcl_beds/functions.lua index f62e68e6..802a64da 100644 --- a/mods/ITEMS/mcl_beds/functions.lua +++ b/mods/ITEMS/mcl_beds/functions.lua @@ -199,11 +199,11 @@ end local function update_formspecs(finished) local ges = #minetest.get_connected_players() - local form_n = "size[8,15;true]" + local form_n = "size[6,5;true]" local all_in_bed = ges == player_in_bed local night_skip = is_night_skip_enabled() - local button_leave = "button_exit[2,12;4,0.75;leave;"..F(S("Leave bed")).."]" - local button_abort = "button_exit[2,12;4,0.75;leave;"..F(S("Abort sleep")).."]" + local button_leave = "button_exit[1,3;4,0.75;leave;"..F(S("Leave bed")).."]" + local button_abort = "button_exit[1,3;4,0.75;leave;"..F(S("Abort sleep")).."]" local bg_presleep = "bgcolor[#00000080;true]" local bg_sleep = "bgcolor[#000000FF;true]" @@ -227,7 +227,7 @@ local function update_formspecs(finished) form_n = form_n .. bg_presleep form_n = form_n .. button_leave end - form_n = form_n .. "label[2.2,7.5;"..F(text).."]" + form_n = form_n .. "label[1,1;"..F(text).."]" else local text if night_skip then @@ -239,7 +239,7 @@ local function update_formspecs(finished) form_n = form_n .. bg_presleep form_n = form_n .. button_leave end - form_n = form_n .. "label[2.2,7.5;"..F(text).."]" + form_n = form_n .. "label[1,1;"..F(text).."]" end for name,_ in pairs(mcl_beds.player) do From 2569eae5d80601033474026d279d1a230d2c377a Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sun, 15 Mar 2020 08:23:40 +0100 Subject: [PATCH 588/737] Don't make sprint particles in liquids --- mods/PLAYER/mcl_sprint/init.lua | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mods/PLAYER/mcl_sprint/init.lua b/mods/PLAYER/mcl_sprint/init.lua index c1915290..efd39ae6 100644 --- a/mods/PLAYER/mcl_sprint/init.lua +++ b/mods/PLAYER/mcl_sprint/init.lua @@ -86,7 +86,8 @@ minetest.register_globalstep(function(dtime) -- Sprint dirt particles local numParticles = math.random(1, 2) local playerNode = minetest.get_node({x=playerPos["x"], y=playerPos["y"]-1, z=playerPos["z"]}) - if playerNode["name"] ~= "air" then + local def = minetest.registered_nodes[playerNode.name] + if def and def.walkable then for i=1, numParticles, 1 do minetest.add_particle({ pos = {x=playerPos["x"]+math.random(-1,1)*math.random()/2,y=playerPos["y"]+0.1,z=playerPos["z"]+math.random(-1,1)*math.random()/2}, From 3772dd51ccfee94ee0fc299f6f607fab3478c744 Mon Sep 17 00:00:00 2001 From: wuniversales Date: Sun, 15 Mar 2020 08:32:00 +0100 Subject: [PATCH 589/737] Update Spanish translation --- .../mcl_minecarts/locale/mcl_minecarts.es.tr | 6 +++--- mods/HUD/mcl_inventory/locale/mcl_inventory.es.tr | 2 +- .../mcl_droppers/locale/mcl_droppers.es.tr | 2 +- .../locale/mesecons_solarpanel.es.tr | 2 +- mods/ITEMS/mcl_beds/locale/mcl_beds.es.tr | 8 ++++---- mods/ITEMS/mcl_chests/locale/mcl_chests.es.tr | 2 +- mods/ITEMS/mcl_core/locale/mcl_core.es.tr | 10 +++++----- mods/ITEMS/mcl_doors/locale/mcl_doors.es.tr | 14 +++++++------- mods/ITEMS/mcl_dye/locale/mcl_dye.es.tr | 6 +++--- mods/ITEMS/mcl_fire/locale/mcl_fire.es.tr | 2 +- mods/ITEMS/mcl_tnt/locale/mcl_tnt.es.tr | 4 ++-- 11 files changed, 29 insertions(+), 29 deletions(-) diff --git a/mods/ENTITIES/mcl_minecarts/locale/mcl_minecarts.es.tr b/mods/ENTITIES/mcl_minecarts/locale/mcl_minecarts.es.tr index 135f4769..06ee2ca6 100644 --- a/mods/ENTITIES/mcl_minecarts/locale/mcl_minecarts.es.tr +++ b/mods/ENTITIES/mcl_minecarts/locale/mcl_minecarts.es.tr @@ -14,10 +14,10 @@ Rail=Raíl Rails can be used to build transport tracks for minecarts. Normal rails slightly slow down minecarts due to friction.=Los rieles se pueden usar para construir vías de transporte para vagonetas. Los rieles normales ralentizan ligeramente las vagonetas debido a la fricción. Powered Rail=Raíl propulsor Rails can be used to build transport tracks for minecarts. Powered rails are able to accelerate and brake minecarts.=Los rieles se pueden usar para construir vías de transporte para vagonetas. Los railes propulsores pueden acelerar y frenar las vagonetas. -Without redstone power, the rail will brake minecarts. To make this rail accelerate minecarts, power it with redstone power.=Sin energía de piedra roja, el riel frenará las vagonetas. Para hacer que este riel acelere las vagonetas, aliméntalo con piedra roja. +Without redstone power, the rail will brake minecarts. To make this rail accelerate minecarts, power it with redstone power.=Sin energía de redstone, el riel frenará las vagonetas. Para hacer que este riel acelere las vagonetas, aliméntalo con redstone. Activator Rail=Raíl activador Rails can be used to build transport tracks for minecarts. Activator rails are used to activate special minecarts.=Los rieles se pueden usar para construir vías de transporte para vagonetas. Los railes activador se utilizan para activar una vagoneta especial. -To make this rail activate minecarts, power it with redstone power and send a minecart over this piece of rail.=Para hacer que este riel active las vagonetas, enciéndelo con energía de piedra roja y envía una vagoneta sobre este pedazo de riel. +To make this rail activate minecarts, power it with redstone power and send a minecart over this piece of rail.=Para hacer que este riel active las vagonetas, enciéndelo con energía de redstone y envía una vagoneta sobre este pedazo de riel. Detector Rail=Raíl detector Rails can be used to build transport tracks for minecarts. A detector rail is able to detect a minecart above it and powers redstone mechanisms.=Los rieles se pueden usar para construir vías de transporte para vagonetas. Un raíl detector puede detectar una vagoneta sobre él y alimenta los mecanismos de redstone. -To detect a minecart and provide redstone power, connect it to redstone trails or redstone mechanisms and send any minecart over the rail.=Para detectar una vagoneta y proporcionar energía de piedra roja, conéctelo a los senderos de piedra roja o mecanismos de piedra roja y envíe cualquier vagoneta sobre el riel. +To detect a minecart and provide redstone power, connect it to redstone trails or redstone mechanisms and send any minecart over the rail.=Para detectar una vagoneta y proporcionar energía de redstone, conéctelo a los senderos de redstone o mecanismos de redstone y envíe cualquier vagoneta sobre el riel. diff --git a/mods/HUD/mcl_inventory/locale/mcl_inventory.es.tr b/mods/HUD/mcl_inventory/locale/mcl_inventory.es.tr index a89ba39e..b8160256 100644 --- a/mods/HUD/mcl_inventory/locale/mcl_inventory.es.tr +++ b/mods/HUD/mcl_inventory/locale/mcl_inventory.es.tr @@ -5,7 +5,7 @@ Select player skin=Seleccionar skin Achievements=Logros Building Blocks=Bloques de construcción Decoration Blocks=Bloques de decoración -Redstone=Piedra roja +Redstone=Redstone Transportation=Transporte Miscellaneous=Variado Search Items=Buscar artículos diff --git a/mods/ITEMS/REDSTONE/mcl_droppers/locale/mcl_droppers.es.tr b/mods/ITEMS/REDSTONE/mcl_droppers/locale/mcl_droppers.es.tr index 6ebedc46..8fd8104a 100644 --- a/mods/ITEMS/REDSTONE/mcl_droppers/locale/mcl_droppers.es.tr +++ b/mods/ITEMS/REDSTONE/mcl_droppers/locale/mcl_droppers.es.tr @@ -1,7 +1,7 @@ # textdomain: mcl_droppers Dropper=Soltador A dropper is a redstone component and a container with 9 inventory slots which, when supplied with redstone power, drops an item or puts it into a container in front of it.=Un Soltador es un componente de redstone y un contenedor con 9 ranuras de inventario que, cuando se suministra con redstone power, deja caer un artículo o lo coloca en un contenedor frente a él. -Droppers can be placed in 6 possible directions, items will be dropped out of the hole. Use the dropper to access its inventory. Supply it with redstone energy once to make the dropper drop or transfer a random item.=Los soltadores se pueden colocar en 6 direcciones posibles, los artículos se sacarán del agujero. Usa el cuentagotas para acceder a su inventario. Proporcione energía de piedra roja una vez para hacer que el soltador caiga o transfiera un elemento aleatorio. +Droppers can be placed in 6 possible directions, items will be dropped out of the hole. Use the dropper to access its inventory. Supply it with redstone energy once to make the dropper drop or transfer a random item.=Los soltadores se pueden colocar en 6 direcciones posibles, los artículos se sacarán del agujero. Usa el cuentagotas para acceder a su inventario. Proporcione energía de redstone una vez para hacer que el soltador caiga o transfiera un elemento aleatorio. Downwards-Facing Dropper=Soltador orientado hacia abajo Upwards-Facing Dropper=Soltador orientado hacia arriba Inventory=Inventario diff --git a/mods/ITEMS/REDSTONE/mesecons_solarpanel/locale/mesecons_solarpanel.es.tr b/mods/ITEMS/REDSTONE/mesecons_solarpanel/locale/mesecons_solarpanel.es.tr index f8b8c0de..986a16d8 100644 --- a/mods/ITEMS/REDSTONE/mesecons_solarpanel/locale/mesecons_solarpanel.es.tr +++ b/mods/ITEMS/REDSTONE/mesecons_solarpanel/locale/mesecons_solarpanel.es.tr @@ -1,6 +1,6 @@ # textdomain: mesecons_solarpanel Daylight Sensor=Sensor de luz solar -Daylight sensors are redstone components which provide redstone power when they are in sunlight and no power otherwise. They can also be inverted.=Los sensores de luz diurna son componentes de piedra roja que proporcionan energía de piedra roja cuando están bajo la luz solar y no tienen energía de otra manera. También se pueden invertir. +Daylight sensors are redstone components which provide redstone power when they are in sunlight and no power otherwise. They can also be inverted.=Los sensores de luz diurna son componentes de redstone que proporcionan energía de redstone cuando están bajo la luz solar y no tienen energía de otra manera. También se pueden invertir. Inverted Daylight Sensor=Sensor de luz solar invertido Use the daylight sensor to toggle its state.=Use el sensor de luz diurna para alternar su estado. In inverted state, they provide redstone power when they are not in sunlight and no power otherwise.=En estado invertido, proporcionan energía de redstone cuando no están bajo la luz solar y no tienen energía de otra manera. diff --git a/mods/ITEMS/mcl_beds/locale/mcl_beds.es.tr b/mods/ITEMS/mcl_beds/locale/mcl_beds.es.tr index 58fe5267..e03087d3 100644 --- a/mods/ITEMS/mcl_beds/locale/mcl_beds.es.tr +++ b/mods/ITEMS/mcl_beds/locale/mcl_beds.es.tr @@ -23,16 +23,16 @@ Lime Bed=Cama verde lima Light Blue Bed=Cama azul claro White Bed=Cama blanca You can't sleep, the bed's too far away!=¡No puedes dormir, la cama está muy lejos! -This bed is already occupied!=¡Esta cama ya está ocupada! +This bed is already occupied!=¡La cama ya está ocupada! You have to stop moving before going to bed!=¡Tienes que dejar de moverte antes de acostarte! You can't sleep now, monsters are nearby!=No puedes dormir ahora, ¡hay monstruos cerca! You can't sleep, the bed is obstructed!=¡No puedes dormir, la cama está obstruida! It's too dangerous to sleep here!=¡Es muy peligroso dormir aquí! -New respawn position set! But you can only sleep at night or during a thunderstorm.=¡Nueva posición de reaparición establecida! Pero solo puedes dormir por la noche o durante una tormenta eléctrica. -You can only sleep at night or during a thunderstorm.=Solo puedes dormir por la noche o durante una tormenta eléctrica. +New respawn position set! But you can only sleep at night or during a thunderstorm.=¡Nueva posición de reaparición establecida! Pero solo puedes dormir por la noche o durante tormentas eléctricas. +You can only sleep at night or during a thunderstorm.=Solo puedes dormir por la noche o durante tormentas eléctricas. New respawn position set!=¡Nueva posición de reaparición establecida! Leave bed=Salir de la cama -Abort sleep=Cancelar el sueño +Abort sleep=Levantarse Players in bed: @1/@2=Jugadores en la cama: @1/@2 Note: Night skip is disabled.=Nota: El salto nocturno está deshabilitado. You're sleeping.=Estás durmiendo. diff --git a/mods/ITEMS/mcl_chests/locale/mcl_chests.es.tr b/mods/ITEMS/mcl_chests/locale/mcl_chests.es.tr index 030f8052..9d44bacc 100644 --- a/mods/ITEMS/mcl_chests/locale/mcl_chests.es.tr +++ b/mods/ITEMS/mcl_chests/locale/mcl_chests.es.tr @@ -3,7 +3,7 @@ Chest=Cofre Chests are containers which provide 27 inventory slots. Chests can be turned into large chests with double the capacity by placing two chests next to each other.=Los cofres son contenedores que proporcionan 27 ranuras de inventario. Los cofres se pueden convertir en cofres grandes con el doble de capacidad colocando dos cofres uno al lado del otro. To access its inventory, rightclick it. When broken, the items will drop out.=Para acceder a su inventario, haga clic derecho. Cuando se rompen, los artículos se caerán. Trapped Chest=Cofre trampa -A trapped chest is a container which provides 27 inventory slots. When it is opened, it sends a redstone signal to its adjacent blocks as long it stays open. Trapped chests can be turned into large trapped chests with double the capacity by placing two trapped chests next to each other.=Un sofre trampa es un contenedor que proporciona 27 ranuras de inventario. Cuando se abre, envía una señal de piedra roja a sus bloques adyacentes siempre que permanezca abierto. Los cofres trampa se pueden convertir en grandes cofres trampa con el doble de capacidad colocando dos cofres atrapados uno al lado del otro. +A trapped chest is a container which provides 27 inventory slots. When it is opened, it sends a redstone signal to its adjacent blocks as long it stays open. Trapped chests can be turned into large trapped chests with double the capacity by placing two trapped chests next to each other.=Un sofre trampa es un contenedor que proporciona 27 ranuras de inventario. Cuando se abre, envía una señal de redstone a sus bloques adyacentes siempre que permanezca abierto. Los cofres trampa se pueden convertir en grandes cofres trampa con el doble de capacidad colocando dos cofres atrapados uno al lado del otro. Ender Chest=Cofre de ender Ender chests grant you access to a single personal interdimensional inventory with 27 slots. This inventory is the same no matter from which ender chest you access it from. If you put one item into one ender chest, you will find it in all other ender chests. Each player will only see their own items, but not the items of other players.=Los cofres Ender le otorgan acceso a un único inventario interdimensional personal con 27 ranuras. Este inventario es el mismo sin importar desde qué cofre de acceso accedas. Si pones un elemento en un cofre de ender, lo encontrarás en todos los demás cofres de ender. Cada jugador solo verá sus propios artículos, pero no los artículos de otros jugadores. Rightclick the ender chest to access your personal interdimensional inventory.=Haga clic derecho en el cofre ender para acceder a su inventario interdimensional personal. diff --git a/mods/ITEMS/mcl_core/locale/mcl_core.es.tr b/mods/ITEMS/mcl_core/locale/mcl_core.es.tr index 2750b9fa..1e1029c0 100644 --- a/mods/ITEMS/mcl_core/locale/mcl_core.es.tr +++ b/mods/ITEMS/mcl_core/locale/mcl_core.es.tr @@ -105,7 +105,7 @@ Frosted ice is a short-lived solid block. It melts into a water source within a Glass=Cristal Gold Ingot=Lingote de oro Gold Nugget=Pepita de oro -Gold Ore=Metal de oro +Gold Ore=Mena de oro Gold nuggets are very small pieces of molten gold; the main purpose is to create gold ingots.=Las pepitas de oro son piezas muy pequeñas de oro fundido; El objetivo principal es crear lingotes de oro. Golden Apple=Manzana dorada Golden apples are precious food items which can be eaten.=Las manzanas doradas son alimentos preciosos que se pueden comer. @@ -138,7 +138,7 @@ Lava is hot and rather dangerous. Don't touch it, it will hurt you a lot and it Light Blue Stained Glass=Cristal azul claro Light Grey Stained Glass=Cristal gris claro Lime Stained Glass=Cristal amarillo verdoso -Lit Redstone Ore=Mena de piedra roja encendida +Lit Redstone Ore=Mena de redstone encendida Magenta Stained Glass=Cristal magenta Molten gold. It is used to craft armor, tools, and whatnot.=Oro fundido Se utiliza para fabricar armaduras, herramientas y otras cosas. Molten iron. It is used to craft armor, tools, and whatnot.=Hierro fundido. Se utiliza para fabricar armaduras, herramientas y otras cosas. @@ -178,7 +178,7 @@ Red Stained Glass=Cristal rojo Red sand is found in large quantities in mesa biomes.=La arena roja se encuentra en grandes cantidades en los desiertos. Red sandstone is compressed red sand and is a rather soft kind of stone.=La arenisca roja es arena roja comprimida y es un tipo de piedra bastante suave. Redstone Ore=Mena de redstone -Redstone ore is commonly found near the bottom of the world. It glows when it is punched or walked upon.=El mineral piedra roja se encuentra comúnmente cerca del fondo del mundo. Brilla cuando es golpeado o pisado. +Redstone ore is commonly found near the bottom of the world. It glows when it is punched or walked upon.=El mineral redstone se encuentra comúnmente cerca del fondo del mundo. Brilla cuando es golpeado o pisado. Sand=Arena Sand is found in large quantities at beaches and deserts.=La arena se encuentra en grandes cantidades en playas y desiertos. Sandstone=Arenisca @@ -201,7 +201,7 @@ Spruce leaves are grown from spruce trees.=Las hojas de abeto se cultivan a part Stained glass is a decorative and mostly transparent block which comes in various different colors.=El vitral es un bloque decorativo y en su mayoría transparente que viene en varios colores diferentes. Stick=Palo Sticks are a very versatile crafting material; used in countless crafting recipes.=Los palos son un material de elaboración muy versátil; utilizado en innumerables recetas de elaboración. -Stone=Roca +Stone=Piedra Stone Bricks=Ladrillos de piedra Sugar=Azúcar Sugar Canes=Caña de azúcar @@ -246,4 +246,4 @@ Lava interacts with water various ways:=La lava interactúa con el agua de varia Stained Glass=Vitral Granite is an igneous rock.=El granito es una roca ígnea. Top snow can be stacked and has one of 8 different height levels. At levels 2-8, top snow is collidable. Top snow drops 2-9 snowballs, depending on its height.=La nieve se puede apilar y tiene unos 8 niveles de altura diferentes. En los niveles 2-8, la nieve es colisionable. La nieve cae de 2 a 9 bolas de nieve, dependiendo de su altura. -This block can only be placed on full solid blocks and on another top snow (which increases its height).=Este bloque solo se puede colocar en bloques sólidos completos y en otra nieve (lo que aumenta su altura). \ No newline at end of file +This block can only be placed on full solid blocks and on another top snow (which increases its height).=Este bloque solo se puede colocar en bloques sólidos completos y en otra nieve (lo que aumenta su altura). diff --git a/mods/ITEMS/mcl_doors/locale/mcl_doors.es.tr b/mods/ITEMS/mcl_doors/locale/mcl_doors.es.tr index efe231a0..1a510815 100644 --- a/mods/ITEMS/mcl_doors/locale/mcl_doors.es.tr +++ b/mods/ITEMS/mcl_doors/locale/mcl_doors.es.tr @@ -1,6 +1,6 @@ # textdomain: mcl_doors -Wooden doors are 2-block high barriers which can be opened or closed by hand and by a redstone signal.=Las puertas de madera son barreras altas de 2 bloques que se pueden abrir o cerrar a mano y con una señal de piedra roja. -To open or close a wooden door, rightclick it or supply its lower half with a redstone signal.=Para abrir o cerrar una puerta de madera, haga clic derecho o suministre a su mitad inferior una señal de piedra roja. +Wooden doors are 2-block high barriers which can be opened or closed by hand and by a redstone signal.=Las puertas de madera son barreras altas de 2 bloques que se pueden abrir o cerrar a mano y con una señal de redstone. +To open or close a wooden door, rightclick it or supply its lower half with a redstone signal.=Para abrir o cerrar una puerta de madera, haga clic derecho o suministre a su mitad inferior una señal de redstone. Oak Door=Puerta de roble Acacia Door=Puerta de acacia Birch Door=Puerta de abedul @@ -8,15 +8,15 @@ Dark Oak Door=Puerta de roble oscuro Jungle Door=Puerta de jungla Spruce Door=Puerta de abeto Iron Door=Puerta de Hierro -Iron doors are 2-block high barriers which can only be opened or closed by a redstone signal, but not by hand.=Las puertas de hierro son barreras altas de 2 bloques que solo se pueden abrir o cerrar mediante una señal de piedra roja, no a mano. -To open or close an iron door, supply its lower half with a redstone signal.=Para abrir o cerrar una puerta de hierro, suministre a su mitad inferior una señal de piedra roja. +Iron doors are 2-block high barriers which can only be opened or closed by a redstone signal, but not by hand.=Las puertas de hierro son barreras altas de 2 bloques que solo se pueden abrir o cerrar mediante una señal de redstone, no a mano. +To open or close an iron door, supply its lower half with a redstone signal.=Para abrir o cerrar una puerta de hierro, suministre a su mitad inferior una señal de redstone. Oak Trapdoor=Trampilla de roble Acacia Trapdoor=Trampilla de acacia Birch Trapdoor=Trampilla de abedul Spruce Trapdoor=Trampilla de abeto Dark Oak Trapdoor=Trampilla de roble oscuro Jungle Trapdoor=Trampilla de jungla -Wooden trapdoors are horizontal barriers which can be opened and closed by hand or a redstone signal. They occupy the upper or lower part of a block, depending on how they have been placed. When open, they can be climbed like a ladder.=Las trampillas de madera son barreras horizontales que se pueden abrir y cerrar a mano o una señal de piedra roja. Ocupan la parte superior o inferior de un bloque, dependiendo de cómo se hayan colocado. Cuando están abiertos, se pueden subir como una escalera. -To open or close the trapdoor, rightclick it or send a redstone signal to it.=Para abrir o cerrar la trampilla, haga clic derecho o envíele una señal de piedra roja. +Wooden trapdoors are horizontal barriers which can be opened and closed by hand or a redstone signal. They occupy the upper or lower part of a block, depending on how they have been placed. When open, they can be climbed like a ladder.=Las trampillas de madera son barreras horizontales que se pueden abrir y cerrar a mano o una señal de redstone. Ocupan la parte superior o inferior de un bloque, dependiendo de cómo se hayan colocado. Cuando están abiertos, se pueden subir como una escalera. +To open or close the trapdoor, rightclick it or send a redstone signal to it.=Para abrir o cerrar la trampilla, haga clic derecho o envíele una señal de redstone. Iron Trapdoor=Trampilla de hierro -Iron trapdoors are horizontal barriers which can only be opened and closed by redstone signals, but not by hand. They occupy the upper or lower part of a block, depending on how they have been placed. When open, they can be climbed like a ladder.=Las trampillas de hierro son barreras horizontales que solo pueden abrirse y cerrarse mediante señales de piedra roja, no a mano. Ocupan la parte superior o inferior de un bloque, dependiendo de cómo se hayan colocado. Cuando están abiertos, se pueden subir como una escalera. +Iron trapdoors are horizontal barriers which can only be opened and closed by redstone signals, but not by hand. They occupy the upper or lower part of a block, depending on how they have been placed. When open, they can be climbed like a ladder.=Las trampillas de hierro son barreras horizontales que solo pueden abrirse y cerrarse mediante señales de redstone, no a mano. Ocupan la parte superior o inferior de un bloque, dependiendo de cómo se hayan colocado. Cuando están abiertos, se pueden subir como una escalera. diff --git a/mods/ITEMS/mcl_dye/locale/mcl_dye.es.tr b/mods/ITEMS/mcl_dye/locale/mcl_dye.es.tr index fd1e3407..d20e8c96 100644 --- a/mods/ITEMS/mcl_dye/locale/mcl_dye.es.tr +++ b/mods/ITEMS/mcl_dye/locale/mcl_dye.es.tr @@ -7,12 +7,12 @@ Purple Dye=Tinte púrpura Lapis Lazuli=Lapislázuli Light Blue Dye=Tinte azul claro Cyan Dye=Tinte cian -Cactus Green=Verde cactus +Cactus Green=Tinte verde Lime Dye=Tinte amarillo verdoso -Dandelion Yellow=Diente de león amarillo +Dandelion Yellow=Tinte amarillo Cocoa Beans=Granos de cacao Orange Dye=Tinte naranja -Rose Red=Rosa roja +Rose Red=Tinte rojo Magenta Dye=Tinte magenta Pink Dye=Tinte rosado This item is a dye which is used for dyeing and crafting.=Este artículo es un tinte que se utiliza para teñir y elaborar. diff --git a/mods/ITEMS/mcl_fire/locale/mcl_fire.es.tr b/mods/ITEMS/mcl_fire/locale/mcl_fire.es.tr index b18d8da6..6f36b293 100644 --- a/mods/ITEMS/mcl_fire/locale/mcl_fire.es.tr +++ b/mods/ITEMS/mcl_fire/locale/mcl_fire.es.tr @@ -1,7 +1,7 @@ # textdomain: mcl_fire Fire Charge=Carga de fuego Fire charges are primarily projectiles which can be launched from dispensers, they will fly in a straight line and burst into a fire on impact. Alternatively, they can be used to ignite fires directly.=Las cargas de fuego son principalmente proyectiles que se pueden lanzar desde dispensadores, volarán en línea recta y estallarán en un incendio al impactar. Alternativamente, se pueden usar para encender incendios directamente. -Put the fire charge into a dispenser and supply it with redstone power to launch it. To ignite a fire directly, simply place the fire charge on the ground, which uses it up.=Ponga la carga de fuego en un dispensador y suminístrele poder de piedra roja para lanzarlo. Para encender un fuego directamente, simplemente coloque la carga de fuego en el suelo, que la usa. +Put the fire charge into a dispenser and supply it with redstone power to launch it. To ignite a fire directly, simply place the fire charge on the ground, which uses it up.=Ponga la carga de fuego en un dispensador y suminístrele poder de redstone para lanzarlo. Para encender un fuego directamente, simplemente coloque la carga de fuego en el suelo, que la usa. Flint and Steel=Mechero Flint and steel is a tool to start fires and ignite blocks.=El mechero es una herramienta para iniciar incendios y encender bloques. Rightclick the surface of a block to attempt to light a fire in front of it or ignite the block. A few blocks have an unique reaction when ignited.=Haga clic derecho en la superficie de un bloque para intentar encender un fuego frente a él o encender el bloque. Unos pocos bloques tienen una reacción única cuando se encienden. diff --git a/mods/ITEMS/mcl_tnt/locale/mcl_tnt.es.tr b/mods/ITEMS/mcl_tnt/locale/mcl_tnt.es.tr index 12e1bced..81d30dcd 100644 --- a/mods/ITEMS/mcl_tnt/locale/mcl_tnt.es.tr +++ b/mods/ITEMS/mcl_tnt/locale/mcl_tnt.es.tr @@ -1,5 +1,5 @@ # textdomain: mcl_tnt @1 was caught in an explosion.=@1 wurde Opfer einer Explosion. TNT=Dinamita -An explosive device. When it explodes, it will hurt living beings and destroy blocks around it. TNT has an explosion radius of @1. With a small chance, blocks may drop as an item (as if being mined) rather than being destroyed. TNT can be ignited by tools, explosions, fire, lava and redstone signals.=Un artefacto explosivo. Cuando explota, dañará a los seres vivos y destruirá los bloques a su alrededor. La dinamita tiene un radio de explosión de @1. Con una pequeña posibilidad, los bloques pueden caer como un elemento (como si se extrajera) en lugar de ser destruidos. La dinamita puede encenderse con herramientas, explosiones, fuego, lava y señales de piedra roja. -Place the TNT and ignite it with one of the methods above. Quickly get in safe distance. The TNT will start to be affected by gravity and explodes in 4 seconds.=Coloque el dinamita y enciéndalo con uno de los métodos anteriores. Aléjese rápidamente a una distancia segura. La dinamita comenzará a verse afectada por la gravedad y explotará en 4 segundos. \ No newline at end of file +An explosive device. When it explodes, it will hurt living beings and destroy blocks around it. TNT has an explosion radius of @1. With a small chance, blocks may drop as an item (as if being mined) rather than being destroyed. TNT can be ignited by tools, explosions, fire, lava and redstone signals.=Un artefacto explosivo. Cuando explota, dañará a los seres vivos y destruirá los bloques a su alrededor. La dinamita tiene un radio de explosión de @1. Con una pequeña posibilidad, los bloques pueden caer como un elemento (como si se extrajera) en lugar de ser destruidos. La dinamita puede encenderse con herramientas, explosiones, fuego, lava y señales de redstone. +Place the TNT and ignite it with one of the methods above. Quickly get in safe distance. The TNT will start to be affected by gravity and explodes in 4 seconds.=Coloque el dinamita y enciéndalo con uno de los métodos anteriores. Aléjese rápidamente a una distancia segura. La dinamita comenzará a verse afectada por la gravedad y explotará en 4 segundos. From fb9d0f7a7cf17a5ec0ac8ba7a57bf42e6cd216ab Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sun, 15 Mar 2020 09:07:38 +0100 Subject: [PATCH 590/737] Mobs: Drop cooked item if died in fire --- mods/ENTITIES/mcl_mobs/api.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/ENTITIES/mcl_mobs/api.lua b/mods/ENTITIES/mcl_mobs/api.lua index 648fef2b..798a5408 100644 --- a/mods/ENTITIES/mcl_mobs/api.lua +++ b/mods/ENTITIES/mcl_mobs/api.lua @@ -589,8 +589,8 @@ local check_for_death = function(self, cause, cmi_cause) return false end - -- dropped cooked item if mob died in lava - if cause == "lava" then + -- dropped cooked item if mob died in fire or lava + if cause == "lava" or cause == "fire" then item_drop(self, true) else item_drop(self, nil) From 59b6385d107119f8de5f88a911a3adad705f29e8 Mon Sep 17 00:00:00 2001 From: David McMackins II Date: Tue, 17 Mar 2020 15:00:12 -0500 Subject: [PATCH 591/737] Fix bug where powered rails would not accelerate a fueled minecart --- mods/ENTITIES/mcl_minecarts/init.lua | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/mods/ENTITIES/mcl_minecarts/init.lua b/mods/ENTITIES/mcl_minecarts/init.lua index 7c57334b..d23e8ad0 100644 --- a/mods/ENTITIES/mcl_minecarts/init.lua +++ b/mods/ENTITIES/mcl_minecarts/init.lua @@ -409,14 +409,17 @@ local function register_entity(entity_id, mesh, textures, drop, on_rightclick, o -- Slow down or speed up local acc = dir.y * -1.8 - + local friction = 0.4 local speed_mod = minetest.registered_nodes[minetest.get_node(pos).name]._rail_acceleration + + acc = acc - friction + if has_fuel then - acc = acc + 0.2 - elseif speed_mod and speed_mod ~= 0 then - acc = acc + speed_mod - else - acc = acc - 0.4 + acc = acc + 0.6 + end + + if speed_mod and speed_mod ~= 0 then + acc = acc + speed_mod + friction end new_acc = vector.multiply(dir, acc) From 3cf32c38c5374f551c72f5e95e80c4b317d12421 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Thu, 19 Mar 2020 12:32:30 +0100 Subject: [PATCH 592/737] Villager: Make offered/wanted items unclickable --- mods/ENTITIES/mobs_mc/villager.lua | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/mods/ENTITIES/mobs_mc/villager.lua b/mods/ENTITIES/mobs_mc/villager.lua index fa9c4797..592c8ed6 100644 --- a/mods/ENTITIES/mobs_mc/villager.lua +++ b/mods/ENTITIES/mobs_mc/villager.lua @@ -21,6 +21,7 @@ local S = minetest.get_translator("mobs_mc") local N = function(s) return s end +local F = minetest.formspec_escape -- playername-indexed table containing the previously used tradenum local player_tradenum = {} @@ -474,7 +475,7 @@ local function show_trade_formspec(playername, trader, tradenum) "image[4.3,1.1;1,1;mobs_mc_trading_formspec_disabled.png]" end local tradeinv_name = "mobs_mc:trade_"..playername - local tradeinv = minetest.formspec_escape("detached:"..tradeinv_name) + local tradeinv = F("detached:"..tradeinv_name) local b_prev, b_next = "", "" if #trades > 1 then @@ -486,16 +487,31 @@ local function show_trade_formspec(playername, trader, tradenum) end end + local inv = minetest.get_inventory({type="detached", name="mobs_mc:trade_"..playername}) + local wanted1 = inv:get_stack("wanted", 1) + local wanted2 = inv:get_stack("wanted", 2) + local offered = inv:get_stack("offered", 1) + + local w2_formspec = "" + if not wanted2:is_empty() then + w2_formspec = "item_image[3,1;1,1;"..wanted2:to_string().."]" + .."tooltip[3,1;0.8,0.8;"..F(wanted2:get_description()).."]" + end + local formspec = "size[9,8.75]" .."background[-0.19,-0.25;9.41,9.49;mobs_mc_trading_formspec_bg.png]" ..disabled_img - .."label[4,0;"..minetest.formspec_escape(minetest.colorize("#313131", S(profession))).."]" + .."label[4,0;"..F(minetest.colorize("#313131", S(profession))).."]" .."list[current_player;main;0,4.5;9,3;9]" .."list[current_player;main;0,7.74;9,1;]" ..b_prev..b_next - .."list["..tradeinv..";wanted;2,1;2,1;]" - .."list["..tradeinv..";offered;5.76,1;1,1;]" + .."["..tradeinv..";wanted;2,1;2,1;]" + .."item_image[2,1;1,1;"..wanted1:to_string().."]" + .."tooltip[2,1;0.8,0.8;"..F(wanted1:get_description()).."]" + ..w2_formspec + .."item_image[5.76,1;1,1;"..offered:to_string().."]" + .."tooltip[5.76,1;0.8,0.8;"..F(offered:get_description()).."]" .."list["..tradeinv..";input;2,2.5;2,1;]" .."list["..tradeinv..";output;5.76,2.55;1,1;]" .."listring["..tradeinv..";output]" From 7243a25fe6c98ad3bca206b5ad8310462598d93a Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 24 Mar 2020 18:48:14 +0100 Subject: [PATCH 593/737] Generate item slot images on the fly --- mods/HUD/mcl_formspec/init.lua | 11 +++++++++ mods/HUD/mcl_formspec/mod.conf | 1 + .../textures/mcl_formspec_itemslot.png | Bin 0 -> 231 bytes mods/HUD/mcl_inventory/creative.lua | 8 +++++++ mods/HUD/mcl_inventory/depends.txt | 1 + mods/HUD/mcl_inventory/init.lua | 8 +++++++ .../textures/crafting_formspec_bg.png | Bin 1431 -> 1030 bytes .../textures/crafting_formspec_bg2.png | Bin 861 -> 0 bytes .../textures/crafting_inventory_9_slots.png | Bin 1153 -> 0 bytes .../textures/crafting_inventory_creative.png | Bin 1517 -> 1246 bytes .../crafting_inventory_creative_survival.png | Bin 1516 -> 1419 bytes .../ITEMS/REDSTONE/mcl_dispensers/depends.txt | 1 + mods/ITEMS/REDSTONE/mcl_dispensers/init.lua | 1 - mods/ITEMS/REDSTONE/mcl_droppers/depends.txt | 1 + mods/ITEMS/REDSTONE/mcl_droppers/init.lua | 1 - mods/ITEMS/mcl_anvils/depends.txt | 1 + mods/ITEMS/mcl_anvils/init.lua | 5 ++++ .../textures/mcl_anvils_inventory.png | Bin 1088 -> 699 bytes mods/ITEMS/mcl_chests/depends.txt | 1 + mods/ITEMS/mcl_chests/init.lua | 22 ++++++++++++++---- .../textures/mcl_chests_inventory_chest.png | Bin 1195 -> 0 bytes .../mcl_chests_inventory_chest_large.png | Bin 1562 -> 0 bytes mods/ITEMS/mcl_crafting_table/depends.txt | 1 + mods/ITEMS/mcl_crafting_table/init.lua | 6 ++++- .../textures/crafting_inventory_workbench.png | Bin 1282 -> 281 bytes mods/ITEMS/mcl_furnaces/depends.txt | 1 + mods/ITEMS/mcl_furnaces/init.lua | 12 ++++++++-- .../textures/crafting_inventory_furnace.png | Bin 1166 -> 0 bytes mods/ITEMS/mcl_hoppers/depends.txt | 1 + mods/ITEMS/mcl_hoppers/init.lua | 4 +++- .../textures/mcl_hoppers_inventory.png | Bin 992 -> 0 bytes 31 files changed, 76 insertions(+), 11 deletions(-) create mode 100644 mods/HUD/mcl_formspec/init.lua create mode 100644 mods/HUD/mcl_formspec/mod.conf create mode 100644 mods/HUD/mcl_formspec/textures/mcl_formspec_itemslot.png delete mode 100644 mods/HUD/mcl_inventory/textures/crafting_formspec_bg2.png delete mode 100644 mods/HUD/mcl_inventory/textures/crafting_inventory_9_slots.png delete mode 100644 mods/ITEMS/mcl_chests/textures/mcl_chests_inventory_chest.png delete mode 100644 mods/ITEMS/mcl_chests/textures/mcl_chests_inventory_chest_large.png delete mode 100644 mods/ITEMS/mcl_furnaces/textures/crafting_inventory_furnace.png delete mode 100644 mods/ITEMS/mcl_hoppers/textures/mcl_hoppers_inventory.png diff --git a/mods/HUD/mcl_formspec/init.lua b/mods/HUD/mcl_formspec/init.lua new file mode 100644 index 00000000..7013fc0e --- /dev/null +++ b/mods/HUD/mcl_formspec/init.lua @@ -0,0 +1,11 @@ +mcl_formspec = {} + +function mcl_formspec.get_itemslot_bg(x, y, w, h) + local out = "" + for i = 0, w - 1, 1 do + for j = 0, h - 1, 1 do + out = out .."image["..x+i..","..y+j..";1,1;mcl_formspec_itemslot.png]" + end + end + return out +end diff --git a/mods/HUD/mcl_formspec/mod.conf b/mods/HUD/mcl_formspec/mod.conf new file mode 100644 index 00000000..9d614403 --- /dev/null +++ b/mods/HUD/mcl_formspec/mod.conf @@ -0,0 +1 @@ +description = Helper mod to simplify creation of formspecs a little bit diff --git a/mods/HUD/mcl_formspec/textures/mcl_formspec_itemslot.png b/mods/HUD/mcl_formspec/textures/mcl_formspec_itemslot.png new file mode 100644 index 0000000000000000000000000000000000000000..84958ecd4234850d627aa868c382df5d322d0f8c GIT binary patch literal 231 zcmeAS@N?(olHy`uVBq!ia0y~yVDJKA4kiW$hRK^k)fgBU*pj^6T^Rm@;DWu&Co?cG za29w(7Bet#3xhBt!>l`$15xs1fsEmglVFff#Ox;TbZ+|xcL=6A{ literal 0 HcmV?d00001 diff --git a/mods/HUD/mcl_inventory/creative.lua b/mods/HUD/mcl_inventory/creative.lua index d5b5e474..0b5f52b6 100644 --- a/mods/HUD/mcl_inventory/creative.lua +++ b/mods/HUD/mcl_inventory/creative.lua @@ -325,11 +325,16 @@ mcl_inventory.set_creative_formspec = function(player, start_i, pagenum, inv_siz -- Survival inventory slots main_list = "list[current_player;main;0,3.75;9,3;9]".. + mcl_formspec.get_itemslot_bg(0,3.75,9,3).. -- armor "list[detached:"..playername.."_armor;armor;2.5,1.3;1,1;1]".. "list[detached:"..playername.."_armor;armor;2.5,2.75;1,1;2]".. "list[detached:"..playername.."_armor;armor;5.5,1.3;1,1;3]".. "list[detached:"..playername.."_armor;armor;5.5,2.75;1,1;4]".. + mcl_formspec.get_itemslot_bg(2.5,1.3,1,1).. + mcl_formspec.get_itemslot_bg(2.5,2.75,1,1).. + mcl_formspec.get_itemslot_bg(5.5,1.3,1,1).. + mcl_formspec.get_itemslot_bg(5.5,2.75,1,1).. armor_slot_imgs.. -- player preview player_preview.. @@ -354,6 +359,7 @@ mcl_inventory.set_creative_formspec = function(player, start_i, pagenum, inv_siz else -- Creative inventory slots main_list = "list[detached:creative_"..playername..";main;0,1.75;9,5;"..tostring(start_i).."]".. + mcl_formspec.get_itemslot_bg(0,1.75,9,5).. -- Page buttons "label[9.0,5.5;"..F(S("@1/@2", pagenum, pagemax)).."]".. "image_button[9.0,6.0;0.7,0.7;crafting_creative_prev.png;creative_prev;]".. @@ -412,6 +418,7 @@ mcl_inventory.set_creative_formspec = function(player, start_i, pagenum, inv_siz "tooltip[nix;"..F(filtername["nix"]).."]".. caption.. "list[current_player;main;0,7;9,1;]".. + mcl_formspec.get_itemslot_bg(0,7,9,1).. main_list.. tab(name, "food") .. "tooltip[food;"..F(filtername["food"]).."]".. @@ -429,6 +436,7 @@ mcl_inventory.set_creative_formspec = function(player, start_i, pagenum, inv_siz tab(name, "inv") .. "tooltip[inv;"..F(filtername["inv"]).."]".. "list[detached:trash;main;9,7;1,1;]".. + mcl_formspec.get_itemslot_bg(9,7,1,1).. "image[9,7;1,1;crafting_creative_trash.png]".. listrings diff --git a/mods/HUD/mcl_inventory/depends.txt b/mods/HUD/mcl_inventory/depends.txt index 056b070d..fb454b7d 100644 --- a/mods/HUD/mcl_inventory/depends.txt +++ b/mods/HUD/mcl_inventory/depends.txt @@ -1,4 +1,5 @@ mcl_init +mcl_formspec mcl_player? _mcl_autogroup? mcl_armor? diff --git a/mods/HUD/mcl_inventory/init.lua b/mods/HUD/mcl_inventory/init.lua index 994f11e4..e6a1f146 100644 --- a/mods/HUD/mcl_inventory/init.lua +++ b/mods/HUD/mcl_inventory/init.lua @@ -96,6 +96,10 @@ local function set_inventory(player, armor_change_only) "list[detached:"..player_name.."_armor;armor;0,1;1,1;2]".. "list[detached:"..player_name.."_armor;armor;0,2;1,1;3]".. "list[detached:"..player_name.."_armor;armor;0,3;1,1;4]".. + mcl_formspec.get_itemslot_bg(0,0,1,1).. + mcl_formspec.get_itemslot_bg(0,1,1,1).. + mcl_formspec.get_itemslot_bg(0,2,1,1).. + mcl_formspec.get_itemslot_bg(0,3,1,1).. armor_slot_imgs.. -- craft and inventory "label[0,4;"..F(minetest.colorize("#313131", S("Inventory"))).."]".. @@ -104,6 +108,10 @@ local function set_inventory(player, armor_change_only) "label[4,0.5;"..F(minetest.colorize("#313131", S("Crafting"))).."]".. "list[current_player;craft;4,1;2,2]".. "list[current_player;craftpreview;7,1.5;1,1;]".. + mcl_formspec.get_itemslot_bg(0,4.5,9,3).. + mcl_formspec.get_itemslot_bg(0,7.74,9,1).. + mcl_formspec.get_itemslot_bg(4,1,2,2).. + mcl_formspec.get_itemslot_bg(7,1.5,1,1).. -- crafting guide button "image_button[4.5,3;1,1;craftguide_book.png;__mcl_craftguide;]".. "tooltip[__mcl_craftguide;"..F(S("Recipe book")).."]".. diff --git a/mods/HUD/mcl_inventory/textures/crafting_formspec_bg.png b/mods/HUD/mcl_inventory/textures/crafting_formspec_bg.png index 146c1422c8ceb3ebf82a3ddc81832e719dce9e42..5fd888decb24314d47272c5791894f2e3c7c1379 100644 GIT binary patch literal 1030 zcmeAS@N?(olHy`uVBq!ia0y~yVD@8RU>0CuW?*1=#HC@%z`!6H;1lASUzE$hz~Jug zzIgHCxpU|K|NozXfq`{4&oKrD2F8*gzhDN3XE)M7oFs2|7lsa2Sq}yV2F?PH$YKTt zZeb8+WSBKaf`Ng7y~NYkmHi2`FqgE!u~Pn01_tIVPZ!6Kid%1QIOaM#3b-6Rn8da0 zf{2geA4L`izKLtfe}@YE@?3oN9wP$`2vlFaXLj}F!MSxw^0Qwpne1n^aI&A(%N9SY zmrI1LUM`vJ_W~pcXQ0cXDnrO(GXy3Jqfu;F2(<}Q63H1TlIU)PNy2D!|y| zPwI*t1g4WH*`6=hAN}EB~I#dOD=KFExF{W z4#IOUc&dX1VKllViXwz078AgdxQx$Pg);_0=>cmPgFFFFE$Fhi5{dA8|Fg@i5Q!0% eCDL<7!ZuNBab6Mw<&;$T!l6>m` literal 1431 zcmeAS@N?(olHy`uVBq!ia0y~yVD@8RU>0CuW?*1=#HC@%z`!6B;1lA?z`)?{?!I{O z;<?P>u70|R48kY6x^!?PP{3=FKso-U3d6^w819?ZPwC35_t_T#6I zC*F1p;LbXjx}3E%fvx-jo6`wBjR`6H3=d}XA^Hn4FZ z^*`^WrzQB8+zQq_`1~f4vCrKCr>mxIs;zwR?Em&<$<>Qa&r6EW^Z)o|tKG!^_ipvS z<(ymMq+W7~bM6ICIOU{1_X1oTNg6Ibueou(^hWjSMYmtOS-s)3cV7T;f8mQGQ|9t` zsaHR`(5Y!HImPeWk%hv+Wkwov-*h^wFME>`V0BZt-LL!7$ps~w)SEAz{9bGvwmH@9 z>i2JtUuE=Np7-zUJg?5He=2I+6hEt*!pr@9uAiJ! zvPs=PlEnlYi&#^L$RWH7Da-KzL(lftjOD5aSoa_e*!;dmNb$2^#ZwfQtQ%Lf! z>vI4H2sZyC1rI3LK;h!4UIL;z`R<=Td;YJ|lxdI4z8w*hpQeBD`tR)vp3g%Bs13*m zjkX^T%uCv?UJcR&4{MNN(5OHWC(R8g#{D|_z1Uc8`uj#(MtE99V#sd=CtJhgec|=? zYrg9qzjvYX!p7w4PjNZ0L_sZ=pnB}ly7#qdZbv^PAK(6llYxODp?h`DE*_q{#&em*E}P=W#^fa)hmMj|V+Uh3`pK2uV(xnK6S zFjDl0N5`aINtG;qQ}J~_^M`WNjpikCC2wxb`(vvJDoCJyAh~2A98`CYez!AToOEDg ia&;7_m_>3Ei1~*_L103(%39Z5AfBhIpUXO@geCx1i+L*m diff --git a/mods/HUD/mcl_inventory/textures/crafting_formspec_bg2.png b/mods/HUD/mcl_inventory/textures/crafting_formspec_bg2.png deleted file mode 100644 index 4c5113d7370050cd01cd417c0fd6f0bad2a10230..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 861 zcmeAS@N?(olHy`uVBq!ia0y~yVD@8RU>0CuW?*1=#HC@%z`(#C;1lA?z`)?{?!I{O z;<x!7{eirS2X=7k! z_iWw;PxX>ZoO3~xllt5XoO4T@zyeSTMI1>QD*n$HRVSv33n#1RhrX2H@A-aTn1O-e zz|_#C;r$<9+$dk1y#MgCx~n%U688L`_u=XAaiQ@sQwKtMi5l7ZYY<|Y(x0fw` z$Uy@3Gc+WT#ZisBtatDC8n43@32)~0fr13dK_KS-%zc5KZSQ2}fjFM7elF{r5}E)! C$|-CB diff --git a/mods/HUD/mcl_inventory/textures/crafting_inventory_9_slots.png b/mods/HUD/mcl_inventory/textures/crafting_inventory_9_slots.png deleted file mode 100644 index 4540f5086be57cc30b339fddb33ce1eb27b179c8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1153 zcmeAS@N?(olHy`uVBq!ia0y~yVD@8RU>0CuW?*1=#HC@%z`(#C;1lA?z`)?{?!I{O z;<fZ_LxmE$x?-e*Z7;iL6<;`*X(RA_55)YC#c(fyV2%fgy*M==k z{BYxjEyxkj*!fWKWaXu>?=v=jtozS?V5T_SHUHJGAVQbezz4+!fk=VJ@%`Uxybd>P j+*o}JRG>he1Ec;hv&g1PJ`=8W28npO`njxgN@xNA)=T4h diff --git a/mods/HUD/mcl_inventory/textures/crafting_inventory_creative.png b/mods/HUD/mcl_inventory/textures/crafting_inventory_creative.png index 918d670eb9812dd44004e73ead9bd47230f45402..b0348629e9ccb04b128edb25e98cff5f1e7e025d 100644 GIT binary patch literal 1246 zcmeAS@N?(olHy`uVBq!ia0y~yVBW~Uz-+|A%)r3lsTnQ9z`!6K;1lAS$N&ZZ|Np;m z;X+16hP%7_;>C;S&Yk;vvPB330|R48kY6x^!?PP{AWo9Ey9+}HtE>kD0|RG)M`SSr z1Gg{;GcwGYBf-GHz+U3%>&pIwS(r^CZ5x|UCJit;wMYky)YJ?edUNWy}Ih){zo8IiGHeR;zvw&`z=rwc82pSr0t y?8d9*vP$~VOLLy3UeE0Otj$ea-bPYYa8bNq(RmNIQx~^`L_J;oT-G@yGywp08zn~o literal 1517 zcmeAS@N?(olHy`uVBq!ia0y~yVBW~Uz-+|A%)r3lsTnQ9z`!68;1lA?00#g6|G#kI zLPkc0ySw}1#f#_8o$G0=uz-Pqfw3gWFPOpM*^M*?2G(Xz7srqa#<#Z*a=vzxXuW9d zWSu;tP|9GPqUw_9wRhTi^%O-_^7AK6U)wIBQu(~{`I`6d9=AJ!%mLd%91*`-MR)PT z=ly3qS0)qS;1j%M$M&JN0Sx6xT=yN(~eP zqcA9cifbg8FP0hz7YcwMf-7_WlqF&{$sZ0-j-K`4ktwA1%GJzRd#BT z4j8Rj-#vXz_ILB-$1mrEKK*gS{@u>VXK!q8EiFxc{MP;Vo@=$q=G~jXN_9>xTC+)` z8;n*%bnBebg7CXHXrMYEg4uWS#7 zg?(-8o|M?#`z59QpRdt6e*9nI`Ljmp?=R||-65TCf9v_ychb8fr@*5DcgRp2zpHd_ zp4k!1Cw=Yd;uDlrn1s_|s0XM3`|&5YkoIowwIGv!U%%PGOSrp*hVnz8C@KyvD~={Qq6Jlg+C z)}Gu|W?pAJ?_6YPU;p37^Jb@>ySF$t%G~T;-Inv&cg@Q-6O&kpO7$4w4bKHe&qJd( zO)Xq6W47ir`{Q}Dm(IyrnP{N9U9;!q?9=!n-XzuiTHWuz{B4(CeJPi?a9%$6-(TaN sXY+g{KV{6#dG=&}^*?^%%0pyT|Csl3>D%?r2?dv_p00i_>zopr02jrIB>(^b diff --git a/mods/HUD/mcl_inventory/textures/crafting_inventory_creative_survival.png b/mods/HUD/mcl_inventory/textures/crafting_inventory_creative_survival.png index 50b27a64ab4b239491ea77017d2e82646e24bf4b..828404ea2fd615ec6e66ce0a8e680873e8385e61 100644 GIT binary patch literal 1419 zcmeAS@N?(olHy`uVBq!ia0y~yVBW~Uz-+|A%)r3lsTnQ9z`!6K;1lAS$N&ZZ|Np;m z;X+16hP%7_;>C;S&Yk;vvPB330|R48kY6x^!?PP{AWo9Ey9+}HtE>kD0|RG)M`SSr z1Gg{;GcwGYBf-GHz+U3%>&pIwS(r;kT*pr5CIbV@OHUWakcwMx?_A_9rlIRQdCkrPG1NL7225*VephJn$vH7B~>G|X$R-g|PA z>hJKI2hYnqo2nDJDdprORqtt|jDZY<_4>af+1#hWA`cpKO5Tu|3roQhyC)|>;#)M5 z6kV`1p+lA~NK#vKVv;H`E`-?y*9CVlK7ZlX1xeOQpfrmwt%I$@6F8Hw<`6=brLWmN&IF&7AypacE3@ iB*mo-yu4Z>Z_TiVt4rhN)~{ zdcS3Xm!E?MTl<5Y(o1(0JrvR(aJ<>u{q@%aOP|M$d8Wr^Y3_UfCtdT$#|46KTJ*WW zmJv&MT{@gmS95yGlxYV)xCgn<(OJ5*&mz*#^R1-7(y7jyZ+-j{lPwY4dy+3&EHw~< z!Xl@*f>9`hFP1tL!gq~Kl{_#deARIst>4xE3QvV`|NnF<{f3U&?lj$g@6)s6KhM|N zn_F@0|H-sKe1<^nK{gjEM1(H5lGIb$Q}0$Dy_jCvb~b7A{rcCHk0s518=YFD143He zn>4@(!~qGdf$}w0gXI_LoWf877Wxsr^6L!O)cXG_=Ql*=l%0)|n{M{Pc-l>{Bq1Xg z5n&4+B|eo)H(9T@I5qoT{NJAInd-c1%^y9DHfA84xyf2rikR>LH;DL>q6qfC|em?T_$C#UIcj!s? zJIz~x-iyE=KM{arx(1qn_up{_JI4<>R?zp|GTT=)TX-P zKL-nK(*keaHclSj+<_1TnVD#cLz^;{yn#L3pzMm;Ocb^sloY*^h%0^!);xnWm}%V zt0>!3x24~^`rQrsWYp@vbGFKypL)0J^`?gv=h8IW!=l)n&u@LU`JlK6W;TRp5byA^ zl)ua8*Guy4y=rf)P*=11=j-o1ZP7u-PcnSXfKgVlHcjPk&Rgp8 P03_h)>gTe~DWM4f%RYo8 diff --git a/mods/ITEMS/REDSTONE/mcl_dispensers/depends.txt b/mods/ITEMS/REDSTONE/mcl_dispensers/depends.txt index ad7c191c..7b51f67c 100644 --- a/mods/ITEMS/REDSTONE/mcl_dispensers/depends.txt +++ b/mods/ITEMS/REDSTONE/mcl_dispensers/depends.txt @@ -1,4 +1,5 @@ mcl_init +mcl_formspec mesecons mcl_sounds mcl_tnt diff --git a/mods/ITEMS/REDSTONE/mcl_dispensers/init.lua b/mods/ITEMS/REDSTONE/mcl_dispensers/init.lua index 6e9add61..a88b66f5 100644 --- a/mods/ITEMS/REDSTONE/mcl_dispensers/init.lua +++ b/mods/ITEMS/REDSTONE/mcl_dispensers/init.lua @@ -13,7 +13,6 @@ local S = minetest.get_translator("mcl_dispensers") local setup_dispenser = function(pos) -- Set formspec and inventory local form = "size[9,8.75]".. - "background[-0.19,-0.25;9.41,9.49;crafting_inventory_9_slots.png]".. "label[0,4.0;"..minetest.formspec_escape(minetest.colorize("#313131", S("Inventory"))).."]".. "list[current_player;main;0,4.5;9,3;9]".. "list[current_player;main;0,7.74;9,1;]".. diff --git a/mods/ITEMS/REDSTONE/mcl_droppers/depends.txt b/mods/ITEMS/REDSTONE/mcl_droppers/depends.txt index d8d7ca50..cfd9772f 100644 --- a/mods/ITEMS/REDSTONE/mcl_droppers/depends.txt +++ b/mods/ITEMS/REDSTONE/mcl_droppers/depends.txt @@ -1,4 +1,5 @@ mcl_init +mcl_formspec mesecons mcl_util doc? diff --git a/mods/ITEMS/REDSTONE/mcl_droppers/init.lua b/mods/ITEMS/REDSTONE/mcl_droppers/init.lua index ed026e5f..1fa40eeb 100644 --- a/mods/ITEMS/REDSTONE/mcl_droppers/init.lua +++ b/mods/ITEMS/REDSTONE/mcl_droppers/init.lua @@ -14,7 +14,6 @@ local S = minetest.get_translator("mcl_droppers") local setup_dropper = function(pos) -- Set formspec and inventory local form = "size[9,8.75]".. - "background[-0.19,-0.25;9.41,9.49;crafting_inventory_9_slots.png]".. "label[0,4.0;"..minetest.formspec_escape(minetest.colorize("#313131", S("Inventory"))).."]".. "list[current_player;main;0,4.5;9,3;9]".. "list[current_player;main;0,7.74;9,1;]".. diff --git a/mods/ITEMS/mcl_anvils/depends.txt b/mods/ITEMS/mcl_anvils/depends.txt index 021df7cb..98a3e017 100644 --- a/mods/ITEMS/mcl_anvils/depends.txt +++ b/mods/ITEMS/mcl_anvils/depends.txt @@ -1,4 +1,5 @@ mcl_init +mcl_formspec mcl_sounds mcl_core? screwdriver? diff --git a/mods/ITEMS/mcl_anvils/init.lua b/mods/ITEMS/mcl_anvils/init.lua index d686a583..994a7029 100644 --- a/mods/ITEMS/mcl_anvils/init.lua +++ b/mods/ITEMS/mcl_anvils/init.lua @@ -19,10 +19,15 @@ local function get_anvil_formspec(set_name) "background[-0.19,-0.25;9.41,9.49;mcl_anvils_inventory.png]".. "label[0,4.0;"..minetest.formspec_escape(minetest.colorize("#313131", S("Inventory"))).."]".. "list[current_player;main;0,4.5;9,3;9]".. + mcl_formspec.get_itemslot_bg(0,4.5,9,3).. "list[current_player;main;0,7.74;9,1;]".. + mcl_formspec.get_itemslot_bg(0,7.74,9,1).. "list[context;input;1,2.5;1,1;]".. + mcl_formspec.get_itemslot_bg(1,2.5,1,1).. "list[context;input;4,2.5;1,1;1]".. + mcl_formspec.get_itemslot_bg(4,2.5,1,1).. "list[context;output;8,2.5;1,1;]".. + mcl_formspec.get_itemslot_bg(8,2.5,1,1).. "label[3,0.1;"..minetest.formspec_escape(minetest.colorize("#313131", S("Repair and Name"))).."]".. "field[3.25,1;4,1;name;;"..minetest.formspec_escape(set_name).."]".. "field_close_on_enter[name;false]".. diff --git a/mods/ITEMS/mcl_anvils/textures/mcl_anvils_inventory.png b/mods/ITEMS/mcl_anvils/textures/mcl_anvils_inventory.png index d0ab108c618e18f4dabb5a95460433de935d9376..fdbb706d105a9de6c04fabe89b89134e1996fe41 100644 GIT binary patch delta 395 zcmX@Wv72>*O1)5kPlzi+ehvczgS)%?;>C;S&Yk=J|9_Xs%yJA242&f~e!&b5&u*lF zI7!~_E({&4vK|Z!44efXk;M!Q+`=Ht$S`Y;1Oo#Ddx@v7EBg~>VJ|yWWQ_p4Dl_cCpo*@uH5#{Ik;X%qKR+Oq{?{|G@r^ z{5=QtO@8eGRu@Z!ywnf*IlXkb;kn}RbU!QAxzC(mE(yMwX*nVO# zN9QgBaqebXPVuvPI=2nPxu0o1#n0;R#-rZ-M{UlRT+)1LBIcz&_uShpqF(BA{oa{? zs5iEAONyqyUNX6U@ydkx^Mak0XO~p%ewd{;x5R4UbP0l+XkKL`b0& literal 1088 zcmeAS@N?(olHy`uVBq!ia0y~yVD@8RU>0CuW?*1=#HC@%z`(#C;1lA?z`)?{?!I{O z;<Bcm2QNtNA|# z?;MnwAN}gT(sUcQ#;5n+cgou@p5QnC^2r4yo79^xan9vpTN-R_C3!{WuFd1^roT3- zH(xqAkH<^BjFhcpq5nx0?j+ti5) z%?8arqhm$dR%JCGINl}nO@8Y2{8sYuzu#N@tQJo8djX<^tzNeHy;vd)7JyPH;z-hP zajS(W+CbvS#{F48_s_lbG#(Kd>%0vhmqOgJ+On)>|M%V*k5hJD+WFwdM%$l%IOmo) zsh3>hoO{7jy~Ig}T(zUgD%a_kt&c;+$LJq+W7~6E1*F97!6kzUIBLvDD+_ zRbE_3=BI?1-t3TKfbu}elK5<`$wG;GdYRf%jfQ?NAdu% z{sRRNk~X-%(Si#se*gEGo@4cWy?60M6jBTx2%TqC^;4?9Z@=9^&UYH~rk*=yocz6n z4-^%1FMv%XCq}Tj49U2 zsW@%R$iTo5^Hg*3^z|QK{8(_mcgNxiF)L~Qp1YI3`@eaEND;&)7*Gl#HX*&QO>;Y6 zkrVTt6DelaeVTId^!198nhXCK5RUmTylFFX7D7&f5OHh{1SNfJ;@BJriI|CnPv;>y chG=Gk{pYT}_1i2;V?kOxUHx3vIVCg!0L=l}?EnA( diff --git a/mods/ITEMS/mcl_chests/textures/mcl_chests_inventory_chest_large.png b/mods/ITEMS/mcl_chests/textures/mcl_chests_inventory_chest_large.png deleted file mode 100644 index 98f738faaa88d47e73c0786c910bb96d9ba70c41..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1562 zcmeAS@N?(olHy`uVBq!ia0y~yVD@8RVBut8W?*1oE^&Rqz`(#C;1lA?z`)?{?!I{O z;<^^!vt-6Sj;D3=H6~ z_|nsxUvK`2Z+7|e;`cXh*#7*BVlv!=-~d7R2P96c3sGHS@f8#lTl#zZ?;wKW{EZ*q z%9X)E@x8D2?&SOPVZngn8e;uP(6ODtSb{=gd*5E^*x!7!%lB_CyiTv6SR?tpum27_ zDB22NLsJDLZPF5@f3ZZ^ z>Sc=`h*~(=??sEB)k3fUltLCqmWGKh5w=3n1`t!=a9ZQXsoQ+CY9lbL;Yb-y^4*KEC&HVl@*3 z0|O*1-bvp7m-j^0?0s1Jy|w3#@jm|iz2(2~D@3#q8xkOw5$W*B?`y+S@4r8O>>ZZ$v*4ut XW9QRXCq&3S0J+oC)z4*}Q$iB}C?}pH diff --git a/mods/ITEMS/mcl_crafting_table/depends.txt b/mods/ITEMS/mcl_crafting_table/depends.txt index e3b8528c..97aafc58 100644 --- a/mods/ITEMS/mcl_crafting_table/depends.txt +++ b/mods/ITEMS/mcl_crafting_table/depends.txt @@ -1,2 +1,3 @@ mcl_init +mcl_formspec mcl_sounds diff --git a/mods/ITEMS/mcl_crafting_table/init.lua b/mods/ITEMS/mcl_crafting_table/init.lua index 9d6979a4..bcc8fc43 100644 --- a/mods/ITEMS/mcl_crafting_table/init.lua +++ b/mods/ITEMS/mcl_crafting_table/init.lua @@ -16,13 +16,17 @@ minetest.register_node("mcl_crafting_table:crafting_table", { player:get_inventory():set_size("craft", 9) local form = "size[9,8.75]".. - "background[-0.19,-0.25;9.41,9.49;crafting_formspec_bg2.png^crafting_inventory_workbench.png]".. + "background[-0.19,-0.25;9.41,9.49;crafting_inventory_workbench.png]".. "label[0,4;"..minetest.formspec_escape(minetest.colorize("#313131", S("Inventory"))).."]".. "list[current_player;main;0,4.5;9,3;9]".. + mcl_formspec.get_itemslot_bg(0,4.5,9,3).. "list[current_player;main;0,7.74;9,1;]".. + mcl_formspec.get_itemslot_bg(0,7.74,9,1).. "label[1.75,0;"..minetest.formspec_escape(minetest.colorize("#313131", S("Crafting"))).."]".. "list[current_player;craft;1.75,0.5;3,3;]".. + mcl_formspec.get_itemslot_bg(1.75,0.5,3,3).. "list[current_player;craftpreview;6.1,1.5;1,1;]".. + mcl_formspec.get_itemslot_bg(6.1,1.5,1,1).. "image_button[0.75,1.5;1,1;craftguide_book.png;__mcl_craftguide;]".. "tooltip[__mcl_craftguide;"..minetest.formspec_escape(S("Recipe book")).."]".. "listring[current_player;main]".. diff --git a/mods/ITEMS/mcl_crafting_table/textures/crafting_inventory_workbench.png b/mods/ITEMS/mcl_crafting_table/textures/crafting_inventory_workbench.png index 46ce1092eeae5ca86913be70ebbf4e76d120d6fd..807b25f02f8205ce0d841cf1c8a51bb51ce77964 100644 GIT binary patch delta 221 zcmZqTn#nXlqMnhNfq_Bm)pAz`1_rhOpAc7u{G7RS=N9BEK4oBFU@Qsp3ubV5b|Z~} zf#IO1i(^OyL`eC|pk1!NzTRVsPmDbF;h`u4D)`XrV=FrI z)rl)E%luMag{7=g4i=tiHF0J1#Fc$MzQ!r9SeDNF9S-KCyjru&M*Dqe?y{QoXTFVdQ I&MBb@04_vX0CuW?*1=#HC@%z`(#C;1lA?z`)?{?!I{O z;<>8e|Yie2K8t!pY?-H}@T% zBeS~f)Sh2A=I!|VL#tY9@q-)tl`nA4EpbvWxx_hl#jm_CC(iEpb7Nk{#^pEC>%NN1 zgl|$W`Sopct$K-(#@sh27nE#LZ_c{UIhV&vy&58NtHepY`O?XGJYMQ0S`t(IzNG}{ zS}&aJ_%g+xZK-g%wWZ9yo5EI8b^O&!vJ7Bm*xf5}T7LD}lF7C+C;R<~`}gtnpa0(e zGbh_F4E{T(WRrUFCC<6C&UmU<8>!EIb8=3J)AD=8mrl-uid%J`+srw|35t~)88i3|4&{0cCg;K(7QGVk_x|Q`h%Wca`i7^YB0-+QvDT5O(I3eP5+TDA<&-4`cW%s}3 zWME*Z=!6DG@t$Ah%J&nK=f8Zjl6 z+tiUFhi{w3DU0cc3tw*B&m3{W*6t>qL*;ef+e}6z_duB+*w^#UUc9DaO$SK8)78&q Iol`;+0A#K;Q~&?~ diff --git a/mods/ITEMS/mcl_furnaces/depends.txt b/mods/ITEMS/mcl_furnaces/depends.txt index 441fdfde..365076c1 100644 --- a/mods/ITEMS/mcl_furnaces/depends.txt +++ b/mods/ITEMS/mcl_furnaces/depends.txt @@ -1,4 +1,5 @@ mcl_init +mcl_formspec mcl_core mcl_sounds mcl_craftguide diff --git a/mods/ITEMS/mcl_furnaces/init.lua b/mods/ITEMS/mcl_furnaces/init.lua index c17b29b7..871e38ab 100644 --- a/mods/ITEMS/mcl_furnaces/init.lua +++ b/mods/ITEMS/mcl_furnaces/init.lua @@ -7,14 +7,18 @@ local S = minetest.get_translator("mcl_furnaces") local function active_formspec(fuel_percent, item_percent) return "size[9,8.75]".. - "background[-0.19,-0.25;9.41,9.49;crafting_inventory_furnace.png]".. "label[0,4;"..minetest.formspec_escape(minetest.colorize("#313131", S("Inventory"))).."]".. "list[current_player;main;0,4.5;9,3;9]".. + mcl_formspec.get_itemslot_bg(0,4.5,9,3).. "list[current_player;main;0,7.74;9,1;]".. + mcl_formspec.get_itemslot_bg(0,7.74,9,1).. "label[2.75,0;"..minetest.formspec_escape(minetest.colorize("#313131", S("Furnace"))).."]".. "list[current_name;src;2.75,0.5;1,1;]".. + mcl_formspec.get_itemslot_bg(2.75,0.5,1,1).. "list[current_name;fuel;2.75,2.5;1,1;]".. + mcl_formspec.get_itemslot_bg(2.75,2.5,1,1).. "list[current_name;dst;5.75,1.5;1,1;]".. + mcl_formspec.get_itemslot_bg(5.75,2.5,1,1).. "image[2.75,1.5;1,1;default_furnace_fire_bg.png^[lowpart:".. (100-fuel_percent)..":default_furnace_fire_fg.png]".. "image[4.1,1.5;1.5,1;gui_furnace_arrow_bg.png^[lowpart:".. @@ -30,14 +34,18 @@ local function active_formspec(fuel_percent, item_percent) end local inactive_formspec = "size[9,8.75]".. - "background[-0.19,-0.25;9.41,9.49;crafting_inventory_furnace.png]".. "label[0,4;"..minetest.formspec_escape(minetest.colorize("#313131", S("Inventory"))).."]".. "list[current_player;main;0,4.5;9,3;9]".. + mcl_formspec.get_itemslot_bg(0,4.5,9,3).. "list[current_player;main;0,7.74;9,1;]".. + mcl_formspec.get_itemslot_bg(0,7.74,9,1).. "label[2.75,0;"..minetest.formspec_escape(minetest.colorize("#313131", S("Furnace"))).."]".. "list[current_name;src;2.75,0.5;1,1;]".. + mcl_formspec.get_itemslot_bg(2.75,0.5,1,1).. "list[current_name;fuel;2.75,2.5;1,1;]".. + mcl_formspec.get_itemslot_bg(2.75,2.5,1,1).. "list[current_name;dst;5.75,1.5;1,1;]".. + mcl_formspec.get_itemslot_bg(5.75,1.5,1,1).. "image[2.75,1.5;1,1;default_furnace_fire_bg.png]".. "image[4.1,1.5;1.5,1;gui_furnace_arrow_bg.png^[transformR270]".. "image_button[8,0;1,1;craftguide_book.png;craftguide;]".. diff --git a/mods/ITEMS/mcl_furnaces/textures/crafting_inventory_furnace.png b/mods/ITEMS/mcl_furnaces/textures/crafting_inventory_furnace.png deleted file mode 100644 index 344c624786973aff2d0e3e95a3e8770f1a44c4d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1166 zcmeAS@N?(olHy`uVBq!ia0y~yVD@8RU>0CuW?*1=#HC@%z`(#C;1lA?z`)?{?!I{O z;<z+Cbtyl1$!`S~M>mo~{cZ|1#w{=Ee$wP3{lOHk?trzvt1 r*^|BJSC#lkNbg<_Dk%`|0kaOs3--sgHcyH)193fF{an^LB{Ts5_jD?L8&p_u_E*l}sGQTY3bkHzNCX|VR4*Si1g;$!bP=ax9B z&%FSqN-lBEz2K=17JyP<@oUx#g{@w;_`O&nY_)K*--{MMIE5mPBn=mT+49|Pb)U?C z`_4dphn;%bD?)?0uQ<5hkEnndOrvTZJB~I$dZUs9Miyv@_Bl`_z z&Zm3np=wsgj{Sbm$-uzy;M5AE@ch>|Zj>)h-hcR6-;5d+5kIU{>E)9V_4RJaHq)R!>(ymvv4FO#o^CWkUb} From d5111dfb664631935369cd8a06f2b440e3682060 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 24 Mar 2020 19:08:53 +0100 Subject: [PATCH 594/737] Simplify workbench arrow img --- mods/ITEMS/mcl_crafting_table/init.lua | 2 +- .../textures/crafting_inventory_workbench.png | Bin 281 -> 0 bytes .../textures/gui_crafting_arrow.png | Bin 0 -> 170 bytes 3 files changed, 1 insertion(+), 1 deletion(-) delete mode 100644 mods/ITEMS/mcl_crafting_table/textures/crafting_inventory_workbench.png create mode 100644 mods/ITEMS/mcl_crafting_table/textures/gui_crafting_arrow.png diff --git a/mods/ITEMS/mcl_crafting_table/init.lua b/mods/ITEMS/mcl_crafting_table/init.lua index bcc8fc43..3c19e288 100644 --- a/mods/ITEMS/mcl_crafting_table/init.lua +++ b/mods/ITEMS/mcl_crafting_table/init.lua @@ -16,7 +16,7 @@ minetest.register_node("mcl_crafting_table:crafting_table", { player:get_inventory():set_size("craft", 9) local form = "size[9,8.75]".. - "background[-0.19,-0.25;9.41,9.49;crafting_inventory_workbench.png]".. + "image[4.7,1.5;1.5,1;gui_crafting_arrow.png]".. "label[0,4;"..minetest.formspec_escape(minetest.colorize("#313131", S("Inventory"))).."]".. "list[current_player;main;0,4.5;9,3;9]".. mcl_formspec.get_itemslot_bg(0,4.5,9,3).. diff --git a/mods/ITEMS/mcl_crafting_table/textures/crafting_inventory_workbench.png b/mods/ITEMS/mcl_crafting_table/textures/crafting_inventory_workbench.png deleted file mode 100644 index 807b25f02f8205ce0d841cf1c8a51bb51ce77964..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 281 zcmeAS@N?(olHy`uVBq!ia0y~yVD@8RU>0CxW?*2@dbQk@fq{W7z$e6&AwOsC+_?q$ zicc9B7#K@}{DK)Ap4~`eU|=}t>Eakt!T9#(M&82?9BmgvKHlm%B@t5oGH93Uudnx* z;u9l}eRwF!fC@hJ`q+xje0AcA%QC-|S79lul!Jw5T1{LTJ#l59k8jE=mZkH4heO$G zmf2{(56xXxv;K_O-kC<5fA61lA|!v=n;CDI(~VQlzf;>(y`KrycoKLG@~^8u6ie)W Q90Ahg>FVdQ&MBb@0Hd5$-~a#s diff --git a/mods/ITEMS/mcl_crafting_table/textures/gui_crafting_arrow.png b/mods/ITEMS/mcl_crafting_table/textures/gui_crafting_arrow.png new file mode 100644 index 0000000000000000000000000000000000000000..93ce1e1b90dcf05a88a6b982da161e8d998d13ea GIT binary patch literal 170 zcmeAS@N?(olHy`uVBq!ia0y~yU@%}{U{K&-V_;wix$;|vfq|jW)5S5Qg7NJPMz#Y1 zJV(p^-&=kC77rt9&)4?v92*pm-P+e(@_l{C)xS?`H)(xXB*w6nVFjy$E<+Y$0Cz(a z!xg3lAfXei%Z_mH&+P*VOwixZ`b&R`rNXQuH(NLLK2s9Ddn8l!68BPRU+cXLl?+qw X+vHr}TqDoGz`)??>gTe~DWM4f9XdWy literal 0 HcmV?d00001 From 24832c534f68419dc442b3e31972a9ba1ba05c7d Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 24 Mar 2020 19:11:25 +0100 Subject: [PATCH 595/737] Fix crash in horse code --- mods/ENTITIES/mobs_mc/horse.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/mods/ENTITIES/mobs_mc/horse.lua b/mods/ENTITIES/mobs_mc/horse.lua index b0379f14..c9a8a766 100644 --- a/mods/ENTITIES/mobs_mc/horse.lua +++ b/mods/ENTITIES/mobs_mc/horse.lua @@ -256,6 +256,7 @@ local horse = { local armor = minetest.get_item_group(iname, "horse_armor") self._horse_armor = iname if not minetest.settings:get_bool("creative_mode") then + local w = clicker:get_wielded_item() w:take_item() clicker:set_wielded_item(w) end From f5268ea5983c563a5410c4d4580a1d71048f7fb5 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 24 Mar 2020 19:28:22 +0100 Subject: [PATCH 596/737] Fix walls connecting to too many nodeboxes --- mods/ITEMS/mcl_walls/init.lua | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/mods/ITEMS/mcl_walls/init.lua b/mods/ITEMS/mcl_walls/init.lua index 05ee367b..be07d549 100644 --- a/mods/ITEMS/mcl_walls/init.lua +++ b/mods/ITEMS/mcl_walls/init.lua @@ -14,6 +14,10 @@ local directions = { {x = 0, y = -1, z = 0}, } +local function connectable(itemstring) + return (minetest.get_item_group(itemstring, "wall") == 1) or (minetest.get_item_group(itemstring, "solid") == 1) +end + local function update_wall(pos) local thisnode = minetest.get_node(pos) @@ -42,8 +46,7 @@ local function update_wall(pos) for i = 1, 4 do local dir = directions[i] local node = minetest.get_node({x = pos.x + dir.x, y = pos.y + dir.y, z = pos.z + dir.z}) - local def = minetest.registered_nodes[node.name] - if def and def.walkable then + if connectable(node.name) then sum = sum + 2 ^ (i - 1) end end @@ -51,8 +54,7 @@ local function update_wall(pos) -- Torches or walkable nodes above the wall local upnode = minetest.get_node({x = pos.x, y = pos.y+1, z = pos.z}) if sum == 5 or sum == 10 then - local def = minetest.registered_nodes[upnode.name] - if (def and def.walkable) or (minetest.get_item_group(upnode.name, "torch") == 1) then + if (connectable(upnode.name)) or (minetest.get_item_group(upnode.name, "torch") == 1) then sum = sum + 11 end end From b56ead7a2337a06e9503e40f051766d9a733e46a Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 24 Mar 2020 19:53:08 +0100 Subject: [PATCH 597/737] Don't allow to set fire on fire --- mods/ITEMS/mcl_fire/fire_charge.lua | 4 ++-- mods/ITEMS/mcl_fire/flint_and_steel.lua | 4 ++-- mods/ITEMS/mcl_fire/init.lua | 7 ++++++- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/mods/ITEMS/mcl_fire/fire_charge.lua b/mods/ITEMS/mcl_fire/fire_charge.lua index fbf75f18..9f4f6bc0 100644 --- a/mods/ITEMS/mcl_fire/fire_charge.lua +++ b/mods/ITEMS/mcl_fire/fire_charge.lua @@ -31,10 +31,10 @@ minetest.register_craftitem("mcl_fire:fire_charge", { if nodedef and nodedef._on_ignite then local overwrite = nodedef._on_ignite(user, pointed_thing) if not overwrite then - mcl_fire.set_fire(pointed_thing, user) + mcl_fire.set_fire(pointed_thing, user, false) end else - mcl_fire.set_fire(pointed_thing, user) + mcl_fire.set_fire(pointed_thing, user, false) end if not minetest.settings:get_bool("creative_mode") then itemstack:take_item() diff --git a/mods/ITEMS/mcl_fire/flint_and_steel.lua b/mods/ITEMS/mcl_fire/flint_and_steel.lua index c5b1290b..bb8c6ce7 100644 --- a/mods/ITEMS/mcl_fire/flint_and_steel.lua +++ b/mods/ITEMS/mcl_fire/flint_and_steel.lua @@ -36,10 +36,10 @@ minetest.register_tool("mcl_fire:flint_and_steel", { if nodedef and nodedef._on_ignite then local overwrite = nodedef._on_ignite(user, pointed_thing) if not overwrite then - mcl_fire.set_fire(pointed_thing, user) + mcl_fire.set_fire(pointed_thing, user, false) end else - mcl_fire.set_fire(pointed_thing, user) + mcl_fire.set_fire(pointed_thing, user, false) end used = true end diff --git a/mods/ITEMS/mcl_fire/init.lua b/mods/ITEMS/mcl_fire/init.lua index ca61d9a4..ff7b7902 100644 --- a/mods/ITEMS/mcl_fire/init.lua +++ b/mods/ITEMS/mcl_fire/init.lua @@ -395,7 +395,8 @@ end -- Set pointed_thing on (normal) fire. -- * pointed_thing: Pointed thing to ignite -- * player: Player who sets fire or nil if nobody -mcl_fire.set_fire = function(pointed_thing, player) +-- * allow_on_fire: If false, can't ignite fire on fire (default: true) +mcl_fire.set_fire = function(pointed_thing, player, allow_on_fire) local pname if player == nil then pname = "" @@ -403,6 +404,10 @@ mcl_fire.set_fire = function(pointed_thing, player) pname = player:get_player_name() end local n = minetest.get_node(pointed_thing.above) + local nu = minetest.get_node(pointed_thing.under) + if allow_on_fire == false and minetest.get_item_group(nu.name, "fire") ~= 0 then + return + end if minetest.is_protected(pointed_thing.above, pname) then minetest.record_protection_violation(pointed_thing.above, pname) return From 882937a1ab8429505f7235301c89de9e56c45ded Mon Sep 17 00:00:00 2001 From: David McMackins II Date: Tue, 24 Mar 2020 20:19:49 +0100 Subject: [PATCH 598/737] Fix bug where adding items to a double chest with shift-click would not complete stacks in the right chest --- mods/ITEMS/mcl_chests/init.lua | 51 ++++++++++++++++++++++++++-------- 1 file changed, 40 insertions(+), 11 deletions(-) diff --git a/mods/ITEMS/mcl_chests/init.lua b/mods/ITEMS/mcl_chests/init.lua index 669cb159..c9427aa1 100644 --- a/mods/ITEMS/mcl_chests/init.lua +++ b/mods/ITEMS/mcl_chests/init.lua @@ -90,6 +90,39 @@ if not canonical_basename then canonical_basename = basename end +local double_chest_add_item = function(top_inv, bottom_inv, listname, stack) + if not stack or stack:is_empty() then + return + end + + local name = stack:get_name() + + local top_off = function(inv, stack) + for c, chest_stack in ipairs(inv:get_list(listname)) do + if stack:is_empty() then + break + end + + if chest_stack:get_name() == name and chest_stack:get_free_space() > 0 then + stack = chest_stack:add_item(stack) + inv:set_stack(listname, c, chest_stack) + end + end + + return stack + end + + stack = top_off(top_inv, stack) + stack = top_off(bottom_inv, stack) + + if not stack:is_empty() then + stack = top_inv:add_item(listname, stack) + if not stack:is_empty() then + bottom_inv:add_item(listname, stack) + end + end +end + minetest.register_node("mcl_chests:"..basename, { description = desc, _tt_help = tt_help, @@ -297,12 +330,10 @@ minetest.register_node("mcl_chests:"..basename.."_left", { -- BEGIN OF LISTRING WORKAROUND if listname == "input" then local inv = minetest.get_inventory({type="node", pos=pos}) - local leftover = inv:add_item("main", stack) - if not leftover:is_empty() then - local other_pos = mcl_util.get_double_container_neighbor_pos(pos, minetest.get_node(pos).param2, "left") - local other_inv = minetest.get_inventory({type="node", pos=other_pos}) - other_inv:add_item("main", leftover) - end + local other_pos = mcl_util.get_double_container_neighbor_pos(pos, minetest.get_node(pos).param2, "left") + local other_inv = minetest.get_inventory({type="node", pos=other_pos}) + + double_chest_add_item(inv, other_inv, "main", stack) end -- END OF LISTRING WORKAROUND end, @@ -435,11 +466,9 @@ minetest.register_node("mcl_chests:"..basename.."_right", { if listname == "input" then local other_pos = mcl_util.get_double_container_neighbor_pos(pos, minetest.get_node(pos).param2, "right") local other_inv = minetest.get_inventory({type="node", pos=other_pos}) - local leftover = other_inv:add_item("main", stack) - if not leftover:is_empty() then - local inv = minetest.get_inventory({type="node", pos=pos}) - inv:add_item("main", leftover) - end + local inv = minetest.get_inventory({type="node", pos=pos}) + + double_chest_add_item(other_inv, inv, "main", stack) end -- END OF LISTRING WORKAROUND end, From 2237cf66cb1d8203e36ea0937d29e3b26bd91333 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 24 Mar 2020 20:33:33 +0100 Subject: [PATCH 599/737] Version 0.60.0 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index c3a433a5..e0241546 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ An unofficial Minecraft-like game for Minetest. Forked from MineClone by davedevils. Developed by Wuzzy and contributors. Not developed or endorsed by Mojang AB. -Version: 0.59.2 +Version: 0.60.0 ### Gameplay You start in a randomly-generated world made entirely of cubes. You can explore From baa02e19e1544a6508ca2b7356dc46566e1eb49e Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sat, 28 Mar 2020 07:20:16 +0100 Subject: [PATCH 600/737] Add many new sounds for noteblock --- .../REDSTONE/mesecons_noteblock/LICENSE.txt | 8 --- .../REDSTONE/mesecons_noteblock/README.txt | 57 ++++++++++++++++++ .../REDSTONE/mesecons_noteblock/init.lua | 48 ++++++++++++--- .../locale/mesecons_noteblock.de.tr | 13 +++- .../mesecons_noteblock/locale/template.txt | 11 ++++ .../sounds/mesecons_noteblock_banjo.ogg | Bin 0 -> 13350 bytes .../sounds/mesecons_noteblock_bass_drum.ogg | Bin 0 -> 15762 bytes .../sounds/mesecons_noteblock_bass_guitar.ogg | Bin 10049 -> 11638 bytes .../sounds/mesecons_noteblock_bell.ogg | Bin 0 -> 17013 bytes .../sounds/mesecons_noteblock_chime.ogg | Bin 0 -> 23221 bytes .../sounds/mesecons_noteblock_cowbell.ogg | Bin 0 -> 14916 bytes .../sounds/mesecons_noteblock_didgeridoo.ogg | Bin 0 -> 23272 bytes .../sounds/mesecons_noteblock_flute.ogg | Bin 0 -> 7697 bytes .../sounds/mesecons_noteblock_guitar.ogg | Bin 0 -> 22161 bytes .../sounds/mesecons_noteblock_hit.ogg | Bin 0 -> 12056 bytes .../sounds/mesecons_noteblock_kick.ogg | Bin 10716 -> 0 bytes .../mesecons_noteblock_piano_digital.ogg | Bin 0 -> 22196 bytes .../sounds/mesecons_noteblock_squarewave.ogg | Bin 0 -> 8751 bytes .../sounds/mesecons_noteblock_stick.ogg | Bin 5221 -> 0 bytes .../mesecons_noteblock_xylophone_metal.ogg | Bin 0 -> 21049 bytes .../mesecons_noteblock_xylophone_wood.ogg | Bin 0 -> 10103 bytes 21 files changed, 121 insertions(+), 16 deletions(-) delete mode 100644 mods/ITEMS/REDSTONE/mesecons_noteblock/LICENSE.txt create mode 100644 mods/ITEMS/REDSTONE/mesecons_noteblock/README.txt create mode 100644 mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_banjo.ogg create mode 100644 mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_bass_drum.ogg create mode 100644 mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_bell.ogg create mode 100644 mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_chime.ogg create mode 100644 mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_cowbell.ogg create mode 100644 mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_didgeridoo.ogg create mode 100644 mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_flute.ogg create mode 100644 mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_guitar.ogg create mode 100644 mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_hit.ogg delete mode 100644 mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_kick.ogg create mode 100644 mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_piano_digital.ogg create mode 100644 mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_squarewave.ogg delete mode 100644 mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_stick.ogg create mode 100644 mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_xylophone_metal.ogg create mode 100644 mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_xylophone_wood.ogg diff --git a/mods/ITEMS/REDSTONE/mesecons_noteblock/LICENSE.txt b/mods/ITEMS/REDSTONE/mesecons_noteblock/LICENSE.txt deleted file mode 100644 index ec3fc396..00000000 --- a/mods/ITEMS/REDSTONE/mesecons_noteblock/LICENSE.txt +++ /dev/null @@ -1,8 +0,0 @@ -Licensing information - -* All code: GPLv3 by Mesecons Mod Developer Team, contributors and Wuzzy -* mesecons_noteblock_temp_bass_guitar.ogg: CC0 -* mesecons_noteblock_temp_stick.ogg: CC0 -* Other sounds and data: CC BY-SA 3.0 (http://creativecommons.org/licenses/by-sa/3.0/) by Mesecons Mod Developer Team and contributors - -Note: All “temp” sounds are subject to be replaced in later versions. diff --git a/mods/ITEMS/REDSTONE/mesecons_noteblock/README.txt b/mods/ITEMS/REDSTONE/mesecons_noteblock/README.txt new file mode 100644 index 00000000..dd6822a3 --- /dev/null +++ b/mods/ITEMS/REDSTONE/mesecons_noteblock/README.txt @@ -0,0 +1,57 @@ +Credits of sound files: + +Note: Most sounds have not been used verbatim, but tweaked a little to be more suitable for the noteblock mod. + +### Sounds licensed CC0: + + * by freesound.org user AmateurJ + * Source: https://freesound.org/people/AmateurJ/sounds/399523/ +* mesecons_noteblock_bass_drum.ogg + * by freesound.org user Mattc90 + * Source: https://freesound.org/people/Mattc90/sounds/264285/ +* mesecons_noteblock_bell.ogg + * by opengameart.org user Brandon75689 + * Source: https://opengameart.org/content/point-bell +* mesecons_noteblock_chime.ogg + * by freesound.org user + * Source: https://freesound.org/people/ikonochris/sounds/213380/ +* mesecons_noteblock_cowbell.ogg + * by freesound.org user timgormly + * Source: https://freesound.org/people/timgormly/sounds/159760/ +* mesecons_noteblock_flute.ogg + * by freesound.org user menegass + * Source: https://freesound.org/people/menegass/sounds/107307/ +* mesecons_noteblock_bass_guitar.ogg + * by freesound.org user Vres + * Source: https://freesound.org/people/Vres/sounds/133024/ +* mesecons_noteblock_hit.ogg + * by freesound.org user rubberduck + * Source: https://opengameart.org/content/100-cc0-sfx +* mesecons_noteblock_piano_digital.ogg + * by freesound.org user monotraum + * Source: https://freesound.org/people/monotraum/sounds/208889/ +* mesecons_noteblock_squarewave.ogg + * by Wuzzy +* mesecons_noteblock_xylophone_metal.ogg + * by freesound.org user JappeHallunken + * Source: https://freesound.org/people/JappeHallunken/sounds/501300/ +* mesecons_noteblock_xylophone_wood.ogg + * by freesound.org user connersaw8 + * Source: https://freesound.org/people/connersaw8/sounds/125271/ + +### Sounds licensed CC BY 3.0: + +* mesecons_noteblock_bass_guitar.ogg + * by freesound.org user Kyster + * Source: https://freesound.org/people/Kyster/sounds/117707/ +* mesecons_noteblock_didgeridoo.ogg + * by freesound.org user InspectorJ + * Source: https://freesound.org/people/InspectorJ/sounds/398272/ + +Everything else: +Created by Mesecons authors, licensed CC BY 3.0. + +-------------------- +License links: +* CC0: http://creativecommons.org/publicdomain/zero/1.0/ +* CC BY 3.0: http://creativecommons.org/licenses/by/3.0/ diff --git a/mods/ITEMS/REDSTONE/mesecons_noteblock/init.lua b/mods/ITEMS/REDSTONE/mesecons_noteblock/init.lua index 8080e82f..5ac18ea4 100644 --- a/mods/ITEMS/REDSTONE/mesecons_noteblock/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons_noteblock/init.lua @@ -10,6 +10,17 @@ S("• Glass: Sticks").."\n".. S("• Wood: Bass guitar").."\n".. S("• Stone: Bass drum").."\n".. S("• Sand or gravel: Snare drum").."\n".. +S("• Block of Gold: Bell").."\n".. +S("• Clay: Flute").."\n".. +S("• Packed Ice: Chime").."\n".. +S("• Wool: Guitar").."\n".. +S("• Bone Block: Xylophne").."\n".. +S("• Block of Iron: Iron xylophne").."\n".. +S("• Soul Sand: Cow bell").."\n".. +S("• Pumpkin: Didgeridoo").."\n".. +S("• Block of Emerald: Square wave").."\n".. +S("• Hay Bale: Banjo").."\n".. +S("• Glowstone: Electric piano").."\n".. S("• Anything else: Piano").."\n\n".. S("The note block will only play a note when it is below air, otherwise, it stays silent."), @@ -98,19 +109,38 @@ mesecon.noteblock_play = function (pos, param2) local param2_to_pitch = function(param2) return 2^((param2-12)/12) end + local pitched = false local soundname, pitch - if minetest.get_item_group(block_below_name, "material_glass") ~= 0 then - soundname="mesecons_noteblock_stick" - pitch = param2_to_pitch(param2) + if block_below_name == "mcl_core:goldblock" then + soundname="mesecons_noteblock_bell" + elseif block_below_name == "mcl_core:clay" then + soundname="mesecons_noteblock_flute" + elseif block_below_name == "mcl_core:packed_ice" then + soundname="mesecons_noteblock_chime" + elseif block_below_name == "mcl_core:bone_block" then + soundname="mesecons_noteblock_xylophone_wood" + elseif block_below_name == "mcl_core:ironblock" then + soundname="mesecons_noteblock_xylophone_metal" + elseif block_below_name == "mcl_nether:soul_sand" then + soundname="mesecons_noteblock_cowbell" + elseif block_below_name == "mcl_farming:pumpkin" or block_below_name == "mcl_farming:pumpkin_face" or block_below_name == "mcl_farming:pumpkin_face_light" then + soundname="mesecons_noteblock_didgeridoo" + elseif block_below_name == "mcl_core:emeraldblock" then + soundname="mesecons_noteblock_squarewave" + elseif block_below_name == "mcl_farming:hay_block" then + soundname="mesecons_noteblock_banjo" + elseif block_below_name == "mcl_nether:glowstone" then + soundname="mesecons_noteblock_piano_digital" + elseif minetest.get_item_group(block_below_name, "wool") ~= 0 then + soundname="mesecons_noteblock_guitar" + elseif minetest.get_item_group(block_below_name, "material_glass") ~= 0 then + soundname="mesecons_noteblock_hit" elseif minetest.get_item_group(block_below_name, "material_wood") ~= 0 then soundname="mesecons_noteblock_bass_guitar" - pitch = param2_to_pitch(param2) elseif minetest.get_item_group(block_below_name, "material_sand") ~= 0 then soundname="mesecons_noteblock_snare" - pitch = param2_to_pitch(param2) elseif minetest.get_item_group(block_below_name, "material_stone") ~= 0 then - soundname="mesecons_noteblock_kick" - pitch = param2_to_pitch(param2) + soundname="mesecons_noteblock_bass_drum" else -- Default: One of 25 piano notes soundname = soundnames_piano[param2] @@ -118,6 +148,10 @@ mesecon.noteblock_play = function (pos, param2) if param2 == 24 then pitch = 2^(1/12) end + pitched = true + end + if not pitched then + pitch = param2_to_pitch(param2) end minetest.sound_play(soundname, diff --git a/mods/ITEMS/REDSTONE/mesecons_noteblock/locale/mesecons_noteblock.de.tr b/mods/ITEMS/REDSTONE/mesecons_noteblock/locale/mesecons_noteblock.de.tr index 1c8a8b05..b3fe2224 100644 --- a/mods/ITEMS/REDSTONE/mesecons_noteblock/locale/mesecons_noteblock.de.tr +++ b/mods/ITEMS/REDSTONE/mesecons_noteblock/locale/mesecons_noteblock.de.tr @@ -1,11 +1,22 @@ # textdomain: mesecons_noteblock Note Block=Notenblock A note block is a musical block which plays one of many musical notes and different intruments when it is punched or supplied with redstone power.=Ein Notenblock ist ein musikalischer Block, der eine von vielen Noten von verschiedenen Instrumenten spielt, wenn er geschlagen oder mit Redstoneenergie versorgt wird. -Use the note block to choose the next musical note (there are 25 semitones, or 2 octaves). The intrument played depends on the material of the block below the note block:=Benutzen Sie den Notenblock, um die nächste Musiknote zu wählen (es gibt 25 Halbtöne, oder 2 Oktaven). Das gespielte Instrument hängt vom Material des Blocks unter dem Notenblock ab: +Use the note block to choose the next musical note (there are 25 semitones, or 2 octaves). The intrument played depends on the material of the block below the note block:=Benutzen Sie den Notenblock, um die nächste Musiknote zu wählen (es gibt 25 Halbtöne bzw. oder 2 Oktaven). Das gespielte Instrument hängt vom Material des Blocks unter dem Notenblock ab: • Glass: Sticks=• Glas: Stöcke • Wood: Bass guitar=• Holz: Bassgitarre • Stone: Bass drum=• Stein: Basstrommel • Sand or gravel: Snare drum=• Sand oder Kies: Kleine Trommel +• Block of Gold: Bell=• Goldblock: Glocke +• Clay: Flute=• Ton: Flöte +• Packed Ice: Chime=• Packeis: Glockenspiel +• Wool: Guitar=• Wolle: Gitarre +• Bone Block: Xylophne=• Knochenblock: Xylophon +• Block of Iron: Iron xylophne=• Eisenblock: Eisenxylophon +• Soul Sand: Cow bell=• Seelensand: Kuhglocke +• Pumpkin: Didgeridoo=• Kürbis: Didgeridoo +• Block of Emerald: Square wave=• Smaragdblock: Rechteckschwingung +• Hay Bale: Banjo=• Heuballen: Banjo +• Glowstone: Electric piano=• Leuchtstein: E-Piano • Anything else: Piano=• Alles andere: Klavier The note block will only play a note when it is below air, otherwise, it stays silent.=Der Notenblock wird nur eine Note spielen, wenn er sich unter Luft befindet, sonst bleibt er stumm. Plays a musical note when powered by redstone power=Spielt eine Musiknote, wenn mit Redstoneenergie versorgt diff --git a/mods/ITEMS/REDSTONE/mesecons_noteblock/locale/template.txt b/mods/ITEMS/REDSTONE/mesecons_noteblock/locale/template.txt index a1d9db84..d0daa96a 100644 --- a/mods/ITEMS/REDSTONE/mesecons_noteblock/locale/template.txt +++ b/mods/ITEMS/REDSTONE/mesecons_noteblock/locale/template.txt @@ -7,5 +7,16 @@ Use the note block to choose the next musical note (there are 25 semitones, or 2 • Stone: Bass drum= • Sand or gravel: Snare drum= • Anything else: Piano= +• Block of Gold: Bell +• Clay: Flute +• Packed Ice: Chime +• Wool: Guitar +• Bone Block: Xylophne +• Block of Iron: Iron xylophne +• Soul Sand: Cow bell +• Pumpkin: Didgeridoo +• Block of Emerald: Square wave +• Hay Bale: Banjo +• Glowstone: Electric piano The note block will only play a note when it is below air, otherwise, it stays silent.= Plays a musical note when powered by redstone power= diff --git a/mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_banjo.ogg b/mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_banjo.ogg new file mode 100644 index 0000000000000000000000000000000000000000..62d93d5795e371618366555f694ba2f3b57d039b GIT binary patch literal 13350 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 literal 0 HcmV?d00001 diff --git a/mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_bass_guitar.ogg b/mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_bass_guitar.ogg index eaa531b2ffba11765adaef7311c97d04a674311b..48069d8e7d8e26e2cef597ca712653879be0f7a7 100644 GIT binary patch literal 11638 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 UHtWmM^!Ycph@A{++ITGr0H1>Q3jhEB literal 10049 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 diff --git a/mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_bell.ogg b/mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_bell.ogg new file mode 100644 index 0000000000000000000000000000000000000000..6758e2c7583581571a5aad8f64b1ded70338b711 GIT binary patch literal 17013 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 literal 0 HcmV?d00001 diff --git a/mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_chime.ogg b/mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_chime.ogg new file mode 100644 index 0000000000000000000000000000000000000000..4c131263477dd900d1c9b0bca1f8358185f3408a GIT binary patch literal 23221 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�chP;*Oc>T`$s&%18P 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 PgGm?z{{jX+K0ZDGG@7XO literal 0 HcmV?d00001 diff --git a/mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_cowbell.ogg b/mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_cowbell.ogg new file mode 100644 index 0000000000000000000000000000000000000000..32b4c9fbe7e0f4884a91e24449cb1d039838765d GIT binary patch literal 14916 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 literal 0 HcmV?d00001 diff --git a/mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_didgeridoo.ogg b/mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_didgeridoo.ogg new file mode 100644 index 0000000000000000000000000000000000000000..221cd8446de592acebfe5a604d9c8d33cf3085f3 GIT binary patch literal 23272 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 V0`1N>OJ04_Ws$M|&d9(A0|4=8dC~v? literal 0 HcmV?d00001 diff --git a/mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_flute.ogg b/mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_flute.ogg new file mode 100644 index 0000000000000000000000000000000000000000..3a8bbc6abe0f39b7961d7b162024e4a0b1e7361c GIT binary patch literal 7697 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 literal 0 HcmV?d00001 diff --git a/mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_guitar.ogg b/mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_guitar.ogg new file mode 100644 index 0000000000000000000000000000000000000000..1dcd5b8384b7120f8d3035abb362fe8dbca85206 GIT binary patch literal 22161 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

    5n@~7;TvNgZ{|HI{=|2enjU)mX?;|Hl6h&NjIG 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 literal 0 HcmV?d00001 diff --git a/mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_hit.ogg b/mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_hit.ogg new file mode 100644 index 0000000000000000000000000000000000000000..cf8a5bfd74ec1083e150dd6c98b7edd318eccc86 GIT binary patch literal 12056 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 literal 0 HcmV?d00001 diff --git a/mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_kick.ogg b/mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_kick.ogg deleted file mode 100644 index c73b71178e1f9cf0e29ebf88617638b95dcfadb9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10716 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 diff --git a/mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_piano_digital.ogg b/mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_piano_digital.ogg new file mode 100644 index 0000000000000000000000000000000000000000..6461a7005585df5ee613a4f6659f540d7a81ed5c GIT binary patch literal 22196 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ÿ>gQ(_0oBn%B3z(WTNKl;qU!JCi;s+$C?WWmw3z|jEQQ|$r? zGAOJBmxl}uCZIrPIIu$y+>lTKO@1>dw1PPcEW()?3K*CeRt0k~Ff=-3-e+WB5J<6= zGhko{Xjthb!`OBpZH49nh5!cv7EY!nmgB4qW=sz?+xr%n=rI+FZ*JjWSg$Q5IeAW> zM379tfweDZ{a7{mZHTgjq0}+0>VF1Z9bGT7{|26AKE~)O>Jpl}fAef9P>%Na_J6Ow z6%UsRgG9w4?;qA1oDZ#8f5wBkhlg|fG%gVaITvF|&4;#Y_LpbX1HU*(7<-?2Lr=~Owh!J z7=wiLoC8l77`AaSG;lL8>!6Uzo9p3slWB=zt5Z1x>x6 zWY5sB&J~m?7*@z!iU123D1a*)9>}cPn#Ewj1L@$rvQrAgYncEd8I(-|KqHqIgdi6F zNafIAVPYt;<_7f>l^OUsl&<)*^Gvc`qsV^n#0U1cs!B_UTm>3Q$VR~?~QBP;~}1A_`P!vTIZh7F*Vm>U@5`54Z4g0=_nG0f-fwUW_FWnied%EqN& zaFfxYiC1I6{%afFZaT`$*(K8UrSDY7fqT3RsthsipaLli+PML5B4F6dF2u;7;QL>= zVU{X5p))ARfr}=F1zVOTfKz+*hC9>_8XS6HTaY;Hfp5s`*KmonWHjtxFhp8DaEUM>osCD)%j zF2u26pI@;+c(KaC$sL!?rdvtC#odLrIt{4sX!RPN)i-`uL7=ryn7im1{~0y0uK2Ff!{y{mjna5Hv@xmB}bbB$640^n;U)L_Ll@W z3stn%v4RveJOkyc4gCe6j@nspt+EX=$SI)B28tktok^e#&B$mpGFi&>R$`ta6Z;C&|EIkjlt#;4eSJ znw*=A3=PT*A6_5e0wt^uF?swgVT))xY+qH=>??R*>ejl$`H^4(!{{c> z)vu88WP5mI>xm);1F6D&oGh#}ZZ9p>eRrDig5cw#6?GpqRtY+GM=+JTy|#LDc`8pr zo>D`B;h|@`tm8jG;+kuu;BSe z9tI`@v9>vxdL9Md$<9sB83pGROFJt+jSrVv9sgc->3#24XEq5W{4Z1a$H>6&WBx@2 zw)ese?kAaVOgngLqb+!F_}{&zDf&Miax*Yk6y0EO_{+%| zrgi?N91M=Gw+$K^=Qel=D4&|#z@F%^z4>bF7H*r;bKr@qN#I1J5Yq^b4TcZfz5d#emK+RB3XETa7-twQ za6BNuz@Q<-ad`K`^IYk9*A!h7%ECv}zSjI_rM z`@Id*kM`HjzLNuxy``Pz{RkSRp2?(wo8l>Ck*!=xgxjP z#dNb$K(^`D6Kz}^M<=nkNIS7Ga51c4?%noJVhgn#594?9Vt899-;{l(+TrmLw1sjFL9!=gXo+7K6ifs$nOxPBP{NOnF zB{g+c+YF`&#mgBK4mciQJR2>+z;IwaCj)Z=W7mN%mzhC%u3>&HXzhy6^(id{Lfnt- z*yc+2IW%pZ^W^##T|)*xrUFox$AzITIeMy!)9k0~bXVL6U(Xi%Ga)3g5H6q6`g@3YrWDj&U&rGcvC4 z$~rLVgb2ffM!sc-m&|GTf3Ju`p)B*hUu46ghD91z;ut{7jS_aa=4l18EO;u!B%q=& zgM*V%KODk-;MY+##PM#Lxg4!eCjt5tO|kLl_|UPm$Z~$o8N02qPooyyWN;o-VhPe(>pi z)>d|xeUfBxmT{@|pRq@@qt zLS`JWVOXQXpvJW38^eaL4pIj;ykTHS*>BFt;J|L@%f@hnk%3{)S!G5BJI1~TYz$JM N;LTvU!@$SK2LP0JCZYfU literal 0 HcmV?d00001 diff --git a/mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_squarewave.ogg b/mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_squarewave.ogg new file mode 100644 index 0000000000000000000000000000000000000000..b6bc5c445c2b6a7d4d677ee4b5913512177c14d0 GIT binary patch literal 8751 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 Ji-DgH3;^fpn+N~^ diff --git a/mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_xylophone_metal.ogg b/mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_xylophone_metal.ogg new file mode 100644 index 0000000000000000000000000000000000000000..2d99327f7150786b5e7fc67f9edc8aea8be405e8 GIT binary patch literal 21049 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 G Date: Sat, 28 Mar 2020 07:54:14 +0100 Subject: [PATCH 601/737] Nodeblock: Change snare sound --- .../sounds/mesecons_noteblock_snare.ogg | Bin 9865 -> 8208 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_snare.ogg b/mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_snare.ogg index 83a79441d70f64bbb84bf7737319c88fc29f2756..329a43b4d8162d6fa05253bf89cf95d2ea53d21d 100644 GIT binary patch literal 8208 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 Yb7?%#fk<7izP|EZ{*xUi3Kba{0Be?^%K!iX literal 9865 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 From 73d93ae969b6371b4dc73f2a62cfbdd00fc7b839 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sun, 29 Mar 2020 13:59:54 +0200 Subject: [PATCH 602/737] Add dummy inventory images for backwards-compat In 0.60.0, the inventory rendering of nodes was changed, so images were removed. This caused missing image errors with *existing* node formspecs, however, so empty dummy images are added back. --- .../textures/crafting_inventory_9_slots.png | Bin 0 -> 165 bytes .../textures/mcl_chests_inventory_chest.png | Bin 0 -> 165 bytes .../textures/crafting_inventory_furnace.png | Bin 0 -> 165 bytes .../textures/mcl_hoppers_inventory.png | Bin 0 -> 165 bytes 4 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 mods/HUD/mcl_formspec/textures/crafting_inventory_9_slots.png create mode 100644 mods/ITEMS/mcl_chests/textures/mcl_chests_inventory_chest.png create mode 100644 mods/ITEMS/mcl_furnaces/textures/crafting_inventory_furnace.png create mode 100644 mods/ITEMS/mcl_hoppers/textures/mcl_hoppers_inventory.png diff --git a/mods/HUD/mcl_formspec/textures/crafting_inventory_9_slots.png b/mods/HUD/mcl_formspec/textures/crafting_inventory_9_slots.png new file mode 100644 index 0000000000000000000000000000000000000000..134556eab976fe1e9cd974c8ea11ca71f9ef769d GIT binary patch literal 165 zcmeAS@N?(olHy`uVBq!ia0y~yU|o|Ux>0|SF(iEBiObAE1a zYF-J0b5UwyNotBhd1gt5g1e`0KzJjcIM`kn#}JO|$sFH8#n~8`W-{E?|G2%5fq{X+ M)78&qol`;+0F6Z^WB>pF literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_chests/textures/mcl_chests_inventory_chest.png b/mods/ITEMS/mcl_chests/textures/mcl_chests_inventory_chest.png new file mode 100644 index 0000000000000000000000000000000000000000..0cc98f7286f835372cc0f090f34df40ca2f149b0 GIT binary patch literal 165 zcmeAS@N?(olHy`uVBq!ia0y~yU|wc6x=<11Hv2m#KHEuIEHXsPv-a*D$d5hG?U@B{>SZg3=9km Mp00i_>zopr00-zO00000 literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_furnaces/textures/crafting_inventory_furnace.png b/mods/ITEMS/mcl_furnaces/textures/crafting_inventory_furnace.png new file mode 100644 index 0000000000000000000000000000000000000000..4c81babdaa801ad1cb4fd6558d82293490a898df GIT binary patch literal 165 zcmeAS@N?(olHy`uVBq!ia0y~yU|aj?BEjv*Y^lR3VHinB2=&1AT(|8aXA0|Ntt Mr>mdKI;Vst0I(@0+5i9m literal 0 HcmV?d00001 From ed63374480cf0899024088f4c7f18f672090ea6f Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sun, 29 Mar 2020 14:15:00 +0200 Subject: [PATCH 603/737] Add missing slot images for dispenser+dropper --- mods/ITEMS/REDSTONE/mcl_dispensers/init.lua | 3 +++ mods/ITEMS/REDSTONE/mcl_droppers/init.lua | 3 +++ 2 files changed, 6 insertions(+) diff --git a/mods/ITEMS/REDSTONE/mcl_dispensers/init.lua b/mods/ITEMS/REDSTONE/mcl_dispensers/init.lua index a88b66f5..386c50fc 100644 --- a/mods/ITEMS/REDSTONE/mcl_dispensers/init.lua +++ b/mods/ITEMS/REDSTONE/mcl_dispensers/init.lua @@ -15,9 +15,12 @@ local setup_dispenser = function(pos) local form = "size[9,8.75]".. "label[0,4.0;"..minetest.formspec_escape(minetest.colorize("#313131", S("Inventory"))).."]".. "list[current_player;main;0,4.5;9,3;9]".. + mcl_formspec.get_itemslot_bg(0,4.5,9,3).. "list[current_player;main;0,7.74;9,1;]".. + mcl_formspec.get_itemslot_bg(0,7.74,9,1).. "label[3,0;"..minetest.formspec_escape(minetest.colorize("#313131", S("Dispenser"))).."]".. "list[current_name;main;3,0.5;3,3;]".. + mcl_formspec.get_itemslot_bg(3,0.5,3,3).. "listring[current_name;main]".. "listring[current_player;main]" local meta = minetest.get_meta(pos) diff --git a/mods/ITEMS/REDSTONE/mcl_droppers/init.lua b/mods/ITEMS/REDSTONE/mcl_droppers/init.lua index 1fa40eeb..cf32abae 100644 --- a/mods/ITEMS/REDSTONE/mcl_droppers/init.lua +++ b/mods/ITEMS/REDSTONE/mcl_droppers/init.lua @@ -16,9 +16,12 @@ local setup_dropper = function(pos) local form = "size[9,8.75]".. "label[0,4.0;"..minetest.formspec_escape(minetest.colorize("#313131", S("Inventory"))).."]".. "list[current_player;main;0,4.5;9,3;9]".. + mcl_formspec.get_itemslot_bg(0,4.5,9,3).. "list[current_player;main;0,7.74;9,1;]".. + mcl_formspec.get_itemslot_bg(0,7.74,9,1).. "label[3,0;"..minetest.formspec_escape(minetest.colorize("#313131", S("Dropper"))).."]".. "list[current_name;main;3,0.5;3,3;]".. + mcl_formspec.get_itemslot_bg(3,0.5,3,3).. "listring[current_name;main]".. "listring[current_player;main]" local meta = minetest.get_meta(pos) From e9f259881f961d924d9c536320984383ac7b833f Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sun, 29 Mar 2020 14:35:01 +0200 Subject: [PATCH 604/737] Add LBMs to update to new node formspecs of 0.60.0 --- mods/ITEMS/REDSTONE/mcl_dispensers/init.lua | 5 +- mods/ITEMS/REDSTONE/mcl_droppers/init.lua | 5 +- mods/ITEMS/mcl_anvils/init.lua | 13 ++++ mods/ITEMS/mcl_chests/init.lua | 75 ++++++++++++++------- mods/ITEMS/mcl_furnaces/init.lua | 12 ++++ mods/ITEMS/mcl_hoppers/init.lua | 11 +++ 6 files changed, 92 insertions(+), 29 deletions(-) diff --git a/mods/ITEMS/REDSTONE/mcl_dispensers/init.lua b/mods/ITEMS/REDSTONE/mcl_dispensers/init.lua index 386c50fc..464bc4bd 100644 --- a/mods/ITEMS/REDSTONE/mcl_dispensers/init.lua +++ b/mods/ITEMS/REDSTONE/mcl_dispensers/init.lua @@ -361,9 +361,10 @@ if minetest.get_modpath("doc") then doc.add_entry_alias("nodes", "mcl_dispensers:dispenser", "nodes", "mcl_dispensers:dispenser_up") end +-- Legacy minetest.register_lbm({ - label = "Update dispenser formspecs (0.51.0)", - name = "mcl_dispensers:update_formspecs_0_51_0", + label = "Update dispenser formspecs (0.60.0)", + name = "mcl_dispensers:update_formspecs_0_60_0", nodenames = { "mcl_dispensers:dispenser", "mcl_dispensers:dispenser_down", "mcl_dispensers:dispenser_up" }, action = function(pos, node) setup_dispenser(pos) diff --git a/mods/ITEMS/REDSTONE/mcl_droppers/init.lua b/mods/ITEMS/REDSTONE/mcl_droppers/init.lua index cf32abae..6ca92b33 100644 --- a/mods/ITEMS/REDSTONE/mcl_droppers/init.lua +++ b/mods/ITEMS/REDSTONE/mcl_droppers/init.lua @@ -209,9 +209,10 @@ if minetest.get_modpath("doc") then doc.add_entry_alias("nodes", "mcl_droppers:dropper", "nodes", "mcl_droppers:dropper_up") end +-- Legacy minetest.register_lbm({ - label = "Update dropper formspecs (0.51.0)", - name = "mcl_droppers:update_formspecs_0_51_0", + label = "Update dropper formspecs (0.60.0)", + name = "mcl_droppers:update_formspecs_0_60_0", nodenames = { "mcl_droppers:dropper", "mcl_droppers:dropper_down", "mcl_droppers:dropper_up" }, action = function(pos, node) setup_dropper(pos) diff --git a/mods/ITEMS/mcl_anvils/init.lua b/mods/ITEMS/mcl_anvils/init.lua index 994a7029..f2be3b85 100644 --- a/mods/ITEMS/mcl_anvils/init.lua +++ b/mods/ITEMS/mcl_anvils/init.lua @@ -490,3 +490,16 @@ if minetest.get_modpath("doc") then doc.add_entry_alias("nodes", "mcl_anvils:anvil", "nodes", "mcl_anvils:anvil_damage_1") doc.add_entry_alias("nodes", "mcl_anvils:anvil", "nodes", "mcl_anvils:anvil_damage_2") end + +-- Legacy +minetest.register_lbm({ + label = "Update anvil formspecs (0.60.0", + name = "mcl_anvils:update_formspec_0_60_0", + nodenames = { "group:anvil" }, + run_at_every_load = false, + action = function(pos, node) + local meta = minetest.get_meta(pos) + local set_name = meta:get_string("set_name") + meta:set_string("formspec", get_anvil_formspec(set_name)) + end, +}) diff --git a/mods/ITEMS/mcl_chests/init.lua b/mods/ITEMS/mcl_chests/init.lua index c9427aa1..d92448c6 100644 --- a/mods/ITEMS/mcl_chests/init.lua +++ b/mods/ITEMS/mcl_chests/init.lua @@ -678,6 +678,19 @@ minetest.register_craft({ burntime = 15 }) +local formspec_ender_chest = "size[9,8.75]".. + "label[0,0;"..minetest.formspec_escape(minetest.colorize("#313131", S("Ender Chest"))).."]".. + "list[current_player;enderchest;0,0.5;9,3;]".. + mcl_formspec.get_itemslot_bg(0,0.5,9,3).. + "label[0,4.0;"..minetest.formspec_escape(minetest.colorize("#313131", S("Inventory"))).."]".. + "list[current_player;main;0,4.5;9,3;9]".. + mcl_formspec.get_itemslot_bg(0,4.5,9,3).. + "list[current_player;main;0,7.74;9,1;]".. + mcl_formspec.get_itemslot_bg(0,7.74,9,1).. + "listring[current_player;enderchest]".. + "listring[current_player;main]" + + minetest.register_node("mcl_chests:ender_chest", { description = S("Ender Chest"), _tt_help = S("27 interdimensional inventory slots") .. "\n" .. S("Put items inside, retrieve them from any ender chest"), @@ -697,18 +710,7 @@ minetest.register_node("mcl_chests:ender_chest", { drop = "mcl_core:obsidian 8", on_construct = function(pos) local meta = minetest.get_meta(pos) - meta:set_string("formspec", - "size[9,8.75]".. - "label[0,0;"..minetest.formspec_escape(minetest.colorize("#313131", S("Ender Chest"))).."]".. - "list[current_player;enderchest;0,0.5;9,3;]".. - mcl_formspec.get_itemslot_bg(0,0.5,9,3).. - "label[0,4.0;"..minetest.formspec_escape(minetest.colorize("#313131", S("Inventory"))).."]".. - "list[current_player;main;0,4.5;9,3;9]".. - mcl_formspec.get_itemslot_bg(0,4.5,9,3).. - "list[current_player;main;0,7.74;9,1;]".. - mcl_formspec.get_itemslot_bg(0,7.74,9,1).. - "listring[current_player;enderchest]".. - "listring[current_player;main]") + meta:set_string("formspec", formspec_ender_chest) end, _mcl_blast_resistance = 3000, _mcl_hardness = 22.5, @@ -779,6 +781,18 @@ local shulker_mob_textures = { } local canonical_shulker_color = "violet" +local formspec_shulker_box = "size[9,8.75]".. + "label[0,0;"..minetest.formspec_escape(minetest.colorize("#313131", S("Shulker Box"))).."]".. + "list[current_name;main;0,0.5;9,3;]".. + mcl_formspec.get_itemslot_bg(0,0.5,9,3).. + "label[0,4.0;"..minetest.formspec_escape(minetest.colorize("#313131", S("Inventory"))).."]".. + "list[current_player;main;0,4.5;9,3;9]".. + mcl_formspec.get_itemslot_bg(0,4.5,9,3).. + "list[current_player;main;0,7.74;9,1;]".. + mcl_formspec.get_itemslot_bg(0,7.74,9,1).. + "listring[current_name;main]".. + "listring[current_player;main]" + for color, desc in pairs(boxtypes) do local mob_texture = shulker_mob_textures[color] local is_canonical = color == canonical_shulker_color @@ -820,18 +834,7 @@ for color, desc in pairs(boxtypes) do -- on_place = minetest.rotate_node, on_construct = function(pos) local meta = minetest.get_meta(pos) - meta:set_string("formspec", - "size[9,8.75]".. - "label[0,0;"..minetest.formspec_escape(minetest.colorize("#313131", S("Shulker Box"))).."]".. - "list[current_name;main;0,0.5;9,3;]".. - mcl_formspec.get_itemslot_bg(0,0.5,9,3).. - "label[0,4.0;"..minetest.formspec_escape(minetest.colorize("#313131", S("Inventory"))).."]".. - "list[current_player;main;0,4.5;9,3;9]".. - mcl_formspec.get_itemslot_bg(0,4.5,9,3).. - "list[current_player;main;0,7.74;9,1;]".. - mcl_formspec.get_itemslot_bg(0,7.74,9,1).. - "listring[current_name;main]".. - "listring[current_player;main]") + meta:set_string("formspec", formspec_shulker_box) local inv = meta:get_inventory() inv:set_size("main", 9*3) end, @@ -956,7 +959,29 @@ minetest.register_lbm({ nodenames = { "mcl_chests:trapped_chest_on", "mcl_chests:trapped_chest_on_left", "mcl_chests:trapped_chest_on_right" }, run_at_every_load = true, action = function(pos, node) - minetest.log("error", "lbm!" ..minetest.pos_to_string(pos)) + minetest.log("action", "[mcl_chests] Disabled active trapped chest on load: " ..minetest.pos_to_string(pos)) chest_update_after_close(pos) end, }) + +-- Legacy +minetest.register_lbm({ + label = "Update ender chest formspecs (0.60.0", + name = "mcl_chests:update_ender_chest_formspecs_0_60_0", + nodenames = { "mcl_chests:ender_chest" }, + run_at_every_load = false, + action = function(pos, node) + local meta = minetest.get_meta(pos) + meta:set_string("formspec", formspec_ender_chest) + end, +}) +minetest.register_lbm({ + label = "Update shulker box formspecs (0.60.0", + name = "mcl_chests:update_shulker_box_formspecs_0_60_0", + nodenames = { "group:shulker_box" }, + run_at_every_load = false, + action = function(pos, node) + local meta = minetest.get_meta(pos) + meta:set_string("formspec", formspec_shulker_box) + end, +}) diff --git a/mods/ITEMS/mcl_furnaces/init.lua b/mods/ITEMS/mcl_furnaces/init.lua index 871e38ab..b2c76bb7 100644 --- a/mods/ITEMS/mcl_furnaces/init.lua +++ b/mods/ITEMS/mcl_furnaces/init.lua @@ -417,3 +417,15 @@ if minetest.get_modpath("doc") then doc.add_entry_alias("nodes", "mcl_furnaces:furnace", "nodes", "mcl_furnaces:furnace_active") end +-- Legacy +minetest.register_lbm({ + label = "Update furnace formspecs (0.60.0", + name = "mcl_furnaces:update_formspecs_0_60_0", + -- Only update inactive furnaces because active ones should update themselves + nodenames = { "mcl_furnaces:furnace" }, + run_at_every_load = false, + action = function(pos, node) + local meta = minetest.get_meta(pos) + meta:set_string("formspec", inactive_formspec) + end, +}) diff --git a/mods/ITEMS/mcl_hoppers/init.lua b/mods/ITEMS/mcl_hoppers/init.lua index 668d6db4..905ad8a0 100644 --- a/mods/ITEMS/mcl_hoppers/init.lua +++ b/mods/ITEMS/mcl_hoppers/init.lua @@ -486,3 +486,14 @@ end -- Legacy minetest.register_alias("mcl_hoppers:hopper_item", "mcl_hoppers:hopper") + +minetest.register_lbm({ + label = "Update hopper formspecs (0.60.0", + name = "mcl_hoppers:update_formspec_0_60_0", + nodenames = { "group:hopper" }, + run_at_every_load = false, + action = function(pos, node) + local meta = minetest.get_meta(pos) + meta:set_string("formspec", mcl_hoppers_formspec) + end, +}) From da1c3f635c87f42354f8d8e66f37d878b6fd009b Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sun, 29 Mar 2020 14:38:39 +0200 Subject: [PATCH 605/737] Revert "Add dummy inventory images for backwards-compat" This reverts commit 73d93ae969b6371b4dc73f2a62cfbdd00fc7b839. --- .../textures/crafting_inventory_9_slots.png | Bin 165 -> 0 bytes .../textures/mcl_chests_inventory_chest.png | Bin 165 -> 0 bytes .../textures/crafting_inventory_furnace.png | Bin 165 -> 0 bytes .../textures/mcl_hoppers_inventory.png | Bin 165 -> 0 bytes 4 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 mods/HUD/mcl_formspec/textures/crafting_inventory_9_slots.png delete mode 100644 mods/ITEMS/mcl_chests/textures/mcl_chests_inventory_chest.png delete mode 100644 mods/ITEMS/mcl_furnaces/textures/crafting_inventory_furnace.png delete mode 100644 mods/ITEMS/mcl_hoppers/textures/mcl_hoppers_inventory.png diff --git a/mods/HUD/mcl_formspec/textures/crafting_inventory_9_slots.png b/mods/HUD/mcl_formspec/textures/crafting_inventory_9_slots.png deleted file mode 100644 index 134556eab976fe1e9cd974c8ea11ca71f9ef769d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 165 zcmeAS@N?(olHy`uVBq!ia0y~yU|o|Ux>0|SF(iEBiObAE1a zYF-J0b5UwyNotBhd1gt5g1e`0KzJjcIM`kn#}JO|$sFH8#n~8`W-{E?|G2%5fq{X+ M)78&qol`;+0F6Z^WB>pF diff --git a/mods/ITEMS/mcl_chests/textures/mcl_chests_inventory_chest.png b/mods/ITEMS/mcl_chests/textures/mcl_chests_inventory_chest.png deleted file mode 100644 index 0cc98f7286f835372cc0f090f34df40ca2f149b0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 165 zcmeAS@N?(olHy`uVBq!ia0y~yU|wc6x=<11Hv2m#KHEuIEHXsPv-a*D$d5hG?U@B{>SZg3=9km Mp00i_>zopr00-zO00000 diff --git a/mods/ITEMS/mcl_furnaces/textures/crafting_inventory_furnace.png b/mods/ITEMS/mcl_furnaces/textures/crafting_inventory_furnace.png deleted file mode 100644 index 4c81babdaa801ad1cb4fd6558d82293490a898df..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 165 zcmeAS@N?(olHy`uVBq!ia0y~yU|aj?BEjv*Y^lR3VHinB2=&1AT(|8aXA0|Ntt Mr>mdKI;Vst0I(@0+5i9m From 97ab2e7b385795a1f5c1ee08ca2855590efdf6c9 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sun, 29 Mar 2020 14:51:08 +0200 Subject: [PATCH 606/737] Update wieldview mod (wieldview_transform group) --- mods/PLAYER/wieldview/LICENSE.txt | 15 ++++++++++++++- mods/PLAYER/wieldview/README.txt | 10 ++++++++-- mods/PLAYER/wieldview/init.lua | 11 +++++++++-- 3 files changed, 31 insertions(+), 5 deletions(-) diff --git a/mods/PLAYER/wieldview/LICENSE.txt b/mods/PLAYER/wieldview/LICENSE.txt index 4e8d524b..e1552c06 100644 --- a/mods/PLAYER/wieldview/LICENSE.txt +++ b/mods/PLAYER/wieldview/LICENSE.txt @@ -1,5 +1,18 @@ [mod] visible wielded items [wieldview] ======================================= -License Source Code: Copyright (C) 2013-2017 Stuart Jones - LGPL v2.1 +Copyright (C) 2012-2019 stujones11, Stuart Jones +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU Lesser General Public License as published by +the Free Software Foundation; either version 2.1 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. diff --git a/mods/PLAYER/wieldview/README.txt b/mods/PLAYER/wieldview/README.txt index 66133c74..183e8c6d 100644 --- a/mods/PLAYER/wieldview/README.txt +++ b/mods/PLAYER/wieldview/README.txt @@ -1,8 +1,6 @@ [mod] visible wielded items [wieldview] ======================================= -Depends on: mcl_armor - Makes hand wielded items visible to other players. default settings: [minetest.conf] @@ -13,3 +11,11 @@ wieldview_update_time = 2 # Show nodes as tiles, disabled by default wieldview_node_tiles = false + +Info for modders +################ + +Wield image transformation: To apply a simple transformation to the item in +hand, add the group “wieldview_transform” to the item definition. The group +rating equals one of the numbers used for the [transform texture modifier +of the Lua API. diff --git a/mods/PLAYER/wieldview/init.lua b/mods/PLAYER/wieldview/init.lua index 2824097d..ecbb2dc0 100644 --- a/mods/PLAYER/wieldview/init.lua +++ b/mods/PLAYER/wieldview/init.lua @@ -29,8 +29,15 @@ wieldview.get_item_texture = function(self, item) texture = minetest.inventorycube(minetest.registered_items[item].tiles[1]) end end - if wieldview.transform[item] then - texture = texture.."^[transform"..wieldview.transform[item] + -- Get item image transformation, first from group, then from transform.lua + local transform = minetest.get_item_group(item, "wieldview_transform") + if transform == 0 then + transform = wieldview.transform[item] + end + if transform then + -- This actually works with groups ratings because transform1, transform2, etc. + -- have meaning and transform0 is used for identidy, so it can be ignored + texture = texture.."^[transform"..tostring(transform) end end return texture From 6ce3278dd4f3c25d0784cba036d7c932d972aaf3 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sun, 29 Mar 2020 16:05:30 +0200 Subject: [PATCH 607/737] Fix missing variable check in hcl_hoppers --- mods/ITEMS/mcl_hoppers/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_hoppers/init.lua b/mods/ITEMS/mcl_hoppers/init.lua index 905ad8a0..e53052e7 100644 --- a/mods/ITEMS/mcl_hoppers/init.lua +++ b/mods/ITEMS/mcl_hoppers/init.lua @@ -444,7 +444,7 @@ minetest.register_abm({ local abovenode = minetest.get_node(above) if not minetest.registered_nodes[abovenode.name] then return end local g = minetest.registered_nodes[abovenode.name].groups.container - mcl_util.move_item_container(above, pos) + local sucked = mcl_util.move_item_container(above, pos) -- Also suck in non-fuel items from furnace fuel slot if not sucked and g == 4 then From 02d7f20cc9da244b76a911f72b46ccb356f45faa Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sun, 29 Mar 2020 17:13:52 +0200 Subject: [PATCH 608/737] Version 0.61.0 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index e0241546..efd2840c 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ An unofficial Minecraft-like game for Minetest. Forked from MineClone by davedevils. Developed by Wuzzy and contributors. Not developed or endorsed by Mojang AB. -Version: 0.60.0 +Version: 0.61.0 ### Gameplay You start in a randomly-generated world made entirely of cubes. You can explore From 600eadedeadab2145656ff686744494e87449cff Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sun, 29 Mar 2020 23:24:04 +0200 Subject: [PATCH 609/737] Add nil checks when mob is damaged --- mods/ENTITIES/mcl_mobs/api.lua | 40 ++++++++++++++++++++++++---------- 1 file changed, 29 insertions(+), 11 deletions(-) diff --git a/mods/ENTITIES/mcl_mobs/api.lua b/mods/ENTITIES/mcl_mobs/api.lua index 798a5408..c35a0453 100644 --- a/mods/ENTITIES/mcl_mobs/api.lua +++ b/mods/ENTITIES/mcl_mobs/api.lua @@ -547,7 +547,7 @@ local check_for_death = function(self, cause, cmi_cause) -- has health actually changed? if self.health == self.old_health and self.health > 0 then - return + return false end local damaged = self.health < self.old_health @@ -745,7 +745,7 @@ local do_env_damage = function(self) -- remove mob if beyond map limits if not within_limits(pos, 0) then self.object:remove() - return + return true end @@ -755,7 +755,9 @@ local do_env_damage = function(self) effect(pos, 5, "tnt_smoke.png") - if check_for_death(self, "light", {type = "light"}) then return end + if check_for_death(self, "light", {type = "light"}) then + return true + end end end @@ -797,7 +799,9 @@ local do_env_damage = function(self) self.health = self.health - self.rain_damage if check_for_death(self, "rain", {type = "environment", - pos = pos, node = self.standing_in}) then return end + pos = pos, node = self.standing_in}) then + return true + end end end @@ -814,7 +818,9 @@ local do_env_damage = function(self) effect(pos, 5, "tnt_smoke.png", nil, nil, 1, nil) if check_for_death(self, "water", {type = "environment", - pos = pos, node = self.standing_in}) then return end + pos = pos, node = self.standing_in}) then + return true + end end -- lava damage @@ -828,7 +834,9 @@ local do_env_damage = function(self) effect(pos, 5, "fire_basic_flame.png", nil, nil, 1, nil) if check_for_death(self, "lava", {type = "environment", - pos = pos, node = self.standing_in}) then return end + pos = pos, node = self.standing_in}) then + return true + end end -- fire damage @@ -842,7 +850,9 @@ local do_env_damage = function(self) effect(pos, 5, "fire_basic_flame.png", nil, nil, 1, nil) if check_for_death(self, "fire", {type = "environment", - pos = pos, node = self.standing_in}) then return end + pos = pos, node = self.standing_in}) then + return true + end end -- damage_per_second node check @@ -853,7 +863,9 @@ local do_env_damage = function(self) effect(pos, 5, "tnt_smoke.png") if check_for_death(self, "dps", {type = "environment", - pos = pos, node = self.standing_in}) then return end + pos = pos, node = self.standing_in}) then + return true + end end -- Drowning damage @@ -882,7 +894,9 @@ local do_env_damage = function(self) self.health = self.health - dmg end if check_for_death(self, "drowning", {type = "environment", - pos = pos, node = self.standing_in}) then return end + pos = pos, node = self.standing_in}) then + return true + end else self.breath = math.min(self.breath_max, self.breath + 1) end @@ -902,7 +916,9 @@ local do_env_damage = function(self) self.health = self.health - 2 if check_for_death(self, "suffocation", {type = "environment", - pos = pos, node = self.standing_in}) then return end + pos = pos, node = self.standing_in}) then + return true + end end check_for_death(self, "", {type = "unknown"}) @@ -3146,7 +3162,9 @@ local mob_step = function(self, dtime) self.env_damage_timer = 0 -- check for environmental damage (water, fire, lava etc.) - do_env_damage(self) + if do_env_damage(self) then + return + end -- node replace check (cow eats grass etc.) replace(self, pos) From e81b5ef58aa6cd16ecf4fa7e7e1d54d226480e3a Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 30 Mar 2020 16:52:36 +0200 Subject: [PATCH 610/737] Another nil check in mcl_mobs --- mods/ENTITIES/mcl_mobs/api.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ENTITIES/mcl_mobs/api.lua b/mods/ENTITIES/mcl_mobs/api.lua index c35a0453..8244624c 100644 --- a/mods/ENTITIES/mcl_mobs/api.lua +++ b/mods/ENTITIES/mcl_mobs/api.lua @@ -921,7 +921,7 @@ local do_env_damage = function(self) end end - check_for_death(self, "", {type = "unknown"}) + return check_for_death(self, "", {type = "unknown"}) end From d8cb7a7164586490f2b7f3c5df3a172de921ff91 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 30 Mar 2020 21:02:13 +0200 Subject: [PATCH 611/737] Add achievement chat command --- mods/HUD/awards/api.lua | 5 +++ mods/HUD/awards/chat_commands.lua | 47 +++++++++++++++++++++++++++++ mods/HUD/awards/locale/awards.de.tr | 9 ++++++ mods/HUD/awards/locale/template.txt | 9 ++++++ mods/HUD/awards/readme.md | 4 ++- 5 files changed, 73 insertions(+), 1 deletion(-) diff --git a/mods/HUD/awards/api.lua b/mods/HUD/awards/api.lua index 70759509..c4367ba8 100644 --- a/mods/HUD/awards/api.lua +++ b/mods/HUD/awards/api.lua @@ -178,6 +178,11 @@ function awards.clear_player(name) awards.players[name] = {} end +-- Returns true if award exists, false otherwise +function awards.exists(award) + return awards.def[award] ~= nil +end + -- This function is called whenever a target condition is met. -- It checks if a player already has that achievement, and if they do not, -- it gives it to them diff --git a/mods/HUD/awards/chat_commands.lua b/mods/HUD/awards/chat_commands.lua index fab2d032..88e799df 100644 --- a/mods/HUD/awards/chat_commands.lua +++ b/mods/HUD/awards/chat_commands.lua @@ -38,3 +38,50 @@ minetest.register_chatcommand("awards", { end }) +minetest.register_privilege("achievements", { + description = S("Can give achievements to any player"), + give_to_singleplayer = false, + give_to_admin = false, +}) + +minetest.register_chatcommand("achievement", { + params = S("(grant ( | all)) | list"), + privs = { achievements = true }, + description = S("Give achievement to player or list all achievements"), + func = function(name, param) + if param == "list" then + local list = {} + for k,_ in pairs(awards.def) do + table.insert(list, k) + end + table.sort(list) + for a=1, #list do + minetest.chat_send_player(name, S("@1 (@2)", awards.def[list[a]].title, list[a])) + end + return true + end + local keyword, playername, achievement = string.match(param, "([^ ]+) (.+) (.+)") + if not keyword or not playername or not achievement then + return false, S("Invalid syntax.") + end + if keyword ~= "grant" then + return false, S("Invalid action.") + end + local player = minetest.get_player_by_name(playername) + if not player then + return false, S("Player is not online.") + end + if achievement == "all" then + for k,_ in pairs(awards.def) do + awards.unlock(playername, k) + end + return true, S("Done.") + elseif awards.exists(achievement) then + awards.unlock(playername, achievement) + return true, S("Done.") + else + return false, S("Achievement “@1” does not exist.", achievement) + end + end +}) + diff --git a/mods/HUD/awards/locale/awards.de.tr b/mods/HUD/awards/locale/awards.de.tr index 49663d11..2fb04c4c 100644 --- a/mods/HUD/awards/locale/awards.de.tr +++ b/mods/HUD/awards/locale/awards.de.tr @@ -49,3 +49,12 @@ Place @1 block(s).=Platzieren Sie @1 Blöcke. Dig @1 block(s).=Bauen Sie @1 Blöcke ab. Eat @1 item(s).=Essen Sie @1 Dinge. Craft @1 item(s).=Fertigen Sie @1 Gegenstände. +Can give achievements to any player=Kann Spielern Auszeichnungen vergeben +(grant ( | all)) | list=(grant ( | all)) | list +Give achievement to player or list all achievements=Auszeichnung an Spieler vergeben oder alle Auszeichnungen auflisten +@1 (@2)=@1 (@2) +Invalid syntax.=Ungültige Syntax. +Invalid action.=Ungültige Aktion. +Player is not online.=Spieler ist nicht online. +Done.=Fertig. +Achievement “@1” does not exist.=Auszeichnung »@1« existiert nicht. diff --git a/mods/HUD/awards/locale/template.txt b/mods/HUD/awards/locale/template.txt index bcfb67ac..529d524c 100644 --- a/mods/HUD/awards/locale/template.txt +++ b/mods/HUD/awards/locale/template.txt @@ -50,3 +50,12 @@ Place @1 block(s).= Dig @1 block(s).= Eat @1 item(s).= Craft @1 item(s).= +Can give achievements to any player= +(grant ( | all)) | list= +Give achievement to player or list all achievements= +@1 (@2)= +Invalid syntax.= +Invalid action.= +Player is not online.= +Done.= +Achievement “@1” does not exist.= diff --git a/mods/HUD/awards/readme.md b/mods/HUD/awards/readme.md index 83235130..70c650c8 100644 --- a/mods/HUD/awards/readme.md +++ b/mods/HUD/awards/readme.md @@ -11,7 +11,7 @@ old fork in Carbone, under same license. # Basic API * awards.register_achievement(name, def) - * name + * name: Unique identifier for achievement. You can use anything except "all" * desciption * sound [optional] - set a custom sound (SimpleSoundSpec) or `false` to play no sound. If not specified, a default sound is played @@ -59,6 +59,8 @@ old fork in Carbone, under same license. * awards.unlock(name, award) * gives an award to a player * name is the player name +* awards.exists(award) + * returns true if award exists, false otherwise # Included in the Mod From b2c8d7cff07cd77d1a7045b1ee4081f586191215 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Fri, 3 Apr 2020 12:50:48 +0200 Subject: [PATCH 612/737] Update biomeinfo to 1.0.3 --- mods/CORE/biomeinfo/README.md | 2 +- mods/CORE/biomeinfo/init.lua | 40 +++++++++++++++++++++++++++++++---- 2 files changed, 37 insertions(+), 5 deletions(-) diff --git a/mods/CORE/biomeinfo/README.md b/mods/CORE/biomeinfo/README.md index d895dadb..a99d1dbc 100644 --- a/mods/CORE/biomeinfo/README.md +++ b/mods/CORE/biomeinfo/README.md @@ -6,6 +6,6 @@ Most importantly, you can get the heat, humidity and biome in the v6 mapgen. See `API.md` for the API documentation. -Current version: 1.0.1 (this is a [SemVer](https://semver.org/)) +Current version: 1.0.3 (this is a [SemVer](https://semver.org/)) License: MIT License diff --git a/mods/CORE/biomeinfo/init.lua b/mods/CORE/biomeinfo/init.lua index 1ba18284..5013647e 100644 --- a/mods/CORE/biomeinfo/init.lua +++ b/mods/CORE/biomeinfo/init.lua @@ -19,6 +19,28 @@ local seed = tonumber(minetest.get_mapgen_setting("seed")) or 0 local mgv6_perlin_biome, mgv6_perlin_humidity, mgv6_np_biome +-- v6 default noiseparams are hardcoded here because Minetest doesn't give us those +local mgv6_np_biome_default = { + offset = 0, + scale = 1, + spread = { x = 500, y = 500, z = 500}, + seed = 9130, + octaves = 3, + persistence = 0.50, + lacunarity = 2.0, + flags = "eased", +} +local mgv6_np_humidity_default = { + offset = 0.5, + scale = 0.5, + spread = { x = 500, y = 500, z = 500}, + seed = 72384, + octaves = 3, + persistence = 0.50, + lacunarity = 2.0, + flags = "eased", +} + local v6_flags_str = minetest.get_mapgen_setting("mgv6_spflags") if v6_flags_str == nil then v6_flags_str = "" @@ -86,15 +108,19 @@ biomeinfo.all_v6_biomes = { local function init_perlins() if not mgv6_perlin_biome then mgv6_np_biome = minetest.get_mapgen_setting_noiseparams("mgv6_np_biome") - if mgv6_np_biome then - mgv6_perlin_biome = minetest.get_perlin(mgv6_np_biome) + if not mgv6_np_biome then + mgv6_np_biome = mgv6_np_biome_default + minetest.log("action", "[biomeinfo] Using hardcoded mgv6_np_biome default") end + mgv6_perlin_biome = minetest.get_perlin(mgv6_np_biome) end if not mgv6_perlin_humidity then local np_humidity = minetest.get_mapgen_setting_noiseparams("mgv6_np_humidity") - if np_humidity then - mgv6_perlin_humidity = minetest.get_perlin(np_humidity) + if not np_humidity then + np_humidity = mgv6_np_humidity_default + minetest.log("action", "[biomeinfo] Using hardcoded mgv6_np_humidity default") end + mgv6_perlin_humidity = minetest.get_perlin(np_humidity) end end @@ -112,6 +138,9 @@ end function biomeinfo.get_v6_heat(pos) init_perlins() + if not mgv6_perlin_biome then + return nil + end local bpos = vector.floor(pos) -- The temperature noise needs a special offset (see calculateNoise in mapgen_v6.cpp) return mgv6_perlin_biome:get_2d({x=bpos.x + mgv6_np_biome.spread.x*0.6, y=bpos.z + mgv6_np_biome.spread.z*0.2}) @@ -119,6 +148,9 @@ end function biomeinfo.get_v6_humidity(pos) init_perlins() + if not mgv6_perlin_humidity then + return nil + end local bpos = vector.floor(pos) return mgv6_perlin_humidity:get_2d({x=bpos.x, y=bpos.z}) end From c9b464f32990c30e7b519ee4bb3a16fa82c09a89 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Fri, 3 Apr 2020 12:51:01 +0200 Subject: [PATCH 613/737] Add findbiome mod --- mods/MISC/findbiome/README.md | 23 ++ mods/MISC/findbiome/init.lua | 320 +++++++++++++++++++++ mods/MISC/findbiome/license.txt | 24 ++ mods/MISC/findbiome/locale/findbiome.de.tr | 10 + mods/MISC/findbiome/locale/template.txt | 10 + mods/MISC/findbiome/mod.conf | 3 + 6 files changed, 390 insertions(+) create mode 100644 mods/MISC/findbiome/README.md create mode 100644 mods/MISC/findbiome/init.lua create mode 100644 mods/MISC/findbiome/license.txt create mode 100644 mods/MISC/findbiome/locale/findbiome.de.tr create mode 100644 mods/MISC/findbiome/locale/template.txt create mode 100644 mods/MISC/findbiome/mod.conf diff --git a/mods/MISC/findbiome/README.md b/mods/MISC/findbiome/README.md new file mode 100644 index 00000000..04c63199 --- /dev/null +++ b/mods/MISC/findbiome/README.md @@ -0,0 +1,23 @@ +# Minetest mod: findbiome + +## Description +This is a mod to help with mod/game development for Minetest. +It adds a command (“findbiome”) to find a biome nearby and teleport you to it +and another command (“listbiomes”) to list biomes. + +Version: 1.0.1 + +## Known limitations +There's no guarantee you will always find the biome, even if it exists in the world. +This can happen if the biome is very obscure or small, but usually you should be +able to find the biome. + +If the biome could not be found, just move to somewhere else and try again. + +## Authors +- paramat (MIT License) +- Wuzzy (MIT License) + +See license.txt for license information. + +This mod is based on the algorithm of the "spawn" mod from Minetest Game 5.0.0. diff --git a/mods/MISC/findbiome/init.lua b/mods/MISC/findbiome/init.lua new file mode 100644 index 00000000..ce7fd979 --- /dev/null +++ b/mods/MISC/findbiome/init.lua @@ -0,0 +1,320 @@ +local S = minetest.get_translator("findbiome") + +local mod_biomeinfo = minetest.get_modpath("biomeinfo") ~= nil +local mg_name = minetest.get_mapgen_setting("mg_name") +local water_level = tonumber(minetest.get_mapgen_setting("water_level")) + +-- Calculate the maximum playable limit +local mapgen_limit = tonumber(minetest.get_mapgen_setting("mapgen_limit")) +local chunksize = tonumber(minetest.get_mapgen_setting("chunksize")) +local playable_limit = math.max(mapgen_limit - (chunksize + 1) * 16, 0) + +-- Parameters +------------- + +-- Resolution of search grid in nodes. +local res = 64 +-- Number of points checked in the square search grid (edge * edge). +local checks = 128 * 128 + +-- End of parameters +-------------------- + +-- Direction table + +local dirs = { + {x = 0, y = 0, z = 1}, + {x = -1, y = 0, z = 0}, + {x = 0, y = 0, z = -1}, + {x = 1, y = 0, z = 0}, +} + +-- Returns true if pos is within the world boundaries +local function is_in_world(pos) + return not (math.abs(pos.x) > playable_limit or math.abs(pos.y) > playable_limit or math.abs(pos.z) > playable_limit) +end + +-- Checks if pos is within the biome's boundaries. If it isn't, places pos inside the boundaries. +local function adjust_pos_to_biome_limits(pos, biome_id) + local bpos = table.copy(pos) + local biome_name = minetest.get_biome_name(biome_id) + local biome = minetest.registered_biomes[biome_name] + if not biome then + minetest.log("error", "[findbiome] adjust_pos_to_biome_limits non-existing biome!") + return bpos, true + end + local axes = {"y", "x", "z"} + local out_of_bounds = false + for a=1, #axes do + local ax = axes[a] + local min, max + if biome[ax.."_min"] then + min = biome[ax.."_min"] + else + min = -playable_limit + end + if biome[ax.."_max"] then + max = biome[ax.."_max"] + else + max = playable_limit + end + min = tonumber(min) + max = tonumber(max) + if bpos[ax] < min then + out_of_bounds = true + bpos[ax] = min + if max-min > 16 then + bpos[ax] = math.max(bpos[ax] + 8, -playable_limit) + end + end + if bpos[ax] > max then + out_of_bounds = true + bpos[ax] = max + if max-min > 16 then + bpos[ax] = math.min(bpos[ax] - 8, playable_limit) + end + end + end + return bpos, out_of_bounds +end + +-- Find the special default biome +local function find_default_biome() + local all_biomes = minetest.registered_biomes + local biome_count = 0 + for b, biome in pairs(all_biomes) do + biome_count = biome_count + 1 + end + -- Trivial case: No biomes registered, default biome is everywhere. + if biome_count == 0 then + local y = minetest.get_spawn_level(0, 0) + if not y then + y = 0 + end + return { x = 0, y = y, z = 0 } + end + local pos = {} + -- Just check a lot of random positions + -- It's a crappy algorithm but better than nothing. + for i=1, 100 do + pos.x = math.random(-playable_limit, playable_limit) + pos.y = math.random(-playable_limit, playable_limit) + pos.z = math.random(-playable_limit, playable_limit) + local biome_data = minetest.get_biome_data(pos) + if biome_data and minetest.get_biome_name(biome_data.biome) == "default" then + return pos + end + end + return nil +end + +local function find_biome(pos, biomes) + pos = vector.round(pos) + -- Pos: Starting point for biome checks. This also sets the y co-ordinate for all + -- points checked, so the suitable biomes must be active at this y. + + -- Initial variables + + local edge_len = 1 + local edge_dist = 0 + local dir_step = 0 + local dir_ind = 1 + local success = false + local spawn_pos + local biome_ids + + -- Get next position on square search spiral + local function next_pos() + if edge_dist == edge_len then + edge_dist = 0 + dir_ind = dir_ind + 1 + if dir_ind == 5 then + dir_ind = 1 + end + dir_step = dir_step + 1 + edge_len = math.floor(dir_step / 2) + 1 + end + + local dir = dirs[dir_ind] + local move = vector.multiply(dir, res) + + edge_dist = edge_dist + 1 + + return vector.add(pos, move) + end + + -- Position search + local function search() + local attempt = 1 + while attempt < 3 do + for iter = 1, checks do + local biome_data = minetest.get_biome_data(pos) + -- Sometimes biome_data is nil + local biome = biome_data and biome_data.biome + for id_ind = 1, #biome_ids do + local biome_id = biome_ids[id_ind] + pos = adjust_pos_to_biome_limits(pos, biome_id) + local spos = table.copy(pos) + if biome == biome_id then + local good_spawn_height = pos.y <= water_level + 16 and pos.y >= water_level + local spawn_y = minetest.get_spawn_level(spos.x, spos.z) + if spawn_y then + spawn_pos = {x = spos.x, y = spawn_y, z = spos.z} + elseif not good_spawn_height then + spawn_pos = {x = spos.x, y = spos.y, z = spos.z} + elseif attempt >= 2 then + spawn_pos = {x = spos.x, y = spos.y, z = spos.z} + end + if spawn_pos then + local adjusted_pos, outside = adjust_pos_to_biome_limits(spawn_pos, biome_id) + if is_in_world(spawn_pos) and not outside then + return true + end + end + end + end + + pos = next_pos() + end + attempt = attempt + 1 + end + return false + end + local function search_v6() + if not mod_biomeinfo then return + false + end + for iter = 1, checks do + local found_biome = biomeinfo.get_v6_biome(pos) + for i = 1, #biomes do + local searched_biome = biomes[i] + if found_biome == searched_biome then + local spawn_y = minetest.get_spawn_level(pos.x, pos.z) + if spawn_y then + spawn_pos = {x = pos.x, y = spawn_y, z = pos.z} + if is_in_world(spawn_pos) then + return true + end + end + end + end + + pos = next_pos() + end + + return false + end + + if mg_name == "v6" then + success = search_v6() + else + -- Table of suitable biomes + biome_ids = {} + for i=1, #biomes do + local id = minetest.get_biome_id(biomes[i]) + if not id then + return nil, false + end + table.insert(biome_ids, id) + end + success = search() + end + return spawn_pos, success + +end + +local mods_loaded = false +minetest.register_on_mods_loaded(function() + mods_loaded = true +end) + +-- Regiver chat commands +do + minetest.register_chatcommand("findbiome", { + description = S("Find and teleport to biome"), + params = S(""), + privs = { debug = true, teleport = true }, + func = function(name, param) + if not mods_loaded then + return false + end + local player = minetest.get_player_by_name(name) + if not player then + return false, S("No player.") + end + local pos = player:get_pos() + local invalid_biome = true + if mg_name == "v6" then + if not mod_biomeinfo then + return false, S("Not supported. The “biomeinfo” mod is required for v6 mapgen support!") + end + local biomes = biomeinfo.get_active_v6_biomes() + for b=1, #biomes do + if param == biomes[b] then + invalid_biome = false + break + end + end + else + if param == "default" then + local biome_pos = find_default_biome() + if biome_pos then + player:set_pos(biome_pos) + return true, S("Biome found at @1.", minetest.pos_to_string(biome_pos)) + else + return false, S("No biome found!") + end + end + local id = minetest.get_biome_id(param) + if id then + invalid_biome = false + end + end + if invalid_biome then + return false, S("Biome does not exist!") + end + local biome_pos, success = find_biome(pos, {param}) + if success then + player:set_pos(biome_pos) + return true, S("Biome found at @1.", minetest.pos_to_string(biome_pos)) + else + return false, S("No biome found!") + end + end, + }) + + minetest.register_chatcommand("listbiomes", { + description = S("List all biomes"), + params = "", + privs = { debug = true }, + func = function(name, param) + if not mods_loaded then + return false + end + local biomes + local b = 0 + if mg_name == "v6" then + if not mod_biomeinfo then + return false, S("Not supported. The “biomeinfo” mod is required for v6 mapgen support!") + end + biomes = biomeinfo.get_active_v6_biomes() + b = #biomes + else + biomes = {} + for k,v in pairs(minetest.registered_biomes) do + table.insert(biomes, k) + b = b + 1 + end + end + if b == 0 then + return true, S("No biomes.") + else + table.sort(biomes) + for b=1, #biomes do + minetest.chat_send_player(name, biomes[b]) + end + return true + end + end, + }) +end diff --git a/mods/MISC/findbiome/license.txt b/mods/MISC/findbiome/license.txt new file mode 100644 index 00000000..a466aabd --- /dev/null +++ b/mods/MISC/findbiome/license.txt @@ -0,0 +1,24 @@ +License of source code +---------------------- + +The MIT License (MIT) +Copyright (C) 2018 paramat + +Permission is hereby granted, free of charge, to any person obtaining a copy of this +software and associated documentation files (the "Software"), to deal in the Software +without restriction, including without limitation the rights to use, copy, modify, merge, +publish, distribute, sublicense, and/or sell copies of the Software, and to permit +persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or +substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR +PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE +FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. + +For more details: +https://opensource.org/licenses/MIT diff --git a/mods/MISC/findbiome/locale/findbiome.de.tr b/mods/MISC/findbiome/locale/findbiome.de.tr new file mode 100644 index 00000000..d62332ea --- /dev/null +++ b/mods/MISC/findbiome/locale/findbiome.de.tr @@ -0,0 +1,10 @@ +# textdomain: findbiome +Find and teleport to biome=Ein Biom finden und hinteleportieren += +No player.=Kein Spieler +Biome does not exist!=Biom existiert nicht! +Biome found at @1.=Biom gefunden bei @1. +No biome found!=Kein Biom gefunden! +List all biomes=Alle Biome auflisten +No biomes.=Keine Biome. +Not supported. The “biomeinfo” mod is required for v6 mapgen support!=Nicht unterstützt. Die Mod „biomeinfo“ wird für Unterstützung des v6-Kartengenerators benötigt. diff --git a/mods/MISC/findbiome/locale/template.txt b/mods/MISC/findbiome/locale/template.txt new file mode 100644 index 00000000..f3dcc195 --- /dev/null +++ b/mods/MISC/findbiome/locale/template.txt @@ -0,0 +1,10 @@ +# textdomain: findbiome +Find and teleport to biome= += +No player.= +Biome does not exist!= +Biome found at @1.= +No biome found!= +List all biomes= +No biomes.= +Not supported. The “biomeinfo” mod is required for v6 mapgen support!= diff --git a/mods/MISC/findbiome/mod.conf b/mods/MISC/findbiome/mod.conf new file mode 100644 index 00000000..a8ab4e3c --- /dev/null +++ b/mods/MISC/findbiome/mod.conf @@ -0,0 +1,3 @@ +name=findbiome +description=Add commands to list and find biomes +optional_depends=biomeinfo From 28b1d5e8e96ccc43fb5fa5482b295689981e31d1 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sun, 5 Apr 2020 21:09:27 +0200 Subject: [PATCH 614/737] Mobs: Add more nil checks --- mods/ENTITIES/mcl_mobs/api.lua | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/mods/ENTITIES/mcl_mobs/api.lua b/mods/ENTITIES/mcl_mobs/api.lua index 8244624c..f1de1086 100644 --- a/mods/ENTITIES/mcl_mobs/api.lua +++ b/mods/ENTITIES/mcl_mobs/api.lua @@ -188,10 +188,10 @@ local set_velocity = function(self, v) end local yaw = (self.object:get_yaw() or 0) + self.rotate - + local vel = self.object:get_velocity() self.object:set_velocity({ x = sin(yaw) * -v, - y = self.object:get_velocity().y, + y = (vel and vel.y) or 0, z = cos(yaw) * v }) end @@ -680,6 +680,9 @@ local is_at_cliff_or_danger = function(self) return false end + if not self.object:get_luaentity() then + return false + end local yaw = self.object:get_yaw() local dir_x = -sin(yaw) * (self.collisionbox[4] + 0.5) local dir_z = cos(yaw) * (self.collisionbox[4] + 0.5) @@ -3078,7 +3081,7 @@ local mob_step = function(self, dtime) if self.delay and self.delay > 0 then - local yaw = self.object:get_yaw() + local yaw = self.object:get_yaw() or 0 if self.delay == 1 then yaw = self.target_yaw From ace1c6dfec5c45e002a6573a319e65a6e8d5c011 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sun, 5 Apr 2020 21:10:36 +0200 Subject: [PATCH 615/737] Version 0.62.0 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index efd2840c..21e21a83 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ An unofficial Minecraft-like game for Minetest. Forked from MineClone by davedevils. Developed by Wuzzy and contributors. Not developed or endorsed by Mojang AB. -Version: 0.61.0 +Version: 0.62.0 ### Gameplay You start in a randomly-generated world made entirely of cubes. You can explore From b2c75acd68bf8fe3bbef03bd35c11e3023b35ada Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 7 Apr 2020 00:39:19 +0200 Subject: [PATCH 616/737] Use new set_sky API --- mods/ENVIRONMENT/mcl_weather/rain.lua | 1 - mods/ENVIRONMENT/mcl_weather/skycolor.lua | 144 ++++++++++------------ 2 files changed, 65 insertions(+), 80 deletions(-) diff --git a/mods/ENVIRONMENT/mcl_weather/rain.lua b/mods/ENVIRONMENT/mcl_weather/rain.lua index 76e38608..6f88220d 100644 --- a/mods/ENVIRONMENT/mcl_weather/rain.lua +++ b/mods/ENVIRONMENT/mcl_weather/rain.lua @@ -96,7 +96,6 @@ end mcl_weather.rain.remove_player = function(player) local player_meta = mcl_weather.players[player:get_player_name()] if player_meta ~= nil and player_meta.origin_sky ~= nil then - player:set_sky(player_meta.origin_sky[1], player_meta.origin_sky[2], player_meta.origin_sky[3], true) player:set_clouds({color="#FFF0F0E5"}) mcl_weather.players[player:get_player_name()] = nil end diff --git a/mods/ENVIRONMENT/mcl_weather/skycolor.lua b/mods/ENVIRONMENT/mcl_weather/skycolor.lua index 196bd79f..1d3fe108 100644 --- a/mods/ENVIRONMENT/mcl_weather/skycolor.lua +++ b/mods/ENVIRONMENT/mcl_weather/skycolor.lua @@ -18,21 +18,6 @@ mcl_weather.skycolor = { -- number of colors while constructing gradient of user given colors max_val = 1000, - -- Enables smooth transition between existing sky color and target. - smooth_transitions = true, - - -- Transition between current sky color and new user given. - transition_in_progress = false, - - -- Transition colors are generated automaticly during initialization. - transition_colors = {}, - - -- Time where transition between current color and user given will be done - transition_time = 15, - - -- Tracks how much time passed during transition - transition_timer = 0, - -- Table for tracking layer order layer_names = {}, @@ -40,9 +25,6 @@ mcl_weather.skycolor = { add_layer = function(layer_name, layer_color, instant_update) mcl_weather.skycolor.colors[layer_name] = layer_color table.insert(mcl_weather.skycolor.layer_names, layer_name) - if (instant_update ~= true) then - mcl_weather.skycolor.init_transition() - end mcl_weather.skycolor.force_update = true end, @@ -71,18 +53,47 @@ mcl_weather.skycolor = { update_sky_color = function(players) -- Override day/night ratio as well players = mcl_weather.skycolor.utils.get_players(players) - local color = mcl_weather.skycolor.current_sky_layer_color() for _, player in ipairs(players) do local pos = player:get_pos() local dim = mcl_worlds.pos_to_dimension(pos) if dim == "overworld" then - if (color == nil) then - -- No sky layers - player:set_sky(nil, "regular") + if (mcl_weather.state == "none") then + -- Clear weather + player:set_sky({ + type = "regular", + sky_colors = { + day_sky = "#92B9FF", + day_horizon = "#B4D0FF", + dawn_sky = "#B4BAFA", + dawn_horizon = "BAC1F0", + night_sky = "#006AFF", + night_horizon = "#4090FF", + }, + clouds = true, + }) + player:set_sun({visible = true, sunrise_visible = true}) + player:set_moon({visible = true}) + player:set_stars({visible = true}) player:override_day_night_ratio(nil) else -- Weather skies - player:set_sky(color, "plain", nil, true) + local day_color = mcl_weather.skycolor.get_sky_layer_color(0.5) + local dawn_color = mcl_weather.skycolor.get_sky_layer_color(0.75) + local night_color = mcl_weather.skycolor.get_sky_layer_color(0) + player:set_sky({ type = "regular", + sky_color = { + day_sky = day_color, + day_horizon = day_color, + dawn_sky = dawn_color, + dawn_horizon = dawn_color, + night_sky = night_color, + night_horizon = night_color, + }, + clouds = true, + }) + player:set_sun({visible = false, sunrise_visible = false}) + player:set_moon({visible = false}) + player:set_stars({visible = false}) local lf = mcl_weather.get_current_light_factor() if mcl_weather.skycolor.current_layer_name() == "lightning" then @@ -93,9 +104,7 @@ mcl_weather.skycolor = { if light > 1 then light = 1 - (light - 1) end - light = (light * lf) + 0.15 - player:override_day_night_ratio(light) else player:override_day_night_ratio(nil) @@ -103,73 +112,56 @@ mcl_weather.skycolor = { end elseif dim == "end" then local t = "mcl_playerplus_end_sky.png" - player:set_sky("#000000", "skybox", {t,t,t,t,t,t}, false) + player:set_sky({ type = "skybox", + base_color = "#000000", + textures = {t,t,t,t,t,t}, + clouds = false, + }) + player:set_sun({visible = false , sunrise_visible = false}) + player:set_moon({visible = false}) + player:set_stars({visible = false}) player:override_day_night_ratio(0.5) elseif dim == "nether" then - player:set_sky("#300808", "plain", nil, false) + player:set_sky({ type = "plain", + base_color = "#300808", + clouds = false, + }) + player:set_sun({visible = false , sunrise_visible = false}) + player:set_moon({visible = false}) + player:set_stars({visible = false}) player:override_day_night_ratio(nil) elseif dim == "void" then - player:set_sky("#000000", "plain", nil, false) + player:set_sky({ type = "regular", + sky_color = { + day_sky = "#000000", + day_horizon = "#000000", + dawn_sky = "#000000", + dawn_horizon = "#000000", + night_sky = "#000000", + night_horizon = "#000000", + indoors = "#000000", + }, + clouds = false, + }) + player:set_sun({visible = false, sunrise_visible = false}) + player:set_moon({visible = false}) + player:set_stars({visible = false}) end end end, -- Returns current layer color in {r, g, b} format - current_sky_layer_color = function() + get_sky_layer_color = function(timeofday) if #mcl_weather.skycolor.layer_names == 0 then return nil end -- min timeofday value 0; max timeofday value 1. So sky color gradient range will be between 0 and 1 * mcl_weather.skycolor.max_val. - local timeofday = minetest.get_timeofday() local rounded_time = math.floor(timeofday * mcl_weather.skycolor.max_val) local color = mcl_weather.skycolor.utils.convert_to_rgb(mcl_weather.skycolor.min_val, mcl_weather.skycolor.max_val, rounded_time, mcl_weather.skycolor.retrieve_layer()) return color end, - -- Initialy used only on - update_transition_sky_color = function() - local multiplier = 100 - local rounded_time = math.floor(mcl_weather.skycolor.transition_timer * multiplier) - if rounded_time >= mcl_weather.skycolor.transition_time * multiplier then - mcl_weather.skycolor.stop_transition() - return - end - - local color = mcl_weather.skycolor.utils.convert_to_rgb(0, mcl_weather.skycolor.transition_time * multiplier, rounded_time, mcl_weather.skycolor.transition_colors) - - local players = mcl_weather.skycolor.utils.get_players(nil) - for _, player in ipairs(players) do - local pos = player:get_pos() - local dim = mcl_worlds.pos_to_dimension(pos) - if dim == "overworld" then - player:set_sky(color, "plain", nil, true) - end - end - end, - - init_transition = function() - -- sadly default sky returns unpredictible colors so transition mode becomes usable only for user defined color layers - -- Here '2' means that one color layer existed before new added and transition is posible. - if #mcl_weather.skycolor.layer_names < 2 then - return - end - - local transition_start_color = mcl_weather.skycolor.utils.get_current_bg_color() - if (transition_start_color == nil) then - return - end - local transition_end_color = mcl_weather.skycolor.current_sky_layer_color() - mcl_weather.skycolor.transition_colors = {transition_start_color, transition_end_color} - mcl_weather.skycolor.transition_in_progress = true - end, - - stop_transition = function() - mcl_weather.skycolor.transition_in_progress = false - mcl_weather.skycolor.transition_colors = {} - mcl_weather.skycolor.transition_timer = 0 - end, - utils = { convert_to_rgb = function(minval, maxval, current_val, colors) local max_index = #colors - 1 @@ -208,12 +200,6 @@ minetest.register_globalstep(function(dtime) return end - if mcl_weather.skycolor.smooth_transitions and mcl_weather.skycolor.transition_in_progress then - mcl_weather.skycolor.transition_timer = mcl_weather.skycolor.transition_timer + dtime - mcl_weather.skycolor.update_transition_sky_color() - return - end - if mcl_weather.skycolor.force_update then mcl_weather.skycolor.update_sky_color() mcl_weather.skycolor.force_update = false From c5e4ec5e27b876569c9254c275d701d2e589a0cc Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 7 Apr 2020 00:55:45 +0200 Subject: [PATCH 617/737] Use ephemeral sounds --- mods/CORE/mcl_sounds/init.lua | 2 +- mods/CORE/mcl_util/init.lua | 2 +- mods/ENTITIES/drippingwater/init.lua | 4 ++-- mods/ENTITIES/mcl_falling_nodes/init.lua | 4 ++-- mods/ENTITIES/mcl_item_entity/init.lua | 6 +++--- mods/ENTITIES/mcl_minecarts/init.lua | 2 +- mods/ENTITIES/mcl_mobs/api.lua | 10 +++++----- mods/ENTITIES/mcl_mobs/mount.lua | 2 +- mods/ENTITIES/mobs_mc/1_items_default.lua | 2 +- mods/ENTITIES/mobs_mc/2_throwing.lua | 10 +++++----- mods/ENTITIES/mobs_mc/chicken.lua | 2 +- mods/ENTITIES/mobs_mc/cow+mooshroom.lua | 2 +- mods/ENTITIES/mobs_mc/creeper.lua | 4 ++-- mods/ENTITIES/mobs_mc/ender_dragon.lua | 2 +- mods/ENTITIES/mobs_mc/enderman.lua | 4 ++-- mods/ENTITIES/mobs_mc/horse.lua | 4 ++-- mods/ENTITIES/mobs_mc/pig.lua | 4 ++-- mods/ENTITIES/mobs_mc/sheep.lua | 2 +- mods/ENTITIES/mobs_mc/snowman.lua | 2 +- mods/ENTITIES/mobs_mc/villager.lua | 12 ++++++------ mods/ENVIRONMENT/lightning/init.lua | 2 +- mods/ENVIRONMENT/mcl_weather/rain.lua | 2 +- mods/HELP/doc/doc/init.lua | 4 ++-- mods/HUD/awards/api.lua | 2 +- mods/ITEMS/REDSTONE/mesecons_button/init.lua | 6 +++--- mods/ITEMS/REDSTONE/mesecons_pistons/init.lua | 6 +++--- mods/ITEMS/REDSTONE/mesecons_torch/init.lua | 2 +- mods/ITEMS/REDSTONE/mesecons_walllever/init.lua | 6 +++--- mods/ITEMS/mcl_anvils/init.lua | 6 +++--- mods/ITEMS/mcl_armor/armor.lua | 2 +- mods/ITEMS/mcl_banners/init.lua | 4 ++-- mods/ITEMS/mcl_bows/arrow.lua | 4 ++-- mods/ITEMS/mcl_bows/bow.lua | 2 +- mods/ITEMS/mcl_buckets/init.lua | 8 ++++---- mods/ITEMS/mcl_cocoas/init.lua | 2 +- mods/ITEMS/mcl_core/functions.lua | 10 +++++----- mods/ITEMS/mcl_core/nodes_base.lua | 4 ++-- mods/ITEMS/mcl_core/nodes_climb.lua | 4 ++-- mods/ITEMS/mcl_doors/api_doors.lua | 4 ++-- mods/ITEMS/mcl_doors/api_trapdoors.lua | 4 ++-- mods/ITEMS/mcl_end/chorus_plant.lua | 6 +++--- mods/ITEMS/mcl_farming/hoes.lua | 4 ++-- mods/ITEMS/mcl_farming/shared_functions.lua | 2 +- mods/ITEMS/mcl_fences/init.lua | 4 ++-- mods/ITEMS/mcl_fire/flint_and_steel.lua | 5 +++-- mods/ITEMS/mcl_fire/init.lua | 6 +++--- mods/ITEMS/mcl_fishing/init.lua | 4 ++-- mods/ITEMS/mcl_flowers/init.lua | 4 ++-- mods/ITEMS/mcl_nether/nether_wart.lua | 2 +- mods/ITEMS/mcl_ocean/corals.lua | 2 +- mods/ITEMS/mcl_ocean/kelp.lua | 2 +- mods/ITEMS/mcl_ocean/seagrass.lua | 2 +- mods/ITEMS/mcl_portals/portal_end.lua | 4 ++-- mods/ITEMS/mcl_portals/portal_nether.lua | 2 +- mods/ITEMS/mcl_potions/init.lua | 6 +++--- mods/ITEMS/mcl_signs/init.lua | 2 +- mods/ITEMS/mcl_throwing/init.lua | 8 ++++---- mods/ITEMS/mcl_tnt/init.lua | 4 ++-- mods/ITEMS/mcl_tools/init.lua | 4 ++-- mods/ITEMS/mcl_torches/init.lua | 2 +- mods/PLAYER/mcl_hunger/hunger.lua | 4 ++-- 61 files changed, 123 insertions(+), 122 deletions(-) diff --git a/mods/CORE/mcl_sounds/init.lua b/mods/CORE/mcl_sounds/init.lua index 70010fda..b4d43f0c 100644 --- a/mods/CORE/mcl_sounds/init.lua +++ b/mods/CORE/mcl_sounds/init.lua @@ -164,5 +164,5 @@ end -- Player death sound minetest.register_on_dieplayer(function(player) -- TODO: Add separate death sound - minetest.sound_play({name="player_damage", gain = 1.0}, {pos=player:get_pos(), max_hear_distance=16}) + minetest.sound_play({name="player_damage", gain = 1.0}, {pos=player:get_pos(), max_hear_distance=16}, true) end) diff --git a/mods/CORE/mcl_util/init.lua b/mods/CORE/mcl_util/init.lua index b5d5e1bb..6a74bb69 100644 --- a/mods/CORE/mcl_util/init.lua +++ b/mods/CORE/mcl_util/init.lua @@ -385,7 +385,7 @@ function mcl_util.generate_on_place_plant_function(condition) if success then if idef.sounds and idef.sounds.place then - minetest.sound_play(idef.sounds.place, {pos=pointed_thing.above, gain=1}) + minetest.sound_play(idef.sounds.place, {pos=pointed_thing.above, gain=1}, true) end end itemstack = new_itemstack diff --git a/mods/ENTITIES/drippingwater/init.lua b/mods/ENTITIES/drippingwater/init.lua index 46bfa1fa..730cb7b7 100644 --- a/mods/ENTITIES/drippingwater/init.lua +++ b/mods/ENTITIES/drippingwater/init.lua @@ -39,7 +39,7 @@ minetest.register_entity("drippingwater:drop_water", { if minetest.get_node({x=ownpos.x, y=ownpos.y -0.5, z=ownpos.z}).name ~= "air" then self.object:remove() - minetest.sound_play({name="drippingwater_drip"}, {pos = ownpos, gain = 0.5, max_hear_distance = 8}) + minetest.sound_play({name="drippingwater_drip"}, {pos = ownpos, gain = 0.5, max_hear_distance = 8}, true) end end, }) @@ -81,7 +81,7 @@ minetest.register_entity("drippingwater:drop_lava", { if minetest.get_node({x=ownpos.x, y=ownpos.y -0.5, z=ownpos.z}).name ~= "air" then self.object:remove() - minetest.sound_play({name="drippingwater_lavadrip"}, {pos = ownpos, gain = 0.5, max_hear_distance = 8}) + minetest.sound_play({name="drippingwater_lavadrip"}, {pos = ownpos, gain = 0.5, max_hear_distance = 8}, true) end end, }) diff --git a/mods/ENTITIES/mcl_falling_nodes/init.lua b/mods/ENTITIES/mcl_falling_nodes/init.lua index 8fe4f17d..1ffc87b3 100644 --- a/mods/ENTITIES/mcl_falling_nodes/init.lua +++ b/mods/ENTITIES/mcl_falling_nodes/init.lua @@ -221,7 +221,7 @@ minetest.register_entity(":__builtin:falling_node", { meta:from_table(self.meta) end if def.sounds and def.sounds.place and def.sounds.place.name then - minetest.sound_play(def.sounds.place, {pos = np}) + minetest.sound_play(def.sounds.place, {pos = np}, true) end end else @@ -258,7 +258,7 @@ minetest.register_entity(":__builtin:falling_node", { def._mcl_after_falling(npos3, get_falling_depth(self)) end if def.sounds and def.sounds.place and def.sounds.place.name then - minetest.sound_play(def.sounds.place, {pos = np}) + minetest.sound_play(def.sounds.place, {pos = np}, true) end end deal_falling_damage(self, dtime) diff --git a/mods/ENTITIES/mcl_item_entity/init.lua b/mods/ENTITIES/mcl_item_entity/init.lua index 3c481034..689dfd38 100644 --- a/mods/ENTITIES/mcl_item_entity/init.lua +++ b/mods/ENTITIES/mcl_item_entity/init.lua @@ -75,7 +75,7 @@ minetest.register_globalstep(function(dtime) pos = pos, max_hear_distance = 16, gain = 1.0, - }) + }, true) check_pickup_achievements(object, player) @@ -129,7 +129,7 @@ minetest.register_globalstep(function(dtime) pos = pos, max_hear_distance = 16, gain = 1.0, - }) + }, true) end check_pickup_achievements(object, player) object:get_luaentity()._removed = true @@ -545,7 +545,7 @@ minetest.register_entity(":__builtin:item", { local dg = minetest.get_item_group(nn, "destroys_items") if (def and (lg ~= 0 or fg ~= 0 or dg == 1)) then if dg ~= 2 then - minetest.sound_play("builtin_item_lava", {pos = self.object:get_pos(), gain = 0.5}) + minetest.sound_play("builtin_item_lava", {pos = self.object:get_pos(), gain = 0.5}, true) end self._removed = true self.object:remove() diff --git a/mods/ENTITIES/mcl_minecarts/init.lua b/mods/ENTITIES/mcl_minecarts/init.lua index 7c57334b..14f70d24 100644 --- a/mods/ENTITIES/mcl_minecarts/init.lua +++ b/mods/ENTITIES/mcl_minecarts/init.lua @@ -43,7 +43,7 @@ local function activate_tnt_minecart(self, timer) "mcl_minecarts_minecart.png", }}) self._blinktimer = tnt.BLINKTIMER - minetest.sound_play("tnt_ignite", {pos = self.object:get_pos(), gain = 1.0, max_hear_distance = 15}) + minetest.sound_play("tnt_ignite", {pos = self.object:get_pos(), gain = 1.0, max_hear_distance = 15}, true) end local activate_normal_minecart = detach_driver diff --git a/mods/ENTITIES/mcl_mobs/api.lua b/mods/ENTITIES/mcl_mobs/api.lua index f1de1086..aedabaa0 100644 --- a/mods/ENTITIES/mcl_mobs/api.lua +++ b/mods/ENTITIES/mcl_mobs/api.lua @@ -130,7 +130,7 @@ local mob_sound = function(self, soundname, is_opinion, fixed_pitch) gain = 1.0, max_hear_distance = self.sounds.distance, pitch = pitch, - }) + }, true) self.opinion_sound_cooloff = 1 end end @@ -2230,7 +2230,7 @@ local do_states = function(self, dtime) pos = pos, gain = 1.0, max_hear_distance = self.sounds.distance or 32 - }) + }, true) entity_physics(pos, entity_damage_radius) effect(pos, 32, "tnt_smoke.png", nil, nil, node_break_radius, 1, 0) @@ -2683,12 +2683,12 @@ local mob_punch = function(self, hitter, tflp, tool_capabilities, dir) minetest.sound_play(weapon:get_definition().sounds[s], { object = self.object, --hitter, max_hear_distance = 8 - }) + }, true) else minetest.sound_play("default_punch", { object = self.object, --hitter, max_hear_distance = 5 - }) + }, true) end damage_effect(self, damage) @@ -3797,7 +3797,7 @@ function mobs:safe_boom(self, pos, radius) pos = pos, gain = 1.0, max_hear_distance = self.sounds and self.sounds.distance or 32 - }) + }, true) entity_physics(pos, radius) effect(pos, 32, "tnt_smoke.png", radius * 3, radius * 5, radius, 1, 0) diff --git a/mods/ENTITIES/mcl_mobs/mount.lua b/mods/ENTITIES/mcl_mobs/mount.lua index a068131d..8c4a6aa5 100644 --- a/mods/ENTITIES/mcl_mobs/mount.lua +++ b/mods/ENTITIES/mcl_mobs/mount.lua @@ -318,7 +318,7 @@ function mobs.drive(entity, moving_anim, stand_anim, can_fly, dtime) minetest.sound_play("default_punch", { object = entity.object, max_hear_distance = 5 - }) + }, true) entity.object:punch(entity.object, 1.0, { full_punch_interval = 1.0, diff --git a/mods/ENTITIES/mobs_mc/1_items_default.lua b/mods/ENTITIES/mobs_mc/1_items_default.lua index 8d67823b..09299364 100644 --- a/mods/ENTITIES/mobs_mc/1_items_default.lua +++ b/mods/ENTITIES/mobs_mc/1_items_default.lua @@ -568,7 +568,7 @@ if c("totem") then player:set_wielded_item(wield) end -- Effects - minetest.sound_play({name = "mcl_totems_totem", gain=1}, {pos=ppos, max_hear_distance=16}) + minetest.sound_play({name = "mcl_totems_totem", gain=1}, {pos=ppos, max_hear_distance=16}, true) -- Big totem overlay if not hud_totem[player:get_player_name()] then diff --git a/mods/ENTITIES/mobs_mc/2_throwing.lua b/mods/ENTITIES/mobs_mc/2_throwing.lua index f3b40691..e28d728f 100644 --- a/mods/ENTITIES/mobs_mc/2_throwing.lua +++ b/mods/ENTITIES/mobs_mc/2_throwing.lua @@ -85,7 +85,7 @@ THROWING_ARROW_ENTITY.on_step = function(self, dtime) if obj:get_luaentity() ~= nil then if obj:get_luaentity().name ~= "mobs_mc:arrow_entity" and obj:get_luaentity().name ~= "__builtin:item" then local damage = 3 - minetest.sound_play("damage", {pos = pos}) + minetest.sound_play("damage", {pos = pos}, true) obj:punch(self.object, 1.0, { full_punch_interval=1.0, damage_groups={fleshy=damage}, @@ -94,7 +94,7 @@ THROWING_ARROW_ENTITY.on_step = function(self, dtime) end else local damage = 3 - minetest.sound_play("damage", {pos = pos}) + minetest.sound_play("damage", {pos = pos}, true) obj:punch(self.object, 1.0, { full_punch_interval=1.0, damage_groups={fleshy=damage}, @@ -106,7 +106,7 @@ THROWING_ARROW_ENTITY.on_step = function(self, dtime) if self.lastpos.x~=nil then if node.name ~= "air" then - minetest.sound_play("bowhit1", {pos = pos}) + minetest.sound_play("bowhit1", {pos = pos}, true) minetest.add_item(self.lastpos, 'mobs_mc:arrow') self.object:remove() end @@ -132,7 +132,7 @@ local throwing_shoot_arrow = function(itemstack, player) obj:set_velocity({x=dir.x*22, y=dir.y*22, z=dir.z*22}) obj:set_acceleration({x=dir.x*-3, y=-10, z=dir.z*-3}) obj:set_yaw(player:get_look_yaw()+math.pi) - minetest.sound_play("throwing_sound", {pos=playerpos}) + minetest.sound_play("throwing_sound", {pos=playerpos}, true) if obj:get_luaentity().player == "" then obj:get_luaentity().player = player end @@ -266,7 +266,7 @@ if c("egg") then pos = playerpos, gain = 1.0, max_hear_distance = 5, - }) + }, true) local obj = minetest.add_entity({ x = playerpos.x, diff --git a/mods/ENTITIES/mobs_mc/chicken.lua b/mods/ENTITIES/mobs_mc/chicken.lua index e5c9ba80..de1773c0 100644 --- a/mods/ENTITIES/mobs_mc/chicken.lua +++ b/mods/ENTITIES/mobs_mc/chicken.lua @@ -86,7 +86,7 @@ mobs:register_mob("mobs_mc:chicken", { pos = pos, gain = 1.0, max_hear_distance = 16, - }) + }, true) end, }) diff --git a/mods/ENTITIES/mobs_mc/cow+mooshroom.lua b/mods/ENTITIES/mobs_mc/cow+mooshroom.lua index c93ebec4..7b0e3d9b 100644 --- a/mods/ENTITIES/mobs_mc/cow+mooshroom.lua +++ b/mods/ENTITIES/mobs_mc/cow+mooshroom.lua @@ -87,7 +87,7 @@ mooshroom_def.on_rightclick = function(self, clicker) -- Use shears to get mushrooms and turn mooshroom into cow if item:get_name() == mobs_mc.items.shears then local pos = self.object:get_pos() - minetest.sound_play("shears", {pos = pos}) + minetest.sound_play("shears", {pos = pos}, true) if self.base_texture[1] == "mobs_mc_mooshroom_brown.png" then minetest.add_item({x=pos.x, y=pos.y+1.4, z=pos.z}, mobs_mc.items.mushroom_brown .. " 5") diff --git a/mods/ENTITIES/mobs_mc/creeper.lua b/mods/ENTITIES/mobs_mc/creeper.lua index 4bda7a70..7add39b3 100644 --- a/mods/ENTITIES/mobs_mc/creeper.lua +++ b/mods/ENTITIES/mobs_mc/creeper.lua @@ -57,12 +57,12 @@ mobs:register_mob("mobs_mc:creeper", { item:add_wear(1000) -- Tool break sound if item:get_count() == 0 and wdef.sound and wdef.sound.breaks then - minetest.sound_play(wdef.sound.breaks, {pos = clicker:get_pos(), gain = 0.5}) + minetest.sound_play(wdef.sound.breaks, {pos = clicker:get_pos(), gain = 0.5}, true) end clicker:set_wielded_item(item) end self._forced_explosion_countdown_timer = self.explosion_timer - minetest.sound_play(self.sounds.attack, {pos = self.object:get_pos(), gain = 1, max_hear_distance = 16}) + minetest.sound_play(self.sounds.attack, {pos = self.object:get_pos(), gain = 1, max_hear_distance = 16}, true) end end, do_custom = function(self, dtime) diff --git a/mods/ENTITIES/mobs_mc/ender_dragon.lua b/mods/ENTITIES/mobs_mc/ender_dragon.lua index 0d324bf6..87d7e8ab 100644 --- a/mods/ENTITIES/mobs_mc/ender_dragon.lua +++ b/mods/ENTITIES/mobs_mc/ender_dragon.lua @@ -81,7 +81,7 @@ mobs:register_arrow("mobs_mc:dragon_fireball", { end, hit_mob = function(self, mob) - minetest.sound_play("tnt_explode", {pos = mob:get_pos(), gain = 1.5, max_hear_distance = 2*64}) + minetest.sound_play("tnt_explode", {pos = mob:get_pos(), gain = 1.5, max_hear_distance = 2*64}, true) mob:punch(self.object, 1.0, { full_punch_interval = 0.5, damage_groups = {fleshy = 12}, diff --git a/mods/ENTITIES/mobs_mc/enderman.lua b/mods/ENTITIES/mobs_mc/enderman.lua index 124a2c9d..4cb0bb89 100644 --- a/mods/ENTITIES/mobs_mc/enderman.lua +++ b/mods/ENTITIES/mobs_mc/enderman.lua @@ -255,7 +255,7 @@ mobs:register_mob("mobs_mc:enderman", { self.animation = select_enderman_animation("block") mobs:set_animation(self, self.animation.current) if def.sounds and def.sounds.dug then - minetest.sound_play(def.sounds.dug, {pos = take_pos, max_hear_distance = 16}) + minetest.sound_play(def.sounds.dug, {pos = take_pos, max_hear_distance = 16}, true) end end end @@ -276,7 +276,7 @@ mobs:register_mob("mobs_mc:enderman", { self.animation = select_enderman_animation("normal") mobs:set_animation(self, self.animation.current) if def.sounds and def.sounds.place then - minetest.sound_play(def.sounds.place, {pos = place_pos, max_hear_distance = 16}) + minetest.sound_play(def.sounds.place, {pos = place_pos, max_hear_distance = 16}, true) end self._taken_node = "" end diff --git a/mods/ENTITIES/mobs_mc/horse.lua b/mods/ENTITIES/mobs_mc/horse.lua index c9a8a766..46fd1419 100644 --- a/mods/ENTITIES/mobs_mc/horse.lua +++ b/mods/ENTITIES/mobs_mc/horse.lua @@ -245,7 +245,7 @@ local horse = { local tex = horse_extra_texture(self) self.base_texture = tex self.object:set_properties({textures = self.base_texture}) - minetest.sound_play({name = "mcl_armor_equip_leather"}, {gain=0.5, max_hear_distance=12, pos=self.object:get_pos()}) + minetest.sound_play({name = "mcl_armor_equip_leather"}, {gain=0.5, max_hear_distance=12, pos=self.object:get_pos()}, true) -- Put on horse armor if tamed elseif can_equip_horse_armor(self.name) and not self.driver and not self._horse_armor @@ -277,7 +277,7 @@ local horse = { self.object:set_properties({textures = self.base_texture}) local def = w:get_definition() if def.sounds and def.sounds._mcl_armor_equip then - minetest.sound_play({name = def.sounds._mcl_armor_equip}, {gain=0.5, max_hear_distance=12, pos=self.object:get_pos()}) + minetest.sound_play({name = def.sounds._mcl_armor_equip}, {gain=0.5, max_hear_distance=12, pos=self.object:get_pos()}, true) end -- Mount horse diff --git a/mods/ENTITIES/mobs_mc/pig.lua b/mods/ENTITIES/mobs_mc/pig.lua index 1d9c56b1..b8ded19b 100644 --- a/mods/ENTITIES/mobs_mc/pig.lua +++ b/mods/ENTITIES/mobs_mc/pig.lua @@ -125,7 +125,7 @@ mobs:register_mob("mobs_mc:pig", { stack:take_item() inv:set_stack("main", clicker:get_wield_index(), stack) end - minetest.sound_play({name = "mcl_armor_equip_leather"}, {gain=0.5, max_hear_distance=8, pos=self.object:get_pos()}) + minetest.sound_play({name = "mcl_armor_equip_leather"}, {gain=0.5, max_hear_distance=8, pos=self.object:get_pos()}, true) return end @@ -149,7 +149,7 @@ mobs:register_mob("mobs_mc:pig", { -- Break carrot on a stick local def = wielditem:get_definition() if def.sounds and def.sounds.breaks then - minetest.sound_play(def.sounds.breaks, {pos = clicker:get_pos(), max_hear_distance = 8, gain = 0.5}) + minetest.sound_play(def.sounds.breaks, {pos = clicker:get_pos(), max_hear_distance = 8, gain = 0.5}, true) end wielditem = {name = mobs_mc.items.fishing_rod, count = 1} else diff --git a/mods/ENTITIES/mobs_mc/sheep.lua b/mods/ENTITIES/mobs_mc/sheep.lua index 1e254557..1747d3ca 100644 --- a/mods/ENTITIES/mobs_mc/sheep.lua +++ b/mods/ENTITIES/mobs_mc/sheep.lua @@ -155,7 +155,7 @@ mobs:register_mob("mobs_mc:sheep", { if item:get_name() == mobs_mc.items.shears and not self.gotten and not self.child then self.gotten = true local pos = self.object:get_pos() - minetest.sound_play("shears", {pos = pos}) + minetest.sound_play("shears", {pos = pos}, true) pos.y = pos.y + 0.5 if not self.color then self.color = "unicolor_white" diff --git a/mods/ENTITIES/mobs_mc/snowman.lua b/mods/ENTITIES/mobs_mc/snowman.lua index 7e74d8d6..d645d6b2 100644 --- a/mods/ENTITIES/mobs_mc/snowman.lua +++ b/mods/ENTITIES/mobs_mc/snowman.lua @@ -115,7 +115,7 @@ mobs:register_mob("mobs_mc:snowman", { }) local pos = self.object:get_pos() - minetest.sound_play("shears", {pos = pos}) + minetest.sound_play("shears", {pos = pos}, true) -- Wear out if not minetest.settings:get_bool("creative_mode") then diff --git a/mods/ENTITIES/mobs_mc/villager.lua b/mods/ENTITIES/mobs_mc/villager.lua index 592c8ed6..6432a87a 100644 --- a/mods/ENTITIES/mobs_mc/villager.lua +++ b/mods/ENTITIES/mobs_mc/villager.lua @@ -518,7 +518,7 @@ local function show_trade_formspec(playername, trader, tradenum) .."listring[current_player;main]" .."listring["..tradeinv..";input]" .."listring[current_player;main]" - minetest.sound_play("mobs_mc_villager_trade", {to_player = playername}) + minetest.sound_play("mobs_mc_villager_trade", {to_player = playername}, true) minetest.show_formspec(playername, tradeinv_name, formspec) end @@ -580,13 +580,13 @@ local update_offer = function(inv, player, sound) (trade.locked == false)) then inv:set_stack("output", 1, inv:get_stack("offered", 1)) if sound then - minetest.sound_play("mobs_mc_villager_accept", {to_player = name}) + minetest.sound_play("mobs_mc_villager_accept", {to_player = name}, true) end return true else inv:set_stack("output", 1, ItemStack("")) if sound then - minetest.sound_play("mobs_mc_villager_deny", {to_player = name}) + minetest.sound_play("mobs_mc_villager_deny", {to_player = name}, true) end return false end @@ -775,7 +775,7 @@ local trade_inventory = { if not wanted2:is_empty() then inv:remove_item("input", inv:get_stack("wanted", 2)) end - minetest.sound_play("mobs_mc_villager_accept", {to_player = player:get_player_name()}) + minetest.sound_play("mobs_mc_villager_accept", {to_player = player:get_player_name()}, true) end update_offer(inv, player, true) end, @@ -881,9 +881,9 @@ local trade_inventory = { update_offer(inv, player, false) end if accept then - minetest.sound_play("mobs_mc_villager_accept", {to_player = name}) + minetest.sound_play("mobs_mc_villager_accept", {to_player = name}, true) else - minetest.sound_play("mobs_mc_villager_deny", {to_player = name}) + minetest.sound_play("mobs_mc_villager_deny", {to_player = name}, true) end end, } diff --git a/mods/ENVIRONMENT/lightning/init.lua b/mods/ENVIRONMENT/lightning/init.lua index 6ed0fafc..ae7c7700 100644 --- a/mods/ENVIRONMENT/lightning/init.lua +++ b/mods/ENVIRONMENT/lightning/init.lua @@ -120,7 +120,7 @@ lightning.strike = function(pos) glow = minetest.LIGHT_MAX, }) - minetest.sound_play({ pos = pos, name = "lightning_thunder", gain = 10, max_hear_distance = 500 }) + minetest.sound_play({ pos = pos, name = "lightning_thunder", gain = 10, max_hear_distance = 500 }, true) -- damage nearby objects, transform mobs local objs = minetest.get_objects_inside_radius(pos2, 3.5) diff --git a/mods/ENVIRONMENT/mcl_weather/rain.lua b/mods/ENVIRONMENT/mcl_weather/rain.lua index 6f88220d..cb39daeb 100644 --- a/mods/ENVIRONMENT/mcl_weather/rain.lua +++ b/mods/ENVIRONMENT/mcl_weather/rain.lua @@ -207,7 +207,7 @@ if mcl_weather.allow_abm then if mcl_weather.rain.raining and mcl_weather.rain.extinguish_fire then if mcl_weather.is_outdoor(pos) then minetest.remove_node(pos) - minetest.sound_play("fire_extinguish_flame", {pos = pos, max_hear_distance = 8, gain = 0.1}) + minetest.sound_play("fire_extinguish_flame", {pos = pos, max_hear_distance = 8, gain = 0.1}, true) end end end, diff --git a/mods/HELP/doc/doc/init.lua b/mods/HELP/doc/doc/init.lua index 70834fa8..360cc149 100644 --- a/mods/HELP/doc/doc/init.lua +++ b/mods/HELP/doc/doc/init.lua @@ -191,7 +191,7 @@ function doc.mark_entry_as_revealed(playername, category_id, entry_id) local last_sound = doc.data.players[playername].last_reveal_sound if last_sound == nil or os.difftime(os.time(), last_sound) >= 1 then -- Play notification sound - minetest.sound_play({ name = "doc_reveal", gain = 0.2 }, { to_player = playername }) + minetest.sound_play({ name = "doc_reveal", gain = 0.2 }, { to_player = playername }, true) doc.data.players[playername].last_reveal_sound = os.time() end end @@ -224,7 +224,7 @@ function doc.mark_all_entries_as_revealed(playername) msg = S("All help entries revealed!") -- Play notification sound (ignore sound limit intentionally) - minetest.sound_play({ name = "doc_reveal", gain = 0.2 }, { to_player = playername }) + minetest.sound_play({ name = "doc_reveal", gain = 0.2 }, { to_player = playername }, true) doc.data.players[playername].last_reveal_sound = os.time() else msg = S("All help entries are already revealed.") diff --git a/mods/HUD/awards/api.lua b/mods/HUD/awards/api.lua index c4367ba8..07220417 100644 --- a/mods/HUD/awards/api.lua +++ b/mods/HUD/awards/api.lua @@ -264,7 +264,7 @@ function awards.unlock(name, award) -- Enforce sound delay to prevent sound spamming local lastsound = awards.players[name].lastsound if lastsound == nil or os.difftime(os.time(), lastsound) >= 1 then - minetest.sound_play(sound, {to_player=name}) + minetest.sound_play(sound, {to_player=name}, true) awards.players[name].lastsound = os.time() end end diff --git a/mods/ITEMS/REDSTONE/mesecons_button/init.lua b/mods/ITEMS/REDSTONE/mesecons_button/init.lua index 30339858..e1a5c598 100644 --- a/mods/ITEMS/REDSTONE/mesecons_button/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons_button/init.lua @@ -27,7 +27,7 @@ mesecon.push_button = function(pos, node) local def = minetest.registered_nodes[node.name] minetest.set_node(pos, {name="mesecons_button:button_"..def._mcl_button_basename.."_on", param2=node.param2}) mesecon.receptor_on(pos, button_get_output_rules(node)) - minetest.sound_play("mesecons_button_push", {pos=pos}) + minetest.sound_play("mesecons_button_push", {pos=pos}, true) local timer = minetest.get_node_timer(pos) timer:start(def._mcl_button_timer) end @@ -73,7 +73,7 @@ local on_button_place = function(itemstack, placer, pointed_thing) if success then if idef.sounds and idef.sounds.place then - minetest.sound_play(idef.sounds.place, {pos=above, gain=1}) + minetest.sound_play(idef.sounds.place, {pos=above, gain=1}, true) end end return itemstack @@ -179,7 +179,7 @@ mesecon.register_button = function(basename, description, texture, recipeitem, s -- Normal operation: Un-press the button minetest.set_node(pos, {name="mesecons_button:button_"..basename.."_off",param2=node.param2}) - minetest.sound_play("mesecons_button_pop", {pos=pos}) + minetest.sound_play("mesecons_button_pop", {pos=pos}, true) mesecon.receptor_off(pos, button_get_output_rules(node)) end end, diff --git a/mods/ITEMS/REDSTONE/mesecons_pistons/init.lua b/mods/ITEMS/REDSTONE/mesecons_pistons/init.lua index 38008147..8536cff9 100644 --- a/mods/ITEMS/REDSTONE/mesecons_pistons/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons_pistons/init.lua @@ -64,7 +64,7 @@ local piston_remove_pusher = function (pos, oldnode) pos = pos, max_hear_distance = 31, gain = 0.3, - }) + }, true) end end @@ -85,7 +85,7 @@ local piston_remove_base = function (pos, oldnode) pos = pos, max_hear_distance = 31, gain = 0.3, - }) + }, true) end end @@ -108,7 +108,7 @@ local piston_on = function (pos, node) pos = pos, max_hear_distance = 31, gain = 0.3, - }) + }, true) end end diff --git a/mods/ITEMS/REDSTONE/mesecons_torch/init.lua b/mods/ITEMS/REDSTONE/mesecons_torch/init.lua index 44335613..fda96121 100644 --- a/mods/ITEMS/REDSTONE/mesecons_torch/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons_torch/init.lua @@ -50,7 +50,7 @@ local torch_get_input_rules = function(node) end local torch_overheated = function(pos) - minetest.sound_play("fire_extinguish_flame", {pos = pos, gain = 0.02, max_hear_distance = 6}) + minetest.sound_play("fire_extinguish_flame", {pos = pos, gain = 0.02, max_hear_distance = 6}, true) minetest.add_particle({ pos = {x=pos.x, y=pos.y+0.2, z=pos.z}, velocity = {x = 0, y = 0.6, z = 0}, diff --git a/mods/ITEMS/REDSTONE/mesecons_walllever/init.lua b/mods/ITEMS/REDSTONE/mesecons_walllever/init.lua index 09dd768b..8894f4ad 100644 --- a/mods/ITEMS/REDSTONE/mesecons_walllever/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons_walllever/init.lua @@ -53,7 +53,7 @@ minetest.register_node("mesecons_walllever:wall_lever_off", { on_rightclick = function (pos, node) minetest.swap_node(pos, {name="mesecons_walllever:wall_lever_on", param2=node.param2}) mesecon.receptor_on(pos, lever_get_output_rules(node)) - minetest.sound_play("mesecons_lever", {pos=pos}) + minetest.sound_play("mesecons_lever", {pos=pos}, true) end, node_placement_prediction = "", on_place = function(itemstack, placer, pointed_thing) @@ -116,7 +116,7 @@ minetest.register_node("mesecons_walllever:wall_lever_off", { if success then if idef.sounds and idef.sounds.place then - minetest.sound_play(idef.sounds.place, {pos=above, gain=1}) + minetest.sound_play(idef.sounds.place, {pos=above, gain=1}, true) end end return itemstack @@ -152,7 +152,7 @@ minetest.register_node("mesecons_walllever:wall_lever_on", { on_rightclick = function (pos, node) minetest.swap_node(pos, {name="mesecons_walllever:wall_lever_off", param2=node.param2}) mesecon.receptor_off(pos, lever_get_output_rules(node)) - minetest.sound_play("mesecons_lever", {pos=pos}) + minetest.sound_play("mesecons_lever", {pos=pos}, true) end, sounds = mcl_sounds.node_sound_stone_defaults(), mesecons = {receptor = { diff --git a/mods/ITEMS/mcl_anvils/init.lua b/mods/ITEMS/mcl_anvils/init.lua index f2be3b85..76cd0f3e 100644 --- a/mods/ITEMS/mcl_anvils/init.lua +++ b/mods/ITEMS/mcl_anvils/init.lua @@ -220,17 +220,17 @@ local function damage_anvil(pos) local new if node.name == "mcl_anvils:anvil" then minetest.swap_node(pos, {name="mcl_anvils:anvil_damage_1", param2=node.param2}) - minetest.sound_play(mcl_sounds.node_sound_metal_defaults().dig, {pos=pos, max_hear_distance=16}) + minetest.sound_play(mcl_sounds.node_sound_metal_defaults().dig, {pos=pos, max_hear_distance=16}, true) return false elseif node.name == "mcl_anvils:anvil_damage_1" then minetest.swap_node(pos, {name="mcl_anvils:anvil_damage_2", param2=node.param2}) - minetest.sound_play(mcl_sounds.node_sound_metal_defaults().dig, {pos=pos, max_hear_distance=16}) + minetest.sound_play(mcl_sounds.node_sound_metal_defaults().dig, {pos=pos, max_hear_distance=16}, true) return false elseif node.name == "mcl_anvils:anvil_damage_2" then -- Destroy anvil local meta = minetest.get_meta(pos) drop_anvil_items(pos, meta) - minetest.sound_play(mcl_sounds.node_sound_metal_defaults().dug, {pos=pos, max_hear_distance=16}) + minetest.sound_play(mcl_sounds.node_sound_metal_defaults().dug, {pos=pos, max_hear_distance=16}, true) minetest.remove_node(pos) minetest.check_single_for_falling({x=pos.x, y=pos.y+1, z=pos.z}) return true diff --git a/mods/ITEMS/mcl_armor/armor.lua b/mods/ITEMS/mcl_armor/armor.lua index ebed8208..7edd77c2 100644 --- a/mods/ITEMS/mcl_armor/armor.lua +++ b/mods/ITEMS/mcl_armor/armor.lua @@ -322,7 +322,7 @@ armor.play_equip_sound = function(self, stack, player, pos, unequip) if pos then dist = 16 end - minetest.sound_play(snd, {object=player, pos=pos, gain=0.5, max_hear_distance=dist}) + minetest.sound_play(snd, {object=player, pos=pos, gain=0.5, max_hear_distance=dist}, true) end end diff --git a/mods/ITEMS/mcl_banners/init.lua b/mods/ITEMS/mcl_banners/init.lua index 4b522021..8c8869d6 100644 --- a/mods/ITEMS/mcl_banners/init.lua +++ b/mods/ITEMS/mcl_banners/init.lua @@ -376,7 +376,7 @@ for colorid, colortab in pairs(mcl_banners.colors) do minetest.set_node(pointed_thing.under, {name=new_node}) -- Play sound (from mcl_potions mod) - minetest.sound_play("mcl_potions_bottle_pour", {pos=pointed_thing.under, gain=0.5, max_hear_range=16}) + minetest.sound_play("mcl_potions_bottle_pour", {pos=pointed_thing.under, gain=0.5, max_hear_range=16}, true) return itemstack end @@ -458,7 +458,7 @@ for colorid, colortab in pairs(mcl_banners.colors) do if not minetest.settings:get_bool("creative_mode") then itemstack:take_item() end - minetest.sound_play({name="default_place_node_hard", gain=1.0}, {pos = place_pos}) + minetest.sound_play({name="default_place_node_hard", gain=1.0}, {pos = place_pos}, true) return itemstack end, diff --git a/mods/ITEMS/mcl_bows/arrow.lua b/mods/ITEMS/mcl_bows/arrow.lua index 80c1160b..9ae6e85a 100644 --- a/mods/ITEMS/mcl_bows/arrow.lua +++ b/mods/ITEMS/mcl_bows/arrow.lua @@ -145,7 +145,7 @@ ARROW_ENTITY.on_step = function(self, dtime) pos = pos, max_hear_distance = 16, gain = 1.0, - }) + }, true) end end self.object:remove() @@ -224,7 +224,7 @@ ARROW_ENTITY.on_step = function(self, dtime) if is_player then if self._shooter and self._shooter:is_player() then -- “Ding” sound for hitting another player - minetest.sound_play({name="mcl_bows_hit_player", gain=0.1}, {to_player=self._shooter}) + minetest.sound_play({name="mcl_bows_hit_player", gain=0.1}, {to_player=self._shooter}, true) end end diff --git a/mods/ITEMS/mcl_bows/bow.lua b/mods/ITEMS/mcl_bows/bow.lua index 30292f4f..9b64bd51 100644 --- a/mods/ITEMS/mcl_bows/bow.lua +++ b/mods/ITEMS/mcl_bows/bow.lua @@ -48,7 +48,7 @@ mcl_bows.shoot_arrow = function(arrow_item, pos, dir, yaw, shooter, power, damag le._shooter = shooter le._damage = damage le._startpos = pos - minetest.sound_play("mcl_bows_bow_shoot", {pos=pos}) + minetest.sound_play("mcl_bows_bow_shoot", {pos=pos}, true) if shooter ~= nil and shooter:is_player() then if obj:get_luaentity().player == "" then obj:get_luaentity().player = shooter diff --git a/mods/ITEMS/mcl_buckets/init.lua b/mods/ITEMS/mcl_buckets/init.lua index b6e7ed00..e7da54a0 100644 --- a/mods/ITEMS/mcl_buckets/init.lua +++ b/mods/ITEMS/mcl_buckets/init.lua @@ -28,14 +28,14 @@ mcl_buckets.liquids = {} local sound_place = function(itemname, pos) local def = minetest.registered_nodes[itemname] if def and def.sounds and def.sounds.place then - minetest.sound_play(def.sounds.place, {gain=1.0, pos = pos, pitch = 1 + math.random(-10, 10)*0.005}) + minetest.sound_play(def.sounds.place, {gain=1.0, pos = pos, pitch = 1 + math.random(-10, 10)*0.005}, true) end end local sound_take = function(itemname, pos) local def = minetest.registered_nodes[itemname] if def and def.sounds and def.sounds.dug then - minetest.sound_play(def.sounds.dug, {gain=1.0, pos = pos, pitch = 1 + math.random(-10, 10)*0.005}) + minetest.sound_play(def.sounds.dug, {gain=1.0, pos = pos, pitch = 1 + math.random(-10, 10)*0.005}, true) end end @@ -346,7 +346,7 @@ if mod_mcl_core then else local dim = mcl_worlds.pos_to_dimension(pos) if dim == "nether" then - minetest.sound_play("fire_extinguish_flame", {pos = pos, gain = 0.25, max_hear_distance = 16}) + minetest.sound_play("fire_extinguish_flame", {pos = pos, gain = 0.25, max_hear_distance = 16}, true) return false end end @@ -389,7 +389,7 @@ if mod_mclx_core then -- Evaporate water if used in Nether (except on cauldron) local dim = mcl_worlds.pos_to_dimension(pos) if dim == "nether" then - minetest.sound_play("fire_extinguish_flame", {pos = pos, gain = 0.25, max_hear_distance = 16}) + minetest.sound_play("fire_extinguish_flame", {pos = pos, gain = 0.25, max_hear_distance = 16}, true) return false end end diff --git a/mods/ITEMS/mcl_cocoas/init.lua b/mods/ITEMS/mcl_cocoas/init.lua index 047e1277..7f809fc0 100644 --- a/mods/ITEMS/mcl_cocoas/init.lua +++ b/mods/ITEMS/mcl_cocoas/init.lua @@ -43,7 +43,7 @@ function mcl_cocoas.place(itemstack, placer, pointed_thing, plantname) -- Add the node, set facedir and remove 1 item from the itemstack minetest.set_node(pt.above, {name = plantname, param2 = minetest.dir_to_facedir(clickdir)}) - minetest.sound_play("default_place_node", {pos = pt.above, gain = 1.0}) + minetest.sound_play("default_place_node", {pos = pt.above, gain = 1.0}, true) if not minetest.settings:get_bool("creative_mode") then itemstack:take_item() diff --git a/mods/ITEMS/mcl_core/functions.lua b/mods/ITEMS/mcl_core/functions.lua index 47ac0549..fb15e9c8 100644 --- a/mods/ITEMS/mcl_core/functions.lua +++ b/mods/ITEMS/mcl_core/functions.lua @@ -21,21 +21,21 @@ minetest.register_abm({ -- Lava on top of water: Water turns into stone if water[w].y < pos.y and water[w].x == pos.x and water[w].z == pos.z then minetest.set_node(water[w], {name="mcl_core:stone"}) - minetest.sound_play("fire_extinguish_flame", {pos = water[w], gain = 0.25, max_hear_distance = 16}) + minetest.sound_play("fire_extinguish_flame", {pos = water[w], gain = 0.25, max_hear_distance = 16}, true) -- Flowing lava vs water on same level: Lava turns into cobblestone elseif lavatype == "flowing" and water[w].y == pos.y and (water[w].x == pos.x or water[w].z == pos.z) then minetest.set_node(pos, {name="mcl_core:cobble"}) - minetest.sound_play("fire_extinguish_flame", {pos = pos, gain = 0.25, max_hear_distance = 16}) + minetest.sound_play("fire_extinguish_flame", {pos = pos, gain = 0.25, max_hear_distance = 16}, true) -- Lava source vs flowing water above or horizontally neighbored: Lava turns into obsidian elseif lavatype == "source" and ((water[w].y > pos.y and water[w].x == pos.x and water[w].z == pos.z) or (water[w].y == pos.y and (water[w].x == pos.x or water[w].z == pos.z))) then minetest.set_node(pos, {name="mcl_core:obsidian"}) - minetest.sound_play("fire_extinguish_flame", {pos = pos, gain = 0.25, max_hear_distance = 16}) + minetest.sound_play("fire_extinguish_flame", {pos = pos, gain = 0.25, max_hear_distance = 16}, true) -- Flowing water above flowing lava: Lava turns into cobblestone elseif watertype == "flowing" and lavatype == "flowing" and water[w].y > pos.y and water[w].x == pos.x and water[w].z == pos.z then minetest.set_node(pos, {name="mcl_core:cobble"}) - minetest.sound_play("fire_extinguish_flame", {pos = pos, gain = 0.25, max_hear_distance = 16}) + minetest.sound_play("fire_extinguish_flame", {pos = pos, gain = 0.25, max_hear_distance = 16}, true) end end end, @@ -166,7 +166,7 @@ minetest.register_abm({ action = function(pos, node, active_object_count, active_object_count_wider) liquid_flow_action(pos, "lava", function(pos) minetest.remove_node(pos) - minetest.sound_play("builtin_item_lava", {pos = pos, gain = 0.25, max_hear_distance = 16}) + minetest.sound_play("builtin_item_lava", {pos = pos, gain = 0.25, max_hear_distance = 16}, true) core.check_for_falling(pos) end) end, diff --git a/mods/ITEMS/mcl_core/nodes_base.lua b/mods/ITEMS/mcl_core/nodes_base.lua index df06c44b..6c47dd3f 100644 --- a/mods/ITEMS/mcl_core/nodes_base.lua +++ b/mods/ITEMS/mcl_core/nodes_base.lua @@ -922,7 +922,7 @@ for i=1,8 do fakestack:set_name("mcl_core:snow_"..math.min(8, (i+g))) local success itemstack, success = minetest.item_place(fakestack, placer, pointed_thing) - minetest.sound_play(mcl_sounds.node_sound_snow_defaults().place, {pos = below}) + minetest.sound_play(mcl_sounds.node_sound_snow_defaults().place, {pos = below}, true) itemstack:set_name(itemstring) return itemstack end @@ -932,7 +932,7 @@ for i=1,8 do local bnode = minetest.get_node(below) if minetest.get_item_group(bnode.name, "solid") == 1 then - minetest.sound_play(mcl_sounds.node_sound_snow_defaults().place, {pos = below}) + minetest.sound_play(mcl_sounds.node_sound_snow_defaults().place, {pos = below}, true) return minetest.item_place_node(itemstack, placer, pointed_thing) else return itemstack diff --git a/mods/ITEMS/mcl_core/nodes_climb.lua b/mods/ITEMS/mcl_core/nodes_climb.lua index 9e372d4a..5167d082 100644 --- a/mods/ITEMS/mcl_core/nodes_climb.lua +++ b/mods/ITEMS/mcl_core/nodes_climb.lua @@ -75,7 +75,7 @@ minetest.register_node("mcl_core:ladder", { if success then if idef.sounds and idef.sounds.place then - minetest.sound_play(idef.sounds.place, {pos=above, gain=1}) + minetest.sound_play(idef.sounds.place, {pos=above, gain=1}, true) end end return itemstack @@ -146,7 +146,7 @@ minetest.register_node("mcl_core:vine", { if success then if idef.sounds and idef.sounds.place then - minetest.sound_play(idef.sounds.place, {pos=above, gain=1}) + minetest.sound_play(idef.sounds.place, {pos=above, gain=1}, true) end end return itemstack diff --git a/mods/ITEMS/mcl_doors/api_doors.lua b/mods/ITEMS/mcl_doors/api_doors.lua index 6c78dd00..f3943460 100644 --- a/mods/ITEMS/mcl_doors/api_doors.lua +++ b/mods/ITEMS/mcl_doors/api_doors.lua @@ -155,7 +155,7 @@ function mcl_doors:register_door(name, def) minetest.set_node(pt2, {name=name.."_t_1", param2=p2}) if def.sounds and def.sounds.place then - minetest.sound_play(def.sounds.place, {pos=pt}) + minetest.sound_play(def.sounds.place, {pos=pt}, true) end if def.only_placer_can_open then @@ -225,7 +225,7 @@ function mcl_doors:register_door(name, def) meta1:set_int("is_open", 1) meta2:set_int("is_open", 1) end - minetest.sound_play(door_switching_sound, {pos = pos, gain = 0.5, max_hear_distance = 16}) + minetest.sound_play(door_switching_sound, {pos = pos, gain = 0.5, max_hear_distance = 16}, true) end local function on_mesecons_signal_open(pos, node) diff --git a/mods/ITEMS/mcl_doors/api_trapdoors.lua b/mods/ITEMS/mcl_doors/api_trapdoors.lua index 11948ba8..a7ca6cb1 100644 --- a/mods/ITEMS/mcl_doors/api_trapdoors.lua +++ b/mods/ITEMS/mcl_doors/api_trapdoors.lua @@ -67,11 +67,11 @@ function mcl_doors:register_trapdoor(name, def) local tmp_node -- Close if minetest.get_item_group(me.name, "trapdoor") == 2 then - minetest.sound_play(def.sound_close, {pos = pos, gain = 0.3, max_hear_distance = 16}) + minetest.sound_play(def.sound_close, {pos = pos, gain = 0.3, max_hear_distance = 16}, true) tmp_node = {name=name, param1=me.param1, param2=me.param2} -- Open else - minetest.sound_play(def.sound_open, {pos = pos, gain = 0.3, max_hear_distance = 16}) + minetest.sound_play(def.sound_open, {pos = pos, gain = 0.3, max_hear_distance = 16}, true) tmp_node = {name=name.."_open", param1=me.param1, param2=me.param2} end minetest.set_node(pos, tmp_node) diff --git a/mods/ITEMS/mcl_end/chorus_plant.lua b/mods/ITEMS/mcl_end/chorus_plant.lua index b80babf6..e29a6fec 100644 --- a/mods/ITEMS/mcl_end/chorus_plant.lua +++ b/mods/ITEMS/mcl_end/chorus_plant.lua @@ -191,7 +191,7 @@ minetest.register_node("mcl_end:chorus_flower", { -- Placement OK! Proceed normally local it, suc = minetest.item_place_node(itemstack, placer, pointed_thing) if suc then - minetest.sound_play(mcl_sounds.node_sound_wood_defaults().place, {pos = pos}) + minetest.sound_play(mcl_sounds.node_sound_wood_defaults().place, {pos = pos}, true) end return it else @@ -295,7 +295,7 @@ minetest.register_node("mcl_end:chorus_plant", { -- Placement OK! Proceed normally local it, suc = minetest.item_place_node(itemstack, placer, pointed_thing) if suc then - minetest.sound_play(mcl_sounds.node_sound_wood_defaults().place, {pos = pos_place}) + minetest.sound_play(mcl_sounds.node_sound_wood_defaults().place, {pos = pos_place}, true) end return it else @@ -516,7 +516,7 @@ local random_teleport = function(player) -- JACKPOT! Now we can teleport. local goal = {x=tpos.x, y=tpos.y-1.5, z=tpos.z} player:set_pos(goal) - minetest.sound_play({name="mcl_end_teleport", gain=0.8}, {pos=goal, max_hear_distance=16}) + minetest.sound_play({name="mcl_end_teleport", gain=0.8}, {pos=goal, max_hear_distance=16}, true) return true end end diff --git a/mods/ITEMS/mcl_farming/hoes.lua b/mods/ITEMS/mcl_farming/hoes.lua index 27d0c316..8a6f9527 100644 --- a/mods/ITEMS/mcl_farming/hoes.lua +++ b/mods/ITEMS/mcl_farming/hoes.lua @@ -11,14 +11,14 @@ local function create_soil(pos, inv) if above.name == "air" then node.name = "mcl_farming:soil" minetest.set_node(pos, node) - minetest.sound_play("default_dig_crumbly", { pos = pos, gain = 0.5 }) + minetest.sound_play("default_dig_crumbly", { pos = pos, gain = 0.5 }, true) return true end elseif minetest.get_item_group(name, "cultivatable") == 1 then if above.name == "air" then node.name = "mcl_core:dirt" minetest.set_node(pos, node) - minetest.sound_play("default_dig_crumbly", { pos = pos, gain = 0.6 }) + minetest.sound_play("default_dig_crumbly", { pos = pos, gain = 0.6 }, true) return true end end diff --git a/mods/ITEMS/mcl_farming/shared_functions.lua b/mods/ITEMS/mcl_farming/shared_functions.lua index 9844dd43..0c366af2 100644 --- a/mods/ITEMS/mcl_farming/shared_functions.lua +++ b/mods/ITEMS/mcl_farming/shared_functions.lua @@ -84,7 +84,7 @@ function mcl_farming:place_seed(itemstack, placer, pointed_thing, plantname) local place_s = minetest.get_node(pos) if string.find(farmland.name, "mcl_farming:soil") and string.find(place_s.name, "air") then - minetest.sound_play(minetest.registered_nodes[plantname].sounds.place, {pos = pos}) + minetest.sound_play(minetest.registered_nodes[plantname].sounds.place, {pos = pos}, true) minetest.add_node(pos, {name=plantname, param2 = minetest.registered_nodes[plantname].place_param2}) else return diff --git a/mods/ITEMS/mcl_fences/init.lua b/mods/ITEMS/mcl_fences/init.lua index 89b61c62..5d6654c1 100644 --- a/mods/ITEMS/mcl_fences/init.lua +++ b/mods/ITEMS/mcl_fences/init.lua @@ -102,11 +102,11 @@ mcl_fences.register_fence_gate = function(id, fence_gate_name, texture, groups, local tmp_node2 if state2 == 1 then state2 = 0 - minetest.sound_play(sound_close, {gain = sound_gain_close, max_hear_distance = 10, pos = pos}) + minetest.sound_play(sound_close, {gain = sound_gain_close, max_hear_distance = 10, pos = pos}, true) tmp_node2 = {name=gate_id, param1=node.param1, param2=node.param2} else state2 = 1 - minetest.sound_play(sound_open, {gain = sound_gain_open, max_hear_distance = 10, pos = pos}) + minetest.sound_play(sound_open, {gain = sound_gain_open, max_hear_distance = 10, pos = pos}, true) tmp_node2 = {name=open_gate_id, param1=node.param1, param2=node.param2} end update_gate(pos, tmp_node2) diff --git a/mods/ITEMS/mcl_fire/flint_and_steel.lua b/mods/ITEMS/mcl_fire/flint_and_steel.lua index bb8c6ce7..d8833840 100644 --- a/mods/ITEMS/mcl_fire/flint_and_steel.lua +++ b/mods/ITEMS/mcl_fire/flint_and_steel.lua @@ -28,7 +28,8 @@ minetest.register_tool("mcl_fire:flint_and_steel", { local idef = itemstack:get_definition() minetest.sound_play( "fire_flint_and_steel", - {pos = pointed_thing.above, gain = 0.5, max_hear_distance = 8} + {pos = pointed_thing.above, gain = 0.5, max_hear_distance = 8}, + true ) local used = false if pointed_thing.type == "node" then @@ -44,7 +45,7 @@ minetest.register_tool("mcl_fire:flint_and_steel", { used = true end if itemstack:get_count() == 0 and idef.sound and idef.sound.breaks then - minetest.sound_play(idef.sound.breaks, {pos=user:get_pos(), gain=0.5}) + minetest.sound_play(idef.sound.breaks, {pos=user:get_pos(), gain=0.5}, true) end if not minetest.settings:get_bool("creative_mode") and used == true then itemstack:add_wear(65535/65) -- 65 uses diff --git a/mods/ITEMS/mcl_fire/init.lua b/mods/ITEMS/mcl_fire/init.lua index ff7b7902..f44c669a 100644 --- a/mods/ITEMS/mcl_fire/init.lua +++ b/mods/ITEMS/mcl_fire/init.lua @@ -67,7 +67,7 @@ minetest.register_node("mcl_fire:fire", { floodable = true, on_flood = function(pos, oldnode, newnode) if minetest.get_item_group(newnode.name, "water") ~= 0 then - minetest.sound_play("fire_extinguish_flame", {pos = pos, gain = 0.25, max_hear_distance = 16}) + minetest.sound_play("fire_extinguish_flame", {pos = pos, gain = 0.25, max_hear_distance = 16}, true) end end, on_timer = function(pos) @@ -151,7 +151,7 @@ minetest.register_node("mcl_fire:eternal_fire", { floodable = true, on_flood = function(pos, oldnode, newnode) if minetest.get_item_group(newnode.name, "water") ~= 0 then - minetest.sound_play("fire_extinguish_flame", {pos = pos, gain = 0.25, max_hear_distance = 16}) + minetest.sound_play("fire_extinguish_flame", {pos = pos, gain = 0.25, max_hear_distance = 16}, true) end end, on_timer = function(pos) @@ -310,7 +310,7 @@ minetest.register_abm({ action = function(pos, node, active_object_count, active_object_count_wider) minetest.remove_node(pos) minetest.sound_play("fire_extinguish_flame", - {pos = pos, max_hear_distance = 16, gain = 0.15}) + {pos = pos, max_hear_distance = 16, gain = 0.15}, true) end, }) diff --git a/mods/ITEMS/mcl_fishing/init.lua b/mods/ITEMS/mcl_fishing/init.lua index 192a8f6e..e5c4698c 100644 --- a/mods/ITEMS/mcl_fishing/init.lua +++ b/mods/ITEMS/mcl_fishing/init.lua @@ -105,7 +105,7 @@ local fish = function(itemstack, player) local idef = itemstack:get_definition() itemstack:add_wear(65535/65) -- 65 uses if itemstack:get_count() == 0 and idef.sound and idef.sound.breaks then - minetest.sound_play(idef.sound.breaks, {pos=player:get_pos(), gain=0.5}) + minetest.sound_play(idef.sound.breaks, {pos=player:get_pos(), gain=0.5}, true) end end end @@ -119,7 +119,7 @@ local fish = function(itemstack, player) local idef = itemstack:get_definition() itemstack:add_wear((65535/65)*2) -- if so and not creative then wear double like in MC. if itemstack:get_count() == 0 and idef.sound and idef.sound.breaks then - minetest.sound_play(idef.sound.breaks, {pos=player:get_pos(), gain=0.5}) + minetest.sound_play(idef.sound.breaks, {pos=player:get_pos(), gain=0.5}, true) end end end diff --git a/mods/ITEMS/mcl_flowers/init.lua b/mods/ITEMS/mcl_flowers/init.lua index fb1ae105..2b9aac6b 100644 --- a/mods/ITEMS/mcl_flowers/init.lua +++ b/mods/ITEMS/mcl_flowers/init.lua @@ -265,7 +265,7 @@ local function add_large_plant(name, desc, longdesc, bottom_img, top_img, inv_im param2 = get_palette_color_from_pos(bottom) end -- Success! We can now place the flower - minetest.sound_play(minetest.registered_nodes[itemstring].sounds.place, {pos = bottom, gain=1}) + minetest.sound_play(minetest.registered_nodes[itemstring].sounds.place, {pos = bottom, gain=1}, true) minetest.set_node(bottom, {name=itemstring, param2=param2}) minetest.set_node(top, {name=itemstring.."_top", param2=param2}) if not minetest.settings:get_bool("creative_mode") then @@ -420,7 +420,7 @@ minetest.register_node("mcl_flowers:waterlily", { local idef = itemstack:get_definition() if idef.sounds and idef.sounds.place then - minetest.sound_play(idef.sounds.place, {pos=pointed_thing.above, gain=1}) + minetest.sound_play(idef.sounds.place, {pos=pointed_thing.above, gain=1}, true) end if not minetest.settings:get_bool("creative_mode") then diff --git a/mods/ITEMS/mcl_nether/nether_wart.lua b/mods/ITEMS/mcl_nether/nether_wart.lua index caaf41e5..7744a1fe 100644 --- a/mods/ITEMS/mcl_nether/nether_wart.lua +++ b/mods/ITEMS/mcl_nether/nether_wart.lua @@ -125,7 +125,7 @@ minetest.register_craftitem("mcl_nether:nether_wart_item", { -- Check if node above soil node allows placement if minetest.registered_items[minetest.get_node(placepos).name].buildable_to then -- Place nether wart - minetest.sound_play({name="default_place_node", gain=1.0}, {pos=placepos}) + minetest.sound_play({name="default_place_node", gain=1.0}, {pos=placepos}, true) minetest.set_node(placepos, {name="mcl_nether:nether_wart_0", param2 = 3}) if not minetest.settings:get_bool("creative_mode") then diff --git a/mods/ITEMS/mcl_ocean/corals.lua b/mods/ITEMS/mcl_ocean/corals.lua index a84dd920..2a9015ec 100644 --- a/mods/ITEMS/mcl_ocean/corals.lua +++ b/mods/ITEMS/mcl_ocean/corals.lua @@ -59,7 +59,7 @@ local function coral_on_place(itemstack, placer, pointed_thing) minetest.set_node(pos_under, node_under) local def_node = minetest.registered_nodes[node_under.name] if def_node.sounds then - minetest.sound_play(def_node.sounds.place, { gain = 0.5, pos = pos_under }) + minetest.sound_play(def_node.sounds.place, { gain = 0.5, pos = pos_under }, true) end if not (minetest.settings:get_bool("creative_mode")) then itemstack:take_item() diff --git a/mods/ITEMS/mcl_ocean/kelp.lua b/mods/ITEMS/mcl_ocean/kelp.lua index e329ddcc..a559697f 100644 --- a/mods/ITEMS/mcl_ocean/kelp.lua +++ b/mods/ITEMS/mcl_ocean/kelp.lua @@ -120,7 +120,7 @@ local function kelp_on_place(itemstack, placer, pointed_thing) -- Place or grow kelp local def_node = minetest.registered_items[node_under.name] if def_node.sounds then - minetest.sound_play(def_node.sounds.place, { gain = 0.5, pos = pos_under }) + minetest.sound_play(def_node.sounds.place, { gain = 0.5, pos = pos_under }, true) end minetest.set_node(pos_under, node_under) if not (minetest.settings:get_bool("creative_mode")) then diff --git a/mods/ITEMS/mcl_ocean/seagrass.lua b/mods/ITEMS/mcl_ocean/seagrass.lua index 6c0b5f74..a5765cf9 100644 --- a/mods/ITEMS/mcl_ocean/seagrass.lua +++ b/mods/ITEMS/mcl_ocean/seagrass.lua @@ -67,7 +67,7 @@ local function seagrass_on_place(itemstack, placer, pointed_thing) end local def_node = minetest.registered_items[node_under.name] if def_node.sounds then - minetest.sound_play(def_node.sounds.place, { gain = 0.5, pos = pos_under }) + minetest.sound_play(def_node.sounds.place, { gain = 0.5, pos = pos_under }, true) end minetest.set_node(pos_under, node_under) if not (minetest.settings:get_bool("creative_mode")) then diff --git a/mods/ITEMS/mcl_portals/portal_end.lua b/mods/ITEMS/mcl_portals/portal_end.lua index c16c95eb..c7e8cf8d 100644 --- a/mods/ITEMS/mcl_portals/portal_end.lua +++ b/mods/ITEMS/mcl_portals/portal_end.lua @@ -293,7 +293,7 @@ minetest.register_abm({ obj:set_look_horizontal(math.pi/2) end mcl_worlds.dimension_change(obj, mcl_worlds.pos_to_dimension(target)) - minetest.sound_play("mcl_portals_teleport", {pos=target, gain=0.5, max_hear_distance = 16}) + minetest.sound_play("mcl_portals_teleport", {pos=target, gain=0.5, max_hear_distance = 16}, true) end end end @@ -404,7 +404,7 @@ minetest.override_item("mcl_end:ender_eye", { end minetest.sound_play( "default_place_node_hard", - {pos = pointed_thing.under, gain = 0.5, max_hear_distance = 16}) + {pos = pointed_thing.under, gain = 0.5, max_hear_distance = 16}, true) if not minetest.settings:get_bool("creative_mode") then itemstack:take_item() -- 1 use end diff --git a/mods/ITEMS/mcl_portals/portal_nether.lua b/mods/ITEMS/mcl_portals/portal_nether.lua index ab64ff90..f58058e6 100644 --- a/mods/ITEMS/mcl_portals/portal_nether.lua +++ b/mods/ITEMS/mcl_portals/portal_nether.lua @@ -447,7 +447,7 @@ minetest.register_abm({ obj:set_pos(target) if obj:is_player() then mcl_worlds.dimension_change(obj, mcl_worlds.pos_to_dimension(target)) - minetest.sound_play("mcl_portals_teleport", {pos=target, gain=0.5, max_hear_distance = 16}) + minetest.sound_play("mcl_portals_teleport", {pos=target, gain=0.5, max_hear_distance = 16}, true) end -- Enable teleportation cooloff for some seconds, to prevent back-and-forth teleportation diff --git a/mods/ITEMS/mcl_potions/init.lua b/mods/ITEMS/mcl_potions/init.lua index 73663673..5123d8b7 100644 --- a/mods/ITEMS/mcl_potions/init.lua +++ b/mods/ITEMS/mcl_potions/init.lua @@ -108,7 +108,7 @@ minetest.register_craftitem("mcl_potions:glass_bottle", { itemstack:take_item() end end - minetest.sound_play("mcl_potions_bottle_fill", {pos=pointed_thing.under, gain=0.5, max_hear_range=16}) + minetest.sound_play("mcl_potions_bottle_fill", {pos=pointed_thing.under, gain=0.5, max_hear_range=16}, true) end end return itemstack @@ -188,7 +188,7 @@ minetest.register_craftitem("mcl_potions:potion_water", { end -- Increase water level of cauldron by 1 minetest.set_node(pointed_thing.under, {name=cauldron}) - minetest.sound_play("mcl_potions_bottle_pour", {pos=pointed_thing.under, gain=0.5, max_hear_range=16}) + minetest.sound_play("mcl_potions_bottle_pour", {pos=pointed_thing.under, gain=0.5, max_hear_range=16}, true) if minetest.settings:get_bool("creative_mode") == true then return itemstack else @@ -234,7 +234,7 @@ minetest.register_craftitem("mcl_potions:potion_river_water", { end -- Increase water level of cauldron by 1 minetest.set_node(pointed_thing.under, {name=cauldron}) - minetest.sound_play("mcl_potions_bottle_pour", {pos=pointed_thing.under, gain=0.5, max_hear_range=16}) + minetest.sound_play("mcl_potions_bottle_pour", {pos=pointed_thing.under, gain=0.5, max_hear_range=16}, true) if minetest.settings:get_bool("creative_mode") == true then return itemstack else diff --git a/mods/ITEMS/mcl_signs/init.lua b/mods/ITEMS/mcl_signs/init.lua index 3127b532..442458a9 100644 --- a/mods/ITEMS/mcl_signs/init.lua +++ b/mods/ITEMS/mcl_signs/init.lua @@ -391,7 +391,7 @@ minetest.register_node("mcl_signs:wall_sign", { text_entity:set_yaw(sign_info.yaw) text_entity:get_luaentity()._signnodename = nodeitem:get_name() - minetest.sound_play({name="default_place_node_hard", gain=1.0}, {pos = place_pos}) + minetest.sound_play({name="default_place_node_hard", gain=1.0}, {pos = place_pos}, true) show_formspec(placer, place_pos) return itemstack diff --git a/mods/ITEMS/mcl_throwing/init.lua b/mods/ITEMS/mcl_throwing/init.lua index 9dcbb2f2..fb5fcacc 100644 --- a/mods/ITEMS/mcl_throwing/init.lua +++ b/mods/ITEMS/mcl_throwing/init.lua @@ -182,14 +182,14 @@ local snowball_on_step = function(self, dtime) -- Destroy when hitting a solid node if self._lastpos.x~=nil then if (def and def.walkable) or not def then - minetest.sound_play("mcl_throwing_snowball_impact_hard", { pos = self.object:get_pos(), max_hear_distance=16, gain=0.7 }) + minetest.sound_play("mcl_throwing_snowball_impact_hard", { pos = self.object:get_pos(), max_hear_distance=16, gain=0.7 }, true) self.object:remove() return end end if check_object_hit(self, pos, {snowball_vulnerable = 3}) then - minetest.sound_play("mcl_throwing_snowball_impact_soft", { pos = self.object:get_pos(), max_hear_distance=16, gain=0.7 }) + minetest.sound_play("mcl_throwing_snowball_impact_soft", { pos = self.object:get_pos(), max_hear_distance=16, gain=0.7 }, true) return end @@ -243,7 +243,7 @@ local egg_on_step = function(self, dtime) end end end - minetest.sound_play("mcl_throwing_egg_impact", { pos = self.object:get_pos(), max_hear_distance=10, gain=0.5 }) + minetest.sound_play("mcl_throwing_egg_impact", { pos = self.object:get_pos(), max_hear_distance=10, gain=0.5 }, true) self.object:remove() return end @@ -251,7 +251,7 @@ local egg_on_step = function(self, dtime) -- Destroy when hitting a mob or player (no chick spawning) if check_object_hit(self, pos) then - minetest.sound_play("mcl_throwing_egg_impact", { pos = self.object:get_pos(), max_hear_distance=10, gain=0.5 }) + minetest.sound_play("mcl_throwing_egg_impact", { pos = self.object:get_pos(), max_hear_distance=10, gain=0.5 }, true) return end diff --git a/mods/ITEMS/mcl_tnt/init.lua b/mods/ITEMS/mcl_tnt/init.lua index 42fbb7b5..dafb5a84 100644 --- a/mods/ITEMS/mcl_tnt/init.lua +++ b/mods/ITEMS/mcl_tnt/init.lua @@ -4,7 +4,7 @@ local tnt_griefing = minetest.settings:get_bool("mcl_tnt_griefing", true) local mod_death_messages = minetest.get_modpath("mcl_death_messages") local function spawn_tnt(pos, entname) - minetest.sound_play("tnt_ignite", {pos = pos,gain = 1.0,max_hear_distance = 15,}) + minetest.sound_play("tnt_ignite", {pos = pos,gain = 1.0,max_hear_distance = 15,}, true) local tnt = minetest.add_entity(pos, entname) tnt:set_armor_groups({immortal=1}) return tnt @@ -228,7 +228,7 @@ tnt.boom = function(pos, info) if info.is_tnt == nil then info.is_tnt = true end - minetest.sound_play(sound, {pos = pos,gain = 1.0,max_hear_distance = 16,}) + minetest.sound_play(sound, {pos = pos,gain = 1.0,max_hear_distance = 16,}, true) local node = minetest.get_node(pos) if minetest.get_item_group("water") == 1 or minetest.get_item_group("lava") == 1 then -- Cancel the Explosion diff --git a/mods/ITEMS/mcl_tools/init.lua b/mods/ITEMS/mcl_tools/init.lua index 31d091c6..8f476d72 100644 --- a/mods/ITEMS/mcl_tools/init.lua +++ b/mods/ITEMS/mcl_tools/init.lua @@ -217,7 +217,7 @@ local make_grass_path = function(itemstack, placer, pointed_thing) local wear = math.ceil(65535 / uses) itemstack:add_wear(wear) end - minetest.sound_play({name="default_grass_footstep", gain=1}, {pos = above}) + minetest.sound_play({name="default_grass_footstep", gain=1}, {pos = above}, true) minetest.swap_node(pointed_thing.under, {name="mcl_core:grass_path"}) end end @@ -251,7 +251,7 @@ if minetest.get_modpath("mcl_farming") then local wear = math.ceil(65535 / uses) itemstack:add_wear(wear) end - minetest.sound_play({name="default_grass_footstep", gain=1}, {pos = above}) + minetest.sound_play({name="default_grass_footstep", gain=1}, {pos = above}, true) local dir = vector.subtract(pointed_thing.under, pointed_thing.above) local param2 = minetest.dir_to_facedir(dir) minetest.swap_node(pointed_thing.under, {name="mcl_farming:pumpkin_face", param2 = param2}) diff --git a/mods/ITEMS/mcl_torches/init.lua b/mods/ITEMS/mcl_torches/init.lua index ea7c1a2a..86cb917b 100644 --- a/mods/ITEMS/mcl_torches/init.lua +++ b/mods/ITEMS/mcl_torches/init.lua @@ -127,7 +127,7 @@ mcl_torches.register_torch = function(substring, description, doc_items_longdesc itemstack:set_name(itemstring) if success and idef.sounds and idef.sounds.place then - minetest.sound_play(idef.sounds.place, {pos=under, gain=1}) + minetest.sound_play(idef.sounds.place, {pos=under, gain=1}, true) end return itemstack end, diff --git a/mods/PLAYER/mcl_hunger/hunger.lua b/mods/PLAYER/mcl_hunger/hunger.lua index eacec1bc..a664b6ad 100644 --- a/mods/PLAYER/mcl_hunger/hunger.lua +++ b/mods/PLAYER/mcl_hunger/hunger.lua @@ -149,7 +149,7 @@ function mcl_hunger.item_eat(hunger_change, replace_with_item, poisontime, poiso gain = 1.0, pitch = 1 + math.random(-10, 10)*0.005, object = user, - }) + }, true) else -- Assume the item is a food -- Add eat particle effect and sound @@ -188,7 +188,7 @@ function mcl_hunger.item_eat(hunger_change, replace_with_item, poisontime, poiso gain = 1.0, pitch = 1 + math.random(-10, 10)*0.005, object = user, - }) + }, true) end if mcl_hunger.active and hunger_change then From c9cc3651df1f7ab196e9a7a61815510b319e5eac Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 7 Apr 2020 01:34:11 +0200 Subject: [PATCH 618/737] Fix bad sky color definitions --- mods/ENVIRONMENT/mcl_weather/skycolor.lua | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/mods/ENVIRONMENT/mcl_weather/skycolor.lua b/mods/ENVIRONMENT/mcl_weather/skycolor.lua index 1d3fe108..d32c0280 100644 --- a/mods/ENVIRONMENT/mcl_weather/skycolor.lua +++ b/mods/ENVIRONMENT/mcl_weather/skycolor.lua @@ -61,11 +61,11 @@ mcl_weather.skycolor = { -- Clear weather player:set_sky({ type = "regular", - sky_colors = { + sky_color = { day_sky = "#92B9FF", day_horizon = "#B4D0FF", dawn_sky = "#B4BAFA", - dawn_horizon = "BAC1F0", + dawn_horizon = "#BAC1F0", night_sky = "#006AFF", night_horizon = "#4090FF", }, @@ -131,16 +131,8 @@ mcl_weather.skycolor = { player:set_stars({visible = false}) player:override_day_night_ratio(nil) elseif dim == "void" then - player:set_sky({ type = "regular", - sky_color = { - day_sky = "#000000", - day_horizon = "#000000", - dawn_sky = "#000000", - dawn_horizon = "#000000", - night_sky = "#000000", - night_horizon = "#000000", - indoors = "#000000", - }, + player:set_sky({ type = "plain", + base_color = "#000000", clouds = false, }) player:set_sun({visible = false, sunrise_visible = false}) From 17f611567c13bd20f54d830a93347fbc6b1e8feb Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 7 Apr 2020 02:40:48 +0200 Subject: [PATCH 619/737] Spawn rain and snow particles higher --- mods/ENVIRONMENT/mcl_weather/rain.lua | 2 +- mods/ENVIRONMENT/mcl_weather/snow.lua | 2 +- mods/ENVIRONMENT/mcl_weather/weather_core.lua | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/mods/ENVIRONMENT/mcl_weather/rain.lua b/mods/ENVIRONMENT/mcl_weather/rain.lua index cb39daeb..ccb8cd5b 100644 --- a/mods/ENVIRONMENT/mcl_weather/rain.lua +++ b/mods/ENVIRONMENT/mcl_weather/rain.lua @@ -55,7 +55,7 @@ mcl_weather.rain.add_rain_particles = function(player) pos = {x=random_pos_x, y=random_pos_y, z=random_pos_z}, velocity = {x=0, y=-10, z=0}, acceleration = {x=0, y=-30, z=0}, - expirationtime = 0.2, + expirationtime = 1.0, size = math.random(0.5, 3), collisiondetection = true, collision_removal = true, diff --git a/mods/ENVIRONMENT/mcl_weather/snow.lua b/mods/ENVIRONMENT/mcl_weather/snow.lua index c1812a1b..96352835 100644 --- a/mods/ENVIRONMENT/mcl_weather/snow.lua +++ b/mods/ENVIRONMENT/mcl_weather/snow.lua @@ -15,7 +15,7 @@ mcl_weather.snow.add_snow_particles = function(player) pos = {x=random_pos_x, y=random_pos_y, z=random_pos_z}, velocity = {x = math.random(-1,-0.5), y = math.random(-2,-1), z = math.random(-1,-0.5)}, acceleration = {x = math.random(-1,-0.5), y=-0.5, z = math.random(-1,-0.5)}, - expirationtime = 2.0, + expirationtime = 3.0, size = math.random(0.5, 2), collisiondetection = true, collision_removal = true, diff --git a/mods/ENVIRONMENT/mcl_weather/weather_core.lua b/mods/ENVIRONMENT/mcl_weather/weather_core.lua index 29da968f..fb90aa74 100644 --- a/mods/ENVIRONMENT/mcl_weather/weather_core.lua +++ b/mods/ENVIRONMENT/mcl_weather/weather_core.lua @@ -117,7 +117,7 @@ mcl_weather.get_random_pos_by_player_look_dir = function(player) end end - random_pos_y = math.random() + math.random(player_pos.y + 1, player_pos.y + 3) + random_pos_y = math.random() + math.random(player_pos.y + 10, player_pos.y + 15) return random_pos_x, random_pos_y, random_pos_z end From f27615d77ecaf3aa0fbfa9560b528ea775080ed9 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 7 Apr 2020 13:03:10 +0200 Subject: [PATCH 620/737] Add z_index to HUD elements --- mods/ENTITIES/mobs_mc/1_items_default.lua | 1 + mods/HUD/awards/api.lua | 10 +++++++--- mods/HUD/hudbars/init.lua | 5 +++++ mods/HUD/show_wielded_item/init.lua | 1 + mods/ITEMS/mcl_jukebox/init.lua | 1 + 5 files changed, 15 insertions(+), 3 deletions(-) diff --git a/mods/ENTITIES/mobs_mc/1_items_default.lua b/mods/ENTITIES/mobs_mc/1_items_default.lua index 09299364..e370934c 100644 --- a/mods/ENTITIES/mobs_mc/1_items_default.lua +++ b/mods/ENTITIES/mobs_mc/1_items_default.lua @@ -578,6 +578,7 @@ if c("totem") then position = { x=0.5, y=1 }, scale = { x=17, y=17 }, offset = { x=0, y=-178 }, + z_index = 10, }) minetest.after(3, function(name) local player = minetest.get_player_by_name(name) diff --git a/mods/HUD/awards/api.lua b/mods/HUD/awards/api.lua index 07220417..f86cf0f2 100644 --- a/mods/HUD/awards/api.lua +++ b/mods/HUD/awards/api.lua @@ -297,7 +297,8 @@ function awards.unlock(name, award) text = background, position = {x = 0.5, y = 0}, offset = {x = 0, y = 138}, - alignment = {x = 0, y = -1} + alignment = {x = 0, y = -1}, + z_index = 11, }) local hud_announce if awdef.secret == true then @@ -313,7 +314,8 @@ function awards.unlock(name, award) text = hud_announce, position = {x = 0.5, y = 0}, offset = {x = 0, y = 40}, - alignment = {x = 0, y = -1} + alignment = {x = 0, y = -1}, + z_index = 12, }) local three = player:hud_add({ hud_elem_type = "text", @@ -323,7 +325,8 @@ function awards.unlock(name, award) text = title, position = {x = 0.5, y = 0}, offset = {x = 30, y = 100}, - alignment = {x = 0, y = -1} + alignment = {x = 0, y = -1}, + z_index = 12, }) --[[ We use a statbar instead of image here because statbar allows us to scale the image properly. Note that number is 2, thus leading to a single full image. @@ -339,6 +342,7 @@ function awards.unlock(name, award) offset = {x = -110, y = 62}, alignment = {x = 0, y = 0}, direction = 0, + z_index = 12, }) minetest.after(3, function(name) local player = minetest.get_player_by_name(name) diff --git a/mods/HUD/hudbars/init.lua b/mods/HUD/hudbars/init.lua index 0f919602..9c7708bd 100644 --- a/mods/HUD/hudbars/init.lua +++ b/mods/HUD/hudbars/init.lua @@ -200,6 +200,7 @@ function hb.register_hudbar(identifier, text_color, label, textures, default_sta text = "hudbars_bar_background.png", alignment = {x=1,y=1}, offset = { x = offset.x - 1, y = offset.y - 1 }, + z_index = 0, }) if textures.icon ~= nil then ids.icon = player:hud_add({ @@ -209,6 +210,7 @@ function hb.register_hudbar(identifier, text_color, label, textures, default_sta text = textures.icon, alignment = {x=-1,y=1}, offset = { x = offset.x - 3, y = offset.y }, + z_index = 1, }) end elseif hb.settings.bar_type == "statbar_modern" then @@ -222,6 +224,7 @@ function hb.register_hudbar(identifier, text_color, label, textures, default_sta offset = { x = offset.x, y = offset.y }, direction = 0, size = {x=24, y=24}, + z_index = 0, }) end end @@ -248,6 +251,7 @@ function hb.register_hudbar(identifier, text_color, label, textures, default_sta offset = offset, direction = 0, size = bar_size, + z_index = 1, }) if hb.settings.bar_type == "progress_bar" then ids.text = player:hud_add({ @@ -258,6 +262,7 @@ function hb.register_hudbar(identifier, text_color, label, textures, default_sta number = text_color, direction = 0, offset = { x = offset.x + 2, y = offset.y - 1}, + z_index = 2, }) end -- Do not forget to update hb.get_hudbar_state if you add new fields to the state table diff --git a/mods/HUD/show_wielded_item/init.lua b/mods/HUD/show_wielded_item/init.lua index addd92e0..04cef845 100644 --- a/mods/HUD/show_wielded_item/init.lua +++ b/mods/HUD/show_wielded_item/init.lua @@ -42,6 +42,7 @@ local function set_hud(player) alignment = {x=0, y=0}, number = 0xFFFFFF , text = "", + z_index = 10, }) end diff --git a/mods/ITEMS/mcl_jukebox/init.lua b/mods/ITEMS/mcl_jukebox/init.lua index 1329864f..0328c707 100644 --- a/mods/ITEMS/mcl_jukebox/init.lua +++ b/mods/ITEMS/mcl_jukebox/init.lua @@ -70,6 +70,7 @@ local function now_playing(player, track_id) size = { x=100, y=100}, number = 0x55FFFF, text = text, + z_index = 10, }) active_huds[playername] = id end From 31b367eb838569918649312bbf36e900c24061ed Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Wed, 8 Apr 2020 02:29:12 +0200 Subject: [PATCH 621/737] Fix horse-related crash --- mods/ENTITIES/mobs_mc/horse.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ENTITIES/mobs_mc/horse.lua b/mods/ENTITIES/mobs_mc/horse.lua index 46fd1419..0bc524d2 100644 --- a/mods/ENTITIES/mobs_mc/horse.lua +++ b/mods/ENTITIES/mobs_mc/horse.lua @@ -255,8 +255,8 @@ local horse = { -- Put on armor and take armor from player's inventory local armor = minetest.get_item_group(iname, "horse_armor") self._horse_armor = iname + local w = clicker:get_wielded_item() if not minetest.settings:get_bool("creative_mode") then - local w = clicker:get_wielded_item() w:take_item() clicker:set_wielded_item(w) end From 21d5b93baa390e8f0faf1d8c222384b940e39532 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Wed, 8 Apr 2020 02:31:24 +0200 Subject: [PATCH 622/737] Remove explicit stepheight from most mobs --- mods/ENTITIES/mcl_mobs/api.txt | 2 +- mods/ENTITIES/mobs_mc/agent.lua | 1 - mods/ENTITIES/mobs_mc/ender_dragon.lua | 1 - mods/ENTITIES/mobs_mc/enderman.lua | 1 - mods/ENTITIES/mobs_mc/guardian.lua | 1 - mods/ENTITIES/mobs_mc/guardian_elder.lua | 1 - mods/ENTITIES/mobs_mc/polar_bear.lua | 1 - mods/ENTITIES/mobs_mc/squid.lua | 1 - mods/ENTITIES/mobs_mc/wither.lua | 1 - mods/ENTITIES/mobs_mc/wolf.lua | 1 - 10 files changed, 1 insertion(+), 10 deletions(-) diff --git a/mods/ENTITIES/mcl_mobs/api.txt b/mods/ENTITIES/mcl_mobs/api.txt index 3a61c1c8..0b354224 100644 --- a/mods/ENTITIES/mcl_mobs/api.txt +++ b/mods/ENTITIES/mcl_mobs/api.txt @@ -50,7 +50,7 @@ functions needed for the mob to work properly which contains the following: 'jump' when true allows your mob to jump updwards. 'jump_height' holds the height your mob can jump, 0 to disable jumping. 'stepheight' height of a block that your mob can easily walk up onto, - defaults to 1.1. + defaults to 0.6. 'fly' when true allows your mob to fly around instead of walking. 'fly_in' holds the node name or a table of node names in which the mob flies (or swims) around in. The special name diff --git a/mods/ENTITIES/mobs_mc/agent.lua b/mods/ENTITIES/mobs_mc/agent.lua index 0a5f0354..172698eb 100644 --- a/mods/ENTITIES/mobs_mc/agent.lua +++ b/mods/ENTITIES/mobs_mc/agent.lua @@ -7,7 +7,6 @@ local S = minetest.get_translator("mobs_mc") mobs:register_mob("mobs_mc:agent", { type = "npc", passive = true, - stepheight = 1.2, hp_min = 20, hp_max = 20, armor = 100, diff --git a/mods/ENTITIES/mobs_mc/ender_dragon.lua b/mods/ENTITIES/mobs_mc/ender_dragon.lua index 87d7e8ab..de4a2a59 100644 --- a/mods/ENTITIES/mobs_mc/ender_dragon.lua +++ b/mods/ENTITIES/mobs_mc/ender_dragon.lua @@ -32,7 +32,6 @@ mobs:register_mob("mobs_mc:enderdragon", { damage = 10, jump = true, jump_height = 14, - stepheight = 1.2, fly = true, dogshoot_switch = 1, dogshoot_count_max =5, diff --git a/mods/ENTITIES/mobs_mc/enderman.lua b/mods/ENTITIES/mobs_mc/enderman.lua index 4cb0bb89..467fb290 100644 --- a/mods/ENTITIES/mobs_mc/enderman.lua +++ b/mods/ENTITIES/mobs_mc/enderman.lua @@ -170,7 +170,6 @@ mobs:register_mob("mobs_mc:enderman", { type = "monster", passive = false, pathfinding = 1, - stepheight = 1.2, hp_min = 40, hp_max = 40, collisionbox = {-0.3, -0.01, -0.3, 0.3, 2.89, 0.3}, diff --git a/mods/ENTITIES/mobs_mc/guardian.lua b/mods/ENTITIES/mobs_mc/guardian.lua index 5a78220e..7db14198 100644 --- a/mods/ENTITIES/mobs_mc/guardian.lua +++ b/mods/ENTITIES/mobs_mc/guardian.lua @@ -76,7 +76,6 @@ mobs:register_mob("mobs_mc:guardian", { }, fly = true, fly_in = { mobs_mc.items.water_source, mobs_mc.items.river_water_source }, - stepheight = 0.1, jump = false, view_range = 16, }) diff --git a/mods/ENTITIES/mobs_mc/guardian_elder.lua b/mods/ENTITIES/mobs_mc/guardian_elder.lua index b8448fb9..7d955e39 100644 --- a/mods/ENTITIES/mobs_mc/guardian_elder.lua +++ b/mods/ENTITIES/mobs_mc/guardian_elder.lua @@ -83,7 +83,6 @@ mobs:register_mob("mobs_mc:guardian_elder", { }, fly = true, fly_in = { mobs_mc.items.water_source, mobs_mc.items.river_water_source }, - stepheight = 0.1, jump = false, view_range = 16, }) diff --git a/mods/ENTITIES/mobs_mc/polar_bear.lua b/mods/ENTITIES/mobs_mc/polar_bear.lua index 09ca4d8f..c6f0d584 100644 --- a/mods/ENTITIES/mobs_mc/polar_bear.lua +++ b/mods/ENTITIES/mobs_mc/polar_bear.lua @@ -11,7 +11,6 @@ mobs:register_mob("mobs_mc:polar_bear", { type = "animal", runaway = false, passive = false, - stepheight = 1.2, hp_min = 30, hp_max = 30, breath_max = -1, diff --git a/mods/ENTITIES/mobs_mc/squid.lua b/mods/ENTITIES/mobs_mc/squid.lua index 6ad1b413..ddbabe0a 100644 --- a/mods/ENTITIES/mobs_mc/squid.lua +++ b/mods/ENTITIES/mobs_mc/squid.lua @@ -42,7 +42,6 @@ mobs:register_mob("mobs_mc:squid", { }, visual_size = {x=3, y=3}, makes_footstep_sound = false, - stepheight = 0.1, fly = true, fly_in = { mobs_mc.items.water_source, mobs_mc.items.river_water_source }, breathes_in_water = true, diff --git a/mods/ENTITIES/mobs_mc/wither.lua b/mods/ENTITIES/mobs_mc/wither.lua index 05997cf7..19d2386b 100644 --- a/mods/ENTITIES/mobs_mc/wither.lua +++ b/mods/ENTITIES/mobs_mc/wither.lua @@ -27,7 +27,6 @@ mobs:register_mob("mobs_mc:wither", { fear_height = 4, walk_velocity = 2, run_velocity = 4, - stepheight = 1.2, sounds = { shoot_attack = "mobs_mc_ender_dragon_shoot", attack = "mobs_mc_ender_dragon_attack", diff --git a/mods/ENTITIES/mobs_mc/wolf.lua b/mods/ENTITIES/mobs_mc/wolf.lua index 820eaca3..9e282057 100644 --- a/mods/ENTITIES/mobs_mc/wolf.lua +++ b/mods/ENTITIES/mobs_mc/wolf.lua @@ -40,7 +40,6 @@ local wolf = { walk_chance = default_walk_chance, walk_velocity = 2, run_velocity = 3, - stepheight = 1.1, damage = 4, reach = 2, attack_type = "dogfight", From a1ea41e760c46dddd80010172c5e287e55668b1f Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Wed, 8 Apr 2020 03:17:34 +0200 Subject: [PATCH 623/737] Lava: Don't ignite 2 blocks above if 1 layer above is blocked --- mods/ITEMS/mcl_fire/init.lua | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_fire/init.lua b/mods/ITEMS/mcl_fire/init.lua index f44c669a..48122546 100644 --- a/mods/ITEMS/mcl_fire/init.lua +++ b/mods/ITEMS/mcl_fire/init.lua @@ -359,10 +359,12 @@ else -- Fire enabled return false end local airs1 = minetest.find_nodes_in_area({x=pos.x-1, y=pos.y+1, z=pos.z-1}, {x=pos.x+1, y=pos.y+1, z=pos.z+1}, {"air"}) - local ok = try_ignite(airs1) - if not ok then + local h = math.random(1, 2) + if h == 2 and #airs1 > 0 then local airs2 = minetest.find_nodes_in_area({x=pos.x-2, y=pos.y+2, z=pos.z-2}, {x=pos.x+2, y=pos.y+2, z=pos.z+2}, {"air"}) try_ignite(airs2) + else + try_ignite(airs1) end end, }) From 71c9d20fff3b19a8738765bdf7d6642fb8ee4cd1 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Wed, 8 Apr 2020 04:07:16 +0200 Subject: [PATCH 624/737] Use larger wield scale for tools --- mods/ENTITIES/mcl_item_entity/init.lua | 20 ++++++++++---------- mods/ITEMS/mcl_bows/bow.lua | 2 ++ mods/ITEMS/mcl_farming/hoes.lua | 5 +++++ mods/ITEMS/mcl_fishing/init.lua | 2 ++ mods/ITEMS/mcl_tools/init.lua | 22 ++++++++++++++++++++++ 5 files changed, 41 insertions(+), 10 deletions(-) diff --git a/mods/ENTITIES/mcl_item_entity/init.lua b/mods/ENTITIES/mcl_item_entity/init.lua index 689dfd38..7e2d0858 100644 --- a/mods/ENTITIES/mcl_item_entity/init.lua +++ b/mods/ENTITIES/mcl_item_entity/init.lua @@ -350,8 +350,6 @@ minetest.register_entity(":__builtin:item", { count = max_count self.itemstring = stack:get_name().." "..max_count end - local s = 0.2 + 0.1 * (count / max_count) - local c = s local itemtable = stack:to_table() local itemname = nil local description = "" @@ -360,16 +358,18 @@ minetest.register_entity(":__builtin:item", { end local item_texture = nil local item_type = "" - if minetest.registered_items[itemname] then - item_texture = minetest.registered_items[itemname].inventory_image - item_type = minetest.registered_items[itemname].type - description = minetest.registered_items[itemname].description - end - local ndef = minetest.registered_items[itemname] local glow - if ndef then - glow = ndef.light_source + local def = minetest.registered_items[itemname] + if def then + item_texture = def.inventory_image + item_type = def.type + description = def.description + glow = def.light_source end + local s = 0.2 + 0.1 * (count / max_count) + local wield_scale = (def and def.wield_scale and def.wield_scale.x) or 1 + local c = s + s = s / wield_scale local prop = { is_visible = true, visual = "wielditem", diff --git a/mods/ITEMS/mcl_bows/bow.lua b/mods/ITEMS/mcl_bows/bow.lua index 9b64bd51..3bae7687 100644 --- a/mods/ITEMS/mcl_bows/bow.lua +++ b/mods/ITEMS/mcl_bows/bow.lua @@ -104,6 +104,7 @@ S("The speed and damage of the arrow increases the longer you charge. The regula _doc_items_usagehelp = S("To use the bow, you first need to have at least one arrow anywhere in your inventory (unless in Creative Mode). Hold down the right mouse button to charge, release to shoot."), _doc_items_durability = BOW_DURABILITY, inventory_image = "mcl_bows_bow.png", + wield_scale = { x = 1.8, y = 1.8, z = 1 }, stack_max = 1, -- Trick to disable melee damage to entities. -- Range not set to 0 (unlike the others) so it can be placed into item frames @@ -144,6 +145,7 @@ for level=0, 2 do description = S("Bow"), _doc_items_create_entry = false, inventory_image = "mcl_bows_bow_"..level..".png", + wield_scale = { x = 1.8, y = 1.8, z = 1 }, stack_max = 1, range = 0, -- Pointing range to 0 to prevent punching with bow :D groups = {not_in_creative_inventory=1, not_in_craft_guide=1}, diff --git a/mods/ITEMS/mcl_farming/hoes.lua b/mods/ITEMS/mcl_farming/hoes.lua index 8a6f9527..f296bd83 100644 --- a/mods/ITEMS/mcl_farming/hoes.lua +++ b/mods/ITEMS/mcl_farming/hoes.lua @@ -68,6 +68,7 @@ minetest.register_tool("mcl_farming:hoe_wood", { _doc_items_usagehelp = hoe_usagehelp, _doc_items_hidden = false, inventory_image = "farming_tool_woodhoe.png", + wield_scale = { x = 1.8, y = 1.8, z = 1 }, on_place = hoe_on_place_function(uses.wood), groups = { tool=1, hoe=1 }, tool_capabilities = { @@ -106,6 +107,7 @@ minetest.register_tool("mcl_farming:hoe_stone", { _doc_items_longdesc = hoe_longdesc, _doc_items_usagehelp = hoe_usagehelp, inventory_image = "farming_tool_stonehoe.png", + wield_scale = { x = 1.8, y = 1.8, z = 1 }, on_place = hoe_on_place_function(uses.stone), groups = { tool=1, hoe=1 }, tool_capabilities = { @@ -139,6 +141,7 @@ minetest.register_tool("mcl_farming:hoe_iron", { _doc_items_longdesc = hoe_longdesc, _doc_items_usagehelp = hoe_usagehelp, inventory_image = "farming_tool_steelhoe.png", + wield_scale = { x = 1.8, y = 1.8, z = 1 }, on_place = hoe_on_place_function(uses.iron), groups = { tool=1, hoe=1 }, tool_capabilities = { @@ -180,6 +183,7 @@ minetest.register_tool("mcl_farming:hoe_gold", { _doc_items_longdesc = hoe_longdesc, _doc_items_usagehelp = hoe_usagehelp, inventory_image = "farming_tool_goldhoe.png", + wield_scale = { x = 1.8, y = 1.8, z = 1 }, on_place = hoe_on_place_function(uses.gold), groups = { tool=1, hoe=1 }, tool_capabilities = { @@ -222,6 +226,7 @@ minetest.register_tool("mcl_farming:hoe_diamond", { _doc_items_longdesc = hoe_longdesc, _doc_items_usagehelp = hoe_usagehelp, inventory_image = "farming_tool_diamondhoe.png", + wield_scale = { x = 1.8, y = 1.8, z = 1 }, on_place = hoe_on_place_function(uses.diamond), groups = { tool=1, hoe=1 }, tool_capabilities = { diff --git a/mods/ITEMS/mcl_fishing/init.lua b/mods/ITEMS/mcl_fishing/init.lua index e5c4698c..53eefdad 100644 --- a/mods/ITEMS/mcl_fishing/init.lua +++ b/mods/ITEMS/mcl_fishing/init.lua @@ -313,6 +313,8 @@ minetest.register_tool("mcl_fishing:fishing_rod", { _doc_items_usagehelp = S("Rightclick to launch the bobber. When it sinks right-click again to reel in an item. Who knows what you're going to catch?"), groups = { tool=1 }, inventory_image = "mcl_fishing_fishing_rod.png", + wield_image = "mcl_fishing_fishing_rod.png^[transformR270", + wield_scale = { x = 1.5, y = 1.5, z = 1 }, stack_max = 1, on_place = fish, on_secondary_use = fish, diff --git a/mods/ITEMS/mcl_tools/init.lua b/mods/ITEMS/mcl_tools/init.lua index 8f476d72..7cd6f9b9 100644 --- a/mods/ITEMS/mcl_tools/init.lua +++ b/mods/ITEMS/mcl_tools/init.lua @@ -72,12 +72,15 @@ local shovel_use = S("To turn a grass block into a grass path, hold the shovel i local shears_longdesc = S("Shears are tools to shear sheep and to mine a few block types. Shears are a special mining tool and can be used to obtain the original item from grass, leaves and similar blocks that require cutting.") local shears_use = S("To shear sheep or carve faceless pumpkins, use the “place” key on them. Faces can only be carved at the side of faceless pumpkins. Mining works as usual, but the drops are different for a few blocks.") +local wield_scale = { x = 1.8, y = 1.8, z = 1 } + -- Picks minetest.register_tool("mcl_tools:pick_wood", { description = S("Wooden Pickaxe"), _doc_items_longdesc = pickaxe_longdesc, _doc_items_hidden = false, inventory_image = "default_tool_woodpick.png", + wield_scale = wield_scale, groups = { tool=1, pickaxe=1, dig_speed_class=2, }, tool_capabilities = { -- 1/1.2 @@ -96,6 +99,7 @@ minetest.register_tool("mcl_tools:pick_stone", { description = S("Stone Pickaxe"), _doc_items_longdesc = pickaxe_longdesc, inventory_image = "default_tool_stonepick.png", + wield_scale = wield_scale, groups = { tool=1, pickaxe=1, dig_speed_class=3, }, tool_capabilities = { -- 1/1.2 @@ -114,6 +118,7 @@ minetest.register_tool("mcl_tools:pick_iron", { description = S("Iron Pickaxe"), _doc_items_longdesc = pickaxe_longdesc, inventory_image = "default_tool_steelpick.png", + wield_scale = wield_scale, groups = { tool=1, pickaxe=1, dig_speed_class=4, }, tool_capabilities = { -- 1/1.2 @@ -132,6 +137,7 @@ minetest.register_tool("mcl_tools:pick_gold", { description = S("Golden Pickaxe"), _doc_items_longdesc = pickaxe_longdesc, inventory_image = "default_tool_goldpick.png", + wield_scale = wield_scale, groups = { tool=1, pickaxe=1, dig_speed_class=6, }, tool_capabilities = { -- 1/1.2 @@ -150,6 +156,7 @@ minetest.register_tool("mcl_tools:pick_diamond", { description = S("Diamond Pickaxe"), _doc_items_longdesc = pickaxe_longdesc, inventory_image = "default_tool_diamondpick.png", + wield_scale = wield_scale, groups = { tool=1, pickaxe=1, dig_speed_class=5, }, tool_capabilities = { -- 1/1.2 @@ -269,6 +276,7 @@ minetest.register_tool("mcl_tools:shovel_wood", { _doc_items_hidden = false, inventory_image = "default_tool_woodshovel.png", wield_image = "default_tool_woodshovel.png^[transformR90", + wield_scale = wield_scale, groups = { tool=1, shovel=1, dig_speed_class=2, }, tool_capabilities = { full_punch_interval = 1, @@ -289,6 +297,7 @@ minetest.register_tool("mcl_tools:shovel_stone", { _doc_items_usagehelp = shovel_use, inventory_image = "default_tool_stoneshovel.png", wield_image = "default_tool_stoneshovel.png^[transformR90", + wield_scale = wield_scale, groups = { tool=1, shovel=1, dig_speed_class=3, }, tool_capabilities = { full_punch_interval = 1, @@ -309,6 +318,7 @@ minetest.register_tool("mcl_tools:shovel_iron", { _doc_items_usagehelp = shovel_use, inventory_image = "default_tool_steelshovel.png", wield_image = "default_tool_steelshovel.png^[transformR90", + wield_scale = wield_scale, groups = { tool=1, shovel=1, dig_speed_class=4, }, tool_capabilities = { full_punch_interval = 1, @@ -329,6 +339,7 @@ minetest.register_tool("mcl_tools:shovel_gold", { _doc_items_usagehelp = shovel_use, inventory_image = "default_tool_goldshovel.png", wield_image = "default_tool_goldshovel.png^[transformR90", + wield_scale = wield_scale, groups = { tool=1, shovel=1, dig_speed_class=6, }, tool_capabilities = { full_punch_interval = 1, @@ -349,6 +360,7 @@ minetest.register_tool("mcl_tools:shovel_diamond", { _doc_items_usagehelp = shovel_use, inventory_image = "default_tool_diamondshovel.png", wield_image = "default_tool_diamondshovel.png^[transformR90", + wield_scale = wield_scale, groups = { tool=1, shovel=1, dig_speed_class=5, }, tool_capabilities = { full_punch_interval = 1, @@ -370,6 +382,7 @@ minetest.register_tool("mcl_tools:axe_wood", { _doc_items_longdesc = axe_longdesc, _doc_items_hidden = false, inventory_image = "default_tool_woodaxe.png", + wield_scale = wield_scale, groups = { tool=1, axe=1, dig_speed_class=2, }, tool_capabilities = { full_punch_interval = 1.25, @@ -387,6 +400,7 @@ minetest.register_tool("mcl_tools:axe_stone", { description = S("Stone Axe"), _doc_items_longdesc = axe_longdesc, inventory_image = "default_tool_stoneaxe.png", + wield_scale = wield_scale, groups = { tool=1, axe=1, dig_speed_class=3, }, tool_capabilities = { full_punch_interval = 1.25, @@ -404,6 +418,7 @@ minetest.register_tool("mcl_tools:axe_iron", { description = S("Iron Axe"), _doc_items_longdesc = axe_longdesc, inventory_image = "default_tool_steelaxe.png", + wield_scale = wield_scale, groups = { tool=1, axe=1, dig_speed_class=4, }, tool_capabilities = { -- 1/0.9 @@ -422,6 +437,7 @@ minetest.register_tool("mcl_tools:axe_gold", { description = S("Golden Axe"), _doc_items_longdesc = axe_longdesc, inventory_image = "default_tool_goldaxe.png", + wield_scale = wield_scale, groups = { tool=1, axe=1, dig_speed_class=6, }, tool_capabilities = { full_punch_interval = 1.0, @@ -439,6 +455,7 @@ minetest.register_tool("mcl_tools:axe_diamond", { description = S("Diamond Axe"), _doc_items_longdesc = axe_longdesc, inventory_image = "default_tool_diamondaxe.png", + wield_scale = wield_scale, groups = { tool=1, axe=1, dig_speed_class=5, }, tool_capabilities = { full_punch_interval = 1.0, @@ -459,6 +476,7 @@ minetest.register_tool("mcl_tools:sword_wood", { _doc_items_longdesc = sword_longdesc, _doc_items_hidden = false, inventory_image = "default_tool_woodsword.png", + wield_scale = wield_scale, groups = { weapon=1, sword=1, dig_speed_class=2, }, tool_capabilities = { full_punch_interval = 0.625, @@ -477,6 +495,7 @@ minetest.register_tool("mcl_tools:sword_stone", { description = S("Stone Sword"), _doc_items_longdesc = sword_longdesc, inventory_image = "default_tool_stonesword.png", + wield_scale = wield_scale, groups = { weapon=1, sword=1, dig_speed_class=3, }, tool_capabilities = { full_punch_interval = 0.625, @@ -495,6 +514,7 @@ minetest.register_tool("mcl_tools:sword_iron", { description = S("Iron Sword"), _doc_items_longdesc = sword_longdesc, inventory_image = "default_tool_steelsword.png", + wield_scale = wield_scale, groups = { weapon=1, sword=1, dig_speed_class=4, }, tool_capabilities = { full_punch_interval = 0.625, @@ -513,6 +533,7 @@ minetest.register_tool("mcl_tools:sword_gold", { description = S("Golden Sword"), _doc_items_longdesc = sword_longdesc, inventory_image = "default_tool_goldsword.png", + wield_scale = wield_scale, groups = { weapon=1, sword=1, dig_speed_class=6, }, tool_capabilities = { full_punch_interval = 0.625, @@ -531,6 +552,7 @@ minetest.register_tool("mcl_tools:sword_diamond", { description = S("Diamond Sword"), _doc_items_longdesc = sword_longdesc, inventory_image = "default_tool_diamondsword.png", + wield_scale = wield_scale, groups = { weapon=1, sword=1, dig_speed_class=5, }, tool_capabilities = { full_punch_interval = 0.625, From 8664a5c4840a53b964333f95f4c456058c9fa7f6 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Wed, 8 Apr 2020 12:41:52 +0200 Subject: [PATCH 625/737] Make mobs vulnerable to TNT explosions --- mods/ITEMS/mcl_tnt/init.lua | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/mods/ITEMS/mcl_tnt/init.lua b/mods/ITEMS/mcl_tnt/init.lua index dafb5a84..c63d118b 100644 --- a/mods/ITEMS/mcl_tnt/init.lua +++ b/mods/ITEMS/mcl_tnt/init.lua @@ -19,27 +19,27 @@ local function activate_if_tnt(nname, np, tnt_np, tntr) end end -local function do_tnt_physics(tnt_np,tntr) +local function do_tnt_physics(tnt_np, tntr, tnt_obj) local objs = minetest.get_objects_inside_radius(tnt_np, tntr) for k, obj in pairs(objs) do local ent = obj:get_luaentity() local v = obj:get_velocity() local p = obj:get_pos() - if ent and ent.name == "mcl_tnt:tnt" then + if ent and ent.name == "mcl_tnt:tnt" and v ~= nil then obj:set_velocity({x=(p.x - tnt_np.x) + (tntr / 2) + v.x, y=(p.y - tnt_np.y) + tntr + v.y, z=(p.z - tnt_np.z) + (tntr / 2) + v.z}) else - if v ~= nil then + if v ~= nil and not obj:is_player() then obj:set_velocity({x=(p.x - tnt_np.x) + (tntr / 4) + v.x, y=(p.y - tnt_np.y) + (tntr / 2) + v.y, z=(p.z - tnt_np.z) + (tntr / 4) + v.z}) - else - local dist = math.max(1, vector.distance(tnt_np, p)) - local damage = (4 / dist) * tntr - if obj:is_player() == true then - if mod_death_messages then - mcl_death_messages.player_damage(obj, S("@1 was caught in an explosion.", obj:get_player_name())) - end - end - obj:set_hp(obj:get_hp() - damage, { type = "punch", from = "mod" }) end + local dist = math.max(1, vector.distance(tnt_np, p)) + local damage = (4 / dist) * tntr + if obj:is_player() == true then + if mod_death_messages then + mcl_death_messages.player_damage(obj, S("@1 was caught in an explosion.", obj:get_player_name())) + end + end + local puncher = tnt_obj or obj + obj:punch(puncher, nil, { damage_groups = { fleshy = damage }}) end end end @@ -204,12 +204,12 @@ function TNT:on_step(dtime) self.blinkstatus = not self.blinkstatus end if self.timer > tnt.BOOMTIMER then - tnt.boom(self.object:get_pos()) + tnt.boom(self.object:get_pos(), nil, self.object) self.object:remove() end end -tnt.boom = function(pos, info) +tnt.boom = function(pos, info, tnt_obj) if not info then info = {} end local range = info.radius or TNT_RANGE local damage_range = info.damage_radius or TNT_RANGE @@ -217,7 +217,7 @@ tnt.boom = function(pos, info) pos.x = math.floor(pos.x+0.5) pos.y = math.floor(pos.y+0.5) pos.z = math.floor(pos.z+0.5) - do_tnt_physics(pos, range) + do_tnt_physics(pos, range, tnt_obj) local meta = minetest.get_meta(pos) local sound if not info.sound then From 20eba63b94ea92bbd0d42c63c054604581772459 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Wed, 8 Apr 2020 13:08:33 +0200 Subject: [PATCH 626/737] Fix bark stairs+slabs being not flammable --- mods/ITEMS/mclx_stairs/init.lua | 38 +++++++++++++++++++++++++++------ 1 file changed, 32 insertions(+), 6 deletions(-) diff --git a/mods/ITEMS/mclx_stairs/init.lua b/mods/ITEMS/mclx_stairs/init.lua index d43fa9c5..06a7e917 100644 --- a/mods/ITEMS/mclx_stairs/init.lua +++ b/mods/ITEMS/mclx_stairs/init.lua @@ -1,12 +1,38 @@ local S = minetest.get_translator("mclx_stairs") local doc_mod = minetest.get_modpath("doc") -mcl_stairs.register_stair_and_slab_simple("tree_bark", "mcl_core:tree_bark", S("Oak Bark Stairs"), S("Oak Bark Slab"), S("Double Oak Bark Slab"), "woodlike") -mcl_stairs.register_stair_and_slab_simple("acaciatree_bark", "mcl_core:acaciatree_bark", S("Acacia Bark Stairs"), S("Acacia Bark Slab"), S("Double Acacia Bark Slab"), "woodlike") -mcl_stairs.register_stair_and_slab_simple("sprucetree_bark", "mcl_core:sprucetree_bark", S("Spruce Bark Stairs"), S("Spruce Bark Slab"), S("Double Spruce Bark Slab"), "woodlike") -mcl_stairs.register_stair_and_slab_simple("birchtree_bark", "mcl_core:birchtree_bark", S("Birch Bark Stairs"), S("Birch Bark Slab"), S("Double Birch Bark Slab"), "woodlike") -mcl_stairs.register_stair_and_slab_simple("jungletree_bark", "mcl_core:jungletree_bark", S("Jungle Bark Stairs"), S("Jungle Bark Slab"), S("Double Jungle Bark Slab"), "woodlike") -mcl_stairs.register_stair_and_slab_simple("darktree_bark", "mcl_core:darktree_bark", S("Dark Oak Bark Stairs"), S("Dark Oak Bark Slab"), S("Double Dark Oak Bark Slab"), "woodlike") + +local barks = { + { "", S("Oak Bark Stairs"), S("Oak Bark Slab"), S("Double Oak Bark Slab") }, + { "jungle", S("Jungle Bark Stairs"), S("Jungle Bark Slab"), S("Double Jungle Bark Slab") }, + { "acacia", S("Acacia Bark Stairs"), S("Acacia Bark Slab"), S("Double Acacia Bark Slab") }, + { "spruce", S("Spruce Bark Stairs"), S("Spruce Bark Slab"), S("Double Spruce Bark Slab") }, + { "birch", S("Birch Bark Stairs"), S("Birch Bark Slab"), S("Double Birch Bark Slab") }, + { "dark", S("Dark Oak Bark Stairs"), S("Dark Oak Bark Slab"), S("Double Dark Oak Bark Slab") }, +} + +for b=1, #barks do + local bark = barks[b] + local sub = bark[1].."tree_bark" + local id = "mcl_core:tree" + if bark[1] ~= "" then + id = "mcl_core:"..bark[1].."tree" + end + mcl_stairs.register_stair(sub, id, + {handy=1,axey=1, flammable=3, material_wood=1}, + {minetest.registered_nodes[id].tiles[3]}, + bark[2], + mcl_sounds.node_sound_wood_defaults(), + 2, + "woodlike") + mcl_stairs.register_slab(sub, id, + {handy=1,axey=1, flammable=3, material_wood=1}, + {minetest.registered_nodes[id].tiles[3]}, + bark[3], + mcl_sounds.node_sound_wood_defaults(), + 2, + bark[4]) +end mcl_stairs.register_slab("lapisblock", "mcl_core:lapisblock", {pickaxey=3}, {"mcl_core_lapis_block.png", "mcl_core_lapis_block.png", "mcl_stairs_lapis_block_slab.png"}, S("Lapis Lazuli Slab"), nil, nil, S("Double Lapis Lazuli Slab")) mcl_stairs.register_stair("lapisblock", "mcl_core:lapisblock", {pickaxey=3}, {"mcl_stairs_lapis_block_slab.png", "mcl_core_lapis_block.png", "mcl_core_lapis_block.png", "mcl_core_lapis_block.png", "mcl_core_lapis_block.png", "mcl_stairs_lapis_block_slab.png"}, S("Lapis Lazuli Stairs"), nil, nil, "woodlike") From d9cff3ef8230ae7f2c0863d47361573d51b8e57d Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Wed, 8 Apr 2020 13:15:22 +0200 Subject: [PATCH 627/737] Make bark nodes usable as fuel --- mods/ITEMS/mcl_core/crafting.lua | 6 ++++++ mods/ITEMS/mclx_stairs/init.lua | 17 +++++++++++++++-- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_core/crafting.lua b/mods/ITEMS/mcl_core/crafting.lua index 382c136f..a0ad38a7 100644 --- a/mods/ITEMS/mcl_core/crafting.lua +++ b/mods/ITEMS/mcl_core/crafting.lua @@ -526,6 +526,12 @@ minetest.register_craft({ burntime = 15, }) +minetest.register_craft({ + type = "fuel", + recipe = "group:bark", + burntime = 15, +}) + minetest.register_craft({ type = "fuel", recipe = "mcl_core:ladder", diff --git a/mods/ITEMS/mclx_stairs/init.lua b/mods/ITEMS/mclx_stairs/init.lua index 06a7e917..b9a170df 100644 --- a/mods/ITEMS/mclx_stairs/init.lua +++ b/mods/ITEMS/mclx_stairs/init.lua @@ -19,14 +19,14 @@ for b=1, #barks do id = "mcl_core:"..bark[1].."tree" end mcl_stairs.register_stair(sub, id, - {handy=1,axey=1, flammable=3, material_wood=1}, + {handy=1,axey=1, flammable=3, bark_stairs=1, material_wood=1}, {minetest.registered_nodes[id].tiles[3]}, bark[2], mcl_sounds.node_sound_wood_defaults(), 2, "woodlike") mcl_stairs.register_slab(sub, id, - {handy=1,axey=1, flammable=3, material_wood=1}, + {handy=1,axey=1, flammable=3, bark_slab=1, material_wood=1}, {minetest.registered_nodes[id].tiles[3]}, bark[3], mcl_sounds.node_sound_wood_defaults(), @@ -100,3 +100,16 @@ for i=1, #block.dyes do end end +-- Fuel +minetest.register_craft({ + type = "fuel", + recipe = "group:bark_stairs", + -- Same as wood stairs + burntime = 15, +}) +minetest.register_craft({ + type = "fuel", + recipe = "group:bark_slab", + -- Same as wood slab + burntime = 8, +}) From 3bd1cded034e1cc61a904fd69a03bc696249a022 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Wed, 8 Apr 2020 13:29:27 +0200 Subject: [PATCH 628/737] Furnace: Fix output slot image being misplaced --- mods/ITEMS/mcl_furnaces/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_furnaces/init.lua b/mods/ITEMS/mcl_furnaces/init.lua index b2c76bb7..8f52a31c 100644 --- a/mods/ITEMS/mcl_furnaces/init.lua +++ b/mods/ITEMS/mcl_furnaces/init.lua @@ -18,7 +18,7 @@ local function active_formspec(fuel_percent, item_percent) "list[current_name;fuel;2.75,2.5;1,1;]".. mcl_formspec.get_itemslot_bg(2.75,2.5,1,1).. "list[current_name;dst;5.75,1.5;1,1;]".. - mcl_formspec.get_itemslot_bg(5.75,2.5,1,1).. + mcl_formspec.get_itemslot_bg(5.75,1.5,1,1).. "image[2.75,1.5;1,1;default_furnace_fire_bg.png^[lowpart:".. (100-fuel_percent)..":default_furnace_fire_fg.png]".. "image[4.1,1.5;1.5,1;gui_furnace_arrow_bg.png^[lowpart:".. From 5fe8717fca92f13817e3d5e11661963b835054fa Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Wed, 8 Apr 2020 15:03:03 +0200 Subject: [PATCH 629/737] Fix another crash in Mobs mod --- mods/ENTITIES/mcl_mobs/api.lua | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/mods/ENTITIES/mcl_mobs/api.lua b/mods/ENTITIES/mcl_mobs/api.lua index aedabaa0..86ec7ee3 100644 --- a/mods/ENTITIES/mcl_mobs/api.lua +++ b/mods/ENTITIES/mcl_mobs/api.lua @@ -1932,6 +1932,7 @@ end -- execute current state (stand, walk, run, attacks) +-- returns true if mob has died local do_states = function(self, dtime) local yaw = self.object:get_yaw() or 0 @@ -2236,7 +2237,7 @@ local do_states = function(self, dtime) effect(pos, 32, "tnt_smoke.png", nil, nil, node_break_radius, 1, 0) end - return + return true end end @@ -3181,7 +3182,9 @@ local mob_step = function(self, dtime) follow_flop(self) - do_states(self, dtime) + if do_states(self, dtime) then + return + end do_jump(self) From 88927c8a6bb519dd1689cca1df371b92d1ab8503 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Wed, 8 Apr 2020 17:23:12 +0200 Subject: [PATCH 630/737] Remove furnace craftguide btn cuz MT weirdness --- mods/ITEMS/mcl_furnaces/init.lua | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/mods/ITEMS/mcl_furnaces/init.lua b/mods/ITEMS/mcl_furnaces/init.lua index 8f52a31c..17c404dd 100644 --- a/mods/ITEMS/mcl_furnaces/init.lua +++ b/mods/ITEMS/mcl_furnaces/init.lua @@ -23,8 +23,10 @@ local function active_formspec(fuel_percent, item_percent) (100-fuel_percent)..":default_furnace_fire_fg.png]".. "image[4.1,1.5;1.5,1;gui_furnace_arrow_bg.png^[lowpart:".. (item_percent)..":gui_furnace_arrow_fg.png^[transformR270]".. - "image_button[8,0;1,1;craftguide_book.png;craftguide;]".. - "tooltip[craftguide;"..minetest.formspec_escape(S("Recipe book")).."]".. + -- Craft guide button temporarily removed due to Minetest bug. + -- TODO: Add it back when the Minetest bug is fixed. + --"image_button[8,0;1,1;craftguide_book.png;craftguide;]".. + --"tooltip[craftguide;"..minetest.formspec_escape(S("Recipe book")).."]".. "listring[current_name;dst]".. "listring[current_player;main]".. "listring[current_name;src]".. @@ -48,8 +50,10 @@ local inactive_formspec = "size[9,8.75]".. mcl_formspec.get_itemslot_bg(5.75,1.5,1,1).. "image[2.75,1.5;1,1;default_furnace_fire_bg.png]".. "image[4.1,1.5;1.5,1;gui_furnace_arrow_bg.png^[transformR270]".. - "image_button[8,0;1,1;craftguide_book.png;craftguide;]".. - "tooltip[craftguide;"..minetest.formspec_escape(S("Recipe book")).."]".. + -- Craft guide button temporarily removed due to Minetest bug. + -- TODO: Add it back when the Minetest bug is fixed. + --"image_button[8,0;1,1;craftguide_book.png;craftguide;]".. + --"tooltip[craftguide;"..minetest.formspec_escape(S("Recipe book")).."]".. "listring[current_name;dst]".. "listring[current_player;main]".. "listring[current_name;src]".. From 868fa04818de472bd15241df7c1be361c317fb77 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Wed, 8 Apr 2020 17:23:59 +0200 Subject: [PATCH 631/737] Version 0.63.0 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 21e21a83..303d0f5b 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ An unofficial Minecraft-like game for Minetest. Forked from MineClone by davedevils. Developed by Wuzzy and contributors. Not developed or endorsed by Mojang AB. -Version: 0.62.0 +Version: 0.63.0 ### Gameplay You start in a randomly-generated world made entirely of cubes. You can explore From 32ae6b3140e80908a1afe128907048b1ebce6fdb Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Wed, 8 Apr 2020 21:32:37 +0200 Subject: [PATCH 632/737] Add moon phases --- mods/ENVIRONMENT/mcl_moon/API.md | 15 +++++ mods/ENVIRONMENT/mcl_moon/init.lua | 54 ++++++++++++++++++ mods/ENVIRONMENT/mcl_moon/mod.conf | 2 + .../textures/mcl_moon_moon_phases.png | Bin 0 -> 1898 bytes 4 files changed, 71 insertions(+) create mode 100644 mods/ENVIRONMENT/mcl_moon/API.md create mode 100644 mods/ENVIRONMENT/mcl_moon/init.lua create mode 100644 mods/ENVIRONMENT/mcl_moon/mod.conf create mode 100644 mods/ENVIRONMENT/mcl_moon/textures/mcl_moon_moon_phases.png diff --git a/mods/ENVIRONMENT/mcl_moon/API.md b/mods/ENVIRONMENT/mcl_moon/API.md new file mode 100644 index 00000000..553df0de --- /dev/null +++ b/mods/ENVIRONMENT/mcl_moon/API.md @@ -0,0 +1,15 @@ +# `mcl_moon` API +This API has one function: + +## `mcl_moon.get_moon_phase()` + +Returns current moon phase (0-7). + +* 0 = Full Moon +* 1 = Waning Gibbous +* 2 = Last Quarter +* 3 = Waning Crescent +* 4 = New Moon +* 5 = Waxing Crescent +* 6 = First Quarter +* 7 = Waxing Gibbous diff --git a/mods/ENVIRONMENT/mcl_moon/init.lua b/mods/ENVIRONMENT/mcl_moon/init.lua new file mode 100644 index 00000000..df792651 --- /dev/null +++ b/mods/ENVIRONMENT/mcl_moon/init.lua @@ -0,0 +1,54 @@ +local MOON_PHASES = 8 +local MOON_PHASES_HALF = MOON_PHASES / 2 +local SHEET_W = 4 +local SHEET_H = 2 + +mcl_moon = {} +mcl_moon.MOON_PHASES = MOON_PHASES + +mcl_moon.get_moon_phase = function() + local after_midday = 0 + local tod = minetest.get_timeofday() + if tod > 0.5 then + after_midday = 1 + end + return (minetest.get_day_count() + after_midday) % MOON_PHASES +end + +local get_moon_texture = function() + local phase = mcl_moon.get_moon_phase() + local x = phase % MOON_PHASES_HALF + local y + if phase >= MOON_PHASES_HALF then + y = 1 + else + y = 0 + end + return "mcl_moon_moon_phases.png^[sheet:"..SHEET_W.."x"..SHEET_H..":"..x..","..y +end + +local timer = 0 +local last_reported_phase = nil +minetest.register_globalstep(function(dtime) + timer = timer + dtime + if timer < 5 then + return + end + timer = 0 + local phase = mcl_moon.get_moon_phase() + -- No-op when moon phase didn't change yet + if last_reported_phase == phase then + return + end + minetest.log("info", "[mcl_moon] New moon phase: "..phase) + last_reported_phase = phase + local moon_arg = {texture = get_moon_texture()} + local players = minetest.get_connected_players() + for p=1, #players do + players[p]:set_moon(moon_arg) + end +end) + +minetest.register_on_joinplayer(function(player) + player:set_moon({texture = get_moon_texture(), scale=3.75}) +end) diff --git a/mods/ENVIRONMENT/mcl_moon/mod.conf b/mods/ENVIRONMENT/mcl_moon/mod.conf new file mode 100644 index 00000000..9ff8c04b --- /dev/null +++ b/mods/ENVIRONMENT/mcl_moon/mod.conf @@ -0,0 +1,2 @@ +name = mcl_moon +description = Adds moon phases to the game diff --git a/mods/ENVIRONMENT/mcl_moon/textures/mcl_moon_moon_phases.png b/mods/ENVIRONMENT/mcl_moon/textures/mcl_moon_moon_phases.png new file mode 100644 index 0000000000000000000000000000000000000000..d2ee963a95817bff091ca8245cf2ea57f87602f8 GIT binary patch literal 1898 zcmeAS@N?(olHy`uVBq!ia0y~yU}RumU})fAW?*2rob7JGz`$@gz$e5NB+9_Zz{teF z$jr#d#K_3Z$i&RZ#KOqL%E-jV#LULT%+AEj!NkJB%)-IU%E`>a$->IT!p6nI#?8XY z$;!^d%FfFILOiS-d~6*2Y@GZoY&@(Wh5#FL*Fb4>UaPWw*a|yC@ z3vuv>a`1?8@``ctigWTwaPdj7bBl2CNpkT^aq&rU@=9i zba4!+V7xPhz50=bfWyg)g?BQ$#UJlTYUexo_0#|QtG#ZI>>5w3S$99P?DA*1Q@`Ev zY-cU!U*_8L(WY+|zKoyjb0^cltxW<(G4}SC?PTD}Tto=}3s&1-sb? z&pz1huvmiU(MGu`uVNoQ^f>cDE75+c)~rL@^IkLBNk!(&%bk<{C&}bcUy*BYg^0)3 zwg&6I$Gg_GGtWOTeSw6RsARI({Wi0X=xJ{&*2%YAV%hiFa$D-cMZKbusRI3f3o04P zkJm}~ExY`Zhuv;w%R>7y$Hs0IQ8O%=TY4U+iN3<{u_=&n#44BNVN2 zEr5gPK`X;=#`9&*jUSx0h+8}9$x~I&u+&F0K(&&z$wt zHE^2i#PrNrN4VEXbhq6}V7mXve8u(SbqA97X3Z5Zz5C!w>BRNgYdF|)ZoK~(ox;@5 zbg+M7|0Aulr+<}hzMGp^cKd90?6XW!_Y4VcW-guwffwF2JACP0Wpexa*|cg4x&GzC zd#rQJefOTfq$R}bc;UFLQG+|Xt&|G!MiCoVnOPhNsOCJ;tmPzG~4a!^I^${oAaNpWQh9nyZr~V z9COJ}Wf7)hp>Av%o3+|n{y5%BWop&`uj9{p;ZY}pmj1kj3LpObED>B@ePn;7!JFS- z?Rv#8?|g5_Xy-1vZ{OqnfBky&pla)R6D;-E&SV=MSa!~E;p+&e1s|l98pQq|Wc;9i z;n7To+S<0&Hf$N+XB^;PemW)A?9tc#)1R?R)HM|cubceTBR@7h6YPrCXGEJ2Y7GtYQ=3&X?Xl?Yr=MolJ!ij_NVq}G%%J_YBh-UGpdAf zE%>B#U;^i&P&USs4B{R$)+(t<6g3`-&#Nfp<5_Srm~l&mAj8GoAWM7Z1x~nrTUqkK z+Z}6*MQr+aI6SchVXm!LmjWKwC_t9b}#c-6#3$&(}E9P3^trB7eIl%heN@` zvfL9m_kv-0Zt%VnOs(onFFuAa=+5I<@M-_H zVzC_;j~IyD`#oi+?7sg?xgP5*ef&bxOQrWy%PV0@RGatiV38TYvu5~G zbR*>F(+w-Nryn+P$>_W&vQ+opkA#+s5{CniJ(f_}a3W#SA+`3vO`)rG(lXzC((&0~ zboi1;cCn7%Cacq*N{U~9W_X}_V77vMvx?J_Ln6*o;KrN-nev@kqQBU_;Wy(`U$3uU zRehpZzrF8%T{=64bN0Py7ccaGayweHI7M>tv&7R`uiPtFXYC8!))V@DL#o-mf1>~X z?b{Q%b5G>2$L6~P;@920ysI3qD|L~=~N-bAIk^O_C3_gJp z43&usqp!_aUMO?TfT8Oi1Iy1<@9Lf7XGAW_Vh6;IiO>B0Ne+*kZ`=w9Y}Q zVaJ{~%mQER7(C~*DBR)qV7_qedM!iOJ$8kclNrucF?FVdQ&MBb@0J{DRb^rhX literal 0 HcmV?d00001 From 0c271a2af9465b866550c5d9765f7cc6c7aa5a9a Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Wed, 8 Apr 2020 22:05:23 +0200 Subject: [PATCH 633/737] Randomize initial moon phase --- mods/ENVIRONMENT/mcl_moon/init.lua | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/mods/ENVIRONMENT/mcl_moon/init.lua b/mods/ENVIRONMENT/mcl_moon/init.lua index df792651..4ee2623a 100644 --- a/mods/ENVIRONMENT/mcl_moon/init.lua +++ b/mods/ENVIRONMENT/mcl_moon/init.lua @@ -3,16 +3,26 @@ local MOON_PHASES_HALF = MOON_PHASES / 2 local SHEET_W = 4 local SHEET_H = 2 +-- Randomize initial moon phase, based on map seed +local phase_offset +local mg_seed = minetest.get_mapgen_setting("seed") +local rand = PseudoRandom(mg_seed) +local phase_offset = rand:next(0, MOON_PHASES - 1) +rand = nil + +minetest.log("info", "[mcl_moon] Moon phase offset of this world: "..phase_offset) + mcl_moon = {} mcl_moon.MOON_PHASES = MOON_PHASES mcl_moon.get_moon_phase = function() local after_midday = 0 + -- Moon phase changes after midday local tod = minetest.get_timeofday() if tod > 0.5 then after_midday = 1 end - return (minetest.get_day_count() + after_midday) % MOON_PHASES + return (minetest.get_day_count() + phase_offset + after_midday) % MOON_PHASES end local get_moon_texture = function() @@ -31,7 +41,7 @@ local timer = 0 local last_reported_phase = nil minetest.register_globalstep(function(dtime) timer = timer + dtime - if timer < 5 then + if timer < 8 then return end timer = 0 From a33bd015f5aa8945b943356cf23bb5c5596ca7ad Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sat, 11 Apr 2020 01:14:14 +0200 Subject: [PATCH 634/737] Reduce max_object_per_block default to 64 --- mods/ENTITIES/mcl_mobs/api.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ENTITIES/mcl_mobs/api.lua b/mods/ENTITIES/mcl_mobs/api.lua index 86ec7ee3..055d01a2 100644 --- a/mods/ENTITIES/mcl_mobs/api.lua +++ b/mods/ENTITIES/mcl_mobs/api.lua @@ -59,7 +59,7 @@ local spawn_protected = minetest.settings:get_bool("mobs_spawn_protected") ~= fa local remove_far = false local difficulty = tonumber(minetest.settings:get("mob_difficulty")) or 1.0 local show_health = false -local max_per_block = tonumber(minetest.settings:get("max_objects_per_block") or 99) +local max_per_block = tonumber(minetest.settings:get("max_objects_per_block") or 64) local mobs_spawn_chance = tonumber(minetest.settings:get("mobs_spawn_chance") or 2.5) -- Peaceful mode message so players will know there are no monsters From 8e06e4e8b2d005a107f25b6139df80f0fc9eb157 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sat, 11 Apr 2020 01:35:44 +0200 Subject: [PATCH 635/737] Reduce mob_specific mob caps --- mods/ENTITIES/mobs_mc/cow+mooshroom.lua | 4 ++-- mods/ENTITIES/mobs_mc/horse.lua | 4 ++-- mods/ENTITIES/mobs_mc/pig.lua | 2 +- mods/ENTITIES/mobs_mc/rabbit.lua | 2 +- mods/ENTITIES/mobs_mc/wolf.lua | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/mods/ENTITIES/mobs_mc/cow+mooshroom.lua b/mods/ENTITIES/mobs_mc/cow+mooshroom.lua index 7b0e3d9b..14256987 100644 --- a/mods/ENTITIES/mobs_mc/cow+mooshroom.lua +++ b/mods/ENTITIES/mobs_mc/cow+mooshroom.lua @@ -135,8 +135,8 @@ mobs:register_mob("mobs_mc:mooshroom", mooshroom_def) -- Spawning -mobs:spawn_specific("mobs_mc:cow", mobs_mc.spawn.grassland, {"air"}, 9, minetest.LIGHT_MAX+1, 30, 17000, 20, mobs_mc.spawn_height.overworld_min, mobs_mc.spawn_height.overworld_max) -mobs:spawn_specific("mobs_mc:mooshroom", mobs_mc.spawn.mushroom_island, {"air"}, 9, minetest.LIGHT_MAX+1, 30, 17000, 10, mobs_mc.spawn_height.overworld_min, mobs_mc.spawn_height.overworld_max) +mobs:spawn_specific("mobs_mc:cow", mobs_mc.spawn.grassland, {"air"}, 9, minetest.LIGHT_MAX+1, 30, 17000, 10, mobs_mc.spawn_height.overworld_min, mobs_mc.spawn_height.overworld_max) +mobs:spawn_specific("mobs_mc:mooshroom", mobs_mc.spawn.mushroom_island, {"air"}, 9, minetest.LIGHT_MAX+1, 30, 17000, 5, mobs_mc.spawn_height.overworld_min, mobs_mc.spawn_height.overworld_max) -- spawn egg mobs:register_egg("mobs_mc:cow", S("Cow"), "mobs_mc_spawn_icon_cow.png", 0) diff --git a/mods/ENTITIES/mobs_mc/horse.lua b/mods/ENTITIES/mobs_mc/horse.lua index 0bc524d2..d5123edd 100644 --- a/mods/ENTITIES/mobs_mc/horse.lua +++ b/mods/ENTITIES/mobs_mc/horse.lua @@ -425,8 +425,8 @@ mobs:register_mob("mobs_mc:mule", mule) --=========================== --Spawn Function -mobs:spawn_specific("mobs_mc:horse", mobs_mc.spawn.grassland_savanna, {"air"}, 0, minetest.LIGHT_MAX+1, 30, 15000, 12, mobs_mc.spawn_height.water+3, mobs_mc.spawn_height.overworld_max) -mobs:spawn_specific("mobs_mc:donkey", mobs_mc.spawn.grassland_savanna, {"air"}, 0, minetest.LIGHT_MAX+1, 30, 15000, 12, mobs_mc.spawn_height.water+3, mobs_mc.spawn_height.overworld_max) +mobs:spawn_specific("mobs_mc:horse", mobs_mc.spawn.grassland_savanna, {"air"}, 0, minetest.LIGHT_MAX+1, 30, 15000, 4, mobs_mc.spawn_height.water+3, mobs_mc.spawn_height.overworld_max) +mobs:spawn_specific("mobs_mc:donkey", mobs_mc.spawn.grassland_savanna, {"air"}, 0, minetest.LIGHT_MAX+1, 30, 15000, 4, mobs_mc.spawn_height.water+3, mobs_mc.spawn_height.overworld_max) -- spawn eggs mobs:register_egg("mobs_mc:horse", S("Horse"), "mobs_mc_spawn_icon_horse.png", 0) diff --git a/mods/ENTITIES/mobs_mc/pig.lua b/mods/ENTITIES/mobs_mc/pig.lua index b8ded19b..415c9094 100644 --- a/mods/ENTITIES/mobs_mc/pig.lua +++ b/mods/ENTITIES/mobs_mc/pig.lua @@ -177,7 +177,7 @@ mobs:register_mob("mobs_mc:pig", { end, }) -mobs:spawn_specific("mobs_mc:pig", mobs_mc.spawn.grassland, {"air"}, 9, minetest.LIGHT_MAX+1, 30, 15000, 30, mobs_mc.spawn_height.overworld_min, mobs_mc.spawn_height.overworld_max) +mobs:spawn_specific("mobs_mc:pig", mobs_mc.spawn.grassland, {"air"}, 9, minetest.LIGHT_MAX+1, 30, 15000, 8, mobs_mc.spawn_height.overworld_min, mobs_mc.spawn_height.overworld_max) -- spawn eggs mobs:register_egg("mobs_mc:pig", S("Pig"), "mobs_mc_spawn_icon_pig.png", 0) diff --git a/mods/ENTITIES/mobs_mc/rabbit.lua b/mods/ENTITIES/mobs_mc/rabbit.lua index 104aee14..5a0f58c1 100644 --- a/mods/ENTITIES/mobs_mc/rabbit.lua +++ b/mods/ENTITIES/mobs_mc/rabbit.lua @@ -102,7 +102,7 @@ local spawn = { name = "mobs_mc:rabbit", neighbors = {"air"}, chance = 15000, - active_object_count = 99, + active_object_count = 10, min_light = 0, max_light = minetest.LIGHT_MAX+1, min_height = mobs_mc.spawn_height.overworld_min, diff --git a/mods/ENTITIES/mobs_mc/wolf.lua b/mods/ENTITIES/mobs_mc/wolf.lua index 9e282057..3dc12e1f 100644 --- a/mods/ENTITIES/mobs_mc/wolf.lua +++ b/mods/ENTITIES/mobs_mc/wolf.lua @@ -203,7 +203,7 @@ end mobs:register_mob("mobs_mc:dog", dog) -- Spawn -mobs:spawn_specific("mobs_mc:wolf", mobs_mc.spawn.wolf, {"air"}, 0, minetest.LIGHT_MAX+1, 30, 9000, 20, mobs_mc.spawn_height.water+3, mobs_mc.spawn_height.overworld_max) +mobs:spawn_specific("mobs_mc:wolf", mobs_mc.spawn.wolf, {"air"}, 0, minetest.LIGHT_MAX+1, 30, 9000, 7, mobs_mc.spawn_height.water+3, mobs_mc.spawn_height.overworld_max) mobs:register_egg("mobs_mc:wolf", S("Wolf"), "mobs_mc_spawn_icon_wolf.png", 0) From 47cda09073edf8d0f2b403a82cc3ca6051787a05 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sat, 11 Apr 2020 02:46:03 +0200 Subject: [PATCH 636/737] Implement per-class mob cap --- mods/ENTITIES/mcl_mobs/api.lua | 70 ++++++++++++++----- mods/ENTITIES/mcl_mobs/api.txt | 2 + mods/ENTITIES/mobs_mc/agent.lua | 1 + mods/ENTITIES/mobs_mc/bat.lua | 1 + mods/ENTITIES/mobs_mc/blaze.lua | 1 + mods/ENTITIES/mobs_mc/chicken.lua | 1 + mods/ENTITIES/mobs_mc/cow+mooshroom.lua | 1 + mods/ENTITIES/mobs_mc/creeper.lua | 1 + mods/ENTITIES/mobs_mc/ender_dragon.lua | 1 + mods/ENTITIES/mobs_mc/enderman.lua | 1 + mods/ENTITIES/mobs_mc/endermite.lua | 1 + mods/ENTITIES/mobs_mc/ghast.lua | 1 + mods/ENTITIES/mobs_mc/guardian.lua | 1 + mods/ENTITIES/mobs_mc/guardian_elder.lua | 1 + mods/ENTITIES/mobs_mc/horse.lua | 1 + mods/ENTITIES/mobs_mc/iron_golem.lua | 1 + mods/ENTITIES/mobs_mc/llama.lua | 1 + mods/ENTITIES/mobs_mc/ocelot.lua | 1 + mods/ENTITIES/mobs_mc/parrot.lua | 1 + mods/ENTITIES/mobs_mc/pig.lua | 1 + mods/ENTITIES/mobs_mc/polar_bear.lua | 1 + mods/ENTITIES/mobs_mc/rabbit.lua | 2 + mods/ENTITIES/mobs_mc/sheep.lua | 1 + mods/ENTITIES/mobs_mc/shulker.lua | 1 + mods/ENTITIES/mobs_mc/silverfish.lua | 1 + mods/ENTITIES/mobs_mc/skeleton+stray.lua | 1 + mods/ENTITIES/mobs_mc/skeleton_wither.lua | 1 + mods/ENTITIES/mobs_mc/slime+magma_cube.lua | 2 + mods/ENTITIES/mobs_mc/snowman.lua | 1 + mods/ENTITIES/mobs_mc/spider.lua | 1 + mods/ENTITIES/mobs_mc/squid.lua | 1 + mods/ENTITIES/mobs_mc/vex.lua | 1 + mods/ENTITIES/mobs_mc/villager.lua | 1 + mods/ENTITIES/mobs_mc/villager_evoker.lua | 1 + mods/ENTITIES/mobs_mc/villager_illusioner.lua | 1 + mods/ENTITIES/mobs_mc/villager_vindicator.lua | 1 + mods/ENTITIES/mobs_mc/villager_zombie.lua | 1 + mods/ENTITIES/mobs_mc/witch.lua | 1 + mods/ENTITIES/mobs_mc/wither.lua | 1 + mods/ENTITIES/mobs_mc/wolf.lua | 1 + mods/ENTITIES/mobs_mc/zombie.lua | 1 + mods/ENTITIES/mobs_mc/zombiepig.lua | 1 + 42 files changed, 96 insertions(+), 18 deletions(-) diff --git a/mods/ENTITIES/mcl_mobs/api.lua b/mods/ENTITIES/mcl_mobs/api.lua index 055d01a2..8f455e9d 100644 --- a/mods/ENTITIES/mcl_mobs/api.lua +++ b/mods/ENTITIES/mcl_mobs/api.lua @@ -7,6 +7,12 @@ mobs.version = "20180531" -- don't rely too much on this, rarely updated, if eve local MAX_MOB_NAME_LENGTH = 30 +local MOB_CAP = {} +MOB_CAP.hostile = 70 +MOB_CAP.passive = 10 +MOB_CAP.ambient = 15 +MOB_CAP.water = 15 + -- Localize local S = minetest.get_translator("mcl_mobs") @@ -3369,6 +3375,7 @@ minetest.register_entity(name, { _cmi_is_mob = true, -- MCL2 extensions + spawn_class = def.spawn_class, ignores_nametag = def.ignores_nametag or false, rain_damage = def.rain_damage or 0, glow = def.glow, @@ -3413,33 +3420,48 @@ end -- END mobs:register_mob function -- count how many mobs of one type are inside an area -local count_mobs = function(pos, type) +local count_mobs = function(pos, mobtype) - local num_type = 0 - local num_total = 0 + local num = 0 local objs = minetest.get_objects_inside_radius(pos, aoc_range) for n = 1, #objs do - if not objs[n]:is_player() then + local obj = objs[n]:get_luaentity() - local obj = objs[n]:get_luaentity() + if obj and obj.name and obj._cmi_is_mob then - -- count mob type and add to total also - if obj and obj.name and obj.name == type then - - num_type = num_type + 1 - num_total = num_total + 1 - - -- add to total mobs - elseif obj and obj.name and obj.health ~= nil then - - num_total = num_total + 1 + -- count passive mobs only + if mobtype == "!passive" then + if obj.spawn_class == "passive" then + num = num + 1 + end + -- count hostile mobs only + elseif mobtype == "!hostile" then + if obj.spawn_class == "hostile" then + num = num + 1 + end + -- count ambient mobs only + elseif mobtype == "!ambient" then + if obj.spawn_class == "ambient" then + num = num + 1 + end + -- count water mobs only + elseif mobtype == "!water" then + if obj.spawn_class == "water" then + num = num + 1 + end + -- count mob type + elseif mobtype and obj.name == mobtype then + num = num + 1 + -- count total mobs + elseif not mobtype then + num = num + 1 end end end - return num_type, num_total + return num end @@ -3494,9 +3516,21 @@ function mobs:spawn_specific(name, nodes, neighbors, min_light, max_light, return end + -- count nearby mobs in same spawn class + local entdef = minetest.registered_entities[name] + local spawn_class = entdef and entdef.spawn_class + if not spawn_class then + if entdef.type == "monster" then + spawn_class = "hostile" + else + spawn_class = "passive" + end + end + local in_class_cap = count_mobs(pos, "!"..spawn_class) < MOB_CAP[spawn_class] -- do not spawn if too many of same mob in area - if active_object_count_wider >= max_per_block - or count_mobs(pos, name) >= aoc then + if active_object_count_wider >= max_per_block -- large-range mob cap + or (not in_class_cap) -- spawn class mob cap + or count_mobs(pos, name) >= aoc then -- per-mob mob cap -- too many entities minetest.log("info", "Mob spawn of "..name.." at "..minetest.pos_to_string(pos).." failed, too crowded!") return diff --git a/mods/ENTITIES/mcl_mobs/api.txt b/mods/ENTITIES/mcl_mobs/api.txt index 0b354224..17a6a8b0 100644 --- a/mods/ENTITIES/mcl_mobs/api.txt +++ b/mods/ENTITIES/mcl_mobs/api.txt @@ -226,6 +226,8 @@ functions needed for the mob to work properly which contains the following: MineClone 2 extensions: + 'spawn_class' Classification of mod for the spawning algorithm: + "hostile", "passive", "ambient" or "water" 'ignores_nametag' if true, mob cannot be named by nametag 'rain_damage' damage per second if mob is standing in rain (default: 0) 'sunlight_damage' holds the damage per second inflicted to mobs when they diff --git a/mods/ENTITIES/mobs_mc/agent.lua b/mods/ENTITIES/mobs_mc/agent.lua index 172698eb..8efcbd62 100644 --- a/mods/ENTITIES/mobs_mc/agent.lua +++ b/mods/ENTITIES/mobs_mc/agent.lua @@ -6,6 +6,7 @@ local S = minetest.get_translator("mobs_mc") mobs:register_mob("mobs_mc:agent", { type = "npc", + spawn_class = "passive", passive = true, hp_min = 20, hp_max = 20, diff --git a/mods/ENTITIES/mobs_mc/bat.lua b/mods/ENTITIES/mobs_mc/bat.lua index a4b54bb9..2d071914 100644 --- a/mods/ENTITIES/mobs_mc/bat.lua +++ b/mods/ENTITIES/mobs_mc/bat.lua @@ -4,6 +4,7 @@ local S = minetest.get_translator("mobs_mc") mobs:register_mob("mobs_mc:bat", { type = "animal", + spawn_class = "ambient", can_despawn = true, passive = true, hp_min = 6, diff --git a/mods/ENTITIES/mobs_mc/blaze.lua b/mods/ENTITIES/mobs_mc/blaze.lua index adf5238c..967dbb05 100644 --- a/mods/ENTITIES/mobs_mc/blaze.lua +++ b/mods/ENTITIES/mobs_mc/blaze.lua @@ -12,6 +12,7 @@ local S = minetest.get_translator("mobs_mc") mobs:register_mob("mobs_mc:blaze", { type = "monster", + spawn_class = "hostile", hp_min = 20, hp_max = 20, collisionbox = {-0.3, -0.01, -0.3, 0.3, 1.79, 0.3}, diff --git a/mods/ENTITIES/mobs_mc/chicken.lua b/mods/ENTITIES/mobs_mc/chicken.lua index de1773c0..c4e2707c 100644 --- a/mods/ENTITIES/mobs_mc/chicken.lua +++ b/mods/ENTITIES/mobs_mc/chicken.lua @@ -10,6 +10,7 @@ local S = minetest.get_translator("mobs_mc") mobs:register_mob("mobs_mc:chicken", { type = "animal", + spawn_class = "passive", hp_min = 4, hp_max = 4, diff --git a/mods/ENTITIES/mobs_mc/cow+mooshroom.lua b/mods/ENTITIES/mobs_mc/cow+mooshroom.lua index 14256987..542b5615 100644 --- a/mods/ENTITIES/mobs_mc/cow+mooshroom.lua +++ b/mods/ENTITIES/mobs_mc/cow+mooshroom.lua @@ -4,6 +4,7 @@ local S = minetest.get_translator("mobs_mc") local cow_def = { type = "animal", + spawn_class = "passive", hp_min = 10, hp_max = 10, collisionbox = {-0.45, -0.01, -0.45, 0.45, 1.39, 0.45}, diff --git a/mods/ENTITIES/mobs_mc/creeper.lua b/mods/ENTITIES/mobs_mc/creeper.lua index 7add39b3..4995fa6b 100644 --- a/mods/ENTITIES/mobs_mc/creeper.lua +++ b/mods/ENTITIES/mobs_mc/creeper.lua @@ -11,6 +11,7 @@ local S = minetest.get_translator("mobs_mc") mobs:register_mob("mobs_mc:creeper", { type = "monster", + spawn_class = "hostile", hp_min = 20, hp_max = 20, collisionbox = {-0.3, -0.01, -0.3, 0.3, 1.69, 0.3}, diff --git a/mods/ENTITIES/mobs_mc/ender_dragon.lua b/mods/ENTITIES/mobs_mc/ender_dragon.lua index de4a2a59..c9da0c49 100644 --- a/mods/ENTITIES/mobs_mc/ender_dragon.lua +++ b/mods/ENTITIES/mobs_mc/ender_dragon.lua @@ -6,6 +6,7 @@ local S = minetest.get_translator("mobs_mc") mobs:register_mob("mobs_mc:enderdragon", { type = "monster", + spawn_class = "hostile", pathfinding = 1, attacks_animals = true, walk_chance = 100, diff --git a/mods/ENTITIES/mobs_mc/enderman.lua b/mods/ENTITIES/mobs_mc/enderman.lua index 467fb290..71dcb99e 100644 --- a/mods/ENTITIES/mobs_mc/enderman.lua +++ b/mods/ENTITIES/mobs_mc/enderman.lua @@ -168,6 +168,7 @@ local mobs_griefing = minetest.settings:get_bool("mobs_griefing") ~= false mobs:register_mob("mobs_mc:enderman", { -- TODO: Endermen should be classified as passive type = "monster", + spawn_class = "passive", passive = false, pathfinding = 1, hp_min = 40, diff --git a/mods/ENTITIES/mobs_mc/endermite.lua b/mods/ENTITIES/mobs_mc/endermite.lua index 5a9793cd..3fb0c1eb 100644 --- a/mods/ENTITIES/mobs_mc/endermite.lua +++ b/mods/ENTITIES/mobs_mc/endermite.lua @@ -6,6 +6,7 @@ local S = minetest.get_translator("mobs_mc") mobs:register_mob("mobs_mc:endermite", { type = "monster", + spawn_class = "hostile", passive = false, hp_min = 8, hp_max = 8, diff --git a/mods/ENTITIES/mobs_mc/ghast.lua b/mods/ENTITIES/mobs_mc/ghast.lua index ae480bc7..cc06155f 100644 --- a/mods/ENTITIES/mobs_mc/ghast.lua +++ b/mods/ENTITIES/mobs_mc/ghast.lua @@ -12,6 +12,7 @@ local S = minetest.get_translator("mobs_mc") mobs:register_mob("mobs_mc:ghast", { type = "monster", + spawn_class = "hostile", pathfinding = 1, group_attack = true, hp_min = 10, diff --git a/mods/ENTITIES/mobs_mc/guardian.lua b/mods/ENTITIES/mobs_mc/guardian.lua index 7db14198..42742db8 100644 --- a/mods/ENTITIES/mobs_mc/guardian.lua +++ b/mods/ENTITIES/mobs_mc/guardian.lua @@ -8,6 +8,7 @@ local S = minetest.get_translator("mobs_mc") mobs:register_mob("mobs_mc:guardian", { type = "monster", + spawn_class = "hostile", hp_min = 30, hp_max = 30, breath_max = -1, diff --git a/mods/ENTITIES/mobs_mc/guardian_elder.lua b/mods/ENTITIES/mobs_mc/guardian_elder.lua index 7d955e39..93792a5d 100644 --- a/mods/ENTITIES/mobs_mc/guardian_elder.lua +++ b/mods/ENTITIES/mobs_mc/guardian_elder.lua @@ -8,6 +8,7 @@ local S = minetest.get_translator("mobs_mc") mobs:register_mob("mobs_mc:guardian_elder", { type = "monster", + spawn_class = "hostile", hp_min = 80, hp_max = 80, breath_max = -1, diff --git a/mods/ENTITIES/mobs_mc/horse.lua b/mods/ENTITIES/mobs_mc/horse.lua index d5123edd..56495080 100644 --- a/mods/ENTITIES/mobs_mc/horse.lua +++ b/mods/ENTITIES/mobs_mc/horse.lua @@ -84,6 +84,7 @@ end -- Horse local horse = { type = "animal", + spawn_class = "passive", visual = "mesh", mesh = "mobs_mc_horse.b3d", visual_size = {x=3.0, y=3.0}, diff --git a/mods/ENTITIES/mobs_mc/iron_golem.lua b/mods/ENTITIES/mobs_mc/iron_golem.lua index 046c655a..49a14c2c 100644 --- a/mods/ENTITIES/mobs_mc/iron_golem.lua +++ b/mods/ENTITIES/mobs_mc/iron_golem.lua @@ -13,6 +13,7 @@ local S = minetest.get_translator("mobs_mc") mobs:register_mob("mobs_mc:iron_golem", { type = "npc", + spawn_class = "passive", passive = true, hp_min = 100, hp_max = 100, diff --git a/mods/ENTITIES/mobs_mc/llama.lua b/mods/ENTITIES/mobs_mc/llama.lua index 49183980..3b75e57a 100644 --- a/mods/ENTITIES/mobs_mc/llama.lua +++ b/mods/ENTITIES/mobs_mc/llama.lua @@ -26,6 +26,7 @@ local carpets = { mobs:register_mob("mobs_mc:llama", { type = "animal", + spawn_class = "passive", hp_min = 15, hp_max = 30, passive = false, diff --git a/mods/ENTITIES/mobs_mc/ocelot.lua b/mods/ENTITIES/mobs_mc/ocelot.lua index f57a4e4a..31d319f8 100644 --- a/mods/ENTITIES/mobs_mc/ocelot.lua +++ b/mods/ENTITIES/mobs_mc/ocelot.lua @@ -28,6 +28,7 @@ end -- Ocelot local ocelot = { type = "animal", + spawn_class = "passive", can_despawn = true, hp_min = 10, hp_max = 10, diff --git a/mods/ENTITIES/mobs_mc/parrot.lua b/mods/ENTITIES/mobs_mc/parrot.lua index 42006d8c..4cee41d1 100644 --- a/mods/ENTITIES/mobs_mc/parrot.lua +++ b/mods/ENTITIES/mobs_mc/parrot.lua @@ -13,6 +13,7 @@ local S = minetest.get_translator("mobs_mc") mobs:register_mob("mobs_mc:parrot", { type = "npc", + spawn_class = "passive", pathfinding = 1, hp_min = 6, hp_max = 6, diff --git a/mods/ENTITIES/mobs_mc/pig.lua b/mods/ENTITIES/mobs_mc/pig.lua index 415c9094..921eb91f 100644 --- a/mods/ENTITIES/mobs_mc/pig.lua +++ b/mods/ENTITIES/mobs_mc/pig.lua @@ -4,6 +4,7 @@ local S = minetest.get_translator("mobs_mc") mobs:register_mob("mobs_mc:pig", { type = "animal", + spawn_class = "passive", runaway = true, hp_min = 10, hp_max = 10, diff --git a/mods/ENTITIES/mobs_mc/polar_bear.lua b/mods/ENTITIES/mobs_mc/polar_bear.lua index c6f0d584..b4e2e34f 100644 --- a/mods/ENTITIES/mobs_mc/polar_bear.lua +++ b/mods/ENTITIES/mobs_mc/polar_bear.lua @@ -9,6 +9,7 @@ local S = minetest.get_translator("mobs_mc") mobs:register_mob("mobs_mc:polar_bear", { type = "animal", + spawn_class = "passive", runaway = false, passive = false, hp_min = 30, diff --git a/mods/ENTITIES/mobs_mc/rabbit.lua b/mods/ENTITIES/mobs_mc/rabbit.lua index 5a0f58c1..a7c05315 100644 --- a/mods/ENTITIES/mobs_mc/rabbit.lua +++ b/mods/ENTITIES/mobs_mc/rabbit.lua @@ -4,6 +4,7 @@ local S = minetest.get_translator("mobs_mc") local rabbit = { type = "animal", + spawn_class = "passive", passive = true, reach = 1, @@ -74,6 +75,7 @@ mobs:register_mob("mobs_mc:rabbit", rabbit) -- The killer bunny (Only with spawn egg) local killer_bunny = table.copy(rabbit) killer_bunny.type = "monster" +killer_bunny.spawn_class = "hostile" killer_bunny.attack_type = "dogfight" killer_bunny.specific_attack = { "player", "mobs_mc:wolf", "mobs_mc:dog" } killer_bunny.damage = 8 diff --git a/mods/ENTITIES/mobs_mc/sheep.lua b/mods/ENTITIES/mobs_mc/sheep.lua index 1747d3ca..2982580d 100644 --- a/mods/ENTITIES/mobs_mc/sheep.lua +++ b/mods/ENTITIES/mobs_mc/sheep.lua @@ -44,6 +44,7 @@ local gotten_texture = { "blank.png", "mobs_mc_sheep.png" } --mcsheep mobs:register_mob("mobs_mc:sheep", { type = "animal", + spawn_class = "passive", hp_min = 8, hp_max = 8, diff --git a/mods/ENTITIES/mobs_mc/shulker.lua b/mods/ENTITIES/mobs_mc/shulker.lua index 0a06fe89..ead105d2 100644 --- a/mods/ENTITIES/mobs_mc/shulker.lua +++ b/mods/ENTITIES/mobs_mc/shulker.lua @@ -13,6 +13,7 @@ local S = minetest.get_translator("mobs_mc") mobs:register_mob("mobs_mc:shulker", { type = "monster", + spawn_class = "hostile", attack_type = "shoot", shoot_interval = 0.5, arrow = "mobs_mc:shulkerbullet", diff --git a/mods/ENTITIES/mobs_mc/silverfish.lua b/mods/ENTITIES/mobs_mc/silverfish.lua index f2c11198..a6baf1e4 100644 --- a/mods/ENTITIES/mobs_mc/silverfish.lua +++ b/mods/ENTITIES/mobs_mc/silverfish.lua @@ -6,6 +6,7 @@ local S = minetest.get_translator("mobs_mc") mobs:register_mob("mobs_mc:silverfish", { type = "monster", + spawn_class = "hostile", passive = false, group_attack = true, reach = 1, diff --git a/mods/ENTITIES/mobs_mc/skeleton+stray.lua b/mods/ENTITIES/mobs_mc/skeleton+stray.lua index 0530f8b6..5d06b812 100644 --- a/mods/ENTITIES/mobs_mc/skeleton+stray.lua +++ b/mods/ENTITIES/mobs_mc/skeleton+stray.lua @@ -14,6 +14,7 @@ local mod_bows = minetest.get_modpath("mcl_bows") ~= nil local skeleton = { type = "monster", + spawn_class = "hostile", hp_min = 20, hp_max = 20, breath_max = -1, diff --git a/mods/ENTITIES/mobs_mc/skeleton_wither.lua b/mods/ENTITIES/mobs_mc/skeleton_wither.lua index 896df69a..8af94a85 100644 --- a/mods/ENTITIES/mobs_mc/skeleton_wither.lua +++ b/mods/ENTITIES/mobs_mc/skeleton_wither.lua @@ -11,6 +11,7 @@ local S = minetest.get_translator("mobs_mc") mobs:register_mob("mobs_mc:witherskeleton", { type = "monster", + spawn_class = "hostile", hp_min = 20, hp_max = 20, breath_max = -1, diff --git a/mods/ENTITIES/mobs_mc/slime+magma_cube.lua b/mods/ENTITIES/mobs_mc/slime+magma_cube.lua index 58a15d03..236e2277 100644 --- a/mods/ENTITIES/mobs_mc/slime+magma_cube.lua +++ b/mods/ENTITIES/mobs_mc/slime+magma_cube.lua @@ -57,6 +57,7 @@ end -- Slime local slime_big = { type = "monster", + spawn_class = "hostile", pathfinding = 1, group_attack = { "mobs_mc:slime_big", "mobs_mc:slime_small", "mobs_mc:slime_tiny" }, hp_min = 16, @@ -156,6 +157,7 @@ mobs:spawn_specific("mobs_mc:slime_big", mobs_mc.spawn.solid, {"air"}, 0, minete -- Magma cube local magma_cube_big = { type = "monster", + spawn_class = "hostile", hp_min = 16, hp_max = 16, collisionbox = {-1.02, -0.01, -1.02, 1.02, 2.03, 1.02}, diff --git a/mods/ENTITIES/mobs_mc/snowman.lua b/mods/ENTITIES/mobs_mc/snowman.lua index d645d6b2..f0cab4df 100644 --- a/mods/ENTITIES/mobs_mc/snowman.lua +++ b/mods/ENTITIES/mobs_mc/snowman.lua @@ -22,6 +22,7 @@ local gotten_texture = { mobs:register_mob("mobs_mc:snowman", { type = "npc", + spawn_class = "passive", passive = true, hp_min = 4, hp_max = 4, diff --git a/mods/ENTITIES/mobs_mc/spider.lua b/mods/ENTITIES/mobs_mc/spider.lua index eda2e37b..5dbff6af 100644 --- a/mods/ENTITIES/mobs_mc/spider.lua +++ b/mods/ENTITIES/mobs_mc/spider.lua @@ -14,6 +14,7 @@ local S = minetest.get_translator("mobs_mc") local spider = { type = "monster", + spawn_class = "hostile", passive = false, docile_by_day = true, attack_type = "dogfight", diff --git a/mods/ENTITIES/mobs_mc/squid.lua b/mods/ENTITIES/mobs_mc/squid.lua index ddbabe0a..a43bade3 100644 --- a/mods/ENTITIES/mobs_mc/squid.lua +++ b/mods/ENTITIES/mobs_mc/squid.lua @@ -8,6 +8,7 @@ local S = minetest.get_translator("mobs_mc") mobs:register_mob("mobs_mc:squid", { type = "animal", + spawn_class = "water", can_despawn = true, passive = true, hp_min = 10, diff --git a/mods/ENTITIES/mobs_mc/vex.lua b/mods/ENTITIES/mobs_mc/vex.lua index fc8b45dc..ec0f5622 100644 --- a/mods/ENTITIES/mobs_mc/vex.lua +++ b/mods/ENTITIES/mobs_mc/vex.lua @@ -11,6 +11,7 @@ local S = minetest.get_translator("mobs_mc") mobs:register_mob("mobs_mc:vex", { type = "monster", + spawn_class = "hostile", pathfinding = 1, passive = false, attack_type = "dogfight", diff --git a/mods/ENTITIES/mobs_mc/villager.lua b/mods/ENTITIES/mobs_mc/villager.lua index 6432a87a..39fabe9f 100644 --- a/mods/ENTITIES/mobs_mc/villager.lua +++ b/mods/ENTITIES/mobs_mc/villager.lua @@ -908,6 +908,7 @@ end) mobs:register_mob("mobs_mc:villager", { type = "npc", + spawn_class = "passive", hp_min = 20, hp_max = 20, collisionbox = {-0.3, -0.01, -0.3, 0.3, 1.94, 0.3}, diff --git a/mods/ENTITIES/mobs_mc/villager_evoker.lua b/mods/ENTITIES/mobs_mc/villager_evoker.lua index 7bb48e72..3fc22e1d 100644 --- a/mods/ENTITIES/mobs_mc/villager_evoker.lua +++ b/mods/ENTITIES/mobs_mc/villager_evoker.lua @@ -13,6 +13,7 @@ local pr = PseudoRandom(os.time()*666) mobs:register_mob("mobs_mc:evoker", { type = "monster", + spawn_class = "hostile", physical = true, pathfinding = 1, hp_min = 24, diff --git a/mods/ENTITIES/mobs_mc/villager_illusioner.lua b/mods/ENTITIES/mobs_mc/villager_illusioner.lua index 9c0429ec..4ead33e2 100644 --- a/mods/ENTITIES/mobs_mc/villager_illusioner.lua +++ b/mods/ENTITIES/mobs_mc/villager_illusioner.lua @@ -8,6 +8,7 @@ local mod_bows = minetest.get_modpath("mcl_bows") ~= nil mobs:register_mob("mobs_mc:illusioner", { type = "monster", + spawn_class = "hostile", attack_type = "shoot", shoot_interval = 2.5, shoot_offset = 1.5, diff --git a/mods/ENTITIES/mobs_mc/villager_vindicator.lua b/mods/ENTITIES/mobs_mc/villager_vindicator.lua index a228aa56..2155d511 100644 --- a/mods/ENTITIES/mobs_mc/villager_vindicator.lua +++ b/mods/ENTITIES/mobs_mc/villager_vindicator.lua @@ -12,6 +12,7 @@ local S = minetest.get_translator("mobs_mc") mobs:register_mob("mobs_mc:vindicator", { type = "monster", + spawn_class = "hostile", physical = false, pathfinding = 1, hp_min = 24, diff --git a/mods/ENTITIES/mobs_mc/villager_zombie.lua b/mods/ENTITIES/mobs_mc/villager_zombie.lua index bc974277..b5f6cd83 100644 --- a/mods/ENTITIES/mobs_mc/villager_zombie.lua +++ b/mods/ENTITIES/mobs_mc/villager_zombie.lua @@ -14,6 +14,7 @@ local S = minetest.get_translator("mobs_mc") mobs:register_mob("mobs_mc:villager_zombie", { type = "monster", + spawn_class = "hostile", hp_min = 20, hp_max = 20, breath_max = -1, diff --git a/mods/ENTITIES/mobs_mc/witch.lua b/mods/ENTITIES/mobs_mc/witch.lua index 58d745b0..07673879 100644 --- a/mods/ENTITIES/mobs_mc/witch.lua +++ b/mods/ENTITIES/mobs_mc/witch.lua @@ -14,6 +14,7 @@ local S = minetest.get_translator("mobs_mc") mobs:register_mob("mobs_mc:witch", { type = "monster", + spawn_class = "hostile", hp_min = 26, hp_max = 26, collisionbox = {-0.3, -0.01, -0.3, 0.3, 1.94, 0.3}, diff --git a/mods/ENTITIES/mobs_mc/wither.lua b/mods/ENTITIES/mobs_mc/wither.lua index 19d2386b..7686efc9 100644 --- a/mods/ENTITIES/mobs_mc/wither.lua +++ b/mods/ENTITIES/mobs_mc/wither.lua @@ -11,6 +11,7 @@ local S = minetest.get_translator("mobs_mc") mobs:register_mob("mobs_mc:wither", { type = "monster", + spawn_class = "hostile", hp_max = 300, hp_min = 300, armor = 80, diff --git a/mods/ENTITIES/mobs_mc/wolf.lua b/mods/ENTITIES/mobs_mc/wolf.lua index 3dc12e1f..37bfc5fe 100644 --- a/mods/ENTITIES/mobs_mc/wolf.lua +++ b/mods/ENTITIES/mobs_mc/wolf.lua @@ -20,6 +20,7 @@ end -- Wolf local wolf = { type = "animal", + spawn_class = "passive", can_despawn = true, hp_min = 8, hp_max = 8, diff --git a/mods/ENTITIES/mobs_mc/zombie.lua b/mods/ENTITIES/mobs_mc/zombie.lua index c67e73c3..6e55d6e8 100644 --- a/mods/ENTITIES/mobs_mc/zombie.lua +++ b/mods/ENTITIES/mobs_mc/zombie.lua @@ -40,6 +40,7 @@ table.insert(drops_zombie, { local zombie = { type = "monster", + spawn_class = "hostile", hp_min = 20, hp_max = 20, breath_max = -1, diff --git a/mods/ENTITIES/mobs_mc/zombiepig.lua b/mods/ENTITIES/mobs_mc/zombiepig.lua index 2f2aeede..777f2386 100644 --- a/mods/ENTITIES/mobs_mc/zombiepig.lua +++ b/mods/ENTITIES/mobs_mc/zombiepig.lua @@ -14,6 +14,7 @@ local pigman = { -- type="animal", passive=false: This combination is needed for a neutral mob which becomes hostile, if attacked type = "animal", passive = false, + spawn_class = "passive", hp_min = 20, hp_max = 20, breath_max = -1, From a2785041dde20c23a9d53a516accb1b0cbd26f83 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sat, 11 Apr 2020 02:50:46 +0200 Subject: [PATCH 637/737] Remove mod startup debug messages --- mods/ENTITIES/mcl_item_entity/init.lua | 4 ---- mods/ENTITIES/mcl_mobs/init.lua | 2 -- mods/ENTITIES/mobs_mc/2_throwing.lua | 4 ---- mods/ENTITIES/mobs_mc/agent.lua | 4 ---- mods/ENTITIES/mobs_mc/bat.lua | 5 ----- mods/ENTITIES/mobs_mc/blaze.lua | 9 --------- mods/ENTITIES/mobs_mc/chicken.lua | 4 ---- mods/ENTITIES/mobs_mc/cow+mooshroom.lua | 4 ---- mods/ENTITIES/mobs_mc/creeper.lua | 4 ---- mods/ENTITIES/mobs_mc/enderman.lua | 6 ------ mods/ENTITIES/mobs_mc/ghast.lua | 4 ---- mods/ENTITIES/mobs_mc/horse.lua | 5 ----- mods/ENTITIES/mobs_mc/init.lua | 4 ---- mods/ENTITIES/mobs_mc/iron_golem.lua | 4 ---- mods/ENTITIES/mobs_mc/llama.lua | 4 ---- mods/ENTITIES/mobs_mc/ocelot.lua | 4 ---- mods/ENTITIES/mobs_mc/parrot.lua | 4 ---- mods/ENTITIES/mobs_mc/pig.lua | 5 ----- mods/ENTITIES/mobs_mc/polar_bear.lua | 5 ----- mods/ENTITIES/mobs_mc/rabbit.lua | 5 ----- mods/ENTITIES/mobs_mc/sheep.lua | 4 ---- mods/ENTITIES/mobs_mc/shulker.lua | 4 ---- mods/ENTITIES/mobs_mc/skeleton+stray.lua | 4 ---- mods/ENTITIES/mobs_mc/skeleton_wither.lua | 4 ---- mods/ENTITIES/mobs_mc/slime+magma_cube.lua | 5 ----- mods/ENTITIES/mobs_mc/snowman.lua | 4 ---- mods/ENTITIES/mobs_mc/spider.lua | 4 ---- mods/ENTITIES/mobs_mc/vex.lua | 5 ----- mods/ENTITIES/mobs_mc/villager.lua | 4 ---- mods/ENTITIES/mobs_mc/villager_evoker.lua | 5 ----- mods/ENTITIES/mobs_mc/villager_illusioner.lua | 4 ---- mods/ENTITIES/mobs_mc/villager_vindicator.lua | 4 ---- mods/ENTITIES/mobs_mc/villager_zombie.lua | 4 ---- mods/ENTITIES/mobs_mc/witch.lua | 4 ---- mods/ENTITIES/mobs_mc/wolf.lua | 4 ---- mods/ENTITIES/mobs_mc/zombie.lua | 4 ---- mods/ENTITIES/mobs_mc/zombiepig.lua | 4 ---- mods/ITEMS/REDSTONE/mesecons/init.lua | 3 --- mods/ITEMS/mcl_colorblocks/init.lua | 4 ---- mods/ITEMS/mcl_doors/init.lua | 5 ----- mods/ITEMS/mcl_farming/init.lua | 4 ---- mods/ITEMS/mcl_fences/init.lua | 7 ------- mods/ITEMS/mcl_flowers/init.lua | 8 -------- mods/ITEMS/mcl_signs/init.lua | 4 ---- mods/MAPGEN/mcl_structures/init.lua | 4 ---- 45 files changed, 200 deletions(-) diff --git a/mods/ENTITIES/mcl_item_entity/init.lua b/mods/ENTITIES/mcl_item_entity/init.lua index 7e2d0858..7e10babc 100644 --- a/mods/ENTITIES/mcl_item_entity/init.lua +++ b/mods/ENTITIES/mcl_item_entity/init.lua @@ -701,7 +701,3 @@ minetest.register_entity(":__builtin:item", { -- Note: on_punch intentionally left out. The player should *not* be able to collect items by punching }) - -if minetest.settings:get_bool("log_mods") then - minetest.log("action", "mcl_item_entity loaded") -end diff --git a/mods/ENTITIES/mcl_mobs/init.lua b/mods/ENTITIES/mcl_mobs/init.lua index 87e7c19b..c2d6cb21 100644 --- a/mods/ENTITIES/mcl_mobs/init.lua +++ b/mods/ENTITIES/mcl_mobs/init.lua @@ -9,5 +9,3 @@ dofile(path .. "/mount.lua") -- Mob Items dofile(path .. "/crafts.lua") - -minetest.log("action", "[MOD] Mobs Redo: MineClone 2 Edition loaded") diff --git a/mods/ENTITIES/mobs_mc/2_throwing.lua b/mods/ENTITIES/mobs_mc/2_throwing.lua index e28d728f..089e39ca 100644 --- a/mods/ENTITIES/mobs_mc/2_throwing.lua +++ b/mods/ENTITIES/mobs_mc/2_throwing.lua @@ -399,7 +399,3 @@ if c("snowball") then end --end maikerumine code - -if minetest.settings:get_bool("log_mods") then - minetest.log("action", "MC mobs loaded") -end diff --git a/mods/ENTITIES/mobs_mc/agent.lua b/mods/ENTITIES/mobs_mc/agent.lua index 8efcbd62..8fa7314c 100644 --- a/mods/ENTITIES/mobs_mc/agent.lua +++ b/mods/ENTITIES/mobs_mc/agent.lua @@ -37,7 +37,3 @@ mobs:register_mob("mobs_mc:agent", { }) mobs:register_egg("mobs_mc:agent", S("Agent"), "mobs_mc_spawn_icon_agent.png", 0) - -if minetest.settings:get_bool("log_mods") then - minetest.log("action", "MC Agent loaded") -end diff --git a/mods/ENTITIES/mobs_mc/bat.lua b/mods/ENTITIES/mobs_mc/bat.lua index 2d071914..be0d72e8 100644 --- a/mods/ENTITIES/mobs_mc/bat.lua +++ b/mods/ENTITIES/mobs_mc/bat.lua @@ -66,8 +66,3 @@ mobs:spawn_specific("mobs_mc:bat", mobs_mc.spawn.solid, {"air"}, 0, maxlight, 20 -- spawn eggs mobs:register_egg("mobs_mc:bat", S("Bat"), "mobs_mc_spawn_icon_bat.png", 0) - - -if minetest.settings:get_bool("log_mods") then - minetest.log("action", "MC Bat loaded") -end diff --git a/mods/ENTITIES/mobs_mc/blaze.lua b/mods/ENTITIES/mobs_mc/blaze.lua index 967dbb05..8231148e 100644 --- a/mods/ENTITIES/mobs_mc/blaze.lua +++ b/mods/ENTITIES/mobs_mc/blaze.lua @@ -125,12 +125,3 @@ mobs:register_arrow("mobs_mc:blaze_fireball", { -- spawn eggs mobs:register_egg("mobs_mc:blaze", S("Blaze"), "mobs_mc_spawn_icon_blaze.png", 0) - - - - - - -if minetest.settings:get_bool("log_mods") then - minetest.log("action", "MC Blaze loaded") -end diff --git a/mods/ENTITIES/mobs_mc/chicken.lua b/mods/ENTITIES/mobs_mc/chicken.lua index c4e2707c..d0c9c7c7 100644 --- a/mods/ENTITIES/mobs_mc/chicken.lua +++ b/mods/ENTITIES/mobs_mc/chicken.lua @@ -97,7 +97,3 @@ mobs:spawn_specific("mobs_mc:chicken", mobs_mc.spawn.grassland, {"air"}, 9, mine -- spawn eggs mobs:register_egg("mobs_mc:chicken", S("Chicken"), "mobs_mc_spawn_icon_chicken.png", 0) - -if minetest.settings:get_bool("log_mods") then - minetest.log("action", "MC chicken loaded") -end diff --git a/mods/ENTITIES/mobs_mc/cow+mooshroom.lua b/mods/ENTITIES/mobs_mc/cow+mooshroom.lua index 542b5615..58d2cd58 100644 --- a/mods/ENTITIES/mobs_mc/cow+mooshroom.lua +++ b/mods/ENTITIES/mobs_mc/cow+mooshroom.lua @@ -142,7 +142,3 @@ mobs:spawn_specific("mobs_mc:mooshroom", mobs_mc.spawn.mushroom_island, {"air"}, -- spawn egg mobs:register_egg("mobs_mc:cow", S("Cow"), "mobs_mc_spawn_icon_cow.png", 0) mobs:register_egg("mobs_mc:mooshroom", S("Mooshroom"), "mobs_mc_spawn_icon_mooshroom.png", 0) - -if minetest.settings:get_bool("log_mods") then - minetest.log("action", "MC Cow loaded") -end diff --git a/mods/ENTITIES/mobs_mc/creeper.lua b/mods/ENTITIES/mobs_mc/creeper.lua index 4995fa6b..b8afb88e 100644 --- a/mods/ENTITIES/mobs_mc/creeper.lua +++ b/mods/ENTITIES/mobs_mc/creeper.lua @@ -123,7 +123,3 @@ mobs:spawn_specific("mobs_mc:creeper", mobs_mc.spawn.solid, {"air"}, 0, 7, 20, 1 -- spawn eggs mobs:register_egg("mobs_mc:creeper", S("Creeper"), "mobs_mc_spawn_icon_creeper.png", 0) - -if minetest.settings:get_bool("log_mods") then - minetest.log("action", "MC Creeper loaded") -end diff --git a/mods/ENTITIES/mobs_mc/enderman.lua b/mods/ENTITIES/mobs_mc/enderman.lua index 71dcb99e..c159c92f 100644 --- a/mods/ENTITIES/mobs_mc/enderman.lua +++ b/mods/ENTITIES/mobs_mc/enderman.lua @@ -337,9 +337,3 @@ mobs:spawn_specific("mobs_mc:enderman", mobs_mc.spawn.solid, {"air"}, 0, 7, 30, -- spawn eggs mobs:register_egg("mobs_mc:enderman", S("Enderman"), "mobs_mc_spawn_icon_enderman.png", 0) - -if minetest.settings:get_bool("log_mods") then - - minetest.log("action", "MC Enderman loaded") -end - diff --git a/mods/ENTITIES/mobs_mc/ghast.lua b/mods/ENTITIES/mobs_mc/ghast.lua index cc06155f..08fbb99f 100644 --- a/mods/ENTITIES/mobs_mc/ghast.lua +++ b/mods/ENTITIES/mobs_mc/ghast.lua @@ -107,7 +107,3 @@ mobs:register_arrow("mobs_mc:fireball", { -- spawn eggs mobs:register_egg("mobs_mc:ghast", S("Ghast"), "mobs_mc_spawn_icon_ghast.png", 0) - -if minetest.settings:get_bool("log_mods") then - minetest.log("action", "MC Ghast loaded") -end diff --git a/mods/ENTITIES/mobs_mc/horse.lua b/mods/ENTITIES/mobs_mc/horse.lua index 56495080..664a1ca8 100644 --- a/mods/ENTITIES/mobs_mc/horse.lua +++ b/mods/ENTITIES/mobs_mc/horse.lua @@ -435,8 +435,3 @@ mobs:register_egg("mobs_mc:skeleton_horse", S("Skeleton Horse"), "mobs_mc_spawn_ mobs:register_egg("mobs_mc:zombie_horse", S("Zombie Horse"), "mobs_mc_spawn_icon_horse_zombie.png", 0) mobs:register_egg("mobs_mc:donkey", S("Donkey"), "mobs_mc_spawn_icon_donkey.png", 0) mobs:register_egg("mobs_mc:mule", S("Mule"), "mobs_mc_spawn_icon_mule.png", 0) - - -if minetest.settings:get_bool("log_mods") then - minetest.log("action", "MC Horse loaded") -end diff --git a/mods/ENTITIES/mobs_mc/init.lua b/mods/ENTITIES/mobs_mc/init.lua index 3206c0ba..58006fe9 100644 --- a/mods/ENTITIES/mobs_mc/init.lua +++ b/mods/ENTITIES/mobs_mc/init.lua @@ -98,7 +98,3 @@ COLISIONBOX in minetest press f5 to see where you are looking at then put these --]] -- -- - -if minetest.settings:get_bool("log_mods") then - minetest.log("action", "[MOD] mobs_mc loaded") -end diff --git a/mods/ENTITIES/mobs_mc/iron_golem.lua b/mods/ENTITIES/mobs_mc/iron_golem.lua index 49a14c2c..2ccee2d0 100644 --- a/mods/ENTITIES/mobs_mc/iron_golem.lua +++ b/mods/ENTITIES/mobs_mc/iron_golem.lua @@ -173,7 +173,3 @@ mobs_mc.tools.check_iron_golem_summon = function(pos) end end end - -if minetest.settings:get_bool("log_mods") then - minetest.log("action", "MC Iron Golem loaded") -end diff --git a/mods/ENTITIES/mobs_mc/llama.lua b/mods/ENTITIES/mobs_mc/llama.lua index 3b75e57a..dd2d85a3 100644 --- a/mods/ENTITIES/mobs_mc/llama.lua +++ b/mods/ENTITIES/mobs_mc/llama.lua @@ -213,7 +213,3 @@ mobs:spawn_specific("mobs_mc:llama", mobs_mc.spawn.savanna, {"air"}, 0, minetest -- spawn eggs mobs:register_egg("mobs_mc:llama", S("Llama"), "mobs_mc_spawn_icon_llama.png", 0) - -if minetest.settings:get_bool("log_mods") then - minetest.log("action", "MC Llama loaded") -end diff --git a/mods/ENTITIES/mobs_mc/ocelot.lua b/mods/ENTITIES/mobs_mc/ocelot.lua index 31d319f8..5a9525a0 100644 --- a/mods/ENTITIES/mobs_mc/ocelot.lua +++ b/mods/ENTITIES/mobs_mc/ocelot.lua @@ -205,7 +205,3 @@ mobs:spawn({ -- spawn eggs -- FIXME: The spawn icon shows a cat texture, not an ocelot texture mobs:register_egg("mobs_mc:ocelot", S("Ocelot"), "mobs_mc_spawn_icon_cat.png", 0) - -if minetest.settings:get_bool("log_mods") then - minetest.log("action", "MC Ocelot loaded") -end diff --git a/mods/ENTITIES/mobs_mc/parrot.lua b/mods/ENTITIES/mobs_mc/parrot.lua index 4cee41d1..080bddd4 100644 --- a/mods/ENTITIES/mobs_mc/parrot.lua +++ b/mods/ENTITIES/mobs_mc/parrot.lua @@ -86,7 +86,3 @@ mobs:register_mob("mobs_mc:parrot", { -- spawn eggs mobs:register_egg("mobs_mc:parrot", S("Parrot"), "mobs_mc_spawn_icon_parrot.png", 0, true) - -if minetest.settings:get_bool("log_mods") then - minetest.log("action", "MC Parrot loaded") -end diff --git a/mods/ENTITIES/mobs_mc/pig.lua b/mods/ENTITIES/mobs_mc/pig.lua index 921eb91f..05e6a085 100644 --- a/mods/ENTITIES/mobs_mc/pig.lua +++ b/mods/ENTITIES/mobs_mc/pig.lua @@ -182,8 +182,3 @@ mobs:spawn_specific("mobs_mc:pig", mobs_mc.spawn.grassland, {"air"}, 9, minetest -- spawn eggs mobs:register_egg("mobs_mc:pig", S("Pig"), "mobs_mc_spawn_icon_pig.png", 0) - - -if minetest.settings:get_bool("log_mods") then - minetest.log("action", "MC Pig loaded") -end diff --git a/mods/ENTITIES/mobs_mc/polar_bear.lua b/mods/ENTITIES/mobs_mc/polar_bear.lua index b4e2e34f..fd1eaa1c 100644 --- a/mods/ENTITIES/mobs_mc/polar_bear.lua +++ b/mods/ENTITIES/mobs_mc/polar_bear.lua @@ -60,8 +60,3 @@ mobs:spawn_specific("mobs_mc:polar_bear", mobs_mc.spawn.snow, {"air"}, 0, minete -- spawn egg mobs:register_egg("mobs_mc:polar_bear", S("Polar Bear"), "mobs_mc_spawn_icon_polarbear.png", 0) - - -if minetest.settings:get_bool("log_mods") then - minetest.log("action", "MC Polar Bear loaded") -end diff --git a/mods/ENTITIES/mobs_mc/rabbit.lua b/mods/ENTITIES/mobs_mc/rabbit.lua index a7c05315..ef7b702b 100644 --- a/mods/ENTITIES/mobs_mc/rabbit.lua +++ b/mods/ENTITIES/mobs_mc/rabbit.lua @@ -162,8 +162,3 @@ mobs:register_egg("mobs_mc:rabbit", S("Rabbit"), "mobs_mc_spawn_icon_rabbit.png" -- Note: This spawn egg does not exist in Minecraft mobs:register_egg("mobs_mc:killer_bunny", S("Killer Bunny"), "mobs_mc_spawn_icon_rabbit.png^[colorize:#FF0000:192", 0) -- TODO: Update inventory image - - -if minetest.settings:get_bool("log_mods") then - minetest.log("action", "MC Bunny loaded") -end diff --git a/mods/ENTITIES/mobs_mc/sheep.lua b/mods/ENTITIES/mobs_mc/sheep.lua index 2982580d..94c2d48c 100644 --- a/mods/ENTITIES/mobs_mc/sheep.lua +++ b/mods/ENTITIES/mobs_mc/sheep.lua @@ -263,7 +263,3 @@ mobs:spawn_specific("mobs_mc:sheep", mobs_mc.spawn.grassland, {"air"}, 0, minete -- spawn eggs mobs:register_egg("mobs_mc:sheep", S("Sheep"), "mobs_mc_spawn_icon_sheep.png", 0) - -if minetest.settings:get_bool("log_mods") then - minetest.log("action", "MC Sheep loaded") -end diff --git a/mods/ENTITIES/mobs_mc/shulker.lua b/mods/ENTITIES/mobs_mc/shulker.lua index ead105d2..4304ef06 100644 --- a/mods/ENTITIES/mobs_mc/shulker.lua +++ b/mods/ENTITIES/mobs_mc/shulker.lua @@ -78,7 +78,3 @@ mobs:register_arrow("mobs_mc:shulkerbullet", { mobs:register_egg("mobs_mc:shulker", S("Schulker"), "mobs_mc_spawn_icon_shulker.png", 0) mobs:spawn_specific("mobs_mc:shulker", mobs_mc.spawn.end_city, {"air"}, 0, minetest.LIGHT_MAX+1, 30, 5000, 2, mobs_mc.spawn_height.end_min, mobs_mc.spawn_height.end_max) - -if minetest.settings:get_bool("log_mods") then - minetest.log("action", "MC Shulkers loaded") -end diff --git a/mods/ENTITIES/mobs_mc/skeleton+stray.lua b/mods/ENTITIES/mobs_mc/skeleton+stray.lua index 5d06b812..5d0c8ae8 100644 --- a/mods/ENTITIES/mobs_mc/skeleton+stray.lua +++ b/mods/ENTITIES/mobs_mc/skeleton+stray.lua @@ -135,7 +135,3 @@ mobs:spawn_specific("mobs_mc:stray", mobs_mc.spawn.snow, {"air"}, 0, 7, 20, 1900 -- spawn eggs mobs:register_egg("mobs_mc:skeleton", S("Skeleton"), "mobs_mc_spawn_icon_skeleton.png", 0) mobs:register_egg("mobs_mc:stray", S("Stray"), "mobs_mc_spawn_icon_stray.png", 0) - -if minetest.settings:get_bool("log_mods") then - minetest.log("action", "MC Skeleton loaded") -end diff --git a/mods/ENTITIES/mobs_mc/skeleton_wither.lua b/mods/ENTITIES/mobs_mc/skeleton_wither.lua index 8af94a85..c202228c 100644 --- a/mods/ENTITIES/mobs_mc/skeleton_wither.lua +++ b/mods/ENTITIES/mobs_mc/skeleton_wither.lua @@ -90,7 +90,3 @@ mobs:spawn_specific("mobs_mc:witherskeleton", mobs_mc.spawn.nether_fortress, {"a -- spawn eggs mobs:register_egg("mobs_mc:witherskeleton", S("Wither Skeleton"), "mobs_mc_spawn_icon_witherskeleton.png", 0) - -if minetest.settings:get_bool("log_mods") then - minetest.log("action", "MC Wither Skeleton loaded") -end diff --git a/mods/ENTITIES/mobs_mc/slime+magma_cube.lua b/mods/ENTITIES/mobs_mc/slime+magma_cube.lua index 236e2277..d361b89b 100644 --- a/mods/ENTITIES/mobs_mc/slime+magma_cube.lua +++ b/mods/ENTITIES/mobs_mc/slime+magma_cube.lua @@ -270,8 +270,3 @@ mobs:spawn_specific("mobs_mc:magma_cube_big", mobs_mc.spawn.nether_fortress, {"a -- spawn eggs mobs:register_egg("mobs_mc:magma_cube_big", S("Magma Cube"), "mobs_mc_spawn_icon_magmacube.png") mobs:register_egg("mobs_mc:slime_big", S("Slime"), "mobs_mc_spawn_icon_slime.png") - - -if minetest.settings:get_bool("log_mods") then - minetest.log("action", "MC Slimes loaded") -end diff --git a/mods/ENTITIES/mobs_mc/snowman.lua b/mods/ENTITIES/mobs_mc/snowman.lua index f0cab4df..fd3947d7 100644 --- a/mods/ENTITIES/mobs_mc/snowman.lua +++ b/mods/ENTITIES/mobs_mc/snowman.lua @@ -164,7 +164,3 @@ end -- Spawn egg mobs:register_egg("mobs_mc:snowman", S("Snow Golem"), "mobs_mc_spawn_icon_snowman.png", 0) - -if minetest.settings:get_bool("log_mods") then - minetest.log("action", "MC Snow Golem loaded") -end diff --git a/mods/ENTITIES/mobs_mc/spider.lua b/mods/ENTITIES/mobs_mc/spider.lua index 5dbff6af..f9d58407 100644 --- a/mods/ENTITIES/mobs_mc/spider.lua +++ b/mods/ENTITIES/mobs_mc/spider.lua @@ -81,7 +81,3 @@ mobs:spawn_specific("mobs_mc:spider", mobs_mc.spawn.solid, {"air"}, 0, 7, 30, 17 -- spawn eggs mobs:register_egg("mobs_mc:spider", S("Spider"), "mobs_mc_spawn_icon_spider.png", 0) mobs:register_egg("mobs_mc:cave_spider", S("Cave Spider"), "mobs_mc_spawn_icon_cave_spider.png", 0) - -if minetest.settings:get_bool("log_mods") then - minetest.log("action", "MC Spiders loaded") -end diff --git a/mods/ENTITIES/mobs_mc/vex.lua b/mods/ENTITIES/mobs_mc/vex.lua index ec0f5622..4c648577 100644 --- a/mods/ENTITIES/mobs_mc/vex.lua +++ b/mods/ENTITIES/mobs_mc/vex.lua @@ -91,8 +91,3 @@ mobs:register_mob("mobs_mc:vex", { -- spawn eggs mobs:register_egg("mobs_mc:vex", S("Vex"), "mobs_mc_spawn_icon_vex.png", 0) - - -if minetest.settings:get_bool("log_mods") then - minetest.log("action", "MC Vex loaded") -end diff --git a/mods/ENTITIES/mobs_mc/villager.lua b/mods/ENTITIES/mobs_mc/villager.lua index 39fabe9f..bb6fee74 100644 --- a/mods/ENTITIES/mobs_mc/villager.lua +++ b/mods/ENTITIES/mobs_mc/villager.lua @@ -1050,7 +1050,3 @@ mobs:spawn_specific("mobs_mc:villager", mobs_mc.spawn.village, {"air"}, 0, minet -- spawn eggs mobs:register_egg("mobs_mc:villager", S("Villager"), "mobs_mc_spawn_icon_villager.png", 0) - -if minetest.settings:get_bool("log_mods") then - minetest.log("action", "MC mobs loaded") -end diff --git a/mods/ENTITIES/mobs_mc/villager_evoker.lua b/mods/ENTITIES/mobs_mc/villager_evoker.lua index 3fc22e1d..3b9b1578 100644 --- a/mods/ENTITIES/mobs_mc/villager_evoker.lua +++ b/mods/ENTITIES/mobs_mc/villager_evoker.lua @@ -81,8 +81,3 @@ mobs:register_mob("mobs_mc:evoker", { -- spawn eggs mobs:register_egg("mobs_mc:evoker", S("Evoker"), "mobs_mc_spawn_icon_evoker.png", 0) - - -if minetest.settings:get_bool("log_mods") then - minetest.log("action", "MC Evoker loaded") -end diff --git a/mods/ENTITIES/mobs_mc/villager_illusioner.lua b/mods/ENTITIES/mobs_mc/villager_illusioner.lua index 4ead33e2..0e41f4e9 100644 --- a/mods/ENTITIES/mobs_mc/villager_illusioner.lua +++ b/mods/ENTITIES/mobs_mc/villager_illusioner.lua @@ -59,7 +59,3 @@ mobs:register_mob("mobs_mc:illusioner", { }) mobs:register_egg("mobs_mc:illusioner", S("Illusioner"), "mobs_mc_spawn_icon_illusioner.png", 0) - -if minetest.settings:get_bool("log_mods") then - minetest.log("action", "MC Illusioner loaded") -end diff --git a/mods/ENTITIES/mobs_mc/villager_vindicator.lua b/mods/ENTITIES/mobs_mc/villager_vindicator.lua index 2155d511..d7d6f273 100644 --- a/mods/ENTITIES/mobs_mc/villager_vindicator.lua +++ b/mods/ENTITIES/mobs_mc/villager_vindicator.lua @@ -69,7 +69,3 @@ mobs:register_mob("mobs_mc:vindicator", { -- spawn eggs mobs:register_egg("mobs_mc:vindicator", S("Vindicator"), "mobs_mc_spawn_icon_vindicator.png", 0) - -if minetest.settings:get_bool("log_mods") then - minetest.log("action", "MC vindicator loaded") -end diff --git a/mods/ENTITIES/mobs_mc/villager_zombie.lua b/mods/ENTITIES/mobs_mc/villager_zombie.lua index b5f6cd83..1e874803 100644 --- a/mods/ENTITIES/mobs_mc/villager_zombie.lua +++ b/mods/ENTITIES/mobs_mc/villager_zombie.lua @@ -83,7 +83,3 @@ mobs:spawn_specific("mobs_mc:villager_zombie", mobs_mc.spawn.village, {"air"}, 0 -- spawn eggs mobs:register_egg("mobs_mc:villager_zombie", S("Zombie Villager"), "mobs_mc_spawn_icon_zombie_villager.png", 0) - -if minetest.settings:get_bool("log_mods") then - minetest.log("action", "MC mobs Zombie Villager loaded") -end diff --git a/mods/ENTITIES/mobs_mc/witch.lua b/mods/ENTITIES/mobs_mc/witch.lua index 07673879..fcc05627 100644 --- a/mods/ENTITIES/mobs_mc/witch.lua +++ b/mods/ENTITIES/mobs_mc/witch.lua @@ -103,7 +103,3 @@ mobs:register_arrow("mobs_mc:potion_arrow", { -- spawn eggs mobs:register_egg("mobs_mc:witch", S("Witch"), "mobs_mc_spawn_icon_witch.png", 0, true) - -if minetest.settings:get_bool("log_mods") then - minetest.log("action", "MC mobs loaded") -end diff --git a/mods/ENTITIES/mobs_mc/wolf.lua b/mods/ENTITIES/mobs_mc/wolf.lua index 37bfc5fe..54bb0d41 100644 --- a/mods/ENTITIES/mobs_mc/wolf.lua +++ b/mods/ENTITIES/mobs_mc/wolf.lua @@ -207,7 +207,3 @@ mobs:register_mob("mobs_mc:dog", dog) mobs:spawn_specific("mobs_mc:wolf", mobs_mc.spawn.wolf, {"air"}, 0, minetest.LIGHT_MAX+1, 30, 9000, 7, mobs_mc.spawn_height.water+3, mobs_mc.spawn_height.overworld_max) mobs:register_egg("mobs_mc:wolf", S("Wolf"), "mobs_mc_spawn_icon_wolf.png", 0) - -if minetest.settings:get_bool("log_mods") then - minetest.log("action", "MC Wolf loaded") -end diff --git a/mods/ENTITIES/mobs_mc/zombie.lua b/mods/ENTITIES/mobs_mc/zombie.lua index 6e55d6e8..552369b8 100644 --- a/mods/ENTITIES/mobs_mc/zombie.lua +++ b/mods/ENTITIES/mobs_mc/zombie.lua @@ -128,7 +128,3 @@ mobs:spawn_specific("mobs_mc:baby_husk", mobs_mc.spawn.desert, {"air"}, 0, 7, 30 -- Spawn eggs mobs:register_egg("mobs_mc:husk", S("Husk"), "mobs_mc_spawn_icon_husk.png", 0) mobs:register_egg("mobs_mc:zombie", S("Zombie"), "mobs_mc_spawn_icon_zombie.png", 0) - -if minetest.settings:get_bool("log_mods") then - minetest.log("action", "MC Zombie loaded") -end diff --git a/mods/ENTITIES/mobs_mc/zombiepig.lua b/mods/ENTITIES/mobs_mc/zombiepig.lua index 777f2386..bdf97e05 100644 --- a/mods/ENTITIES/mobs_mc/zombiepig.lua +++ b/mods/ENTITIES/mobs_mc/zombiepig.lua @@ -111,7 +111,3 @@ mobs:spawn_specific("mobs_mc:pigman", mobs_mc.spawn.nether_portal, {"air"}, 0, m -- spawn eggs mobs:register_egg("mobs_mc:pigman", S("Zombie Pigman"), "mobs_mc_spawn_icon_zombie_pigman.png", 0) - -if minetest.settings:get_bool("log_mods") then - minetest.log("action", "MC Pigmen loaded") -end diff --git a/mods/ITEMS/REDSTONE/mesecons/init.lua b/mods/ITEMS/REDSTONE/mesecons/init.lua index 3286c0ce..93d299f0 100644 --- a/mods/ITEMS/REDSTONE/mesecons/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons/init.lua @@ -117,8 +117,5 @@ function mesecon.receptor_off(pos, rules) mesecon.queue:add_action(pos, "receptor_off", {rules}, nil, rules) end - -print("[OK] Mesecons") - --Services like turnoff receptor on dignode and so on dofile(minetest.get_modpath("mesecons").."/services.lua"); diff --git a/mods/ITEMS/mcl_colorblocks/init.lua b/mods/ITEMS/mcl_colorblocks/init.lua index f55003e0..c4b1ec18 100644 --- a/mods/ITEMS/mcl_colorblocks/init.lua +++ b/mods/ITEMS/mcl_colorblocks/init.lua @@ -1,4 +1,3 @@ -local init = os.clock() local S = minetest.get_translator("mcl_colorblocks") local doc_mod = minetest.get_modpath("doc") @@ -217,6 +216,3 @@ minetest.register_abm({ end end, }) - -local time_to_load= os.clock() - init -print(string.format("[MOD] "..minetest.get_current_modname().." loaded in %.4f s", time_to_load)) diff --git a/mods/ITEMS/mcl_doors/init.lua b/mods/ITEMS/mcl_doors/init.lua index 8bdf12d3..9e06b513 100644 --- a/mods/ITEMS/mcl_doors/init.lua +++ b/mods/ITEMS/mcl_doors/init.lua @@ -1,4 +1,3 @@ -local init = os.clock() mcl_doors = {} local this = minetest.get_current_modname() @@ -8,7 +7,3 @@ dofile(path.."/api_doors.lua") -- Doors API dofile(path.."/api_trapdoors.lua") -- Trapdoors API dofile(path.."/register.lua") -- Register builtin doors and trapdoors dofile(path.."/alias.lua") -- Legacy aliases - --- Debug info -local time_to_load= os.clock() - init -minetest.log("action", (string.format("[MOD] "..this.." loaded in %.4f s", time_to_load))) diff --git a/mods/ITEMS/mcl_farming/init.lua b/mods/ITEMS/mcl_farming/init.lua index 19be5380..adce058e 100644 --- a/mods/ITEMS/mcl_farming/init.lua +++ b/mods/ITEMS/mcl_farming/init.lua @@ -1,4 +1,3 @@ -local init = os.clock() mcl_farming = {} -- IMPORTANT API AND HELPER FUNCTIONS -- @@ -28,6 +27,3 @@ dofile(minetest.get_modpath("mcl_farming").."/potatoes.lua") -- ========= BEETROOT ========= dofile(minetest.get_modpath("mcl_farming").."/beetroot.lua") - -local time_to_load= os.clock() - init -print(string.format("[MOD] "..minetest.get_current_modname().." loaded in %.4f s", time_to_load)) diff --git a/mods/ITEMS/mcl_fences/init.lua b/mods/ITEMS/mcl_fences/init.lua index 5d6654c1..7583f054 100644 --- a/mods/ITEMS/mcl_fences/init.lua +++ b/mods/ITEMS/mcl_fences/init.lua @@ -1,5 +1,3 @@ -local init = os.clock() - local S = minetest.get_translator("mcl_fences") -- Node box @@ -306,8 +304,3 @@ minetest.register_craft({ recipe = "group:fence_wood", burntime = 15, }) - -local time_to_load = os.clock() - init -minetest.log("action", string.format("[MOD] "..minetest.get_current_modname().." loaded in %.4f s", time_to_load)) - - diff --git a/mods/ITEMS/mcl_flowers/init.lua b/mods/ITEMS/mcl_flowers/init.lua index 2b9aac6b..24f551a2 100644 --- a/mods/ITEMS/mcl_flowers/init.lua +++ b/mods/ITEMS/mcl_flowers/init.lua @@ -2,10 +2,6 @@ local S = minetest.get_translator("mcl_flowers") local mod_screwdriver = minetest.get_modpath("screwdriver") ~= nil --- Minetest 0.4 mod: default --- See README.txt for licensing and other information. -local init = os.clock() - -- Simple flower template local smallflowerlongdesc = S("This is a small flower. Small flowers are mainly used for dye production and can also be potted.") local plant_usage_help = S("It can only be placed on a block on which it would also survive.") @@ -439,7 +435,3 @@ minetest.register_node("mcl_flowers:waterlily", { -- Legacy support minetest.register_alias("mcl_core:tallgrass", "mcl_flowers:tallgrass") - --- Show loading time -local time_to_load= os.clock() - init -print(string.format("[MOD] "..minetest.get_current_modname().." loaded in %.4f s", time_to_load)) diff --git a/mods/ITEMS/mcl_signs/init.lua b/mods/ITEMS/mcl_signs/init.lua index 442458a9..2d9fc5de 100644 --- a/mods/ITEMS/mcl_signs/init.lua +++ b/mods/ITEMS/mcl_signs/init.lua @@ -569,7 +569,3 @@ minetest.register_lbm({ update_sign(pos) end, }) - -if minetest.settings:get_bool("log_mods") then - minetest.log("action", "[mcl_signs] loaded") -end diff --git a/mods/MAPGEN/mcl_structures/init.lua b/mods/MAPGEN/mcl_structures/init.lua index 6e6ca585..083f9539 100644 --- a/mods/MAPGEN/mcl_structures/init.lua +++ b/mods/MAPGEN/mcl_structures/init.lua @@ -1,4 +1,3 @@ -local init = os.clock() local S = minetest.get_translator("mcl_structures") mcl_structures ={} @@ -530,6 +529,3 @@ minetest.register_chatcommand("spawnstruct", { end end }) - -local time_to_load= os.clock() - init -minetest.log("action", (string.format("[MOD] "..minetest.get_current_modname().." loaded in %.4f s", time_to_load))) From ab56d592ae03b18171240e46b29939f4cf8c8702 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sat, 11 Apr 2020 04:06:24 +0200 Subject: [PATCH 638/737] Add snow particles on snowball impact --- mods/ITEMS/mcl_throwing/init.lua | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_throwing/init.lua b/mods/ITEMS/mcl_throwing/init.lua index fb5fcacc..e588363f 100644 --- a/mods/ITEMS/mcl_throwing/init.lua +++ b/mods/ITEMS/mcl_throwing/init.lua @@ -163,8 +163,6 @@ local check_object_hit = function(self, pos, dmg) full_punch_interval = 1.0, damage_groups = dmg, }, nil) - - self.object:remove() return true end end @@ -172,6 +170,28 @@ local check_object_hit = function(self, pos, dmg) return false end +local snowball_particles = function(pos, vel) + local vel = vector.normalize(vector.multiply(vel, -1)) + minetest.add_particlespawner({ + amount = 20, + time = 0.001, + minpos = pos, + maxpos = pos, + minvel = vector.add({x=-2, y=3, z=-2}, vel), + maxvel = vector.add({x=2, y=5, z=2}, vel), + minacc = {x=0, y=-9.81, z=0}, + maxacc = {x=0, y=-9.81, z=0}, + minexptime = 1, + maxexptime = 3, + minsize = 0.7, + maxsize = 0.7, + collisiondetection = true, + collision_removal = true, + object_collision = false, + texture = "weather_pack_snow_snowflake"..math.random(1,2)..".png", + }) +end + -- Snowball on_step()--> called when snowball is moving. local snowball_on_step = function(self, dtime) self.timer=self.timer+dtime @@ -183,6 +203,7 @@ local snowball_on_step = function(self, dtime) if self._lastpos.x~=nil then if (def and def.walkable) or not def then minetest.sound_play("mcl_throwing_snowball_impact_hard", { pos = self.object:get_pos(), max_hear_distance=16, gain=0.7 }, true) + snowball_particles(self._lastpos, self.object:get_velocity()) self.object:remove() return end @@ -190,6 +211,8 @@ local snowball_on_step = function(self, dtime) if check_object_hit(self, pos, {snowball_vulnerable = 3}) then minetest.sound_play("mcl_throwing_snowball_impact_soft", { pos = self.object:get_pos(), max_hear_distance=16, gain=0.7 }, true) + snowball_particles(pos, self.object:get_velocity()) + self.object:remove() return end @@ -252,6 +275,7 @@ local egg_on_step = function(self, dtime) -- Destroy when hitting a mob or player (no chick spawning) if check_object_hit(self, pos) then minetest.sound_play("mcl_throwing_egg_impact", { pos = self.object:get_pos(), max_hear_distance=10, gain=0.5 }, true) + self.object:remove() return end From 081366855d29030d0397bf4d39acab05cfbd0a08 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sat, 11 Apr 2020 04:06:37 +0200 Subject: [PATCH 639/737] Tweak appearance of snowflakes --- mods/ENVIRONMENT/mcl_weather/snow.lua | 20 +++++++------------- 1 file changed, 7 insertions(+), 13 deletions(-) diff --git a/mods/ENVIRONMENT/mcl_weather/snow.lua b/mods/ENVIRONMENT/mcl_weather/snow.lua index 96352835..7adfd0d5 100644 --- a/mods/ENVIRONMENT/mcl_weather/snow.lua +++ b/mods/ENVIRONMENT/mcl_weather/snow.lua @@ -13,13 +13,14 @@ mcl_weather.snow.add_snow_particles = function(player) mcl_weather.rain.last_rp_count = mcl_weather.rain.last_rp_count + 1 minetest.add_particle({ pos = {x=random_pos_x, y=random_pos_y, z=random_pos_z}, - velocity = {x = math.random(-1,-0.5), y = math.random(-2,-1), z = math.random(-1,-0.5)}, - acceleration = {x = math.random(-1,-0.5), y=-0.5, z = math.random(-1,-0.5)}, - expirationtime = 3.0, - size = math.random(0.5, 2), + velocity = {x = math.random(-100,100)*0.001, y = math.random(-300,-100)*0.004, z = math.random(-100,100)*0.001}, + acceleration = {x = 0, y=0, z = 0}, + expirationtime = 8.0, + size = 1, collisiondetection = true, collision_removal = true, - vertical = true, + object_collision = false, + vertical = false, texture = mcl_weather.snow.get_texture(), playername = player:get_player_name() }) @@ -49,14 +50,7 @@ end -- Simple random texture getter mcl_weather.snow.get_texture = function() - local texture_name - local random_number = math.random() - if random_number > 0.5 then - texture_name = "weather_pack_snow_snowflake1.png" - else - texture_name = "weather_pack_snow_snowflake2.png" - end - return texture_name; + return "weather_pack_snow_snowflake"..math.random(1,2)..".png" end local timer = 0 From 1db34821a03d2fadc8fa9fb1624a9549e9538c05 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sun, 12 Apr 2020 23:11:18 +0200 Subject: [PATCH 640/737] Mobs: Fix crash when mob dies to fall or light dmg --- mods/ENTITIES/mcl_mobs/api.lua | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/mods/ENTITIES/mcl_mobs/api.lua b/mods/ENTITIES/mcl_mobs/api.lua index 8f455e9d..63a114e6 100644 --- a/mods/ENTITIES/mcl_mobs/api.lua +++ b/mods/ENTITIES/mcl_mobs/api.lua @@ -758,6 +758,7 @@ local do_env_damage = function(self) end + -- Deal light damage to mob, returns true if mob died local deal_light_damage = function(self, pos, damage) if not (mod_weather and (mcl_weather.rain.raining or mcl_weather.state == "snow") and mcl_weather.is_outdoor(pos)) then self.health = self.health - damage @@ -772,14 +773,18 @@ local do_env_damage = function(self) -- bright light harms mob if self.light_damage ~= 0 and (minetest.get_node_light(pos) or 0) > 12 then - deal_light_damage(self, pos, self.light_damage) + if deal_light_damage(self, pos, self.light_damage) then + return true + end end local _, dim = nil, "overworld" if mod_worlds then _, dim = mcl_worlds.y_to_layer(pos.y) end if self.sunlight_damage ~= 0 and (minetest.get_node_light(pos) or 0) >= minetest.LIGHT_MAX and dim == "overworld" then - deal_light_damage(self, pos, self.sunlight_damage) + if deal_light_damage(self, pos, self.sunlight_damage) then + return true + end end local y_level = self.collisionbox[2] @@ -2492,6 +2497,7 @@ end -- falling and fall damage +-- returns true if mob died local falling = function(self, pos) if self.fly then @@ -2556,7 +2562,7 @@ local falling = function(self, pos) effect(pos, 5, "tnt_smoke.png", 1, 2, 2, nil) if check_for_death(self, "fall", {type = "fall"}) then - return + return true end end end @@ -3082,7 +3088,10 @@ local mob_step = function(self, dtime) if self.opinion_sound_cooloff > 0 then self.opinion_sound_cooloff = self.opinion_sound_cooloff - dtime end - falling(self, pos) + if falling(self, pos) then + -- Return if mob died after falling + return + end -- smooth rotation by ThomasMonroe314 From 7c56cf1a646049170eecffe61aa740663c9f49bb Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Wed, 15 Apr 2020 16:13:27 +0200 Subject: [PATCH 641/737] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 303d0f5b..c2e84376 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ An unofficial Minecraft-like game for Minetest. Forked from MineClone by davedevils. Developed by Wuzzy and contributors. Not developed or endorsed by Mojang AB. -Version: 0.63.0 +Version: 0.64.0 ### Gameplay You start in a randomly-generated world made entirely of cubes. You can explore From 24ab3e8f84299bb29b2574aaff0923551e39f88b Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Thu, 16 Apr 2020 12:22:50 +0200 Subject: [PATCH 642/737] Fix LBM typos --- mods/ITEMS/mcl_chests/init.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_chests/init.lua b/mods/ITEMS/mcl_chests/init.lua index d92448c6..e1711af4 100644 --- a/mods/ITEMS/mcl_chests/init.lua +++ b/mods/ITEMS/mcl_chests/init.lua @@ -966,7 +966,7 @@ minetest.register_lbm({ -- Legacy minetest.register_lbm({ - label = "Update ender chest formspecs (0.60.0", + label = "Update ender chest formspecs (0.60.0)", name = "mcl_chests:update_ender_chest_formspecs_0_60_0", nodenames = { "mcl_chests:ender_chest" }, run_at_every_load = false, @@ -976,7 +976,7 @@ minetest.register_lbm({ end, }) minetest.register_lbm({ - label = "Update shulker box formspecs (0.60.0", + label = "Update shulker box formspecs (0.60.0)", name = "mcl_chests:update_shulker_box_formspecs_0_60_0", nodenames = { "group:shulker_box" }, run_at_every_load = false, From 3803dba233a304bb4753703ade6f88b33d675406 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Thu, 16 Apr 2020 12:39:18 +0200 Subject: [PATCH 643/737] Fix invalid portal node names in spawn code --- mods/ENTITIES/mobs_mc/0_gameconfig.lua | 4 ++-- mods/ENTITIES/mobs_mc_gameconfig/init.lua | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/mods/ENTITIES/mobs_mc/0_gameconfig.lua b/mods/ENTITIES/mobs_mc/0_gameconfig.lua index 81229aa2..74c92d41 100644 --- a/mods/ENTITIES/mobs_mc/0_gameconfig.lua +++ b/mods/ENTITIES/mobs_mc/0_gameconfig.lua @@ -279,8 +279,8 @@ mobs_mc.spawn = { -- These probably don't need overrides mushroom_island = { mobs_mc.items.mycelium, "mcl_core:mycelium" }, - nether_fortress = { mobs_mc.items.nether_brick_block, "mcl_nether:nether_brick", "mcl_portals:nether_air" }, - nether = { mobs_mc.items.netherrack, "mcl_nether:netherrack", "mcl_portals:nether_air" }, + nether_fortress = { mobs_mc.items.nether_brick_block, "mcl_nether:nether_brick", }, + nether = { mobs_mc.items.netherrack, "mcl_nether:netherrack", }, nether_portal = { mobs_mc.items.nether_portal, "mcl_portals:portal" }, water = { mobs_mc.items.water_source, "mcl_core:water_source", "default:water_source" }, } diff --git a/mods/ENTITIES/mobs_mc_gameconfig/init.lua b/mods/ENTITIES/mobs_mc_gameconfig/init.lua index 374edabc..80485d95 100644 --- a/mods/ENTITIES/mobs_mc_gameconfig/init.lua +++ b/mods/ENTITIES/mobs_mc_gameconfig/init.lua @@ -85,6 +85,7 @@ mobs_mc.override.items = { nether_brick_block = "mcl_nether:nether_brick", netherrack = "mcl_nether:netherrack", nether_star = "mcl_mobitems:nether_star", + nether_portal = "mcl_portals:portal", mycelium = "mcl_core:mycelium", carrot = "mcl_farming:carrot_item", golden_carrot = "mcl_farming:carrot_item_gold", @@ -214,9 +215,9 @@ mobs_mc.override.spawn = { snow = { "mcl_core:snow", "mcl_core:snowblock", "mcl_core:dirt_with_grass_snow" }, -- End stone added for shulkers because End cities don't generate yet end_city = { "mcl_end:end_stone", "mcl_end:purpur_block" }, - nether = { "mcl_nether:netherrack", "mcl_nether:quartz_ore" }, -- Netherrack added because there are no Nether fortresses yet. TODO: Remove netherrac from list as soon they're available nether_fortress = { "mcl_nether:nether_brick", "mcl_nether:netherrack" }, + nether_portal = { mobs_mc.override.items.nether_portal }, wolf = { mobs_mc.override.items.grass_block, "mcl_core:dirt", "mcl_core:dirt_with_grass_snow", "mcl_core:snow", "mcl_core:snowblock", "mcl_core:podzol" }, } From 063595ac3c59ac22933324a240cb3a3a0a9145b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elias=20=C3=85str=C3=B6m?= Date: Wed, 15 Apr 2020 13:27:29 +0200 Subject: [PATCH 644/737] Change blast resistance of nodes in mcl_core The new blast resistance values are copied from the Minecraft wiki. https://minecraft.gamepedia.com/Explosion --- mods/ITEMS/mcl_core/nodes_base.lua | 106 +++++++++++------------ mods/ITEMS/mcl_core/nodes_cactuscane.lua | 2 +- mods/ITEMS/mcl_core/nodes_climb.lua | 4 +- mods/ITEMS/mcl_core/nodes_glass.lua | 4 +- mods/ITEMS/mcl_core/nodes_liquid.lua | 8 +- mods/ITEMS/mcl_core/nodes_misc.lua | 8 +- mods/ITEMS/mcl_core/nodes_trees.lua | 8 +- 7 files changed, 70 insertions(+), 70 deletions(-) diff --git a/mods/ITEMS/mcl_core/nodes_base.lua b/mods/ITEMS/mcl_core/nodes_base.lua index 6c47dd3f..a8efc0ca 100644 --- a/mods/ITEMS/mcl_core/nodes_base.lua +++ b/mods/ITEMS/mcl_core/nodes_base.lua @@ -20,7 +20,7 @@ minetest.register_node("mcl_core:stone", { groups = {pickaxey=1, stone=1, building_block=1, material_stone=1}, drop = 'mcl_core:cobble', sounds = mcl_sounds.node_sound_stone_defaults(), - _mcl_blast_resistance = 30, + _mcl_blast_resistance = 6, _mcl_hardness = 1.5, }) @@ -34,7 +34,7 @@ minetest.register_node("mcl_core:stone_with_coal", { groups = {pickaxey=1, building_block=1, material_stone=1}, drop = 'mcl_core:coal_lump', sounds = mcl_sounds.node_sound_stone_defaults(), - _mcl_blast_resistance = 15, + _mcl_blast_resistance = 3, _mcl_hardness = 3, }) @@ -47,7 +47,7 @@ minetest.register_node("mcl_core:stone_with_iron", { groups = {pickaxey=3, building_block=1, material_stone=1}, drop = 'mcl_core:stone_with_iron', sounds = mcl_sounds.node_sound_stone_defaults(), - _mcl_blast_resistance = 15, + _mcl_blast_resistance = 3, _mcl_hardness = 3, }) @@ -61,7 +61,7 @@ minetest.register_node("mcl_core:stone_with_gold", { groups = {pickaxey=4, building_block=1, material_stone=1}, drop = "mcl_core:stone_with_gold", sounds = mcl_sounds.node_sound_stone_defaults(), - _mcl_blast_resistance = 15, + _mcl_blast_resistance = 3, _mcl_hardness = 3, }) @@ -93,7 +93,7 @@ minetest.register_node("mcl_core:stone_with_redstone", { sounds = mcl_sounds.node_sound_stone_defaults(), on_punch = redstone_ore_activate, on_walk_over = redstone_ore_activate, -- Uses walkover mod - _mcl_blast_resistance = 15, + _mcl_blast_resistance = 3, _mcl_hardness = 3, }) @@ -131,7 +131,7 @@ minetest.register_node("mcl_core:stone_with_redstone_lit", { on_timer = function(pos, elapsed) minetest.swap_node(pos, {name="mcl_core:stone_with_redstone"}) end, - _mcl_blast_resistance = 15, + _mcl_blast_resistance = 3, _mcl_hardness = 3, }) @@ -153,7 +153,7 @@ minetest.register_node("mcl_core:stone_with_lapis", { } }, sounds = mcl_sounds.node_sound_stone_defaults(), - _mcl_blast_resistance = 15, + _mcl_blast_resistance = 3, _mcl_hardness = 3, }) @@ -166,7 +166,7 @@ minetest.register_node("mcl_core:stone_with_emerald", { groups = {pickaxey=4, building_block=1, material_stone=1}, drop = "mcl_core:emerald", sounds = mcl_sounds.node_sound_stone_defaults(), - _mcl_blast_resistance = 15, + _mcl_blast_resistance = 3, _mcl_hardness = 3, }) @@ -179,7 +179,7 @@ minetest.register_node("mcl_core:stone_with_diamond", { groups = {pickaxey=4, building_block=1, material_stone=1}, drop = "mcl_core:diamond", sounds = mcl_sounds.node_sound_stone_defaults(), - _mcl_blast_resistance = 15, + _mcl_blast_resistance = 3, _mcl_hardness = 3, }) @@ -191,7 +191,7 @@ minetest.register_node("mcl_core:stonebrick", { groups = {pickaxey=1, stone=1, stonebrick=1, building_block=1, material_stone=1}, sounds = mcl_sounds.node_sound_stone_defaults(), is_ground_content = false, - _mcl_blast_resistance = 30, + _mcl_blast_resistance = 6, _mcl_hardness = 1.5, }) @@ -203,7 +203,7 @@ minetest.register_node("mcl_core:stonebrickcarved", { groups = {pickaxey=1, stone=1, stonebrick=1, building_block=1, material_stone=1}, sounds = mcl_sounds.node_sound_stone_defaults(), is_ground_content = false, - _mcl_blast_resistance = 30, + _mcl_blast_resistance = 6, _mcl_hardness = 1.5, }) @@ -215,7 +215,7 @@ minetest.register_node("mcl_core:stonebrickcracked", { groups = {pickaxey=1, stone=1, stonebrick=1, building_block=1, material_stone=1}, sounds = mcl_sounds.node_sound_stone_defaults(), is_ground_content = false, - _mcl_blast_resistance = 30, + _mcl_blast_resistance = 6, _mcl_hardness = 1.5, }) @@ -227,7 +227,7 @@ minetest.register_node("mcl_core:stonebrickmossy", { groups = {pickaxey=1, stone=1, stonebrick=1, building_block=1, material_stone=1}, sounds = mcl_sounds.node_sound_stone_defaults(), is_ground_content = false, - _mcl_blast_resistance = 30, + _mcl_blast_resistance = 6, _mcl_hardness = 1.5, }) @@ -239,7 +239,7 @@ minetest.register_node("mcl_core:stone_smooth", { groups = {pickaxey=1, stone=1, building_block=1, material_stone=1}, sounds = mcl_sounds.node_sound_stone_defaults(), is_ground_content = false, - _mcl_blast_resistance = 30, + _mcl_blast_resistance = 6, _mcl_hardness = 1.5, }) @@ -251,7 +251,7 @@ minetest.register_node("mcl_core:granite", { stack_max = 64, groups = {pickaxey=1, stone=1, building_block=1, material_stone=1}, sounds = mcl_sounds.node_sound_stone_defaults(), - _mcl_blast_resistance = 30, + _mcl_blast_resistance = 6, _mcl_hardness = 1.5, }) @@ -263,7 +263,7 @@ minetest.register_node("mcl_core:granite_smooth", { is_ground_content = false, groups = {pickaxey=1, stone=1, building_block=1, material_stone=1}, sounds = mcl_sounds.node_sound_stone_defaults(), - _mcl_blast_resistance = 30, + _mcl_blast_resistance = 6, _mcl_hardness = 1.5, }) @@ -275,7 +275,7 @@ minetest.register_node("mcl_core:andesite", { stack_max = 64, groups = {pickaxey=1, stone=1, building_block=1, material_stone=1}, sounds = mcl_sounds.node_sound_stone_defaults(), - _mcl_blast_resistance = 30, + _mcl_blast_resistance = 6, _mcl_hardness = 1.5, }) @@ -299,7 +299,7 @@ minetest.register_node("mcl_core:diorite", { stack_max = 64, groups = {pickaxey=1, stone=1, building_block=1, material_stone=1}, sounds = mcl_sounds.node_sound_stone_defaults(), - _mcl_blast_resistance = 30, + _mcl_blast_resistance = 6, _mcl_hardness = 1.5, }) @@ -311,7 +311,7 @@ minetest.register_node("mcl_core:diorite_smooth", { stack_max = 64, groups = {pickaxey=1, stone=1, building_block=1, material_stone=1}, sounds = mcl_sounds.node_sound_stone_defaults(), - _mcl_blast_resistance = 30, + _mcl_blast_resistance = 6, _mcl_hardness = 1.5, }) @@ -344,7 +344,7 @@ minetest.register_node("mcl_core:dirt_with_grass", { return mcl_core.on_snowable_construct(pos) end, _mcl_snowed = "mcl_core:dirt_with_grass_snow", - _mcl_blast_resistance = 3, + _mcl_blast_resistance = 0.5, _mcl_hardness = 0.6, }) mcl_core.register_snowed_node("mcl_core:dirt_with_grass_snow", "mcl_core:dirt_with_grass", nil, nil, true) @@ -368,7 +368,7 @@ minetest.register_node("mcl_core:grass_path", { sounds = mcl_sounds.node_sound_dirt_defaults({ footstep = {name="default_grass_footstep", gain=0.4}, }), - _mcl_blast_resistance = 3.25, + _mcl_blast_resistance = 0.65, _mcl_hardness = 0.6, }) @@ -387,7 +387,7 @@ minetest.register_node("mcl_core:mycelium", { on_construct = mcl_core.on_snowable_construct, _mcl_snowed = "mcl_core:mycelium_snow", - _mcl_blast_resistance = 2.5, + _mcl_blast_resistance = 0.5, _mcl_hardness = 0.6, }) mcl_core.register_snowed_node("mcl_core:mycelium_snow", "mcl_core:mycelium") @@ -403,7 +403,7 @@ minetest.register_node("mcl_core:podzol", { sounds = mcl_sounds.node_sound_dirt_defaults(), on_construct = mcl_core.on_snowable_construct, _mcl_snowed = "mcl_core:podzol_snow", - _mcl_blast_resistance = 2.5, + _mcl_blast_resistance = 0.5, _mcl_hardness = 0.6, }) mcl_core.register_snowed_node("mcl_core:podzol_snow", "mcl_core:podzol") @@ -417,7 +417,7 @@ minetest.register_node("mcl_core:dirt", { stack_max = 64, groups = {handy=1,shovely=1, dirt=1,soil=1, soil_sapling=2, soil_sugarcane=1, cultivatable=2, enderman_takable=1, building_block=1}, sounds = mcl_sounds.node_sound_dirt_defaults(), - _mcl_blast_resistance = 3, + _mcl_blast_resistance = 0.5, _mcl_hardness = 0.5, }) @@ -429,7 +429,7 @@ minetest.register_node("mcl_core:coarse_dirt", { stack_max = 64, groups = {handy=1,shovely=1, dirt=3,soil=1, soil_sugarcane=1, cultivatable=1, enderman_takable=1, building_block=1}, sounds = mcl_sounds.node_sound_dirt_defaults(), - _mcl_blast_resistance = 3, + _mcl_blast_resistance = 0.5, _mcl_hardness = 0.5, }) @@ -450,7 +450,7 @@ minetest.register_node("mcl_core:gravel", { sounds = mcl_sounds.node_sound_dirt_defaults({ footstep = {name="default_gravel_footstep", gain=0.45}, }), - _mcl_blast_resistance = 3, + _mcl_blast_resistance = 0.6, _mcl_hardness = 0.6, }) @@ -464,7 +464,7 @@ minetest.register_node("mcl_core:sand", { stack_max = 64, groups = {handy=1,shovely=1, falling_node=1, sand=1, soil_sugarcane=1, enderman_takable=1, building_block=1, material_sand=1}, sounds = mcl_sounds.node_sound_sand_defaults(), - _mcl_blast_resistance = 2.5, + _mcl_blast_resistance = 0.5, _mcl_hardness = 0.5, }) @@ -477,7 +477,7 @@ minetest.register_node("mcl_core:sandstone", { stack_max = 64, groups = {pickaxey=1, sandstone=1, normal_sandstone=1, building_block=1, material_stone=1}, sounds = mcl_sounds.node_sound_stone_defaults(), - _mcl_blast_resistance = 4, + _mcl_blast_resistance = 0.8, _mcl_hardness = 0.8, }) @@ -489,7 +489,7 @@ minetest.register_node("mcl_core:sandstonesmooth", { stack_max = 64, groups = {pickaxey=1, sandstone=1, normal_sandstone=1, building_block=1, material_stone=1}, sounds = mcl_sounds.node_sound_stone_defaults(), - _mcl_blast_resistance = 4, + _mcl_blast_resistance = 0.8, _mcl_hardness = 0.8, }) @@ -501,7 +501,7 @@ minetest.register_node("mcl_core:sandstonecarved", { stack_max = 64, groups = {pickaxey=1, sandstone=1, normal_sandstone=1, building_block=1, material_stone=1}, sounds = mcl_sounds.node_sound_stone_defaults(), - _mcl_blast_resistance = 4, + _mcl_blast_resistance = 0.8, _mcl_hardness = 0.8, }) @@ -514,7 +514,7 @@ minetest.register_node("mcl_core:sandstonesmooth2", { stack_max = 64, groups = {pickaxey=1, sandstone=1, normal_sandstone=1, building_block=1, material_stone=1}, sounds = mcl_sounds.node_sound_stone_defaults(), - _mcl_blast_resistance = 4, + _mcl_blast_resistance = 0.8, _mcl_hardness = 0.8, }) @@ -528,7 +528,7 @@ minetest.register_node("mcl_core:redsand", { stack_max = 64, groups = {handy=1,shovely=1, falling_node=1, sand=1, soil_sugarcane=1, enderman_takable=1, building_block=1, material_sand=1}, sounds = mcl_sounds.node_sound_sand_defaults(), - _mcl_blast_resistance = 2.5, + _mcl_blast_resistance = 0.5, _mcl_hardness = 0.5, }) @@ -540,7 +540,7 @@ minetest.register_node("mcl_core:redsandstone", { stack_max = 64, groups = {pickaxey=1, sandstone=1, red_sandstone=1, building_block=1, material_stone=1}, sounds = mcl_sounds.node_sound_stone_defaults(), - _mcl_blast_resistance = 4, + _mcl_blast_resistance = 0.8, _mcl_hardness = 0.8, }) @@ -552,7 +552,7 @@ minetest.register_node("mcl_core:redsandstonesmooth", { stack_max = 64, groups = {pickaxey=1, sandstone=1, red_sandstone=1, building_block=1, material_stone=1}, sounds = mcl_sounds.node_sound_stone_defaults(), - _mcl_blast_resistance = 4, + _mcl_blast_resistance = 0.8, _mcl_hardness = 0.8, }) @@ -564,7 +564,7 @@ minetest.register_node("mcl_core:redsandstonecarved", { stack_max = 64, groups = {pickaxey=1, sandstone=1, red_sandstone=1, building_block=1, material_stone=1}, sounds = mcl_sounds.node_sound_stone_defaults(), - _mcl_blast_resistance = 4, + _mcl_blast_resistance = 0.8, _mcl_hardness = 0.8, }) @@ -576,7 +576,7 @@ minetest.register_node("mcl_core:redsandstonesmooth2", { stack_max = 64, groups = {pickaxey=1, sandstone=1, red_sandstone=1, building_block=1, material_stone=1}, sounds = mcl_sounds.node_sound_stone_defaults(), - _mcl_blast_resistance = 4, + _mcl_blast_resistance = 0.8, _mcl_hardness = 0.8, }) @@ -592,7 +592,7 @@ minetest.register_node("mcl_core:clay", { groups = {handy=1,shovely=1, enderman_takable=1, building_block=1}, drop = 'mcl_core:clay_lump 4', sounds = mcl_sounds.node_sound_dirt_defaults(), - _mcl_blast_resistance = 3, + _mcl_blast_resistance = 0.6, _mcl_hardness = 0.6, }) @@ -605,7 +605,7 @@ minetest.register_node("mcl_core:brick_block", { stack_max = 64, groups = {pickaxey=1, building_block=1, material_stone=1}, sounds = mcl_sounds.node_sound_stone_defaults(), - _mcl_blast_resistance = 30, + _mcl_blast_resistance = 6, _mcl_hardness = 2, }) @@ -621,7 +621,7 @@ minetest.register_node("mcl_core:bedrock", { is_ground_content = false, on_blast = function() end, drop = '', - _mcl_blast_resistance = 18000000, + _mcl_blast_resistance = 3600000, _mcl_hardness = -1, -- Eternal fire on top of bedrock, if in the End dimension @@ -658,7 +658,7 @@ minetest.register_node("mcl_core:cobble", { stack_max = 64, groups = {pickaxey=1, building_block=1, material_stone=1}, sounds = mcl_sounds.node_sound_stone_defaults(), - _mcl_blast_resistance = 30, + _mcl_blast_resistance = 6, _mcl_hardness = 2, }) @@ -670,7 +670,7 @@ minetest.register_node("mcl_core:mossycobble", { stack_max = 64, groups = {pickaxey=1, building_block=1, material_stone=1}, sounds = mcl_sounds.node_sound_stone_defaults(), - _mcl_blast_resistance = 30, + _mcl_blast_resistance = 6, _mcl_hardness = 2, }) @@ -682,7 +682,7 @@ minetest.register_node("mcl_core:coalblock", { stack_max = 64, groups = {pickaxey=1, flammable=1, building_block=1, material_stone=1}, sounds = mcl_sounds.node_sound_stone_defaults(), - _mcl_blast_resistance = 30, + _mcl_blast_resistance = 6, _mcl_hardness = 5, }) @@ -694,7 +694,7 @@ minetest.register_node("mcl_core:ironblock", { stack_max = 64, groups = {pickaxey=2, building_block=1}, sounds = mcl_sounds.node_sound_metal_defaults(), - _mcl_blast_resistance = 30, + _mcl_blast_resistance = 6, _mcl_hardness = 5, }) @@ -706,7 +706,7 @@ minetest.register_node("mcl_core:goldblock", { stack_max = 64, groups = {pickaxey=4, building_block=1}, sounds = mcl_sounds.node_sound_metal_defaults(), - _mcl_blast_resistance = 30, + _mcl_blast_resistance = 6, _mcl_hardness = 5, }) @@ -718,7 +718,7 @@ minetest.register_node("mcl_core:diamondblock", { stack_max = 64, groups = {pickaxey=4, building_block=1}, sounds = mcl_sounds.node_sound_stone_defaults(), - _mcl_blast_resistance = 30, + _mcl_blast_resistance = 6, _mcl_hardness = 5, }) @@ -730,7 +730,7 @@ minetest.register_node("mcl_core:lapisblock", { stack_max = 64, groups = {pickaxey=3, building_block=1}, sounds = mcl_sounds.node_sound_stone_defaults(), - _mcl_blast_resistance = 15, + _mcl_blast_resistance = 3, _mcl_hardness = 3, }) @@ -742,7 +742,7 @@ minetest.register_node("mcl_core:emeraldblock", { stack_max = 64, groups = {pickaxey=4, building_block=1}, sounds = mcl_sounds.node_sound_stone_defaults(), - _mcl_blast_resistance = 30, + _mcl_blast_resistance = 6, _mcl_hardness = 5, }) @@ -754,7 +754,7 @@ minetest.register_node("mcl_core:obsidian", { sounds = mcl_sounds.node_sound_stone_defaults(), stack_max = 64, groups = {pickaxey=5, building_block=1, material_stone=1}, - _mcl_blast_resistance = 6000, + _mcl_blast_resistance = 1200, _mcl_hardness = 50, }) @@ -774,7 +774,7 @@ minetest.register_node("mcl_core:ice", { after_dig_node = function(pos, oldnode) mcl_core.melt_ice(pos) end, - _mcl_blast_resistance = 2.5, + _mcl_blast_resistance = 0.5, _mcl_hardness = 0.5, }) @@ -787,7 +787,7 @@ minetest.register_node("mcl_core:packed_ice", { groups = {handy=1,pickaxey=1, slippery=3, building_block=1}, drop = "", sounds = mcl_sounds.node_sound_glass_defaults(), - _mcl_blast_resistance = 2.5, + _mcl_blast_resistance = 0.5, _mcl_hardness = 0.5, }) @@ -851,7 +851,7 @@ for i=0,3 do local timer = minetest.get_node_timer(pos) timer:start(1.5) end, - _mcl_blast_resistance = 2.5, + _mcl_blast_resistance = 0.5, _mcl_hardness = 0.5, }) @@ -970,7 +970,7 @@ for i=1,8 do on_place = on_place, after_destruct = mcl_core.after_snow_destruct, drop = "mcl_throwing:snowball "..(i+1), - _mcl_blast_resistance = 0.5, + _mcl_blast_resistance = 0.1, _mcl_hardness = 0.1, }) end @@ -987,7 +987,7 @@ minetest.register_node("mcl_core:snowblock", { on_construct = mcl_core.on_snow_construct, after_destruct = mcl_core.after_snow_destruct, drop = "mcl_throwing:snowball 4", - _mcl_blast_resistance = 1, + _mcl_blast_resistance = 0.2, _mcl_hardness = 0.2, }) diff --git a/mods/ITEMS/mcl_core/nodes_cactuscane.lua b/mods/ITEMS/mcl_core/nodes_cactuscane.lua index e8555f14..277cc565 100644 --- a/mods/ITEMS/mcl_core/nodes_cactuscane.lua +++ b/mods/ITEMS/mcl_core/nodes_cactuscane.lua @@ -42,7 +42,7 @@ minetest.register_node("mcl_core:cactus", { if not node_below then return false end return (node_below.name == "mcl_core:cactus" or minetest.get_item_group(node_below.name, "sand") == 1) end), - _mcl_blast_resistance = 2, + _mcl_blast_resistance = 0.4, _mcl_hardness = 0.4, }) diff --git a/mods/ITEMS/mcl_core/nodes_climb.lua b/mods/ITEMS/mcl_core/nodes_climb.lua index 5167d082..8839b012 100644 --- a/mods/ITEMS/mcl_core/nodes_climb.lua +++ b/mods/ITEMS/mcl_core/nodes_climb.lua @@ -81,7 +81,7 @@ minetest.register_node("mcl_core:ladder", { return itemstack end, - _mcl_blast_resistance = 2, + _mcl_blast_resistance = 0.4, _mcl_hardness = 0.4, on_rotate = rotate_climbable, }) @@ -164,7 +164,7 @@ minetest.register_node("mcl_core:vine", { end, - _mcl_blast_resistance = 1, + _mcl_blast_resistance = 0.2, _mcl_hardness = 0.2, on_rotate = false, }) diff --git a/mods/ITEMS/mcl_core/nodes_glass.lua b/mods/ITEMS/mcl_core/nodes_glass.lua index 3ac2cb39..87e9a786 100644 --- a/mods/ITEMS/mcl_core/nodes_glass.lua +++ b/mods/ITEMS/mcl_core/nodes_glass.lua @@ -14,7 +14,7 @@ minetest.register_node("mcl_core:glass", { groups = {handy=1, glass=1, building_block=1, material_glass=1}, sounds = mcl_sounds.node_sound_glass_defaults(), drop = "", - _mcl_blast_resistance = 1.5, + _mcl_blast_resistance = 0.3, _mcl_hardness = 0.3, }) @@ -49,7 +49,7 @@ function mcl_core.add_stained_glass(desc, recipeitem, colorgroup, color) groups = {handy=1, glass=1, building_block=1, material_glass=1}, sounds = mcl_sounds.node_sound_glass_defaults(), drop = "", - _mcl_blast_resistance = 1.5, + _mcl_blast_resistance = 0.3, _mcl_hardness = 0.3, }) diff --git a/mods/ITEMS/mcl_core/nodes_liquid.lua b/mods/ITEMS/mcl_core/nodes_liquid.lua index 85ba4c9e..ac938c80 100644 --- a/mods/ITEMS/mcl_core/nodes_liquid.lua +++ b/mods/ITEMS/mcl_core/nodes_liquid.lua @@ -49,7 +49,7 @@ minetest.register_node("mcl_core:water_flowing", { liquid_range = 7, post_effect_color = {a=209, r=0x03, g=0x3C, b=0x5C}, groups = { water=3, liquid=3, puts_out_fire=1, not_in_creative_inventory=1, freezes=1, melt_around=1, dig_by_piston=1}, - _mcl_blast_resistance = 500, + _mcl_blast_resistance = 100, -- Hardness intentionally set to infinite instead of 100 (Minecraft value) to avoid problems in creative mode _mcl_hardness = -1, }) @@ -93,7 +93,7 @@ S("• When water is directly below lava, the water turns into stone."), post_effect_color = {a=209, r=0x03, g=0x3C, b=0x5C}, stack_max = 64, groups = { water=3, liquid=3, puts_out_fire=1, freezes=1, not_in_creative_inventory=1, dig_by_piston=1}, - _mcl_blast_resistance = 500, + _mcl_blast_resistance = 100, -- Hardness intentionally set to infinite instead of 100 (Minecraft value) to avoid problems in creative mode _mcl_hardness = -1, }) @@ -139,7 +139,7 @@ minetest.register_node("mcl_core:lava_flowing", { _mcl_node_death_message = lava_death_messages, post_effect_color = {a=255, r=208, g=73, b=10}, groups = { lava=3, liquid=2, destroys_items=1, not_in_creative_inventory=1, dig_by_piston=1}, - _mcl_blast_resistance = 500, + _mcl_blast_resistance = 100, -- Hardness intentionally set to infinite instead of 100 (Minecraft value) to avoid problems in creative mode _mcl_hardness = -1, }) @@ -194,7 +194,7 @@ S("• When lava is directly above water, the water turns into stone."), post_effect_color = {a=255, r=208, g=73, b=10}, stack_max = 64, groups = { lava=3, liquid=2, destroys_items=1, not_in_creative_inventory=1, dig_by_piston=1}, - _mcl_blast_resistance = 500, + _mcl_blast_resistance = 100, -- Hardness intentionally set to infinite instead of 100 (Minecraft value) to avoid problems in creative mode _mcl_hardness = -1, }) diff --git a/mods/ITEMS/mcl_core/nodes_misc.lua b/mods/ITEMS/mcl_core/nodes_misc.lua index 43161b44..a252bf93 100644 --- a/mods/ITEMS/mcl_core/nodes_misc.lua +++ b/mods/ITEMS/mcl_core/nodes_misc.lua @@ -17,7 +17,7 @@ minetest.register_node("mcl_core:bone_block", { groups = {pickaxey=1, building_block=1, material_stone=1}, sounds = mcl_sounds.node_sound_stone_defaults(), on_rotate = on_rotate, - _mcl_blast_resistance = 10, + _mcl_blast_resistance = 2, _mcl_hardness = 2, }) @@ -76,7 +76,7 @@ minetest.register_node("mcl_core:cobweb", { drop = "mcl_mobitems:string", _mcl_shears_drop = true, sounds = mcl_sounds.node_sound_leaves_defaults(), - _mcl_blast_resistance = 20, + _mcl_blast_resistance = 4, _mcl_hardness = 4, }) @@ -135,7 +135,7 @@ minetest.register_node("mcl_core:barrier", { groups = {creative_breakable=1, not_in_creative_inventory = 1, not_solid = 1 }, on_blast = function() end, drop = "", - _mcl_blast_resistance = 18000003, + _mcl_blast_resistance = 36000008, _mcl_hardness = -1, after_place_node = function (pos, placer, itemstack, pointed_thing) if placer == nil then @@ -195,7 +195,7 @@ minetest.register_node("mcl_core:realm_barrier", { groups = {not_in_creative_inventory = 1, not_solid = 1 }, on_blast = function() end, drop = "", - _mcl_blast_resistance = 18000003, + _mcl_blast_resistance = 36000008, _mcl_hardness = -1, -- Prevent placement to protect player from screwing up the world, because the node is not pointable and hard to get rid of. node_placement_prediction = "", diff --git a/mods/ITEMS/mcl_core/nodes_trees.lua b/mods/ITEMS/mcl_core/nodes_trees.lua index ad162e5b..ea18132e 100644 --- a/mods/ITEMS/mcl_core/nodes_trees.lua +++ b/mods/ITEMS/mcl_core/nodes_trees.lua @@ -20,7 +20,7 @@ local register_tree_trunk = function(subname, description_trunk, description_bar groups = {handy=1,axey=1, tree=1, flammable=2, building_block=1, material_wood=1}, sounds = mcl_sounds.node_sound_wood_defaults(), on_rotate = on_rotate, - _mcl_blast_resistance = 10, + _mcl_blast_resistance = 2, _mcl_hardness = 2, }) @@ -35,7 +35,7 @@ local register_tree_trunk = function(subname, description_trunk, description_bar sounds = mcl_sounds.node_sound_wood_defaults(), is_ground_content = false, on_rotate = on_rotate, - _mcl_blast_resistance = 10, + _mcl_blast_resistance = 2, _mcl_hardness = 2, }) @@ -58,7 +58,7 @@ local register_wooden_planks = function(subname, description, tiles) is_ground_content = false, groups = {handy=1,axey=1, flammable=3,wood=1,building_block=1, material_wood=1}, sounds = mcl_sounds.node_sound_wood_defaults(), - _mcl_blast_resistance = 15, + _mcl_blast_resistance = 3, _mcl_hardness = 2, }) end @@ -108,7 +108,7 @@ local register_leaves = function(subname, description, longdesc, tiles, drop1, d drop = drop, _mcl_shears_drop = true, sounds = mcl_sounds.node_sound_leaves_defaults(), - _mcl_blast_resistance = 1, + _mcl_blast_resistance = 0.2, _mcl_hardness = 0.2, }) end From 1d5c11f68391caad31bffbe474b56160cd7af2f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elias=20=C3=85str=C3=B6m?= Date: Wed, 15 Apr 2020 14:15:07 +0200 Subject: [PATCH 645/737] Add mcl_explosions for ray traced explosions Code has been adapted from the Minetest explosions API mod to have Minecraft-like explosion mechanics and work with MineClone 2. --- mods/CORE/mcl_explosions/description.txt | 1 + mods/CORE/mcl_explosions/init.lua | 266 +++++++++++++++++++++++ 2 files changed, 267 insertions(+) create mode 100644 mods/CORE/mcl_explosions/description.txt create mode 100644 mods/CORE/mcl_explosions/init.lua diff --git a/mods/CORE/mcl_explosions/description.txt b/mods/CORE/mcl_explosions/description.txt new file mode 100644 index 00000000..a9d5288b --- /dev/null +++ b/mods/CORE/mcl_explosions/description.txt @@ -0,0 +1 @@ +This mod adds a common API to create explosions. diff --git a/mods/CORE/mcl_explosions/init.lua b/mods/CORE/mcl_explosions/init.lua new file mode 100644 index 00000000..6909bdc6 --- /dev/null +++ b/mods/CORE/mcl_explosions/init.lua @@ -0,0 +1,266 @@ +--[[ .__ .__ + ____ ___ _________ | | ____ _____|__| ____ ____ ______ + _/ __ \\ \/ /\____ \| | / _ \/ ___/ |/ _ \ / \ / ___/ + \ ___/ > < | |_> > |_( <_> )___ \| ( <_> ) | \\___ \ + \___ >__/\_ \| __/|____/\____/____ >__|\____/|___| /____ > + \/ \/|__| \/ \/ \/ + + Explosion API mod for Minetest (adapted to MineClone 2) + + This mod is based on the Minetest explosion API mod, but has been changed + to have the same explosion mechanics as Minecraft and work with MineClone. + The computation-intensive parts of the mod has been optimized to allow for + larger explosions and faster world updating. + + This mod was created by Elias Astrom and is released + under the LGPLv2.1 license. +--]] + + +mcl_explosions = {} + +-- Saved sphere explosion shapes for various radiuses +local sphere_shapes = {} + +-- Saved node definitions in table using cid-keys for faster look-up. +local node_br = {} + +local AIR_CID = minetest.get_content_id('air') + +-- The step length for the rays (Minecraft uses 0.3) +local STEP_LENGTH = 0.3 + +minetest.after(0, function() + -- Store blast resistance values by content ids to improve performance. + for name, def in pairs(minetest.registered_nodes) do + node_br[minetest.get_content_id(name)] = def._mcl_blast_resistance or 0 + end +end) + +-- Compute the rays which make up a sphere with radius. Returns a list of rays +-- which can be used to trace explosions. This function is not efficient +-- (especially for larger radiuses), so the generated rays for various radiuses +-- should be cached and reused. +-- +-- Should be possible to improve by using a midpoint circle algorithm multiple +-- times to create the sphere, currently uses more of a brute-force approach. +local function compute_sphere_rays(radius) + local rays = {} + local sphere = {} + + for y = -radius, radius do + for z = -radius, radius do + for x = -radius, 0, 1 do + local d = x * x + y * y + z * z + if d <= radius * radius then + local pos = { x = x, y = y, z = z } + sphere[minetest.hash_node_position(pos)] = pos + break + end + end + end + end + + for y = -radius, radius do + for z = -radius, radius do + for x = radius, 0, -1 do + local d = x * x + y * y + z * z + if d <= radius * radius then + local pos = { x = x, y = y, z = z } + sphere[minetest.hash_node_position(pos)] = pos + break + end + end + end + end + + for x = -radius, radius do + for z = -radius, radius do + for y = -radius, 0, 1 do + local d = x * x + y * y + z * z + if d <= radius * radius then + local pos = { x = x, y = y, z = z } + sphere[minetest.hash_node_position(pos)] = pos + break + end + end + end + end + + for x = -radius, radius do + for z = -radius, radius do + for y = radius, 0, -1 do + local d = x * x + y * y + z * z + if d <= radius * radius then + local pos = { x = x, y = y, z = z } + sphere[minetest.hash_node_position(pos)] = pos + break + end + end + end + end + + for x = -radius, radius do + for y = -radius, radius do + for z = -radius, 0, 1 do + local d = x * x + y * y + z * z + if d <= radius * radius then + local pos = { x = x, y = y, z = z } + sphere[minetest.hash_node_position(pos)] = pos + break + end + end + end + end + + for x = -radius, radius do + for y = -radius, radius do + for z = radius, 0, -1 do + local d = x * x + y * y + z * z + if d <= radius * radius then + local pos = { x = x, y = y, z = z } + sphere[minetest.hash_node_position(pos)] = pos + break + end + end + end + end + + for _, pos in pairs(sphere) do + rays[#rays + 1] = vector.normalize(pos) + end + + return rays +end + +-- Get position from hash. This should be identical to +-- 'minetest.get_position_from_hash' but is used in case the hashing function +-- would change. +local function get_position_from_hash(hash) + local pos = {} + pos.x = (hash % 65536) - 32768 + hash = math.floor(hash / 65536) + pos.y = (hash % 65536) - 32768 + hash = math.floor(hash / 65536) + pos.z = (hash % 65536) - 32768 + return pos +end + +-- Traces the rays of an explosion, and updates the environment. +-- +-- Parameters: +-- pos - Where the rays in the explosion should start from +-- strength - The strength of each ray +-- raydirs - The directions for each ray +-- radius - The maximum distance each ray will go +-- drop_chance - Chance that destroy nodes drop their items +-- (becomes '1.0 / strength' if unspecified) +-- +-- Note that this function has been optimized, it contains code which has been +-- inlined to avoid function calls and unnecessary table creation. This was +-- measured to give a significant performance increase. +local function trace_explode(pos, strength, raydirs, radius, drop_chance) + local vm = minetest.get_voxel_manip() + + local emin, emax = vm:read_from_map(vector.subtract(pos, radius), + vector.add(pos, radius)) + local emin_x = emin.x + local emin_y = emin.y + local emin_z = emin.z + + local ystride = (emax.x - emin_x + 1) + local zstride = ystride * (emax.y - emin_y + 1) + local pos_x = pos.x + local pos_y = pos.y + local pos_z = pos.z + + local area = VoxelArea:new { + MinEdge = emin, + MaxEdge = emax + } + local data = vm:get_data() + local destroy = {} + + -- Trace rays + for i = 1, #raydirs do + local rpos_x = pos.x + local rpos_y = pos.y + local rpos_z = pos.z + local rdir_x = raydirs[i].x + local rdir_y = raydirs[i].y + local rdir_z = raydirs[i].z + local rstr = (0.7 + math.random() * 0.6) * strength + + for r = 0, math.ceil(radius * (1.0 / STEP_LENGTH)) do + local npos_x = math.floor(rpos_x + 0.5) + local npos_y = math.floor(rpos_y + 0.5) + local npos_z = math.floor(rpos_z + 0.5) + local idx = (npos_z - emin_z) * zstride + (npos_y - emin_y) * ystride + + npos_x - emin_x + 1 + + local cid = data[idx] + local br = node_br[cid] + local hash = (npos_z + 32768) * 65536 * 65536 + + (npos_y + 32768) * 65536 + + npos_x + 32768 + + rpos_x = rpos_x + STEP_LENGTH * rdir_x + rpos_y = rpos_y + STEP_LENGTH * rdir_y + rpos_z = rpos_z + STEP_LENGTH * rdir_z + + rstr = rstr - 0.75 * STEP_LENGTH - (br + 0.3) * STEP_LENGTH + + if rstr <= 0 then + break + end + + if cid ~= AIR_CID then + destroy[hash] = idx + end + end + end + + if drop_chance == nil then + drop_chance = 1 / strength + end + + -- Remove destroyed blocks and drop items + for hash, idx in pairs(destroy) do + if math.random() <= drop_chance then + local name = minetest.get_name_from_content_id(data[idx]) + local drop = minetest.get_node_drops(name, "") + for _, item in ipairs(drop) do + if type(item) == "string" then + minetest.add_item(get_position_from_hash(hash), item) + end + end + end + data[idx] = AIR_CID + end + + -- Log explosion + minetest.log('action', 'Explosion at ' .. minetest.pos_to_string(pos) .. + ' with strength ' .. strength .. ' and radius ' .. radius) + + -- Update environment + vm:set_data(data) + vm:write_to_map(data) + vm:update_liquids() +end + +-- Create an explosion with strength at pos. +-- +-- Parameters: +-- pos - The position where the explosion originates from +-- strength - The blast strength of the explosion (a TNT explosion uses 4) +function mcl_explosions.explode(pos, strength) + -- The maximum blast radius (in the air) + local radius = math.ceil(1.3 * strength / (0.3 * 0.75) * 0.3) + + if not sphere_shapes[radius] then + sphere_shapes[radius] = compute_sphere_rays(radius) + end + shape = sphere_shapes[radius] + + trace_explode(pos, strength, shape, radius) +end From 6a77a5403454ad3cd71b35a9d20988decd38058a Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Fri, 17 Apr 2020 21:27:45 +0200 Subject: [PATCH 646/737] Increase z_index values to match new convention --- mods/ENTITIES/mobs_mc/1_items_default.lua | 2 +- mods/HUD/awards/api.lua | 8 ++++---- mods/HUD/show_wielded_item/init.lua | 2 +- mods/ITEMS/mcl_jukebox/init.lua | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/mods/ENTITIES/mobs_mc/1_items_default.lua b/mods/ENTITIES/mobs_mc/1_items_default.lua index e370934c..34ef6557 100644 --- a/mods/ENTITIES/mobs_mc/1_items_default.lua +++ b/mods/ENTITIES/mobs_mc/1_items_default.lua @@ -578,7 +578,7 @@ if c("totem") then position = { x=0.5, y=1 }, scale = { x=17, y=17 }, offset = { x=0, y=-178 }, - z_index = 10, + z_index = 100, }) minetest.after(3, function(name) local player = minetest.get_player_by_name(name) diff --git a/mods/HUD/awards/api.lua b/mods/HUD/awards/api.lua index f86cf0f2..325c3516 100644 --- a/mods/HUD/awards/api.lua +++ b/mods/HUD/awards/api.lua @@ -298,7 +298,7 @@ function awards.unlock(name, award) position = {x = 0.5, y = 0}, offset = {x = 0, y = 138}, alignment = {x = 0, y = -1}, - z_index = 11, + z_index = 101, }) local hud_announce if awdef.secret == true then @@ -315,7 +315,7 @@ function awards.unlock(name, award) position = {x = 0.5, y = 0}, offset = {x = 0, y = 40}, alignment = {x = 0, y = -1}, - z_index = 12, + z_index = 102, }) local three = player:hud_add({ hud_elem_type = "text", @@ -326,7 +326,7 @@ function awards.unlock(name, award) position = {x = 0.5, y = 0}, offset = {x = 30, y = 100}, alignment = {x = 0, y = -1}, - z_index = 12, + z_index = 102, }) --[[ We use a statbar instead of image here because statbar allows us to scale the image properly. Note that number is 2, thus leading to a single full image. @@ -342,7 +342,7 @@ function awards.unlock(name, award) offset = {x = -110, y = 62}, alignment = {x = 0, y = 0}, direction = 0, - z_index = 12, + z_index = 102, }) minetest.after(3, function(name) local player = minetest.get_player_by_name(name) diff --git a/mods/HUD/show_wielded_item/init.lua b/mods/HUD/show_wielded_item/init.lua index 04cef845..46a7e0c0 100644 --- a/mods/HUD/show_wielded_item/init.lua +++ b/mods/HUD/show_wielded_item/init.lua @@ -42,7 +42,7 @@ local function set_hud(player) alignment = {x=0, y=0}, number = 0xFFFFFF , text = "", - z_index = 10, + z_index = 100, }) end diff --git a/mods/ITEMS/mcl_jukebox/init.lua b/mods/ITEMS/mcl_jukebox/init.lua index 0328c707..15649208 100644 --- a/mods/ITEMS/mcl_jukebox/init.lua +++ b/mods/ITEMS/mcl_jukebox/init.lua @@ -70,7 +70,7 @@ local function now_playing(player, track_id) size = { x=100, y=100}, number = 0x55FFFF, text = text, - z_index = 10, + z_index = 100, }) active_huds[playername] = id end From e26837045244e5cd663163a32a005fb95547ca13 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sat, 18 Apr 2020 23:24:42 +0200 Subject: [PATCH 647/737] Add fire metadata to many nodes (unused for now) --- GROUPS.md | 6 +++++- mods/ITEMS/REDSTONE/mesecons_noteblock/init.lua | 2 +- mods/ITEMS/REDSTONE/mesecons_solarpanel/init.lua | 2 +- mods/ITEMS/mcl_banners/init.lua | 6 +++--- mods/ITEMS/mcl_beds/api.lua | 2 +- mods/ITEMS/mcl_books/init.lua | 2 +- mods/ITEMS/mcl_chests/init.lua | 6 +++--- mods/ITEMS/mcl_core/nodes_base.lua | 2 +- mods/ITEMS/mcl_core/nodes_climb.lua | 2 +- mods/ITEMS/mcl_core/nodes_misc.lua | 2 +- mods/ITEMS/mcl_core/nodes_trees.lua | 8 ++++---- mods/ITEMS/mcl_crafting_table/init.lua | 2 +- mods/ITEMS/mcl_doors/api_doors.lua | 7 ++++++- mods/ITEMS/mcl_doors/register.lua | 14 +++++++------- mods/ITEMS/mcl_farming/wheat.lua | 2 +- mods/ITEMS/mcl_fences/init.lua | 2 +- mods/ITEMS/mcl_flowers/init.lua | 6 +++--- mods/ITEMS/mcl_jukebox/init.lua | 2 +- mods/ITEMS/mcl_mushrooms/huge.lua | 2 +- mods/ITEMS/mcl_ocean/kelp.lua | 2 +- mods/ITEMS/mcl_signs/init.lua | 2 +- mods/ITEMS/mcl_stairs/register.lua | 4 ++-- mods/ITEMS/mcl_wool/init.lua | 4 ++-- mods/ITEMS/mclx_stairs/init.lua | 4 ++-- 24 files changed, 51 insertions(+), 42 deletions(-) diff --git a/GROUPS.md b/GROUPS.md index 2b11da4a..1ac531b8 100644 --- a/GROUPS.md +++ b/GROUPS.md @@ -36,7 +36,11 @@ Please read to learn how digging times * `dig_by_piston=1`: Blocks which will drop as an item when pushed by a piston. They also cannot be pulled by sticky pistons * `cultivatable=2`: Block will be turned into Farmland by using a hoe on it * `cultivatable=1`: Block will be turned into Dirt by using a hoe on it -* `flammable`: Block helps spreading fire and gets destroyed by nearby fire (rating doesn't matter) +* `flammable`: Block spreads fire + * `flammable>0`: Gets destroyed by fire + * `flammable=-1` Does not get destroyed by fire +* `fire_encouragement`: How quickly this block catches fire +* `fire_flammability`: How fast the block will burn away * `spreading_dirt_type=1`: A dirt-type block with a cover (e.g. grass) which may spread to neighbor dirt blocks * `dirtifies_below_solid=1`: This node turns into dirt immediately when a solid or dirtifier node is placed on top * `dirtifier=1`: This node turns nodes the above group into dirt when placed above diff --git a/mods/ITEMS/REDSTONE/mesecons_noteblock/init.lua b/mods/ITEMS/REDSTONE/mesecons_noteblock/init.lua index 5ac18ea4..1377a264 100644 --- a/mods/ITEMS/REDSTONE/mesecons_noteblock/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons_noteblock/init.lua @@ -25,7 +25,7 @@ S("• Anything else: Piano").."\n\n".. S("The note block will only play a note when it is below air, otherwise, it stays silent."), tiles = {"mesecons_noteblock.png"}, - groups = {handy=1,axey=1, material_wood=1}, + groups = {handy=1,axey=1, material_wood=1, flammable=-1}, is_ground_content = false, place_param2 = 0, on_rightclick = function (pos, node, clicker) -- change sound when rightclicked diff --git a/mods/ITEMS/REDSTONE/mesecons_solarpanel/init.lua b/mods/ITEMS/REDSTONE/mesecons_solarpanel/init.lua index eb5eafdb..6ae9dde9 100644 --- a/mods/ITEMS/REDSTONE/mesecons_solarpanel/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons_solarpanel/init.lua @@ -21,7 +21,7 @@ minetest.register_node("mesecons_solarpanel:solar_panel_on", { }, drop = "mesecons_solarpanel:solar_panel_off", _doc_items_create_entry = false, - groups = {handy=1,axey=1, not_in_creative_inventory = 1, material_wood=1}, + groups = {handy=1,axey=1, not_in_creative_inventory = 1, material_wood=1, flammable=-1}, sounds = mcl_sounds.node_sound_glass_defaults(), mesecons = {receptor = { state = mesecon.state.on, diff --git a/mods/ITEMS/mcl_banners/init.lua b/mods/ITEMS/mcl_banners/init.lua index 8c8869d6..02c15813 100644 --- a/mods/ITEMS/mcl_banners/init.lua +++ b/mods/ITEMS/mcl_banners/init.lua @@ -219,7 +219,7 @@ S("You can copy the pattern of a banner by placing two banners of the same color wield_image = "mcl_banners_item_base.png", selection_box = {type = "fixed", fixed= {-0.3, -0.5, -0.3, 0.3, 0.5, 0.3} }, - groups = {axey=1,handy=1, attached_node = 1, not_in_creative_inventory = 1, not_in_craft_guide = 1, material_wood=1, dig_by_piston=1 }, + groups = {axey=1,handy=1, attached_node = 1, not_in_creative_inventory = 1, not_in_craft_guide = 1, material_wood=1, dig_by_piston=1, flammable=-1 }, stack_max = 16, sounds = node_sounds, drop = "", -- Item drops are handled in entity code @@ -263,7 +263,7 @@ minetest.register_node("mcl_banners:hanging_banner", { wall_bottom = { -0.49, -0.49, -0.49, -0.41, -0.41, 0.49 }, }, selection_box = {type = "wallmounted", wall_side = {-0.5, -0.5, -0.5, -4/16, 0.5, 0.5} }, - groups = {axey=1,handy=1, attached_node = 1, not_in_creative_inventory = 1, not_in_craft_guide = 1, material_wood=1 }, + groups = {axey=1,handy=1, attached_node = 1, not_in_creative_inventory = 1, not_in_craft_guide = 1, material_wood=1, flammable=-1 }, stack_max = 16, sounds = node_sounds, drop = "", -- Item drops are handled in entity code @@ -326,7 +326,7 @@ for colorid, colortab in pairs(mcl_banners.colors) do wield_image = inv, -- Banner group groups together the banner items, but not the nodes. -- Used for crafting. - groups = { banner = 1, deco_block = 1, }, + groups = { banner = 1, deco_block = 1, flammable = -1 }, stack_max = 16, on_place = function(itemstack, placer, pointed_thing) diff --git a/mods/ITEMS/mcl_beds/api.lua b/mods/ITEMS/mcl_beds/api.lua index d4d001a4..7f11cf96 100644 --- a/mods/ITEMS/mcl_beds/api.lua +++ b/mods/ITEMS/mcl_beds/api.lua @@ -79,7 +79,7 @@ function mcl_beds.register_bed(name, def) paramtype2 = "facedir", is_ground_content = false, stack_max = 1, - groups = {handy=1, flammable = 3, bed = 1, dig_by_piston=1, bouncy=66, fall_damage_add_percent=-50, deco_block = 1}, + groups = {handy=1, flammable = 3, bed = 1, dig_by_piston=1, bouncy=66, fall_damage_add_percent=-50, deco_block = 1, flammable=-1}, _mcl_hardness = 0.2, _mcl_blast_resistance = 1, sounds = def.sounds or default_sounds, diff --git a/mods/ITEMS/mcl_books/init.lua b/mods/ITEMS/mcl_books/init.lua index 50eadec6..586b7fe0 100644 --- a/mods/ITEMS/mcl_books/init.lua +++ b/mods/ITEMS/mcl_books/init.lua @@ -339,7 +339,7 @@ minetest.register_node("mcl_books:bookshelf", { tiles = {"mcl_books_bookshelf_top.png", "mcl_books_bookshelf_top.png", "default_bookshelf.png"}, stack_max = 64, is_ground_content = false, - groups = {handy=1,axey=1, flammable=3,building_block=1, material_wood=1}, + groups = {handy=1,axey=1, flammable=3,building_block=1, material_wood=1, fire_encouragement=30, fire_flammability=20}, drop = "mcl_books:book 3", sounds = wood_sound, _mcl_blast_resistance = 7.5, diff --git a/mods/ITEMS/mcl_chests/init.lua b/mods/ITEMS/mcl_chests/init.lua index e1711af4..3d36aa13 100644 --- a/mods/ITEMS/mcl_chests/init.lua +++ b/mods/ITEMS/mcl_chests/init.lua @@ -134,7 +134,7 @@ minetest.register_node("mcl_chests:"..basename, { paramtype2 = "facedir", stack_max = 64, drop = drop, - groups = {handy=1,axey=1, container=2, deco_block=1, material_wood=1}, + groups = {handy=1,axey=1, container=2, deco_block=1, material_wood=1,flammable=-1}, is_ground_content = false, sounds = mcl_sounds.node_sound_wood_defaults(), on_construct = function(pos) @@ -246,7 +246,7 @@ minetest.register_node("mcl_chests:"..basename.."_left", { tiles = tiles_table.left, paramtype = "light", paramtype2 = "facedir", - groups = {handy=1,axey=1, container=5,not_in_creative_inventory=1, material_wood=1}, + groups = {handy=1,axey=1, container=5,not_in_creative_inventory=1, material_wood=1,flammable=-1}, drop = drop, is_ground_content = false, sounds = mcl_sounds.node_sound_wood_defaults(), @@ -381,7 +381,7 @@ minetest.register_node("mcl_chests:"..basename.."_right", { tiles = tiles_table.right, paramtype = "light", paramtype2 = "facedir", - groups = {handy=1,axey=1, container=6,not_in_creative_inventory=1, material_wood=1}, + groups = {handy=1,axey=1, container=6,not_in_creative_inventory=1, material_wood=1,flammable=-1}, drop = drop, is_ground_content = false, sounds = mcl_sounds.node_sound_wood_defaults(), diff --git a/mods/ITEMS/mcl_core/nodes_base.lua b/mods/ITEMS/mcl_core/nodes_base.lua index 6c47dd3f..29a087bb 100644 --- a/mods/ITEMS/mcl_core/nodes_base.lua +++ b/mods/ITEMS/mcl_core/nodes_base.lua @@ -680,7 +680,7 @@ minetest.register_node("mcl_core:coalblock", { tiles = {"default_coal_block.png"}, is_ground_content = false, stack_max = 64, - groups = {pickaxey=1, flammable=1, building_block=1, material_stone=1}, + groups = {pickaxey=1, flammable=1, building_block=1, material_stone=1, fire_encouragement=5, fire_flammability=5}, sounds = mcl_sounds.node_sound_stone_defaults(), _mcl_blast_resistance = 30, _mcl_hardness = 5, diff --git a/mods/ITEMS/mcl_core/nodes_climb.lua b/mods/ITEMS/mcl_core/nodes_climb.lua index 5167d082..761bfd44 100644 --- a/mods/ITEMS/mcl_core/nodes_climb.lua +++ b/mods/ITEMS/mcl_core/nodes_climb.lua @@ -104,7 +104,7 @@ minetest.register_node("mcl_core:vine", { type = "wallmounted", }, stack_max = 64, - groups = {handy=1,axey=1,shearsy=1,swordy=1, flammable=2,deco_block=1,destroy_by_lava_flow=1,dig_by_piston=1}, + groups = {handy=1,axey=1,shearsy=1,swordy=1, flammable=2,deco_block=1,destroy_by_lava_flow=1,dig_by_piston=1, fire_encouragement=15, fire_flammability=100}, sounds = mcl_sounds.node_sound_leaves_defaults(), drop = "", _mcl_shears_drop = true, diff --git a/mods/ITEMS/mcl_core/nodes_misc.lua b/mods/ITEMS/mcl_core/nodes_misc.lua index 43161b44..f9637cbc 100644 --- a/mods/ITEMS/mcl_core/nodes_misc.lua +++ b/mods/ITEMS/mcl_core/nodes_misc.lua @@ -96,7 +96,7 @@ minetest.register_node("mcl_core:deadbush", { walkable = false, stack_max = 64, buildable_to = true, - groups = {handy=1,shearsy=1, flammable=3,attached_node=1,plant=1,non_mycelium_plant=1,dig_by_water=1,destroy_by_lava_flow=1,deco_block=1}, + groups = {handy=1,shearsy=1, flammable=3,attached_node=1,plant=1,non_mycelium_plant=1,dig_by_water=1,destroy_by_lava_flow=1,deco_block=1, fire_encouragement=60, fire_flammability=100}, drop = { max_items = 1, items = { diff --git a/mods/ITEMS/mcl_core/nodes_trees.lua b/mods/ITEMS/mcl_core/nodes_trees.lua index ad162e5b..f384c305 100644 --- a/mods/ITEMS/mcl_core/nodes_trees.lua +++ b/mods/ITEMS/mcl_core/nodes_trees.lua @@ -17,7 +17,7 @@ local register_tree_trunk = function(subname, description_trunk, description_bar paramtype2 = "facedir", on_place = mcl_util.rotate_axis, stack_max = 64, - groups = {handy=1,axey=1, tree=1, flammable=2, building_block=1, material_wood=1}, + groups = {handy=1,axey=1, tree=1, flammable=2, building_block=1, material_wood=1, fire_encouragement=5, fire_flammability=5}, sounds = mcl_sounds.node_sound_wood_defaults(), on_rotate = on_rotate, _mcl_blast_resistance = 10, @@ -31,7 +31,7 @@ local register_tree_trunk = function(subname, description_trunk, description_bar paramtype2 = "facedir", on_place = mcl_util.rotate_axis, stack_max = 64, - groups = {handy=1,axey=1, bark=1, flammable=2, building_block=1, material_wood=1}, + groups = {handy=1,axey=1, bark=1, flammable=2, building_block=1, material_wood=1, fire_encouragement=5, fire_flammability=5}, sounds = mcl_sounds.node_sound_wood_defaults(), is_ground_content = false, on_rotate = on_rotate, @@ -56,7 +56,7 @@ local register_wooden_planks = function(subname, description, tiles) tiles = tiles, stack_max = 64, is_ground_content = false, - groups = {handy=1,axey=1, flammable=3,wood=1,building_block=1, material_wood=1}, + groups = {handy=1,axey=1, flammable=3,wood=1,building_block=1, material_wood=1, fire_encouragement=5, fire_flammability=20}, sounds = mcl_sounds.node_sound_wood_defaults(), _mcl_blast_resistance = 15, _mcl_hardness = 2, @@ -104,7 +104,7 @@ local register_leaves = function(subname, description, longdesc, tiles, drop1, d tiles = tiles, paramtype = "light", stack_max = 64, - groups = {handy=1,shearsy=1,swordy=1, leafdecay=leafdecay_distance, flammable=2, leaves=1, deco_block=1, dig_by_piston=1}, + groups = {handy=1,shearsy=1,swordy=1, leafdecay=leafdecay_distance, flammable=2, leaves=1, deco_block=1, dig_by_piston=1, fire_encouragement=30, fire_flammability=60}, drop = drop, _mcl_shears_drop = true, sounds = mcl_sounds.node_sound_leaves_defaults(), diff --git a/mods/ITEMS/mcl_crafting_table/init.lua b/mods/ITEMS/mcl_crafting_table/init.lua index 3c19e288..295f0372 100644 --- a/mods/ITEMS/mcl_crafting_table/init.lua +++ b/mods/ITEMS/mcl_crafting_table/init.lua @@ -10,7 +10,7 @@ minetest.register_node("mcl_crafting_table:crafting_table", { tiles = {"crafting_workbench_top.png", "default_wood.png", "crafting_workbench_side.png", "crafting_workbench_side.png", "crafting_workbench_front.png", "crafting_workbench_front.png"}, paramtype2 = "facedir", - groups = {handy=1,axey=1, deco_block=1, material_wood=1}, + groups = {handy=1,axey=1, deco_block=1, material_wood=1,flammable=-1}, on_rightclick = function(pos, node, player, itemstack) player:get_inventory():set_width("craft", 3) player:get_inventory():set_size("craft", 9) diff --git a/mods/ITEMS/mcl_doors/api_doors.lua b/mods/ITEMS/mcl_doors/api_doors.lua index f3943460..ee2504e9 100644 --- a/mods/ITEMS/mcl_doors/api_doors.lua +++ b/mods/ITEMS/mcl_doors/api_doors.lua @@ -94,6 +94,11 @@ function mcl_doors:register_door(name, def) end end + local craftitem_groups = { mesecon_conductor_craftable = 1, deco_block = 1 } + if def.groups and def.groups.flammable then + craftitem_groups.flammable = def.groups.flammable + end + minetest.register_craftitem(name, { description = def.description, _tt_help = tt_help, @@ -101,7 +106,7 @@ function mcl_doors:register_door(name, def) _doc_items_usagehelp = usagehelp, inventory_image = def.inventory_image, stack_max = 64, - groups = { mesecon_conductor_craftable = 1, deco_block = 1 }, + groups = craftitem_groups, on_place = function(itemstack, placer, pointed_thing) if not pointed_thing.type == "node" or not placer or not placer:is_player() then return itemstack diff --git a/mods/ITEMS/mcl_doors/register.lua b/mods/ITEMS/mcl_doors/register.lua index e8f990f9..58d2d276 100644 --- a/mods/ITEMS/mcl_doors/register.lua +++ b/mods/ITEMS/mcl_doors/register.lua @@ -11,7 +11,7 @@ mcl_doors:register_door("mcl_doors:wooden_door", { _doc_items_longdesc = wood_longdesc, _doc_items_usagehelp = wood_usagehelp, inventory_image = "doors_item_wood.png", - groups = {handy=1,axey=1, material_wood=1}, + groups = {handy=1,axey=1, material_wood=1, flammable=-1}, _mcl_hardness = 3, _mcl_blast_resistance = 15, tiles_bottom = {"mcl_doors_door_wood_lower.png", "mcl_doors_door_wood_side_lower.png"}, @@ -34,7 +34,7 @@ mcl_doors:register_door("mcl_doors:acacia_door", { _doc_items_longdesc = wood_longdesc, _doc_items_usagehelp = wood_usagehelp, inventory_image = "mcl_doors_door_acacia.png", - groups = {handy=1,axey=1, material_wood=1}, + groups = {handy=1,axey=1, material_wood=1, flammable=-1}, _mcl_hardness = 3, _mcl_blast_resistance = 15, tiles_bottom = {"mcl_doors_door_acacia_lower.png", "mcl_doors_door_acacia_side_lower.png"}, @@ -57,7 +57,7 @@ mcl_doors:register_door("mcl_doors:birch_door", { _doc_items_longdesc = wood_longdesc, _doc_items_usagehelp = wood_usagehelp, inventory_image = "mcl_doors_door_birch.png", - groups = {handy=1,axey=1, material_wood=1}, + groups = {handy=1,axey=1, material_wood=1, flammable=-1}, _mcl_hardness = 3, _mcl_blast_resistance = 15, tiles_bottom = {"mcl_doors_door_birch_lower.png", "mcl_doors_door_birch_side_lower.png"}, @@ -80,7 +80,7 @@ mcl_doors:register_door("mcl_doors:dark_oak_door", { _doc_items_longdesc = wood_longdesc, _doc_items_usagehelp = wood_usagehelp, inventory_image = "mcl_doors_door_dark_oak.png", - groups = {handy=1,axey=1, material_wood=1}, + groups = {handy=1,axey=1, material_wood=1, flammable=-1}, _mcl_hardness = 3, _mcl_blast_resistance = 15, tiles_bottom = {"mcl_doors_door_dark_oak_lower.png", "mcl_doors_door_dark_oak_side_lower.png"}, @@ -103,7 +103,7 @@ mcl_doors:register_door("mcl_doors:jungle_door", { _doc_items_longdesc = wood_longdesc, _doc_items_usagehelp = wood_usagehelp, inventory_image = "mcl_doors_door_jungle.png", - groups = {handy=1,axey=1, material_wood=1}, + groups = {handy=1,axey=1, material_wood=1, flammable=-1}, _mcl_hardness = 3, _mcl_blast_resistance = 15, tiles_bottom = {"mcl_doors_door_jungle_lower.png", "mcl_doors_door_jungle_side_lower.png"}, @@ -126,7 +126,7 @@ mcl_doors:register_door("mcl_doors:spruce_door", { _doc_items_longdesc = wood_longdesc, _doc_items_usagehelp = wood_usagehelp, inventory_image = "mcl_doors_door_spruce.png", - groups = {handy=1,axey=1, material_wood=1}, + groups = {handy=1,axey=1, material_wood=1, flammable=-1}, _mcl_hardness = 3, _mcl_blast_resistance = 15, tiles_bottom = {"mcl_doors_door_spruce_lower.png", "mcl_doors_door_spruce_side_lower.png"}, @@ -222,7 +222,7 @@ for w=1, #woods do tile_front = woods[w][3], tile_side = woods[w][4], wield_image = woods[w][3], - groups = {handy=1,axey=1, mesecon_effector_on=1, material_wood=1}, + groups = {handy=1,axey=1, mesecon_effector_on=1, material_wood=1, flammable=-1}, _mcl_hardness = 3, _mcl_blast_resistance = 15, sounds = mcl_sounds.node_sound_wood_defaults(), diff --git a/mods/ITEMS/mcl_farming/wheat.lua b/mods/ITEMS/mcl_farming/wheat.lua index 0bf8724e..4df26ec8 100644 --- a/mods/ITEMS/mcl_farming/wheat.lua +++ b/mods/ITEMS/mcl_farming/wheat.lua @@ -146,7 +146,7 @@ minetest.register_node("mcl_farming:hay_block", { paramtype2 = "facedir", is_ground_content = false, on_place = mcl_util.rotate_axis, - groups = {handy=1, flammable=2, building_block=1, fall_damage_add_percent=-80}, + groups = {handy=1, flammable=2, fire_encouragement=60, fire_flammability=20, building_block=1, fall_damage_add_percent=-80}, sounds = mcl_sounds.node_sound_leaves_defaults(), on_rotate = on_rotate, _mcl_blast_resistance = 2.5, diff --git a/mods/ITEMS/mcl_fences/init.lua b/mods/ITEMS/mcl_fences/init.lua index 7583f054..650854f8 100644 --- a/mods/ITEMS/mcl_fences/init.lua +++ b/mods/ITEMS/mcl_fences/init.lua @@ -246,7 +246,7 @@ mcl_fences.register_fence_and_fence_gate = function(id, fence_name, fence_gate_n return fence_id, gate_id, open_gate_id end -local wood_groups = {handy=1,axey=1, flammable=2,fence_wood=1} +local wood_groups = {handy=1,axey=1, flammable=2,fence_wood=1, fire_encouragement=5, fire_flammability=20} local wood_connect = {"group:fence_wood"} local wood_sounds = mcl_sounds.node_sound_wood_defaults() diff --git a/mods/ITEMS/mcl_flowers/init.lua b/mods/ITEMS/mcl_flowers/init.lua index 24f551a2..68ad9538 100644 --- a/mods/ITEMS/mcl_flowers/init.lua +++ b/mods/ITEMS/mcl_flowers/init.lua @@ -65,7 +65,7 @@ local function add_simple_flower(name, desc, image, simple_selection_box) paramtype = "light", walkable = false, stack_max = 64, - groups = {dig_immediate=3,flammable=2,plant=1,flower=1,place_flowerlike=1,non_mycelium_plant=1,attached_node=1,dig_by_water=1,destroy_by_lava_flow=1,dig_by_piston=1,enderman_takable=1,deco_block=1}, + groups = {dig_immediate=3,flammable=2,fire_encouragement=60,fire_flammability=100,plant=1,flower=1,place_flowerlike=1,non_mycelium_plant=1,attached_node=1,dig_by_water=1,destroy_by_lava_flow=1,dig_by_piston=1,enderman_takable=1,deco_block=1}, sounds = mcl_sounds.node_sound_leaves_defaults(), node_placement_prediction = "", on_place = on_place_flower, @@ -122,7 +122,7 @@ local def_tallgrass = { walkable = false, buildable_to = true, is_ground_content = true, - groups = {handy=1,shearsy=1, flammable=3,attached_node=1,plant=1,place_flowerlike=2,non_mycelium_plant=1,dig_by_water=1,destroy_by_lava_flow=1,deco_block=1}, + groups = {handy=1,shearsy=1, flammable=3,fire_encouragement=60,fire_flammability=100,attached_node=1,plant=1,place_flowerlike=2,non_mycelium_plant=1,dig_by_water=1,destroy_by_lava_flow=1,deco_block=1}, sounds = mcl_sounds.node_sound_leaves_defaults(), drop = wheat_seed_drop, _mcl_shears_drop = true, @@ -157,7 +157,7 @@ local function add_large_plant(name, desc, longdesc, bottom_img, top_img, inv_im is_flower = true end - local bottom_groups = {flammable=2,non_mycelium_plant=1,attached_node=1, dig_by_water=1,destroy_by_lava_flow=1,dig_by_piston=1, plant=1,double_plant=1,deco_block=1,not_in_creative_inventory=noncreative} + local bottom_groups = {flammable=2,fire_encouragement=60,fire_flammability=100, non_mycelium_plant=1,attached_node=1, dig_by_water=1,destroy_by_lava_flow=1,dig_by_piston=1, plant=1,double_plant=1,deco_block=1,not_in_creative_inventory=noncreative} if is_flower then bottom_groups.flower = 1 bottom_groups.place_flowerlike = 1 diff --git a/mods/ITEMS/mcl_jukebox/init.lua b/mods/ITEMS/mcl_jukebox/init.lua index 15649208..52a3884b 100644 --- a/mods/ITEMS/mcl_jukebox/init.lua +++ b/mods/ITEMS/mcl_jukebox/init.lua @@ -132,7 +132,7 @@ minetest.register_node("mcl_jukebox:jukebox", { _doc_items_usagehelp = S("Place a music disc into an empty jukebox to insert the music disc and play music. If the jukebox already has a music disc, you will retrieve this music disc first. The music can only be heard by you, not by other players."), tiles = {"mcl_jukebox_top.png", "mcl_jukebox_side.png", "mcl_jukebox_side.png"}, sounds = mcl_sounds.node_sound_wood_defaults(), - groups = {handy=1,axey=1, container=7, deco_block=1, material_wood=1}, + groups = {handy=1,axey=1, container=7, deco_block=1, material_wood=1, flammable=-1}, is_ground_content = false, on_construct = function(pos) local meta = minetest.get_meta(pos) diff --git a/mods/ITEMS/mcl_mushrooms/huge.lua b/mods/ITEMS/mcl_mushrooms/huge.lua index 54e719a5..7ea8da68 100644 --- a/mods/ITEMS/mcl_mushrooms/huge.lua +++ b/mods/ITEMS/mcl_mushrooms/huge.lua @@ -1,7 +1,7 @@ local S = minetest.get_translator("mcl_mushrooms") local template = { - groups = {handy=1,axey=1, building_block = 1, material_wood = 1 }, + groups = {handy=1,axey=1, building_block = 1, material_wood = 1, flammable = -1 }, sounds = mcl_sounds.node_sound_wood_defaults(), is_ground_content = true, _mcl_blast_resistance = 1, diff --git a/mods/ITEMS/mcl_ocean/kelp.lua b/mods/ITEMS/mcl_ocean/kelp.lua index a559697f..a79ec06a 100644 --- a/mods/ITEMS/mcl_ocean/kelp.lua +++ b/mods/ITEMS/mcl_ocean/kelp.lua @@ -235,7 +235,7 @@ minetest.register_node("mcl_ocean:dried_kelp_block", { description = S("Dried Kelp Block"), _doc_items_longdesc = S("A decorative block that serves as a great furnace fuel."), tiles = { "mcl_ocean_dried_kelp_top.png", "mcl_ocean_dried_kelp_bottom.png", "mcl_ocean_dried_kelp_side.png" }, - groups = { handy = 1, building_block = 1, flammable = 2 }, + groups = { handy = 1, building_block = 1, flammable = 2, fire_encouragement = 30, fire_flammability = 60 }, sounds = mcl_sounds.node_sound_leaves_defaults(), paramtype2 = "facedir", on_place = mcl_util.rotate_axis, diff --git a/mods/ITEMS/mcl_signs/init.lua b/mods/ITEMS/mcl_signs/init.lua index 2d9fc5de..32e7f0f7 100644 --- a/mods/ITEMS/mcl_signs/init.lua +++ b/mods/ITEMS/mcl_signs/init.lua @@ -185,7 +185,7 @@ local function get_wall_signtext_info(param2, nodename) end end -local sign_groups = {handy=1,axey=1, flammable=1, deco_block=1, material_wood=1, attached_node=1, dig_by_piston=1} +local sign_groups = {handy=1,axey=1, flammable=1, deco_block=1, material_wood=1, attached_node=1, dig_by_piston=1, flammable=-1} local destruct_sign = function(pos) local objects = minetest.get_objects_inside_radius(pos, 0.5) diff --git a/mods/ITEMS/mcl_stairs/register.lua b/mods/ITEMS/mcl_stairs/register.lua index 9f4c3425..e545836e 100644 --- a/mods/ITEMS/mcl_stairs/register.lua +++ b/mods/ITEMS/mcl_stairs/register.lua @@ -17,14 +17,14 @@ local woods = { for w=1, #woods do local wood = woods[w] mcl_stairs.register_stair(wood[1], "mcl_core:"..wood[1], - {handy=1,axey=1, flammable=3,wood_stairs=1, material_wood=1}, + {handy=1,axey=1, flammable=3,wood_stairs=1, material_wood=1, fire_encouragement=5, fire_flammability=20}, {wood[2]}, wood[3], mcl_sounds.node_sound_wood_defaults(), 2, "woodlike") mcl_stairs.register_slab(wood[1], "mcl_core:"..wood[1], - {handy=1,axey=1, flammable=3,wood_slab=1, material_wood=1}, + {handy=1,axey=1, flammable=3,wood_slab=1, material_wood=1, fire_encouragement=5, fire_flammability=20}, {wood[2]}, wood[4], mcl_sounds.node_sound_wood_defaults(), diff --git a/mods/ITEMS/mcl_wool/init.lua b/mods/ITEMS/mcl_wool/init.lua index 9e3785b3..86f1e827 100644 --- a/mods/ITEMS/mcl_wool/init.lua +++ b/mods/ITEMS/mcl_wool/init.lua @@ -60,7 +60,7 @@ for _, row in ipairs(wool.dyes) do stack_max = 64, is_ground_content = false, tiles = {texture..".png"}, - groups = {handy=1,shearsy_wool=1, flammable=1,wool=1,building_block=1,[color_group]=1}, + groups = {handy=1,shearsy_wool=1, flammable=1,fire_encouragement=30, fire_flammability=60, wool=1,building_block=1,[color_group]=1}, sounds = mcl_sounds.node_sound_wool_defaults(), _mcl_hardness = 0.8, _mcl_blast_resistance = 4, @@ -76,7 +76,7 @@ for _, row in ipairs(wool.dyes) do tiles = {texture..".png"}, wield_image = texture..".png", wield_scale = { x=1, y=1, z=0.5 }, - groups = {handy=1, carpet=1,attached_node=1,flammable=1,dig_by_water=1,deco_block=1,[color_group]=1}, + groups = {handy=1, carpet=1,attached_node=1,flammable=1,fire_encouragement=60, fire_flammability=20, dig_by_water=1,deco_block=1,[color_group]=1}, sounds = mcl_sounds.node_sound_wool_defaults(), paramtype = "light", sunlight_propagates = true, diff --git a/mods/ITEMS/mclx_stairs/init.lua b/mods/ITEMS/mclx_stairs/init.lua index b9a170df..450436da 100644 --- a/mods/ITEMS/mclx_stairs/init.lua +++ b/mods/ITEMS/mclx_stairs/init.lua @@ -19,14 +19,14 @@ for b=1, #barks do id = "mcl_core:"..bark[1].."tree" end mcl_stairs.register_stair(sub, id, - {handy=1,axey=1, flammable=3, bark_stairs=1, material_wood=1}, + {handy=1,axey=1, flammable=3, bark_stairs=1, material_wood=1, fire_encouragement=5, fire_flammability=5}, {minetest.registered_nodes[id].tiles[3]}, bark[2], mcl_sounds.node_sound_wood_defaults(), 2, "woodlike") mcl_stairs.register_slab(sub, id, - {handy=1,axey=1, flammable=3, bark_slab=1, material_wood=1}, + {handy=1,axey=1, flammable=3, bark_slab=1, material_wood=1, fire_encouragement=5, fire_flammability=5}, {minetest.registered_nodes[id].tiles[3]}, bark[3], mcl_sounds.node_sound_wood_defaults(), From 77c95fe8c31c2b71d0be439a81d6cc69e20bda36 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elias=20=C3=85str=C3=B6m?= Date: Wed, 15 Apr 2020 20:30:12 +0200 Subject: [PATCH 648/737] Add particles and sounds from explosions --- mods/CORE/mcl_explosions/init.lua | 51 ++++++++++++++++++++++++++----- 1 file changed, 43 insertions(+), 8 deletions(-) diff --git a/mods/CORE/mcl_explosions/init.lua b/mods/CORE/mcl_explosions/init.lua index 6909bdc6..a18f5651 100644 --- a/mods/CORE/mcl_explosions/init.lua +++ b/mods/CORE/mcl_explosions/init.lua @@ -133,6 +133,29 @@ local function compute_sphere_rays(radius) return rays end +-- Add particles from explosion +-- +-- Parameters: +-- pos - The position of the explosion +-- radius - The radius of the explosion +local function add_particles(pos, radius) + minetest.add_particlespawner({ + amount = 64, + time = 0.125, + minpos = pos, + maxpos = pos, + minvel = {x = -radius, y = -radius, z = -radius}, + maxvel = {x = radius, y = radius, z = radius}, + minacc = vector.new(), + maxacc = vector.new(), + minexptime = 0.5, + maxexptime = 1.0, + minsize = radius * 0.5, + maxsize = radius * 1.0, + texture = "tnt_smoke.png", + }) +end + -- Get position from hash. This should be identical to -- 'minetest.get_position_from_hash' but is used in case the hashing function -- would change. @@ -153,8 +176,7 @@ end -- strength - The strength of each ray -- raydirs - The directions for each ray -- radius - The maximum distance each ray will go --- drop_chance - Chance that destroy nodes drop their items --- (becomes '1.0 / strength' if unspecified) +-- drop_chance - The chance that destroyed nodes will drop their items -- -- Note that this function has been optimized, it contains code which has been -- inlined to avoid function calls and unnecessary table creation. This was @@ -220,10 +242,6 @@ local function trace_explode(pos, strength, raydirs, radius, drop_chance) end end - if drop_chance == nil then - drop_chance = 1 / strength - end - -- Remove destroyed blocks and drop items for hash, idx in pairs(destroy) do if math.random() <= drop_chance then @@ -253,7 +271,14 @@ end -- Parameters: -- pos - The position where the explosion originates from -- strength - The blast strength of the explosion (a TNT explosion uses 4) -function mcl_explosions.explode(pos, strength) +-- info - Table containing information about explosion. +-- +-- Values in info: +-- drop_chance - If specified becomes the drop chance of all nodes in the +-- explosion (defaults to 1.0 / strength) +-- no_sound - If true then the explosion will not play a sound +-- no_particle - If true then the explosion will not create particles +function mcl_explosions.explode(pos, strength, info) -- The maximum blast radius (in the air) local radius = math.ceil(1.3 * strength / (0.3 * 0.75) * 0.3) @@ -262,5 +287,15 @@ function mcl_explosions.explode(pos, strength) end shape = sphere_shapes[radius] - trace_explode(pos, strength, shape, radius) + trace_explode(pos, strength, shape, radius, (info and info.drop_chance) or 1 / strength) + + if not (info and info.no_sound) then + add_particles(pos, radius) + end + if not (info and info.no_particle) then + minetest.sound_play("tnt_explode", { + pos = pos, gain = 1.0, + max_hear_distance = strength * 16 + }, true) + end end From ca7c8c23c79c0c892cdea53ade613fcaf44892e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elias=20=C3=85str=C3=B6m?= Date: Thu, 16 Apr 2020 23:05:50 +0200 Subject: [PATCH 649/737] Add entity damage and player knockback Could not find a way to add knockback to entities. After adding a velocity to them they will just slide around indefinitely. Because of this, knockback is only enabled on players for now. --- mods/CORE/mcl_explosions/init.lua | 128 +++++++++++++++++++++++++++--- mods/ITEMS/mcl_tnt/init.lua | 5 ++ 2 files changed, 123 insertions(+), 10 deletions(-) diff --git a/mods/CORE/mcl_explosions/init.lua b/mods/CORE/mcl_explosions/init.lua index a18f5651..225c2e77 100644 --- a/mods/CORE/mcl_explosions/init.lua +++ b/mods/CORE/mcl_explosions/init.lua @@ -24,16 +24,21 @@ local sphere_shapes = {} -- Saved node definitions in table using cid-keys for faster look-up. local node_br = {} +local node_on_blast = {} local AIR_CID = minetest.get_content_id('air') -- The step length for the rays (Minecraft uses 0.3) local STEP_LENGTH = 0.3 +-- How many rays to compute entity exposure to explosion +local N_EXPOSURE_RAYS = 16 + minetest.after(0, function() -- Store blast resistance values by content ids to improve performance. for name, def in pairs(minetest.registered_nodes) do node_br[minetest.get_content_id(name)] = def._mcl_blast_resistance or 0 + node_on_blast[minetest.get_content_id(name)] = def.on_blast end end) @@ -203,7 +208,7 @@ local function trace_explode(pos, strength, raydirs, radius, drop_chance) local data = vm:get_data() local destroy = {} - -- Trace rays + -- Trace rays for environment destruction for i = 1, #raydirs do local rpos_x = pos.x local rpos_y = pos.y @@ -237,23 +242,126 @@ local function trace_explode(pos, strength, raydirs, radius, drop_chance) end if cid ~= AIR_CID then - destroy[hash] = idx + destroy[hash] = idx + end + end + end + + -- Entities in radius of explosion + local punch_radius = 2 * strength + local objs = minetest.get_objects_inside_radius(pos, punch_radius) + + -- Trace rays for entity damage + for _, obj in pairs(objs) do + -- Object position and direction to explosion center + local opos = obj:get_pos() + + if obj:get_luaentity() ~= nil or obj:is_player() then + local collisionbox = nil + + if obj:is_player() then + collisionbox = { -0.3, 0.0, -0.3, 0.3, 1.77, 0.3 } + elseif obj:get_luaentity().name then + local def = minetest.registered_entities[obj:get_luaentity().name] + collisionbox = def.collisionbox + end + + if collisionbox then + -- Create rays from random points in the collision box + local x1 = collisionbox[1] * 2 + local y1 = collisionbox[2] * 2 + local z1 = collisionbox[3] * 2 + local x2 = collisionbox[4] * 2 + local y2 = collisionbox[5] * 2 + local z2 = collisionbox[6] * 2 + local x_len = math.abs(x2 - x1) + local y_len = math.abs(y2 - y1) + local z_len = math.abs(z2 - z1) + + -- Move object position to the center of its bounding box + opos.x = opos.x + x1 + x2 + opos.y = opos.y + y1 + y2 + opos.z = opos.z + z1 + z2 + + -- Count number of rays from collision box which are unobstructed + local count = N_EXPOSURE_RAYS + + for i = 1, N_EXPOSURE_RAYS do + local rpos_x = opos.x + math.random() * x_len - x_len / 2 + local rpos_y = opos.y + math.random() * y_len - y_len / 2 + local rpos_z = opos.z + math.random() * z_len - z_len / 2 + local rdir_x = pos.x - rpos_x + local rdir_y = pos.y - rpos_y + local rdir_z = pos.z - rpos_z + local rdir_len = math.hypot(rdir_x, math.hypot(rdir_y, rdir_z)) + rdir_x = rdir_x / rdir_len + rdir_y = rdir_y / rdir_len + rdir_z = rdir_z / rdir_len + + for i=0, rdir_len / STEP_LENGTH do + rpos_x = rpos_x + rdir_x * STEP_LENGTH + rpos_y = rpos_y + rdir_y * STEP_LENGTH + rpos_z = rpos_z + rdir_z * STEP_LENGTH + local npos_x = math.floor(rpos_x + 0.5) + local npos_y = math.floor(rpos_y + 0.5) + local npos_z = math.floor(rpos_z + 0.5) + local idx = (npos_z - emin_z) * zstride + (npos_y - emin_y) * ystride + + npos_x - emin_x + 1 + + + local cid = data[idx] + local br = node_br[cid] + + if br ~= 0 then + count = count - 1 + break + end + end + end + + -- Punch entity with damage depending on explosion exposure and + -- distance to explosion + local exposure = count / N_EXPOSURE_RAYS + local punch_vec = vector.subtract(pos, opos) + local punch_dir = vector.normalize(punch_vec) + local impact = (1 - vector.length(punch_vec) / punch_radius) * exposure + if impact < 0 then + impact = 0 + end + local damage = math.floor((impact * impact + impact) * 7 * strength + 1) + obj:punch(obj, nil, { damage_groups = { fleshy = damage } }, punch_dir) + + if obj:is_player() then + obj:add_player_velocity(vector.multiply(punch_dir, -exposure * 20)) + end end end end -- Remove destroyed blocks and drop items for hash, idx in pairs(destroy) do - if math.random() <= drop_chance then - local name = minetest.get_name_from_content_id(data[idx]) - local drop = minetest.get_node_drops(name, "") - for _, item in ipairs(drop) do - if type(item) == "string" then - minetest.add_item(get_position_from_hash(hash), item) - end + local do_drop = math.random() <= drop_chance + local on_blast = node_on_blast[data[idx]] + local remove = true + + if do_drop or on_blast ~= nil then + local npos = get_position_from_hash(hash) + if on_blast ~= nil then + remove = on_blast(npos, 1.0) + else + local name = minetest.get_name_from_content_id(data[idx]) + local drop = minetest.get_node_drops(name, "") + + for _, item in ipairs(drop) do + if type(item) == "string" then + minetest.add_item(npos, item) + end + end end end - data[idx] = AIR_CID + if remove then + data[idx] = AIR_CID + end end -- Log explosion diff --git a/mods/ITEMS/mcl_tnt/init.lua b/mods/ITEMS/mcl_tnt/init.lua index c63d118b..ed47f697 100644 --- a/mods/ITEMS/mcl_tnt/init.lua +++ b/mods/ITEMS/mcl_tnt/init.lua @@ -103,6 +103,11 @@ minetest.register_node("mcl_tnt:tnt", { _doc_items_usagehelp = S("Place the TNT and ignite it with one of the methods above. Quickly get in safe distance. The TNT will start to be affected by gravity and explodes in 4 seconds."), groups = { dig_immediate = 3, tnt = 1, enderman_takable=1 }, mesecons = tnt_mesecons, + on_blast = function(pos) + minetest.chat_send_all("on_blast " .. minetest.pos_to_string(pos)) + spawn_tnt(pos, "mcl_tnt:tnt") + return true + end, _on_ignite = function(player, pointed_thing) tnt.ignite(pointed_thing.under) return true From fd05259202250dceb547a1f9bf11d391d7daafab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elias=20=C3=85str=C3=B6m?= Date: Fri, 17 Apr 2020 20:36:39 +0200 Subject: [PATCH 650/737] Make TNT and TNT Minecart use the explosions API The old api from mcl_tnt is still left in the code, and used by the mobs. --- mods/ENTITIES/mcl_minecarts/depends.txt | 1 + mods/ENTITIES/mcl_minecarts/init.lua | 4 ++-- mods/ITEMS/mcl_tnt/depends.txt | 1 + mods/ITEMS/mcl_tnt/init.lua | 3 +-- 4 files changed, 5 insertions(+), 4 deletions(-) diff --git a/mods/ENTITIES/mcl_minecarts/depends.txt b/mods/ENTITIES/mcl_minecarts/depends.txt index 51e65fb8..cdf7feb5 100644 --- a/mods/ENTITIES/mcl_minecarts/depends.txt +++ b/mods/ENTITIES/mcl_minecarts/depends.txt @@ -1,3 +1,4 @@ +mcl_explosions mcl_core mcl_sounds mcl_player diff --git a/mods/ENTITIES/mcl_minecarts/init.lua b/mods/ENTITIES/mcl_minecarts/init.lua index 14f70d24..3aa1ec4c 100644 --- a/mods/ENTITIES/mcl_minecarts/init.lua +++ b/mods/ENTITIES/mcl_minecarts/init.lua @@ -206,7 +206,7 @@ local function register_entity(entity_id, mesh, textures, drop, on_rightclick, o -- Explode if already ignited if self._boomtimer then self.object:remove() - tnt.boom(pos) + mcl_explosions.explode(pos, 4, { drop_chance = 1.0 }) return end @@ -249,7 +249,7 @@ local function register_entity(entity_id, mesh, textures, drop, on_rightclick, o local pos = self.object:get_pos() if self._boomtimer <= 0 then self.object:remove() - tnt.boom(pos) + mcl_explosions.explode(pos, 4, { drop_chance = 1.0 }) return else tnt.smoke_step(pos) diff --git a/mods/ITEMS/mcl_tnt/depends.txt b/mods/ITEMS/mcl_tnt/depends.txt index 548dace5..e4c208ea 100644 --- a/mods/ITEMS/mcl_tnt/depends.txt +++ b/mods/ITEMS/mcl_tnt/depends.txt @@ -1,3 +1,4 @@ +mcl_explosions mcl_sounds? mcl_mobitems? mcl_death_messages? diff --git a/mods/ITEMS/mcl_tnt/init.lua b/mods/ITEMS/mcl_tnt/init.lua index ed47f697..5f53afaf 100644 --- a/mods/ITEMS/mcl_tnt/init.lua +++ b/mods/ITEMS/mcl_tnt/init.lua @@ -104,7 +104,6 @@ minetest.register_node("mcl_tnt:tnt", { groups = { dig_immediate = 3, tnt = 1, enderman_takable=1 }, mesecons = tnt_mesecons, on_blast = function(pos) - minetest.chat_send_all("on_blast " .. minetest.pos_to_string(pos)) spawn_tnt(pos, "mcl_tnt:tnt") return true end, @@ -209,7 +208,7 @@ function TNT:on_step(dtime) self.blinkstatus = not self.blinkstatus end if self.timer > tnt.BOOMTIMER then - tnt.boom(self.object:get_pos(), nil, self.object) + mcl_explosions.explode(self.object:get_pos(), 4, { drop_chance = 1.0 }) self.object:remove() end end From 8d67824e42debea5da23326c976b3139d480983c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elias=20=C3=85str=C3=B6m?= Date: Fri, 17 Apr 2020 21:02:46 +0200 Subject: [PATCH 651/737] Add to list of contributors in README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 303d0f5b..1e8a73c6 100644 --- a/README.md +++ b/README.md @@ -200,6 +200,7 @@ There are so many people to list (sorry). Check out the respective mod directori * [ex-bart](https://github.com/ex-bart): Redstone comparators * [Rootyjr](https://github.com/Rootyjr): Fishing rod and bugfixes * [aligator](https://github.com/aligator): Improvement of doors +* [ryvnf](https://github.com/ryvnf): Explosion mechanics * Lots of other people: TO BE WRITTEN (see mod directories for details) ### Textures From 6315490b14ec1c125fe963613ddfcfdcbbd77504 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elias=20=C3=85str=C3=B6m?= Date: Fri, 17 Apr 2020 21:40:13 +0200 Subject: [PATCH 652/737] Update the rest of the blast resistance values The values have been updated according to this list: https://minecraft.gamepedia.com/Module:Blast_resistance_values --- mods/ITEMS/REDSTONE/mcl_dispensers/init.lua | 2 +- mods/ITEMS/REDSTONE/mcl_droppers/init.lua | 2 +- mods/ITEMS/REDSTONE/mcl_droppers/init_new.lua | 2 +- mods/ITEMS/REDSTONE/mcl_observers/init.lua | 6 ++-- mods/ITEMS/REDSTONE/mesecons_button/init.lua | 4 +-- .../REDSTONE/mesecons_commandblock/init.lua | 4 +-- .../REDSTONE/mesecons_lightstone/init.lua | 4 +-- .../REDSTONE/mesecons_noteblock/init.lua | 2 +- mods/ITEMS/REDSTONE/mesecons_pistons/init.lua | 36 +++++++++---------- .../REDSTONE/mesecons_pressureplates/init.lua | 2 +- .../REDSTONE/mesecons_solarpanel/init.lua | 8 ++--- mods/ITEMS/REDSTONE/mesecons_torch/init.lua | 2 +- .../REDSTONE/mesecons_walllever/init.lua | 4 +-- mods/ITEMS/mcl_anvils/init.lua | 2 +- mods/ITEMS/mcl_banners/init.lua | 4 +-- mods/ITEMS/mcl_books/init.lua | 2 +- mods/ITEMS/mcl_cake/init.lua | 4 +-- mods/ITEMS/mcl_cauldrons/init.lua | 4 +-- mods/ITEMS/mcl_cocoas/init.lua | 2 +- mods/ITEMS/mcl_colorblocks/init.lua | 10 +++--- mods/ITEMS/mcl_crafting_table/init.lua | 2 +- mods/ITEMS/mcl_doors/register.lua | 18 +++++----- mods/ITEMS/mcl_end/building.lua | 10 +++--- mods/ITEMS/mcl_end/chorus_plant.lua | 2 +- mods/ITEMS/mcl_farming/melon.lua | 2 +- mods/ITEMS/mcl_farming/pumpkin.lua | 4 +-- mods/ITEMS/mcl_farming/soil.lua | 4 +-- mods/ITEMS/mcl_farming/wheat.lua | 2 +- mods/ITEMS/mcl_furnaces/init.lua | 4 +-- mods/ITEMS/mcl_heads/init.lua | 4 +-- mods/ITEMS/mcl_hoppers/init.lua | 4 +-- mods/ITEMS/mcl_jukebox/init.lua | 2 +- mods/ITEMS/mcl_mobspawners/init.lua | 2 +- mods/ITEMS/mcl_monster_eggs/init.lua | 2 +- mods/ITEMS/mcl_mushrooms/huge.lua | 2 +- mods/ITEMS/mcl_nether/init.lua | 24 ++++++------- mods/ITEMS/mcl_ocean/corals.lua | 4 +-- mods/ITEMS/mcl_ocean/prismarine.lua | 8 ++--- mods/ITEMS/mcl_portals/portal_end.lua | 6 ++-- mods/ITEMS/mcl_signs/init.lua | 4 +-- mods/ITEMS/mcl_sponges/init.lua | 6 ++-- mods/ITEMS/mcl_walls/init.lua | 8 ++--- mods/ITEMS/mcl_wool/init.lua | 4 +-- mods/ITEMS/xpanes/init.lua | 4 +-- 44 files changed, 119 insertions(+), 119 deletions(-) diff --git a/mods/ITEMS/REDSTONE/mcl_dispensers/init.lua b/mods/ITEMS/REDSTONE/mcl_dispensers/init.lua index 464bc4bd..b6d0d2ef 100644 --- a/mods/ITEMS/REDSTONE/mcl_dispensers/init.lua +++ b/mods/ITEMS/REDSTONE/mcl_dispensers/init.lua @@ -94,7 +94,7 @@ local dispenserdef = { end meta:from_table(meta2:to_table()) end, - _mcl_blast_resistance = 17.5, + _mcl_blast_resistance = 3.5, _mcl_hardness = 3.5, mesecons = {effector = { -- Dispense random item when triggered diff --git a/mods/ITEMS/REDSTONE/mcl_droppers/init.lua b/mods/ITEMS/REDSTONE/mcl_droppers/init.lua index 6ca92b33..715a85f3 100644 --- a/mods/ITEMS/REDSTONE/mcl_droppers/init.lua +++ b/mods/ITEMS/REDSTONE/mcl_droppers/init.lua @@ -94,7 +94,7 @@ local dropperdef = { return stack:get_count() end end, - _mcl_blast_resistance = 17.5, + _mcl_blast_resistance = 3.5, _mcl_hardness = 3.5, mesecons = {effector = { -- Drop random item when triggered diff --git a/mods/ITEMS/REDSTONE/mcl_droppers/init_new.lua b/mods/ITEMS/REDSTONE/mcl_droppers/init_new.lua index fc7238c4..1bf968a8 100644 --- a/mods/ITEMS/REDSTONE/mcl_droppers/init_new.lua +++ b/mods/ITEMS/REDSTONE/mcl_droppers/init_new.lua @@ -92,7 +92,7 @@ local dropperdef = { return stack:get_count() end end, - _mcl_blast_resistance = 17.5, + _mcl_blast_resistance = 3.5, _mcl_hardness = 3.5, mesecons = {effector = { -- Drop random item when triggered diff --git a/mods/ITEMS/REDSTONE/mcl_observers/init.lua b/mods/ITEMS/REDSTONE/mcl_observers/init.lua index 7c0eb3a2..885e8599 100644 --- a/mods/ITEMS/REDSTONE/mcl_observers/init.lua +++ b/mods/ITEMS/REDSTONE/mcl_observers/init.lua @@ -82,7 +82,7 @@ mesecon.register_node("mcl_observers:observer", sounds = mcl_sounds.node_sound_stone_defaults(), paramtype2 = "facedir", on_rotate = false, - _mcl_blast_resistance = 17.5, + _mcl_blast_resistance = 3.5, _mcl_hardness = 3.5, }, { @@ -139,7 +139,7 @@ mesecon.register_node("mcl_observers:observer_down", sounds = mcl_sounds.node_sound_stone_defaults(), groups = {pickaxey=1, material_stone=1, not_opaque=1, not_in_creative_inventory=1 }, on_rotate = false, - _mcl_blast_resistance = 17.5, + _mcl_blast_resistance = 3.5, _mcl_hardness = 3.5, drop = "mcl_observers:observer_off", }, @@ -188,7 +188,7 @@ mesecon.register_node("mcl_observers:observer_up", sounds = mcl_sounds.node_sound_stone_defaults(), groups = {pickaxey=1, material_stone=1, not_opaque=1, not_in_creative_inventory=1 }, on_rotate = false, - _mcl_blast_resistance = 17.5, + _mcl_blast_resistance = 3.5, _mcl_hardness = 3.5, drop = "mcl_observers:observer_off", }, diff --git a/mods/ITEMS/REDSTONE/mesecons_button/init.lua b/mods/ITEMS/REDSTONE/mesecons_button/init.lua index e1a5c598..5ff15ecc 100644 --- a/mods/ITEMS/REDSTONE/mesecons_button/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons_button/init.lua @@ -133,7 +133,7 @@ mesecon.register_button = function(basename, description, texture, recipeitem, s _mcl_button_basename = basename, _mcl_button_timer = button_timer, - _mcl_blast_resistance = 2.5, + _mcl_blast_resistance = 0.5, _mcl_hardness = 0.5, }) @@ -184,7 +184,7 @@ mesecon.register_button = function(basename, description, texture, recipeitem, s end end, - _mcl_blast_resistance = 2.5, + _mcl_blast_resistance = 0.5, _mcl_hardness = 0.5, }) diff --git a/mods/ITEMS/REDSTONE/mesecons_commandblock/init.lua b/mods/ITEMS/REDSTONE/mesecons_commandblock/init.lua index 8a36210a..44db17a4 100644 --- a/mods/ITEMS/REDSTONE/mesecons_commandblock/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons_commandblock/init.lua @@ -242,7 +242,7 @@ S("Example 2:\n give @@n mcl_core:apple 5\nGives the nearest player 5 apples" action_on = commandblock_action_on, rules = mesecon.rules.alldirs, }}, - _mcl_blast_resistance = 18000000, + _mcl_blast_resistance = 3600000, _mcl_hardness = -1, }) @@ -261,7 +261,7 @@ minetest.register_node("mesecons_commandblock:commandblock_on", { action_off = commandblock_action_off, rules = mesecon.rules.alldirs, }}, - _mcl_blast_resistance = 18000000, + _mcl_blast_resistance = 3600000, _mcl_hardness = -1, }) diff --git a/mods/ITEMS/REDSTONE/mesecons_lightstone/init.lua b/mods/ITEMS/REDSTONE/mesecons_lightstone/init.lua index 0e01d52b..c09bcf59 100644 --- a/mods/ITEMS/REDSTONE/mesecons_lightstone/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons_lightstone/init.lua @@ -16,7 +16,7 @@ minetest.register_node("mesecons_lightstone:lightstone_off", { end, rules = mesecon.rules.alldirs, }}, - _mcl_blast_resistance = 1.5, + _mcl_blast_resistance = 0.3, _mcl_hardness = 0.3, }) @@ -34,7 +34,7 @@ minetest.register_node("mesecons_lightstone:lightstone_on", { end, rules = mesecon.rules.alldirs, }}, - _mcl_blast_resistance = 1.5, + _mcl_blast_resistance = 0.3, _mcl_hardness = 0.3, }) diff --git a/mods/ITEMS/REDSTONE/mesecons_noteblock/init.lua b/mods/ITEMS/REDSTONE/mesecons_noteblock/init.lua index 5ac18ea4..439342d3 100644 --- a/mods/ITEMS/REDSTONE/mesecons_noteblock/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons_noteblock/init.lua @@ -48,7 +48,7 @@ S("The note block will only play a note when it is below air, otherwise, it stay end, rules = mesecon.rules.alldirs, }}, - _mcl_blast_resistance = 4, + _mcl_blast_resistance = 0.8, _mcl_hardness = 0.8, }) diff --git a/mods/ITEMS/REDSTONE/mesecons_pistons/init.lua b/mods/ITEMS/REDSTONE/mesecons_pistons/init.lua index 8536cff9..eb69d338 100644 --- a/mods/ITEMS/REDSTONE/mesecons_pistons/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons_pistons/init.lua @@ -200,7 +200,7 @@ minetest.register_node("mesecons_pistons:piston_normal_off", { action_on = piston_on, rules = piston_get_rules }}, - _mcl_blast_resistance = 2.5, + _mcl_blast_resistance = 0.5, _mcl_hardness = 0.5, on_rotate = function(pos, node, user, mode) if mode == screwdriver.ROTATE_AXIS then @@ -235,7 +235,7 @@ minetest.register_node("mesecons_pistons:piston_normal_on", { action_off = piston_off, rules = piston_get_rules }}, - _mcl_blast_resistance = 2.5, + _mcl_blast_resistance = 0.5, _mcl_hardness = 0.5, on_rotate = false, }) @@ -262,7 +262,7 @@ minetest.register_node("mesecons_pistons:piston_pusher_normal", { selection_box = piston_pusher_box, node_box = piston_pusher_box, sounds = mcl_sounds.node_sound_wood_defaults(), - _mcl_blast_resistance = 2.5, + _mcl_blast_resistance = 0.5, on_rotate = false, }) @@ -304,7 +304,7 @@ minetest.register_node("mesecons_pistons:piston_sticky_off", { action_on = piston_on, rules = piston_get_rules }}, - _mcl_blast_resistance = 2.5, + _mcl_blast_resistance = 0.5, _mcl_hardness = 0.5, on_rotate = function(pos, node, user, mode) if mode == screwdriver.ROTATE_AXIS then @@ -339,7 +339,7 @@ minetest.register_node("mesecons_pistons:piston_sticky_on", { action_off = piston_off, rules = piston_get_rules }}, - _mcl_blast_resistance = 2.5, + _mcl_blast_resistance = 0.5, _mcl_hardness = 0.5, on_rotate = false, }) @@ -366,7 +366,7 @@ minetest.register_node("mesecons_pistons:piston_pusher_sticky", { selection_box = piston_pusher_box, node_box = piston_pusher_box, sounds = mcl_sounds.node_sound_wood_defaults(), - _mcl_blast_resistance = 2.5, + _mcl_blast_resistance = 0.5, on_rotate = false, }) @@ -423,7 +423,7 @@ minetest.register_node("mesecons_pistons:piston_up_normal_off", { sounds = mcl_sounds.node_sound_stone_defaults({ footstep = mcl_sounds.node_sound_wood_defaults().footstep }), - _mcl_blast_resistance = 2.5, + _mcl_blast_resistance = 0.5, _mcl_hardness = 0.5, on_rotate = function(pos, node, user, mode) if mode == screwdriver.ROTATE_AXIS then @@ -459,7 +459,7 @@ minetest.register_node("mesecons_pistons:piston_up_normal_on", { action_off = piston_off, rules = piston_up_rules, }}, - _mcl_blast_resistance = 2.5, + _mcl_blast_resistance = 0.5, _mcl_hardness = 0.5, on_rotate = false, }) @@ -486,7 +486,7 @@ minetest.register_node("mesecons_pistons:piston_up_pusher_normal", { selection_box = piston_up_pusher_box, node_box = piston_up_pusher_box, sounds = mcl_sounds.node_sound_wood_defaults(), - _mcl_blast_resistance = 2.5, + _mcl_blast_resistance = 0.5, on_rotate = false, }) @@ -526,7 +526,7 @@ minetest.register_node("mesecons_pistons:piston_up_sticky_off", { action_on = piston_on, rules = piston_up_rules, }}, - _mcl_blast_resistance = 2.5, + _mcl_blast_resistance = 0.5, _mcl_hardness = 0.5, on_rotate = function(pos, node, user, mode) if mode == screwdriver.ROTATE_AXIS then @@ -562,7 +562,7 @@ minetest.register_node("mesecons_pistons:piston_up_sticky_on", { action_off = piston_off, rules = piston_up_rules, }}, - _mcl_blast_resistance = 2.5, + _mcl_blast_resistance = 0.5, _mcl_hardness = 0.5, on_rotate = false, }) @@ -589,7 +589,7 @@ minetest.register_node("mesecons_pistons:piston_up_pusher_sticky", { selection_box = piston_up_pusher_box, node_box = piston_up_pusher_box, sounds = mcl_sounds.node_sound_wood_defaults(), - _mcl_blast_resistance = 2.5, + _mcl_blast_resistance = 0.5, on_rotate = false, }) @@ -646,7 +646,7 @@ minetest.register_node("mesecons_pistons:piston_down_normal_off", { action_on = piston_on, rules = piston_down_rules, }}, - _mcl_blast_resistance = 2.5, + _mcl_blast_resistance = 0.5, _mcl_hardness = 0.5, on_rotate = function(pos, node, user, mode) if mode == screwdriver.ROTATE_AXIS then @@ -682,7 +682,7 @@ minetest.register_node("mesecons_pistons:piston_down_normal_on", { action_off = piston_off, rules = piston_down_rules, }}, - _mcl_blast_resistance = 2.5, + _mcl_blast_resistance = 0.5, _mcl_hardness = 0.5, on_rotate = false, }) @@ -709,7 +709,7 @@ minetest.register_node("mesecons_pistons:piston_down_pusher_normal", { selection_box = piston_down_pusher_box, node_box = piston_down_pusher_box, sounds = mcl_sounds.node_sound_wood_defaults(), - _mcl_blast_resistance = 2.5, + _mcl_blast_resistance = 0.5, on_rotate = false, }) @@ -744,7 +744,7 @@ minetest.register_node("mesecons_pistons:piston_down_sticky_off", { action_on = piston_on, rules = piston_down_rules, }}, - _mcl_blast_resistance = 2.5, + _mcl_blast_resistance = 0.5, _mcl_hardness = 0.5, on_rotate = function(pos, node, user, mode) if mode == screwdriver.ROTATE_AXIS then @@ -780,7 +780,7 @@ minetest.register_node("mesecons_pistons:piston_down_sticky_on", { action_off = piston_off, rules = piston_down_rules, }}, - _mcl_blast_resistance = 2.5, + _mcl_blast_resistance = 0.5, _mcl_hardness = 0.5, on_rotate = false, }) @@ -807,7 +807,7 @@ minetest.register_node("mesecons_pistons:piston_down_pusher_sticky", { selection_box = piston_down_pusher_box, node_box = piston_down_pusher_box, sounds = mcl_sounds.node_sound_wood_defaults(), - _mcl_blast_resistance = 2.5, + _mcl_blast_resistance = 0.5, on_rotate = false, }) diff --git a/mods/ITEMS/REDSTONE/mesecons_pressureplates/init.lua b/mods/ITEMS/REDSTONE/mesecons_pressureplates/init.lua index 2c8c20bf..2e161ae4 100644 --- a/mods/ITEMS/REDSTONE/mesecons_pressureplates/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons_pressureplates/init.lua @@ -125,7 +125,7 @@ function mesecon.register_pressure_plate(basename, description, textures_off, te is_ground_content = false, pressureplate_basename = basename, pressureplate_activated_by = activated_by, - _mcl_blast_resistance = 2.5, + _mcl_blast_resistance = 0.5, _mcl_hardness = 0.5, },{ node_box = pp_box_off, diff --git a/mods/ITEMS/REDSTONE/mesecons_solarpanel/init.lua b/mods/ITEMS/REDSTONE/mesecons_solarpanel/init.lua index eb5eafdb..c9d05157 100644 --- a/mods/ITEMS/REDSTONE/mesecons_solarpanel/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons_solarpanel/init.lua @@ -36,7 +36,7 @@ minetest.register_node("mesecons_solarpanel:solar_panel_on", { minetest.swap_node(pos, {name = "mesecons_solarpanel:solar_panel_inverted_off"}) mesecon.receptor_off(pos, mesecon.rules.pplate) end, - _mcl_blast_resistance = 1, + _mcl_blast_resistance = 0.2, _mcl_hardness = 0.2, }) @@ -76,7 +76,7 @@ minetest.register_node("mesecons_solarpanel:solar_panel_off", { minetest.swap_node(pos, {name = "mesecons_solarpanel:solar_panel_inverted_on"}) mesecon.receptor_on(pos, mesecon.rules.pplate) end, - _mcl_blast_resistance = 1, + _mcl_blast_resistance = 0.2, _mcl_hardness = 0.2, }) @@ -154,7 +154,7 @@ minetest.register_node("mesecons_solarpanel:solar_panel_inverted_on", { minetest.swap_node(pos, {name = "mesecons_solarpanel:solar_panel_off"}) mesecon.receptor_off(pos, mesecon.rules.pplate) end, - _mcl_blast_resistance = 1, + _mcl_blast_resistance = 0.2, _mcl_hardness = 0.2, }) @@ -192,7 +192,7 @@ minetest.register_node("mesecons_solarpanel:solar_panel_inverted_off", { minetest.swap_node(pos, {name = "mesecons_solarpanel:solar_panel_on"}) mesecon.receptor_on(pos, mesecon.rules.pplate) end, - _mcl_blast_resistance = 1, + _mcl_blast_resistance = 0.2, _mcl_hardness = 0.2, }) diff --git a/mods/ITEMS/REDSTONE/mesecons_torch/init.lua b/mods/ITEMS/REDSTONE/mesecons_torch/init.lua index fda96121..20a1ca6d 100644 --- a/mods/ITEMS/REDSTONE/mesecons_torch/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons_torch/init.lua @@ -204,7 +204,7 @@ minetest.register_node("mesecons_torch:redstoneblock", { state = mesecon.state.on, rules = mesecon.rules.alldirs, }}, - _mcl_blast_resistance = 30, + _mcl_blast_resistance = 6, _mcl_hardness = 5, }) diff --git a/mods/ITEMS/REDSTONE/mesecons_walllever/init.lua b/mods/ITEMS/REDSTONE/mesecons_walllever/init.lua index 8894f4ad..053990ed 100644 --- a/mods/ITEMS/REDSTONE/mesecons_walllever/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons_walllever/init.lua @@ -128,7 +128,7 @@ minetest.register_node("mesecons_walllever:wall_lever_off", { state = mesecon.state.off }}, on_rotate = on_rotate, - _mcl_blast_resistance = 2.5, + _mcl_blast_resistance = 0.5, _mcl_hardness = 0.5, }) minetest.register_node("mesecons_walllever:wall_lever_on", { @@ -160,7 +160,7 @@ minetest.register_node("mesecons_walllever:wall_lever_on", { state = mesecon.state.on }}, on_rotate = on_rotate, - _mcl_blast_resistance = 2.5, + _mcl_blast_resistance = 0.5, _mcl_hardness = 0.5, }) diff --git a/mods/ITEMS/mcl_anvils/init.lua b/mods/ITEMS/mcl_anvils/init.lua index 76cd0f3e..bfeed83f 100644 --- a/mods/ITEMS/mcl_anvils/init.lua +++ b/mods/ITEMS/mcl_anvils/init.lua @@ -275,7 +275,7 @@ local anvildef = { } }, sounds = mcl_sounds.node_sound_metal_defaults(), - _mcl_blast_resistance = 6000, + _mcl_blast_resistance = 1200, _mcl_hardness = 5, _mcl_after_falling = damage_anvil_by_falling, diff --git a/mods/ITEMS/mcl_banners/init.lua b/mods/ITEMS/mcl_banners/init.lua index 8c8869d6..31853b11 100644 --- a/mods/ITEMS/mcl_banners/init.lua +++ b/mods/ITEMS/mcl_banners/init.lua @@ -230,7 +230,7 @@ S("You can copy the pattern of a banner by placing two banners of the same color respawn_banner_entity(pos, node) end, _mcl_hardness = 1, - _mcl_blast_resistance = 5, + _mcl_blast_resistance = 1, on_rotate = function(pos, node, user, mode, param2) if mode == screwdriver.ROTATE_FACE then local meta = minetest.get_meta(pos) @@ -274,7 +274,7 @@ minetest.register_node("mcl_banners:hanging_banner", { respawn_banner_entity(pos, node) end, _mcl_hardness = 1, - _mcl_blast_resistance = 5, + _mcl_blast_resistance = 1, on_rotate = function(pos, node, user, mode, param2) if mode == screwdriver.ROTATE_FACE then local r = screwdriver.rotate.wallmounted(pos, node, mode) diff --git a/mods/ITEMS/mcl_books/init.lua b/mods/ITEMS/mcl_books/init.lua index 50eadec6..82ec64d7 100644 --- a/mods/ITEMS/mcl_books/init.lua +++ b/mods/ITEMS/mcl_books/init.lua @@ -342,7 +342,7 @@ minetest.register_node("mcl_books:bookshelf", { groups = {handy=1,axey=1, flammable=3,building_block=1, material_wood=1}, drop = "mcl_books:book 3", sounds = wood_sound, - _mcl_blast_resistance = 7.5, + _mcl_blast_resistance = 1.5, _mcl_hardness = 1.5, }) diff --git a/mods/ITEMS/mcl_cake/init.lua b/mods/ITEMS/mcl_cake/init.lua index 33cad619..9f9dd204 100644 --- a/mods/ITEMS/mcl_cake/init.lua +++ b/mods/ITEMS/mcl_cake/init.lua @@ -70,7 +70,7 @@ minetest.register_node("mcl_cake:cake", { _food_particles = false, _mcl_saturation = 0.4, - _mcl_blast_resistance = 2.5, + _mcl_blast_resistance = 0.5, _mcl_hardness = 0.5, }) @@ -130,7 +130,7 @@ local register_slice = function(level, nodebox, desc) _food_particles = false, _mcl_saturation = 0.4, - _mcl_blast_resistance = 2.5, + _mcl_blast_resistance = 0.5, _mcl_hardness = 0.5, }) diff --git a/mods/ITEMS/mcl_cauldrons/init.lua b/mods/ITEMS/mcl_cauldrons/init.lua index bc65e966..7f0592b2 100644 --- a/mods/ITEMS/mcl_cauldrons/init.lua +++ b/mods/ITEMS/mcl_cauldrons/init.lua @@ -63,7 +63,7 @@ minetest.register_node("mcl_cauldrons:cauldron", { }, sounds = mcl_sounds.node_sound_metal_defaults(), _mcl_hardness = 2, - _mcl_blast_resistance = 10, + _mcl_blast_resistance = 2, }) -- Template function for cauldrons with water @@ -94,7 +94,7 @@ local register_filled_cauldron = function(water_level, description, river_water) sounds = mcl_sounds.node_sound_metal_defaults(), drop = "mcl_cauldrons:cauldron", _mcl_hardness = 2, - _mcl_blast_resistance = 10, + _mcl_blast_resistance = 2, }) -- Add entry aliases for the Help diff --git a/mods/ITEMS/mcl_cocoas/init.lua b/mods/ITEMS/mcl_cocoas/init.lua index 7f809fc0..8b70c1ad 100644 --- a/mods/ITEMS/mcl_cocoas/init.lua +++ b/mods/ITEMS/mcl_cocoas/init.lua @@ -111,7 +111,7 @@ local crop_def = { }, sounds = mcl_sounds.node_sound_wood_defaults(), on_rotate = false, - _mcl_blast_resistance = 15, + _mcl_blast_resistance = 3, _mcl_hardness = 0.2, } diff --git a/mods/ITEMS/mcl_colorblocks/init.lua b/mods/ITEMS/mcl_colorblocks/init.lua index f55003e0..1965c902 100644 --- a/mods/ITEMS/mcl_colorblocks/init.lua +++ b/mods/ITEMS/mcl_colorblocks/init.lua @@ -37,7 +37,7 @@ minetest.register_node("mcl_colorblocks:hardened_clay", { stack_max = 64, groups = {pickaxey=1, hardened_clay=1,building_block=1, material_stone=1}, sounds = mcl_sounds.node_sound_stone_defaults(), - _mcl_blast_resistance = 21, + _mcl_blast_resistance = 4.2, _mcl_hardness = 1.25, }) @@ -87,7 +87,7 @@ for _, row in ipairs(block.dyes) do groups = {pickaxey=1, hardened_clay=1,building_block=1, material_stone=1}, stack_max = 64, sounds = mcl_sounds.node_sound_stone_defaults(), - _mcl_blast_resistance = 21, + _mcl_blast_resistance = 4.2, _mcl_hardness = 1.25, }) @@ -128,7 +128,7 @@ for _, row in ipairs(block.dyes) do -- Specify the node to which this node will convert after getting in contact with water _mcl_colorblocks_harden_to = "mcl_colorblocks:concrete_"..name, - _mcl_blast_resistance = 2.5, + _mcl_blast_resistance = 0.5, _mcl_hardness = 0.5, }) @@ -142,7 +142,7 @@ for _, row in ipairs(block.dyes) do stack_max = 64, is_ground_content = false, sounds = mcl_sounds.node_sound_stone_defaults(), - _mcl_blast_resistance = 9, + _mcl_blast_resistance = 1.8, _mcl_hardness = 1.8, }) @@ -159,7 +159,7 @@ for _, row in ipairs(block.dyes) do stack_max = 64, is_ground_content = false, sounds = mcl_sounds.node_sound_stone_defaults(), - _mcl_blast_resistance = 7, + _mcl_blast_resistance = 4.2, _mcl_hardness = 1.4, on_rotate = on_rotate, }) diff --git a/mods/ITEMS/mcl_crafting_table/init.lua b/mods/ITEMS/mcl_crafting_table/init.lua index 3c19e288..2339f2c6 100644 --- a/mods/ITEMS/mcl_crafting_table/init.lua +++ b/mods/ITEMS/mcl_crafting_table/init.lua @@ -35,7 +35,7 @@ minetest.register_node("mcl_crafting_table:crafting_table", { minetest.show_formspec(player:get_player_name(), "main", form) end, sounds = mcl_sounds.node_sound_wood_defaults(), - _mcl_blast_resistance = 12.5, + _mcl_blast_resistance = 2.5, _mcl_hardness = 2.5, }) diff --git a/mods/ITEMS/mcl_doors/register.lua b/mods/ITEMS/mcl_doors/register.lua index e8f990f9..aca60e8f 100644 --- a/mods/ITEMS/mcl_doors/register.lua +++ b/mods/ITEMS/mcl_doors/register.lua @@ -13,7 +13,7 @@ mcl_doors:register_door("mcl_doors:wooden_door", { inventory_image = "doors_item_wood.png", groups = {handy=1,axey=1, material_wood=1}, _mcl_hardness = 3, - _mcl_blast_resistance = 15, + _mcl_blast_resistance = 3, tiles_bottom = {"mcl_doors_door_wood_lower.png", "mcl_doors_door_wood_side_lower.png"}, tiles_top = {"mcl_doors_door_wood_upper.png", "mcl_doors_door_wood_side_upper.png"}, sounds = mcl_sounds.node_sound_wood_defaults(), @@ -36,7 +36,7 @@ mcl_doors:register_door("mcl_doors:acacia_door", { inventory_image = "mcl_doors_door_acacia.png", groups = {handy=1,axey=1, material_wood=1}, _mcl_hardness = 3, - _mcl_blast_resistance = 15, + _mcl_blast_resistance = 3, tiles_bottom = {"mcl_doors_door_acacia_lower.png", "mcl_doors_door_acacia_side_lower.png"}, tiles_top = {"mcl_doors_door_acacia_upper.png", "mcl_doors_door_acacia_side_upper.png"}, sounds = mcl_sounds.node_sound_wood_defaults(), @@ -59,7 +59,7 @@ mcl_doors:register_door("mcl_doors:birch_door", { inventory_image = "mcl_doors_door_birch.png", groups = {handy=1,axey=1, material_wood=1}, _mcl_hardness = 3, - _mcl_blast_resistance = 15, + _mcl_blast_resistance = 3, tiles_bottom = {"mcl_doors_door_birch_lower.png", "mcl_doors_door_birch_side_lower.png"}, tiles_top = {"mcl_doors_door_birch_upper.png", "mcl_doors_door_birch_side_upper.png"}, sounds = mcl_sounds.node_sound_wood_defaults(), @@ -82,7 +82,7 @@ mcl_doors:register_door("mcl_doors:dark_oak_door", { inventory_image = "mcl_doors_door_dark_oak.png", groups = {handy=1,axey=1, material_wood=1}, _mcl_hardness = 3, - _mcl_blast_resistance = 15, + _mcl_blast_resistance = 3, tiles_bottom = {"mcl_doors_door_dark_oak_lower.png", "mcl_doors_door_dark_oak_side_lower.png"}, tiles_top = {"mcl_doors_door_dark_oak_upper.png", "mcl_doors_door_dark_oak_side_upper.png"}, sounds = mcl_sounds.node_sound_wood_defaults(), @@ -105,7 +105,7 @@ mcl_doors:register_door("mcl_doors:jungle_door", { inventory_image = "mcl_doors_door_jungle.png", groups = {handy=1,axey=1, material_wood=1}, _mcl_hardness = 3, - _mcl_blast_resistance = 15, + _mcl_blast_resistance = 3, tiles_bottom = {"mcl_doors_door_jungle_lower.png", "mcl_doors_door_jungle_side_lower.png"}, tiles_top = {"mcl_doors_door_jungle_upper.png", "mcl_doors_door_jungle_side_upper.png"}, sounds = mcl_sounds.node_sound_wood_defaults(), @@ -128,7 +128,7 @@ mcl_doors:register_door("mcl_doors:spruce_door", { inventory_image = "mcl_doors_door_spruce.png", groups = {handy=1,axey=1, material_wood=1}, _mcl_hardness = 3, - _mcl_blast_resistance = 15, + _mcl_blast_resistance = 3, tiles_bottom = {"mcl_doors_door_spruce_lower.png", "mcl_doors_door_spruce_side_lower.png"}, tiles_top = {"mcl_doors_door_spruce_upper.png", "mcl_doors_door_spruce_side_upper.png"}, sounds = mcl_sounds.node_sound_wood_defaults(), @@ -182,7 +182,7 @@ mcl_doors:register_door("mcl_doors:iron_door", { inventory_image = "doors_item_steel.png", groups = {pickaxey=1, mesecon_effector_on=1}, _mcl_hardness = 5, - _mcl_blast_resistance = 25, + _mcl_blast_resistance = 5, tiles_bottom = {"mcl_doors_door_iron_lower.png^[transformFX", "mcl_doors_door_iron_side_lower.png"}, tiles_top = {"mcl_doors_door_iron_upper.png^[transformFX", "mcl_doors_door_iron_side_upper.png"}, sounds = mcl_sounds.node_sound_metal_defaults(), @@ -224,7 +224,7 @@ for w=1, #woods do wield_image = woods[w][3], groups = {handy=1,axey=1, mesecon_effector_on=1, material_wood=1}, _mcl_hardness = 3, - _mcl_blast_resistance = 15, + _mcl_blast_resistance = 3, sounds = mcl_sounds.node_sound_wood_defaults(), }) @@ -251,7 +251,7 @@ mcl_doors:register_trapdoor("mcl_doors:iron_trapdoor", { wield_image = "doors_trapdoor_steel.png", groups = {pickaxey=1, mesecon_effector_on=1}, _mcl_hardness = 5, - _mcl_blast_resistance = 25, + _mcl_blast_resistance = 5, sounds = mcl_sounds.node_sound_metal_defaults(), sound_open = "doors_steel_door_open", sound_close = "doors_steel_door_close", diff --git a/mods/ITEMS/mcl_end/building.lua b/mods/ITEMS/mcl_end/building.lua index 9b0022e9..3dcf0671 100644 --- a/mods/ITEMS/mcl_end/building.lua +++ b/mods/ITEMS/mcl_end/building.lua @@ -15,7 +15,7 @@ minetest.register_node("mcl_end:end_stone", { groups = {pickaxey=1, building_block=1, material_stone=1}, sounds = mcl_sounds.node_sound_stone_defaults(), after_dig_node = mcl_end.check_detach_chorus_plant, - _mcl_blast_resistance = 45, + _mcl_blast_resistance = 9, _mcl_hardness = 3, }) @@ -27,7 +27,7 @@ minetest.register_node("mcl_end:end_bricks", { stack_max = 64, groups = {pickaxey=1, building_block=1, material_stone=1}, sounds = mcl_sounds.node_sound_stone_defaults(), - _mcl_blast_resistance = 4, + _mcl_blast_resistance = 9, _mcl_hardness = 0.8, }) @@ -39,7 +39,7 @@ minetest.register_node("mcl_end:purpur_block", { stack_max = 64, groups = {pickaxey=1, building_block=1, material_stone=1, purpur_block=1}, sounds = mcl_sounds.node_sound_stone_defaults(), - _mcl_blast_resistance = 30, + _mcl_blast_resistance = 6, _mcl_hardness = 1.5, }) @@ -54,7 +54,7 @@ minetest.register_node("mcl_end:purpur_pillar", { groups = {pickaxey=1, building_block=1, material_stone=1, purpur_block=1}, sounds = mcl_sounds.node_sound_stone_defaults(), on_rotate = on_rotate, - _mcl_blast_resistance = 30, + _mcl_blast_resistance = 6, _mcl_hardness = 1.5, }) @@ -167,7 +167,7 @@ minetest.register_node("mcl_end:dragon_egg", { }, groups = {handy=1, falling_node = 1, deco_block = 1, not_in_creative_inventory = 1, dig_by_piston = 1 }, sounds = mcl_sounds.node_sound_stone_defaults(), - _mcl_blast_resistance = 45, + _mcl_blast_resistance = 9, _mcl_hardness = 3, -- TODO: Make dragon egg teleport on punching }) diff --git a/mods/ITEMS/mcl_end/chorus_plant.lua b/mods/ITEMS/mcl_end/chorus_plant.lua index e29a6fec..171ff37b 100644 --- a/mods/ITEMS/mcl_end/chorus_plant.lua +++ b/mods/ITEMS/mcl_end/chorus_plant.lua @@ -200,7 +200,7 @@ minetest.register_node("mcl_end:chorus_flower", { end, after_dig_node = mcl_end.check_detach_chorus_plant, on_blast = mcl_end.check_blast_chorus_plant, - _mcl_blast_resistance = 2, + _mcl_blast_resistance = 0.4, _mcl_hardness = 0.4, }) diff --git a/mods/ITEMS/mcl_farming/melon.lua b/mods/ITEMS/mcl_farming/melon.lua index 0734b35d..43ff7b0f 100644 --- a/mods/ITEMS/mcl_farming/melon.lua +++ b/mods/ITEMS/mcl_farming/melon.lua @@ -33,7 +33,7 @@ local melon_base_def = { } }, sounds = mcl_sounds.node_sound_wood_defaults(), - _mcl_blast_resistance = 5, + _mcl_blast_resistance = 1, _mcl_hardness = 1, } diff --git a/mods/ITEMS/mcl_farming/pumpkin.lua b/mods/ITEMS/mcl_farming/pumpkin.lua index f77d6f0d..72b4e541 100644 --- a/mods/ITEMS/mcl_farming/pumpkin.lua +++ b/mods/ITEMS/mcl_farming/pumpkin.lua @@ -101,7 +101,7 @@ local pumpkin_base_def = { groups = {handy=1,axey=1, plant=1,building_block=1, dig_by_piston=1, enderman_takable=1}, sounds = mcl_sounds.node_sound_wood_defaults(), on_rotate = on_rotate, - _mcl_blast_resistance = 5, + _mcl_blast_resistance = 1, _mcl_hardness = 1, } minetest.register_node("mcl_farming:pumpkin", pumpkin_base_def) @@ -148,7 +148,7 @@ minetest.register_node("mcl_farming:pumpkin_face_light", { mobs_mc.tools.check_snow_golem_summon(pos) end, on_rotate = on_rotate, - _mcl_blast_resistance = 5, + _mcl_blast_resistance = 1, _mcl_hardness = 1, }) diff --git a/mods/ITEMS/mcl_farming/soil.lua b/mods/ITEMS/mcl_farming/soil.lua index 87dcbe22..0c0e3b83 100644 --- a/mods/ITEMS/mcl_farming/soil.lua +++ b/mods/ITEMS/mcl_farming/soil.lua @@ -21,7 +21,7 @@ minetest.register_node("mcl_farming:soil", { end, groups = {handy=1,shovely=1, dirtifies_below_solid=1, dirtifier=1, soil=2, soil_sapling=1, deco_block=1 }, sounds = mcl_sounds.node_sound_dirt_defaults(), - _mcl_blast_resistance = 3, + _mcl_blast_resistance = 0.5, _mcl_hardness = 0.6, }) @@ -44,7 +44,7 @@ minetest.register_node("mcl_farming:soil_wet", { end, groups = {handy=1,shovely=1, not_in_creative_inventory=1, dirtifies_below_solid=1, dirtifier=1, soil=3, soil_sapling=1 }, sounds = mcl_sounds.node_sound_dirt_defaults(), - _mcl_blast_resistance = 3, + _mcl_blast_resistance = 0.5, _mcl_hardness = 0.6, }) diff --git a/mods/ITEMS/mcl_farming/wheat.lua b/mods/ITEMS/mcl_farming/wheat.lua index 0bf8724e..850838b2 100644 --- a/mods/ITEMS/mcl_farming/wheat.lua +++ b/mods/ITEMS/mcl_farming/wheat.lua @@ -149,7 +149,7 @@ minetest.register_node("mcl_farming:hay_block", { groups = {handy=1, flammable=2, building_block=1, fall_damage_add_percent=-80}, sounds = mcl_sounds.node_sound_leaves_defaults(), on_rotate = on_rotate, - _mcl_blast_resistance = 2.5, + _mcl_blast_resistance = 0.5, _mcl_hardness = 0.5, }) diff --git a/mods/ITEMS/mcl_furnaces/init.lua b/mods/ITEMS/mcl_furnaces/init.lua index 17c404dd..c76b379e 100644 --- a/mods/ITEMS/mcl_furnaces/init.lua +++ b/mods/ITEMS/mcl_furnaces/init.lua @@ -359,7 +359,7 @@ minetest.register_node("mcl_furnaces:furnace", { allow_metadata_inventory_take = allow_metadata_inventory_take, on_metadata_inventory_take = on_metadata_inventory_take, on_receive_fields = receive_fields, - _mcl_blast_resistance = 17.5, + _mcl_blast_resistance = 3.5, _mcl_hardness = 3.5, on_rotate = on_rotate, }) @@ -402,7 +402,7 @@ minetest.register_node("mcl_furnaces:furnace_active", { allow_metadata_inventory_take = allow_metadata_inventory_take, on_metadata_inventory_take = on_metadata_inventory_take, on_receive_fields = receive_fields, - _mcl_blast_resistance = 17.5, + _mcl_blast_resistance = 3.5, _mcl_hardness = 3.5, on_rotate = on_rotate, }) diff --git a/mods/ITEMS/mcl_heads/init.lua b/mods/ITEMS/mcl_heads/init.lua index b20d696a..cb83ed1f 100644 --- a/mods/ITEMS/mcl_heads/init.lua +++ b/mods/ITEMS/mcl_heads/init.lua @@ -112,7 +112,7 @@ local function addhead(name, texture, desc, longdesc, rangemob, rangefactor) _mcl_armor_mob_range_mob = rangemob, _mcl_armor_mob_range_factor = rangefactor, - _mcl_blast_resistance = 5, + _mcl_blast_resistance = 1, _mcl_hardness = 1, }) @@ -146,7 +146,7 @@ local function addhead(name, texture, desc, longdesc, rangemob, rangefactor) }), drop = "mcl_heads:"..name, on_rotate = on_rotate_wall, - _mcl_blast_resistance = 5, + _mcl_blast_resistance = 1, _mcl_hardness = 1, }) diff --git a/mods/ITEMS/mcl_hoppers/init.lua b/mods/ITEMS/mcl_hoppers/init.lua index e53052e7..52cb6087 100644 --- a/mods/ITEMS/mcl_hoppers/init.lua +++ b/mods/ITEMS/mcl_hoppers/init.lua @@ -114,7 +114,7 @@ local def_hopper = { end, sounds = mcl_sounds.node_sound_metal_defaults(), - _mcl_blast_resistance = 24, + _mcl_blast_resistance = 4.8, _mcl_hardness = 3, } @@ -303,7 +303,7 @@ local def_hopper_side = { on_rotate = on_rotate, sounds = mcl_sounds.node_sound_metal_defaults(), - _mcl_blast_resistance = 24, + _mcl_blast_resistance = 4.8, _mcl_hardness = 3, } diff --git a/mods/ITEMS/mcl_jukebox/init.lua b/mods/ITEMS/mcl_jukebox/init.lua index 0328c707..3cfc3b76 100644 --- a/mods/ITEMS/mcl_jukebox/init.lua +++ b/mods/ITEMS/mcl_jukebox/init.lua @@ -227,7 +227,7 @@ minetest.register_node("mcl_jukebox:jukebox", { end meta:from_table(meta2:to_table()) end, - _mcl_blast_resistance = 30, + _mcl_blast_resistance = 6, _mcl_hardness = 2, }) diff --git a/mods/ITEMS/mcl_mobspawners/init.lua b/mods/ITEMS/mcl_mobspawners/init.lua index 8b9732c1..39abd722 100644 --- a/mods/ITEMS/mcl_mobspawners/init.lua +++ b/mods/ITEMS/mcl_mobspawners/init.lua @@ -323,7 +323,7 @@ minetest.register_node("mcl_mobspawners:spawner", { sounds = mcl_sounds.node_sound_metal_defaults(), - _mcl_blast_resistance = 25, + _mcl_blast_resistance = 5, _mcl_hardness = 5, }) diff --git a/mods/ITEMS/mcl_monster_eggs/init.lua b/mods/ITEMS/mcl_monster_eggs/init.lua index 7823b360..a4c0144d 100644 --- a/mods/ITEMS/mcl_monster_eggs/init.lua +++ b/mods/ITEMS/mcl_monster_eggs/init.lua @@ -26,7 +26,7 @@ local register_block = function(subname, description, tiles, is_ground_content) _tt_help = S("Hides a silverfish"), _doc_items_longdesc = S("An infested block is a block from which a silverfish will pop out when it is broken. It looks identical to its normal counterpart."), _mcl_hardness = 0, - _mcl_blast_resistance = 3.75, + _mcl_blast_resistance = 0.5, }) end diff --git a/mods/ITEMS/mcl_mushrooms/huge.lua b/mods/ITEMS/mcl_mushrooms/huge.lua index 54e719a5..6061f868 100644 --- a/mods/ITEMS/mcl_mushrooms/huge.lua +++ b/mods/ITEMS/mcl_mushrooms/huge.lua @@ -4,7 +4,7 @@ local template = { groups = {handy=1,axey=1, building_block = 1, material_wood = 1 }, sounds = mcl_sounds.node_sound_wood_defaults(), is_ground_content = true, - _mcl_blast_resistance = 1, + _mcl_blast_resistance = 0.2, _mcl_hardness = 0.2, } diff --git a/mods/ITEMS/mcl_nether/init.lua b/mods/ITEMS/mcl_nether/init.lua index 07c575f0..e7612c90 100644 --- a/mods/ITEMS/mcl_nether/init.lua +++ b/mods/ITEMS/mcl_nether/init.lua @@ -25,7 +25,7 @@ minetest.register_node("mcl_nether:glowstone", { paramtype = "light", light_source = minetest.LIGHT_MAX, sounds = mcl_sounds.node_sound_glass_defaults(), - _mcl_blast_resistance = 1.5, + _mcl_blast_resistance = 0.3, _mcl_hardness = 0.3, }) @@ -38,7 +38,7 @@ minetest.register_node("mcl_nether:quartz_ore", { groups = {pickaxey=1, building_block=1, material_stone=1}, drop = 'mcl_nether:quartz', sounds = mcl_sounds.node_sound_stone_defaults(), - _mcl_blast_resistance = 15, + _mcl_blast_resistance = 3, _mcl_hardness = 3, }) @@ -75,7 +75,7 @@ minetest.register_node("mcl_nether:netherrack", { is_ground_content = true, groups = {pickaxey=1, building_block=1, material_stone=1, enderman_takable=1}, sounds = mcl_sounds.node_sound_stone_defaults(), - _mcl_blast_resistance = 2, + _mcl_blast_resistance = 0.4, _mcl_hardness = 0.4, -- Eternal fire on top @@ -104,7 +104,7 @@ minetest.register_node("mcl_nether:magma", { player:set_hp(player:get_hp() - 1, { type = "punch", from = "mod" }) end end, - _mcl_blast_resistance = 2.5, + _mcl_blast_resistance = 0.5, _mcl_hardness = 0.5, -- Eternal fire on top @@ -125,7 +125,7 @@ minetest.register_node("mcl_nether:soul_sand", { fixed = { -0.5, -0.5, -0.5, 0.5, 0.5 - 2/16, 0.5 }, }, sounds = mcl_sounds.node_sound_sand_defaults(), - _mcl_blast_resistance = 2.5, + _mcl_blast_resistance = 0.5, _mcl_hardness = 0.5, -- Movement handling is done in mcl_playerplus mod }) @@ -139,7 +139,7 @@ minetest.register_node("mcl_nether:nether_brick", { is_ground_content = false, groups = {pickaxey=1, building_block=1, material_stone=1}, sounds = mcl_sounds.node_sound_stone_defaults(), - _mcl_blast_resistance = 30, + _mcl_blast_resistance = 6, _mcl_hardness = 2, }) @@ -152,7 +152,7 @@ minetest.register_node("mcl_nether:red_nether_brick", { is_ground_content = false, groups = {pickaxey=1, building_block=1, material_stone=1}, sounds = mcl_sounds.node_sound_stone_defaults(), - _mcl_blast_resistance = 30, + _mcl_blast_resistance = 6, _mcl_hardness = 2, }) @@ -170,7 +170,7 @@ minetest.register_node("mcl_nether:nether_wart_block", { dug={name="default_dirt_footstep", gain=1.5}, } ), - _mcl_blast_resistance = 5, + _mcl_blast_resistance = 1, _mcl_hardness = 1, }) @@ -182,7 +182,7 @@ minetest.register_node("mcl_nether:quartz_block", { tiles = {"mcl_nether_quartz_block_top.png", "mcl_nether_quartz_block_bottom.png", "mcl_nether_quartz_block_side.png"}, groups = {pickaxey=1, quartz_block=1,building_block=1, material_stone=1}, sounds = mcl_sounds.node_sound_stone_defaults(), - _mcl_blast_resistance = 4, + _mcl_blast_resistance = 0.8, _mcl_hardness = 0.8, }) @@ -194,7 +194,7 @@ minetest.register_node("mcl_nether:quartz_chiseled", { tiles = {"mcl_nether_quartz_chiseled_top.png", "mcl_nether_quartz_chiseled_top.png", "mcl_nether_quartz_chiseled_side.png"}, groups = {pickaxey=1, quartz_block=1,building_block=1, material_stone=1}, sounds = mcl_sounds.node_sound_stone_defaults(), - _mcl_blast_resistance = 4, + _mcl_blast_resistance = 0.8, _mcl_hardness = 0.8, }) @@ -209,7 +209,7 @@ minetest.register_node("mcl_nether:quartz_pillar", { groups = {pickaxey=1, quartz_block=1,building_block=1, material_stone=1}, sounds = mcl_sounds.node_sound_stone_defaults(), on_rotate = on_rotate, - _mcl_blast_resistance = 4, + _mcl_blast_resistance = 0.8, _mcl_hardness = 0.8, }) minetest.register_node("mcl_nether:quartz_smooth", { @@ -220,7 +220,7 @@ minetest.register_node("mcl_nether:quartz_smooth", { tiles = {"mcl_nether_quartz_block_bottom.png"}, groups = {pickaxey=1, quartz_block=1,building_block=1, material_stone=1}, sounds = mcl_sounds.node_sound_stone_defaults(), - _mcl_blast_resistance = 4, + _mcl_blast_resistance = 0.8, _mcl_hardness = 0.8, }) diff --git a/mods/ITEMS/mcl_ocean/corals.lua b/mods/ITEMS/mcl_ocean/corals.lua index 2a9015ec..7b076c3e 100644 --- a/mods/ITEMS/mcl_ocean/corals.lua +++ b/mods/ITEMS/mcl_ocean/corals.lua @@ -90,7 +90,7 @@ for c=1, #corals do sounds = mcl_sounds.node_sound_dirt_defaults(), drop = "mcl_ocean:dead_"..id.."_coral_block", _mcl_hardness = 1.5, - _mcl_blast_resistance = 30, + _mcl_blast_resistance = 6, }) minetest.register_node("mcl_ocean:dead_"..id.."_coral_block", { description = corals[c][3], @@ -99,7 +99,7 @@ for c=1, #corals do groups = { pickaxey = 1, building_block = 1, coral=2, coral_block=2, coral_species=c, }, sounds = mcl_sounds.node_sound_dirt_defaults(), _mcl_hardness = 1.5, - _mcl_blast_resistance = 30, + _mcl_blast_resistance = 6, }) -- Coral diff --git a/mods/ITEMS/mcl_ocean/prismarine.lua b/mods/ITEMS/mcl_ocean/prismarine.lua index 90626cfa..5840d59c 100644 --- a/mods/ITEMS/mcl_ocean/prismarine.lua +++ b/mods/ITEMS/mcl_ocean/prismarine.lua @@ -19,7 +19,7 @@ minetest.register_node("mcl_ocean:sea_lantern", { tiles = {{name="mcl_ocean_sea_lantern.png", animation={type="vertical_frames", aspect_w=32, aspect_h=32, length=1.25}}}, groups = {handy=1, building_block=1, material_glass=1}, sounds = mcl_sounds.node_sound_glass_defaults(), - _mcl_blast_resistance = 1.5, + _mcl_blast_resistance = 0.3, _mcl_hardness = 0.3, }) @@ -32,7 +32,7 @@ minetest.register_node("mcl_ocean:prismarine", { tiles = {{name="mcl_ocean_prismarine_anim.png", animation={type="vertical_frames", aspect_w=32, aspect_h=32, length=45.0}}}, groups = {pickaxey=1, building_block=1, material_stone=1}, sounds = mcl_sounds.node_sound_stone_defaults(), - _mcl_blast_resistance = 30, + _mcl_blast_resistance = 1.5, _mcl_hardness = 1.5, }) @@ -44,7 +44,7 @@ minetest.register_node("mcl_ocean:prismarine_brick", { tiles = {"mcl_ocean_prismarine_bricks.png"}, groups = {pickaxey=1, building_block=1, material_stone=1}, sounds = mcl_sounds.node_sound_stone_defaults(), - _mcl_blast_resistance = 30, + _mcl_blast_resistance = 1.5, _mcl_hardness = 1.5, }) @@ -56,7 +56,7 @@ minetest.register_node("mcl_ocean:prismarine_dark", { tiles = {"mcl_ocean_prismarine_dark.png"}, groups = {pickaxey=1, building_block=1, material_stone=1}, sounds = mcl_sounds.node_sound_stone_defaults(), - _mcl_blast_resistance = 30, + _mcl_blast_resistance = 1.5, _mcl_hardness = 1.5, }) diff --git a/mods/ITEMS/mcl_portals/portal_end.lua b/mods/ITEMS/mcl_portals/portal_end.lua index c7e8cf8d..8506dd27 100644 --- a/mods/ITEMS/mcl_portals/portal_end.lua +++ b/mods/ITEMS/mcl_portals/portal_end.lua @@ -79,7 +79,7 @@ minetest.register_node("mcl_portals:portal_end", { groups = {portal=1, not_in_creative_inventory = 1, disable_jump = 1}, _mcl_hardness = -1, - _mcl_blast_resistance = 18000000, + _mcl_blast_resistance = 36000000, }) -- Obsidian platform at the End portal destination in the End @@ -329,7 +329,7 @@ minetest.register_node("mcl_portals:end_portal_frame", { on_rotate = rotate_frame, - _mcl_blast_resistance = 18000000, + _mcl_blast_resistance = 36000000, _mcl_hardness = -1, }) @@ -368,7 +368,7 @@ minetest.register_node("mcl_portals:end_portal_frame_eye", { on_rotate = rotate_frame_eye, - _mcl_blast_resistance = 18000000, + _mcl_blast_resistance = 36000000, _mcl_hardness = -1, }) diff --git a/mods/ITEMS/mcl_signs/init.lua b/mods/ITEMS/mcl_signs/init.lua index 442458a9..afb8423e 100644 --- a/mods/ITEMS/mcl_signs/init.lua +++ b/mods/ITEMS/mcl_signs/init.lua @@ -412,7 +412,7 @@ minetest.register_node("mcl_signs:wall_sign", { end end, _mcl_hardness = 1, - _mcl_blast_resistance = 5, + _mcl_blast_resistance = 1, }) -- Standing sign nodes. @@ -452,7 +452,7 @@ local ssign = { end, _mcl_hardness = 1, - _mcl_blast_resistance = 5, + _mcl_blast_resistance = 1, } minetest.register_node("mcl_signs:standing_sign", ssign) diff --git a/mods/ITEMS/mcl_sponges/init.lua b/mods/ITEMS/mcl_sponges/init.lua index 28edb4f7..db68b281 100644 --- a/mods/ITEMS/mcl_sponges/init.lua +++ b/mods/ITEMS/mcl_sponges/init.lua @@ -90,7 +90,7 @@ minetest.register_node("mcl_sponges:sponge", { end return minetest.item_place_node(itemstack, placer, pointed_thing) end, - _mcl_blast_resistance = 3, + _mcl_blast_resistance = 0.6, _mcl_hardness = 0.6, }) @@ -108,7 +108,7 @@ minetest.register_node("mcl_sponges:sponge_wet", { stack_max = 64, sounds = mcl_sounds.node_sound_dirt_defaults(), groups = {handy=1, building_block=1}, - _mcl_blast_resistance = 3, + _mcl_blast_resistance = 0.6, _mcl_hardness = 0.6, }) @@ -127,7 +127,7 @@ if minetest.get_modpath("mclx_core") then stack_max = 64, sounds = mcl_sounds.node_sound_dirt_defaults(), groups = {handy=1, building_block=1}, - _mcl_blast_resistance = 3, + _mcl_blast_resistance = 0.6, _mcl_hardness = 0.6, }) diff --git a/mods/ITEMS/mcl_walls/init.lua b/mods/ITEMS/mcl_walls/init.lua index be07d549..5704309d 100644 --- a/mods/ITEMS/mcl_walls/init.lua +++ b/mods/ITEMS/mcl_walls/init.lua @@ -166,7 +166,7 @@ function mcl_walls.register_wall(nodename, description, source, tiles, inventory fixed = take }, sounds = sounds, - _mcl_blast_resistance = 30, + _mcl_blast_resistance = 6, _mcl_hardness = 2, }) @@ -193,7 +193,7 @@ function mcl_walls.register_wall(nodename, description, source, tiles, inventory fixed = {pillar, full_blocks[1]} }, sounds = sounds, - _mcl_blast_resistance = 30, + _mcl_blast_resistance = 6, _mcl_hardness = 2, }) -- Add entry alias for the Help @@ -218,7 +218,7 @@ function mcl_walls.register_wall(nodename, description, source, tiles, inventory fixed = {pillar, full_blocks[2]} }, sounds = sounds, - _mcl_blast_resistance = 30, + _mcl_blast_resistance = 6, _mcl_hardness = 2, }) -- Add entry alias for the Help @@ -249,7 +249,7 @@ function mcl_walls.register_wall(nodename, description, source, tiles, inventory collisionbox = {-0.2, 0, -0.2, 0.2, 1.4, 0.2}, on_construct = update_wall, sounds = sounds, - _mcl_blast_resistance = 30, + _mcl_blast_resistance = 6, _mcl_hardness = 2, }) if source then diff --git a/mods/ITEMS/mcl_wool/init.lua b/mods/ITEMS/mcl_wool/init.lua index 9e3785b3..31649d70 100644 --- a/mods/ITEMS/mcl_wool/init.lua +++ b/mods/ITEMS/mcl_wool/init.lua @@ -63,7 +63,7 @@ for _, row in ipairs(wool.dyes) do groups = {handy=1,shearsy_wool=1, flammable=1,wool=1,building_block=1,[color_group]=1}, sounds = mcl_sounds.node_sound_wool_defaults(), _mcl_hardness = 0.8, - _mcl_blast_resistance = 4, + _mcl_blast_resistance = 0.8, }) minetest.register_node("mcl_wool:"..name.."_carpet", { description = desc_carpet, @@ -89,7 +89,7 @@ for _, row in ipairs(wool.dyes) do }, }, _mcl_hardness = 0.1, - _mcl_blast_resistance = 0.5, + _mcl_blast_resistance = 0.1, }) if mod_doc and not is_canonical then doc.add_entry_alias("nodes", "mcl_wool:"..canonical_color, "nodes", "mcl_wool:"..name) diff --git a/mods/ITEMS/xpanes/init.lua b/mods/ITEMS/xpanes/init.lua index 6f8ff22b..b98d65e3 100644 --- a/mods/ITEMS/xpanes/init.lua +++ b/mods/ITEMS/xpanes/init.lua @@ -202,7 +202,7 @@ local pane = function(description, node, append) {node, node, node}, }, drop = "", - _mcl_blast_resistance = 1.5, + _mcl_blast_resistance = 0.3, _mcl_hardness = 0.3, }) @@ -225,7 +225,7 @@ xpanes.register_pane("bar", { {"mcl_core:iron_ingot", "mcl_core:iron_ingot", "mcl_core:iron_ingot"}, {"mcl_core:iron_ingot", "mcl_core:iron_ingot", "mcl_core:iron_ingot"}, }, - _mcl_blast_resistance = 30, + _mcl_blast_resistance = 6, _mcl_hardness = 5, }) From 92ab90fd1b028d76735443201b374ee6b961bc2e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elias=20=C3=85str=C3=B6m?= Date: Sat, 18 Apr 2020 12:19:18 +0200 Subject: [PATCH 653/737] Add knockback for mobs --- mods/CORE/mcl_explosions/init.lua | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/mods/CORE/mcl_explosions/init.lua b/mods/CORE/mcl_explosions/init.lua index 225c2e77..e0a71bf6 100644 --- a/mods/CORE/mcl_explosions/init.lua +++ b/mods/CORE/mcl_explosions/init.lua @@ -322,17 +322,18 @@ local function trace_explode(pos, strength, raydirs, radius, drop_chance) -- Punch entity with damage depending on explosion exposure and -- distance to explosion local exposure = count / N_EXPOSURE_RAYS - local punch_vec = vector.subtract(pos, opos) + local punch_vec = vector.subtract(opos, pos) local punch_dir = vector.normalize(punch_vec) local impact = (1 - vector.length(punch_vec) / punch_radius) * exposure if impact < 0 then impact = 0 end local damage = math.floor((impact * impact + impact) * 7 * strength + 1) - obj:punch(obj, nil, { damage_groups = { fleshy = damage } }, punch_dir) + obj:punch(obj, 10, { damage_groups = { full_punch_interval = 1, + fleshy = damage, knockback = impact * 20.0 } }, punch_dir) if obj:is_player() then - obj:add_player_velocity(vector.multiply(punch_dir, -exposure * 20)) + obj:add_player_velocity(vector.multiply(punch_dir, impact * 20)) end end end From cdea2eeabf570a22ca2a79710a019093e63b6f47 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elias=20=C3=85str=C3=B6m?= Date: Sat, 18 Apr 2020 12:22:28 +0200 Subject: [PATCH 654/737] Change mcl_mobs to enable knockback in y direction --- mods/ENTITIES/mcl_mobs/api.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ENTITIES/mcl_mobs/api.lua b/mods/ENTITIES/mcl_mobs/api.lua index 86ec7ee3..69657cea 100644 --- a/mods/ENTITIES/mcl_mobs/api.lua +++ b/mods/ENTITIES/mcl_mobs/api.lua @@ -2730,7 +2730,7 @@ local mob_punch = function(self, hitter, tflp, tool_capabilities, dir) self.object:set_velocity({ x = dir.x * kb, - y = up, + y = dir.y * kb + up, z = dir.z * kb }) From b4ea2afe77ecae00140e602fc459ce94120a3d50 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elias=20=C3=85str=C3=B6m?= Date: Sat, 18 Apr 2020 14:16:32 +0200 Subject: [PATCH 655/737] Add tnt_knockback flag for entities When set to true, entities will be knocked back when affected by TNT explosions. Also ignore '__builtin:item' entities to reduce lag, and replace tabs with spaces in 'mcl_explosions/init.lua'. --- mods/CORE/mcl_explosions/init.lua | 181 +++++++++++++++--------------- 1 file changed, 92 insertions(+), 89 deletions(-) diff --git a/mods/CORE/mcl_explosions/init.lua b/mods/CORE/mcl_explosions/init.lua index e0a71bf6..b8358acd 100644 --- a/mods/CORE/mcl_explosions/init.lua +++ b/mods/CORE/mcl_explosions/init.lua @@ -144,21 +144,21 @@ end -- pos - The position of the explosion -- radius - The radius of the explosion local function add_particles(pos, radius) - minetest.add_particlespawner({ - amount = 64, - time = 0.125, - minpos = pos, - maxpos = pos, - minvel = {x = -radius, y = -radius, z = -radius}, - maxvel = {x = radius, y = radius, z = radius}, - minacc = vector.new(), - maxacc = vector.new(), - minexptime = 0.5, - maxexptime = 1.0, - minsize = radius * 0.5, - maxsize = radius * 1.0, - texture = "tnt_smoke.png", - }) + minetest.add_particlespawner({ + amount = 64, + time = 0.125, + minpos = pos, + maxpos = pos, + minvel = {x = -radius, y = -radius, z = -radius}, + maxvel = {x = radius, y = radius, z = radius}, + minacc = vector.new(), + maxacc = vector.new(), + minexptime = 0.5, + maxexptime = 1.0, + minsize = radius * 0.5, + maxsize = radius * 1.0, + texture = "tnt_smoke.png", + }) end -- Get position from hash. This should be identical to @@ -242,7 +242,7 @@ local function trace_explode(pos, strength, raydirs, radius, drop_chance) end if cid ~= AIR_CID then - destroy[hash] = idx + destroy[hash] = idx end end end @@ -253,88 +253,91 @@ local function trace_explode(pos, strength, raydirs, radius, drop_chance) -- Trace rays for entity damage for _, obj in pairs(objs) do - -- Object position and direction to explosion center - local opos = obj:get_pos() + local ent = obj:get_luaentity() - if obj:get_luaentity() ~= nil or obj:is_player() then + -- Ignore items to lower lag + if obj:is_player() or (ent and ent.name ~= '__builtin.item') then + local opos = obj:get_pos() local collisionbox = nil if obj:is_player() then - collisionbox = { -0.3, 0.0, -0.3, 0.3, 1.77, 0.3 } - elseif obj:get_luaentity().name then - local def = minetest.registered_entities[obj:get_luaentity().name] - collisionbox = def.collisionbox + collisionbox = { -0.3, 0.0, -0.3, 0.3, 1.77, 0.3 } + elseif ent.name then + local def = minetest.registered_entities[ent.name] + collisionbox = def.collisionbox end if collisionbox then - -- Create rays from random points in the collision box - local x1 = collisionbox[1] * 2 - local y1 = collisionbox[2] * 2 - local z1 = collisionbox[3] * 2 - local x2 = collisionbox[4] * 2 - local y2 = collisionbox[5] * 2 - local z2 = collisionbox[6] * 2 - local x_len = math.abs(x2 - x1) - local y_len = math.abs(y2 - y1) - local z_len = math.abs(z2 - z1) + -- Create rays from random points in the collision box + local x1 = collisionbox[1] * 2 + local y1 = collisionbox[2] * 2 + local z1 = collisionbox[3] * 2 + local x2 = collisionbox[4] * 2 + local y2 = collisionbox[5] * 2 + local z2 = collisionbox[6] * 2 + local x_len = math.abs(x2 - x1) + local y_len = math.abs(y2 - y1) + local z_len = math.abs(z2 - z1) - -- Move object position to the center of its bounding box - opos.x = opos.x + x1 + x2 - opos.y = opos.y + y1 + y2 - opos.z = opos.z + z1 + z2 + -- Move object position to the center of its bounding box + opos.x = opos.x + x1 + x2 + opos.y = opos.y + y1 + y2 + opos.z = opos.z + z1 + z2 - -- Count number of rays from collision box which are unobstructed - local count = N_EXPOSURE_RAYS + -- Count number of rays from collision box which are unobstructed + local count = N_EXPOSURE_RAYS - for i = 1, N_EXPOSURE_RAYS do - local rpos_x = opos.x + math.random() * x_len - x_len / 2 - local rpos_y = opos.y + math.random() * y_len - y_len / 2 - local rpos_z = opos.z + math.random() * z_len - z_len / 2 - local rdir_x = pos.x - rpos_x - local rdir_y = pos.y - rpos_y - local rdir_z = pos.z - rpos_z - local rdir_len = math.hypot(rdir_x, math.hypot(rdir_y, rdir_z)) - rdir_x = rdir_x / rdir_len - rdir_y = rdir_y / rdir_len - rdir_z = rdir_z / rdir_len + for i = 1, N_EXPOSURE_RAYS do + local rpos_x = opos.x + math.random() * x_len - x_len / 2 + local rpos_y = opos.y + math.random() * y_len - y_len / 2 + local rpos_z = opos.z + math.random() * z_len - z_len / 2 + local rdir_x = pos.x - rpos_x + local rdir_y = pos.y - rpos_y + local rdir_z = pos.z - rpos_z + local rdir_len = math.hypot(rdir_x, math.hypot(rdir_y, rdir_z)) + rdir_x = rdir_x / rdir_len + rdir_y = rdir_y / rdir_len + rdir_z = rdir_z / rdir_len - for i=0, rdir_len / STEP_LENGTH do - rpos_x = rpos_x + rdir_x * STEP_LENGTH - rpos_y = rpos_y + rdir_y * STEP_LENGTH - rpos_z = rpos_z + rdir_z * STEP_LENGTH - local npos_x = math.floor(rpos_x + 0.5) - local npos_y = math.floor(rpos_y + 0.5) - local npos_z = math.floor(rpos_z + 0.5) - local idx = (npos_z - emin_z) * zstride + (npos_y - emin_y) * ystride + - npos_x - emin_x + 1 + for i=0, rdir_len / STEP_LENGTH do + rpos_x = rpos_x + rdir_x * STEP_LENGTH + rpos_y = rpos_y + rdir_y * STEP_LENGTH + rpos_z = rpos_z + rdir_z * STEP_LENGTH + local npos_x = math.floor(rpos_x + 0.5) + local npos_y = math.floor(rpos_y + 0.5) + local npos_z = math.floor(rpos_z + 0.5) + local idx = (npos_z - emin_z) * zstride + (npos_y - emin_y) * ystride + + npos_x - emin_x + 1 - local cid = data[idx] - local br = node_br[cid] + local cid = data[idx] + local br = node_br[cid] - if br ~= 0 then - count = count - 1 - break - end - end - end + if br ~= 0 then + count = count - 1 + break + end + end + end - -- Punch entity with damage depending on explosion exposure and - -- distance to explosion - local exposure = count / N_EXPOSURE_RAYS - local punch_vec = vector.subtract(opos, pos) - local punch_dir = vector.normalize(punch_vec) - local impact = (1 - vector.length(punch_vec) / punch_radius) * exposure - if impact < 0 then - impact = 0 - end - local damage = math.floor((impact * impact + impact) * 7 * strength + 1) + -- Punch entity with damage depending on explosion exposure and + -- distance to explosion + local exposure = count / N_EXPOSURE_RAYS + local punch_vec = vector.subtract(opos, pos) + local punch_dir = vector.normalize(punch_vec) + local impact = (1 - vector.length(punch_vec) / punch_radius) * exposure + if impact < 0 then + impact = 0 + end + local damage = math.floor((impact * impact + impact) * 7 * strength + 1) obj:punch(obj, 10, { damage_groups = { full_punch_interval = 1, - fleshy = damage, knockback = impact * 20.0 } }, punch_dir) + fleshy = damage, knockback = impact * 20.0 } }, punch_dir) - if obj:is_player() then - obj:add_player_velocity(vector.multiply(punch_dir, impact * 20)) - end + if obj:is_player() then + obj:add_player_velocity(vector.multiply(punch_dir, impact * 20)) + elseif ent.tnt_knockback then + obj:add_velocity(vector.multiply(punch_dir, impact * 20)) + end end end end @@ -348,16 +351,16 @@ local function trace_explode(pos, strength, raydirs, radius, drop_chance) if do_drop or on_blast ~= nil then local npos = get_position_from_hash(hash) if on_blast ~= nil then - remove = on_blast(npos, 1.0) + remove = on_blast(npos, 1.0) else - local name = minetest.get_name_from_content_id(data[idx]) - local drop = minetest.get_node_drops(name, "") + local name = minetest.get_name_from_content_id(data[idx]) + local drop = minetest.get_node_drops(name, "") - for _, item in ipairs(drop) do - if type(item) == "string" then - minetest.add_item(npos, item) - end - end + for _, item in ipairs(drop) do + if type(item) == "string" then + minetest.add_item(npos, item) + end + end end end if remove then From 64c767ad8c8e9137b2793e5f3b93f1632184dfaf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elias=20=C3=85str=C3=B6m?= Date: Sat, 18 Apr 2020 14:18:23 +0200 Subject: [PATCH 656/737] Make TNT behave like Minecraft TNT entities are now knocked back by explosions. When a TNT block becomes triggered by an explosion, its fuse time is set to a random value between 0.5 and 1.5 seconds. --- mods/ITEMS/mcl_tnt/init.lua | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_tnt/init.lua b/mods/ITEMS/mcl_tnt/init.lua index 5f53afaf..0ec2679b 100644 --- a/mods/ITEMS/mcl_tnt/init.lua +++ b/mods/ITEMS/mcl_tnt/init.lua @@ -104,7 +104,8 @@ minetest.register_node("mcl_tnt:tnt", { groups = { dig_immediate = 3, tnt = 1, enderman_takable=1 }, mesecons = tnt_mesecons, on_blast = function(pos) - spawn_tnt(pos, "mcl_tnt:tnt") + local e = spawn_tnt(pos, "mcl_tnt:tnt") + e:get_luaentity().timer = tnt.BOOMTIMER - (0.5 + math.random()) return true end, _on_ignite = function(player, pointed_thing) @@ -133,6 +134,7 @@ local TNT = { -- Initial value for our timer timer = 0, blinktimer = 0, + tnt_knockback = true, blinkstatus = true,} function TNT:on_activate(staticdata) From a62a75c79986ba37089e17f1c287c61adf8c42ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elias=20=C3=85str=C3=B6m?= Date: Sat, 18 Apr 2020 22:16:29 +0200 Subject: [PATCH 657/737] Do not drop items in creative mode It works like this in Minecraft. This will also reduce lag when playing with TNT in creative. --- mods/CORE/mcl_explosions/init.lua | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/mods/CORE/mcl_explosions/init.lua b/mods/CORE/mcl_explosions/init.lua index b8358acd..22dae608 100644 --- a/mods/CORE/mcl_explosions/init.lua +++ b/mods/CORE/mcl_explosions/init.lua @@ -19,6 +19,8 @@ mcl_explosions = {} +local creative_mode = minetest.settings:get_bool("creative_mode") + -- Saved sphere explosion shapes for various radiuses local sphere_shapes = {} @@ -344,7 +346,7 @@ local function trace_explode(pos, strength, raydirs, radius, drop_chance) -- Remove destroyed blocks and drop items for hash, idx in pairs(destroy) do - local do_drop = math.random() <= drop_chance + local do_drop = not creative_mode and math.random() <= drop_chance local on_blast = node_on_blast[data[idx]] local remove = true From a10dff84214c89b6768f5d3ce0cdaed3bb9bb5f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elias=20=C3=85str=C3=B6m?= Date: Sat, 18 Apr 2020 23:06:08 +0200 Subject: [PATCH 658/737] Use walkable for entity exposure This makes TNT do full damage under water. --- mods/CORE/mcl_explosions/init.lua | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/mods/CORE/mcl_explosions/init.lua b/mods/CORE/mcl_explosions/init.lua index 22dae608..1c016c08 100644 --- a/mods/CORE/mcl_explosions/init.lua +++ b/mods/CORE/mcl_explosions/init.lua @@ -25,8 +25,9 @@ local creative_mode = minetest.settings:get_bool("creative_mode") local sphere_shapes = {} -- Saved node definitions in table using cid-keys for faster look-up. -local node_br = {} +local node_blastres = {} local node_on_blast = {} +local node_walkable = {} local AIR_CID = minetest.get_content_id('air') @@ -39,8 +40,9 @@ local N_EXPOSURE_RAYS = 16 minetest.after(0, function() -- Store blast resistance values by content ids to improve performance. for name, def in pairs(minetest.registered_nodes) do - node_br[minetest.get_content_id(name)] = def._mcl_blast_resistance or 0 + node_blastres[minetest.get_content_id(name)] = def._mcl_blast_resistance or 0 node_on_blast[minetest.get_content_id(name)] = def.on_blast + node_walkable[minetest.get_content_id(name)] = def.walkable end end) @@ -228,7 +230,7 @@ local function trace_explode(pos, strength, raydirs, radius, drop_chance) npos_x - emin_x + 1 local cid = data[idx] - local br = node_br[cid] + local br = node_blastres[cid] local hash = (npos_z + 32768) * 65536 * 65536 + (npos_y + 32768) * 65536 + npos_x + 32768 @@ -313,9 +315,9 @@ local function trace_explode(pos, strength, raydirs, radius, drop_chance) local cid = data[idx] - local br = node_br[cid] + local walkable = node_walkable[cid] - if br ~= 0 then + if walkable then count = count - 1 break end From 0929ce4f20bbc364744813af8bb5d5db77abfd10 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Wed, 22 Apr 2020 01:31:30 +0200 Subject: [PATCH 659/737] Remove fire below air --- mods/ITEMS/mcl_fire/init.lua | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/mods/ITEMS/mcl_fire/init.lua b/mods/ITEMS/mcl_fire/init.lua index 48122546..b85e592d 100644 --- a/mods/ITEMS/mcl_fire/init.lua +++ b/mods/ITEMS/mcl_fire/init.lua @@ -301,7 +301,7 @@ end -- Extinguish all flames quickly with water and such minetest.register_abm({ - label = "Extinguish flame", + label = "Extinguish fire", nodenames = {"mcl_fire:fire", "mcl_fire:eternal_fire"}, neighbors = {"group:puts_out_fire"}, interval = 3, @@ -369,23 +369,24 @@ else -- Fire enabled end, }) - -- Turn flammable nodes around fire into fire + -- Turn flammable nodes into air minetest.register_abm({ - label = "Remove flammable nodes", + label = "Remove flammable node below fire", nodenames = {"group:fire"}, neighbors = {"group:flammable"}, interval = 5, chance = 18, catch_up = false, action = function(pos, node, active_object_count, active_object_count_wider) - local p = minetest.find_node_near(pos, 1, {"group:flammable"}) - if p then - local flammable_node = minetest.get_node(p) - local def = minetest.registered_nodes[flammable_node.name] - if def.on_burn then - def.on_burn(p) - else - minetest.set_node(p, {name="mcl_fire:fire"}) + local p = {x=pos.x, y=pos.y-1, z=pos.z} + local flammable_node = minetest.get_node(p) + local def = minetest.registered_nodes[flammable_node.name] + if def.on_burn then + def.on_burn(p) + else + local g = minetest.get_item_group(flammable_node.name, "flammable") + if g ~= -1 then + minetest.set_node(p, {name="air"}) minetest.check_for_falling(p) end end From c81a18ac1a7c5ee791da1bfeb3289ac50170815e Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Wed, 22 Apr 2020 01:38:41 +0200 Subject: [PATCH 660/737] Refactor mcl_void_damage --- mods/ENVIRONMENT/mcl_void_damage/init.lua | 85 ++++++++++++++++------- 1 file changed, 61 insertions(+), 24 deletions(-) diff --git a/mods/ENVIRONMENT/mcl_void_damage/init.lua b/mods/ENVIRONMENT/mcl_void_damage/init.lua index 5490f500..f4824414 100644 --- a/mods/ENVIRONMENT/mcl_void_damage/init.lua +++ b/mods/ENVIRONMENT/mcl_void_damage/init.lua @@ -1,42 +1,79 @@ local S = minetest.get_translator("mcl_void_damage") +local enable_damage = minetest.settings:get_bool("enable_damage") local voidtimer = 0 +local VOID_DAMAGE_FREQ = 0.5 +local VOID_DAMAGE = 4 + +-- Remove entities that fall too deep into the void +minetest.register_on_mods_loaded(function() + -- We do this by overwriting on_step of all entities + for entitystring, def in pairs(minetest.registered_entities) do + local on_step_old = def.on_step + if not on_step_old then + on_step_old = function() end + end + local on_step = function(self, dtime) + on_step_old(self, dtime) + local obj = self.object + local pos = obj:get_pos() + -- Old on_step function might have deleted object, + -- so we delete it + if not pos then + return + end + + if not self._void_timer then + self._void_timer = 0 + end + self._void_timer = self._void_timer + dtime + if self._void_timer <= VOID_DAMAGE_FREQ then + return + end + self._void_timer = 0 -minetest.register_globalstep(function(dtime) - voidtimer = voidtimer + dtime - if voidtimer > 0.5 then - voidtimer = 0 - local objs = minetest.object_refs - local enable_damage = minetest.settings:get_bool("enable_damage") - for id, obj in pairs(objs) do local pos = obj:get_pos() local void, void_deadly = mcl_worlds.is_in_void(pos) if void_deadly then - local is_player = obj:is_player() local ent = obj:get_luaentity() - local immortal_val = obj:get_armor_groups().immortal + obj:remove() + return + end + end + def.on_step = on_step + minetest.register_entity(":"..entitystring, def) + end +end) + +-- Hurt players or teleport them back to spawn if they are too deep in the void +minetest.register_globalstep(function(dtime) + voidtimer = voidtimer + dtime + if voidtimer > VOID_DAMAGE_FREQ then + voidtimer = 0 + local enable_damage = minetest.settings:get_bool("enable_damage") + local players = minetest.get_connected_players() + for p=1, #players do + local player = players[p] + local pos = player:get_pos() + local void, void_deadly = mcl_worlds.is_in_void(pos) + if void_deadly then + local immortal_val = player:get_armor_groups().immortal local is_immortal = false if immortal_val and immortal_val > 0 then is_immortal = true end if is_immortal or not enable_damage then - if is_player then - -- If damage is disabled, we can't kill players. - -- So we just teleport the player back to spawn. - local spawn = mcl_spawn.get_spawn_pos(obj) - obj:set_pos(spawn) - mcl_worlds.dimension_change(obj, mcl_worlds.pos_to_dimension(spawn)) - minetest.chat_send_player(obj:get_player_name(), S("The void is off-limits to you!")) - else - obj:remove() - end + -- If damage is disabled, we can't kill players. + -- So we just teleport the player back to spawn. + local spawn = mcl_spawn.get_spawn_pos(player) + player:set_pos(spawn) + mcl_worlds.dimension_change(player, mcl_worlds.pos_to_dimension(spawn)) + minetest.chat_send_player(player:get_player_name(), S("The void is off-limits to you!")) elseif enable_damage and not is_immortal then -- Damage enabled, not immortal: Deal void damage (4 HP / 0.5 seconds) - if obj:get_hp() > 0 then - if is_player then - mcl_death_messages.player_damage(obj, S("@1 fell into the endless void.", obj:get_player_name())) - end - obj:set_hp(obj:get_hp() - 4) + if player:get_hp() > 0 then + mcl_death_messages.player_damage(player, S("@1 fell into the endless void.", player:get_player_name())) + player:set_hp(player:get_hp() - VOID_DAMAGE) end end end From eea07f0ce76088c07ff12f09ef5a27199de16534 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 27 Apr 2020 14:05:09 +0200 Subject: [PATCH 661/737] Fix incomplete dry grass replacement LBM --- mods/ITEMS/mcl_core/functions.lua | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_core/functions.lua b/mods/ITEMS/mcl_core/functions.lua index fb15e9c8..e8d7c2c2 100644 --- a/mods/ITEMS/mcl_core/functions.lua +++ b/mods/ITEMS/mcl_core/functions.lua @@ -757,9 +757,10 @@ minetest.register_abm({ end, }) +local SAVANNA_INDEX = 1 minetest.register_lbm({ label = "Replace legacy dry grass", - name = "mcl_core:replace_legacy_dry_grass", + name = "mcl_core:replace_legacy_dry_grass_0_65_0", nodenames = {"mcl_core:dirt_with_dry_grass", "mcl_core:dirt_with_dry_grass_snow"}, action = function(pos, node) local biome_data = minetest.get_biome_data(pos) @@ -776,11 +777,15 @@ minetest.register_lbm({ node.param2 = reg_biome._mcl_palette_index -- Fall back to savanna palette index if not node.param2 then - node.param2 = 1 + node.param2 = SAVANNA_INDEX end minetest.set_node(pos, node) + return end end + node.param2 = SAVANNA_INDEX + minetest.set_node(pos, node) + return end, }) From 008969949e2fcdeb52d6b931abc171ed4ab3167d Mon Sep 17 00:00:00 2001 From: Alexander Minges Date: Tue, 28 Apr 2020 16:32:28 +0200 Subject: [PATCH 662/737] change growing pumpkins to be faceless --- mods/ITEMS/mcl_farming/pumpkin.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_farming/pumpkin.lua b/mods/ITEMS/mcl_farming/pumpkin.lua index f77d6f0d..5613c7c1 100644 --- a/mods/ITEMS/mcl_farming/pumpkin.lua +++ b/mods/ITEMS/mcl_farming/pumpkin.lua @@ -123,7 +123,7 @@ end mcl_farming:add_plant("plant_pumpkin_stem", "mcl_farming:pumpkintige_unconnect", {"mcl_farming:pumpkin_1", "mcl_farming:pumpkin_2", "mcl_farming:pumpkin_3", "mcl_farming:pumpkin_4", "mcl_farming:pumpkin_5", "mcl_farming:pumpkin_6", "mcl_farming:pumpkin_7"}, 30, 5) -- Register actual pumpkin, connected stems and stem-to-pumpkin growth -mcl_farming:add_gourd("mcl_farming:pumpkintige_unconnect", "mcl_farming:pumpkintige_linked", "mcl_farming:pumpkintige_unconnect", stem_def, stem_drop, "mcl_farming:pumpkin_face", pumpkin_face_base_def, 30, 15, "mcl_farming_pumpkin_stem_connected.png^[colorize:#FFA800:127", +mcl_farming:add_gourd("mcl_farming:pumpkintige_unconnect", "mcl_farming:pumpkintige_linked", "mcl_farming:pumpkintige_unconnect", stem_def, stem_drop, "mcl_farming:pumpkin", pumpkin_base_def, 30, 15, "mcl_farming_pumpkin_stem_connected.png^[colorize:#FFA800:127", function(pos) -- Attempt to spawn iron golem or snow golem mobs_mc.tools.check_iron_golem_summon(pos) From 4343a5d084eb3c80845e34da1c7dd638f099a0f5 Mon Sep 17 00:00:00 2001 From: Alexander Minges Date: Tue, 28 Apr 2020 17:06:15 +0200 Subject: [PATCH 663/737] register carved pumpkin as node --- mods/ITEMS/mcl_farming/pumpkin.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/mods/ITEMS/mcl_farming/pumpkin.lua b/mods/ITEMS/mcl_farming/pumpkin.lua index 5613c7c1..14f1b384 100644 --- a/mods/ITEMS/mcl_farming/pumpkin.lua +++ b/mods/ITEMS/mcl_farming/pumpkin.lua @@ -118,6 +118,7 @@ pumpkin_face_base_def.groups.non_combat_armor=1 if minetest.get_modpath("mcl_armor") then pumpkin_face_base_def.on_secondary_use = armor.on_armor_use end +minetest.register_node("mcl_farming:pumpkin_face", pumpkin_face_base_def) -- Register stem growth mcl_farming:add_plant("plant_pumpkin_stem", "mcl_farming:pumpkintige_unconnect", {"mcl_farming:pumpkin_1", "mcl_farming:pumpkin_2", "mcl_farming:pumpkin_3", "mcl_farming:pumpkin_4", "mcl_farming:pumpkin_5", "mcl_farming:pumpkin_6", "mcl_farming:pumpkin_7"}, 30, 5) From 1cbebae5b811b5ca08aed45ba909dc39bc115644 Mon Sep 17 00:00:00 2001 From: Alexander Minges Date: Wed, 29 Apr 2020 19:02:32 +0200 Subject: [PATCH 664/737] fix crash when fueling powered minecarts --- mods/ENTITIES/mcl_minecarts/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ENTITIES/mcl_minecarts/init.lua b/mods/ENTITIES/mcl_minecarts/init.lua index dfba29d0..c6ab7a25 100644 --- a/mods/ENTITIES/mcl_minecarts/init.lua +++ b/mods/ENTITIES/mcl_minecarts/init.lua @@ -688,7 +688,7 @@ register_minecart( if not minetest.settings:get_bool("creative_mode") then held:take_item() - local index = clicker:get_wielded_index() + local index = clicker:get_wield_index() local inv = clicker:get_inventory() inv:set_stack("main", index, held) end From 48e320d9074fca974627f19775cf8a623026240e Mon Sep 17 00:00:00 2001 From: Alexander Minges Date: Wed, 29 Apr 2020 21:34:02 +0200 Subject: [PATCH 665/737] keep track of changes compared to upstream --- README.md | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index c2e84376..e5c543f0 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,17 @@ -# MineClone 2 -An unofficial Minecraft-like game for Minetest. Forked from MineClone by davedevils. -Developed by Wuzzy and contributors. Not developed or endorsed by Mojang AB. +# MineClone 2 (Forkhausen Edition) +An unofficial Minecraft-like game for Minetest. Forked from MineClone2 developed by Wuzzy +and contributors which is a fork of MineClone by davedevils. Not developed or endorsed by Mojang AB. Version: 0.64.0 +## Differences to MineClone 2 +So far some minor fixes that I also sent upstream to Wuzzy for inclusion and some yet unmerged features from others: + +* Fix a crash when refueling powered minecarts [issue #683](https://git.minetest.land/Wuzzy/MineClone2/issues/683) +* Pumpkins grow without a face and can be carved [issue #682](https://git.minetest.land/Wuzzy/MineClone2/issues/682) +* Fix acceleration of powered minecarts and powered rails not summing up (by 2mac) + [issue #658](https://git.minetest.land/Wuzzy/MineClone2/issues/658). + ### Gameplay You start in a randomly-generated world made entirely of cubes. You can explore the world and dig and build almost every block in the world to create new From ef20ac54c3872b722db8824bb294cca08c8f81eb Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Thu, 30 Apr 2020 18:13:05 +0200 Subject: [PATCH 666/737] Fix crash when fueling furnace minecart --- mods/ENTITIES/mcl_minecarts/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ENTITIES/mcl_minecarts/init.lua b/mods/ENTITIES/mcl_minecarts/init.lua index 14f70d24..95fcbf2d 100644 --- a/mods/ENTITIES/mcl_minecarts/init.lua +++ b/mods/ENTITIES/mcl_minecarts/init.lua @@ -685,7 +685,7 @@ register_minecart( if not minetest.settings:get_bool("creative_mode") then held:take_item() - local index = clicker:get_wielded_index() + local index = clicker:get_wield_index() local inv = clicker:get_inventory() inv:set_stack("main", index, held) end From 8dd1cf6719b2cf4a5768cb47503ed9198b2693c8 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Thu, 30 Apr 2020 18:25:23 +0200 Subject: [PATCH 667/737] Update Contributing guidelines --- CONTRIBUTING.md | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 57b1a41f..ec238b32 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -5,7 +5,7 @@ Wow, thank you! :-) But first, some things to note: MineClone 2's development target is to make a free software clone of Minecraft, -***version 1.11*** (later: 1.12), ***PC edition***. +***version 1.11***, ***PC edition***. MineClone 2 is maintained by one person. Namely, Wuzzy. You can find me, Wuzzy, in the Minetest forums (forums.minetest.net), in IRC in the #minetest @@ -26,8 +26,9 @@ For small and medium changes: * Fork the repository * Do your change in a new branch -* Upload the repository somewhere where it can be accessed from the Internet -* Ask me to pull in your changes (and briefly say what you're changed) +* Post a pull request here: https://git.minetest.land/Wuzzy/MineClone2/pulls +* Alternatively: Upload the repository somewhere where it can be accessed + from the Internet and notify me For small changes, sending me a patch is also good. @@ -35,7 +36,7 @@ For big changes: Same as above, but consider notifying me first to avoid duplicate work and possible tears of rejection. ;-) ## Quality remarks -Again: There is ***no*** guarantee I will accept anything from anything. +Again: There is ***no*** guarantee I will accept anything from anybody. But I will gladly take in code from others when I feel it saves me work in the long run. @@ -64,10 +65,10 @@ Depending on what you add, the chances for inclusion vary: ## Coding style guide * Indentations should reflect the code flow -* Use tabs, not spaces for indentation +* Use tabs, not spaces for indentation (tab size = 8) * Never use `minetest.env` ## Reporting bugs Report all bugs and missing Minecraft features here: - + From 58458b2bca1f30191de98e17744607a81d6413fb Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Thu, 30 Apr 2020 20:55:49 +0200 Subject: [PATCH 668/737] mcl_explosions: Rename description.txt --- mods/CORE/mcl_explosions/description.txt | 1 - mods/CORE/mcl_explosions/mod.conf | 2 ++ 2 files changed, 2 insertions(+), 1 deletion(-) delete mode 100644 mods/CORE/mcl_explosions/description.txt create mode 100644 mods/CORE/mcl_explosions/mod.conf diff --git a/mods/CORE/mcl_explosions/description.txt b/mods/CORE/mcl_explosions/description.txt deleted file mode 100644 index a9d5288b..00000000 --- a/mods/CORE/mcl_explosions/description.txt +++ /dev/null @@ -1 +0,0 @@ -This mod adds a common API to create explosions. diff --git a/mods/CORE/mcl_explosions/mod.conf b/mods/CORE/mcl_explosions/mod.conf new file mode 100644 index 00000000..382ece9a --- /dev/null +++ b/mods/CORE/mcl_explosions/mod.conf @@ -0,0 +1,2 @@ +name = mcl_explosions +description = A common API to create explosions. From 9ee0ef5a8d60fae8efbd7732f9212d0b3d8570f6 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Thu, 30 Apr 2020 20:57:38 +0200 Subject: [PATCH 669/737] Explosions: Replace some API calls --- mods/CORE/mcl_explosions/init.lua | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/mods/CORE/mcl_explosions/init.lua b/mods/CORE/mcl_explosions/init.lua index 1c016c08..02a7d7ae 100644 --- a/mods/CORE/mcl_explosions/init.lua +++ b/mods/CORE/mcl_explosions/init.lua @@ -29,15 +29,13 @@ local node_blastres = {} local node_on_blast = {} local node_walkable = {} -local AIR_CID = minetest.get_content_id('air') - -- The step length for the rays (Minecraft uses 0.3) local STEP_LENGTH = 0.3 -- How many rays to compute entity exposure to explosion local N_EXPOSURE_RAYS = 16 -minetest.after(0, function() +minetest.register_on_mods_loaded(function()) -- Store blast resistance values by content ids to improve performance. for name, def in pairs(minetest.registered_nodes) do node_blastres[minetest.get_content_id(name)] = def._mcl_blast_resistance or 0 @@ -245,7 +243,7 @@ local function trace_explode(pos, strength, raydirs, radius, drop_chance) break end - if cid ~= AIR_CID then + if cid ~= minetest.CONTENT_AIR then destroy[hash] = idx end end @@ -368,7 +366,7 @@ local function trace_explode(pos, strength, raydirs, radius, drop_chance) end end if remove then - data[idx] = AIR_CID + data[idx] = minetest.CONTENT_AIR end end From 2b5ddbd62d9afe11ba4950d3c0e794a9726b0059 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Thu, 30 Apr 2020 20:58:58 +0200 Subject: [PATCH 670/737] Explosions: Change item drop handler --- mods/CORE/mcl_explosions/init.lua | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/mods/CORE/mcl_explosions/init.lua b/mods/CORE/mcl_explosions/init.lua index 02a7d7ae..a85d8c0f 100644 --- a/mods/CORE/mcl_explosions/init.lua +++ b/mods/CORE/mcl_explosions/init.lua @@ -359,9 +359,10 @@ local function trace_explode(pos, strength, raydirs, radius, drop_chance) local drop = minetest.get_node_drops(name, "") for _, item in ipairs(drop) do - if type(item) == "string" then - minetest.add_item(npos, item) + if item ~= "string" then + item = item:get_name() .. item:get_count() end + minetest.add_item(npos, item) end end end From 772ea01aff7154255045ab379fba78623d164cfb Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Thu, 30 Apr 2020 21:00:13 +0200 Subject: [PATCH 671/737] Explosions: Fix syntax error --- mods/CORE/mcl_explosions/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/CORE/mcl_explosions/init.lua b/mods/CORE/mcl_explosions/init.lua index a85d8c0f..7f6e4909 100644 --- a/mods/CORE/mcl_explosions/init.lua +++ b/mods/CORE/mcl_explosions/init.lua @@ -35,7 +35,7 @@ local STEP_LENGTH = 0.3 -- How many rays to compute entity exposure to explosion local N_EXPOSURE_RAYS = 16 -minetest.register_on_mods_loaded(function()) +minetest.register_on_mods_loaded(function() -- Store blast resistance values by content ids to improve performance. for name, def in pairs(minetest.registered_nodes) do node_blastres[minetest.get_content_id(name)] = def._mcl_blast_resistance or 0 From 679e2b1b702c96c96a808b216b8f5e87c894a3f3 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Thu, 30 Apr 2020 21:08:42 +0200 Subject: [PATCH 672/737] Explosions: Reduce repeated code --- mods/CORE/mcl_explosions/init.lua | 101 ++++++++++-------------------- 1 file changed, 34 insertions(+), 67 deletions(-) diff --git a/mods/CORE/mcl_explosions/init.lua b/mods/CORE/mcl_explosions/init.lua index 7f6e4909..4a1da232 100644 --- a/mods/CORE/mcl_explosions/init.lua +++ b/mods/CORE/mcl_explosions/init.lua @@ -55,79 +55,46 @@ local function compute_sphere_rays(radius) local rays = {} local sphere = {} - for y = -radius, radius do - for z = -radius, radius do - for x = -radius, 0, 1 do - local d = x * x + y * y + z * z - if d <= radius * radius then - local pos = { x = x, y = y, z = z } - sphere[minetest.hash_node_position(pos)] = pos - break - end - end - end - end - - for y = -radius, radius do - for z = -radius, radius do - for x = radius, 0, -1 do - local d = x * x + y * y + z * z - if d <= radius * radius then - local pos = { x = x, y = y, z = z } - sphere[minetest.hash_node_position(pos)] = pos - break - end - end - end - end - - for x = -radius, radius do - for z = -radius, radius do - for y = -radius, 0, 1 do - local d = x * x + y * y + z * z - if d <= radius * radius then - local pos = { x = x, y = y, z = z } - sphere[minetest.hash_node_position(pos)] = pos - break - end - end - end - end - - for x = -radius, radius do - for z = -radius, radius do - for y = radius, 0, -1 do - local d = x * x + y * y + z * z - if d <= radius * radius then - local pos = { x = x, y = y, z = z } - sphere[minetest.hash_node_position(pos)] = pos - break - end - end - end - end - - for x = -radius, radius do + for i=1, 2 do for y = -radius, radius do - for z = -radius, 0, 1 do - local d = x * x + y * y + z * z - if d <= radius * radius then - local pos = { x = x, y = y, z = z } - sphere[minetest.hash_node_position(pos)] = pos - break + for z = -radius, radius do + for x = -radius, 0, 1 do + local d = x * x + y * y + z * z + if d <= radius * radius then + local pos = { x = x, y = y, z = z } + sphere[minetest.hash_node_position(pos)] = pos + break + end end end end end - for x = -radius, radius do - for y = -radius, radius do - for z = radius, 0, -1 do - local d = x * x + y * y + z * z - if d <= radius * radius then - local pos = { x = x, y = y, z = z } - sphere[minetest.hash_node_position(pos)] = pos - break + for i=1,2 do + for x = -radius, radius do + for z = -radius, radius do + for y = -radius, 0, 1 do + local d = x * x + y * y + z * z + if d <= radius * radius then + local pos = { x = x, y = y, z = z } + sphere[minetest.hash_node_position(pos)] = pos + break + end + end + end + end + end + + for i=1,2 do + for x = -radius, radius do + for y = -radius, radius do + for z = -radius, 0, 1 do + local d = x * x + y * y + z * z + if d <= radius * radius then + local pos = { x = x, y = y, z = z } + sphere[minetest.hash_node_position(pos)] = pos + break + end end end end From 026d406d4b69a74dff5f3513bffc3a8ebebf235d Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Thu, 30 Apr 2020 21:12:30 +0200 Subject: [PATCH 673/737] Fix indents in mcl_explosions --- mods/CORE/mcl_explosions/init.lua | 564 +++++++++++++++--------------- 1 file changed, 279 insertions(+), 285 deletions(-) diff --git a/mods/CORE/mcl_explosions/init.lua b/mods/CORE/mcl_explosions/init.lua index 4a1da232..143db2ca 100644 --- a/mods/CORE/mcl_explosions/init.lua +++ b/mods/CORE/mcl_explosions/init.lua @@ -1,19 +1,13 @@ ---[[ .__ .__ - ____ ___ _________ | | ____ _____|__| ____ ____ ______ - _/ __ \\ \/ /\____ \| | / _ \/ ___/ |/ _ \ / \ / ___/ - \ ___/ > < | |_> > |_( <_> )___ \| ( <_> ) | \\___ \ - \___ >__/\_ \| __/|____/\____/____ >__|\____/|___| /____ > - \/ \/|__| \/ \/ \/ +--[[ +Explosion API mod for Minetest (adapted to MineClone 2) - Explosion API mod for Minetest (adapted to MineClone 2) +This mod is based on the Minetest explosion API mod, but has been changed +to have the same explosion mechanics as Minecraft and work with MineClone. +The computation-intensive parts of the mod has been optimized to allow for +larger explosions and faster world updating. - This mod is based on the Minetest explosion API mod, but has been changed - to have the same explosion mechanics as Minecraft and work with MineClone. - The computation-intensive parts of the mod has been optimized to allow for - larger explosions and faster world updating. - - This mod was created by Elias Astrom and is released - under the LGPLv2.1 license. +This mod was created by Elias Astrom and is released +under the LGPLv2.1 license. --]] @@ -36,348 +30,348 @@ local STEP_LENGTH = 0.3 local N_EXPOSURE_RAYS = 16 minetest.register_on_mods_loaded(function() - -- Store blast resistance values by content ids to improve performance. - for name, def in pairs(minetest.registered_nodes) do - node_blastres[minetest.get_content_id(name)] = def._mcl_blast_resistance or 0 - node_on_blast[minetest.get_content_id(name)] = def.on_blast - node_walkable[minetest.get_content_id(name)] = def.walkable - end + -- Store blast resistance values by content ids to improve performance. + for name, def in pairs(minetest.registered_nodes) do + node_blastres[minetest.get_content_id(name)] = def._mcl_blast_resistance or 0 + node_on_blast[minetest.get_content_id(name)] = def.on_blast + node_walkable[minetest.get_content_id(name)] = def.walkable + end end) --- Compute the rays which make up a sphere with radius. Returns a list of rays --- which can be used to trace explosions. This function is not efficient +-- Compute the rays which make up a sphere with radius. Returns a list of rays +-- which can be used to trace explosions. This function is not efficient -- (especially for larger radiuses), so the generated rays for various radiuses -- should be cached and reused. -- -- Should be possible to improve by using a midpoint circle algorithm multiple -- times to create the sphere, currently uses more of a brute-force approach. local function compute_sphere_rays(radius) - local rays = {} - local sphere = {} + local rays = {} + local sphere = {} - for i=1, 2 do - for y = -radius, radius do - for z = -radius, radius do - for x = -radius, 0, 1 do - local d = x * x + y * y + z * z - if d <= radius * radius then - local pos = { x = x, y = y, z = z } - sphere[minetest.hash_node_position(pos)] = pos - break - end - end - end - end - end + for i=1, 2 do + for y = -radius, radius do + for z = -radius, radius do + for x = -radius, 0, 1 do + local d = x * x + y * y + z * z + if d <= radius * radius then + local pos = { x = x, y = y, z = z } + sphere[minetest.hash_node_position(pos)] = pos + break + end + end + end + end + end - for i=1,2 do - for x = -radius, radius do - for z = -radius, radius do - for y = -radius, 0, 1 do - local d = x * x + y * y + z * z - if d <= radius * radius then - local pos = { x = x, y = y, z = z } - sphere[minetest.hash_node_position(pos)] = pos - break - end - end - end - end - end + for i=1,2 do + for x = -radius, radius do + for z = -radius, radius do + for y = -radius, 0, 1 do + local d = x * x + y * y + z * z + if d <= radius * radius then + local pos = { x = x, y = y, z = z } + sphere[minetest.hash_node_position(pos)] = pos + break + end + end + end + end + end - for i=1,2 do - for x = -radius, radius do - for y = -radius, radius do - for z = -radius, 0, 1 do - local d = x * x + y * y + z * z - if d <= radius * radius then - local pos = { x = x, y = y, z = z } - sphere[minetest.hash_node_position(pos)] = pos - break - end - end - end - end - end + for i=1,2 do + for x = -radius, radius do + for y = -radius, radius do + for z = -radius, 0, 1 do + local d = x * x + y * y + z * z + if d <= radius * radius then + local pos = { x = x, y = y, z = z } + sphere[minetest.hash_node_position(pos)] = pos + break + end + end + end + end + end - for _, pos in pairs(sphere) do - rays[#rays + 1] = vector.normalize(pos) - end + for _, pos in pairs(sphere) do + rays[#rays + 1] = vector.normalize(pos) + end - return rays + return rays end -- Add particles from explosion -- -- Parameters: --- pos - The position of the explosion --- radius - The radius of the explosion +-- pos - The position of the explosion +-- radius - The radius of the explosion local function add_particles(pos, radius) - minetest.add_particlespawner({ - amount = 64, - time = 0.125, - minpos = pos, - maxpos = pos, - minvel = {x = -radius, y = -radius, z = -radius}, - maxvel = {x = radius, y = radius, z = radius}, - minacc = vector.new(), - maxacc = vector.new(), - minexptime = 0.5, - maxexptime = 1.0, - minsize = radius * 0.5, - maxsize = radius * 1.0, - texture = "tnt_smoke.png", - }) + minetest.add_particlespawner({ + amount = 64, + time = 0.125, + minpos = pos, + maxpos = pos, + minvel = {x = -radius, y = -radius, z = -radius}, + maxvel = {x = radius, y = radius, z = radius}, + minacc = vector.new(), + maxacc = vector.new(), + minexptime = 0.5, + maxexptime = 1.0, + minsize = radius * 0.5, + maxsize = radius * 1.0, + texture = "tnt_smoke.png", + }) end --- Get position from hash. This should be identical to +-- Get position from hash. This should be identical to -- 'minetest.get_position_from_hash' but is used in case the hashing function -- would change. local function get_position_from_hash(hash) - local pos = {} - pos.x = (hash % 65536) - 32768 - hash = math.floor(hash / 65536) - pos.y = (hash % 65536) - 32768 - hash = math.floor(hash / 65536) - pos.z = (hash % 65536) - 32768 - return pos + local pos = {} + pos.x = (hash % 65536) - 32768 + hash = math.floor(hash / 65536) + pos.y = (hash % 65536) - 32768 + hash = math.floor(hash / 65536) + pos.z = (hash % 65536) - 32768 + return pos end -- Traces the rays of an explosion, and updates the environment. -- -- Parameters: --- pos - Where the rays in the explosion should start from --- strength - The strength of each ray --- raydirs - The directions for each ray --- radius - The maximum distance each ray will go --- drop_chance - The chance that destroyed nodes will drop their items +-- pos - Where the rays in the explosion should start from +-- strength - The strength of each ray +-- raydirs - The directions for each ray +-- radius - The maximum distance each ray will go +-- drop_chance - The chance that destroyed nodes will drop their items -- -- Note that this function has been optimized, it contains code which has been --- inlined to avoid function calls and unnecessary table creation. This was +-- inlined to avoid function calls and unnecessary table creation. This was -- measured to give a significant performance increase. local function trace_explode(pos, strength, raydirs, radius, drop_chance) - local vm = minetest.get_voxel_manip() + local vm = minetest.get_voxel_manip() - local emin, emax = vm:read_from_map(vector.subtract(pos, radius), - vector.add(pos, radius)) - local emin_x = emin.x - local emin_y = emin.y - local emin_z = emin.z + local emin, emax = vm:read_from_map(vector.subtract(pos, radius), + vector.add(pos, radius)) + local emin_x = emin.x + local emin_y = emin.y + local emin_z = emin.z - local ystride = (emax.x - emin_x + 1) - local zstride = ystride * (emax.y - emin_y + 1) - local pos_x = pos.x - local pos_y = pos.y - local pos_z = pos.z + local ystride = (emax.x - emin_x + 1) + local zstride = ystride * (emax.y - emin_y + 1) + local pos_x = pos.x + local pos_y = pos.y + local pos_z = pos.z - local area = VoxelArea:new { - MinEdge = emin, - MaxEdge = emax - } - local data = vm:get_data() - local destroy = {} + local area = VoxelArea:new { + MinEdge = emin, + MaxEdge = emax + } + local data = vm:get_data() + local destroy = {} - -- Trace rays for environment destruction - for i = 1, #raydirs do - local rpos_x = pos.x - local rpos_y = pos.y - local rpos_z = pos.z - local rdir_x = raydirs[i].x - local rdir_y = raydirs[i].y - local rdir_z = raydirs[i].z - local rstr = (0.7 + math.random() * 0.6) * strength + -- Trace rays for environment destruction + for i = 1, #raydirs do + local rpos_x = pos.x + local rpos_y = pos.y + local rpos_z = pos.z + local rdir_x = raydirs[i].x + local rdir_y = raydirs[i].y + local rdir_z = raydirs[i].z + local rstr = (0.7 + math.random() * 0.6) * strength - for r = 0, math.ceil(radius * (1.0 / STEP_LENGTH)) do - local npos_x = math.floor(rpos_x + 0.5) - local npos_y = math.floor(rpos_y + 0.5) - local npos_z = math.floor(rpos_z + 0.5) - local idx = (npos_z - emin_z) * zstride + (npos_y - emin_y) * ystride + - npos_x - emin_x + 1 + for r = 0, math.ceil(radius * (1.0 / STEP_LENGTH)) do + local npos_x = math.floor(rpos_x + 0.5) + local npos_y = math.floor(rpos_y + 0.5) + local npos_z = math.floor(rpos_z + 0.5) + local idx = (npos_z - emin_z) * zstride + (npos_y - emin_y) * ystride + + npos_x - emin_x + 1 - local cid = data[idx] - local br = node_blastres[cid] - local hash = (npos_z + 32768) * 65536 * 65536 + - (npos_y + 32768) * 65536 + - npos_x + 32768 + local cid = data[idx] + local br = node_blastres[cid] + local hash = (npos_z + 32768) * 65536 * 65536 + + (npos_y + 32768) * 65536 + + npos_x + 32768 - rpos_x = rpos_x + STEP_LENGTH * rdir_x - rpos_y = rpos_y + STEP_LENGTH * rdir_y - rpos_z = rpos_z + STEP_LENGTH * rdir_z + rpos_x = rpos_x + STEP_LENGTH * rdir_x + rpos_y = rpos_y + STEP_LENGTH * rdir_y + rpos_z = rpos_z + STEP_LENGTH * rdir_z - rstr = rstr - 0.75 * STEP_LENGTH - (br + 0.3) * STEP_LENGTH + rstr = rstr - 0.75 * STEP_LENGTH - (br + 0.3) * STEP_LENGTH - if rstr <= 0 then - break - end + if rstr <= 0 then + break + end - if cid ~= minetest.CONTENT_AIR then - destroy[hash] = idx - end - end - end + if cid ~= minetest.CONTENT_AIR then + destroy[hash] = idx + end + end + end - -- Entities in radius of explosion - local punch_radius = 2 * strength - local objs = minetest.get_objects_inside_radius(pos, punch_radius) + -- Entities in radius of explosion + local punch_radius = 2 * strength + local objs = minetest.get_objects_inside_radius(pos, punch_radius) - -- Trace rays for entity damage - for _, obj in pairs(objs) do - local ent = obj:get_luaentity() + -- Trace rays for entity damage + for _, obj in pairs(objs) do + local ent = obj:get_luaentity() - -- Ignore items to lower lag - if obj:is_player() or (ent and ent.name ~= '__builtin.item') then - local opos = obj:get_pos() - local collisionbox = nil + -- Ignore items to lower lag + if obj:is_player() or (ent and ent.name ~= '__builtin.item') then + local opos = obj:get_pos() + local collisionbox = nil - if obj:is_player() then - collisionbox = { -0.3, 0.0, -0.3, 0.3, 1.77, 0.3 } - elseif ent.name then - local def = minetest.registered_entities[ent.name] - collisionbox = def.collisionbox - end + if obj:is_player() then + collisionbox = { -0.3, 0.0, -0.3, 0.3, 1.77, 0.3 } + elseif ent.name then + local def = minetest.registered_entities[ent.name] + collisionbox = def.collisionbox + end - if collisionbox then - -- Create rays from random points in the collision box - local x1 = collisionbox[1] * 2 - local y1 = collisionbox[2] * 2 - local z1 = collisionbox[3] * 2 - local x2 = collisionbox[4] * 2 - local y2 = collisionbox[5] * 2 - local z2 = collisionbox[6] * 2 - local x_len = math.abs(x2 - x1) - local y_len = math.abs(y2 - y1) - local z_len = math.abs(z2 - z1) + if collisionbox then + -- Create rays from random points in the collision box + local x1 = collisionbox[1] * 2 + local y1 = collisionbox[2] * 2 + local z1 = collisionbox[3] * 2 + local x2 = collisionbox[4] * 2 + local y2 = collisionbox[5] * 2 + local z2 = collisionbox[6] * 2 + local x_len = math.abs(x2 - x1) + local y_len = math.abs(y2 - y1) + local z_len = math.abs(z2 - z1) - -- Move object position to the center of its bounding box - opos.x = opos.x + x1 + x2 - opos.y = opos.y + y1 + y2 - opos.z = opos.z + z1 + z2 + -- Move object position to the center of its bounding box + opos.x = opos.x + x1 + x2 + opos.y = opos.y + y1 + y2 + opos.z = opos.z + z1 + z2 - -- Count number of rays from collision box which are unobstructed - local count = N_EXPOSURE_RAYS + -- Count number of rays from collision box which are unobstructed + local count = N_EXPOSURE_RAYS - for i = 1, N_EXPOSURE_RAYS do - local rpos_x = opos.x + math.random() * x_len - x_len / 2 - local rpos_y = opos.y + math.random() * y_len - y_len / 2 - local rpos_z = opos.z + math.random() * z_len - z_len / 2 - local rdir_x = pos.x - rpos_x - local rdir_y = pos.y - rpos_y - local rdir_z = pos.z - rpos_z - local rdir_len = math.hypot(rdir_x, math.hypot(rdir_y, rdir_z)) - rdir_x = rdir_x / rdir_len - rdir_y = rdir_y / rdir_len - rdir_z = rdir_z / rdir_len + for i = 1, N_EXPOSURE_RAYS do + local rpos_x = opos.x + math.random() * x_len - x_len / 2 + local rpos_y = opos.y + math.random() * y_len - y_len / 2 + local rpos_z = opos.z + math.random() * z_len - z_len / 2 + local rdir_x = pos.x - rpos_x + local rdir_y = pos.y - rpos_y + local rdir_z = pos.z - rpos_z + local rdir_len = math.hypot(rdir_x, math.hypot(rdir_y, rdir_z)) + rdir_x = rdir_x / rdir_len + rdir_y = rdir_y / rdir_len + rdir_z = rdir_z / rdir_len - for i=0, rdir_len / STEP_LENGTH do - rpos_x = rpos_x + rdir_x * STEP_LENGTH - rpos_y = rpos_y + rdir_y * STEP_LENGTH - rpos_z = rpos_z + rdir_z * STEP_LENGTH - local npos_x = math.floor(rpos_x + 0.5) - local npos_y = math.floor(rpos_y + 0.5) - local npos_z = math.floor(rpos_z + 0.5) - local idx = (npos_z - emin_z) * zstride + (npos_y - emin_y) * ystride + - npos_x - emin_x + 1 + for i=0, rdir_len / STEP_LENGTH do + rpos_x = rpos_x + rdir_x * STEP_LENGTH + rpos_y = rpos_y + rdir_y * STEP_LENGTH + rpos_z = rpos_z + rdir_z * STEP_LENGTH + local npos_x = math.floor(rpos_x + 0.5) + local npos_y = math.floor(rpos_y + 0.5) + local npos_z = math.floor(rpos_z + 0.5) + local idx = (npos_z - emin_z) * zstride + (npos_y - emin_y) * ystride + + npos_x - emin_x + 1 - local cid = data[idx] - local walkable = node_walkable[cid] + local cid = data[idx] + local walkable = node_walkable[cid] - if walkable then - count = count - 1 - break - end - end - end + if walkable then + count = count - 1 + break + end + end + end - -- Punch entity with damage depending on explosion exposure and - -- distance to explosion - local exposure = count / N_EXPOSURE_RAYS - local punch_vec = vector.subtract(opos, pos) - local punch_dir = vector.normalize(punch_vec) - local impact = (1 - vector.length(punch_vec) / punch_radius) * exposure - if impact < 0 then - impact = 0 - end - local damage = math.floor((impact * impact + impact) * 7 * strength + 1) - obj:punch(obj, 10, { damage_groups = { full_punch_interval = 1, - fleshy = damage, knockback = impact * 20.0 } }, punch_dir) + -- Punch entity with damage depending on explosion exposure and + -- distance to explosion + local exposure = count / N_EXPOSURE_RAYS + local punch_vec = vector.subtract(opos, pos) + local punch_dir = vector.normalize(punch_vec) + local impact = (1 - vector.length(punch_vec) / punch_radius) * exposure + if impact < 0 then + impact = 0 + end + local damage = math.floor((impact * impact + impact) * 7 * strength + 1) + obj:punch(obj, 10, { damage_groups = { full_punch_interval = 1, + fleshy = damage, knockback = impact * 20.0 } }, punch_dir) - if obj:is_player() then - obj:add_player_velocity(vector.multiply(punch_dir, impact * 20)) - elseif ent.tnt_knockback then - obj:add_velocity(vector.multiply(punch_dir, impact * 20)) - end - end - end - end + if obj:is_player() then + obj:add_player_velocity(vector.multiply(punch_dir, impact * 20)) + elseif ent.tnt_knockback then + obj:add_velocity(vector.multiply(punch_dir, impact * 20)) + end + end + end + end - -- Remove destroyed blocks and drop items - for hash, idx in pairs(destroy) do - local do_drop = not creative_mode and math.random() <= drop_chance - local on_blast = node_on_blast[data[idx]] - local remove = true + -- Remove destroyed blocks and drop items + for hash, idx in pairs(destroy) do + local do_drop = not creative_mode and math.random() <= drop_chance + local on_blast = node_on_blast[data[idx]] + local remove = true - if do_drop or on_blast ~= nil then - local npos = get_position_from_hash(hash) - if on_blast ~= nil then - remove = on_blast(npos, 1.0) - else - local name = minetest.get_name_from_content_id(data[idx]) - local drop = minetest.get_node_drops(name, "") + if do_drop or on_blast ~= nil then + local npos = get_position_from_hash(hash) + if on_blast ~= nil then + remove = on_blast(npos, 1.0) + else + local name = minetest.get_name_from_content_id(data[idx]) + local drop = minetest.get_node_drops(name, "") - for _, item in ipairs(drop) do - if item ~= "string" then - item = item:get_name() .. item:get_count() - end - minetest.add_item(npos, item) - end - end - end - if remove then - data[idx] = minetest.CONTENT_AIR - end - end + for _, item in ipairs(drop) do + if item ~= "string" then + item = item:get_name() .. item:get_count() + end + minetest.add_item(npos, item) + end + end + end + if remove then + data[idx] = minetest.CONTENT_AIR + end + end - -- Log explosion - minetest.log('action', 'Explosion at ' .. minetest.pos_to_string(pos) .. - ' with strength ' .. strength .. ' and radius ' .. radius) + -- Log explosion + minetest.log('action', 'Explosion at ' .. minetest.pos_to_string(pos) .. + ' with strength ' .. strength .. ' and radius ' .. radius) - -- Update environment - vm:set_data(data) - vm:write_to_map(data) - vm:update_liquids() + -- Update environment + vm:set_data(data) + vm:write_to_map(data) + vm:update_liquids() end -- Create an explosion with strength at pos. -- -- Parameters: --- pos - The position where the explosion originates from --- strength - The blast strength of the explosion (a TNT explosion uses 4) --- info - Table containing information about explosion. +-- pos - The position where the explosion originates from +-- strength - The blast strength of the explosion (a TNT explosion uses 4) +-- info - Table containing information about explosion. -- -- Values in info: --- drop_chance - If specified becomes the drop chance of all nodes in the --- explosion (defaults to 1.0 / strength) --- no_sound - If true then the explosion will not play a sound --- no_particle - If true then the explosion will not create particles +-- drop_chance - If specified becomes the drop chance of all nodes in the +-- explosion (defaults to 1.0 / strength) +-- no_sound - If true then the explosion will not play a sound +-- no_particle - If true then the explosion will not create particles function mcl_explosions.explode(pos, strength, info) - -- The maximum blast radius (in the air) - local radius = math.ceil(1.3 * strength / (0.3 * 0.75) * 0.3) + -- The maximum blast radius (in the air) + local radius = math.ceil(1.3 * strength / (0.3 * 0.75) * 0.3) - if not sphere_shapes[radius] then - sphere_shapes[radius] = compute_sphere_rays(radius) - end - shape = sphere_shapes[radius] + if not sphere_shapes[radius] then + sphere_shapes[radius] = compute_sphere_rays(radius) + end + shape = sphere_shapes[radius] - trace_explode(pos, strength, shape, radius, (info and info.drop_chance) or 1 / strength) + trace_explode(pos, strength, shape, radius, (info and info.drop_chance) or 1 / strength) - if not (info and info.no_sound) then - add_particles(pos, radius) - end - if not (info and info.no_particle) then - minetest.sound_play("tnt_explode", { - pos = pos, gain = 1.0, - max_hear_distance = strength * 16 - }, true) - end + if not (info and info.no_sound) then + add_particles(pos, radius) + end + if not (info and info.no_particle) then + minetest.sound_play("tnt_explode", { + pos = pos, gain = 1.0, + max_hear_distance = strength * 16 + }, true) + end end From 7fa8828bd53877cc2a7ae3da2ca8ebcbd9c68699 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Thu, 30 Apr 2020 21:13:10 +0200 Subject: [PATCH 674/737] Explosions: Use minetest.get_position_from_hash --- mods/CORE/mcl_explosions/init.lua | 15 +-------------- 1 file changed, 1 insertion(+), 14 deletions(-) diff --git a/mods/CORE/mcl_explosions/init.lua b/mods/CORE/mcl_explosions/init.lua index 143db2ca..18795299 100644 --- a/mods/CORE/mcl_explosions/init.lua +++ b/mods/CORE/mcl_explosions/init.lua @@ -124,19 +124,6 @@ local function add_particles(pos, radius) }) end --- Get position from hash. This should be identical to --- 'minetest.get_position_from_hash' but is used in case the hashing function --- would change. -local function get_position_from_hash(hash) - local pos = {} - pos.x = (hash % 65536) - 32768 - hash = math.floor(hash / 65536) - pos.y = (hash % 65536) - 32768 - hash = math.floor(hash / 65536) - pos.z = (hash % 65536) - 32768 - return pos -end - -- Traces the rays of an explosion, and updates the environment. -- -- Parameters: @@ -312,7 +299,7 @@ local function trace_explode(pos, strength, raydirs, radius, drop_chance) local remove = true if do_drop or on_blast ~= nil then - local npos = get_position_from_hash(hash) + local npos = minetest.get_position_from_hash(hash) if on_blast ~= nil then remove = on_blast(npos, 1.0) else From f28dc7312b701eb75339084b0986f1a9113fa820 Mon Sep 17 00:00:00 2001 From: Alexander Minges Date: Fri, 1 May 2020 11:13:14 +0200 Subject: [PATCH 675/737] update readme --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index e5c543f0..a56af519 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,6 @@ Version: 0.64.0 ## Differences to MineClone 2 So far some minor fixes that I also sent upstream to Wuzzy for inclusion and some yet unmerged features from others: -* Fix a crash when refueling powered minecarts [issue #683](https://git.minetest.land/Wuzzy/MineClone2/issues/683) * Pumpkins grow without a face and can be carved [issue #682](https://git.minetest.land/Wuzzy/MineClone2/issues/682) * Fix acceleration of powered minecarts and powered rails not summing up (by 2mac) [issue #658](https://git.minetest.land/Wuzzy/MineClone2/issues/658). From d0ac1d73773b78fb4f5ea03655f99e4fbc1a7053 Mon Sep 17 00:00:00 2001 From: Alexander Minges Date: Fri, 1 May 2020 11:52:03 +0200 Subject: [PATCH 676/737] magma damages mobs --- mods/ENTITIES/mcl_mobs/api.lua | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/mods/ENTITIES/mcl_mobs/api.lua b/mods/ENTITIES/mcl_mobs/api.lua index 63a114e6..3cae6670 100644 --- a/mods/ENTITIES/mcl_mobs/api.lua +++ b/mods/ENTITIES/mcl_mobs/api.lua @@ -311,7 +311,7 @@ local is_node_dangerous = function(self, nodename) end end if self.fire_damage > 0 then - if minetest.get_item_group(nn, "fire") ~= 0 then + if (minetest.get_item_group(nn, "fire") ~= 0) or nn == "mcl_nether:magma" then return true end end @@ -855,17 +855,21 @@ local do_env_damage = function(self) -- fire damage elseif self.fire_damage > 0 - and (nodef.groups.fire) then + and (nodef.groups.fire) or self.standing_on == "mcl_nether:magma" then if self.fire_damage ~= 0 then self.health = self.health - self.fire_damage + if self.standing_on ~= "mcl_nether:magma" then + effect(pos, 5, "fire_basic_flame.png", nil, nil, 1, nil) - effect(pos, 5, "fire_basic_flame.png", nil, nil, 1, nil) - - if check_for_death(self, "fire", {type = "environment", + if check_for_death(self, "fire", {type = "environment", + pos = pos, node = self.standing_in}) then + return true + end + elseif check_for_death(self, "water", {type = "environment", pos = pos, node = self.standing_in}) then - return true + return true end end From baaf3e7a135311ce27d79a45c2bd256170d8edbc Mon Sep 17 00:00:00 2001 From: Alexander Minges Date: Fri, 1 May 2020 12:37:02 +0200 Subject: [PATCH 677/737] mcl_mobs: when moving away from dangers, check if destination is dangerous itself --- mods/ENTITIES/mcl_mobs/api.lua | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/mods/ENTITIES/mcl_mobs/api.lua b/mods/ENTITIES/mcl_mobs/api.lua index 3cae6670..4a4a56bb 100644 --- a/mods/ENTITIES/mcl_mobs/api.lua +++ b/mods/ENTITIES/mcl_mobs/api.lua @@ -2026,7 +2026,7 @@ local do_states = function(self, dtime) elseif self.fire_damage > 0 then - lp = minetest.find_node_near(s, 1, {"group:fire"}) + lp = minetest.find_node_near(s, 1, {"group:fire", "mcl_nether:magma"}) end @@ -2041,6 +2041,26 @@ local do_states = function(self, dtime) -- did we find land? if lp then + local nn = minetest.get_node(lp).name + if is_node_dangerous(self, nn) then + -- is the chosen destination safe? Retry if not (max 10 iterations) + local i = 0 + while i < 10 do + if lp then + nn = minetest.get_node(lp).name + minetest.log("Found solid block: " .. nn) + if not is_node_dangerous(self, nn) then break + end + -- look for solid node 5 blocks around the mob's position + elseif i < 5 then + lp = minetest.find_node_near(s, 5, {"group:solid"}) + -- after 5 iterations double search radius + elseif i < 10 then + lp = minetest.find_node_near(s, 10, {"group:solid"}) + end + i = i + 1 + end + end local vec = { x = lp.x - s.x, From 935129d9972fc7f78d3b1862c8c8cb492b7df4b0 Mon Sep 17 00:00:00 2001 From: Alexander Minges Date: Fri, 1 May 2020 13:37:14 +0200 Subject: [PATCH 678/737] update readme --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index a56af519..591e7d94 100644 --- a/README.md +++ b/README.md @@ -10,6 +10,8 @@ So far some minor fixes that I also sent upstream to Wuzzy for inclusion and som * Pumpkins grow without a face and can be carved [issue #682](https://git.minetest.land/Wuzzy/MineClone2/issues/682) * Fix acceleration of powered minecarts and powered rails not summing up (by 2mac) [issue #658](https://git.minetest.land/Wuzzy/MineClone2/issues/658). +* Mobs take damage from magma block if susceptible to fire damage (inspiraton from [minetest_npc](https://forum.minetest.net/viewtopic.php?p=371969#p371969)) +* When mobs are trying to escape dangerous situations (e.g. standing on lava), make more efforts to check if destination is safe. ### Gameplay You start in a randomly-generated world made entirely of cubes. You can explore From 313fd796124ea10ba8d87cdf07cedb5f6dec67f3 Mon Sep 17 00:00:00 2001 From: Alexander Minges Date: Fri, 1 May 2020 13:38:23 +0200 Subject: [PATCH 679/737] update readme --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 591e7d94..d91e6960 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,7 @@ Version: 0.64.0 ## Differences to MineClone 2 So far some minor fixes that I also sent upstream to Wuzzy for inclusion and some yet unmerged features from others: +* ~~Fix a crash when refueling powered minecarts [issue #683](https://git.minetest.land/Wuzzy/MineClone2/issues/683)~~ * Pumpkins grow without a face and can be carved [issue #682](https://git.minetest.land/Wuzzy/MineClone2/issues/682) * Fix acceleration of powered minecarts and powered rails not summing up (by 2mac) [issue #658](https://git.minetest.land/Wuzzy/MineClone2/issues/658). From d4bc7a2f880f94a6ba2e39e95940da73638c95a6 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sat, 2 May 2020 18:09:25 +0200 Subject: [PATCH 680/737] Add back the explosion death msg --- mods/CORE/mcl_explosions/init.lua | 7 ++++++- mods/CORE/mcl_explosions/locale/mcl_explosions.de.tr | 2 ++ mods/CORE/mcl_explosions/locale/template.txt | 2 ++ mods/HUD/mcl_death_messages/init.lua | 11 +++++++---- 4 files changed, 17 insertions(+), 5 deletions(-) create mode 100644 mods/CORE/mcl_explosions/locale/mcl_explosions.de.tr create mode 100644 mods/CORE/mcl_explosions/locale/template.txt diff --git a/mods/CORE/mcl_explosions/init.lua b/mods/CORE/mcl_explosions/init.lua index 18795299..99cdb0fe 100644 --- a/mods/CORE/mcl_explosions/init.lua +++ b/mods/CORE/mcl_explosions/init.lua @@ -10,10 +10,12 @@ This mod was created by Elias Astrom and is released under the LGPLv2.1 license. --]] - mcl_explosions = {} local creative_mode = minetest.settings:get_bool("creative_mode") +local mod_death_messages = minetest.get_modpath("mcl_death_messages") ~= nil + +local S = minetest.get_translator("mcl_explosions") -- Saved sphere explosion shapes for various radiuses local sphere_shapes = {} @@ -280,6 +282,9 @@ local function trace_explode(pos, strength, raydirs, radius, drop_chance) impact = 0 end local damage = math.floor((impact * impact + impact) * 7 * strength + 1) + if mod_death_messages and obj:is_player() then + mcl_death_messages.player_damage(obj, S("@1 was caught in an explosion.", obj:get_player_name())) + end obj:punch(obj, 10, { damage_groups = { full_punch_interval = 1, fleshy = damage, knockback = impact * 20.0 } }, punch_dir) diff --git a/mods/CORE/mcl_explosions/locale/mcl_explosions.de.tr b/mods/CORE/mcl_explosions/locale/mcl_explosions.de.tr new file mode 100644 index 00000000..4abbc64b --- /dev/null +++ b/mods/CORE/mcl_explosions/locale/mcl_explosions.de.tr @@ -0,0 +1,2 @@ +# textdomain:mcl_explosions +@1 was caught in an explosion.=@1 wurde Opfer einer Explosion. diff --git a/mods/CORE/mcl_explosions/locale/template.txt b/mods/CORE/mcl_explosions/locale/template.txt new file mode 100644 index 00000000..6a9348dd --- /dev/null +++ b/mods/CORE/mcl_explosions/locale/template.txt @@ -0,0 +1,2 @@ +# textdomain:mcl_explosions +@1 was caught in an explosion.= diff --git a/mods/HUD/mcl_death_messages/init.lua b/mods/HUD/mcl_death_messages/init.lua index e32de137..25be9326 100644 --- a/mods/HUD/mcl_death_messages/init.lua +++ b/mods/HUD/mcl_death_messages/init.lua @@ -174,13 +174,16 @@ minetest.register_on_dieplayer(function(player, reason) -- Punches local hitter = reason.object local hittername, hittertype, hittersubtype, shooter + -- Custom message + if last_damages[name] then + msg = last_damages[name].message -- Unknown hitter - if hitter == nil then + elseif hitter == nil then msg = dmsg("murder_any", name) -- Player elseif hitter:is_player() then hittername = hitter:get_player_name() - if hittername ~= nil then + if hittername ~= nil and hittername ~= name then msg = dmsg("murder", name, hittername) else msg = dmsg("murder_any", name) @@ -263,8 +266,8 @@ local start_damage_reset_countdown = function (player, sequence_number) end, player:get_player_name(), sequence_number) end --- Send a custom death mesage when damaging a player via set_hp. --- To be called directly BEFORE damaging a player via set_hp. +-- Send a custom death mesage when damaging a player via set_hp or punch. +-- To be called directly BEFORE damaging a player via set_hp or punch. -- The next time the player dies due to a set_hp, the message will be shown. -- The player must die via set_hp within 0.1 seconds, otherwise the message will be discarded. function mcl_death_messages.player_damage(player, message) From 6a576c50a07b22cd84fa7141daae5ffafcbde5b2 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sat, 2 May 2020 18:21:44 +0200 Subject: [PATCH 681/737] Add puncher to tnt_explosions --- mods/CORE/mcl_explosions/init.lua | 16 +++++++++++----- mods/HUD/mcl_death_messages/init.lua | 2 +- mods/ITEMS/mcl_tnt/init.lua | 2 +- 3 files changed, 13 insertions(+), 7 deletions(-) diff --git a/mods/CORE/mcl_explosions/init.lua b/mods/CORE/mcl_explosions/init.lua index 99cdb0fe..de8768ca 100644 --- a/mods/CORE/mcl_explosions/init.lua +++ b/mods/CORE/mcl_explosions/init.lua @@ -134,11 +134,12 @@ end -- raydirs - The directions for each ray -- radius - The maximum distance each ray will go -- drop_chance - The chance that destroyed nodes will drop their items +-- puncher - object that punches other objects (optional) -- -- Note that this function has been optimized, it contains code which has been --- inlined to avoid function calls and unnecessary table creation. This was +-- inlined to avoid function calls and unnecessary table creation. This was -- measured to give a significant performance increase. -local function trace_explode(pos, strength, raydirs, radius, drop_chance) +local function trace_explode(pos, strength, raydirs, radius, drop_chance, puncher) local vm = minetest.get_voxel_manip() local emin, emax = vm:read_from_map(vector.subtract(pos, radius), @@ -285,7 +286,11 @@ local function trace_explode(pos, strength, raydirs, radius, drop_chance) if mod_death_messages and obj:is_player() then mcl_death_messages.player_damage(obj, S("@1 was caught in an explosion.", obj:get_player_name())) end - obj:punch(obj, 10, { damage_groups = { full_punch_interval = 1, + local source = puncher + if not source then + source = obj + end + obj:punch(source, 10, { damage_groups = { full_punch_interval = 1, fleshy = damage, knockback = impact * 20.0 } }, punch_dir) if obj:is_player() then @@ -340,13 +345,14 @@ end -- pos - The position where the explosion originates from -- strength - The blast strength of the explosion (a TNT explosion uses 4) -- info - Table containing information about explosion. +-- puncher - object that is reported as source of punches/damage (optional) -- -- Values in info: -- drop_chance - If specified becomes the drop chance of all nodes in the -- explosion (defaults to 1.0 / strength) -- no_sound - If true then the explosion will not play a sound -- no_particle - If true then the explosion will not create particles -function mcl_explosions.explode(pos, strength, info) +function mcl_explosions.explode(pos, strength, info, puncher) -- The maximum blast radius (in the air) local radius = math.ceil(1.3 * strength / (0.3 * 0.75) * 0.3) @@ -355,7 +361,7 @@ function mcl_explosions.explode(pos, strength, info) end shape = sphere_shapes[radius] - trace_explode(pos, strength, shape, radius, (info and info.drop_chance) or 1 / strength) + trace_explode(pos, strength, shape, radius, (info and info.drop_chance) or 1 / strength, puncher) if not (info and info.no_sound) then add_particles(pos, radius) diff --git a/mods/HUD/mcl_death_messages/init.lua b/mods/HUD/mcl_death_messages/init.lua index 25be9326..dfc5191a 100644 --- a/mods/HUD/mcl_death_messages/init.lua +++ b/mods/HUD/mcl_death_messages/init.lua @@ -183,7 +183,7 @@ minetest.register_on_dieplayer(function(player, reason) -- Player elseif hitter:is_player() then hittername = hitter:get_player_name() - if hittername ~= nil and hittername ~= name then + if hittername ~= nil then msg = dmsg("murder", name, hittername) else msg = dmsg("murder_any", name) diff --git a/mods/ITEMS/mcl_tnt/init.lua b/mods/ITEMS/mcl_tnt/init.lua index 0ec2679b..68a1296b 100644 --- a/mods/ITEMS/mcl_tnt/init.lua +++ b/mods/ITEMS/mcl_tnt/init.lua @@ -210,7 +210,7 @@ function TNT:on_step(dtime) self.blinkstatus = not self.blinkstatus end if self.timer > tnt.BOOMTIMER then - mcl_explosions.explode(self.object:get_pos(), 4, { drop_chance = 1.0 }) + mcl_explosions.explode(self.object:get_pos(), 4, { drop_chance = 1.0 }, self.object) self.object:remove() end end From 56d484f69b1cf7b556f90c5b4bb3e27abe2c8be3 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sat, 2 May 2020 18:50:25 +0200 Subject: [PATCH 682/737] Make mobs and bed use mcl_explosions --- mods/ENTITIES/mcl_mobs/api.lua | 49 ++++++++++--------------------- mods/ENTITIES/mcl_mobs/mod.conf | 2 +- mods/ENTITIES/mobs_mc/creeper.lua | 3 +- mods/ENTITIES/mobs_mc/wither.lua | 3 +- mods/ITEMS/mcl_beds/functions.lua | 5 ++-- 5 files changed, 21 insertions(+), 41 deletions(-) diff --git a/mods/ENTITIES/mcl_mobs/api.lua b/mods/ENTITIES/mcl_mobs/api.lua index 6cfd4fc7..dd0d2e5d 100644 --- a/mods/ENTITIES/mcl_mobs/api.lua +++ b/mods/ENTITIES/mcl_mobs/api.lua @@ -93,7 +93,7 @@ local node_snow = "mcl_core:snow" mobs.fallback_node = minetest.registered_aliases["mapgen_dirt"] or "mcl_core:dirt" local mod_weather = minetest.get_modpath("mcl_weather") ~= nil -local mod_tnt = minetest.get_modpath("mcl_tnt") ~= nil +local mod_explosions = minetest.get_modpath("mcl_explosions") ~= nil local mod_mobspawners = minetest.get_modpath("mcl_mobspawners") ~= nil local mod_hunger = minetest.get_modpath("mcl_hunger") ~= nil local mod_worlds = minetest.get_modpath("mcl_worlds") ~= nil @@ -2218,26 +2218,10 @@ local do_states = function(self, dtime) local pos = self.object:get_pos() - -- dont damage anything if area protected or next to water - if minetest.find_node_near(pos, 1, {"group:water"}) - or minetest.is_protected(pos, "") then - - node_break_radius = 1 - end - - self.object:remove() - - if mobs_griefing and mod_tnt and tnt and tnt.boom - and not minetest.is_protected(pos, "") then - - tnt.boom(pos, { - radius = node_break_radius, - damage_radius = entity_damage_radius, - sound = self.sounds.explode, - is_tnt = false, - }) + if mod_explosions then + if mobs_griefing and not minetest.is_protected(pos, "") then + mcl_explosions.explode(self.object:get_pos(), self.explosion_strength, { drop_chance = 1.0 }, self.object) else - minetest.sound_play(self.sounds.explode, { pos = pos, gain = 1.0, @@ -2247,6 +2231,8 @@ local do_states = function(self, dtime) entity_physics(pos, entity_damage_radius) effect(pos, 32, "tnt_smoke.png", nil, nil, node_break_radius, 1, 0) end + end + self.object:remove() return true end @@ -3365,8 +3351,8 @@ minetest.register_entity(name, { runaway_timer = 0, pathfinding = def.pathfinding, immune_to = def.immune_to or {}, - explosion_radius = def.explosion_radius, - explosion_damage_radius = def.explosion_damage_radius, + explosion_radius = def.explosion_radius, -- LEGACY + explosion_damage_radius = def.explosion_damage_radius, -- LEGACY explosion_timer = def.explosion_timer or 3, allow_fuse_reset = def.allow_fuse_reset ~= false, stop_to_explode = def.stop_to_explode ~= false, @@ -3393,6 +3379,7 @@ minetest.register_entity(name, { texture_mods = {}, shoot_arrow = def.shoot_arrow, sounds_child = def.sounds_child, + explosion_strength = def.explosion_strength, -- End of MCL2 extensions on_spawn = def.on_spawn, @@ -3838,7 +3825,6 @@ end -- no damage to nodes explosion function mobs:safe_boom(self, pos, radius) - minetest.sound_play(self.sounds and self.sounds.explode or "tnt_explode", { pos = pos, gain = 1.0, @@ -3853,17 +3839,12 @@ end -- make explosion with protection and tnt mod check function mobs:boom(self, pos, radius) - if mobs_griefing - and mod_tnt and tnt and tnt.boom - and not minetest.is_protected(pos, "") then - - tnt.boom(pos, { - radius = radius, - damage_radius = radius, - sound = self.sounds and self.sounds.explode, - explode_center = true, - is_tnt = false, - }) + if mod_explosions then + if mobs_griefing and not minetest.is_protected(pos, "") then + mcl_explosions.explode(pos, self.explosion_strength, { drop_chance = 1.0 }, self.object) + else + mobs:safe_boom(self, pos, radius) + end else mobs:safe_boom(self, pos, radius) end diff --git a/mods/ENTITIES/mcl_mobs/mod.conf b/mods/ENTITIES/mcl_mobs/mod.conf index aed56013..a32827a6 100644 --- a/mods/ENTITIES/mcl_mobs/mod.conf +++ b/mods/ENTITIES/mcl_mobs/mod.conf @@ -1,2 +1,2 @@ name = mcl_mobs -optional_depends = mcl_weather, mcl_tnt, mcl_hunger, mcl_worlds, invisibility, lucky_block, cmi, doc_identifier, mcl_armor +optional_depends = mcl_weather, mcl_explosions, mcl_hunger, mcl_worlds, invisibility, lucky_block, cmi, doc_identifier, mcl_armor diff --git a/mods/ENTITIES/mobs_mc/creeper.lua b/mods/ENTITIES/mobs_mc/creeper.lua index b8afb88e..d3826973 100644 --- a/mods/ENTITIES/mobs_mc/creeper.lua +++ b/mods/ENTITIES/mobs_mc/creeper.lua @@ -36,9 +36,8 @@ mobs:register_mob("mobs_mc:creeper", { runaway_from = { "mobs_mc:ocelot", "mobs_mc:cat" }, attack_type = "explode", - explosion_radius = 3, + explosion_strength = 3, reach = 4, - explosion_damage_radius = 7, explosion_timer = 1.5, allow_fuse_reset = true, stop_to_explode = true, diff --git a/mods/ENTITIES/mobs_mc/wither.lua b/mods/ENTITIES/mobs_mc/wither.lua index 7686efc9..ebbbf92f 100644 --- a/mods/ENTITIES/mobs_mc/wither.lua +++ b/mods/ENTITIES/mobs_mc/wither.lua @@ -49,8 +49,7 @@ mobs:register_mob("mobs_mc:wither", { lava_damage = 0, fire_damage = 0, attack_type = "dogshoot", - explosion_radius = 3, - explosion_fire = false, + explosion_strength = 8, dogshoot_stop = true, arrow = "mobs_mc:wither_skull", reach = 5, diff --git a/mods/ITEMS/mcl_beds/functions.lua b/mods/ITEMS/mcl_beds/functions.lua index 802a64da..d73154ee 100644 --- a/mods/ITEMS/mcl_beds/functions.lua +++ b/mods/ITEMS/mcl_beds/functions.lua @@ -5,6 +5,7 @@ local pi = math.pi local player_in_bed = 0 local is_sp = minetest.is_singleplayer() local weather_mod = minetest.get_modpath("mcl_weather") ~= nil +local explosions_mod = minetest.get_modpath("mcl_explosions") ~= nil -- Helper functions @@ -307,8 +308,8 @@ function mcl_beds.on_rightclick(pos, player, is_top) if dim == "nether" or dim == "end" then -- Bed goes BOOM in the Nether or End. minetest.remove_node(pos) - if minetest.get_modpath("mcl_tnt") then - tnt.boom(pos, {radius = 4, damage_radius = 4, is_tnt = false}) + if explosions_mod then + mcl_explosions.explode(pos, 5, {drop_chance = 1.0, fire = true}) end return end From 00acbf8a2a30fc23f6b58292646964a6af034c8f Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sat, 2 May 2020 18:51:59 +0200 Subject: [PATCH 683/737] Remove unused TNT functions --- mods/ITEMS/mcl_tnt/init.lua | 99 ------------------------------------- 1 file changed, 99 deletions(-) diff --git a/mods/ITEMS/mcl_tnt/init.lua b/mods/ITEMS/mcl_tnt/init.lua index 68a1296b..a0d5dd01 100644 --- a/mods/ITEMS/mcl_tnt/init.lua +++ b/mods/ITEMS/mcl_tnt/init.lua @@ -10,40 +10,6 @@ local function spawn_tnt(pos, entname) return tnt end -local function activate_if_tnt(nname, np, tnt_np, tntr) - if nname == "mcl_tnt:tnt" then - local e = spawn_tnt(np, nname) - e:set_velocity({x=(np.x - tnt_np.x)*5+(tntr / 4), y=(np.y - tnt_np.y)*5+(tntr / 3), z=(np.z - tnt_np.z)*5+(tntr / 4)}) - minetest.remove_node(np) - minetest.check_for_falling(np) - end -end - -local function do_tnt_physics(tnt_np, tntr, tnt_obj) - local objs = minetest.get_objects_inside_radius(tnt_np, tntr) - for k, obj in pairs(objs) do - local ent = obj:get_luaentity() - local v = obj:get_velocity() - local p = obj:get_pos() - if ent and ent.name == "mcl_tnt:tnt" and v ~= nil then - obj:set_velocity({x=(p.x - tnt_np.x) + (tntr / 2) + v.x, y=(p.y - tnt_np.y) + tntr + v.y, z=(p.z - tnt_np.z) + (tntr / 2) + v.z}) - else - if v ~= nil and not obj:is_player() then - obj:set_velocity({x=(p.x - tnt_np.x) + (tntr / 4) + v.x, y=(p.y - tnt_np.y) + (tntr / 2) + v.y, z=(p.z - tnt_np.z) + (tntr / 4) + v.z}) - end - local dist = math.max(1, vector.distance(tnt_np, p)) - local damage = (4 / dist) * tntr - if obj:is_player() == true then - if mod_death_messages then - mcl_death_messages.player_damage(obj, S("@1 was caught in an explosion.", obj:get_player_name())) - end - end - local puncher = tnt_obj or obj - obj:punch(puncher, nil, { damage_groups = { fleshy = damage }}) - end - end -end - tnt = {} tnt.ignite = function(pos) minetest.remove_node(pos) @@ -215,71 +181,6 @@ function TNT:on_step(dtime) end end -tnt.boom = function(pos, info, tnt_obj) - if not info then info = {} end - local range = info.radius or TNT_RANGE - local damage_range = info.damage_radius or TNT_RANGE - - pos.x = math.floor(pos.x+0.5) - pos.y = math.floor(pos.y+0.5) - pos.z = math.floor(pos.z+0.5) - do_tnt_physics(pos, range, tnt_obj) - local meta = minetest.get_meta(pos) - local sound - if not info.sound then - sound = "tnt_explode" - else - sound = info.sound - end - if info.is_tnt == nil then - info.is_tnt = true - end - minetest.sound_play(sound, {pos = pos,gain = 1.0,max_hear_distance = 16,}, true) - local node = minetest.get_node(pos) - if minetest.get_item_group("water") == 1 or minetest.get_item_group("lava") == 1 then - -- Cancel the Explosion - return - end - for x=-range,range do - for y=-range,range do - for z=-range,range do - if x*x+y*y+z*z <= range * range + range then - local np={x=pos.x+x,y=pos.y+y,z=pos.z+z} - local n = minetest.get_node(np) - local def = minetest.registered_nodes[n.name] - -- Simple blast resistance check (for now). This keeps the important blocks like bedrock, command block, etc. intact. - -- TODO: Implement the real blast resistance algorithm - if def and n.name ~= "air" and n.name ~= "ignore" and (def._mcl_blast_resistance == nil or def._mcl_blast_resistance < 1000) then - activate_if_tnt(n.name, np, pos, 3) - if (not tnt_griefing) and info.is_tnt ~= false then - -- No-op - -- Custom blast function defined by node. - -- Node removal and drops must be handled manually. - elseif def.on_blast then - def.on_blast(np, 1.0) - -- Default destruction handling: Remove nodes, drop items - else - minetest.remove_node(np) - minetest.check_for_falling(np) - if n.name ~= "mcl_tnt:tnt" and math.random() > 0.9 then - local drop = minetest.get_node_drops(n.name, "") - for _,item in ipairs(drop) do - if type(item) == "string" then - if math.random(1,100) > 40 then - local obj = minetest.add_item(np, item) - end - end - end - end - end - end - end - end - end - add_effects(pos, range, {}) - end -end - minetest.register_entity("mcl_tnt:tnt", TNT) if minetest.get_modpath("mcl_mobitems") then From bc740efafea50cc497a22a11401c343e5ceb8faf Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sat, 2 May 2020 19:05:56 +0200 Subject: [PATCH 684/737] Add fire explosions --- mods/CORE/mcl_explosions/init.lua | 13 ++++++++++--- mods/CORE/mcl_explosions/mod.conf | 1 + mods/ENTITIES/mcl_mobs/api.lua | 8 ++++---- mods/ENTITIES/mobs_mc/ghast.lua | 8 +++----- mods/ITEMS/mcl_beds/depends.txt | 2 +- 5 files changed, 19 insertions(+), 13 deletions(-) diff --git a/mods/CORE/mcl_explosions/init.lua b/mods/CORE/mcl_explosions/init.lua index de8768ca..eb1b21f6 100644 --- a/mods/CORE/mcl_explosions/init.lua +++ b/mods/CORE/mcl_explosions/init.lua @@ -14,6 +14,8 @@ mcl_explosions = {} local creative_mode = minetest.settings:get_bool("creative_mode") local mod_death_messages = minetest.get_modpath("mcl_death_messages") ~= nil +local mod_fire = minetest.get_modpath("mcl_fire") ~= nil +local CONTENT_FIRE = minetest.get_content_id("mcl_fire:fire") local S = minetest.get_translator("mcl_explosions") @@ -134,12 +136,13 @@ end -- raydirs - The directions for each ray -- radius - The maximum distance each ray will go -- drop_chance - The chance that destroyed nodes will drop their items +-- fire - If true, 1/3 of destroyed nodes become fire -- puncher - object that punches other objects (optional) -- -- Note that this function has been optimized, it contains code which has been -- inlined to avoid function calls and unnecessary table creation. This was -- measured to give a significant performance increase. -local function trace_explode(pos, strength, raydirs, radius, drop_chance, puncher) +local function trace_explode(pos, strength, raydirs, radius, drop_chance, fire, puncher) local vm = minetest.get_voxel_manip() local emin, emax = vm:read_from_map(vector.subtract(pos, radius), @@ -325,7 +328,11 @@ local function trace_explode(pos, strength, raydirs, radius, drop_chance, punche end end if remove then - data[idx] = minetest.CONTENT_AIR + if mod_fire and math.random(1, 3) == 1 then + data[idx] = CONTENT_FIRE + else + data[idx] = minetest.CONTENT_AIR + end end end @@ -361,7 +368,7 @@ function mcl_explosions.explode(pos, strength, info, puncher) end shape = sphere_shapes[radius] - trace_explode(pos, strength, shape, radius, (info and info.drop_chance) or 1 / strength, puncher) + trace_explode(pos, strength, shape, radius, (info and info.drop_chance) or 1 / strength, info.fire == true, puncher) if not (info and info.no_sound) then add_particles(pos, radius) diff --git a/mods/CORE/mcl_explosions/mod.conf b/mods/CORE/mcl_explosions/mod.conf index 382ece9a..7ce4b678 100644 --- a/mods/CORE/mcl_explosions/mod.conf +++ b/mods/CORE/mcl_explosions/mod.conf @@ -1,2 +1,3 @@ name = mcl_explosions description = A common API to create explosions. +optional_depends = mcl_fire diff --git a/mods/ENTITIES/mcl_mobs/api.lua b/mods/ENTITIES/mcl_mobs/api.lua index dd0d2e5d..425355f7 100644 --- a/mods/ENTITIES/mcl_mobs/api.lua +++ b/mods/ENTITIES/mcl_mobs/api.lua @@ -3824,7 +3824,7 @@ end -- no damage to nodes explosion -function mobs:safe_boom(self, pos, radius) +function mobs:safe_boom(self, pos, strength) minetest.sound_play(self.sounds and self.sounds.explode or "tnt_explode", { pos = pos, gain = 1.0, @@ -3837,13 +3837,13 @@ end -- make explosion with protection and tnt mod check -function mobs:boom(self, pos, radius) +function mobs:boom(self, pos, strength, fire) if mod_explosions then if mobs_griefing and not minetest.is_protected(pos, "") then - mcl_explosions.explode(pos, self.explosion_strength, { drop_chance = 1.0 }, self.object) + mcl_explosions.explode(pos, strength, { drop_chance = 1.0, fire = fire }, self.object) else - mobs:safe_boom(self, pos, radius) + mobs:safe_boom(self, pos, strength) end else mobs:safe_boom(self, pos, radius) diff --git a/mods/ENTITIES/mobs_mc/ghast.lua b/mods/ENTITIES/mobs_mc/ghast.lua index 08fbb99f..2efe56af 100644 --- a/mods/ENTITIES/mobs_mc/ghast.lua +++ b/mods/ENTITIES/mobs_mc/ghast.lua @@ -79,13 +79,12 @@ mobs:register_arrow("mobs_mc:fireball", { textures = {"mcl_fire_fire_charge.png"}, velocity = 15, - -- direct hit, no fire... just plenty of pain hit_player = function(self, player) player:punch(self.object, 1.0, { full_punch_interval = 1.0, damage_groups = {fleshy = 6}, }, nil) - mobs:boom(self, self.object:get_pos(), 3) + mobs:boom(self, self.object:get_pos(), 1, true) end, hit_mob = function(self, mob) @@ -93,12 +92,11 @@ mobs:register_arrow("mobs_mc:fireball", { full_punch_interval = 1.0, damage_groups = {fleshy = 6}, }, nil) - mobs:boom(self, self.object:get_pos(), 3) + mobs:boom(self, self.object:get_pos(), 1, true) end, - -- node hit, explode hit_node = function(self, pos, node) - mobs:boom(self, pos, 3) + mobs:boom(self, pos, 1, true) end }) diff --git a/mods/ITEMS/mcl_beds/depends.txt b/mods/ITEMS/mcl_beds/depends.txt index 34e12adc..c7c874fd 100644 --- a/mods/ITEMS/mcl_beds/depends.txt +++ b/mods/ITEMS/mcl_beds/depends.txt @@ -3,7 +3,7 @@ mcl_sounds? mcl_worlds? mcl_wool? mcl_dye? -mcl_tnt? +mcl_explosions? mcl_weather? mcl_spawn? doc? From 02b2ff7460b0214972db5b28806ce3e66dc13572 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sat, 2 May 2020 19:08:55 +0200 Subject: [PATCH 685/737] Fix mcl_weather crash --- mods/ENVIRONMENT/mcl_weather/rain.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ENVIRONMENT/mcl_weather/rain.lua b/mods/ENVIRONMENT/mcl_weather/rain.lua index ccb8cd5b..f5977940 100644 --- a/mods/ENVIRONMENT/mcl_weather/rain.lua +++ b/mods/ENVIRONMENT/mcl_weather/rain.lua @@ -20,7 +20,7 @@ mcl_weather.rain = { mcl_weather.rain.sound_handler = function(player) return minetest.sound_play("weather_rain", { - to_player = player, + to_player = player:get_player_name(), loop = true, }) end From 84202237f85e0124ea2f5def71a1f50fc538d491 Mon Sep 17 00:00:00 2001 From: Alexander Minges Date: Fri, 1 May 2020 14:56:29 +0200 Subject: [PATCH 686/737] attempt to fix mobs trapped in water check for possible destinations by analyzing a whole set of nodes; check if air is above those nodes refactor code; adjust checks for dangerous blocks performance optimization, remove iteration when looking for safe node take jump height into account; look for water instead of solid for swimming mobs remove debug logging --- mods/ENTITIES/mcl_mobs/api.lua | 117 ++++++++++++++++++++++----------- 1 file changed, 78 insertions(+), 39 deletions(-) diff --git a/mods/ENTITIES/mcl_mobs/api.lua b/mods/ENTITIES/mcl_mobs/api.lua index 4a4a56bb..cf3913af 100644 --- a/mods/ENTITIES/mcl_mobs/api.lua +++ b/mods/ENTITIES/mcl_mobs/api.lua @@ -300,6 +300,11 @@ end -- Returns true is node can deal damage to self local is_node_dangerous = function(self, nodename) local nn = nodename + if self.fly then + if not minetest.get_item_group(nn, self.fly_in) then + return true + end + end if self.water_damage > 0 then if minetest.get_item_group(nn, "water") ~= 0 then return true @@ -317,7 +322,10 @@ local is_node_dangerous = function(self, nodename) end if minetest.registered_nodes[nn].drowning > 0 then if self.breath_max ~= -1 then - return true + -- check if the mob is water-breathing _and_ the block is water; only return true if neither is the case + if not self.breathes_in_water and minetest.get_item_group(nn, "water") ~= 0 then + return true + end end end if minetest.registered_nodes[nn].damage_per_second > 0 then @@ -2013,8 +2021,12 @@ local do_states = function(self, dtime) if (self.water_damage > 0 and self.lava_damage > 0) or self.breath_max ~= -1 then - - lp = minetest.find_node_near(s, 1, {"group:water", "group:lava"}) + -- water-breathing mobs don't have to avoid water, but air + if self.breathes_in_water then + lp = minetest.find_node_near(s, 1, {"air", "group:lava"}) + else + lp = minetest.find_node_near(s, 1, {"group:water", "group:lava"}) + end elseif self.water_damage > 0 then @@ -2032,49 +2044,76 @@ local do_states = function(self, dtime) local is_in_danger = false if lp then - -- If mob in or on dangerous block, look for land - if (is_node_dangerous(self, self.standing_in) or - is_node_dangerous(self, self.standing_on)) then + -- if mob is flying, only check the block it is inside + if self.fly then + if is_node_dangerous(self, self.standing_in) then + is_in_danger = true + end + elseif is_node_dangerous(self, self.standing_in) or is_node_dangerous(self, self.standing_on) then is_in_danger = true - - lp = minetest.find_node_near(s, 5, {"group:solid"}) + end + -- If mob in or on dangerous block, look for land + if is_in_danger then + local tab_lp = nil + if self.breathes_in_water and self.fly then + tab_lp = minetest.find_nodes_in_area({x=s.x-1, y=s.y-1, z=s.z-1}, {x=s.x+1, y=s.y+1, z=s.z+1}, {"group:water"}) + elseif minetest.get_item_group(self.standing_in, "water") then + tab_lp = minetest.find_nodes_in_area_under_air({x=s.x-1, y=s.y-self.fear_height, z=s.z-1}, {x=s.x+1, y=s.y-1, z=s.z+1}, {"group:solid"}) + elseif not self.jump then + tab_lp = minetest.find_nodes_in_area_under_air({x=s.x-1, y=s.y-1, z=s.z-1}, {x=s.x+1, y=s.y-1, z=s.z+1}, {"group:solid"}) + else + tab_lp = minetest.find_nodes_in_area_under_air({x=s.x-1, y=s.y-self.fear_height, z=s.z-1}, {x=s.x+1, y=s.y+(self.jump_height - 1), z=s.z+1}, {"group:solid"}) + end -- did we find land? - if lp then - local nn = minetest.get_node(lp).name - if is_node_dangerous(self, nn) then - -- is the chosen destination safe? Retry if not (max 10 iterations) - local i = 0 - while i < 10 do - if lp then - nn = minetest.get_node(lp).name - minetest.log("Found solid block: " .. nn) - if not is_node_dangerous(self, nn) then break + if #tab_lp >= 1 then + for index, lp in ipairs(tab_lp) do + + local nn = minetest.get_node(lp).name + local node_above_ok = false + + local y_difference = lp.y - s.y + local y_difference_ok = false + + if y_difference <= 0 then + y_difference_ok = true + elseif (y_difference <= self.jump_height) and not minetest.get_item_group(nn, "water") then + y_difference_ok = true + end + + -- is the chosen destination safe and walkable? + if not is_node_dangerous(self, nn) and minetest.registered_nodes[nn].walkable and y_difference_ok then + -- check node at y + 2 above + local lp_above = {x = lp.x, y = lp.y + 1, z = lp.z} + local nn_above = minetest.get_node(lp_above).name + if self.breath_max ~= -1 and self.breathes_in_water and minetest.get_item_group(nn_above, "water") then + -- for water-breathing mobs water is accepted + node_above_ok = true + elseif nn_above == "air" then + -- in any other case there should be air, so the block can be stepped on + node_above_ok = true end - -- look for solid node 5 blocks around the mob's position - elseif i < 5 then - lp = minetest.find_node_near(s, 5, {"group:solid"}) - -- after 5 iterations double search radius - elseif i < 10 then - lp = minetest.find_node_near(s, 10, {"group:solid"}) + + if node_above_ok then + local vec = { + x = lp.x - s.x, + z = lp.z - s.z + } + + yaw = (atan(vec.z / vec.x) + pi / 2) - self.rotate + + if lp.x > s.x then yaw = yaw + pi end + + -- look towards land and jump/move in that direction + yaw = set_yaw(self, yaw, 6) + do_jump(self) + set_velocity(self, self.walk_velocity) + break + else + yaw = yaw + random(-0.5, 0.5) end - i = i + 1 end end - - local vec = { - x = lp.x - s.x, - z = lp.z - s.z - } - - yaw = (atan(vec.z / vec.x) + pi / 2) - self.rotate - - if lp.x > s.x then yaw = yaw + pi end - - -- look towards land and jump/move in that direction - yaw = set_yaw(self, yaw, 6) - do_jump(self) - set_velocity(self, self.walk_velocity) else yaw = yaw + random(-0.5, 0.5) end From 476b36de6d738e2490f8249f23c0ceff39dd8b20 Mon Sep 17 00:00:00 2001 From: Alexander Minges Date: Sat, 2 May 2020 20:39:07 +0200 Subject: [PATCH 687/737] simplify code and add comments --- mods/ENTITIES/mcl_mobs/api.lua | 21 ++++++++------------- 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/mods/ENTITIES/mcl_mobs/api.lua b/mods/ENTITIES/mcl_mobs/api.lua index cf3913af..30955b50 100644 --- a/mods/ENTITIES/mcl_mobs/api.lua +++ b/mods/ENTITIES/mcl_mobs/api.lua @@ -2055,34 +2055,29 @@ local do_states = function(self, dtime) -- If mob in or on dangerous block, look for land if is_in_danger then local tab_lp = nil + -- if water breathing, get water blocks around mob position if self.breathes_in_water and self.fly then tab_lp = minetest.find_nodes_in_area({x=s.x-1, y=s.y-1, z=s.z-1}, {x=s.x+1, y=s.y+1, z=s.z+1}, {"group:water"}) + -- if mob is standing in water, it can only escape, if the destination is at water level elseif minetest.get_item_group(self.standing_in, "water") then - tab_lp = minetest.find_nodes_in_area_under_air({x=s.x-1, y=s.y-self.fear_height, z=s.z-1}, {x=s.x+1, y=s.y-1, z=s.z+1}, {"group:solid"}) - elseif not self.jump then tab_lp = minetest.find_nodes_in_area_under_air({x=s.x-1, y=s.y-1, z=s.z-1}, {x=s.x+1, y=s.y-1, z=s.z+1}, {"group:solid"}) + -- if not jumping, destination needs to be on the same level, but we can consider falling down to the destination + elseif not self.jump then + tab_lp = minetest.find_nodes_in_area_under_air({x=s.x-1, y=s.y-self.fear_height, z=s.z-1}, {x=s.x+1, y=s.y-1, z=s.z+1}, {"group:solid"}) + -- otherwise mob can also jump up to its destination else tab_lp = minetest.find_nodes_in_area_under_air({x=s.x-1, y=s.y-self.fear_height, z=s.z-1}, {x=s.x+1, y=s.y+(self.jump_height - 1), z=s.z+1}, {"group:solid"}) end - -- did we find land? + -- did we find land? Iterate over results if #tab_lp >= 1 then for index, lp in ipairs(tab_lp) do local nn = minetest.get_node(lp).name local node_above_ok = false - local y_difference = lp.y - s.y - local y_difference_ok = false - - if y_difference <= 0 then - y_difference_ok = true - elseif (y_difference <= self.jump_height) and not minetest.get_item_group(nn, "water") then - y_difference_ok = true - end - -- is the chosen destination safe and walkable? - if not is_node_dangerous(self, nn) and minetest.registered_nodes[nn].walkable and y_difference_ok then + if not is_node_dangerous(self, nn) and minetest.registered_nodes[nn].walkable then -- check node at y + 2 above local lp_above = {x = lp.x, y = lp.y + 1, z = lp.z} local nn_above = minetest.get_node(lp_above).name From e7503abf553e01a7e1cc4d264a5b13d7de358a51 Mon Sep 17 00:00:00 2001 From: Alexander Minges Date: Sat, 2 May 2020 21:04:03 +0200 Subject: [PATCH 688/737] only spawn non-faced pumpkins on mapgen --- mods/MAPGEN/mcl_biomes/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/MAPGEN/mcl_biomes/init.lua b/mods/MAPGEN/mcl_biomes/init.lua index 5687db1b..01762c25 100644 --- a/mods/MAPGEN/mcl_biomes/init.lua +++ b/mods/MAPGEN/mcl_biomes/init.lua @@ -3460,7 +3460,7 @@ local function register_decorations() -- Pumpkin minetest.register_decoration({ deco_type = "simple", - decoration = "mcl_farming:pumpkin_face", + decoration = "mcl_farming:pumpkin", param2 = 0, param2_max = 3, place_on = {"group:grass_block_no_snow"}, From beace10136eda2233e26678b29042ad2ec5c1fc2 Mon Sep 17 00:00:00 2001 From: Alexander Minges Date: Sun, 3 May 2020 17:25:12 +0200 Subject: [PATCH 689/737] prevent water mobs to classify solid blocks below them as dangerous --- mods/ENTITIES/mcl_mobs/api.lua | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/mods/ENTITIES/mcl_mobs/api.lua b/mods/ENTITIES/mcl_mobs/api.lua index 63a114e6..43f11ae5 100644 --- a/mods/ENTITIES/mcl_mobs/api.lua +++ b/mods/ENTITIES/mcl_mobs/api.lua @@ -317,7 +317,11 @@ local is_node_dangerous = function(self, nodename) end if minetest.registered_nodes[nn].drowning > 0 then if self.breath_max ~= -1 then - return true + -- check if the mob is water-breathing _and_ the block is water; only return true if neither is the case + -- this will prevent water-breathing mobs to classify water or e.g. sand below them as dangerous + if not self.breathes_in_water and minetest.get_item_group(nn, "water") ~= 0 then + return true + end end end if minetest.registered_nodes[nn].damage_per_second > 0 then @@ -2028,11 +2032,19 @@ local do_states = function(self, dtime) local is_in_danger = false if lp then - -- If mob in or on dangerous block, look for land - if (is_node_dangerous(self, self.standing_in) or - is_node_dangerous(self, self.standing_on)) then - is_in_danger = true + + local is_in_danger = false + -- if mob is flying, only check for node it is currently in (no contact with node below) + if flight_check(self) then + is_in_danger = is_node_dangerous(self, self.standing_in) + elseif (is_node_dangerous(self, self.standing_in) or + is_node_dangerous(self, self.standing_on)) then + is_in_danger = true + end + + -- If mob in or on dangerous block, look for land + if is_in_danger then lp = minetest.find_node_near(s, 5, {"group:solid"}) -- did we find land? From 53cb7d4edb0087b55252f9f7531e958c69b2e97d Mon Sep 17 00:00:00 2001 From: Alexander Minges Date: Sun, 3 May 2020 17:53:04 +0200 Subject: [PATCH 690/737] Revert "simplify code and add comments" This reverts commit 476b36de6d738e2490f8249f23c0ceff39dd8b20. --- mods/ENTITIES/mcl_mobs/api.lua | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/mods/ENTITIES/mcl_mobs/api.lua b/mods/ENTITIES/mcl_mobs/api.lua index 30955b50..cf3913af 100644 --- a/mods/ENTITIES/mcl_mobs/api.lua +++ b/mods/ENTITIES/mcl_mobs/api.lua @@ -2055,29 +2055,34 @@ local do_states = function(self, dtime) -- If mob in or on dangerous block, look for land if is_in_danger then local tab_lp = nil - -- if water breathing, get water blocks around mob position if self.breathes_in_water and self.fly then tab_lp = minetest.find_nodes_in_area({x=s.x-1, y=s.y-1, z=s.z-1}, {x=s.x+1, y=s.y+1, z=s.z+1}, {"group:water"}) - -- if mob is standing in water, it can only escape, if the destination is at water level elseif minetest.get_item_group(self.standing_in, "water") then - tab_lp = minetest.find_nodes_in_area_under_air({x=s.x-1, y=s.y-1, z=s.z-1}, {x=s.x+1, y=s.y-1, z=s.z+1}, {"group:solid"}) - -- if not jumping, destination needs to be on the same level, but we can consider falling down to the destination - elseif not self.jump then tab_lp = minetest.find_nodes_in_area_under_air({x=s.x-1, y=s.y-self.fear_height, z=s.z-1}, {x=s.x+1, y=s.y-1, z=s.z+1}, {"group:solid"}) - -- otherwise mob can also jump up to its destination + elseif not self.jump then + tab_lp = minetest.find_nodes_in_area_under_air({x=s.x-1, y=s.y-1, z=s.z-1}, {x=s.x+1, y=s.y-1, z=s.z+1}, {"group:solid"}) else tab_lp = minetest.find_nodes_in_area_under_air({x=s.x-1, y=s.y-self.fear_height, z=s.z-1}, {x=s.x+1, y=s.y+(self.jump_height - 1), z=s.z+1}, {"group:solid"}) end - -- did we find land? Iterate over results + -- did we find land? if #tab_lp >= 1 then for index, lp in ipairs(tab_lp) do local nn = minetest.get_node(lp).name local node_above_ok = false + local y_difference = lp.y - s.y + local y_difference_ok = false + + if y_difference <= 0 then + y_difference_ok = true + elseif (y_difference <= self.jump_height) and not minetest.get_item_group(nn, "water") then + y_difference_ok = true + end + -- is the chosen destination safe and walkable? - if not is_node_dangerous(self, nn) and minetest.registered_nodes[nn].walkable then + if not is_node_dangerous(self, nn) and minetest.registered_nodes[nn].walkable and y_difference_ok then -- check node at y + 2 above local lp_above = {x = lp.x, y = lp.y + 1, z = lp.z} local nn_above = minetest.get_node(lp_above).name From effa27bec1128a07c0bc9b033a14133bda11fe97 Mon Sep 17 00:00:00 2001 From: Alexander Minges Date: Sun, 3 May 2020 17:53:19 +0200 Subject: [PATCH 691/737] Revert "attempt to fix mobs trapped in water" This reverts commit 84202237f85e0124ea2f5def71a1f50fc538d491. --- mods/ENTITIES/mcl_mobs/api.lua | 117 +++++++++++---------------------- 1 file changed, 39 insertions(+), 78 deletions(-) diff --git a/mods/ENTITIES/mcl_mobs/api.lua b/mods/ENTITIES/mcl_mobs/api.lua index cf3913af..4a4a56bb 100644 --- a/mods/ENTITIES/mcl_mobs/api.lua +++ b/mods/ENTITIES/mcl_mobs/api.lua @@ -300,11 +300,6 @@ end -- Returns true is node can deal damage to self local is_node_dangerous = function(self, nodename) local nn = nodename - if self.fly then - if not minetest.get_item_group(nn, self.fly_in) then - return true - end - end if self.water_damage > 0 then if minetest.get_item_group(nn, "water") ~= 0 then return true @@ -322,10 +317,7 @@ local is_node_dangerous = function(self, nodename) end if minetest.registered_nodes[nn].drowning > 0 then if self.breath_max ~= -1 then - -- check if the mob is water-breathing _and_ the block is water; only return true if neither is the case - if not self.breathes_in_water and minetest.get_item_group(nn, "water") ~= 0 then - return true - end + return true end end if minetest.registered_nodes[nn].damage_per_second > 0 then @@ -2021,12 +2013,8 @@ local do_states = function(self, dtime) if (self.water_damage > 0 and self.lava_damage > 0) or self.breath_max ~= -1 then - -- water-breathing mobs don't have to avoid water, but air - if self.breathes_in_water then - lp = minetest.find_node_near(s, 1, {"air", "group:lava"}) - else - lp = minetest.find_node_near(s, 1, {"group:water", "group:lava"}) - end + + lp = minetest.find_node_near(s, 1, {"group:water", "group:lava"}) elseif self.water_damage > 0 then @@ -2044,76 +2032,49 @@ local do_states = function(self, dtime) local is_in_danger = false if lp then - -- if mob is flying, only check the block it is inside - if self.fly then - if is_node_dangerous(self, self.standing_in) then - is_in_danger = true - end - elseif is_node_dangerous(self, self.standing_in) or is_node_dangerous(self, self.standing_on) then - is_in_danger = true - end -- If mob in or on dangerous block, look for land - if is_in_danger then - local tab_lp = nil - if self.breathes_in_water and self.fly then - tab_lp = minetest.find_nodes_in_area({x=s.x-1, y=s.y-1, z=s.z-1}, {x=s.x+1, y=s.y+1, z=s.z+1}, {"group:water"}) - elseif minetest.get_item_group(self.standing_in, "water") then - tab_lp = minetest.find_nodes_in_area_under_air({x=s.x-1, y=s.y-self.fear_height, z=s.z-1}, {x=s.x+1, y=s.y-1, z=s.z+1}, {"group:solid"}) - elseif not self.jump then - tab_lp = minetest.find_nodes_in_area_under_air({x=s.x-1, y=s.y-1, z=s.z-1}, {x=s.x+1, y=s.y-1, z=s.z+1}, {"group:solid"}) - else - tab_lp = minetest.find_nodes_in_area_under_air({x=s.x-1, y=s.y-self.fear_height, z=s.z-1}, {x=s.x+1, y=s.y+(self.jump_height - 1), z=s.z+1}, {"group:solid"}) - end + if (is_node_dangerous(self, self.standing_in) or + is_node_dangerous(self, self.standing_on)) then + is_in_danger = true + + lp = minetest.find_node_near(s, 5, {"group:solid"}) -- did we find land? - if #tab_lp >= 1 then - for index, lp in ipairs(tab_lp) do - - local nn = minetest.get_node(lp).name - local node_above_ok = false - - local y_difference = lp.y - s.y - local y_difference_ok = false - - if y_difference <= 0 then - y_difference_ok = true - elseif (y_difference <= self.jump_height) and not minetest.get_item_group(nn, "water") then - y_difference_ok = true - end - - -- is the chosen destination safe and walkable? - if not is_node_dangerous(self, nn) and minetest.registered_nodes[nn].walkable and y_difference_ok then - -- check node at y + 2 above - local lp_above = {x = lp.x, y = lp.y + 1, z = lp.z} - local nn_above = minetest.get_node(lp_above).name - if self.breath_max ~= -1 and self.breathes_in_water and minetest.get_item_group(nn_above, "water") then - -- for water-breathing mobs water is accepted - node_above_ok = true - elseif nn_above == "air" then - -- in any other case there should be air, so the block can be stepped on - node_above_ok = true + if lp then + local nn = minetest.get_node(lp).name + if is_node_dangerous(self, nn) then + -- is the chosen destination safe? Retry if not (max 10 iterations) + local i = 0 + while i < 10 do + if lp then + nn = minetest.get_node(lp).name + minetest.log("Found solid block: " .. nn) + if not is_node_dangerous(self, nn) then break end - - if node_above_ok then - local vec = { - x = lp.x - s.x, - z = lp.z - s.z - } - - yaw = (atan(vec.z / vec.x) + pi / 2) - self.rotate - - if lp.x > s.x then yaw = yaw + pi end - - -- look towards land and jump/move in that direction - yaw = set_yaw(self, yaw, 6) - do_jump(self) - set_velocity(self, self.walk_velocity) - break - else - yaw = yaw + random(-0.5, 0.5) + -- look for solid node 5 blocks around the mob's position + elseif i < 5 then + lp = minetest.find_node_near(s, 5, {"group:solid"}) + -- after 5 iterations double search radius + elseif i < 10 then + lp = minetest.find_node_near(s, 10, {"group:solid"}) end + i = i + 1 end end + + local vec = { + x = lp.x - s.x, + z = lp.z - s.z + } + + yaw = (atan(vec.z / vec.x) + pi / 2) - self.rotate + + if lp.x > s.x then yaw = yaw + pi end + + -- look towards land and jump/move in that direction + yaw = set_yaw(self, yaw, 6) + do_jump(self) + set_velocity(self, self.walk_velocity) else yaw = yaw + random(-0.5, 0.5) end From a4ee8dfdd5a88f34293ae18c46060edba1f0658a Mon Sep 17 00:00:00 2001 From: Alexander Minges Date: Sun, 3 May 2020 17:53:39 +0200 Subject: [PATCH 692/737] Revert "mcl_mobs: when moving away from dangers, check if destination is dangerous itself" This reverts commit baaf3e7a135311ce27d79a45c2bd256170d8edbc. --- mods/ENTITIES/mcl_mobs/api.lua | 22 +--------------------- 1 file changed, 1 insertion(+), 21 deletions(-) diff --git a/mods/ENTITIES/mcl_mobs/api.lua b/mods/ENTITIES/mcl_mobs/api.lua index 4a4a56bb..3cae6670 100644 --- a/mods/ENTITIES/mcl_mobs/api.lua +++ b/mods/ENTITIES/mcl_mobs/api.lua @@ -2026,7 +2026,7 @@ local do_states = function(self, dtime) elseif self.fire_damage > 0 then - lp = minetest.find_node_near(s, 1, {"group:fire", "mcl_nether:magma"}) + lp = minetest.find_node_near(s, 1, {"group:fire"}) end @@ -2041,26 +2041,6 @@ local do_states = function(self, dtime) -- did we find land? if lp then - local nn = minetest.get_node(lp).name - if is_node_dangerous(self, nn) then - -- is the chosen destination safe? Retry if not (max 10 iterations) - local i = 0 - while i < 10 do - if lp then - nn = minetest.get_node(lp).name - minetest.log("Found solid block: " .. nn) - if not is_node_dangerous(self, nn) then break - end - -- look for solid node 5 blocks around the mob's position - elseif i < 5 then - lp = minetest.find_node_near(s, 5, {"group:solid"}) - -- after 5 iterations double search radius - elseif i < 10 then - lp = minetest.find_node_near(s, 10, {"group:solid"}) - end - i = i + 1 - end - end local vec = { x = lp.x - s.x, From f388983b73614324b4019349fe884144bb4a84a2 Mon Sep 17 00:00:00 2001 From: Alexander Minges Date: Sun, 3 May 2020 17:25:12 +0200 Subject: [PATCH 693/737] prevent water mobs to classify solid blocks below them as dangerous --- mods/ENTITIES/mcl_mobs/api.lua | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/mods/ENTITIES/mcl_mobs/api.lua b/mods/ENTITIES/mcl_mobs/api.lua index 3cae6670..06c6425b 100644 --- a/mods/ENTITIES/mcl_mobs/api.lua +++ b/mods/ENTITIES/mcl_mobs/api.lua @@ -317,7 +317,11 @@ local is_node_dangerous = function(self, nodename) end if minetest.registered_nodes[nn].drowning > 0 then if self.breath_max ~= -1 then - return true + -- check if the mob is water-breathing _and_ the block is water; only return true if neither is the case + -- this will prevent water-breathing mobs to classify water or e.g. sand below them as dangerous + if not self.breathes_in_water and minetest.get_item_group(nn, "water") ~= 0 then + return true + end end end if minetest.registered_nodes[nn].damage_per_second > 0 then @@ -2032,11 +2036,19 @@ local do_states = function(self, dtime) local is_in_danger = false if lp then - -- If mob in or on dangerous block, look for land - if (is_node_dangerous(self, self.standing_in) or - is_node_dangerous(self, self.standing_on)) then - is_in_danger = true + + local is_in_danger = false + -- if mob is flying, only check for node it is currently in (no contact with node below) + if flight_check(self) then + is_in_danger = is_node_dangerous(self, self.standing_in) + elseif (is_node_dangerous(self, self.standing_in) or + is_node_dangerous(self, self.standing_on)) then + is_in_danger = true + end + + -- If mob in or on dangerous block, look for land + if is_in_danger then lp = minetest.find_node_near(s, 5, {"group:solid"}) -- did we find land? From e95d8ddf3a9f5ed65fa9984833ff6e1ffd00f27f Mon Sep 17 00:00:00 2001 From: Alexander Minges Date: Sun, 3 May 2020 18:01:32 +0200 Subject: [PATCH 694/737] magma blocks should be considered dangerous by mobs --- mods/ENTITIES/mcl_mobs/api.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ENTITIES/mcl_mobs/api.lua b/mods/ENTITIES/mcl_mobs/api.lua index 06c6425b..5a0cda3f 100644 --- a/mods/ENTITIES/mcl_mobs/api.lua +++ b/mods/ENTITIES/mcl_mobs/api.lua @@ -2030,7 +2030,7 @@ local do_states = function(self, dtime) elseif self.fire_damage > 0 then - lp = minetest.find_node_near(s, 1, {"group:fire"}) + lp = minetest.find_node_near(s, 1, {"group:fire", "mcl_nether:magma"}) end From 4957bd11180f8b0a0652d7ea033c2a52b0432ab7 Mon Sep 17 00:00:00 2001 From: Rocher Laurent Date: Sun, 3 May 2020 22:39:07 +0200 Subject: [PATCH 695/737] Translate In French --- .../ENTITIES/mcl_boats/locale/mcl_boats.fr.tr | 11 + .../locale/mcl_falling_nodes.fr.tr | 3 + .../mcl_minecarts/locale/mcl_minecarts.fr.tr | 35 ++ mods/ENTITIES/mcl_mobs/locale/mcl_mobs.fr.tr | 11 + mods/ENTITIES/mobs_mc/locale/mobs_mc.fr.tr | 75 +++ .../lightning/locale/lightning.fr.tr | 4 + .../locale/mcl_void_damage.fr.tr | 3 + .../mcl_weather/locale/mcl_weather.fr.tr | 8 + .../locale/doc_identifier.fr.tr | 18 + .../HELP/doc/doc_items/locale/doc_items.fr.tr | 1 + .../locale/mcl_craftguide.fr.tr | 42 +- mods/HELP/mcl_doc/locale/mcl_doc.fr.tr | 79 +++ .../locale/mcl_doc_basics.fr.tr | 468 ++++++++++++++++++ mods/HELP/mcl_tt/locale/mcl_tt.fr.tr | 17 + mods/HELP/tt/locale/tt.fr.tr | 31 ++ mods/HUD/awards/locale/awards.fr.tr | 61 +++ mods/HUD/hudbars/locale/hudbars.fr.tr | 6 + .../locale/mcl_achievements.fr.tr | 49 ++ .../locale/mcl_death_messages.fr.tr | 58 +++ mods/HUD/mcl_hbarmor/locale/hbarmor.fr.tr | 2 + .../mcl_inventory/locale/mcl_inventory.fr.tr | 20 + .../locale/mcl_comparators.fr.tr | 12 + .../locale/mcl_dispensers.fr.tr | 25 + .../mcl_droppers/locale/mcl_droppers.fr.tr | 9 + .../mcl_observers/locale/mcl_observers.fr.tr | 5 + .../locale/mesecons_button.fr.tr | 14 + .../locale/mesecons_commandblock.fr.tr | 29 ++ .../locale/mesecons_delayer.fr.tr | 13 + .../locale/mesecons_lightstone.fr.tr | 4 + .../locale/mesecons_noteblock.fr.tr | 22 + .../locale/mesecons_pistons.fr.tr | 8 + .../locale/mesecons_pressureplates.fr.tr | 16 + .../locale/mesecons_solarpanel.fr.tr | 8 + .../locale/mesecons_torch.fr.tr | 10 + .../locale/mesecons_walllever.fr.tr | 5 + .../locale/mesecons_wires.fr.tr | 11 + mods/ITEMS/mcl_anvils/locale/mcl_anvils.fr.tr | 16 + mods/ITEMS/mcl_armor/locale/mcl_armor.fr.tr | 23 + .../locale/mcl_armor_stand.fr.tr | 5 + .../mcl_banners/locale/mcl_banners.fr.tr | 77 +++ mods/ITEMS/mcl_beds/locale/mcl_beds.fr.tr | 41 ++ mods/ITEMS/mcl_books/locale/mcl_books.fr.tr | 28 ++ mods/ITEMS/mcl_bows/locale/mcl_bows.fr.tr | 15 + mods/ITEMS/mcl_clock/locale/mcl_clock.fr.tr | 5 + mods/ITEMS/mcl_cocoas/locale/mcl_cocoas.fr.tr | 6 + .../locale/mcl_colorblocks.fr.tr | 76 +++ .../mcl_compass/locale/mcl_compass.fr.tr | 4 + mods/ITEMS/mcl_core/locale/mcl_core.fr.tr | 257 ++++++++++ .../locale/mcl_crafting_table.fr.tr | 8 + mods/ITEMS/mcl_doors/locale/mcl_doors.fr.tr | 24 + mods/ITEMS/mcl_dye/locale/mcl_dye.fr.tr | 27 + mods/ITEMS/mcl_end/locale/mcl_end.fr.tr | 28 ++ .../mcl_farming/locale/mcl_farming.fr.tr | 99 ++++ mods/ITEMS/mcl_fences/locale/mcl_fences.fr.tr | 18 + mods/ITEMS/mcl_fire/locale/mcl_fire.fr.tr | 19 + .../mcl_fishing/locale/mcl_fishing.fr.tr | 18 + .../locale/mcl_flowerpots.fr.tr | 26 + .../mcl_flowers/locale/mcl_flowers.fr.tr | 32 ++ .../mcl_furnaces/locale/mcl_furnaces.fr.tr | 9 + mods/ITEMS/mcl_heads/locale/mcl_heads.fr.tr | 11 + .../mcl_hoppers/locale/mcl_hoppers.fr.tr | 16 + .../locale/mcl_itemframes.fr.tr | 5 + .../mcl_jukebox/locale/mcl_jukebox.fr.tr | 11 + mods/ITEMS/mcl_maps/locale/mcl_maps.fr.tr | 10 + .../mcl_mobitems/locale/mcl_mobitems.fr.tr | 68 +++ .../locale/mcl_mobspawners.fr.tr | 5 + .../locale/mcl_monster_eggs.fr.tr | 9 + .../mcl_mushrooms/locale/mcl_mushroom.fr.tr | 24 + mods/ITEMS/mcl_nether/locale/mcl_nether.fr.tr | 40 ++ mods/ITEMS/mcl_ocean/locale/mcl_ocean.fr.tr | 56 +++ .../mcl_portals/locale/mcl_portals.fr.tr | 15 + .../mcl_potions/locale/mcl_potions.fr.tr | 25 + mods/ITEMS/mcl_signs/locale/mcl_signs.fr.tr | 9 + .../mcl_sponges/locale/mcl_sponges.fr.tr | 10 + mods/ITEMS/mcl_stairs/locale/mcl_stairs.fr.tr | 101 ++++ .../mcl_throwing/locale/mcl_throwing.fr.tr | 12 + mods/ITEMS/mcl_tnt/locale/mcl_tnt.fr.tr | 8 + mods/ITEMS/mcl_tools/locale/mcl_tools.fr.tr | 32 ++ .../mcl_torches/locale/mcl_torches.fr.tr | 3 + mods/ITEMS/mcl_walls/locale/mcl_walls.fr.tr | 16 + mods/ITEMS/mcl_wool/locale/mcl_wool.fr.tr | 37 ++ mods/ITEMS/mclx_core/locale/mclx_core.fr.tr | 5 + .../mclx_fences/locale/mclx_fences.fr.tr | 4 + .../mclx_stairs/locale/mclx_stairs.fr.tr | 82 +++ .../screwdriver/locale/screwdriver.fr.tr | 2 + mods/ITEMS/xpanes/locale/xpanes.fr.tr | 23 + .../locale/mcl_structures.fr.tr | 7 + mods/MISC/findbiome/locale/findbiome.fr.tr | 10 + .../mcl_commands/locale/mcl_commands.fr.tr | 23 + mods/MISC/mcl_privs/locale/mcl_privs.fr.tr | 2 + mods/MISC/mcl_wip/locale/mcl_wip.fr.tr | 4 + .../PLAYER/mcl_hunger/locale/mcl_hunger.fr.tr | 8 + .../locale/mcl_playerplus.fr.tr | 3 + mods/PLAYER/mcl_skins/locale/mcl_skins.fr.tr | 26 +- mods/PLAYER/mcl_spawn/locale/mcl_spawn.fr.tr | 4 + 95 files changed, 2745 insertions(+), 35 deletions(-) create mode 100644 mods/ENTITIES/mcl_boats/locale/mcl_boats.fr.tr create mode 100644 mods/ENTITIES/mcl_falling_nodes/locale/mcl_falling_nodes.fr.tr create mode 100644 mods/ENTITIES/mcl_minecarts/locale/mcl_minecarts.fr.tr create mode 100644 mods/ENTITIES/mcl_mobs/locale/mcl_mobs.fr.tr create mode 100644 mods/ENTITIES/mobs_mc/locale/mobs_mc.fr.tr create mode 100644 mods/ENVIRONMENT/lightning/locale/lightning.fr.tr create mode 100644 mods/ENVIRONMENT/mcl_void_damage/locale/mcl_void_damage.fr.tr create mode 100644 mods/ENVIRONMENT/mcl_weather/locale/mcl_weather.fr.tr create mode 100644 mods/HELP/doc/doc_identifier/locale/doc_identifier.fr.tr create mode 100644 mods/HELP/mcl_doc/locale/mcl_doc.fr.tr create mode 100644 mods/HELP/mcl_doc_basics/locale/mcl_doc_basics.fr.tr create mode 100644 mods/HELP/mcl_tt/locale/mcl_tt.fr.tr create mode 100644 mods/HELP/tt/locale/tt.fr.tr create mode 100644 mods/HUD/awards/locale/awards.fr.tr create mode 100644 mods/HUD/hudbars/locale/hudbars.fr.tr create mode 100644 mods/HUD/mcl_achievements/locale/mcl_achievements.fr.tr create mode 100644 mods/HUD/mcl_death_messages/locale/mcl_death_messages.fr.tr create mode 100644 mods/HUD/mcl_hbarmor/locale/hbarmor.fr.tr create mode 100644 mods/HUD/mcl_inventory/locale/mcl_inventory.fr.tr create mode 100644 mods/ITEMS/REDSTONE/mcl_comparators/locale/mcl_comparators.fr.tr create mode 100644 mods/ITEMS/REDSTONE/mcl_dispensers/locale/mcl_dispensers.fr.tr create mode 100644 mods/ITEMS/REDSTONE/mcl_droppers/locale/mcl_droppers.fr.tr create mode 100644 mods/ITEMS/REDSTONE/mcl_observers/locale/mcl_observers.fr.tr create mode 100644 mods/ITEMS/REDSTONE/mesecons_button/locale/mesecons_button.fr.tr create mode 100644 mods/ITEMS/REDSTONE/mesecons_commandblock/locale/mesecons_commandblock.fr.tr create mode 100644 mods/ITEMS/REDSTONE/mesecons_delayer/locale/mesecons_delayer.fr.tr create mode 100644 mods/ITEMS/REDSTONE/mesecons_lightstone/locale/mesecons_lightstone.fr.tr create mode 100644 mods/ITEMS/REDSTONE/mesecons_noteblock/locale/mesecons_noteblock.fr.tr create mode 100644 mods/ITEMS/REDSTONE/mesecons_pistons/locale/mesecons_pistons.fr.tr create mode 100644 mods/ITEMS/REDSTONE/mesecons_pressureplates/locale/mesecons_pressureplates.fr.tr create mode 100644 mods/ITEMS/REDSTONE/mesecons_solarpanel/locale/mesecons_solarpanel.fr.tr create mode 100644 mods/ITEMS/REDSTONE/mesecons_torch/locale/mesecons_torch.fr.tr create mode 100644 mods/ITEMS/REDSTONE/mesecons_walllever/locale/mesecons_walllever.fr.tr create mode 100644 mods/ITEMS/REDSTONE/mesecons_wires/locale/mesecons_wires.fr.tr create mode 100644 mods/ITEMS/mcl_anvils/locale/mcl_anvils.fr.tr create mode 100644 mods/ITEMS/mcl_armor/locale/mcl_armor.fr.tr create mode 100644 mods/ITEMS/mcl_armor_stand/locale/mcl_armor_stand.fr.tr create mode 100644 mods/ITEMS/mcl_banners/locale/mcl_banners.fr.tr create mode 100644 mods/ITEMS/mcl_beds/locale/mcl_beds.fr.tr create mode 100644 mods/ITEMS/mcl_books/locale/mcl_books.fr.tr create mode 100644 mods/ITEMS/mcl_bows/locale/mcl_bows.fr.tr create mode 100644 mods/ITEMS/mcl_clock/locale/mcl_clock.fr.tr create mode 100644 mods/ITEMS/mcl_cocoas/locale/mcl_cocoas.fr.tr create mode 100644 mods/ITEMS/mcl_colorblocks/locale/mcl_colorblocks.fr.tr create mode 100644 mods/ITEMS/mcl_compass/locale/mcl_compass.fr.tr create mode 100644 mods/ITEMS/mcl_core/locale/mcl_core.fr.tr create mode 100644 mods/ITEMS/mcl_crafting_table/locale/mcl_crafting_table.fr.tr create mode 100644 mods/ITEMS/mcl_doors/locale/mcl_doors.fr.tr create mode 100644 mods/ITEMS/mcl_dye/locale/mcl_dye.fr.tr create mode 100644 mods/ITEMS/mcl_end/locale/mcl_end.fr.tr create mode 100644 mods/ITEMS/mcl_farming/locale/mcl_farming.fr.tr create mode 100644 mods/ITEMS/mcl_fences/locale/mcl_fences.fr.tr create mode 100644 mods/ITEMS/mcl_fire/locale/mcl_fire.fr.tr create mode 100644 mods/ITEMS/mcl_fishing/locale/mcl_fishing.fr.tr create mode 100644 mods/ITEMS/mcl_flowerpots/locale/mcl_flowerpots.fr.tr create mode 100644 mods/ITEMS/mcl_flowers/locale/mcl_flowers.fr.tr create mode 100644 mods/ITEMS/mcl_furnaces/locale/mcl_furnaces.fr.tr create mode 100644 mods/ITEMS/mcl_heads/locale/mcl_heads.fr.tr create mode 100644 mods/ITEMS/mcl_hoppers/locale/mcl_hoppers.fr.tr create mode 100644 mods/ITEMS/mcl_itemframes/locale/mcl_itemframes.fr.tr create mode 100644 mods/ITEMS/mcl_jukebox/locale/mcl_jukebox.fr.tr create mode 100644 mods/ITEMS/mcl_maps/locale/mcl_maps.fr.tr create mode 100644 mods/ITEMS/mcl_mobitems/locale/mcl_mobitems.fr.tr create mode 100644 mods/ITEMS/mcl_mobspawners/locale/mcl_mobspawners.fr.tr create mode 100644 mods/ITEMS/mcl_monster_eggs/locale/mcl_monster_eggs.fr.tr create mode 100644 mods/ITEMS/mcl_mushrooms/locale/mcl_mushroom.fr.tr create mode 100644 mods/ITEMS/mcl_nether/locale/mcl_nether.fr.tr create mode 100644 mods/ITEMS/mcl_ocean/locale/mcl_ocean.fr.tr create mode 100644 mods/ITEMS/mcl_portals/locale/mcl_portals.fr.tr create mode 100644 mods/ITEMS/mcl_potions/locale/mcl_potions.fr.tr create mode 100644 mods/ITEMS/mcl_signs/locale/mcl_signs.fr.tr create mode 100644 mods/ITEMS/mcl_sponges/locale/mcl_sponges.fr.tr create mode 100644 mods/ITEMS/mcl_stairs/locale/mcl_stairs.fr.tr create mode 100644 mods/ITEMS/mcl_throwing/locale/mcl_throwing.fr.tr create mode 100644 mods/ITEMS/mcl_tnt/locale/mcl_tnt.fr.tr create mode 100644 mods/ITEMS/mcl_tools/locale/mcl_tools.fr.tr create mode 100644 mods/ITEMS/mcl_torches/locale/mcl_torches.fr.tr create mode 100644 mods/ITEMS/mcl_walls/locale/mcl_walls.fr.tr create mode 100644 mods/ITEMS/mcl_wool/locale/mcl_wool.fr.tr create mode 100644 mods/ITEMS/mclx_core/locale/mclx_core.fr.tr create mode 100644 mods/ITEMS/mclx_fences/locale/mclx_fences.fr.tr create mode 100644 mods/ITEMS/mclx_stairs/locale/mclx_stairs.fr.tr create mode 100644 mods/ITEMS/screwdriver/locale/screwdriver.fr.tr create mode 100644 mods/ITEMS/xpanes/locale/xpanes.fr.tr create mode 100644 mods/MAPGEN/mcl_structures/locale/mcl_structures.fr.tr create mode 100644 mods/MISC/findbiome/locale/findbiome.fr.tr create mode 100644 mods/MISC/mcl_commands/locale/mcl_commands.fr.tr create mode 100644 mods/MISC/mcl_privs/locale/mcl_privs.fr.tr create mode 100644 mods/MISC/mcl_wip/locale/mcl_wip.fr.tr create mode 100644 mods/PLAYER/mcl_hunger/locale/mcl_hunger.fr.tr create mode 100644 mods/PLAYER/mcl_playerplus/locale/mcl_playerplus.fr.tr create mode 100644 mods/PLAYER/mcl_spawn/locale/mcl_spawn.fr.tr diff --git a/mods/ENTITIES/mcl_boats/locale/mcl_boats.fr.tr b/mods/ENTITIES/mcl_boats/locale/mcl_boats.fr.tr new file mode 100644 index 00000000..04d6d9da --- /dev/null +++ b/mods/ENTITIES/mcl_boats/locale/mcl_boats.fr.tr @@ -0,0 +1,11 @@ +# textdomain: mcl_boats +Acacia Boat=Bateau en Acacia +Birch Boat=Bateau en Bouleau +Boat=Bateau +Boats are used to travel on the surface of water.=Les bateaux sont utilisés pour voyager à la surface de l'eau. +Dark Oak Boat=Bateau en Chêne Noir +Jungle Boat=Bateau en Acajou +Oak Boat=Bateau en Chêne +Rightclick on a water source to place the boat. Rightclick the boat to enter it. Use [Left] and [Right] to steer, [Forwards] to speed up and [Backwards] to slow down or move backwards. Rightclick the boat again to leave it, punch the boat to make it drop as an item.=Faites un clic droit sur une source d'eau pour placer le bateau. Faites un clic droit sur le bateau pour y entrer. Utilisez [Gauche] et [Droite] pour diriger, [Avant] pour accélérer et [Arrière] pour ralentir ou reculer. Cliquez de nouveau avec le bouton droit sur le bateau pour le quitter, frappez le bateau pour le faire tomber en tant qu'objet. +Spruce Boat=Bateau en Sapin +Water vehicle=Véhicule aquatique \ No newline at end of file diff --git a/mods/ENTITIES/mcl_falling_nodes/locale/mcl_falling_nodes.fr.tr b/mods/ENTITIES/mcl_falling_nodes/locale/mcl_falling_nodes.fr.tr new file mode 100644 index 00000000..781cd704 --- /dev/null +++ b/mods/ENTITIES/mcl_falling_nodes/locale/mcl_falling_nodes.fr.tr @@ -0,0 +1,3 @@ +# textdomain: mcl_falling_nodes +@1 was smashed by a falling anvil.=@1 a été écrasé par une enclume qui tombait. +@1 was smashed by a falling block.=@1 a été écrasé par un bloc qui tombait. diff --git a/mods/ENTITIES/mcl_minecarts/locale/mcl_minecarts.fr.tr b/mods/ENTITIES/mcl_minecarts/locale/mcl_minecarts.fr.tr new file mode 100644 index 00000000..39cdfd01 --- /dev/null +++ b/mods/ENTITIES/mcl_minecarts/locale/mcl_minecarts.fr.tr @@ -0,0 +1,35 @@ +# textdomain: mcl_minecarts +Minecart=Wagonnet +Minecarts can be used for a quick transportion on rails.=Les wagonnets peuvent être utilisés pour un transport rapide sur rails. +Minecarts only ride on rails and always follow the tracks. At a T-junction with no straight way ahead, they turn left. The speed is affected by the rail type.=Les wagonnets roulent uniquement sur des rails et suivent toujours les pistes. À un carrefour en T sans voie directe, ils tournent à gauche. La vitesse dépend du type de rail. +You can place the minecart on rails. Right-click it to enter it. Punch it to get it moving.=Vous pouvez placer le wagonnet sur des rails. Faites un clic droit dessus pour entrer dedans. Frappez-le pour le faire bouger. +To obtain the minecart, punch it while holding down the sneak key.=Pour obtenir la wagonnet, frappez-le tout en maintenant la touche furtive enfoncée. +A minecart with TNT is an explosive vehicle that travels on rail.=Un wagonnet avec de la TNT est un véhicule explosif qui se déplace sur rail. +Place it on rails. Punch it to move it. The TNT is ignited with a flint and steel or when the minecart is on an powered activator rail.=Placez-le sur des rails. Frappez-le pour le déplacer. Le TNT est allumé avec un briquet ou lorsque le minecart est sur un rail d'activation alimenté. +To obtain the minecart and TNT, punch them while holding down the sneak key. You can't do this if the TNT was ignited.=Pour obtenir la wagonnet et la TNT, frappez-les tout en maintenant la touche furtive enfoncée. Vous ne pouvez pas faire cela si le TNT a été allumé. +A minecart with furnace is a vehicle that travels on rails. It can propel itself with fuel.=Une wagonnet avec un four est un véhicule qui se déplace sur rails. Il peut se propulser avec du carburant. +Place it on rails. If you give it some coal, the furnace will start burning for a long time and the minecart will be able to move itself. Punch it to get it moving.=Placez-le sur des rails. Si vous lui donnez du charbon, le four commencera à brûler pendant longtemps et le wagonnet pourra se déplacer. Frappez-le pour le faire bouger. +To obtain the minecart and furnace, punch them while holding down the sneak key.=Pour obtenir le wagonnet et le four, frappez-les tout en maintenant la touche furtive enfoncée. +Minecart with Chest=Wagonnet avec Coffre +Minecart with Furnace=Wagonnet avec Four +Minecart with Command Block=Wagonnet avec Bloc de Commande +Minecart with Hopper=Wagonnet avec Entonoir +Minecart with TNT=Wagonnet avec TNT +Place them on the ground to build your railway, the rails will automatically connect to each other and will turn into curves, T-junctions, crossings and slopes as needed.=Placez-les sur le sol pour construire votre chemin de fer, les rails se connecteront automatiquement les uns aux autres et se transformeront en courbes, en jonctions en T, en traversées et en pentes au besoin. +Rail=Rail +Rails can be used to build transport tracks for minecarts. Normal rails slightly slow down minecarts due to friction.=Les rails peuvent être utilisés pour construire des voies de transport pour les wagonnets. Les rails ralentissent légèrement les wagonnets en raison de la friction. +Powered Rail=Rail allimenté +Rails can be used to build transport tracks for minecarts. Powered rails are able to accelerate and brake minecarts.=Les rails peuvent être utilisés pour construire des voies de transport pour les wagonnets. Les rails motorisés sont capables d'accélérer et de freiner les wagonnets. +Without redstone power, the rail will brake minecarts. To make this rail accelerate minecarts, power it with redstone power.=Sans énergie de redstone, le rail freinera les wagonnets. Pour que ce rail accélère les minecarts, alimentez-le avec une source d'énergie redstone. +Activator Rail=Rail d'activation +Rails can be used to build transport tracks for minecarts. Activator rails are used to activate special minecarts.=Les rails peuvent être utilisés pour construire des voies de transport pour les wagonnets. Des rails activateurs sont utilisés pour activer des wagonnets spéciaux. +To make this rail activate minecarts, power it with redstone power and send a minecart over this piece of rail.=Pour activer ce rail, activez les wagonnets, alimentez-le avec de l'énergie redstone et envoyez un wagonnet sur ce morceau de rail. +Detector Rail=Rail de détection +Rails can be used to build transport tracks for minecarts. A detector rail is able to detect a minecart above it and powers redstone mechanisms.=Les rails peuvent être utilisés pour construire des voies de transport pour les wagonnets. Un rail de détection est capable de détecter un wagonnet au-dessus et alimente les mécanismes de redstone. +To detect a minecart and provide redstone power, connect it to redstone trails or redstone mechanisms and send any minecart over the rail.=Pour détecter un wagonnet et fournir une alimentation redstone, connectez-le aux câble redstone ou aux mécanismes redstone et envoyez n'importe quel wagonnet sur le rail. +Track for minecarts=Piste pour wagonnets +Speed up when powered, slow down when not powered=Accélérez lorsqu'il est alimenté, ralentissez lorsqu'il n'est pas alimenté +Activates minecarts when powered=Active les wagonnets lorsqu'il est alimenté +Emits redstone power when a minecart is detected=Émet de l'énergie redstone lorsqu'un wagonnet est détecté +Vehicle for fast travel on rails=Véhicule pour voyager rapidement sur rails +Can be ignited by tools or powered activator rail=Peut être allumé par des outils ou un rail d'activation motorisé diff --git a/mods/ENTITIES/mcl_mobs/locale/mcl_mobs.fr.tr b/mods/ENTITIES/mcl_mobs/locale/mcl_mobs.fr.tr new file mode 100644 index 00000000..96ac6a81 --- /dev/null +++ b/mods/ENTITIES/mcl_mobs/locale/mcl_mobs.fr.tr @@ -0,0 +1,11 @@ +# textdomain: mcl_mobs +Peaceful mode active! No monsters will spawn.=Mode paisible actif! Aucun monstre n'apparaîtra. +This allows you to place a single mob.=Cela vous permet de placer un seul mob. +Just place it where you want the mob to appear. Animals will spawn tamed, unless you hold down the sneak key while placing. If you place this on a mob spawner, you change the mob it spawns.=Placez-le là où vous voulez que le mob apparaisse. Les animaux apparaîtront apprivoisés, sauf si vous maintenez la touche furtive enfoncée pendant le placement. Si vous le placez sur un générateur de mob, vous changez le mob qu'il génère. +You need the “maphack” privilege to change the mob spawner.=Vous avez besoin du privilège "maphack" pour changer le générateur de mob. +Name Tag=Étiquette de nom +A name tag is an item to name a mob.=Une étiquette de nom est un élément pour nommer un mob. +Before you use the name tag, you need to set a name at an anvil. Then you can use the name tag to name a mob. This uses up the name tag.=Avant d'utiliser l'étiquette de nom, vous devez définir un nom sur une enclume. Ensuite, vous pouvez utiliser l'étiquette de nom pour nommer un mob. Cela utilise l'étiquette de nom. +Only peaceful mobs allowed!=Seuls les mobs pacifiques sont autorisées! +Give names to mobs=Donne des noms aux mobs +Set name at anvil=Définir le nom sur l'enclume diff --git a/mods/ENTITIES/mobs_mc/locale/mobs_mc.fr.tr b/mods/ENTITIES/mobs_mc/locale/mobs_mc.fr.tr new file mode 100644 index 00000000..ff1e2b9c --- /dev/null +++ b/mods/ENTITIES/mobs_mc/locale/mobs_mc.fr.tr @@ -0,0 +1,75 @@ +# textdomain: mobs_mc +Totem of Undying=Totem d'immortalité +A totem of undying is a rare artifact which may safe you from certain death.=Un totem d'immortalité est un artefact rare qui peut vous protéger d'une mort certaine. +The totem only works while you hold it in your hand. If you receive fatal damage, you are saved from death and you get a second chance with 1 HP. The totem is destroyed in the process, however.=Le totem ne fonctionne que lorsque vous le tenez dans votre main. Si vous recevez des dégâts mortels, vous êtes sauvé de la mort et vous obtenez une seconde chance avec 1 HP. Cependant, le totem est détruit. +Agent=Agent +Bat=Chauve-souris +Blaze=Blaze +Chicken=Poulet +Cow=Vache +Mooshroom=Champimeuh +Creeper=Creeper +Ender Dragon=Ender Dragon +Enderman=Enderman +Endermite=Endermite +Ghast=Ghast +Elder Guardian=Gardien de l'Elder +Guardian=Gardien +Horse=Cheval +Skeleton Horse=Cheval-squelette +Zombie Horse=Cheval-zombie +Donkey=Âne +Mule=Mule +Iron Golem=Golem de fer +Llama=Lama +Ocelot=Ocelot +Parrot=Perroquet +Pig=Cochon +Polar Bear=Ours blanc +Rabbit=Lapin +Killer Bunny=Lapin tueur +Sheep=Mouton +Shulker=Shulker +Silverfish=Poisson d'argent +Skeleton=Squelette +Stray=Vagabond +Wither Skeleton=Wither squelette +Magma Cube=Cube de magma +Slime=Slime +Snow Golem=Golem de neige +Spider=Araignée +Cave Spider=Araignée venimeuse +Squid=Poulpe +Vex=Vex +Evoker=Invocateur +Illusioner=Illusionniste +Villager=Villageois +Vindicator=Vindicateur +Zombie Villager=Zombie Villageois +Witch=Sorcière +Wither=Wither +Wolf=Loup +Husk=Zombie Momifié +Zombie=Zombie +Zombie Pigman=Zombie Cochon +Iron Horse Armor=Armure de cheval en fer +Iron horse armor can be worn by horses to increase their protection from harm a bit.=L'armure de cheval en fer peut être portée par les chevaux pour augmenter un peu leur protection contre les dommages. +Golden Horse Armor=Armure de cheval en or +Golden horse armor can be worn by horses to increase their protection from harm.=Une armure de cheval en or peut être portée par les chevaux pour augmenter leur protection contre les dommages. +Diamond Horse Armor=Armure de cheval en diamant +Diamond horse armor can be worn by horses to greatly increase their protection from harm.=Une armure de cheval en diament peut être portée par les chevaux pour augmenter fortement leur protection contre les dommages. +Place it on a horse to put on the horse armor. Donkeys and mules can't wear horse armor.=Placez-la sur un cheval pour mettre l'armure de cheval. Les ânes et les mules ne peuvent pas porter d'armure de cheval. +Farmer=Fermier +Fisherman=Pêcheur +Fletcher=Archer +Shepherd=Berger +Librarian=Bibliothécaire +Cartographer=Cartographe +Armorer=Armurier +Leatherworker=Tanneur +Butcher=Boucher +Weapon Smith=Fabriquant d'arme +Tool Smith=Fabriquant d'outil +Cleric=Clerc +Nitwit=Crétin +Protects you from death while wielding it=Vous protège de la mort en la maniant diff --git a/mods/ENVIRONMENT/lightning/locale/lightning.fr.tr b/mods/ENVIRONMENT/lightning/locale/lightning.fr.tr new file mode 100644 index 00000000..18c61d51 --- /dev/null +++ b/mods/ENVIRONMENT/lightning/locale/lightning.fr.tr @@ -0,0 +1,4 @@ +# textdomain: lightning +@1 was struck by lightning.=@1 a été frappé par la foudre. +Let lightning strike at the specified position or yourself=Laissez la foudre frapper à la position spécifiée ou sur vous-même +No position specified and unknown player=Aucune position spécifiée et joueur inconnu diff --git a/mods/ENVIRONMENT/mcl_void_damage/locale/mcl_void_damage.fr.tr b/mods/ENVIRONMENT/mcl_void_damage/locale/mcl_void_damage.fr.tr new file mode 100644 index 00000000..515d1c99 --- /dev/null +++ b/mods/ENVIRONMENT/mcl_void_damage/locale/mcl_void_damage.fr.tr @@ -0,0 +1,3 @@ +# textdomain: mcl_void_damage +The void is off-limits to you!=Le vide vous est interdit! +@1 fell into the endless void.=@1 est tombé dans le vide sans fin. diff --git a/mods/ENVIRONMENT/mcl_weather/locale/mcl_weather.fr.tr b/mods/ENVIRONMENT/mcl_weather/locale/mcl_weather.fr.tr new file mode 100644 index 00000000..6fd0b4b5 --- /dev/null +++ b/mods/ENVIRONMENT/mcl_weather/locale/mcl_weather.fr.tr @@ -0,0 +1,8 @@ +# textdomain: mcl_weather +Gives ability to control weather=Donne la capacité de contrôler la météo +Changes the weather to the specified parameter.=Modifie la météo au paramètre spécifié. +Error: No weather specified.=Erreur: Aucune météo spécifiée. +Error: Invalid parameters.=Erreur: Paramètres non valides. +Error: Duration can't be less than 1 second.=Erreur: La durée ne peut pas être inférieure à 1 seconde. +Error: Invalid weather specified. Use “clear”, “rain”, “snow” or “thunder”.=Erreur: Météo non valide spécifiée. Utilisez "clear" (clair), "rain" (pluie), "snow" (neige) ou "thunder" (tonnerre). +Toggles between clear weather and weather with downfall (randomly rain, thunderstorm or snow)=Bascule entre temps clair et temps avec chute (au hasard entre pluie, orage ou neige) diff --git a/mods/HELP/doc/doc_identifier/locale/doc_identifier.fr.tr b/mods/HELP/doc/doc_identifier/locale/doc_identifier.fr.tr new file mode 100644 index 00000000..2b1f3729 --- /dev/null +++ b/mods/HELP/doc/doc_identifier/locale/doc_identifier.fr.tr @@ -0,0 +1,18 @@ +# textdomain:doc_identifier +Error: This node, item or object is undefined. This is always an error.=Erreur: ce nœud, élément ou objet n'est pas défini. C'est toujours une erreur. +This can happen for the following reasons:=Cela peut se produire pour les raisons suivantes: +• The mod which is required for it is not enabled=• Le mod qui lui est nécessaire n'est pas activé +• The author of the game or a mod has made a mistake=• L'auteur du jeu ou d'un mod a fait une erreur +It appears to originate from the mod “@1”, which is enabled.=Cela semble provenir du mod “@1”, qui est activé. +It appears to originate from the mod “@1”, which is not enabled!=Cela semble provenir du mod “@1”, qui n'est pas activé!. +Its identifier is “@1”.=Son identifiant est “@1” +Lookup Tool=Outil de recherche +No help entry for this block could be found.=Aucune entrée d'aide pour ce bloc n'a pu être trouvée. +No help entry for this item could be found.=Aucune entrée d'aide pour cet élément n'a pu être trouvée. +No help entry for this object could be found.=Aucune entrée d'aide pour cet objet n'a pu être trouvée. +OK=OK +Punch any block, item or other thing about you wish to learn more about. This will open up the appropriate help entry. The tool comes in two modes which are changed by using. In liquid mode, this tool points to liquids as well while in solid mode this is not the case.=Frappez n'importe quel bloc, élément ou autre chose sur lequel vous souhaitez en savoir plus. Cela ouvrira l'entrée d'aide appropriée. L'outil est disponible en deux modes qui changent suivant l'usage. En mode liquide, cet outil pointe également sur les liquides tandis qu'en mode solide, ce n'est pas le cas. +This block cannot be identified because the world has not materialized at this point yet. Try again in a few seconds.=Ce bloc ne peut pas être identifié car le monde ne s'est pas encore matérialisé à ce stade. Réessayez dans quelques secondes. +This is a player.=Ceci est un joueur. +This useful little helper can be used to quickly learn more about about one's closer environment. It identifies and analyzes blocks, items and other things and it shows extensive information about the thing on which it is used.=Ce pratique petit assistant peut être utilisé pour en savoir plus rapidement sur son environnement proche. Il identifie et analyse les blocs, articles et autres choses et il affiche des informations détaillées sur la chose sur laquelle il est utilisé. +Show help for pointed thing=Affiche l'aide des choses pointées diff --git a/mods/HELP/doc/doc_items/locale/doc_items.fr.tr b/mods/HELP/doc/doc_items/locale/doc_items.fr.tr index 42d2771d..5d655404 100644 --- a/mods/HELP/doc/doc_items/locale/doc_items.fr.tr +++ b/mods/HELP/doc/doc_items/locale/doc_items.fr.tr @@ -140,3 +140,4 @@ Mining durability:=Durabilité de minage : • @1, level @2: Unlimited=• @1, niveau @2 : Illimité This block's rotation is affected by the way you place it: Place it on the floor or ceiling for a vertical orientation; place it at the side for a horizontal orientation. Sneaking while placing it leads to a perpendicular orientation instead.=La manière dont vous placez ce bloc affecte sa rotation : placez-le au sol ou au plafond pour une orientation verticale ; placez-le sur un coté pour une orientation horizontale. Pour le placer de manière perpendiculaire, utilisez la touche déplacement discrêt en le plaçant. Toughness level: @1=Niveau de robustesse : @1 +This block is slippery.=Ce bloc est glissant. diff --git a/mods/HELP/mcl_craftguide/locale/mcl_craftguide.fr.tr b/mods/HELP/mcl_craftguide/locale/mcl_craftguide.fr.tr index 59800119..56d150d9 100644 --- a/mods/HELP/mcl_craftguide/locale/mcl_craftguide.fr.tr +++ b/mods/HELP/mcl_craftguide/locale/mcl_craftguide.fr.tr @@ -1,25 +1,25 @@ # textdomain: mcl_craftguide -Any shulker box= -Any wool= -Any wood planks= -Any wood= -Any sand= -Any normal sandstone= -Any red sandstone= -Any carpet= -Any dye= -Any water bucket= -Any flower= -Any mushroom= -Any wooden slab= -Any wooden stairs= -Any coal= -Any kind of quartz block= -Any kind of purpur block= -Any stone bricks= -Any stick= -Any item belonging to the @1 group= -Any item belonging to the groups: @1= +Any shulker box=Toutes boîtes shulker +Any wool=Toutes laines +Any wood planks=Toutes planches de bois +Any wood=Tout bois +Any sand=Tout sable +Any normal sandstone=Tout grès normal +Any red sandstone=Tout grès rouge +Any carpet=Tout tapis +Any dye=Tout colorant +Any water bucket=Tout seau d'eau +Any flower=Toute fleur +Any mushroom=Tout Champignon +Any wooden slab=Toute dalle de bois +Any wooden stairs=Tout escalier de bois +Any coal=Tout charbon +Any kind of quartz block=Toute sorte de bloc de quartz +Any kind of purpur block=Toute sorte de bloc de purpur +Any stone bricks=Tout brique de pierre +Any stick=Tout bâton +Any item belonging to the @1 group=Tout élément appartenant au groupe @1 +Any item belonging to the groups: @1=Tout élément appartenant aux groupes: @1 Search=Rechercher Reset=Réinitialiser Previous page=Page précédente diff --git a/mods/HELP/mcl_doc/locale/mcl_doc.fr.tr b/mods/HELP/mcl_doc/locale/mcl_doc.fr.tr new file mode 100644 index 00000000..90e0c9b0 --- /dev/null +++ b/mods/HELP/mcl_doc/locale/mcl_doc.fr.tr @@ -0,0 +1,79 @@ +# textdomain: mcl_doc +Water can flow into this block and cause it to drop as an item.=L'eau peut s'écouler dans ce bloc et provoquer sa chute en tant qu'élément. +This block can be turned into dirt with a hoe.=Ce bloc peut être transformé en terre avec une houe. +This block can be turned into farmland with a hoe.=Ce bloc peut être transformé en terres agricoles avec une houe. +This block acts as a soil for all saplings.=Ce bloc agit comme un sol pour tous les pousses arbres. +This block acts as a soil for some saplings.=Ce bloc agit comme un sol pour certains pousses arbres. +Sugar canes will grow on this block.=Les cannes à sucre pousseront sur ce bloc. +Nether wart will grow on this block.=La verrue du Néant se développera sur ce bloc. +This block quickly decays when there is no wood block of any species within a distance of @1. When decaying, it disappears and may drop one of its regular drops. The block does not decay when the block has been placed by a player.=Ce bloc se désintègre rapidement lorsqu'il n'y a aucun bloc de bois de n'importe quel espèce à une distance de @1. En décomposition, il disparaît et peut lâcher un des ses objets habituels. Le bloc ne se désintègre pas lorsque le bloc a été placé par un joueur. +This block quickly decays and disappears when there is no wood block of any species within a distance of @1. The block does not decay when the block has been placed by a player.=Ce bloc se désintègre rapidement et disparaît lorsqu'il n'y a aucun bloc de bois de n'importe quel espèce à une distance de @1. Le bloc ne se désintègre pas lorsque le bloc a été placé par un joueur. +This plant can only grow on grass blocks and dirt. To survive, it needs to have an unobstructed view to the sky above or be exposed to a light level of 8 or higher.=Cette plante ne peut pousser que sur des blocs d'herbe et de terre. Pour survivre, il doit avoir une vue dégagée sur le ciel au-dessus ou être exposé à un niveau de lumière de 8 ou plus. +This plant can grow on grass blocks, podzol, dirt and coarse dirt. To survive, it needs to have an unobstructed view to the sky above or be exposed to a light level of 8 or higher.=Cette plante peut pousser sur des blocs d'herbe, du podzol, de la terre et de la terre grossière. Pour survivre, il doit avoir une vue dégagée sur le ciel au-dessus ou être exposé à un niveau de lumière de 8 ou plus. +This block is flammable.=Ce bloc est inflammable. +This block destroys any item it touches.=Ce bloc détruit tout élément qu'il touche. +To eat it, wield it, then rightclick.=Pour le manger, maniez-le, puis faites un clic droit. +You can eat this even when your hunger bar is full.=Vous pouvez le manger même lorsque votre barre de faim est pleine. +You cannot eat this when your hunger bar is full.=Vous ne pouvez pas manger cela lorsque votre barre de faim est pleine. +To drink it, wield it, then rightclick.=Pour le boire, maniez-le, puis faites un clic droit. +You cannot drink this when your hunger bar is full.=Vous ne pouvez pas boire cela lorsque votre barre de faim est pleine. +To consume it, wield it, then rightclick.=Pour le consommer, maniez-le, puis faites un clic droit. +You cannot consume this when your hunger bar is full.=Vous ne pouvez pas consommer cela lorsque votre barre de faim est pleine. +You have to wait for about 2 seconds before you can eat or drink again.=Vous devez attendre environ 2 secondes avant de pouvoir à nouveau manger ou boire. +Hunger points restored: @1=Points de faim restaurés: @1 +Saturation points restored: @1%.1f=Points de saturation restaurés: @1%.1f +This item can be repaired at an anvil with: @1.=Cet article peut être réparé sur une enclume avec: @1. +This item can be repaired at an anvil with any wooden planks.=Cet article peut être réparé sur une enclume avec n'importe quelle planche de bois. +This item can be repaired at an anvil with any item in the “@1” group.=Cet article peut être réparé sur une enclume avec n'importe quel article du groupe “@1”. +This item cannot be renamed at an anvil.=Cet objet ne peut pas être renommé sur une enclume. +This block crushes any block it falls into.=Ce bloc écrase tout bloc dans lequel il tombe. +When this block falls deeper than 1 block, it causes damage to any player it hits. The damage dealt is B×2−2 hit points with B @= number of blocks fallen. The damage can never be more than 40 HP.=Lorsque ce bloc tombe plus profondément que 1 bloc, il inflige des dégâts à tout joueur qu'il frappe. Les dégâts infligés sont B×2−2 points de vie avec B @= nombre de blocs tombés. Les dégâts ne peuvent jamais dépasser 40 PV. +Diamond Pickaxe=Pioche en Diamant +Iron Pickaxe=Pioche en Fer +Stone Pickaxe=Pioche en Pierre +Golden Pickaxe=Pioche en Or +Wooden Pickaxe=Pioche en Bois +Diamond Axe=Hache en Diamant +Iron Axe=Hache en Fer +Stone Axe=Hache en Pierre +Golden Axe=Hache en Or +Wooden Axe=Hache en Bois +Diamond Shovel=Pelle en Diamant +Iron Shovel=Pelle en Fer +Stone Shovel=Pelle en Pierre +Golden Shovel=Pelle en Or +Wooden Shovel=Pelle de Bois +This block can be mined by any tool instantly.=Ce bloc peut être miné par n'importe quel outil instantanément. +This block can be mined by:=Ce bloc peut être miné par: +Hardness: ∞=Dureté: ∞ +Hardness: @1=Dureté: @1 +This block will not be destroyed by TNT explosions.=Ce bloc ne sera pas détruit par les explosions de TNT. +This block drops itself when mined by shears.=Ce bloc se laisse tomber lorsqu'il est exploité par cisaille. +@1×@2=@1×@2 +This blocks drops the following when mined by shears: @1=Ce bloc laisse tomber les choses suivantes lorsqu'il est exploité par cisaille: +, =, +• Shears=• Cisailles +• Sword=• Epées +• Hand=• Mains +This is a melee weapon which deals damage by punching.=Il s'agit d'une arme de mêlée qui inflige des dégâts en frappant. +Maximum damage: @1 HP=Dégâts maximum: @1 +Full punch interval: @1 s=Interval de coup: @1 s +This tool is capable of mining.=Cet outil est capable d'exploiter. +Mining speed: @1=Vitesse de minage: @1 +Painfully slow=Péniblement lent +Very slow=Très lent +Slow=Lent +Fast=Rapide +Very fast=Très rapide +Extremely fast=Extrêmenent rapide +Instantaneous=Instantané +@1 uses=@1 utilisations +Unlimited uses=Utilisations illimitées +Block breaking strength: @1=Résistance de rupture de bloc: @1 +Mining durability: @1=Durabilité de minage: @1 +Armor points: @1=Point d'armure: @1 +Armor durability: @1=Durabilité de l'armure: @1 +It can be worn on the head.=Il peut être porté sur la tête. +It can be worn on the torso.=Il peut être porté au torse. +It can be worn on the legs.=Il peut être porté aux jambes. +It can be worn on the feet.=Il peut être porté aux pieds. diff --git a/mods/HELP/mcl_doc_basics/locale/mcl_doc_basics.fr.tr b/mods/HELP/mcl_doc_basics/locale/mcl_doc_basics.fr.tr new file mode 100644 index 00000000..d4b3c289 --- /dev/null +++ b/mods/HELP/mcl_doc_basics/locale/mcl_doc_basics.fr.tr @@ -0,0 +1,468 @@ +# textdomain: mcl_doc_basics +Basics=Les bases +Everything you need to know to get started with playing=Tout ce que vous devez savoir pour commencer à jouer +Advanced usage=Utilisation avancée +Advanced information which may be nice to know, but is not crucial to gameplay=Informations avancées qui peuvent être agréables à connaître, mais qui ne sont pas cruciales pour le gameplay +Quick start=Démarrage rapide +This is a very brief introduction to the basic gameplay:=Voici une très brève introduction au gameplay de base: +Basic controls:=Contrôles de base: +• Move mouse to look=• Déplacez la souris pour regarder +• [W], [A], [S] and [D] to move=• [W], [A], [S] and [D] to move +• [E] to sprint=• [E] pour sprinter +• [Space] to jump or move upwards=• [Espace] pour sauter ou se déplacer vers le haut +• [Shift] to sneak or move downwards=• [Shift] pour se faufiler ou se déplacer vers le bas +• Mouse wheel or [1]-[9] to select item=• Molette de la souris ou [1] - [9] pour sélectionner l'élément +• Left-click to mine blocks or attack=• Clic gauche pour miner des blocs ou attaquer +• Recover from swings to deal full damage=• Attendez les virages pour faire des dégâts complets +• Right-click to build blocks and use things=• Clic droit pour construire des blocs et utiliser des choses +• [I] for the inventory=• [I] pour l'inventaire +• Lowest row in inventory appears in hotbar below=• La ligne la plus basse de l'inventaire apparaît dans la barre d'outils ci-dessous +• [Esc] to close this window=• [Esc] pour fermer cette fenêtre +How to play:=Comment jouer: +• Punch a tree trunk until it breaks and collect wood=• Frappez un tronc d'arbre jusqu'à ce qu'il se brise et ramassez du bois +• Place the wood into the 2×2 grid (your “crafting grid”) in your inventory menu and craft 4 wood planks=• Placez le bois dans la grille 2×2 (votre "grille d'établi") dans votre menu d'inventaire et fabriquez 4 planches de bois +• Place them in a 2×2 shape in the crafting grid to craft a crafting table=• Placez-les dans une forme 2×2 dans la grille de fabrication pour créer un établi +• Place the crafting table on the ground=• Placez l'établi sur le sol +• Rightclick it for a 3×3 crafting grid=• Faites un clic droit dessus pour une grille de fabrication 3×3 +• Use the crafting guide (book icon) to learn all the possible crafting recipes=• Utilisez le guide d'artisanat (icône du livre) pour apprendre toutes les recettes de fabrication possibles +• Craft a wooden pickaxe so you can dig stone=• Fabriquez une pioche en bois pour creuser la pierre +• Different tools break different kinds of blocks. Try them out!=• Différents outils cassent différents types de blocs. Essayez-les! +• Read entries in this help to learn the rest=• Lisez les entrées de cette aide pour apprendre le reste +• Continue playing as you wish. There's no goal. Have fun!=• Continuez à jouer comme vous le souhaitez. Il n'y a aucun but. Amuser vous! +Minetest=Minetest +Minetest is a free software game engine for games based on voxel gameplay, inspired by InfiniMiner, Minecraft, and the like. Minetest was originally created by Perttu Ahola (alias “celeron55”).=Minetest est un moteur de jeu logiciel gratuit pour les jeux basés sur le gameplay voxel, inspiré d'InfiniMiner, Minecraft, etc. Minetest a été créé à l'origine par Perttu Ahola (alias «celeron55»). +The player is thrown into a huge world made out of cubes or blocks. These cubes usually make the landscape they blocks can be removed and placed almost entirely freely. Using the collected items, new tools and other items can be crafted. Games in Minetest can, however, be much more complex than this.=Le joueur est jeté dans un monde immense fait de cubes ou de blocs. Ces cubes font généralement le paysage qu'ils blocs peuvent être enlevés et placés presque entièrement librement. En utilisant les objets collectés, de nouveaux outils et autres objets peuvent être fabriqués. Les jeux dans Minetest peuvent cependant être beaucoup plus complexes que cela. +A core feature of Minetest is the built-in modding capability. Mods modify existing gameplay. They can be as simple as adding a few decorative blocks or be very complex by e.g. introducing completely new gameplay concepts, generating a completely different kind of world, and many other things.=Une caractéristique essentielle de Minetest est la capacité de modding intégrée. Les mods modifient le gameplay existant. Ils peuvent être aussi simples que l'ajout de quelques blocs décoratifs ou être très complexes par ex. introduisant des concepts de gameplay complètement nouveaux, générant un type de monde complètement différent, et bien d'autres choses. +Minetest can be played alone or online together with multiple players. Online play will work out of the box with any mods, with no need for additional software as they are entirely provided by the server.=Minetest peut être joué seul ou en ligne avec plusieurs joueurs. Le jeu en ligne fonctionnera immédiatement avec tous les mods, sans avoir besoin de logiciels supplémentaires car ils sont entièrement fournis par le serveur. +Minetest is usually bundled with a simple default game, named “Minetest Game” (shown in images 1 and 2). You probably already have it. Other games for Minetest can be downloaded from the official Minetest forums .=Minetest est généralement fourni avec un jeu par défaut simple, nommé «Minetest Game» (illustré dans les images 1 et 2). Vous l'avez probablement déjà. D'autres jeux pour Minetest peuvent être téléchargés à partir des forums officiels Minetest . +Minetest as well as Minetest Game are both unfinished at the moment, so please forgive us when not everything works out perfectly.=Minetest ainsi que Minetest Game sont tous deux inachevés pour le moment, alors veuillez nous pardonner quand tout ne fonctionne pas parfaitement. +Sneaking=Se faufiler +Sneaking makes you walk slower and prevents you from falling off the edge of a block.=Se faufiler vous fait marcher plus lentement et vous empêche de tomber du bord d'un bloc. +To sneak, hold down the sneak key (default: [Shift]). When you release it, you stop sneaking. Careful: When you release the sneak key at a ledge, you might fall!=Pour vous faufiler, maintenez enfoncée la touche furtive (par défaut: [Shift]). Lorsque vous le relâchez, vous arrêtez de vous faufiler. Attention: lorsque vous relâchez la touche furtive sur un rebord, vous risquez de tomber! +• Sneak: [Shift]=• Sneak: [Shift] +Sneaking only works when you stand on solid ground, are not in a liquid and don't climb.=Se faufiler ne fonctionne que lorsque vous vous tenez sur un sol solide, pas dans un liquide et ne grimpez pas. +If you jump while holding the sneak key, you also jump slightly higher than usual.=Si vous sautez tout en maintenant la touche furtive, vous sautez également légèrement plus haut que d'habitude. +Sneaking might be disabled by mods. In this case, you still walk slower by sneaking, but you will no longer be stopped at ledges.=Le faufilement peut être désactivé par les mods. Dans ce cas, vous marchez toujours plus lentement en vous faufilant, mais vous ne serez plus arrêté aux rebords. +Controls=Les contrôles +These are the default controls:=Ce sont les contrôles par défaut: +Basic movement:=Mouvement de base: +• Moving the mouse around: Look around=• Déplacer la souris: regardez autour +• W: Move forwards=• W: Avancer +• A: Move to the left=• A: Déplacer vers la gauche +• D: Move to the right=• D: Déplacer vers la droite +• S: Move backwards=• S: Reculer +• E: Sprint=• E: Courrir +While standing on solid ground:=En position debout sur un sol solide: +• Space: Jump=• Espace: Sauter +• Shift: Sneak=• Shift: Faufiler +While on a ladder, swimming in a liquid or fly mode is active=Sur une échelle, nager dans un liquide ou le mode voler est actif +• Space: Move up=• Espace: Monter +• Shift: Move down=• Shift: Descendre +Extended movement (requires privileges):=Déplacement étendu (nécessite des privilèges): +• J: Toggle fast mode, makes you run or fly fast (requires “fast” privilege)=• J: Basculer en mode rapide, vous permet de courir ou de voler rapidement (nécessite le privilège "fast") +• K: Toggle fly mode, makes you move freely in all directions (requires “fly” privilege)=• K: Basculer en mode vol, vous permet de vous déplacer librement dans toutes les directions (nécessite le privilège "fly") +• H: Toggle noclip mode, makes you go through walls in fly mode (requires “noclip” privilege)=• H: Bascule le mode noclip, vous fait passer à travers les murs en mode vol (nécessite le privilège "noclip") +• E: Move even faster when in fast mode=• E: Déplacez-vous encore plus rapidement en mode rapide +World interaction:=Interaction avec le monde: +• Left mouse button: Punch / mine blocks / take items=• Bouton gauche de la souris: Perforer / miner des blocs / prendre des objets +• Right mouse button: Build or use pointed block=• Bouton droit de la souris: Créer ou utiliser un bloc pointu +• Shift+Right mouse button: Build=• Shift+Bouton droit de la souris: Construire +• Roll mouse wheel: Select next/previous item in hotbar=• Molette de la souris: Sélectionnez l'élément suivant / précédent dans la barre active +• 1-9: Select item in hotbar directly=• 1-9: sélectionnez directement l'élément dans la barre de raccourci +• Q: Drop item stack=• Q: Déposer la pile d'objets +• Shift+Q: Drop 1 item=• Shift+Q: Déposer 1 élément +• I: Show/hide inventory menu=• I: Afficher/masquer le menu d'inventaire +Inventory interaction:=Interaction d'inventaire: +See the entry “Basics > Inventory”.=Voir l'entrée «Bases> Inventaire». +Camera:=Caméra: +• Z: Zoom (requires “zoom” privilege)=• Z: Zoom (nécessite le privilège “zoom”) +• F7: Toggle camera mode=• F7: Bascule le mode caméra +• F8: Toggle cinematic mode=• F8: Basculer le mode cinématique +Interface:=Interface: +• Esc: Open menu window (pauses in single-player mode) or close window=• Esc: Ouvrir la fenêtre du menu (fait une pause en mode solo) ou fermer la fenêtre +• F1: Show/hide HUD=• F1: Afficher/masquer le HUD +• F2: Show/hide chat=• F2: Afficher/masquer le chat +• F9: Toggle minimap (only works if have a map)=• F9: Basculer la mini-carte (ne fonctionne que si vous avez une carte) +• Shift+F9: Toggle minimap rotation mode=• Shift+F9: Bascule le mode de rotation de la mini-carte +• F10: Open/close console/chat log=• F10: Ouvrir/fermer la console/journal de chat +• F12: Take a screenshot=• F12: Prendre une capture d'écran +Server interaction:=Interaction avec le serveur: +• T: Open chat window (chat requires the “shout” privilege)=• T: ouvrir la fenêtre de discussion (la discussion nécessite le privilège "shout") +• /: Start issuing a server command)=• /: Lancer l'émission d'une commande serveur +Technical:=Technique: +• R: Toggle far view (disables all fog and allows viewing far away, can make game very slow)=• R: Basculer la vue éloignée (désactive tout le brouillard et permet une visualisation éloignée, peut rendre le jeu très lent) +• +: Increase minimal viewing distance=• +: Augmentez la distance de visionnement minimale +• -: Decrease minimal viewing distance=• -: Diminue la distance de visionnement minimale +• F3: Enable/disable fog=• F3: Activer/désactiver le brouillard +• F5: Enable/disable debug screen which also shows your coordinates=• F5: Activer / désactiver l'écran de débogage qui affiche également vos coordonnées +• F6: Only useful for developers. Enables/disables profiler=• F6: utile uniquement pour les développeurs. Active/désactive le profileur +• P: Only useful for developers. Writes current stack traces=• P: utile uniquement pour les développeurs. Écrit les traces de pile actuelles +Players=Joueurs +Players (actually: “player characters”) are the characters which users control.=Les joueurs (en fait: "personnages joueurs") sont les personnages que les utilisateurs contrôlent. +Players are living beings which occupy a space of about 1×2×1 cubes. They start with 20 health points (HP) and 10 breath points (BP).=Les joueurs sont des êtres vivants qui occupent un espace d'environ 1×2×1 cubes. Ils commencent avec 20 points de vie (VP) et 10 points de respiration (BP). +Players are capable of walking, sneaking, jumping, climbing, swimming, diving, mining, building, fighting and using tools and blocks.=Les joueurs sont capables de marcher, se faufiler, sauter, grimper, nager, plonger, exploiter, construire, se battre et utiliser des outils et des blocs. +At a health of 0, the player dies and loses all items in the inventory. The player can just respawn in the world.=À une santé de 0, le joueur meurt et perd tous les objets de l'inventaire. Le joueur peut simplement réapparaître dans le monde. +Some blocks reduce breath. While being with the head in a block which causes drowning, the breath points are reduced by 1 for every 2 seconds. When all breath is gone, the player starts to suffer drowning damage. Breath is quickly restored in any other block.=Certains blocs réduisent la respiration. Tout en étant avec la tête dans un bloc qui provoque la noyade, les points de respiration sont réduits de 1 toutes les 2 secondes. Quand tout le souffle est parti, le joueur commence à subir des dégâts de noyade. Le souffle est rapidement rétabli dans tout autre bloc. +Damage can be disabled on any world. Without damage, players are immortal and health and breath are unimportant.=Les dégâts peuvent être désactivés sur n'importe quel monde. Sans dégâts, les joueurs sont immortels et la santé et le souffle sont sans importance. +In multi-player mode, the name of other players is written above their head.=En mode multi-joueurs, le nom des autres joueurs est écrit au-dessus de leur tête. +Items=Objects +Items are things you can carry along and store in inventories. They can be used for crafting, smelting, building, mining, and more. Types of items include blocks, tools, weapons and items only used for crafting.=Les objets sont des choses que vous pouvez emporter et stocker dans des inventaires. Ils peuvent être utilisés pour l'artisanat, la fusion, la construction, l'exploitation minière, etc. Les types d'objets comprennent des blocs, des outils, des armes et des objets uniquement utilisés pour l'artisanat. +An item stack is a collection of items of the same type which fits into a single item slot. Item stacks can be dropped on the ground. Items which drop into the same coordinates will form an item stack.=Une pile d'objets est une collection d'objets du même type qui tient dans un seul emplacement d'objet. Les piles d'objets peuvent être déposées au sol. Les objets qui tombent dans les mêmes coordonnées formeront une pile d'objets. +Dropped item stacks will be collected automatically when you stand close to them.=Les piles d'objets déposés seront collectées automatiquement lorsque vous vous tenez près d'eux. +Tools=Outils +Some items may serve as a tool when wielded. Any item which has some special use which can be directly used by its wielder is considered a tool.=Certains articles peuvent servir d'outil lorsqu'ils sont utilisés. Tout objet ayant une utilité particulière pouvant être directement utilisé par son porteur est considéré comme un outil. +Mining tools are important to break all kinds of blocks. Weapons are another kind of tool. There are some other more specialized tools. Special actions of tools are usually done by right-click.=Les outils miniers sont importants pour briser toutes sortes de blocs. Les armes sont un autre type d'outil. Il existe d'autres outils plus spécialisés. Les actions spéciales des outils sont généralement effectuées par un clic droit. +When nothing is wielded, players use their hand which may act as tool and weapon. The hand is capable of punching and deals minimum damage.=Quand rien n'est manié, les joueurs utilisent leur main qui peut servir d'outil et d'arme. La main est capable de poinçonner et inflige un minimum de dégâts. +Many tools will wear off when using them and may eventually get destroyed. The damage is displayed in a damage bar below the tool icon. If no damage bar is shown, the tool is in mint condition. Tools may be repairable by crafting, see “Basics > Crafting”.=De nombreux outils s'usent lors de leur utilisation et peuvent éventuellement être détruits. Les dégâts sont affichés dans une barre de dégâts sous l'icône de l'outil. Si aucune barre de dommage n'est affichée, l'outil est en parfait état. Les outils peuvent être réparables par artisanat, voir «Bases> Artisanat». +Weapons=Armes +Some items are usable as a melee weapon when wielded. Weapons share most of the properties of tools.=Certains objets sont utilisables comme arme de mêlée lorsqu'ils sont utilisés. Les armes partagent la plupart des propriétés des outils. +Melee weapons deal damage by punching players and other animate objects. There are two ways to attack:=Les armes de mêlée infligent des dégâts en frappant les joueurs et d'autres objets animés. Il y a deux façons d'attaquer: +• Single punch: Left-click once to deal a single punch=• Coup de poing unique: Cliquez une fois avec le bouton gauche pour traiter un coup de poing +• Quick punching: Hold down the left mouse button to deal quick repeated punches=• Poinçonnage rapide: Maintenez le bouton gauche de la souris enfoncé pour effectuer des coups de poing répétés rapidement +There are two core attributes of melee weapons:=Il y a deux attributs principaux des armes de mêlée: +• Maximum damage: Damage which is dealt after a hit when the weapon was fully recovered)=• Dégâts maximum: Dégâts qui sont infligés après un coup lorsque l'arme a été complètement récupérée) +• Full punch interval: Time it takes for fully recovering from a punch=• Intervalle de poinçonnage complet: temps nécessaire pour récupérer complètement d'un poinçon +A weapon only deals full damage when it has fully recovered from a previous punch. Otherwise, the weapon will deal only reduced damage. This means, quick punching is very fast, but also deals rather low damage. Note the full punch interval does not limit how fast you can attack.=Une arme n'inflige des dégâts complets que lorsqu'elle a complètement récupéré d'un coup de poing précédent. Sinon, l'arme n'infligera que des dégâts réduits. Cela signifie que le poinçonnage rapide est très rapide, mais inflige également des dégâts plutôt faibles. Notez que l'intervalle de punch complet ne limite pas la vitesse à laquelle vous pouvez attaquer. +There is a rule which sometimes makes attacks impossible: Players, animate objects and weapons belong to damage groups. A weapon only deals damage to those who share at least one damage group with it. So if you're using the wrong weapon, you might not deal any damage at all.=Il existe une règle qui rend parfois les attaques impossibles: les joueurs, les objets animés et les armes appartiennent à des groupes de dégâts. Une arme inflige uniquement des dégâts à ceux qui partagent au moins un groupe de dégâts avec elle. Donc, si vous utilisez la mauvaise arme, vous pourriez ne pas infliger de dégâts du tout. +Pointing=Pointage +“Pointing” means looking at something in range with the crosshair. Pointing is needed for interaction, like mining, punching, using, etc. Pointable things include blocks, players, computer enemies and objects.="Pointage" signifie regarder quelque chose à portée avec le réticule. Le pointage est nécessaire pour l'interaction, comme l'extraction, le poinçonnage, l'utilisation, etc. +To point something, it must be in the pointing range (also just called “range”) of your wielded item. There's a default range when you are not wielding anything. A pointed thing will be outlined or highlighted (depending on your settings). Pointing is not possible with the 3rd person front camera.=Pour pointer quelque chose, il doit se trouver dans la plage de pointage (également appelée simplement "plage") de votre objet brandi. Il y a une plage par défaut lorsque vous ne maniez rien. Une chose pointue sera soulignée ou mise en évidence (en fonction de vos paramètres). Le pointage n'est pas possible avec la caméra frontale à la 3ème personne. +A few things can not be pointed. Most blocks are pointable. A few blocks, like air, can never be pointed. Other blocks, like liquids can only be pointed by special items.=Certaines choses ne peuvent pas être signalées. La plupart des blocs sont pointables. Quelques blocs, comme l'air, ne peuvent jamais être pointés. D'autres blocs, comme les liquides, ne peuvent être pointés que par des objets spéciaux. +Camera=Caméra +You can change the camera mode by pressing [F7].=Vous pouvez changer le mode de l'appareil photo en appuyant sur [F7]. +There is also Cinematic Mode which can be toggled with [F8]. With Cinematic Mode enabled, the camera movements become more smooth. Some players don't like it, it is a matter of taste.=Il y a aussi le mode cinématique qui peut être basculé avec [F8]. Lorsque le mode cinématique est activé, les mouvements de la caméra deviennent plus fluides. Certains joueurs ne l'aiment pas, c'est une question de goût. +By holding down [Z], you can zoom the view at your crosshair. You need the “zoom” privilege to do this.=En maintenant [Z] enfoncé, vous pouvez agrandir la vue sur votre réticule. Vous avez besoin du privilège "zoom" pour ce faire. +• Switch camera mode: [F7]=• Changer le mode de l'appareil photo: [F7] +• Toggle Cinematic Mode: [F8]=• Basculer le mode cinématique: [F8] +• Zoom: [Z]=• Zoom: [Z] +Blocks=Blocs +The world of MineClone 2 is made entirely out of blocks (voxels, to be precise). Blocks can be added or removed with the correct tools.=Le monde de MineClone 2 est entièrement constitué de blocs (voxels, pour être précis). Les blocs peuvent être ajoutés ou supprimés avec les bons outils. +Blocks can have a wide range of different properties which determine mining times, behavior, looks, shape, and much more. Their properties include:=Les blocs peuvent avoir un large éventail de propriétés différentes qui déterminent les temps d'exploration, le comportement, l'apparence, la forme et bien plus encore. Leurs propriétés comprennent: +• Collidable: Collidable blocks can not be passed through; players can walk on them. Non-collidable blocks can be passed through freely=• Collidable: les blocs collidables ne peuvent pas être traversés; les joueurs peuvent marcher dessus. Les blocs non collidables peuvent passer librement +• Pointable: Pointable blocks show a wireframe or a halo box when pointed. But you will just point through non-pointable blocks. Liquids are usually non-pointable but they can be pointed at by some special tools=• Pointable: les blocs pointables affichent un filaire ou une boîte de halo lorsqu'ils sont pointés. Mais vous pointerez simplement à travers des blocs non pointables. Les liquides sont généralement non pointables mais ils peuvent être pointés par certains outils spéciaux +• Mining properties: By which tools it can be mined, how fast and how much it wears off tools=• Propriétés minières: par quels outils il peut être extrait, à quelle vitesse et combien il s'use +• Climbable: While you are at a climbable block, you won't fall and you can move up and down with the jump and sneak keys=• Grimpable: Pendant que vous êtes sur un bloc grimpable, vous ne tomberez pas et vous pouvez vous déplacer de haut en bas avec les touches de saut et de furtivité +• Drowning damage: See the entry “Basics > Player”=• Dommages liés à la noyade: voir l'entrée "Bases> Joueur" +• Liquids: See the entry “Basics > Liquids”=• Liquides: voir l'entrée "Bases> Liquides" +• Group memberships: Group memberships are used to determine mining properties, crafting, interactions between blocks and more=• Appartenances aux groupes: les appartenances aux groupes sont utilisées pour déterminer les propriétés minières, l'artisanat, les interactions entre les blocs, etc. +Mining=Exploitation minière +Mining (or digging) is the process of breaking blocks to remove them. To mine a block, point it and hold down the left mouse button until it breaks.=L'exploitation minière (ou creuser) est le processus de rupture des blocs pour les retirer. Pour extraire un bloc, pointez-le et maintenez enfoncé le bouton gauche de la souris jusqu'à ce qu'il se casse. +Blocks require a mining tool to be mined. Different blocks are mined by different mining tools, and some blocks can not be mined by any tool. Blocks vary in hardness and tools vary in strength. Mining tools will wear off over time. The mining time and the tool wear depend on the block and the mining tool. The fastest way to find out how efficient your mining tools are is by just trying them out on various blocks. Any items you gather by mining will drop on the ground, ready to be collected.=Les blocs nécessitent un outil de minage pour être minés. Différents blocs sont extraits par différents outils d'exploration de données, et certains blocs ne peuvent être extraits par aucun outil. Les blocs varient en dureté et les outils varient en résistance. Les outils miniers s'useront avec le temps. Le temps d'extraction et l'usure de l'outil dépendent du bloc et de l'outil d'extraction. Le moyen le plus rapide de découvrir l'efficacité de vos outils d'exploration est simplement de les essayer sur différents blocs. Tous les objets que vous récupérez par extraction tomberont au sol, prêts à être récupérés. +After mining, a block may leave a “drop” behind. This is a number of items you get after mining. Most commonly, you will get the block itself. There are other possibilities for a drop which depends on the block type. The following drops are possible:=Après l'extraction, un bloc peut laisser une «goutte» derrière. Il s'agit d'un certain nombre d'objets que vous obtenez après l'extraction. Le plus souvent, vous obtiendrez le bloc lui-même. Il existe d'autres possibilités de suppression qui dépendent du type de bloc. Les baisses suivantes sont possibles: +• Always drops itself (the usual case)=• Se laisse toujours tomber (le cas habituel) +• Always drops the same items=• Dépose toujours les mêmes articles +• Drops items based on probability=• Supprime les éléments en fonction de la probabilité +• Drops nothing=• Ne laisse tomber rien +Building=Construire +Almost all blocks can be built (or placed). Building is very simple and has no delay.=Presque tous les blocs peuvent être construits (ou placés). La construction est très simple et n'a pas de retard. +To build your wielded block, point at a block in the world and right-click. If this is not possible because the pointed block has a special right-click action, hold down the sneak key before right-clicking.=Pour construire votre bloc brandi, pointez sur un bloc dans le monde et faites un clic droit. Si cela n'est pas possible car le bloc pointé a une action spéciale de clic droit, maintenez la touche furtive avant de cliquer avec le bouton droit. +Blocks can almost always be built at pointable blocks. One exception are blocks attached to the floor; these can only be built on the floor.=Les blocs peuvent presque toujours être construits sur des blocs pointables. Une exception est les blocs attachés au sol; ceux-ci ne peuvent être construits que sur le sol. +Normally, blocks are built in front of the pointed side of the pointed block. A few blocks are different: When you try to build at them, they are replaced.=Normalement, les blocs sont construits devant le côté pointu du bloc pointu. Quelques blocs sont différents: lorsque vous essayez de les construire, ils sont remplacés. +Liquids=Liquides +Liquids are special dynamic blocks. Liquids like to spread and flow to their surrounding blocks. Players can swim and drown in them.=Les liquides sont des blocs dynamiques spéciaux. Les liquides aiment se propager et s'écouler vers leurs blocs environnants. Les joueurs peuvent nager et se noyer en eux. +Liquids usually come in two forms: In source form (S) and in flowing form (F).=Les liquides se présentent généralement sous deux formes: sous forme source (S) et sous forme fluide (F). +Liquid sources have the shape of a full cube. A liquid source will generate flowing liquids around it from time to time, and, if the liquid is renewable, it also generates liquid sources. A liquid source can sustain itself. A long it is left alone, a liquid source will normally keep its place and does not drain out.=Les sources liquides ont la forme d'un cube plein. Une source de liquide génère de temps à autre des liquides qui coulent autour d'elle et, si le liquide est renouvelable, elle génère également des sources de liquide. Une source liquide peut se maintenir. Pendant longtemps, il est laissé seul, une source de liquide gardera normalement sa place et ne s'écoulera pas. +Flowing liquids take a sloped form. Flowing liquids spread around the world until they drain. A flowing liquid can not sustain itself and always comes from a liquid source, either directly or indirectly. Without a liquid source, a flowing liquid will eventually drain out and disappear.=Les liquides qui coulent prennent une forme inclinée. Les liquides qui coulent se répandent dans le monde jusqu'à ce qu'ils s'écoulent. Un liquide qui coule ne peut pas subvenir à ses besoins et provient toujours d'une source de liquide, directement ou indirectement. Sans source de liquide, un liquide qui s'écoule finira par s'écouler et disparaître. +All liquids share the following properties:=Tous les liquides partagent les propriétés suivantes: +• All properties of blocks (including drowning damage=• Toutes les propriétés des blocs (y compris les dégâts de noyade +• Renewability: Renewable liquids can create new sources=• Renouvelabilité: les liquides renouvelables peuvent créer de nouvelles sources +• Flowing range: How many flowing liquids are created at maximum per liquid source, it determines how far the liquid will spread. Possible are ranges from 0 to 8. At 0, no flowing liquids will be created. Image 5 shows a liquid of flowing range 2=• Plage d'écoulement: le nombre de liquides qui s'écoulent au maximum par source de liquide détermine la distance de propagation du liquide. Les plages possibles sont comprises entre 0 et 8. À 0, aucun liquide ne sera créé. L'image 5 montre un liquide de gamme fluide 2 +• Viscosity: How slow players move through it and how slow the liquid spreads=• Viscosité: la vitesse à laquelle les joueurs se déplacent et la vitesse de propagation du liquide +When those criteria are met, the open space is filled with a new liquid source of the same type (image 3).=Lorsque ces critères sont remplis, l'espace ouvert est rempli d'une nouvelle source de liquide du même type (image 3). +Swimming in a liquid is fairly straightforward: The usual direction keys for basic movement, the jump key for rising and the sneak key for sinking.=Nager dans un liquide est assez simple: les touches de direction habituelles pour les mouvements de base, la touche de saut pour la montée et la touche furtive pour le naufrage. +The physics for swimming and diving in a liquid are:=La physique pour nager et plonger dans un liquide est: +• The higher the viscosity, the slower you move=• Plus la viscosité est élevée, plus vous vous déplacez lentement +• If you rest, you'll slowly sink=• Si vous vous reposez, vous coulerez lentement +• There is no fall damage for falling into a liquid as such=• Il n'y a aucun dommage de chute pour tomber dans un liquide en tant que tel +• If you fall into a liquid, you will be slowed down on impact (but don't stop instantly). Your impact depth is determined by your speed and the liquid viscosity. For a safe high drop into a liquid, make sure there is enough liquid above the ground, otherwise you might hit the ground and take fall damage=• Si vous tombez dans un liquide, vous serez ralenti à l'impact (mais ne vous arrêtez pas instantanément). Votre profondeur d'impact est déterminée par votre vitesse et la viscosité du liquide. Pour une chute élevée et sûre dans un liquide, assurez-vous qu'il y a suffisamment de liquide au-dessus du sol, sinon vous pourriez toucher le sol et subir des dommages de chute +Liquids are often not pointable. But some special items are able to point all liquids.=Les liquides sont souvent inutiles. Mais certains objets spéciaux sont capables de pointer tous les liquides. +Crafting=Artisanat +Crafting is the task of combining several items to form a new item.=L'artisanat consiste à combiner plusieurs éléments pour former un nouvel élément. +To craft something, you need one or more items, a crafting grid (C) and a crafting recipe. A crafting grid is like a normal inventory which can also be used for crafting. Items need to be put in a certain pattern into the crafting grid. Next to the crafting grid is an output slot (O). Here the result will appear when you placed items correctly. This is just a preview, not the actual item. Crafting grids can come in different sizes which limits the possible recipes you can craft.=Pour fabriquer quelque chose, vous avez besoin d'un ou plusieurs objets, d'une grille de fabrication (C) et d'une recette de fabrication. Une grille d'artisanat est comme un inventaire normal qui peut également être utilisé pour l'artisanat. Les objets doivent être placés selon un certain modèle dans la grille de fabrication. À côté de la grille de fabrication se trouve un emplacement de sortie (O). Ici, le résultat apparaîtra lorsque vous aurez placé les objets correctement. Ceci n'est qu'un aperçu, pas l'élément réel. Les grilles de fabrication peuvent être de différentes tailles, ce qui limite les recettes possibles que vous pouvez créer. +To complete the craft, take the result item from the output slot, which will consume items from the crafting grid and creates a new item. It is not possible to place items into the output slot.=Pour terminer le métier, prenez l'objet résultant de l'emplacement de sortie, qui consommera des objets de la grille de fabrication et créera un nouvel objet. Il n'est pas possible de placer des éléments dans la fente de sortie. +A description on how to craft an item is called a “crafting recipe”. These crafting recipes can be found in the crafting guide which you can access from the inventory menu.=Une description sur la façon de fabriquer un objet est appelée "recette d'artisanat". Ces recettes d'artisanat peuvent être trouvées dans le guide d'artisanat auquel vous pouvez accéder à partir du menu d'inventaire. +Crafting recipes consist of at least one input item and exactly one stack of output items. When performing a single craft, it will consume exactly one item from each stack of the crafting grid, unless the crafting recipe defines replacements.=Les recettes d'artisanat consistent en au moins un élément d'entrée et exactement une pile d'éléments de sortie. Lors de l'exécution d'un seul métier, il consommera exactement un objet de chaque pile de la grille de fabrication, à moins que la recette de fabrication ne définisse des remplacements. +In some crafting recipes, some input items do not need to be a concrete item, instead they need to be a member of a group (see “Basics > Groups”). These recipes offer a bit more freedom in the input items. Images 6-8 show the same group-based recipe. Here, 8 items of the “stone” group are required, which is true for all of the shown items.=Dans certaines recettes d'artisanat, certains éléments d'entrée n'ont pas besoin d'être un élément concret, ils doivent plutôt être membres d'un groupe (voir "Bases> Groupes"). Ces recettes offrent un peu plus de liberté dans les éléments d'entrée. Les images 6-8 montrent la même recette de groupe. Ici, 8 éléments du groupe "pierre" sont requis, ce qui est vrai pour tous les éléments affichés. +Rarely, crafting recipes have replacements. This means, whenever you perform a craft, some items in the crafting grid will not be consumed, but instead will be replaced by another item.=Rarement, les recettes d'artisanat ont des remplacements. Cela signifie que chaque fois que vous effectuez un métier, certains objets de la grille de fabrication ne seront pas consommés, mais seront remplacés à la place par un autre objet. +Cooking=Cuisine +Cooking (or smelting) is a form of crafting which does not involve a crafting grid. Cooking is done with a furnace, an cookable item, a fuel item and time in order to yield a new item.=La cuisson (ou la fonte) est une forme d'artisanat qui n'implique pas de grille d'artisanat. La cuisson se fait avec un four, un élément pouvant être cuit, un élément combustible et du temps afin de produire un nouvel élément. +Each fuel item has a burning time. This is the time a single item of the fuel keeps a furnace burning.=Chaque élément combustible a une durée de combustion. C'est le moment où un seul élément du combustible continue de brûler un four. +Each cookable item requires time to be cooked. This time is specific to the item type and the item must be “on fire” for the whole cooking time to actually yield the result.=Chaque élément pouvant être cuit nécessite du temps pour être cuit. Cette durée est spécifique au type d'élément et l'élément doit être «en feu» pendant tout le temps de cuisson pour donner réellement le résultat. +Hotbar=Hotbar +At the bottom of the screen you see some squares. This is called the “hotbar”. The hotbar allows you to quickly access the lowest row of items in the player inventory.=Au bas de l'écran, vous voyez des carrés. C'est ce qu'on appelle la "hotbar". La barre d'accès vous permet d'accéder rapidement à la rangée d'objets la plus basse de l'inventaire du joueur. +You can change the selected item with the mouse wheel or the number keys.=Vous pouvez modifier l'élément sélectionné avec la molette de la souris ou les touches numériques. +• Select previous item in hotbar: [Mouse wheel up]=• Sélectionnez l'élément précédent dans la hotbar: [Molette de la souris vers le haut] +• Select next item in hotbar: [Mouse wheel down]=• Sélectionnez l'élément suivant dans la hotbar: [Molette de la souris vers le bas] +• Select item in hotbar directly: [0]-[9]=• Sélectionnez l'élément dans la hotbar directement: [0] - [9] +The selected item is also your wielded item.=L'élément sélectionné est également votre élément brandi. +Minimap=Mini-carte +If you have a map item in any of your hotbar slots, you can use the minimap.=Si vous avez un élément de carte dans l'un de vos emplacements de hotbar vous pouvez utiliser la minicarte. +Press [F9] to make a minimap appear on the top right. The minimap helps you to find your way around the world. Press it again to select different minimap modes and zoom levels. The minimap also shows the positions of other players.=Appuyez sur [F9] pour faire apparaître une mini-carte en haut à droite. La mini-carte vous aide à trouver votre chemin dans le monde. Appuyez à nouveau pour sélectionner différents modes de minicarte et niveaux de zoom. La mini-carte montre également les positions des autres joueurs. +There are 2 minimap modes and 3 zoom levels.=Il existe 2 modes de minicarte et 3 niveaux de zoom. +Surface mode (image 1) is a top-down view of the world, roughly resembling the colors of the blocks this world is made of. It only shows the topmost blocks, everything below is hidden, like a satellite photo. Surface mode is useful if you got lost.=Le mode surface (image 1) est une vue de haut en bas du monde, ressemblant à peu près aux couleurs des blocs dont ce monde est fait. Il ne montre que les blocs les plus hauts, tout ce qui suit est caché, comme une photo satellite. Le mode Surface est utile si vous vous êtes perdu. +Radar mode (image 2) is more complicated. It displays the “denseness” of the area around you and changes with your height. Roughly, the more green an area is, the less “dense” it is. Black areas have many blocks. Use the radar to find caverns, hidden areas, walls and more. The rectangular shapes in image 2 clearly expose the position of a dungeon. Radar mode is only available in Creative Mode=Le mode radar (image 2) est plus compliqué. Il affiche la «densité» de la zone autour de vous et change avec votre taille. En gros, plus une zone est verte, moins elle est «dense». Les zones noires ont de nombreux blocs. Utilisez le radar pour trouver des cavernes, des zones cachées, des murs et plus encore. Les formes rectangulaires de l'image 2 révèlent clairement la position d'un donjon. Le mode radar n'est disponible qu'en mode créatif +There are also two different rotation modes. In “square mode”, the rotation of the minimap is fixed. If you press [Shift]+[F9] to switch to “circle mode”, the minimap will instead rotate with your looking direction, so “up” is always your looking direction.=Il existe également deux modes de rotation différents. En "mode carré", la rotation de la minicarte est fixe. Si vous appuyez sur [Shift] + [F9] pour passer en "mode cercle", la minicarte tournera à la place avec votre direction de recherche, donc "haut" est toujours votre direction de recherche. +In other games, the minimap may be disabled.=Dans d'autres jeux, la minicarte peut être désactivée. +• Toggle minimap mode: [F9]=• Basculer le mode mini-carte: [F9] +• Toggle minimap rotation mode: [Shift]+[F9]=• Basculer le mode de rotation de la mini-carte: [Shift]+[F9] +Inventories are used to store item stacks. There are other uses, such as crafting. An inventory consists of a rectangular grid of item slots. Each item slot can either be empty or hold one item stack. Item stacks can be moved freely between most slots.=Les stocks sont utilisés pour stocker des piles d'articles. Il existe d'autres utilisations, telles que l'artisanat. Un inventaire se compose d'une grille rectangulaire d'emplacements d'objets. Chaque emplacement d'objet peut être vide ou contenir une pile d'objets. Les piles d'objets peuvent être déplacées librement entre la plupart des emplacements. +You have your own inventory which is called your “player inventory”, you can open it with the inventory key (default: [I]). The first inventory slots are also used as slots in your hotbar.=Vous avez votre propre inventaire qui s'appelle votre "inventaire de joueur", vous pouvez l'ouvrir avec la clé d'inventaire (par défaut: [I]). Les premiers emplacements d'inventaire sont également utilisés comme emplacements dans votre hotbar. +Blocks can also have their own inventory, e.g. chests and furnaces.=Les blocs peuvent également avoir leur propre inventaire, par exemple coffres et fours. +Inventory controls:=Contrôles d'inventaire: +Taking: You can take items from an occupied slot if the cursor holds nothing.=Prendre: vous pouvez prendre des objets dans un emplacement occupé si le curseur ne contient rien. +• Left click: take entire item stack=• Clic gauche: Prendre toute la pile d'objets +• Right click: take half from the item stack (rounded up)=• Clic droit: Prendre la moitié de la pile d'objets (arrondi vers le haut) +• Middle click: take 10 items from the item stack=• Clic du milieu: Prenez 10 objets de la pile d'objets +Putting: You can put items onto a slot if the cursor holds 1 or more items and the slot is either empty or contains an item stack of the same item type.=Placer: Vous pouvez placer des objets dans un emplacement si le curseur contient un ou plusieurs objets et que l'emplacement est vide ou contient une pile d'objets du même type d'objet. +• Left click: put entire item stack=• Clic gauche: Mettre toute la pile d'objets +• Right click: put 1 item of the item stack=• Clic droit: Mettre 1 élément de la pile d'objets +• Middle click: put 10 items of the item stack=• Clic du milieu: Mettez 10 objets dans la pile d'objets +Exchanging: You can exchange items if the cursor holds 1 or more items and the destination slot is occupied by a different item type.=Échange: vous pouvez échanger des objets si le curseur contient un ou plusieurs objets et que l'emplacement de destination est occupé par un type d'objet différent. +• Click: exchange item stacks=• Cliquez: Echangez les piles d'articles +Throwing away: If you hold an item stack and click with it somewhere outside the menu, the item stack gets thrown away into the environment.=Jeter: Si vous maintenez une pile d'objets et cliquez avec elle quelque part en dehors du menu, la pile d'objets est jetée dans l'environnement. +Quick transfer: You can quickly transfer an item stack to/from the player inventory to/from another item's inventory slot like a furnace, chest, or any other item with an inventory slot when that item's inventory is accessed. The target inventory is generally the most relevant inventory in this context.=Transfert rapide: vous pouvez rapidement transférer une pile d'objets vers / depuis l'inventaire du joueur vers / depuis l'emplacement d'inventaire d'un autre objet comme un four, un coffre ou tout autre élément avec un emplacement d'inventaire lorsque l'inventaire de cet article est accessible. L'inventaire cible est généralement l'inventaire le plus pertinent dans ce contexte. +• Sneak+Left click: Automatically transfer item stack=• Faufiler+clic gauche: transférer automatiquement la pile d'objets +Online help=Aide en ligne +You may want to check out these online resources related to MineClone 2.=Vous voudrez peut-être consulter ces ressources en ligne liées à MineClone 2. +MineClone 2 download and forum discussion: =Téléchargement de MineClone 2 et discussion sur le forum: +Here you find the most recent version of MineClone 2 and can discuss it.=Vous trouverez ici la version la plus récente de MineClone 2 et pouvez en discuter. +Bug tracker: =Suivi des bogues: +Report bugs here.=Signalez les bugs ici. +Minetest links:=Liens Minetest: +Official homepage of Minetest: =Page d'accueil officielle de Minetest: +The main place to find the most recent version of Minetest, the engine used by MineClone 2.=L'endroit principal pour trouver la version la plus récente de Minetest, le moteur utilisé par MineClone 2. +Community wiki: =Wiki de la communauté: +A community-based documentation website for Minetest. Anyone with an account can edit it.=Un site Web de documentation communautaire pour Minetest. N'importe qui avec un compte peut le modifier. +Minetest forums: =Forums de minetest: +A web-based discussion platform where you can discuss everything related to Minetest. This is also a place where player-made mods and games are published and discussed. The discussions are mainly in English, but there is also space for discussion in other languages.=Une plate-forme de discussion en ligne où vous pouvez discuter de tout ce qui concerne Minetest. C'est également un endroit où les mods et les jeux créés par les joueurs sont publiés et discutés. Les discussions se déroulent principalement en anglais, mais il existe également un espace de discussion dans d'autres langues. +Chat: =Chat: +A generic Internet Relay Chat channel for everything related to Minetest where people can meet to discuss in real-time. If you do not understand IRC, see the Community Wiki for help.=Un canal de discussion générique pour tout ce qui concerne le Minetest où les gens peuvent se rencontrer pour discuter en temps réel. Si vous ne comprenez pas IRC, consultez le wiki de la communauté pour obtenir de l'aide. +Groups=Groupes +Items, players and objects (animate and inanimate) can be members of any number of groups. Groups serve multiple purposes:=Les objets, les joueurs et les objets (animés et inanimés) peuvent être membres de plusieurs de groupes. Les groupes ont plusieurs objectifs: +• Crafting recipes: Slots in a crafting recipe may not require a specific item, but instead an item which is a member of a particular group, or multiple groups=• Recettes d'artisanat: Les emplacements d'une recette d'artisanat peuvent ne pas nécessiter un élément spécifique, mais plutôt un élément qui est membre d'un groupe particulier ou de plusieurs groupes. +• Digging times: Diggable blocks belong to groups which are used to determine digging times. Mining tools are capable of digging blocks belonging to certain groups=• Temps de creusement: Les blocs pouvant être creusés appartiennent à des groupes qui sont utilisés pour déterminer les temps de creusement. Les outils miniers sont capables de creuser des blocs appartenant à certains groupes +• Block behavior: Blocks may show a special behaviour and interact with other blocks when they belong to a particular group=• Comportement des blocs: Les blocs peuvent présenter un comportement spécial et interagir avec d'autres blocs lorsqu'ils appartiennent à un groupe particulier +• Damage and armor: Objects and players have armor groups, weapons have damage groups. These groups determine damage. See also: “Basics > Weapons”=• Dommages et armures: Les objets et les joueurs ont des groupes d'armures, les armes ont des groupes de dégâts. Ces groupes déterminent les dommages. Voir aussi: "Bases> Armes" +• Other uses=• Other uses +In the item help, many important groups are usually mentioned and explained.=Dans l'aide aux objets, de nombreux groupes importants sont généralement mentionnés et expliqués. +Glossary=Glossaire +This is a list of commonly used terms:=Voici une liste de termes couramment utilisés: +Controls:=Les contrôles: +• Wielding: Holding an item in hand=• Maniement: Tenir un objet en main +• Pointing: Looking with the crosshair at something in range=• Pointage: Regarder avec le réticule quelque chose à portée +• Dropping: Throwing an item or item stack to the ground=• Lâcher: Jeter un objet ou une pile d'objets au sol +• Punching: Attacking with left-click, is also used on blocks=• Frapper: Attaque avec clic gauche, est également utilisé sur les blocs +• Sneaking: Walking slowly while (usually) avoiding to fall over edges=• Se faufiler: Marcher lentement tout en évitant (généralement) de tomber sur les bords +• Climbing: Moving up or down a climbable block=• Escalade: Monter ou descendre un bloc grimpable +Blocks:=Blocs: +• Block: Cubes that the worlds are made of=• Bloc: Cubes dont les mondes sont faits +• Mining/digging: Using a mining tool to break a block=• Exploration/minage: Utilisation d'un outil d'exploration pour casser un bloc +• Building/placing: Putting a block somewhere=• Construction/Placement: Placer un bloc quelque part +• Drop: Items you get after mining a block=• Drop: Les objets que vous obtenez après avoir extrait un bloc +• Using a block: Right-clicking a block to access its special function=• Utilisation d'un bloc: Clic droit sur un bloc pour accéder à sa fonction spéciale +Items:=Objects: +• Item: A single thing that players can possess=• Objet: Une seule chose que les joueurs peuvent posséder +• Item stack: A collection of items of the same kind=• Pile d'objets: Une collection d'objets du même type +• Maximum stack size: Maximum amount of items in an item stack=• Taille maximale de la pile: Quantité maximale d'éléments dans une pile d'éléments +• Slot / inventory slot: Can hold one item stack=• Emplacement/Emplacement d'inventaire: Peut contenir une pile d'objets +• Inventory: Provides several inventory slots for storage=• Inventaire: Fournit plusieurs emplacements d'inventaire pour le stockage +• Player inventory: The main inventory of a player=• Inventaire des joueurs: L'inventaire principal d'un joueur +• Tool: An item which you can use to do special things with when wielding=• Outil: Un élément que vous pouvez utiliser pour faire des choses spéciales avec lors du soudage +• Range: How far away things can be to be pointed by an item=• Plage: A quelle distance les objets peuvent être pointés par un élément +• Mining tool: A tool which allows to break blocks=• Outil minier: Un outil qui permet de casser des blocs +• Craftitem: An item which is (primarily or only) used for crafting=• Composant: Un objet qui est (principalement ou uniquement) utilisé pour l'artisanat +Gameplay:=Gameplay: +• “heart”: A single health symbol, indicates 2 HP=• "coeur": Un seul symbole de santé, indique 2 PV +• “bubble”: A single breath symbol, indicates 1 BP=• «bulle»: Un symbole de respiration unique, indique 1 BP +• HP: Hit point (equals a half “heart”)=• VP: point de vie (équivaut à un demi-«coeur») +• BP: Breath point, indicates breath when diving=• BP: Point de respiration, indique la respiration lors de la plongée +• Mob: Computer-controlled enemy=• Mob: Ennemi contrôlé par ordinateur +• Crafting: Combining multiple items to create new ones=• Artisanat: Combiner plusieurs objets pour en créer de nouveaux +• Crafting guide: A helper which shows available crafting recipes=• Guide d'artisanat: Un assistant qui montre les recettes d'artisanat disponibles +• Spawning: Appearing in the world=• Reproduction: Apparaissant dans le monde +• Respawning: Appearing again in the world after death=• Réapparition: Réapparaître dans le monde après la mort +• Group: Puts similar things together, often affects gameplay=• Groupe: Rassemble des choses similaires, affecte souvent le gameplay +• noclip: Allows to fly through walls=• noclip: Permet de voler à travers les murs +Interface=Interface +• Hotbar: Inventory slots at the bottom=• Hotbar: Emplacements d'inventaire en bas +• Statbar: Indicator made out of half-symbols, used for health and breath=• Statbar: Indicateur composé de demi-symboles, utilisé pour la santé et la respiration +• Minimap: The map or radar at the top right=• Mini-carte: La carte ou le radar en haut à droite +• Crosshair: Seen in the middle, used to point at things=• Réticule: Vu au milieu, utilisé pour pointer les choses +Online multiplayer:=Multijoueur en ligne: +• PvP: Player vs Player. If active, players can deal damage to each other=• PvP: Joueur contre Joueur. S'ils sont actifs, les joueurs peuvent s'infliger mutuellement des dégâts +• Griefing: Destroying the buildings of other players against their will=• Deuil: Détruire les bâtiments des autres joueurs contre leur gré +• Protection: Mechanism to own areas of the world, which only allows the owners to modify blocks inside=• Protection: Mécanisme pour posséder des zones du monde, qui permet uniquement aux propriétaires de modifier les blocs à l'intérieur +Technical terms:=Termes techniques: +• Minetest: This game engine=• Minetest: Ce moteur de jeu +• MineClone 2: What you play right now=• MineClone 2: Ce que vous jouez en ce moment +• Minetest Game: A game for Minetest by the Minetest developers=• Minetest Game: Un jeu pour Minetest par les développeurs de Minetest +• Game: A complete playing experience to be used in Minetest; such as a game or sandbox or similar=• Jeu: Une expérience de jeu complète à utiliser dans Minetest; comme un jeu ou un bac à sable ou similaire +• Mod: A single subsystem which adds or modifies functionality; is the basic building block of games and can be used to further enhance or modify them=• Mod: un sous-système unique qui ajoute ou modifie des fonctionnalités; est le bloc de construction de base des jeux et peut être utilisé pour les améliorer ou les modifier davantage +• Privilege: Allows a player to do something=• Privilège: Permet à un joueur de faire quelque chose +• Node: Other word for “block”=• Noeud: Autre mot pour "bloc" +Settings=Réglages +There is a large variety of settings to configure Minetest. Pretty much every aspect can be changed that way.=Il existe une grande variété de paramètres pour configurer Minetest. Presque tous les aspects peuvent être modifiés de cette façon. +These are a few of the most important gameplay settings:=Voici quelques-uns des paramètres de jeu les plus importants: +• Damage enabled (enable_damage): Enables the health and breath attributes for all players. If disabled, players are immortal=• Dommage activé (enable_damage): active les attributs de santé et de souffle pour tous les joueurs. Si désactivé, les joueurs sont immortels +• Creative Mode (creative_mode): Enables sandbox-style gameplay focusing on creativity rather than a challenging gameplay. Changes include: Instant digging, easy access to almost all items, tools never wear off, etc.=• Mode créatif (creative_mode): Permet un gameplay de style sandbox en se concentrant sur la créativité plutôt que sur un gameplay difficile. Les modifications incluent: creusage instantané, accès facile à presque tous les articles, les outils ne s'usent jamais, etc. +• PvP (enable_pvp): Short for “Player vs Player”. If enabled, players can deal damage to each other=• PvP (enable_pvp): Abréviation de «Player vs Player». Si activé, les joueurs peuvent s'infliger mutuellement des dégâts +For a full list of all available settings, use the “Advanced settings” dialog in the main menu.=Pour une liste complète de tous les paramètres disponibles, utilisez la boîte de dialogue "Paramètres avancés" dans le menu principal. +Movement modes=Modes de mouvement +If you have the required privileges, you can use up to three special movement modes. Using these may be considered cheating.=Si vous disposez des privilèges requis, vous pouvez utiliser jusqu'à trois modes de mouvement spéciaux. Leur utilisation peut être considérée comme de la triche. +Fast mode:=Mode rapide: +• Description: Allows you to move much faster. Hold down the the “Use” key [E] to move faster. In the client configuration, you can further customize fast mode.=• Description: vous permet de vous déplacer beaucoup plus rapidement. Maintenez la touche "Utiliser" [E] enfoncée pour vous déplacer plus rapidement. Dans la configuration du client, vous pouvez personnaliser davantage le mode rapide. +• Default key: [J]=• Touche par défaut: [J] +• Required privilege: fast=• Privilège requis: fast +Fly mode:=Mode vol: +• Description: Gravity doesn't affect you and you can move freely in all directions. Use the jump key to rise and the sneak key to sink.=• Description: La gravité ne vous affecte pas et vous pouvez vous déplacer librement dans toutes les directions. Utilisez la touche de saut pour monter et la touche de sneak pour descendre. +• Default key: [K]=• Touche par défaut: [K] +• Required privilege: fly=• Privilège requis: fly +Noclip mode:=Mode Noclip: +• Description: Allows you to move through walls. Only works when fly mode is enabled, too.=• Description: vous permet de vous déplacer à travers les murs. Fonctionne uniquement lorsque le mode avion est également activé. +• Default key: [H]=• Touche par défaut: [H] +• Required privilege: noclip=• Privilège requis: noclip +Console=Console +With [F10] you can open and close the console. The main use of the console is to show the chat log and enter chat messages or server commands.=Avec [F10], vous pouvez ouvrir et fermer la console. L'utilisation principale de la console est d'afficher le journal de discussion et d'entrer des messages de discussion ou des commandes de serveur. +Using the chat or server command key also opens the console, but it is smaller and will be closed after you sent a message.=L'utilisation de la touche de commande chat ou serveur ouvre également la console, mais elle est plus petite et sera fermée après l'envoi d'un message. +Use the chat to communicate with other players. This requires you to have the “shout” privilege.=Utilisez le chat pour communiquer avec d'autres joueurs. Cela vous oblige à avoir le privilège "shout". +Just type in the message and hit [Enter]. Public chat messages can not begin with “/”.=Tapez simplement le message et appuyez sur [Entrée]. Les messages de discussion publique ne peuvent pas commencer par "/". +You can send private messages: Say “/msg ” in chat to send “” which can only be seen by .=Vous pouvez envoyer des messages privés: Dites "/msg " dans le chat pour envoyer "" qui ne peut être vu que par . +There are some special controls for the console:=Il existe des commandes spéciales pour la console: +• [F10] Open/close console=• [F10]: Ouvrir/fermer la console +• [Enter]: Send message or command=• [Entrée]: Envoyer un message ou une commande +• [Tab]: Try to auto-complete a partially-entered player name=• [Tab]: Essayez de compléter automatiquement un nom de joueur partiellement entré +• [Ctrl]+[Left]: Move cursor to the beginning of the previous word=• [Ctrl]+[Gauche]: Déplacer le curseur au début du mot précédent +• [Ctrl]+[Right]: Move cursor to the beginning of the next word=• [Ctrl]+[Droite]: Déplacez le curseur au début du mot suivant +• [Ctrl]+[Backspace]: Delete previous word=• [Ctrl]+[Retour arrière]: Supprimer le mot précédent +• [Ctrl]+[Delete]: Delete next word=• [Ctrl]+[Supprimer]: Supprimer le mot suivant +• [Ctrl]+[U]: Delete all text before the cursor=• [Ctrl]+[U]: Supprimer tout le texte avant le curseur +• [Ctrl]+[K]: Delete all text after the cursor=• [Ctrl]+[K]: Supprimer tout le texte après le curseur +• [Page up]: Scroll up=• [Page précédente]: Faites défiler vers le haut +• [Page down]: Scroll down=• [Page suivante]: Faites défiler vers le bas +There is also an input history. Minetest saves your previous console inputs which you can quickly access later:=Il existe également un historique des entrées. Minetest enregistre vos entrées de console précédentes auxquelles vous pouvez accéder rapidement plus tard: +• [Up]: Go to previous entry in history=• [Haut]: Aller à l'entrée précédente de l'historique +• [Down]: Go to next entry in history=• [Bas]: Passer à la prochaine entrée de l'historique +Server commands=Commandes serveur +Server commands (also called “chat commands”) are little helpers for advanced users. You don't need to use these commands when playing. But they might come in handy to perform some more technical tasks. Server commands work both in multi-player and single-player mode.=Les commandes serveur (également appelées "commandes de chat") sont de petites aides pour les utilisateurs avancés. Vous n'avez pas besoin d'utiliser ces commandes lors du jeu. Mais elles pourraient être utiles pour effectuer des tâches plus techniques. Les commandes du serveur fonctionnent à la fois en mode multi-joueurs et solo. +Server commands can be entered by players using the chat to perform a special server action. There are a few commands which can be issued by everyone, but some commands only work if you have certain privileges granted on the server. There is a small set of basic commands which are always available, other commands can be added by mods.=Les commandes du serveur peuvent être saisies par les joueurs utilisant le chat pour effectuer une action spéciale du serveur. Il y a quelques commandes qui peuvent être émises par tout le monde, mais certaines commandes ne fonctionnent que si vous avez certains privilèges accordés sur le serveur. Il y a un petit ensemble de commandes de base qui sont toujours disponibles, d'autres commandes peuvent être ajoutées par des mods. +To issue a command, simply type it like a chat message or press Minetest's command key (default: [/]). All commands have to begin with “/”, for example “/mods”. The Minetest command key does the same as the chat key, except that the slash is already entered.=Pour lancer une commande, tapez-la simplement comme un message de discussion ou appuyez sur la touche de commande de Minetest (par défaut: [/]). Toutes les commandes doivent commencer par "/", par exemple "/mods". La touche de commande Minetest fait la même chose que la touche de conversation, sauf que la barre oblique est déjà entrée. +Commands may or may not give a response in the chat log, but errors will generally be shown in the chat. Try it for yourselves: Close this window and type in the “/mods” command. This will give you the list of available mods on this server.=Les commandes peuvent ou non donner une réponse dans le journal de discussion, mais les erreurs seront généralement affichées dans la discussion. Essayez-le par vous-même: Fermez cette fenêtre et tapez la commande "/mods". Cela vous donnera la liste des mods disponibles sur ce serveur. +“/help all” is a very important command: You get a list of all available commands on the server, a short explanation and the allowed parameters. This command is also important because the available commands often differ per server.="/Help all" est une commande très importante: vous obtenez une liste de toutes les commandes disponibles sur le serveur, une brève explication et les paramètres autorisés. Cette commande est également importante car les commandes disponibles diffèrent souvent selon le serveur. +Commands are followed by zero or more parameters.=Les commandes sont suivies de zéro ou plusieurs paramètres. +In the command reference, you see some placeholders which you need to replace with an actual value. Here's an explanation:=Dans la référence de commande, vous voyez des espaces réservés que vous devez remplacer par une valeur réelle. Voici une explication: +• Text in greater-than and lower-than signs (e.g. “”): Placeholder for a parameter=• Texte en signes supérieur à et inférieur à (par exemple «»): Espace réservé pour un paramètre +• Anything in square brackets (e.g. “[text]”) is optional and can be omitted=• Tout ce qui est entre crochets (par exemple «[texte]») est facultatif et peut être omis +• Pipe or slash (e.g. “text1 | text2 | text3”): Alternation. One of multiple texts must be used (e.g. “text2”)=• Tuyau ou barre oblique (par exemple, «texte1 | texte2 | texte3»): Alternance. L'un des multiples textes doit être utilisé (par exemple, "texte2") +• Parenthesis: (e.g. “(word1 word2) | word3”): Groups multiple words together, used for alternations=• Parenthèses: (par exemple «(mot1 mot2) | mot3»): Regroupe plusieurs mots, utilisés pour les alternances +• Everything else is to be read as literal text=• Tout le reste doit être lu comme un texte littéral +Here are some examples to illustrate the command syntax:=Voici quelques exemples pour illustrer la syntaxe de commande: +• /mods: No parameters. Just enter “/mods”=• /mods: aucun paramètre. Entrez simplement "/mods" +• /me : 1 parameter. You have to enter “/me ” followed by any text, e.g. “/me orders pizza”=• /me : 1 paramètre. Vous devez saisir "/me" suivi de tout texte, par ex. "/me order pizza" +• /give : Two parameters. Example: “/give Player default:apple”=• /give : Deux paramètres. Exemple: "/give Player default:apple" +• /help [all|privs|]: Valid inputs are “/help”, “/help all”, “/help privs”, or “/help ” followed by a command name, like “/help time”=• /help [all | privs | ]: Les entrées valides sont "/help", "/help all", "/help privs" ou "/help" suivi d'un nom de commande, comme "/help time" +• /spawnentity [,,]: Valid inputs include “/spawnentity boats:boat” and “/spawnentity boats:boat 0,0,0”=• /spawnentity [,,]: Les entrées valides sont “/spawnentity boats:boat” et “/spawnentity boats:boat 0,0,0” +Some final remarks:=Quelques remarques finales: +• For /give and /giveme, you need an itemstring. This is an internally used unique item identifier which you may find in the item help if you have the “give” or “debug” privilege=• Pour /give et /giveme, vous avez besoin d'une chaîne d'objet. Il s'agit d'un identifiant d'élément unique utilisé en interne que vous pouvez trouver dans l'aide de l'élément si vous disposez du privilège "give" ou "debug". +• For /spawnentity you need an entity name, which is another identifier=• Pour /spawnentity, vous avez besoin d'un nom d'entité, qui est un autre identifiant +Privileges=Privilèges +Each player has a set of privileges, which differs from server to server. Your privileges determine what you can and can't do. Privileges can be granted and revoked from other players by any player who has the privilege called “privs”.=Chaque joueur dispose d'un ensemble de privilèges, qui diffèrent d'un serveur à l'autre. Vos privilèges déterminent ce que vous pouvez et ne pouvez pas faire. Les privilèges peuvent être accordés et révoqués aux autres joueurs par n'importe quel joueur qui a le privilège appelé "privs". +On a multiplayer server with the default configuration, new players start with the privileges called “interact” and “shout”. The “interact” privilege is required for the most basic gameplay actions such as building, mining, using, etc. The “shout” privilege allows to chat.=Sur un serveur multijoueur avec la configuration par défaut, les nouveaux joueurs commencent avec les privilèges appelés "interact" et "shout". Le privilège "interact" est requis pour les actions de jeu les plus élémentaires telles que la construction, l'extraction, l'utilisation, etc. Le privilège "shout" permet de discuter. +There is a small set of core privileges which you'll find on every server, other privileges might be added by mods.=Il existe un petit ensemble de privilèges de base que vous trouverez sur chaque serveur, d'autres privilèges peuvent être ajoutés par les mods. +To view your own privileges, issue the server command “/privs”.=Pour afficher vos propres privilèges, exécutez la commande serveur "/privs". +Here are a few basic privilege-related commands:=Voici quelques commandes de base liées aux privilèges: +• /privs: Lists your privileges=• /privs: Répertorie vos privilèges +• /privs : Lists the privileges of =• /privs : répertorie les privilèges de +• /help privs: Shows a list and description about all privileges=• /help privs: Affiche une liste et une description de tous les privilèges +Players with the “privs” privilege can modify privileges at will:=Les joueurs avec le privilège "privs" peuvent modifier les privilèges à volonté: +• /grant : Grant to =• /grant : Accordez à +• /revoke : Revoke from =• /revoke : révoquer de +In single-player mode, you can use “/grant singleplayer all” to unlock all abilities (which is often considered cheating).=En mode solo, vous pouvez utiliser “/grant singleplayer all” pour débloquer toutes les capacités (ce qui est souvent considéré comme de la triche). +Light=Lumière +As the world is entirely block-based, so is the light in the world. Each block has its own brightness. The brightness of a block is expressed in a “light level” which ranges from 0 (total darkness) to 15 (as bright as the sun).=Comme le monde est entièrement basé sur des blocs, la lumière du monde l'est également. Chaque bloc a sa propre luminosité. La luminosité d'un bloc s'exprime dans un "niveau de lumière" qui varie de 0 (obscurité totale) à 15 (aussi lumineux que le soleil). +There are two types of light: Sunlight and artificial light.=Il existe deux types de lumière: La lumière du soleil et la lumière artificielle. +Artificial light is emitted by luminous blocks. Artificial light has a light level from 1-14.=La lumière artificielle est émise par des blocs lumineux. La lumière artificielle a un niveau de lumière de 1 à 14. +Sunlight is the brightest light and always goes perfectly straight down from the sky at each time of the day. blocks. At night, the sunlight will become moonlight instead, which still provides a small amount of light. The light level of sunlight is 15.=La lumière du soleil est la lumière la plus brillante et descend toujours parfaitement directement du ciel à chaque heure de la journée. La nuit, la lumière du soleil deviendra le clair de lune à la place, qui fournit toujours une petite quantité de lumière. Le niveau de lumière solaire est de 15. +Blocks have 3 levels of transparency:=Les blocs ont 3 niveaux de transparence: +• Transparent: Sunlight goes through limitless, artificial light goes through with losses=• Transparent: La lumière du soleil passe sans limite, la lumière artificielle passe avec des pertes +• Semi-transparent: Sunlight and artificial light go through with losses=• Semi-transparent: La lumière du soleil et la lumière artificielle subissent des pertes +• Opaque: No light passes through=• Opaque: Aucune lumière ne passe +Artificial light will lose one level of brightness for each transparent or semi-transparent block it passes through, until only darkness remains (image 1).=La lumière artificielle perdra un niveau de luminosité pour chaque bloc transparent ou semi-transparent qu'elle traverse, jusqu'à ce qu'il ne reste que l'obscurité (image 1). +Sunlight will preserve its brightness as long it only passes fully transparent blocks. When it passes through a semi-transparent block, it turns to artificial light. Image 2 shows the difference.=La lumière du soleil conservera sa luminosité tant qu'elle ne passera que par des blocs entièrement transparents. Lorsqu'il passe à travers un bloc semi-transparent, il se transforme en lumière artificielle. L'image 2 montre la différence. +Note that “transparency” here only means that the block is able to carry brightness from its neighboring blocks. It is possible for a block to be transparent to light but you can't see trough the other side.=Notez que la "transparence" ici signifie uniquement que le bloc est capable de transporter la luminosité de ses blocs voisins. Il est possible qu'un bloc soit transparent à la lumière mais vous ne pouvez pas voir à travers l'autre côté. +Coordinates=Coordonnées +The world is a large cube. And because of this, a position in the world can be easily expressed with Cartesian coordinates. That is, for each position in the world, there are 3 values X, Y and Z.=Le monde est un grand cube. Et pour cette raison, une position dans le monde peut être facilement exprimée avec des coordonnées cartésiennes. Autrement dit, pour chaque position dans le monde, il existe 3 valeurs X, Y et Z. +Like this: (5, 45, -12)=Comme ceci: (5, 45, -12) +This refers to the position where X@=5, Y@=45 and Z@=-12. The 3 letters are called “axes”: Y is for the height. X and Z are for the horizontal position.=Cela fait référence à la position où X@=5, Y@=45 et Z@=-12. Les 3 lettres sont appelées "axes": Y est pour la hauteur. X et Z sont pour la position horizontale. +The values for X, Y and Z work like this:=Les valeurs pour X, Y et Z fonctionnent comme ceci: +• If you go up, Y increases=• Si vous montez, Y augmente +• If you go down, Y decreases=• Si vous descendez, Y diminue +• If you follow the sun, X increases=• Si vous suivez le soleil, X augmente +• If you go to the reverse direction, X decreases=• Si vous allez dans le sens inverse, X diminue +• Follow the sun, then go right: Z increases=• Suivez le soleil, puis allez à droite: Z augmente +• Follow the sun, then go left: Z decreases=• Suivez le soleil, puis allez à gauche: Z diminue +• The side length of a full cube is 1=• La longueur latérale d'un cube complet est de 1 +You can view your current position in the debug screen (open with [F5]). This is considered cheating in some games.=Vous pouvez afficher votre position actuelle dans l'écran de débogage (ouvrir avec [F5]). Ceci est considéré comme de la triche dans certains jeux. + +# MCL2 extensions +Creative Mode=Mode Creatif +Enabling Creative Mode in MineClone 2 applies the following changes:=L'activation du mode créatif dans MineClone 2 applique les modifications suivantes: +• You keep the things you've placed=• Vous gardez les choses que vous avez placées +• Creative inventory is available to obtain most items easily=• Un inventaire créatif est disponible pour obtenir facilement la plupart des objets +• Hand breaks all default blocks instantly=• La main brise instantanément tous les blocs par défaut +• Greatly increased hand pointing range=• Plage de pointage de la main considérablement augmentée +• Mined blocks don't drop items=• Les blocs extraits ne déposent pas d'objets +• Items don't get used up=• Les articles ne s'épuisent pas +• Tools don't wear off=• Les outils ne s'usent pas +• You can eat food whenever you want=• Vous pouvez manger de la nourriture quand vous le souhaitez +• You can always use the minimap (including radar mode)=• Vous pouvez toujours utiliser la minicarte (y compris le mode radar) +Damage is not affected by Creative Mode, it needs to be disabled separately.=Les dommages ne sont pas affectés par le mode créatif, ils doivent être désactivés séparément. +Mobs=Mobs +Mobs are the living beings in the world. This includes animals and monsters.=Les mobs sont les êtres vivants du monde. Cela inclut les animaux et les monstres. +Mobs appear randomly throughout the world. This is called “spawning”. Each mob kind appears on particular block types at a given light level. The height also plays a role. Peaceful mobs tend to spawn at daylight while hostile ones prefer darkness. Most mobs can spawn on any solid block but some mobs only spawn on particular blocks (like grass blocks).=Les mobs apparaissent de manière aléatoire à travers le monde. C'est ce qu'on appelle l'"apparition". Chaque type de mob apparaît sur des types de blocs particuliers à un niveau de lumière donné. La hauteur joue également un rôle. Les mobs pacifiques ont tendance à apparaître à la lumière du jour tandis que les hostiles préfèrent l'obscurité. La plupart des mobs peuvent apparaître sur n'importe quel bloc solide, mais certains n'apparaissent que sur des blocs particuliers (comme les blocs d'herbe). +Like players, mobs have hit points and sometimes armor points, too (which means you need better weapons to deal any damage at all). Also like players, hostile mobs can attack directly or at a distance. Mobs may drop random items after they die.=Comme les joueurs, les monstres ont aussi des points de vie et parfois des points d'armure (ce qui signifie que vous avez besoin de meilleures armes pour infliger des dégâts). Comme les joueurs, les monstres hostiles peuvent attaquer directement ou à distance. Les mobs peuvent déposer des objets aléatoires après leur mort. +Most animals roam the world aimlessly while most hostile mobs hunt players. Animals can be fed, tamed and bred.=La plupart des animaux parcourent le monde sans but tandis que la plupart des monstres hostiles chassent les joueurs. Les animaux peuvent être nourris, apprivoisés et élevés. +Animals=Animals +Animals are peaceful beings which roam the world aimlessly. You can feed, tame and breed them.=Les animaux sont des êtres pacifiques qui parcourent le monde sans but. Vous pouvez les nourrir, les apprivoiser et les élever. +Feeding:=Alimentation: +Each animal has its own taste for food and doesn't just accept any food. To feed, hold an item in your hand and rightclick the animal.=Chaque animal a son propre goût pour la nourriture et n'accepte pas n'importe quelle nourriture. Pour vous nourrir, tenez un objet dans votre main et faites un clic droit sur l'animal. +Animals are attraced to the food they like and follow you as long you hold the food item in hand.=Les animaux sont attirés par la nourriture qu'ils aiment et vous suivent aussi longtemps que vous tenez l'aliment en main. +Feeding an animal has three uses: Taming, healing and breeding.=Nourrir un animal a trois usages: Apprivoiser, guérir et se reproduire. +Feeding heals animals instantly, depending on the quality of the food item.=Nourrir les animaux guérit instantanément, selon la qualité de l'aliment. +Taming:=Apprivoisement: +A few animals can be tamed. You can generally do more things with tamed animals and use other items on them. For example, tame horses can be saddled and tame wolves fight on your side.=Quelques animaux peuvent être apprivoisés. Vous pouvez généralement faire plus de choses avec des animaux apprivoisés et utiliser d'autres objets dessus. Par exemple, les chevaux apprivoisés peuvent être sellés et les loups apprivoisés se battent à vos côtés. +Breeding:=Reproduction: +When you have fed an animal up to its maximum health, then feed it again, you will activate “Love Mode” and many hearts appear around the animal.=Lorsque vous avez nourri un animal à sa santé maximale, puis le nourrir à nouveau, vous activerez le "Mode Amour" et de nombreux coeurs apparaissent autour de l'animal. +Two animals of the same species will start to breed if they are in Love Mode and close to each other. Soon a baby animal will pop up.=Deux animaux de la même espèce commenceront à se reproduire s'ils sont en mode Amour et proches l'un de l'autre. Bientôt, un bébé animal apparaîtra. +Baby animals:=Bébés animaux: +Baby animals are just like their adult couterparts, but they can't be tamed or bred and don't drop anything when they die. They grow to adults after a short time. When fed, they grow to adults faster.=Les bébés animaux sont comme leurs homologues adultes, mais ils ne peuvent pas être apprivoisés ou élevés et ne laissent rien tomber lorsqu'ils meurent. Ils deviennent adultes après peu de temps. Une fois nourris, ils deviennent plus vite adultes. +Hunger=Faim +Hunger affects your health and your ability to sprint. Hunger is not in effect when damage is disabled.=La faim affecte votre santé et votre capacité à sprinter. La faim n'est pas active lorsque les dégâts sont désactivés. +Core hunger rules:=Règles fondamentales de la faim: +• You start with 20/20 hunger points (more points @= less hungry)=• Vous commencez avec 20/20 points de faim (plus de points @= moins faim) +• Actions like combat, jumping, sprinting, etc. decrease hunger points=• Des actions comme le combat, le saut, le sprint, etc. diminuent les points de faim +• Food restores hunger points=• La nourriture rétablit les points de faim +• If your hunger bar decreases, you're hungry=• Si votre barre de la faim diminue, vous avez faim +• At 18-20 hunger points, you regenerate 1 HP every 4 seconds=• À 18-20 points de faim, vous régénérez 1 PV toutes les 4 secondes +• At 6 hunger points or less, you can't sprint=• À 6 points de faim ou moins, vous ne pouvez pas sprinter +• At 0 hunger points, you lose 1 HP every 4 seconds (down to 1 HP)=• À 0 point de faim, vous perdez 1 PV toutes les 4 secondes (jusqu'à 1 PV) +• Poisonous food decreases your health=• La nourriture toxique diminue votre santé +Details:=Détails: +You have 0-20 hunger points, indicated by 20 drumstick half-icons above the hotbar. You also have an invisible attribute: Saturation.=Vous avez 0-20 points de faim, indiqués par 20 demi-icônes de pilon de Poulet au-dessus de la hotbar. Vous avez également un attribut invisible: La saturation. +Hunger points reflect how full you are while saturation points reflect how long it takes until you're hungry again.=Les points de faim reflètent à quel point vous êtes plein tandis que les points de saturation reflètent le temps qu'il vous faut avant d'avoir à nouveau faim. +Each food item increases both your hunger level as well your saturation.=Chaque aliment augmente à la fois votre niveau de faim et votre saturation. +Food with a high saturation boost has the advantage that it will take longer until you get hungry again.=Les aliments avec une augmentation de saturation élevée ont l'avantage de prendre plus de temps jusqu'à ce que vous ayez de nouveau faim. +A few food items might induce food poisoning by chance. When you're poisoned, the health and hunger symbols turn sickly green. Food poisoning drains your health by 1 HP per second, down to 1 HP. Food poisoning also drains your saturation. Food poisoning goes away after a while or when you drink milk.=Quelques denrées alimentaires peuvent provoquer une intoxication alimentaire par hasard. Lorsque vous êtes empoisonné, les symboles de santé et de faim virent au vert maladif. L'intoxication alimentaire draine votre santé de 1 PV par seconde, jusqu'à 1 PV. L'intoxication alimentaire draine également votre saturation. L'intoxication alimentaire disparaît après un certain temps ou lorsque vous buvez du lait. +You start with 5 saturation points. The maximum saturation is equal to your current hunger level. So with 20 hunger points your maximum saturation is 20. What this means is that food items which restore many saturation points are more effective the more hunger points you have. This is because at low hunger levels, a lot of the saturation boost will be lost due to the low saturation cap.=Vous commencez avec 5 points de saturation. La saturation maximale est égale à votre niveau de faim actuel. Ainsi, avec 20 points de faim, votre saturation maximale est de 20. Ce que cela signifie, c'est que les aliments qui rétablissent de nombreux points de saturation sont plus efficaces avec plus de points de faim. En effet, à de faibles niveaux de faim, une grande partie de l'augmentation de la saturation sera perdue en raison du plafond de saturation faible. +If your saturation reaches 0, you're hungry and start to lose hunger points. Whenever you see the hunger bar decrease, it is a good time to eat.=Si votre saturation atteint 0, vous avez faim et commencez à perdre des points de faim. Chaque fois que vous voyez la barre de la faim diminuer, c'est le bon moment pour manger. +Saturation decreases by doing things which exhaust you (highest exhaustion first):=La saturation diminue en faisant des choses qui vous épuisent (épuisement le plus élevé en premier): +• Regenerating 1 HP=• Régénérant 1 PV +• Suffering food poisoning=• Souffrance d'intoxication alimentaire +• Sprint-jumping=• Saut de sprint +• Sprinting=• Piquer un Sprint +• Attacking=• Combattre +• Taking damage=• Prendre des dégâts +• Swimming=• Nager +• Jumping=• Sauter +• Mining a block=• Miner un bloc +Other actions, like walking, do not exaust you.=D'autres actions, comme la marche, ne vous épuisent pas. +If you have a map item in any of your hotbar slots, you can use the minimap.=Si vous avez un élément de carte dans l'un de vos emplacements de la hotbar, vous pouvez utiliser la minicarte. diff --git a/mods/HELP/mcl_tt/locale/mcl_tt.fr.tr b/mods/HELP/mcl_tt/locale/mcl_tt.fr.tr new file mode 100644 index 00000000..e3a9ec0b --- /dev/null +++ b/mods/HELP/mcl_tt/locale/mcl_tt.fr.tr @@ -0,0 +1,17 @@ +# textdomain: mcl_tt +Head armor=Armure de tête +Torso armor=Armure de torse +Legs armor=Armure de jambes +Feet armor=Armure de pieds +Armor points: @1=Points d'armure: @1 +Armor durability: @1=Durabilité d'armure: @1 +Protection: @1%=Protection: @1% +Hunger points: +@1=Points de faim: +@1 +Saturation points: +@1=Points de saturation: +@1 +Deals damage when falling=Inflige des dégâts en tombant +Grows on grass blocks or dirt=Pousse sur des blocs d'herbe ou de terre +Grows on grass blocks, podzol, dirt or coarse dirt=Pousse sur les blocs de gazon, le podzol, la terre ou la terre grossière +Flammable=Inflammable +Zombie view range: -50%=Distance de vue de Zombie: -50% +Skeleton view range: -50%=Distance de vue de Squelette: -50% +Creeper view range: -50%=Distance de vue de Creeper: -50% diff --git a/mods/HELP/tt/locale/tt.fr.tr b/mods/HELP/tt/locale/tt.fr.tr new file mode 100644 index 00000000..70bc43ff --- /dev/null +++ b/mods/HELP/tt/locale/tt.fr.tr @@ -0,0 +1,31 @@ +# textdomain:tt +Damage: @1=Dégâts: @1 +Damage (@1): @2=Dégâts (@1): @2 +Healing: @1=Guérison: @1 +Healing (@1): @2=Guérison (@1): @2 +Full punch interval: @1s=Intervalle de coup: @1s +Contact damage: @1 per second=Dégâts de contact: @1 par seconde +Contact healing: @1 per second=Guérison de contact: @1 par seconde +Drowning damage: @1=Dégâts de noyade: @1 +Bouncy (@1%)=Rebondissant (@1%) +Luminance: @1=Luminance: @1 +Slippery=Glissant +Climbable=Grimpable +Climbable (only downwards)=Grimpable (uniquement vers le bas) +No jumping=Ne pas sauter +No swimming upwards=Ne pas nager vers le haut +No rising=Pas de montée +Fall damage: @1%=Dégâts de chute: @1% +Fall damage: +@1%=Dégâts de chute: +@1% +No fall damage=Pas de dégâts de chute +Mining speed: @1=Vitesse de minage: @1 +Very fast=Très rapide +Extremely fast=Extremement rapide +Fast=Rapide +Slow=Lent +Very slow=Très lent +Painfully slow=Péniblement lent +Mining durability: @1=Durabilité de minage: @1 +Block breaking strength: @1=Résistance à la rupture: @1 +@1 uses=@1 utilisations +Unlimited uses=Utilisations illimitées diff --git a/mods/HUD/awards/locale/awards.fr.tr b/mods/HUD/awards/locale/awards.fr.tr new file mode 100644 index 00000000..0c2925db --- /dev/null +++ b/mods/HUD/awards/locale/awards.fr.tr @@ -0,0 +1,61 @@ +# textdomain:awards +@1/@2 chat messages=@1/@2 chat messages +@1/@2 crafted=@1/@2 fabrication +@1/@2 deaths=@1/@2 Mort +@1/@2 dug=@1/@2 creusé +@1/@2 game joins=@1/@2 sessions +@1/@2 placed=@1/@2 mis +@1 (got)=@1 (obtenu) +@1: @1=@1: @1 +@1’s awards:=Récompenses de @1: +(Secret Award)=(Récompense Secrètte) += += +A Cat in a Pop-Tart?!=A Cat in a Pop-Tart?! +Achievement gotten!=Succès obtenue! +Achievement gotten:=Succès obtenue: +Achievement gotten: @1=Succès obtenue: @1 +Achievement not found.=Succès inconnu +All your awards and statistics have been cleared. You can now start again.=Toutes vos récompenses et statistiques ont été effacées. Vous pouvez maintenant recommencer. +Awards=Récompenses +Craft: @1×@2=Frabrication: @1×@2 +Craft: @1=Frabrication: @1 +Die @1 times.=Mort @1 fois. +Die.=Mort. +Get the achievements statistics for the given player or yourself=Obtenez les statistiques de succès pour le joueur donné ou vous-même +Join the game @1 times.=Rejoignez le jeu @1 fois. +Join the game.=Rejoignez le jeu. +List awards in chat (deprecated)=Liste des récompenses dans le chat (obsolète) +Place a block: @1=Placer un bloc: @1 +Place blocks: @1×@2=Placer des blocs: @1×@2 +Secret Achievement gotten!=Succès secret obtenu! +Secret Achievement gotten:=Succès secret obtenu: +Secret Achievement gotten: @1=Succès secret obtenu: @1 +Show details of an achievement=Afficher les détails d'un succès +Show, clear, disable or enable your achievements=Affichez, effacez, désactivez ou activez vos succès +Get this achievement to find out what it is.=Obtenez ce succès pour découvrir de quoi il s'agit. +Write @1 chat messages.=Écrivez @1 messages de chat. +Write something in chat.=Écrivez quelque chose dans le chat. +You have disabled your achievements.=Vous avez désactivé vos succès. +You have enabled your achievements.=Vous avez activé vos succès. +You have not gotten any awards.=Vous n'avez reçu aucun prix. +You've disabled awards. Type /awards enable to reenable.=Vous avez désactivé les récompenses. Type /awards enable pour les activer. +[c|clear|disable|enable]=[c|clear|disable|enable] +OK=OK +Error: No awards available.=Erreur: aucune récompense disponible. +Eat: @1×@2=Manger: @1×@2 +Eat: @1=Manger: @1 +@1/@2 eaten=@1/@2 mangé +Place @1 block(s).=Placer @1 bloc(s). +Dig @1 block(s).=Creuser @1 bloc(s). +Eat @1 item(s).=Manger @1 aliment(s). +Craft @1 item(s).=Fabriquer @1 objet(s). +Can give achievements to any player=Peut donner des succès à n'importe quel joueur +(grant ( | all)) | list=(grant ( | all)) | list +Give achievement to player or list all achievements=Donner un succès a un joueur ou répertorier toutes les succès +@1 (@2)=@1 (@2) +Invalid syntax.=Syntaxe invalide. +Invalid action.=Action invalide. +Player is not online.=Le joueur n'est pas en ligne. +Done.=Terminé. +Achievement “@1” does not exist.=La réalisation «@1» n'existe pas. diff --git a/mods/HUD/hudbars/locale/hudbars.fr.tr b/mods/HUD/hudbars/locale/hudbars.fr.tr new file mode 100644 index 00000000..b31b7b0c --- /dev/null +++ b/mods/HUD/hudbars/locale/hudbars.fr.tr @@ -0,0 +1,6 @@ +# textdomain: hudbars +Health=Santé +Breath=Breath + +# Default format string for progress bar-style HUD bars, e.g. “Health 5/20” +@1: @2/@3=@1: @2/@3 diff --git a/mods/HUD/mcl_achievements/locale/mcl_achievements.fr.tr b/mods/HUD/mcl_achievements/locale/mcl_achievements.fr.tr new file mode 100644 index 00000000..ca9cb6c0 --- /dev/null +++ b/mods/HUD/mcl_achievements/locale/mcl_achievements.fr.tr @@ -0,0 +1,49 @@ +# textdomain:mcl_achievements +Aquire Hardware=Acquérir du matériel +Bake Bread=Faire du pain +Benchmarking=Fabriquer +Cow Tipper=Chevaucher un vaches +Craft a bookshelf.=Fabriquez une Biblioyhèque. +Craft a cake using wheat, sugar, milk and an egg.=Fabriquez un gâteau avec du blé, du sucre, du lait et un œuf. +Craft a crafting table from 4 wooden planks.=Fabriquez un établi à partir de 4 planches de bois. +Craft a stone pickaxe using sticks and cobblestone.=Fabriquez une pioche en pierre à l'aide de bâtons et de pierre. +Craft a wooden sword using wooden planks and sticks on a crafting table.=Fabriquez une épée en bois à l'aide de planches et de bâtons en bois sur un établi. +DIAMONDS!=DIAMANTS! +Delicious Fish=Délicieux Poisson +Dispense With This=Dispenser de ça +Eat a cooked porkchop.=Mangez du porc cuit. +Eat a cooked rabbit.=Mangez du lapin cuit. +Get really desperate and eat rotten flesh.=Soyez vraiment désespéré et mangez de la chair pourrie. +Getting Wood=Obtenir du bois +Getting an Upgrade=Obtenir une augmentaton de niveau +Hit a skeleton, wither skeleton or stray by bow and arrow from a distance of at least 20 meters.=Frappez un squelette, wither squelette ou stray à l'arc et à la flèche à une distance d'au moins 20 mètres. +Hot Topic=Sujet brûlant +Into Fire=Dans le feu +Into the Nether=Dans le Nether +Iron Belly=Ventre de fer +Librarian=Bibliothécaire +Mine emerald ore.=Mine de minerai d'émeraude. +On A Rail=Sur un rail +Pick up a blaze rod from the floor.=Ramassez une tige de feu sur le sol. +Pick up a diamond from the floor.=Ramassez un diamant sur le sol. +Pick up a wood item from the ground.@nHint: Punch a tree trunk until it pops out as an item.=Ramassez un objet en bois du sol.@nConseil: Frappez un tronc d'arbre jusqu'à ce qu'il ressorte comme un objet. +Pick up leather from the floor.@nHint: Cows and some other animals have a chance to drop leather, when killed.=Ramassez le cuir du sol.@nConseil: les vaches et certains autres animaux ont une chance de laisser tomber le cuir lorsqu'ils sont tués. +Place a dispenser.=Placez un distributeur. +Place a flower pot.=Placez un pot de fleurs. +Pork Chop=Côtelette de porc +Pot Planter=Jardinière en pot +Rabbit Season=Saison du lapin +Sniper Duel=Duel de sniper +Take a cooked fish from a furnace.@nHint: Use a fishing rod to catch a fish and cook it in a furnace.=Prenez un poisson cuit d'un four.@nConseil: utilisez une canne à pêche pour attraper un poisson et faites-le cuire dans un four. +Take an iron ingot from a furnace's output slot.@nHint: To smelt an iron ingot, put a fuel (like coal) and iron ore into a furnace.=Prenez un lingot de fer dans la fente de sortie d'un four.@nConseil: pour faire fondre un lingot de fer, mettez du combustible (comme du charbon) et du minerai de fer dans un four. +The Haggler=Le marchand +The Lie=Le mensonge +Time to Farm!=C'est l'heure du fermier! +Time to Mine!=C'est l'heure de miner! +Time to Strike!=C'est l'heure de combattre! +Travel by minecart for at least 1000 meters from your starting point in a single ride.=Voyagez en wagonnet sur au moins 1000 mètres de votre point de départ en une seule fois. +Use 8 cobblestones to craft a furnace.=Utilise 8 pierres pour fabriquer un four. +Use a crafting table to craft a wooden hoe from wooden planks and sticks.=Utilisez un établi pour fabriquer une houe en bois à partir de planches et de bâtons en bois. +Use a crafting table to craft a wooden pickaxe from wooden planks and sticks.=Utilisez un établi pour fabriquer une pioche en bois à partir de planches et de bâtons en bois. +Use obsidian and a fire starter to construct a Nether portal.=Utilisez de l'obsidienne et un briquet pour construire un portail du Nether. +Use wheat to craft a bread.=Utilisez du blé pour fabriquer un pain. diff --git a/mods/HUD/mcl_death_messages/locale/mcl_death_messages.fr.tr b/mods/HUD/mcl_death_messages/locale/mcl_death_messages.fr.tr new file mode 100644 index 00000000..6d0a5115 --- /dev/null +++ b/mods/HUD/mcl_death_messages/locale/mcl_death_messages.fr.tr @@ -0,0 +1,58 @@ +# textdomain: mcl_death_messages +@1 was fatally hit by an arrow.=@1 a été mortellement touché par une flèche. +@1 has been killed with an arrow.=@1 a été tué avec une flèche. +@1 was shot by an arrow from @2.=@1 a été abattu par une flèche de @2. +@1 was shot by an arrow from a skeleton.=@1 a été abattu par une flèche d'un squelette. +@1 was shot by an arrow from a stray.=@1 a été abattu par une flèche d'un vagabond. +@1 was shot by an arrow from an illusioner.=@1 a été abattu par une flèche d'un illusionniste. +@1 was shot by an arrow.=@1 a été abattu par une flèche. +@1 forgot to breathe.=@1 a oublié de respirer. +@1 drowned.=@1 s'est noyé. +@1 ran out of oxygen.=@1 a manqué d'oxygène. +@1 was killed by @2.=@1 a été tué par @2. +@1 was killed.=@1 a été tué. +@1 was killed by a mob.=@1 a été tué par un mob. +@1 was burned to death by a blaze's fireball.=@1 a été brûlé vif par la boule de feu d'un blaze. +@1 was killed by a fireball from a blaze.=@1 a été tué par une boule de feu lors d'un blaze. +@1 was burned by a fire charge.=@1 a été brûlé par un incendie. +A ghast scared @1 to death.=Un ghast a éffrayé @1 à mort. +@1 has been fireballed by a ghast.=@1 a été pétrifié par un ghast. +@1 fell from a high cliff.=@1 est tombé d'une haute falaise. +@1 took fatal fall damage.=@1 a succombé à un chute mortelle. +@1 fell victim to gravity.=@1 a été victime de la gravité. +@1 died.=@1 est mort. +@1 was killed by a zombie.=@1 a été tué par un zombie. +@1 was killed by a baby zombie.=@1 a été tué par un bébé zombie. +@1 was killed by a blaze.=@1 a été tué par un blaze. +@1 was killed by a slime.=@1 a été tué par un slime. +@1 was killed by a witch.=@1 a été tué par un sorcier. +@1 was killed by a magma cube.=@1 a été tué par un cube de magma. +@1 was killed by a wolf.=@1 a été tué par un loup. +@1 was killed by a cat.=@1 a été tué par un chat. +@1 was killed by an ocelot.=@1 a été tué par un ocelot. +@1 was killed by an ender dragon.=@1 a été tué par un ender dragon. +@1 was killed by a wither.=@1 a été tué par un wither. +@1 was killed by an enderman.=@1 a été tué par un enderman. +@1 was killed by an endermite.=@1 a été tué par un endermite. +@1 was killed by a ghast.=@1 a été tué par un ghast. +@1 was killed by an elder guardian.=@1 a été tué par un grand gardien. +@1 was killed by a guardian.=@1 a été tué par un gardien. +@1 was killed by an iron golem.=@1 a été tué par un golem de fer. +@1 was killed by a polar_bear.=@1 a été tué par un ours blanc. +@1 was killed by a killer bunny.=@1 a été tué par un lapin tueur. +@1 was killed by a shulker.=@1 a été tué par un shulker. +@1 was killed by a silverfish.=@1 a été tué par un poisson d'argent. +@1 was killed by a skeleton.=@1 a été tué par un squelette. +@1 was killed by a stray.=@1 a été tué par un vagabond. +@1 was killed by a slime.=@1 a été tué par un slime. +@1 was killed by a spider.=@1 a été tué par une araignée. +@1 was killed by a cave spider.=@1 a été tué par une araignée venimeuse. +@1 was killed by a vex.=@1 a été tué par un vex. +@1 was killed by an evoker.=@1 a été tué par un invocateur. +@1 was killed by an illusioner.=@1 a été tué par un illusionniste. +@1 was killed by a vindicator.=@1 a été tué par un vindicateur. +@1 was killed by a zombie villager.=@1 a été tué par un villageois zombie. +@1 was killed by a husk.=@1 a été tué par un zombie momie. +@1 was killed by a baby husk.=@1 a été tué par un bébé zombie momie. +@1 was killed by a zombie pigman.=@1 a été tué par un zombie-couchon. +@1 was killed by a baby zombie pigman.=@1 a été tué par un bébé zombie-couchon diff --git a/mods/HUD/mcl_hbarmor/locale/hbarmor.fr.tr b/mods/HUD/mcl_hbarmor/locale/hbarmor.fr.tr new file mode 100644 index 00000000..c5addfa5 --- /dev/null +++ b/mods/HUD/mcl_hbarmor/locale/hbarmor.fr.tr @@ -0,0 +1,2 @@ +# textdomain:hbarmor +Armor=Armure diff --git a/mods/HUD/mcl_inventory/locale/mcl_inventory.fr.tr b/mods/HUD/mcl_inventory/locale/mcl_inventory.fr.tr new file mode 100644 index 00000000..cfc1810a --- /dev/null +++ b/mods/HUD/mcl_inventory/locale/mcl_inventory.fr.tr @@ -0,0 +1,20 @@ +# textdomain: mcl_inventory +Recipe book=Livre de recettes +Help=Aide +Select player skin=Sélectionnez l'apparance du joueur +Achievements=Accomplissements +Building Blocks=Blocs de Construction +Decoration Blocks=Blocs de Décoration +Redstone=Redstone +Transportation=Transport +Miscellaneous=Divers +Search Items=Rechercher des objets +Foodstuffs=Denrées alimentaires +Tools=Outils +Combat=Combat +Mobs=Mobs +Materials=Matériaux +Survival Inventory=Inventaire de survie +Crafting=Artisanat +Inventory=Inventaire +@1/@2=@1/@2 diff --git a/mods/ITEMS/REDSTONE/mcl_comparators/locale/mcl_comparators.fr.tr b/mods/ITEMS/REDSTONE/mcl_comparators/locale/mcl_comparators.fr.tr new file mode 100644 index 00000000..38a03d31 --- /dev/null +++ b/mods/ITEMS/REDSTONE/mcl_comparators/locale/mcl_comparators.fr.tr @@ -0,0 +1,12 @@ +# textdomain: mcl_comparators +Redstone comparators are multi-purpose redstone components.=Les comparateurs Redstone sont des composants Redstone polyvalents. +They can transmit a redstone signal, detect whether a block contains any items and compare multiple signals.=Ils peuvent transmettre un signal redstone, détecter si un bloc contient des éléments et comparer plusieurs signaux. +A redstone comparator has 1 main input, 2 side inputs and 1 output. The output is in arrow direction, the main input is in the opposite direction. The other 2 sides are the side inputs.=Un comparateur redstone a 1 entrée principale, 2 entrées latérales et 1 sortie. La sortie est dans le sens de la flèche, l'entrée principale est dans le sens opposé. Les 2 autres côtés sont les entrées latérales. +The main input can powered in 2 ways: First, it can be powered directly by redstone power like any other component. Second, it is powered if, and only if a container (like a chest) is placed in front of it and the container contains at least one item.=L'entrée principale peut être alimentée de 2 manières: Premièrement, elle peut être alimentée directement par une alimentation redstone comme n'importe quel autre composant. Deuxièmement, il est alimenté si et seulement si un conteneur (comme un coffre) est placé devant lui et que le conteneur contient au moins un article. +The side inputs are only powered by normal redstone power. The redstone comparator can operate in two modes: Transmission mode and subtraction mode. It starts in transmission mode and the mode can be changed by using the block.=Les entrées latérales sont uniquement alimentées par une alimentation Redstone normale. Le comparateur redstone peut fonctionner en deux modes: le mode de transmission et le mode de soustraction. Il démarre en mode transmission et le mode peut être changé en utilisant le bloc. +Transmission mode:@nThe front torch is unlit and lowered. The output is powered if, and only if the main input is powered. The two side inputs are ignored.=Mode de transmission: @nLa torche avant est éteinte et abaissée. La sortie est alimentée si et seulement si l'entrée principale est alimentée. Les deux entrées latérales sont ignorées. +Subtraction mode:@nThe front torch is lit. The output is powered if, and only if the main input is powered and none of the side inputs is powered.=Mode de soustraction: @nLa torche avant est allumée. La sortie est alimentée si et seulement si l'entrée principale est alimentée et qu'aucune des entrées latérales n'est alimentée. +Redstone Comparator=Comparateur Redstone +Redstone Comparator (Subtract)=Comparateur Redstone (Soustraction) +Redstone Comparator (Powered)=Comparateur Redstone (Alimenté) +Redstone Comparator (Subtract, Powered)=Comparateur Redstone (Soustraction, Alimenté) diff --git a/mods/ITEMS/REDSTONE/mcl_dispensers/locale/mcl_dispensers.fr.tr b/mods/ITEMS/REDSTONE/mcl_dispensers/locale/mcl_dispensers.fr.tr new file mode 100644 index 00000000..2390b14b --- /dev/null +++ b/mods/ITEMS/REDSTONE/mcl_dispensers/locale/mcl_dispensers.fr.tr @@ -0,0 +1,25 @@ +# textdomain: mcl_dispensers +Dispenser=Dispenser +A dispenser is a block which acts as a redstone component which, when powered with redstone power, dispenses an item. It has a container with 9 inventory slots.=Un distributeur est un bloc qui agit comme un composant redstone qui, lorsqu'il est alimenté avec une puissance redstone, distribue un article. Il a un conteneur avec 9 emplacements d'inventaire. +Place the dispenser in one of 6 possible directions. The “hole” is where items will fly out of the dispenser. Use the dispenser to access its inventory. Insert the items you wish to dispense. Supply the dispenser with redstone energy once to dispense a random item.=Placez le distributeur dans l'une des 6 directions possibles. Le "trou" est l'endroit où les articles sortiront du distributeur. Utilisez le distributeur pour accéder à son inventaire. Insérez les articles que vous souhaitez distribuer. Fournissez au distributeur de l'énergie de redstone une fois pour distribuer un objet aléatoire. +The dispenser will do different things, depending on the dispensed item:=Le distributeur fera différentes choses, selon l'article distribué: +• Arrows: Are launched=• Flèches: Sont lancées +• Eggs and snowballs: Are thrown=• Oeufs et boules de neige: Sont jetés +• Fire charges: Are fired in a straight line=• Feu d'artifice: Sont tirés en ligne droite +• Armor: Will be equipped to players and armor stands=• Armure: Sera équipée pour les joueurs et les porte-armures +• Boats: Are placed on water or are dropped=• Bateaux: Sont placés sur l'eau ou sont lâchés +• Minecart: Are placed on rails or are dropped=• Minecart: Sont placés sur des rails ou sont lâchés +• Bone meal: Is applied on the block it is facing=• Farine d'os: Est appliquée sur le bloc auquel elle fait face +• Empty buckets: Are used to collect a liquid source=• Seaux vides: Sont utilisés pour collecter une source de liquide +• Filled buckets: Are used to place a liquid source=• Seaux remplis: Sont utilisés pour placer une source de liquide +• Heads, pumpkins: Equipped to players and armor stands, or placed as a block=• Têtes, citrouilles: Seront équipées pour les joueurs et les armures, ou placées en bloc +• Shulker boxes: Are placed as a block=• Boîtes de Shulker: Sont placées comme un bloc +• TNT: Is placed and ignited=• TNT: Est placé et allumé +• Flint and steel: Is used to ignite a fire in air and to ignite TNT= +• Spawn eggs: Will summon the mob they contain=• Silex et acier: Sert à allumer un feu dans l'air et à allumer du TNT +• Other items: Are simply dropped=• Autres articles: Sont simplement lâchés +Downwards-Facing Dispenser=Distributeur orienté vers le bas +Upwards-Facing Dispenser=Distributeur orienté vers le haut +Inventory=Inventaire +9 inventory slots=9 emplacements d'inventaire +Launches item when powered by redstone power=Lance un objet lorsqu'il est alimenté par la puissance Redstone diff --git a/mods/ITEMS/REDSTONE/mcl_droppers/locale/mcl_droppers.fr.tr b/mods/ITEMS/REDSTONE/mcl_droppers/locale/mcl_droppers.fr.tr new file mode 100644 index 00000000..137400d3 --- /dev/null +++ b/mods/ITEMS/REDSTONE/mcl_droppers/locale/mcl_droppers.fr.tr @@ -0,0 +1,9 @@ +# textdomain: mcl_droppers +Dropper=Dropper +A dropper is a redstone component and a container with 9 inventory slots which, when supplied with redstone power, drops an item or puts it into a container in front of it.=Un dropper est un composant redstone et un conteneur avec 9 emplacements d'inventaire qui, lorsqu'ils sont alimentés en puissance redstone, déposent un objet ou le placent dans un conteneur en face de lui. +Droppers can be placed in 6 possible directions, items will be dropped out of the hole. Use the dropper to access its inventory. Supply it with redstone energy once to make the dropper drop or transfer a random item.=Les droppers peuvent être placés dans 6 directions possibles, les objets seront déposés hors du trou. Utilisez le dropper pour accéder à son inventaire. Fournissez-lui de l'énergie redstone pour faire tomber un élement ou transférer un élément aléatoire. +Downwards-Facing Dropper=Dropper orienté vers le bas +Upwards-Facing Dropper=Dropper orienté vers le haut +Inventory=Inventaire +9 inventory slots=9 emplacements d'inventaire +Drops item when powered by redstone power=Obtient un objet lorsqu'il est alimenté par la puissance Redstone diff --git a/mods/ITEMS/REDSTONE/mcl_observers/locale/mcl_observers.fr.tr b/mods/ITEMS/REDSTONE/mcl_observers/locale/mcl_observers.fr.tr new file mode 100644 index 00000000..3295335a --- /dev/null +++ b/mods/ITEMS/REDSTONE/mcl_observers/locale/mcl_observers.fr.tr @@ -0,0 +1,5 @@ +# textdomain: mcl_observers +Observer=Observateur +An observer is a redstone component which observes the block in front of it and sends a very short redstone pulse whenever this block changes.=Un observateur est un composant de redstone qui observe le bloc en face de lui et envoie une impulsion de redstone très courte chaque fois que ce bloc change. +Place the observer directly in front of the block you want to observe with the “face” looking at the block. The arrow points to the side of the output, which is at the opposite side of the “face”. You can place your redstone dust or any other component here.=Placez l'observateur directement devant le bloc que vous souhaitez observer avec le "visage" regardant le bloc. La flèche pointe vers le côté de la sortie, qui est du côté opposé du "visage". Vous pouvez placer votre poussière de redstone ou tout autre composant ici. +Emits redstone pulse when block in front changes=Émet une impulsion de redstone lorsque le bloc à l'avant change diff --git a/mods/ITEMS/REDSTONE/mesecons_button/locale/mesecons_button.fr.tr b/mods/ITEMS/REDSTONE/mesecons_button/locale/mesecons_button.fr.tr new file mode 100644 index 00000000..96f963b4 --- /dev/null +++ b/mods/ITEMS/REDSTONE/mesecons_button/locale/mesecons_button.fr.tr @@ -0,0 +1,14 @@ +# textdomain: mesecons_button +Use the button to push it.=Utilisez le bouton pour le pousser. +Stone Button=Bouton de pierre +A stone button is a redstone component made out of stone which can be pushed to provide redstone power. When pushed, it powers adjacent redstone components for 1 second.=Un bouton en pierre est un composant Redstone en pierre qui peut être poussé pour fournir de la puissance Redstone. Lorsqu'il est poussé, il alimente les composants Redstone adjacents pendant 1 seconde. +Oak Button=Bouton en Chêne +Acacia Button=Bouton en Acacia +Birch Button=Bouton en Bouleau +Dark Oak Button=Bouton en Chêne Noir +Spruce Button=Bouton en Sapin +Jungle Button=Bouton en Acajou +A wooden button is a redstone component made out of wood which can be pushed to provide redstone power. When pushed, it powers adjacent redstone components for 1.5 seconds. Wooden buttons may also be pushed by arrows.=Un bouton en bois est un composant de redstone en bois qui peut être poussé pour fournir une puissance de redstone. Lorsqu'il est poussé, il alimente les composants Redstone adjacents pendant 1,5 seconde. Les boutons en bois peuvent également être poussés par des flèches. +Provides redstone power when pushed=Fournit une puissance de redstone lorsqu'il est poussé +Push duration: @1s=Durée de poussée: @1s +Pushable by arrow=Poussable par une flèche diff --git a/mods/ITEMS/REDSTONE/mesecons_commandblock/locale/mesecons_commandblock.fr.tr b/mods/ITEMS/REDSTONE/mesecons_commandblock/locale/mesecons_commandblock.fr.tr new file mode 100644 index 00000000..739f6ece --- /dev/null +++ b/mods/ITEMS/REDSTONE/mesecons_commandblock/locale/mesecons_commandblock.fr.tr @@ -0,0 +1,29 @@ +# textdomain: mesecons_commandblock +Error: The command “@1” does not exist; your command block has not been changed. Use the “help” chat command for a list of available commands.=Erreur: la commande "@1" n'existe pas; votre bloc de commande n'a pas été modifié. Utilisez la commande de discussion "help" pour obtenir la liste des commandes disponibles. +Error: The command “@1” does not exist; your command block has not been changed. Use the “help” chat command for a list of available commands. Hint: Try to remove the leading slash.=Erreur: la commande "@1" n'existe pas; votre bloc de commande n'a pas été modifié. Utilisez la commande de discussion "help" pour obtenir la liste des commandes disponibles. Astuce: essayez de supprimer la barre oblique principale. +Error: You have insufficient privileges to use the command “@1” (missing privilege: @2)! The command block has not been changed.=Erreur: vous ne disposez pas de privilèges suffisants pour utiliser la commande "@1" (privilège manquant: @2)! Le bloc de commandes n'a pas été modifié. +Error: No commander! Block must be replaced.=Erreur: pas de commandant! Le bloc doit être remplacé. +Commander: @1=Commandant: @1 +Submit=Soumettre +No commands.=Aucune commande. +Commands:=Commandes: +Help=Aide +Placement denied. You need the “maphack” privilege to place command blocks.=Placement refusé. Vous avez besoin du privilège "maphack" pour placer des blocs de commande. +Command Block=Bloc de Commande +Command blocks are mighty redstone components which are able to alter reality itself. In other words, they cause the server to execute server commands when they are supplied with redstone power.=Les blocs de commande sont des composants redstone puissants qui sont capables de modifier la réalité elle-même. En d'autres termes, ils obligent le serveur à exécuter des commandes serveur lorsqu'ils sont alimentés en redstone. +Everyone can activate a command block and look at its commands, but not everyone can edit and place them.=Tout le monde peut activer un bloc de commandes et consulter ses commandes, mais tout le monde ne peut pas les modifier et les placer. +To view the commands in a command block, use it. To activate the command block, just supply it with redstone power. This will execute the commands once. To execute the commands again, turn the redstone power off and on again.=Pour afficher les commandes dans un bloc de commandes, utilisez-le. Pour activer le bloc de commande, il suffit de l'alimenter en redstone. Cela exécutera les commandes une fois. Pour exécuter à nouveau les commandes, éteignez puis rallumez le Redstone. +To be able to place a command block and change the commands, you need to be in Creative Mode and must have the “maphack” privilege. A new command block does not have any commands and does nothing. Use the command block (in Creative Mode!) to edit its commands. Read the help entry “Advanced topics > Server Commands” to understand how commands work. Each line contains a single command. You enter them like you would in the console, but without the leading slash. The commands will be executed from top to bottom.=Pour pouvoir placer un bloc de commande et modifier les commandes, vous devez être en mode créatif et avoir le privilège "maphack". Un nouveau bloc de commandes n'a aucune commande et ne fait rien. Utilisez le bloc de commande (en mode créatif!) Pour modifier ses commandes. Lisez l'entrée d'aide "Rubriques avancées> Commandes du serveur" pour comprendre le fonctionnement des commandes. Chaque ligne contient une seule commande. Vous les entrez comme vous le feriez dans la console, mais sans la barre oblique principale. Les commandes seront exécutées de haut en bas. +All commands will be executed on behalf of the player who placed the command block, as if the player typed in the commands. This player is said to be the “commander” of the block.=Toutes les commandes seront exécutées au nom du joueur qui a placé le bloc de commande, comme si le joueur avait tapé les commandes. Ce joueur est appelé le "commandant" du bloc. +Command blocks support placeholders, insert one of these placeholders and they will be replaced by some other text:=Les blocs de commande prennent en charge les espaces réservés, insérez l'un de ces espaces réservés et ils seront remplacés par un autre texte: +• “@@c”: commander of this command block=• “@@c”: commandant de ce bloc que commande +• “@@n” or “@@p”: nearest player from the command block=• “@@n” or “@@p”: joueur le plus proche du bloc de commande +• “@@f” farthest player from the command block=• “@@f” : joueur le plus éloigné du bloc de commande +• “@@r”: random player currently in the world=• “@@r”: joueur aléatoire actuellement dans le monde +• “@@@@”: literal “@@” sign= • “@@@@”: literalement le symbole “@@” +Example 1:@n time 12000@nSets the game clock to 12:00=Exemple 1:@n time 12000@nRègle l'horloge du jeu sur 12:00 +Example 2:@n give @@n mcl_core:apple 5@nGives the nearest player 5 apples=Exemple 2:@n give @@n mcl_core:apple 5@nDonne au joueur le plus proche 5 pommes +Access denied. You need the “maphack” privilege to edit command blocks.=Accès refusé. Vous avez besoin du privilège "maphack" pour modifier les blocs de commande. +Editing the command block has failed! You can only change the command block in Creative Mode!=La modification du bloc de commandes a échoué! Vous ne pouvez modifier le bloc de commandes qu'en mode créatif! +Editing the command block has failed! The command block is gone.=La modification du bloc de commandes a échoué! Le bloc de commande a disparu. +Executes server commands when powered by redstone power=Exécute les commandes du serveur lorsqu'il est alimenté par l'alimentation Redstone diff --git a/mods/ITEMS/REDSTONE/mesecons_delayer/locale/mesecons_delayer.fr.tr b/mods/ITEMS/REDSTONE/mesecons_delayer/locale/mesecons_delayer.fr.tr new file mode 100644 index 00000000..e2831716 --- /dev/null +++ b/mods/ITEMS/REDSTONE/mesecons_delayer/locale/mesecons_delayer.fr.tr @@ -0,0 +1,13 @@ +# textdomain: mesecons_delayer +Redstone repeaters are versatile redstone components with multiple purposes: 1. They only allow signals to travel in one direction. 2. They delay the signal. 3. Optionally, they can lock their output in one state.=Les répéteurs Redstone sont des composants Redstone polyvalents à usages multiples: 1. Ils ne permettent aux signaux de voyager que dans une seule direction. 2. Ils retardent le signal. 3. En option, ils peuvent verrouiller leur sortie dans un état. +To power a redstone repeater, send a signal in “arrow” direction (the input). The signal goes out on the opposite side (the output) with a delay. To change the delay, use the redstone repeater. The delay is between 0.1 and 0.4 seconds long and can be changed in steps of 0.1 seconds. It is indicated by the position of the moving redstone torch.=Pour alimenter un répéteur redstone, envoyez un signal dans le sens de la «flèche» (l'entrée). Le signal s'éteint du côté opposé (la sortie) avec un retard. Pour modifier le délai, utilisez le répéteur redstone. Le délai est compris entre 0,1 et 0,4 seconde et peut être modifié par incréments de 0,1 seconde. Elle est indiquée par la position de la torche en pierre rouge en mouvement. +To lock a repeater, send a signal from an adjacent repeater into one of its sides. While locked, the moving redstone torch disappears, the output doesn't change and the input signal is ignored.=Pour verrouiller un répéteur, envoyez un signal d'un répéteur adjacent à l'un de ses côtés. Lorsqu'elle est verrouillée, la torche Redstone en mouvement disparaît, la sortie ne change pas et le signal d'entrée est ignoré. +Redstone Repeater=Répéteur Redstone +Redstone Repeater (Powered)=Répéteur Redstone (Alimenté) +Redstone Repeater (Locked)=Répéteur Redstone (Bloqué) +Redstone Repeater (Locked, Powered)=Répéteur Redstone (Bloqué, Alimenté) +Redstone Repeater (Delay @1)=Répéteur Redstone (Délai @1) +Redstone Repeater (Delay @1, Powered)=Répéteur Redstone (Délai @1, Alimenté) +Transmits redstone power only in one direction=Transmet la puissance de redstone seulement dans une direction +Delays signal=Retard du signal +Output locks when getting active redstone repeater signal from the side=La sortie se verrouille lorsque le signal du répéteur Redstone est actif sur le côté diff --git a/mods/ITEMS/REDSTONE/mesecons_lightstone/locale/mesecons_lightstone.fr.tr b/mods/ITEMS/REDSTONE/mesecons_lightstone/locale/mesecons_lightstone.fr.tr new file mode 100644 index 00000000..16601ace --- /dev/null +++ b/mods/ITEMS/REDSTONE/mesecons_lightstone/locale/mesecons_lightstone.fr.tr @@ -0,0 +1,4 @@ +# textdomain: mesecons_lightstone +Redstone Lamp=Lampe Redstone +Redstone lamps are simple redstone components which glow brightly (light level @1) when they receive redstone power.=Les lampes Redstone sont de simples composants Redstone qui brillent (niveau de lumière @1) lorsqu'elles reçoivent une puissance Redstone. +Glows when powered by redstone power=Brille lorsqu'il est alimenté par la puissance Redstone diff --git a/mods/ITEMS/REDSTONE/mesecons_noteblock/locale/mesecons_noteblock.fr.tr b/mods/ITEMS/REDSTONE/mesecons_noteblock/locale/mesecons_noteblock.fr.tr new file mode 100644 index 00000000..94554912 --- /dev/null +++ b/mods/ITEMS/REDSTONE/mesecons_noteblock/locale/mesecons_noteblock.fr.tr @@ -0,0 +1,22 @@ +# textdomain: mesecons_noteblock +Note Block=Bloc de notes +A note block is a musical block which plays one of many musical notes and different intruments when it is punched or supplied with redstone power.=Un bloc de notes est un bloc musical qui joue l'une des nombreuses notes de musique et différents instruments lorsqu'il est frappé ou alimenté en redstone. +Use the note block to choose the next musical note (there are 25 semitones, or 2 octaves). The intrument played depends on the material of the block below the note block:=Utilisez le bloc de notes pour choisir la prochaine note de musique (il y a 25 demi-tons ou 2 octaves). L'instrument joué dépend du matériau du bloc situé sous le bloc de notes: +• Glass: Sticks=• Glass: Sticks +• Wood: Bass guitar=• Bois: Guitare Basse +• Stone: Bass drum=• Pierre: Grosse caisse +• Sand or gravel: Snare drum=• Sable ou gravier: Caisse claire +• Block of Gold: Bell=• Blod d'OR: Cloche +• Clay: Flute=• Argile: Flûte +• Packed Ice: Chime=• Glace tassée: Carillon +• Wool: Guitar=• Laine: Guitare +• Bone Block: Xylophne=• Bloc osseux: Xylophne +• Block of Iron: Iron xylophne=• Bloc de fer: Xylophone en fer +• Soul Sand: Cow bell=• Soul Sand: Cloche de vache +• Pumpkin: Didgeridoo=• Citrouille: Didgeridoo +• Block of Emerald: Square wave=• Bloc d'émeraude: Onde carrée +• Hay Bale: Banjo=• Hay Bale: Banjo +• Glowstone: Electric piano=• Glowstone: Piano Electrique +• Anything else: Piano=• Autres: Piano +The note block will only play a note when it is below air, otherwise, it stays silent.=Le bloc de notes ne jouera une note que lorsqu'il est sous l'air, sinon il reste silencieux. +Plays a musical note when powered by redstone power=Joue une note de musique lorsqu'il est alimenté par une puissance redstone diff --git a/mods/ITEMS/REDSTONE/mesecons_pistons/locale/mesecons_pistons.fr.tr b/mods/ITEMS/REDSTONE/mesecons_pistons/locale/mesecons_pistons.fr.tr new file mode 100644 index 00000000..9046e2d6 --- /dev/null +++ b/mods/ITEMS/REDSTONE/mesecons_pistons/locale/mesecons_pistons.fr.tr @@ -0,0 +1,8 @@ +# textdomain: mesecons_pistons +This block can have one of 6 possible orientations.=Ce bloc peut avoir l'une des 6 orientations possibles. +Piston=Piston +A piston is a redstone component with a pusher which pushes the block or blocks in front of it when it is supplied with redstone power. Not all blocks can be pushed, however.=Un piston est un composant de redstone avec un poussoir qui pousse le ou les blocs devant lui lorsqu'il est alimenté en redstone. Cependant, tous les blocs ne peuvent pas être poussés. +Sticky Piston=Piston collant +A sticky piston is a redstone component with a sticky pusher which can be extended and retracted. It extends when it is supplied with redstone power. When the pusher extends, it pushes the block or blocks in front of it. When it retracts, it pulls back the single block in front of it. Note that not all blocks can be pushed or pulled.=Un piston collant est un composant de redstone avec un poussoir collant qui peut être étendu et rétracté. Il se prolonge lorsqu'il est alimenté en redstone. Lorsque le poussoir s'étend, il pousse le ou les blocs devant lui. Quand il se rétracte, il recule le bloc unique devant lui. Notez que tous les blocs ne peuvent pas être poussés ou tirés. +Pushes block when powered by redstone power=Pousse le bloc lorsqu'il est alimenté par la puissance Redstone +Pushes or pulls block when powered by redstone power=Pousse ou tire le bloc lorsqu'il est alimenté par une puissance redstone diff --git a/mods/ITEMS/REDSTONE/mesecons_pressureplates/locale/mesecons_pressureplates.fr.tr b/mods/ITEMS/REDSTONE/mesecons_pressureplates/locale/mesecons_pressureplates.fr.tr new file mode 100644 index 00000000..ef145de5 --- /dev/null +++ b/mods/ITEMS/REDSTONE/mesecons_pressureplates/locale/mesecons_pressureplates.fr.tr @@ -0,0 +1,16 @@ +# textdomain: mesecons_pressureplates +A pressure plate is a redstone component which supplies its surrounding blocks with redstone power while someone or something rests on top of it.=Une plaque de pression est un composant de redstone qui alimente ses blocs environnants en puissance de redstone pendant que quelqu'un ou quelque chose repose dessus. +Oak Pressure Plate=Plaque de pression en Chêne +Acacia Pressure Plate=Plaque de pression en Acacia +Birch Pressure Plate=Plaque de pression en Bouleau +Dark Oak Pressure Plate=Plaque de pression en Chêne Noir +Spruce Pressure Plate=Plaque de pression en Sapin +Jungle Pressure Plate=Plaque de pression en Acajou +A wooden pressure plate is a redstone component which supplies its surrounding blocks with redstone power while any movable object (including dropped items, players and mobs) rests on top of it.=Une plaque de pression en bois est un composant de redstone qui alimente ses blocs environnants en puissance de redstone tandis que tout objet mobile (y compris les objets lâchés, les joueurs et les mobs) repose dessus. +Stone Pressure Plate=Plaque de pression en pierre +A stone pressure plate is a redstone component which supplies its surrounding blocks with redstone power while a player or mob stands on top of it. It is not triggered by anything else.=Une plaque de pression en pierre est un composant de redstone qui alimente ses blocs environnants en puissance de redstone pendant qu'un joueur ou un mob se tient au-dessus. Il n'est déclenché par rien d'autre. +Provides redstone power when pushed=Fournit une puissance de redstone lorsqu'il est poussé +Pushable by players, mobs and objects=Poussable par les joueurs, les mobs et les objets +Pushable by players and mobs=Poussable par les joueurs et les mobs +Pushable by players=Poussable par les joueurs +Pushable by mobs=Poussable par les mobs diff --git a/mods/ITEMS/REDSTONE/mesecons_solarpanel/locale/mesecons_solarpanel.fr.tr b/mods/ITEMS/REDSTONE/mesecons_solarpanel/locale/mesecons_solarpanel.fr.tr new file mode 100644 index 00000000..a0b7ad7b --- /dev/null +++ b/mods/ITEMS/REDSTONE/mesecons_solarpanel/locale/mesecons_solarpanel.fr.tr @@ -0,0 +1,8 @@ +# textdomain: mesecons_solarpanel +Daylight Sensor=Capteur de luminosité +Daylight sensors are redstone components which provide redstone power when they are in sunlight and no power otherwise. They can also be inverted.=Les capteurs de luminosité sont des composants de redstone qui fournissent une puissance de redstone lorsqu'ils sont en plein soleil et aucune autrement. Ils peuvent également être inversés. +Use the daylight sensor to toggle its state.=Utilisez le capteur de luminosité pour basculer son état. +Inverted Daylight Sensor=Capteur de luminosité inversé +In inverted state, they provide redstone power when they are not in sunlight and no power otherwise.=En état inversé, ils fournissent une puissance de redstone lorsqu'ils ne sont pas en plein soleil et aucune puissance autrement. +Provides redstone power when in sunlight=Fournit une puissance de redstone en plein soleil +Can be inverted=Peut être inversé diff --git a/mods/ITEMS/REDSTONE/mesecons_torch/locale/mesecons_torch.fr.tr b/mods/ITEMS/REDSTONE/mesecons_torch/locale/mesecons_torch.fr.tr new file mode 100644 index 00000000..8c223d83 --- /dev/null +++ b/mods/ITEMS/REDSTONE/mesecons_torch/locale/mesecons_torch.fr.tr @@ -0,0 +1,10 @@ +# textdomain: mesecons_torch +Redstone Torch=Torche de Redstone +Redstone Torch (off)=Torche de Redstone (inactive) +Redstone Torch (overheated)=Torche de Redstone (surchauffé) +A redstone torch is a redstone component which can be used to invert a redstone signal. It supplies its surrounding blocks with redstone power, except for the block it is attached to. A redstone torch is normally lit, but it can also be turned off by powering the block it is attached to. While unlit, a redstone torch does not power anything.=Une torche redstone est un composant redstone qui peut être utilisé pour inverser un signal redstone. Il alimente ses blocs environnants en énergie redstone, à l'exception du bloc auquel il est attaché. Une torche Redstone est normalement allumée, mais elle peut également être éteinte en alimentant le bloc auquel elle est attachée. Tant qu'elle n'est pas allumée, une torche redstone n'alimente rien. +Redstone torches can be placed at the side and on the top of full solid opaque blocks.=Les torches Redstone peuvent être placées sur le côté et sur le dessus de blocs opaques solides. +Block of Redstone=Bloc de Redstone +A block of redstone permanently supplies redstone power to its surrounding blocks.=Un bloc de redstone fournit en permanence de l'énergie redstone à ses blocs environnants. +Provides redstone power when it's not powered itself=Fournit une puissance redstone lorsqu'il n'est pas alimenté lui-même +Provides redstone power=Fournit une puissance redstone diff --git a/mods/ITEMS/REDSTONE/mesecons_walllever/locale/mesecons_walllever.fr.tr b/mods/ITEMS/REDSTONE/mesecons_walllever/locale/mesecons_walllever.fr.tr new file mode 100644 index 00000000..3d5d23c8 --- /dev/null +++ b/mods/ITEMS/REDSTONE/mesecons_walllever/locale/mesecons_walllever.fr.tr @@ -0,0 +1,5 @@ +# textdomain: mesecons_wallever +Lever=Levier +A lever is a redstone component which can be flipped on and off. It supplies redstone power to adjacent blocks while it is in the “on” state.=Un levier est un composant de redstone qui peut être activé et désactivé. Il fournit de l'énergie redstone aux blocs adjacents pendant qu'il est à l'état "activé". +Use the lever to flip it on or off.=Utilisez le levier pour l'activer ou le désactiver. +Provides redstone power while it's turned on=Fournit une puissance de redstone lorsqu'il est activé diff --git a/mods/ITEMS/REDSTONE/mesecons_wires/locale/mesecons_wires.fr.tr b/mods/ITEMS/REDSTONE/mesecons_wires/locale/mesecons_wires.fr.tr new file mode 100644 index 00000000..66a4230f --- /dev/null +++ b/mods/ITEMS/REDSTONE/mesecons_wires/locale/mesecons_wires.fr.tr @@ -0,0 +1,11 @@ +# textdomain: mesecons_wires +Redstone is a versatile conductive mineral which transmits redstone power. It can be placed on the ground as a trail.=Redstone est un minéral conducteur polyvalent qui transmet la puissance de redstone. Il peut être placé au sol comme un sentier. +A redstone trail can be in two states: Powered or not powered. A powered redstone trail will power (and thus activate) adjacent redstone components.=Un sentier de redstone peut être dans deux états: alimenté ou non alimenté. Un sentier Redstone alimenté alimentera (et activera donc) les composants Redstone adjacents. +Redstone power can be received from various redstone components, such as a block of redstone or a button. Redstone power is used to activate numerous mechanisms, such as redstone lamps or pistons.=L'alimentation Redstone peut être reçue de divers composants Redstone, tels qu'un bloc de Redstone ou un bouton. La puissance Redstone est utilisée pour activer de nombreux mécanismes, tels que les lampes ou les pistons Redstone. +Place redstone on the ground to build a redstone trail. The trails will connect to each other automatically and it can also go over hills. An easy way to power a redstone trail is by placing a redstone torch.=Placez du redstone sur le sol pour construire un sentier de redstone. Les sentiers se connecteront automatiquement et pourront également traverser des collines. Un moyen facile d'alimenter une piste de redstone est de placer une torche de redstone. +Read the help entries on the other redstone components to learn how redstone components interact.=Lisez les entrées d'aide sur les autres composants Redstone pour savoir comment les composants Redstone interagissent. +Redstone=Redstone +Powered Redstone Spot (@1)=Spot Redstone alimenté (@1) +Redstone Trail (@1)=Sentier Redstone (@1) +Powered Redstone Trail (@1)=Sentier Redstone alimenté (@1) +Transmits redstone power, powers mechanisms=Transmet la puissance redstone, alimente les mécanismes diff --git a/mods/ITEMS/mcl_anvils/locale/mcl_anvils.fr.tr b/mods/ITEMS/mcl_anvils/locale/mcl_anvils.fr.tr new file mode 100644 index 00000000..1f03de8e --- /dev/null +++ b/mods/ITEMS/mcl_anvils/locale/mcl_anvils.fr.tr @@ -0,0 +1,16 @@ +# textdomain: mcl_anvils +Set Name=Définir le Nom +Repair and Name=Réparation et Nomme +Inventory=Inventaire +Anvil=Enclume +The anvil allows you to repair tools and armor, and to give names to items. It has a limited durability, however. Don't let it fall on your head, it could be quite painful!=L'enclume vous permet de réparer des outils et des armures, et de donner des noms à des objets. Il a cependant une durabilité limitée. Ne la laissez pas tomber sur la tête, cela pourrait être assez douloureux! +To use an anvil, rightclick it. An anvil has 2 input slots (on the left) and one output slot.=Pour utiliser une enclume, faites un clic droit dessus. Une enclume a 2 emplacements d'entrée (à gauche) et un emplacement de sortie. +To rename items, put an item stack in one of the item slots while keeping the other input slot empty. Type in a name, hit enter or “Set Name”, then take the renamed item from the output slot.=Pour renommer des objets, placez une pile d'objets dans l'un des emplacements d'objets tout en laissant l'autre emplacement d'entrée vide. Tapez un nom, appuyez sur Entrée ou sur «Définir le nom», puis prenez l'élément renommé dans l'emplacement de sortie. +There are two possibilities to repair tools (and armor):=Il existe deux possibilités pour réparer les outils (et les armures): +• Tool + Tool: Place two tools of the same type in the input slots. The “health” of the repaired tool is the sum of the “health” of both input tools, plus a 12% bonus.=• Outil + Outil: Placez deux outils du même type dans les emplacements d'entrée. La "santé" de l'outil réparé est la somme de la "santé" des deux outils d'entrée, plus un bonus de 12%. +• Tool + Material: Some tools can also be repaired by combining them with an item that it's made of. For example, iron pickaxes can be repaired with iron ingots. This repairs the tool by 25%.=• Outil + Matériel: Certains outils peuvent également être réparés en les combinant avec un élément dont il est fait. Par exemple, les pioches de fer peuvent être réparées avec des lingots de fer. Cela répare l'outil de 25%. +Armor counts as a tool. It is possible to repair and rename a tool in a single step.=L'armure compte comme un outil. Il est possible de réparer et de renommer un outil en une seule étape. +The anvil has limited durability and 3 damage levels: undamaged, slightly damaged and very damaged. Each time you repair or rename something, there is a 12% chance the anvil gets damaged. Anvils also have a chance of being damaged when they fall by more than 1 block. If a very damaged anvil is damaged again, it is destroyed.=L'enclume a une durabilité limitée et 3 niveaux de dommages: en bon état, légèrement endommagé et très endommagé. Chaque fois que vous réparez ou renommez quelque chose, il y a 12% de chances que l'enclume soit endommagée. Les enclumes ont également une chance d'être endommagées lorsqu'elles tombent de plus d'un bloc. Si une enclume très endommagée est à nouveau endommagée, elle est détruite. +Slightly Damaged Anvil=Enclume Légèrement Endommagée +Very Damaged Anvil=Enclume Très Endommagée +Repair and rename items=Réparer et renommer des objets diff --git a/mods/ITEMS/mcl_armor/locale/mcl_armor.fr.tr b/mods/ITEMS/mcl_armor/locale/mcl_armor.fr.tr new file mode 100644 index 00000000..e22feddf --- /dev/null +++ b/mods/ITEMS/mcl_armor/locale/mcl_armor.fr.tr @@ -0,0 +1,23 @@ +# textdomain: mcl_armor +This is a piece of equippable armor which reduces the amount of damage you receive.=Il s'agit d'un morceau d'armure équipable qui réduit la quantité de dégâts que vous recevez. +To equip it, put it on the corresponding armor slot in your inventory menu.=Pour l'équiper, placez-le sur l'emplacement d'armure correspondant dans votre menu d'inventaire. +Leather Cap=Casquette en Cuir +Iron Helmet=Casque de Fer +Golden Helmet=Casque d'Or' +Diamond Helmet=Casque de Diamant +Chain Helmet=Casque de Mailles +Leather Tunic=Tunique en Cuir +Iron Chestplate=Plastron de Fer +Golden Chestplate=Plastron d'Or +Diamond Chestplate=Plastron de Diamant +Chain Chestplate=Cotte de Mailles +Leather Pants=Pantalon de Cuir +Iron Leggings=Jambières de Fer +Golden Leggings=Jambières d'Or +Diamond Leggings=Jambières de Diamant +Chain Leggings=Jambières de Mailles +Leather Boots=Bottes de Cuir +Iron Boots=Bottes de Fer +Golden Boots=Bottes d'Or +Diamond Boots=Bottes de Diamant +Chain Boots=Bottes de Mailles diff --git a/mods/ITEMS/mcl_armor_stand/locale/mcl_armor_stand.fr.tr b/mods/ITEMS/mcl_armor_stand/locale/mcl_armor_stand.fr.tr new file mode 100644 index 00000000..867b3f04 --- /dev/null +++ b/mods/ITEMS/mcl_armor_stand/locale/mcl_armor_stand.fr.tr @@ -0,0 +1,5 @@ +# textdomain: mcl_armor_stand +Armor Stand=Support d'armure +An armor stand is a decorative object which can display different pieces of armor. Anything which players can wear as armor can also be put on an armor stand.=Un support d'armure est un objet décoratif qui peut afficher différentes pièces d'armure. Tout ce que les joueurs peuvent porter comme armure peut également être placé sur un support d'armure. +Just place an armor item on the armor stand. To take the top piece of armor from the armor stand, select your hand and use the place key on the armor stand.=Placez simplement un objet d'armure sur le support d'armure. Pour prendre la pièce d'armure du support d'armure, sélectionnez votre main et utilisez la touche "Placer" sur le support d'armure. +Displays pieces of armor=Displays pieces of armor diff --git a/mods/ITEMS/mcl_banners/locale/mcl_banners.fr.tr b/mods/ITEMS/mcl_banners/locale/mcl_banners.fr.tr new file mode 100644 index 00000000..4d102c10 --- /dev/null +++ b/mods/ITEMS/mcl_banners/locale/mcl_banners.fr.tr @@ -0,0 +1,77 @@ +# textdomain: mcl_banners +White Banner=Bannière Blanche +White=Blanc +Grey Banner=Bannière Grise +Grey=Gris +Light Grey Banner=Bannière Gris Clair +Light Grey=Gris Clair +Black Banner=Bannière Noir +Black=Noir +Red Banner=Bannière Rouge +Red=Rouge +Yellow Banner=Bannière Jaune +Yellow=Jaune +Green Banner=Bannière Verte +Green=Vert +Cyan Banner=Bannière Cyan +Cyan=Cyan +Blue Banner=Bannière Bleue +Blue=Blue +Magenta Banner=Bannière Magenta +Magenta=Magenta +Orange Banner=Bannière Orange +Orange=Orange +Purple Banner=Bannière Violette +Violet=Violet +Brown Banner=Bannière Marron +Brown=Marron +Pink Banner=Bannière Rose +Pink=Rose +Lime Banner=Bannière Vert Citron +Lime=Vert Citron +Light Blue Banner=Bannière Bleue Clair +Light Blue=Bleu Clair +Banners are tall colorful decorative blocks. They can be placed on the floor and at walls. Banners can be emblazoned with a variety of patterns using a lot of dye in crafting.=Les bannières sont de grands blocs décoratifs colorés. Ils peuvent être placés au sol et aux murs. Les bannières peuvent arborées une variété de motifs en utilisant beaucoup de colorant dans l'artisanat. +Use crafting to draw a pattern on top of the banner. Emblazoned banners can be emblazoned again to combine various patterns. You can draw up to 12 layers on a banner that way. If the banner includes a gradient, only 3 layers are possible.=Utilisez l'artisanat pour dessiner un motif sur le dessus de la bannière. Les bannières blasonnées peuvent être à nouveau blasonnées pour combiner différents motifs. Vous pouvez dessiner jusqu'à 12 couches sur une bannière de cette façon. Si la bannière comprend un dégradé, seulement 3 couches sont possibles. +You can copy the pattern of a banner by placing two banners of the same color in the crafting grid—one needs to be emblazoned, the other one must be clean. Finally, you can use a banner on a cauldron with water to wash off its top-most layer.=Vous pouvez copier le motif d'une bannière en plaçant deux bannières de la même couleur dans la grille de fabrication: l'une doit être décorée, l'autre doit être propre. Enfin, vous pouvez utiliser une bannière sur un chaudron avec de l'eau pour laver sa couche la plus haute. +@1 Bordure=Bordure (@1) +@1 Bricks=Blocs (@1) +@1 Roundel=Cocarde (@1) +@1 Creeper Charge=Face de Creeper (@1) +@1 Saltire=Saltire (@1) +@1 Bordure Indented=Bordure en retrait (@1) +@1 Per Bend Inverted=Division inclinée inversé (@1) +@1 Per Bend Sinister Inverted=Division oblique inversé (@1) +@1 Per Bend=Division inclinée (@1) +@1 Per Bend Sinister=Division oblique (@1) +@1 Flower Charge=Figure Fleur (@1) +@1 Gradient=Dégradé (@1) +@1 Base Gradient=Dégradé de couleurs (@1) +@1 Per Fess Inverted=Division inverse (@1) +@1 Per Fess=Division (@1) +@1 Per Pale=Division (@1) +@1 Per Pale Inverted=Division inverse (@1) +@1 Thing Charge=Chose (@ 1) +@1 Lozenge=Rhombus (@1) +@1 Skull Charge=Figure de crâne (@1) +@1 Paly=Pieux (@1) +@1 Base Dexter Canton=Coin inférieur droit (@1) +@1 Base Sinister Canton=Coin inférieur gauche (@1) +@1 Chief Dexter Canton=Coin supérieur droit (@1) +@1 Chief Sinister Canton=Coin supérieur gauche (@1) +@1 Cross=Croix (@1) +@1 Base=Pieds (@1) +@1 Pale=Mise (@1) +@1 Bend Sinister=Barre gauche inclinée (@1) +@1 Bend=Barre inclinée (@1) +@1 Pale Dexter=Flanc droit (@1) +@1 Fess=Bar (@1) +@1 Pale Sinister=Flanc gauche (@1) +@1 Chief=Principal (@1) +@1 Chevron=Chevron (@1) +@1 Chevron Inverted=Contre-chevrons (@1) +@1 Base Indented=Pied dentelé (@1)t +@1 Chief Indented=Tête dentelée (@1) +And one additional layer=Et une couche supplémentaire +And @1 additional layer(s)=Et @1 couche(s) supplémentaire(s) +Paintable decoration=Décoration à peindre diff --git a/mods/ITEMS/mcl_beds/locale/mcl_beds.fr.tr b/mods/ITEMS/mcl_beds/locale/mcl_beds.fr.tr new file mode 100644 index 00000000..ba0345e6 --- /dev/null +++ b/mods/ITEMS/mcl_beds/locale/mcl_beds.fr.tr @@ -0,0 +1,41 @@ +# textdomain: mcl_beds +Beds allow you to sleep at night and make the time pass faster.=Les lits vous permettent de dormir la nuit et de faire passer le temps plus rapidement. +To use a bed, stand close to it and right-click the bed to sleep in it. Sleeping only works when the sun sets, at night or during a thunderstorm. The bed must also be clear of any danger.=Pour utiliser un lit, tenez-vous près de lui et faites un clic droit sur le lit pour y dormir. Dormir ne fonctionne que lorsque le soleil se couche, la nuit ou pendant un orage. Le lit doit également être à l'abri de tout danger. +You have heard of other worlds in which a bed would set the start point for your next life. But this world is not one of them.=Vous avez entendu parler d'autres mondes dans lesquels un lit serait le point de départ de votre prochaine vie. Mais ce monde n'en fait pas partie. +By using a bed, you set the starting point for your next life. If you die, you will start your next life at this bed, unless it is obstructed or destroyed.=En utilisant un lit, vous définissez le point de départ de votre prochaine vie. Si vous mourez, vous commencerez votre prochaine vie dans ce lit, à moins qu'il ne soit obstrué ou détruit. +In this world, going to bed won't skip the night, but it will skip thunderstorms.=Dans ce monde, aller au lit ne sautera pas la nuit, mais cela évitera les orages. +Sleeping allows you to skip the night. The night is skipped when all players in this world went to sleep. The night is skipped after sleeping for a few seconds. Thunderstorms can be skipped in the same manner.=Dormir vous permet de sauter la nuit. La nuit est sautée lorsque tous les joueurs de ce monde se sont endormis. La nuit est sautée après avoir dormi quelques secondes. Les orages peuvent être évités de la même manière. +Bed=Lit +Red Bed=Lit Rouge +Blue Bed=Lit Bleu +Cyan Bed=Lit Cyan +Grey Bed=Lit Gris +Light Grey Bed=Lit Gris Clair +Black Bed=Lit Noir +Yellow Bed=Lit Jaune +Green Bed=Lit Vert +Magenta Bed=Lit Magenta +Orange Bed=Lit Orange +Purple Bed=Lit Violet +Brown Bed=Lit Marron +Pink Bed=Lit Rose +Lime Bed=Lit Vert Citron +Light Blue Bed=Lit Bleu Clair +White Bed=Lit Blanc +You can't sleep, the bed's too far away!=Vous ne pouvez pas dormir, le lit est trop loin! +This bed is already occupied!=Ce lit est déjà occupé! +You have to stop moving before going to bed!=Vous devez arrêter de bouger avant de vous coucher! +You can't sleep now, monsters are nearby!=Vous ne pouvez pas dormir maintenant, les monstres sont à proximité! +You can't sleep, the bed is obstructed!=Vous ne pouvez pas dormir, le lit est obstrué! +It's too dangerous to sleep here!=C'est trop dangereux de dormir ici! +New respawn position set! But you can only sleep at night or during a thunderstorm.=Nouvelle position de réapparition définie! Mais vous ne pouvez dormir que la nuit ou pendant un orage. +You can only sleep at night or during a thunderstorm.=Vous ne pouvez dormir que la nuit ou pendant un orage. +New respawn position set!=Nouvelle position de réapparition définie! +Leave bed=Quitter le lit +Abort sleep=Abandonner le sommeil +Players in bed: @1/@2=Joueurs au lit: @1/@2 +Note: Night skip is disabled.=Remarque: Le saut de nuit est désactivé. +You're sleeping.=Tu dors. +You will fall asleep when all players are in bed.=Vous vous endormirez lorsque tous les joueurs seront au lit. +You're in bed.=Tu es au lit. +Allows you to sleep=Vous permet de dormir diff --git a/mods/ITEMS/mcl_books/locale/mcl_books.fr.tr b/mods/ITEMS/mcl_books/locale/mcl_books.fr.tr new file mode 100644 index 00000000..7024cf5d --- /dev/null +++ b/mods/ITEMS/mcl_books/locale/mcl_books.fr.tr @@ -0,0 +1,28 @@ +# textdomain: mcl_books +Book=Livre +Books are used to make bookshelves and book and quills.=Les livres sont utilisés pour fabriquer des étagères et des livres et des plumes. +“@1”="@1" +Copy of “@1”=Copie de "@1" +Copy of Copy of “@1”=Copie de Copie de "@1" +Tattered Book=Livre en lambeaux +by @1=ar @1 +# as in “to sign a book” +Sign=Signer +Done=Terminé +This item can be used to write down some notes.=Cet élément peut être utilisé pour écrire certaines notes. +Hold it in the hand, then rightclick to read the current notes and edit then. You can edit the text as often as you like. You can also sign the book which turns it into a written book which you can stack, but it can't be edited anymore.=Tenez-le dans la main, puis faites un clic droit pour lire les notes actuelles et modifiez-les ensuite. Vous pouvez modifier le texte aussi souvent que vous le souhaitez. Vous pouvez également signer le livre qui le transforme en livre écrit que vous pouvez empiler, mais il ne peut plus être édité. +A book can hold up to 4500 characters. The title length is limited to 64 characters.=Un livre peut contenir jusqu'à 4500 caractères. La longueur du titre est limitée à 64 caractères. +Enter book title:=Entrez le titre du livre: +by @1=par @1 +Note: The book will no longer be editable after signing=Remarque: le livre ne sera plus modifiable après la signature +Sign and Close=Signez et fermez +Cancel=Annuler +Nameless Book=Livre sans nom +Written Book=Livre écrit +Written books contain some text written by someone. They can be read and copied, but not edited.=Les livres écrits contiennent du texte écrit par quelqu'un. Ils peuvent être lus et copiés, mais pas modifiés. +Hold it in your hand, then rightclick to read the book.=Tenez-le dans votre main, puis faites un clic droit pour lire le livre. +To copy the text of the written book, place it into the crafting grid together with a book and quill (or multiple of those) and craft. The written book will not be consumed. Copies of copies can not be copied.=Pour copier le texte du livre écrit, placez-le dans la grille d'artisanat avec un livre et une plume (ou plusieurs de ceux-ci) et de l'artisanat. Le livre écrit ne sera pas consommé. Les copies de copies ne peuvent pas être copiées. +Bookshelf=Bibliothèque +Bookshelves are used for decoration.=Les bibliothèques sont utilisées pour la décoration. +Book and Quill=Livre et Plume +Write down some notes=Notez quelques notes diff --git a/mods/ITEMS/mcl_bows/locale/mcl_bows.fr.tr b/mods/ITEMS/mcl_bows/locale/mcl_bows.fr.tr new file mode 100644 index 00000000..313081e4 --- /dev/null +++ b/mods/ITEMS/mcl_bows/locale/mcl_bows.fr.tr @@ -0,0 +1,15 @@ +# textdomain: mcl_bows +Arrow=Flèche +Arrows are ammunition for bows and dispensers.=Les flèches sont des munitions pour les arcs et les distributeurs. +An arrow fired from a bow has a regular damage of 1-9. At full charge, there's a 20% chance of a critical hit dealing 10 damage instead. An arrow fired from a dispenser always deals 3 damage.=Une flèche tirée d'un arc a des dégâts réguliers de 1 à 9. À pleine charge, il y a 20% de chances qu'un coup critique inflige 10 dégâts à la place. Une flèche tirée depuis un distributeur inflige toujours 3 dégâts. +Arrows might get stuck on solid blocks and can be retrieved again. They are also capable of pushing wooden buttons.=Les flèches peuvent se coincer sur des blocs solides et peuvent être récupérées à nouveau. Ils sont également capables de pousser des boutons en bois. +To use arrows as ammunition for a bow, just put them anywhere in your inventory, they will be used up automatically. To use arrows as ammunition for a dispenser, place them in the dispenser's inventory. To retrieve an arrow that sticks in a block, simply walk close to it.=Pour utiliser des flèches comme munitions pour un arc, il suffit de les placer n'importe où dans votre inventaire, elles seront utilisées automatiquement. Pour utiliser des flèches comme munitions pour un distributeur, placez-les dans l'inventaire du distributeur. Pour récupérer une flèche qui colle dans un bloc, il vous suffit de vous en approcher. +Bow=Arc +Bows are ranged weapons to shoot arrows at your foes.=Les arcs sont des armes à distance pour tirer des flèches sur vos ennemis. +The speed and damage of the arrow increases the longer you charge. The regular damage of the arrow is between 1 and 9. At full charge, there's also a 20% of a critical hit, dealing 10 damage instead.=La vitesse et les dégâts de la flèche augmentent plus vous chargez. Les dégâts réguliers de la flèche sont compris entre 1 et 9. À pleine charge, il y a également 20% d'un coup critique, infligeant 10 dégâts à la place. +To use the bow, you first need to have at least one arrow anywhere in your inventory (unless in Creative Mode). Hold down the right mouse button to charge, release to shoot.=Pour utiliser l'arc, vous devez d'abord avoir au moins une flèche n'importe où dans votre inventaire (sauf en mode créatif). Maintenez enfoncé le bouton droit de la souris pour charger, relâchez pour tirer. +Bow=Arc +Ammunition=Munition +Damage from bow: 1-10=Dégâts de l'arc: 1-10 +Damage from dispenser: 3=Dégâts du distributeur: 3 +Launches arrows=Lance des flèches diff --git a/mods/ITEMS/mcl_clock/locale/mcl_clock.fr.tr b/mods/ITEMS/mcl_clock/locale/mcl_clock.fr.tr new file mode 100644 index 00000000..604f5085 --- /dev/null +++ b/mods/ITEMS/mcl_clock/locale/mcl_clock.fr.tr @@ -0,0 +1,5 @@ +# textdomain: mcl_clock +Clocks are tools which shows the current time of day in the Overworld.=Les horloges sont des outils qui indiquent l'heure actuelle dans l'Overworld. +The clock contains a rotating disc with a sun symbol (yellow disc) and moon symbol and a little “pointer” which shows the current time of day by estimating the real position of the sun and the moon in the sky. Noon is represented by the sun symbol and midnight is represented by the moon symbol.=L'horloge contient un disque rotatif avec un symbole du soleil (disque jaune) et un symbole de la lune et un petit "pointeur" qui montre l'heure actuelle en estimant la position réelle du soleil et de la lune dans le ciel. Midi est représenté par le symbole du soleil et minuit est représenté par le symbole de la lune. +Clock=Horloge +Displays the time of day in the Overworld=Affiche l'heure de la journée dans l'Overworld diff --git a/mods/ITEMS/mcl_cocoas/locale/mcl_cocoas.fr.tr b/mods/ITEMS/mcl_cocoas/locale/mcl_cocoas.fr.tr new file mode 100644 index 00000000..bf546895 --- /dev/null +++ b/mods/ITEMS/mcl_cocoas/locale/mcl_cocoas.fr.tr @@ -0,0 +1,6 @@ +# textdomain: mcl_cocoas +Premature Cocoa Pod=Gousse de cacao prématurée +Cocoa pods grow on the side of jungle trees in 3 stages.=Les cabosses de cacao poussent sur le côté des arbres d'Acajou en 3 étapes. +Medium Cocoa Pod=Gousse de cacao moyenne +Mature Cocoa Pod=Cabosse de cacao mature +A mature cocoa pod grew on a jungle tree to its full size and it is ready to be harvested for cocoa beans. It won't grow any further.=Une cabosse de cacao mature a poussé sur un arbre d'Acajou à sa pleine taille et elle est prête à être récoltée pour les fèves de cacao. Elle ne grandira plus. diff --git a/mods/ITEMS/mcl_colorblocks/locale/mcl_colorblocks.fr.tr b/mods/ITEMS/mcl_colorblocks/locale/mcl_colorblocks.fr.tr new file mode 100644 index 00000000..2f2ffbb0 --- /dev/null +++ b/mods/ITEMS/mcl_colorblocks/locale/mcl_colorblocks.fr.tr @@ -0,0 +1,76 @@ +# textdomain: mcl_colorblocks +White Terracotta=Terre Cuite Blanche +White Glazed Terracotta=Terre Cuite Emaillée Blanche +White Concrete Powder=Béton en Poudre Blanc +White Concrete=Béton Blanc +Grey Terracotta=Terre Cuite Grise +Grey Glazed Terracotta=Terre Cuite Emaillée Grise +Grey Concrete Powder=Béton en Poudre Gris +Grey Concrete=Béton Gris +Light Grey Terracotta=Terre Cuite Gris Clair +Light Grey Glazed Terracotta=Terre Cuite Emaillée Gris Clair +Light Grey Concrete Powder=Béton en Poudre Gris Clair +Light Grey Concrete=Béton Gris Clair +Black Terracotta=Terre Cuite Noir +Black Glazed Terracotta=Terre Cuite Emaillée Noir +Black Concrete Powder=Béton en Poudre Noir +Black Concrete=Béton Noir +Red Terracotta=Terre Cuite Rouge +Red Glazed Terracotta=Terre Cuite Emaillée Rouge +Red Concrete Powder=Béton en Poudre Rouge +Red Concrete=Béton Rouge +Yellow Terracotta=Terre Cuite Jaune +Yellow Glazed Terracotta=Terre Cuite Emaillée Jaune +Yellow Concrete Powder=Béton en Poudre Jaune +Yellow Concrete=Béton Jaune +Green Terracotta=Terre Cuite Verte +Green Glazed Terracotta=Terre Cuite Emaillée Verte +Green Concrete Powder=Béton en Poudre Vert +Green Concrete=Béton Vert +Cyan Terracotta=Terre Cuite Cyan +Cyan Glazed Terracotta=Terre Cuite Emaillée Cyan +Cyan Concrete Powder=Béton en Poudre Cyan +Cyan Concrete=Béton Cyan +Blue Terracotta=Terre Cuite Bleue +Blue Glazed Terracotta=Terre Cuite Emaillée Bleue +Blue Concrete Powder=Béton en Poudre Bleu +Blue Concrete=Béton Bleu +Magenta Terracotta=Terre Cuite Magenta +Magenta Glazed Terracotta=Terre Cuite Emaillée Magenta +Magenta Concrete Powder=Béton en Poudre Magenta +Magenta Concrete=Béton Magenta +Orange Terracotta=Terre Cuite Orange +Orange Glazed Terracotta=Terre Cuite Emaillée Orange +Orange Concrete Powder=Béton en Poudre Orange +Orange Concrete=Béton Orange +Purple Terracotta=Terre Cuite Violette +Purple Glazed Terracotta=Terre Cuite Emaillée Violette +Purple Concrete Powder=Béton en Poudre Violet +Purple Concrete=Béton Violet +Brown Terracotta=Terre Cuite Marron +Brown Glazed Terracotta=Terre Cuite Emaillée Marron +Brown Concrete Powder=Béton en Poudre Marron +Brown Concrete=Béton Marron +Pink Terracotta=Terre Cuite Rose +Pink Glazed Terracotta=Terre Cuite Emaillée Rose +Pink Concrete Powder=Béton en Poudre Rose +Pink Concrete=Béton Rose +Lime Terracotta=Terre Cuite Vert Citron +Lime Glazed Terracotta=Terre Cuite Emaillée Vert Citron +Lime Concrete Powder=Béton en Poudre Vert Citron +Lime Concrete=Béton Vert Citron +Light Blue Terracotta=Terre Cuite Bleu Clair +Light Blue Glazed Terracotta=Terre Cuite Emaillée Bleu Clair +Light Blue Concrete Powder=Béton en Poudre Bleu Clair +Light Blue Concrete=Béton Bleu Clair +Terracotta is a basic building material. It comes in many different colors.=La terre cuite est un matériau de construction de base. Il est disponible dans de nombreuses couleurs différentes. +Glazed terracotta is a decorative block with a complex pattern. It can be rotated by placing it in different directions.=La terre cuite émaillée est un bloc décoratif au motif complexe. Il peut être tourné en le plaçant dans différentes directions. +Concrete powder is used for creating concrete, but it can also be used as decoration itself. It comes in different colors. Concrete powder turns into concrete of the same color when it comes in contact with water.=La poudre de béton est utilisée pour créer du béton, mais elle peut également être utilisée comme décoration elle-même. Il est disponible en différentes couleurs. La poudre de béton se transforme en béton de la même couleur au contact de l'eau. +Concrete is a decorative block which comes in many different colors. It is notable for having a very strong and clean color.=Le béton est un bloc décoratif qui se décline en de nombreuses couleurs différentes. Il est remarquable pour avoir une couleur très forte et propre. +Terracotta=Terre Cuite +Terracotta is a basic building material which comes in many different colors. This particular block is uncolored.=La terre cuite est un matériau de construction de base qui se décline en de nombreuses couleurs différentes. Ce bloc particulier n'est pas coloré. +Colored Terracotta=Terre Cuite Coloré +Glazed Terracotta=Terre Cuite Emaillée +Concrete Powder=Béton en Poudre +Concrete=Béton +Turns into concrete on water contact=Se transforme en béton au contact de l'eau diff --git a/mods/ITEMS/mcl_compass/locale/mcl_compass.fr.tr b/mods/ITEMS/mcl_compass/locale/mcl_compass.fr.tr new file mode 100644 index 00000000..89299fde --- /dev/null +++ b/mods/ITEMS/mcl_compass/locale/mcl_compass.fr.tr @@ -0,0 +1,4 @@ +# textdomain: mcl_compass +Compasses are tools which point to the world origin (X@=0, Z@=0) or the spawn point in the Overworld.=Les boussoles sont des outils qui pointent vers l'origine du monde (X@=0,Z@=0) ou le point d'apparition dans l'Overworld. +Compass=Boussole +Points to the world origin=Pointe vers l'origine mondiale diff --git a/mods/ITEMS/mcl_core/locale/mcl_core.fr.tr b/mods/ITEMS/mcl_core/locale/mcl_core.fr.tr new file mode 100644 index 00000000..827dba49 --- /dev/null +++ b/mods/ITEMS/mcl_core/locale/mcl_core.fr.tr @@ -0,0 +1,257 @@ +# textdomain: mcl_core +@1 could not survive in lava.=@1 n'a pas pu survivre dans la lave. +@1 died in lava.=@1 est mort dans la lave. +@1 melted in lava.=@1 a fondu dans la lave. +@1 took a bath in a hot lava tub.=@1 a pris un bain dans une cuve de lave chaude. +A block of diamond is mostly a shiny decorative block but also useful as a compact storage of diamonds.=Un bloc de diamant est principalement un bloc décoratif brillant mais également utile comme stockage compact de diamants. +A block of emerald is mostly a shiny decorative block but also useful as a compact storage of emeralds.=Un bloc d'émeraude est principalement un bloc décoratif brillant mais également utile comme stockage compact d'émeraudes. +A block of gold is mostly a shiny decorative block but also useful as a compact storage of gold ingots.=Un bloc d'or est principalement un bloc décoratif brillant mais également utile comme stockage compact de lingots d'or. +A block of iron is mostly a decorative block but also useful as a compact storage of iron ingots.=Un bloc de fer est principalement un bloc décoratif mais également utile comme stockage compact de lingots de fer. +A cactus can only be placed on top of another cactus or any sand.=Un cactus ne peut être placé que sur un autre cactus ou du sable. +A decorative and mostly transparent block.=Un bloc décoratif et surtout transparent. +A grass block is dirt with a grass cover. Grass blocks are resourceful blocks which allow the growth of all sorts of plants. They can be turned into farmland with a hoe and turned into grass paths with a shovel. In light, the grass slowly spreads onto dirt nearby. Under an opaque block or a liquid, a grass block may turn back to dirt.=Un bloc d'herbe est de la terre avec une couverture d'herbe. Les blocs d'herbe sont des blocs ingénieux qui permettent la croissance de toutes sortes de plantes. Ils peuvent être transformés en terres agricoles avec une houe et transformés en chemins d'herbe avec une pelle. À la lumière, l'herbe se propage lentement sur la terre à proximité. Sous un bloc opaque ou un liquide, un bloc d'herbe peut redevenir terre. +A lapis lazuli block is mostly a decorative block but also useful as a compact storage of lapis lazuli.=Un bloc de lapis-lazuli est principalement un bloc décoratif mais également utile comme stockage compact de lapis-lazuli. +A lava source sets fire to a couple of air blocks above when they're next to a flammable block.=Une source de lave met le feu à quelques blocs d'air au-dessus lorsqu'ils sont à côté d'un bloc inflammable. +A piece of ladder which allows you to climb vertically. Ladders can only be placed on the side of solid blocks and not on glass, leaves, ice, slabs, glowstone, nor sea lanterns.=Un morceau d'échelle qui vous permet de grimper verticalement. Les échelles ne peuvent être placées que sur le côté de blocs solides et non sur du verre, des feuilles, de la glace, des dalles, des pierres incandescentes ou des lanternes marines. +Acacia Bark=Écorce d'Acacia +Acacia Leaves=Feuilles d'Acacia +Acacia Sapling=Pousse d'Acacia +Acacia Wood=Bois d'Acacia +Acacia Wood Planks=Planches d'Acacia +Acacia leaves are grown from acacia trees.=Les feuilles d'acacia sont cultivées à partir d'acacias. +Andesite=Andésite +Andesite is an igneous rock.=L'andésite est une roche ignée. +Apple=Pomme +Apples are food items which can be eaten.=Les pommes sont des aliments qui peuvent être consommés. +Barrier=Barrière invisible +Barriers are invisble walkable blocks. They are used to create boundaries of adventure maps and the like. Monsters and animals won't appear on barriers, and fences do not connect to barriers. Other blocks can be built on barriers like on any other block.=Les barrières sont des blocs accessibles à pied. Ils sont utilisés pour créer des limites de cartes d'aventure et similaires. Les monstres et les animaux n'apparaissent pas sur les barrières, et les clôtures ne se connectent pas aux barrières. D'autres blocs peuvent être construits sur des barrières comme sur n'importe quel autre bloc. +Bedrock=Bedrock +Bedrock is a very hard type of rock. It can not be broken, destroyed, collected or moved by normal means, unless in Creative Mode.=Le bedrock est un type de roche très dur. Il ne peut pas être brisé, détruit, collecté ou déplacé par des moyens normaux, sauf en mode créatif. +Birch Bark=Écorce de Bouleau +Birch Leaves=Feuilles de Bouleau +Birch Sapling=Pousse de Bouleau +Birch Wood=Bois de Bouleau +Birch Wood Planks=Planches de Bouleau +Birch leaves are grown from birch trees.=Les feuilles de bouleau sont cultivées à partir de bouleaux. +Black Stained Glass=Verre Noir +Block of Coal=Bloc de Charbon +Block of Diamond=Bloc de Diamant +Block of Emerald=Bloc d'Emeraude +Block of Gold=Bloc d'Or +Block of Iron=Bloc de Fer +Blocks of coal are useful as a compact storage of coal and very useful as a furnace fuel. A block of coal is as efficient as 10 coal.=Les blocs de charbon sont utiles comme stockage compact de charbon et très utiles comme combustible de four. Un bloc de charbon est aussi efficace que 10 charbon. +Blue Stained Glass=Verre Bleu +Bone Block=Bloc d'Os +Bone blocks are decorative blocks and a compact storage of bone meal.=Les blocs d'os sont des blocs décoratifs et un stockage compact de poudre d'os. +Bowl=Bol +Bowls are mainly used to hold tasty soups.=Les bols sont principalement utilisés pour contenir de délicieuses soupes. +Brick=Brique +Brick Block=Bloc de Brique +Brick blocks are a good building material for building solid houses and can take quite a punch.=Les blocs de briques sont un bon matériau de construction pour la construction de maisons solides et peuvent resite au coup. +Bricks are used to craft brick blocks.=Les briques sont utilisées pour fabriquer des blocs de briques. +Brown Stained Glass=Verre Marron +Cactus=Cactus +Charcoal=Charbon de Bois +Charcoal is an alternative furnace fuel created by cooking wood in a furnace. It has the same burning time as coal and also shares many of its crafting recipes, but it can not be used to create coal blocks.=Le charbon de bois est un combustible de four alternatif créé par la cuisson du bois dans un four. Il a le même temps de combustion que le charbon et partage également bon nombre de ses recettes d'artisanat, mais il ne peut pas être utilisé pour créer des blocs de charbon. +Chiseled Stone Bricks=Pierre Sculptée +Chiseled Red Sandstone=Grès Rouge Sculptée +Chiseled Sandstone=Grès Sculptée +Chiseled red sandstone is a decorative building block.=Le grès rouge ciselé est un bloc de construction décoratif. +Chiseled sandstone is a decorative building block.=Le grès ciselé est un bloc de construction décoratif. +Clay=Argile +Clay Ball=Boule d'Argile +Clay balls are a raw material, mainly used to create bricks in the furnace.=Les boules d'argile sont une matière première, principalement utilisée pour créer des briques dans le four. +Clay is a versatile kind of earth commonly found at beaches underwater.=L'argile est une terre polyvalente que l'on trouve couramment sur les plages sous-marines. +Coal=Charbon +Coal Ore=Minerai de Charbon +Coarse Dirt=Terre Stérile +Coarse dirt acts as a soil for some plants and is similar to dirt, but it will never grow a cover.=La terre stérile agit comme un sol pour certaines plantes et est similaire à la terre, mais elle ne fera jamais pousser grand chose. +Cobblestone=Pierre +Cobweb=Toile d'Araignée +Cobwebs can be walked through, but significantly slow you down.=Les toiles d'araignée peuvent être parcourues, mais vous ralentissent considérablement. +Cracked Stone Bricks=Pierre Taillée Craquelée +Cut Red Sandstone=Grès Rouge Taillé +Cut Sandstone=Grès Taillé +Cut red sandstone is a decorative building block.=Le grès rouge taillé est un bloc de construction décoratif. +Cut sandstone is a decorative building block.=Le grès taillé est un bloc de construction décoratif. +Cyan Stained Glass=Vitre Cyan +Dark Oak Bark=Écorce de Chêne Noir +Dark Oak Leaves=Feuilles de Chêne Noir +Dark Oak Sapling=Pousse de Chêne Noir +Dark Oak Wood=Bois de Chêne Noir +Dark Oak Wood Planks=Planche de Chêne Noir +Dark oak leaves are grown from dark oak trees.=Les feuilles de chêne noir sont issues de chênes noirs. +Dark oak saplings can grow into dark oaks, but only in groups. A lonely dark oak sapling won't grow. A group of four dark oak saplings grows into a dark oak after some time when they are placed on soil (such as dirt) in a 2×2 square and exposed to light.=Les pousses de chêne noir peuvent devenir des chênes noirs, mais seulement en groupes. Une pousse de chêne noir solitaire ne poussera pas. Un groupe de quatre pousses de chêne noir se transforme en chêne noir après un certain temps lorsqu'ils sont placés sur le sol (comme la terre) dans un carré 2×2 et exposés à la lumière. +Dead Bush=Arbuste mort +Dead bushes are unremarkable plants often found in dry areas. They can be harvested for sticks.=Les buissons morts sont des plantes inhabituelles que l'on trouve souvent dans les zones sèches. Ils peuvent être récoltés avec des bâtons. +Diamond=Diamamnt +Diamond Ore=Minerai de Diamant +Diamond ore is rare and can be found in clusters near the bottom of the world.=Le minerai de diamant est rare et peut être trouvé en filons près du fond du monde. +Diamonds are precious minerals and useful to create the highest tier of armor and tools.=Les diamants sont des minéraux précieux et utiles pour créer le plus haut niveau d'armure et d'outils. +Diorite=Diorite +Diorite is an igneous rock.=La diorite est une roche ignée. +Dirt=Terre +Dirt acts as a soil for a few plants. When in light, this block may grow a grass or mycelium cover if such blocks are nearby.=La terre agit comme un sol pour quelques plantes. Lorsqu'il est à la lumière, ce bloc peut faire pousser une couverture d'herbe ou de mycélium si ces blocs sont à proximité. +Emerald=Emeraude +Emerald Ore=Minerai d'Emeraude +Emerald ore is the ore of emeralds. It is very rare and can be found alone, not in clusters.=Le minerai d'émeraude produit des émeraudes. Il est très rare et peut être trouvé seul, pas en filons. +Emeralds are not very useful on their own, but they can exchanged for gold ingots by crafting.=Les émeraudes ne sont pas très utiles seules, mais elles peuvent être échangées contre des lingots d'or. +Flint=Silex +Flint is a raw material.=Le silex est une matière première. +Flowing Lava=Lave qui coule +Flowing Water=Eau qui coule +Frosted Ice=Glace Givrée +Frosted ice is a short-lived solid block. It melts into a water source within a few seconds.=La glace givrée est un bloc solide de courte durée. Il fond dans une source d'eau en quelques secondes. +Glass=Verre +Gold Ingot=Lingot d'Or +Gold Nugget=Pépite d'Or +Gold Ore=Minerai d'Or +Gold nuggets are very small pieces of molten gold; the main purpose is to create gold ingots.=Les pépites d'or sont de très petites pièces d'or en fusion; le but principal est de créer des lingots d'or. +Golden Apple=Pomme Dorée +Golden apples are precious food items which can be eaten.=Les pommes dorrées sont des aliments précieux qui peuvent être consommés. +Granite=Granite +Grass Block=Bloc d'Herbe +Grass Path=Chemin d'Herbe +Grass paths are a decorative variant of grass blocks. Their top has a different color and they are a bit lower than grass blocks, making them useful to build footpaths. Grass paths can be created with a shovel. A grass path turns into dirt when it is below a solid block.=Les chemins d'herbe sont une variante décorative des blocs d'herbe. Leur sommet a une couleur différente et ils sont un peu plus bas que les blocs d'herbe, ce qui les rend utiles pour construire des sentiers. Les chemins d'herbe peuvent être créés avec une pelle. Un chemin d'herbe se transforme en terre quand il est en dessous d'un bloc solide. +Gravel=Gravier +Green Stained Glass=Verre Vert +Grey Stained Glass=Verre Gris +Ice=Glace +Ice is a solid block usually found in cold areas. It melts near block light sources at a light level of 12 or higher. When it melts or is broken while resting on top of another block, it will turn into a water source.=La glace est un bloc solide que l'on trouve généralement dans les régions froides. Il fond près des sources de lumière de bloc à un niveau de lumière de 12 ou plus. Lorsqu'il fond ou se casse en se reposant sur un autre bloc, il se transforme en source d'eau. +In the End dimension, starting a fire on this block will create an eternal fire.=Dans la dimension End, démarrer un feu sur ce bloc créera un feu éternel. +Iron Ingot=Lingot de Fer +Iron Nugget=Pépite de Fer +Iron Ore=Minerai de Fer +Iron nuggets are very small pieces of molten iron; the main purpose is to create iron ingots.=Les pépites de fer sont de très petits morceaux de fer fondu; le but principal est de créer des lingots de fer. +Jungle Bark=Écorce d'Acajou +Jungle Leaves=Feuilles d'Acajou +Jungle Sapling=Pousse d'Acajou +Jungle Wood=Bois d'Acajou +Jungle Wood Planks=Planches d'Acajou +Jungle leaves are grown from jungle trees.=Les feuilles d'Acajou sont cultivées à partir d'arbres d'Acajou. +Ladder=Échelle +Lapis Lazuli Block=Bloc de Lapis-Lazuli +Lapis Lazuli Ore=Minerai de Lapis-Lazuli +Lapis lazuli ore is the ore of lapis lazuli. It can be rarely found in clusters near the bottom of the world.=Le minerai de lapis-lazuli produit du lapis-lazuli. Il peut être rarement trouvé dans des filons près du fond du monde. +Lava Source=Source de Lave +Lava is hot and rather dangerous. Don't touch it, it will hurt you a lot and it is hard to get out.=La lave est chaude et plutôt dangereuse. Ne le touchez pas, cela vous fera beaucoup de mal et il est difficile d'en sortir. +Light Blue Stained Glass=Verre Bleu Clair +Light Grey Stained Glass=Verre Gris Clair +Lime Stained Glass=Verre Vert Citron +Lit Redstone Ore=Minerai de Redstone +Magenta Stained Glass=Verre Magenta +Molten gold. It is used to craft armor, tools, and whatnot.=L'Or. Il est utilisé pour fabriquer des armures, des outils et ainsi de suite. +Molten iron. It is used to craft armor, tools, and whatnot.=Le Fer. Il est utilisé pour fabriquer des armures, des outils et ainsi de suite. +Mossy Cobblestone=Pierre Moussue +Mossy Stone Bricks=Pierre Taillée Moussue +Mycelium=Mycélium +Mycelium is a type of dirt and the ideal soil for mushrooms. Unlike other dirt-type blocks, it can not be turned into farmland with a hoe. In light, mycelium slowly spreads over nearby dirt. Under an opaque block or a liquid, it eventually turns back into dirt.=Le mycélium est un type de terre et le sol idéal pour les champignons. Contrairement à d'autres blocs de terre, il ne peut pas être transformé en terres agricoles avec une houe. À la lumière, le mycélium se répand lentement sur la terre voisine. Sous un bloc opaque ou un liquide, il finit par redevenir de la terre. +Oak Bark=Écorce de Chêne +Oak Leaves=Feuilles de Chêne +Oak Sapling=Pousse de Chêne +Oak Wood=Bois de Chêne +Oak Wood Planks=Planches de Chêne +Oak leaves are grown from oak trees.=Les feuilles de chêne sont cultivées à partir de chênes. +Obsidian=Obsidienne +Obsidian is an extremely hard mineral with an enourmous blast-resistance. Obsidian is formed when water meets lava.=L'obsidienne est un minéral extrêmement dur avec une énorme résistance à l'explosion. L'obsidienne se forme lorsque l'eau rencontre la lave. +One of the most common blocks in the world, almost the entire underground consists of stone. It sometimes contains ores. Stone may be created when water meets lava.=L'un des blocs les plus courants au monde, presque tout le sous-sol est en pierre. Il contient parfois des minerais. La pierre peut être créée lorsque l'eau rencontre la lave. +Orange Stained Glass=Verre Orange +Packed Ice=Glace Compactée +Packed ice is a compressed form of ice. It is opaque and solid.=La glace compactée est une forme de glace comprimée. Elle est opaque et solide. +Paper=Papier +Paper is used to craft books and maps.=Le papier est utilisé pour créer des livres et des cartes. +Pink Stained Glass=Verre Rose +Podzol=Podzol +Podzol is a type of dirt found in taiga forests. Only a few plants are able to survive on it.=Le podzol est un type de terre trouvé dans les forêts de la taïga. Seules quelques plantes peuvent y survivre. +Polished Andesite=Andrésite Polie +Polished Diorite=Diorite Polie +Polished Granite=Granite Polie +Polished Stone=Roche Polie +Polished andesite is a decorative building block made from andesite.=L'andésite polie est un bloc de construction décoratif en andésite. +Polished diorite is a decorative building block made from diorite.=La diorite polie est un bloc de construction décoratif en diorite. +Polished granite is a decorative building block made from granite.=Le granit poli est un bloc de construction décoratif en granit. +Purple Stained Glass=Verre Violet +Realm Barrier=Barrière du royaume +Red Sand=Sable Rouge +Red Sandstone=Grès Rouge +Red Stained Glass=Verre Rouge +Red sand is found in large quantities in mesa biomes.=Le sable rouge se trouve en grande quantité dans les biomes mesa. +Red sandstone is compressed red sand and is a rather soft kind of stone.=Le grès rouge est du sable rouge comprimé et est une pierre plutôt tendre. +Redstone Ore=Minerai de Redstone +Redstone ore is commonly found near the bottom of the world. It glows when it is punched or walked upon.=Le minerai de Redstone se trouve généralement près du bas du monde. Il brille lorsqu'il est frappé ou piétiné. +Sand=Sable +Sand is found in large quantities at beaches and deserts.=Le sable se trouve en grande quantité sur les plages et les déserts. +Sandstone=Grès +Sandstone is compressed sand and is a rather soft kind of stone.=Le grès est du sable comprimé et est un type de pierre plutôt tendre. +Slime Block=Bloc de Slime +Slime blocks are very bouncy and prevent fall damage.=Les blocs de slime sont gonflables et empêchent les dommages de chute. +Smooth Red Sandstone=Grès Rouge Lisse +Smooth Sandstone=Grès Lisse +Smooth red sandstone is a decorative building block.=Le grès rouge lisse est un bloc de construction décoratif. +Smooth sandstone is compressed sand and is a rather soft kind of stone.=Le grès lisse est du sable comprimé et est un type de pierre plutôt tendre. +Snow=Neige +Some coal contained in stone, it is very common and can be found inside stone in medium to large clusters at nearly every height.=Du charbon contenu dans la pierre, il est très commun et peut être trouvé à l'intérieur de la pierre en grappes moyennes à grandes à presque toutes les hauteurs. +Some iron contained in stone, it is prety common and can be found below sea level.=Du fer contenu dans la pierre, il est assez courant et se trouve sous le niveau de la mer. +Spruce Bark=Écorce de Sapin +Spruce Leaves=Feuilles de Sapin +Spruce Sapling=Pousse de Sapin +Spruce Wood=Bois de Sapin +Spruce Wood Planks=Planches de Sapin +Spruce leaves are grown from spruce trees.=Les feuilles de sapin sont cultivées à partir de sapin. +Stained glass is a decorative and mostly transparent block which comes in various different colors.=Le verre est un bloc décoratif et principalement transparent qui se décline en différentes couleurs. +Stick=Bâton +Sticks are a very versatile crafting material; used in countless crafting recipes.=Les bâtons sont un matériau d'artisanat très polyvalent; utilisé dans d'innombrables recettes d'artisanat. +Stone=Roche +Stone Bricks=Pierre Taillé +Sugar=Sucre +Sugar Canes=Canne à Sucre +Sugar canes are a plant which has some uses in crafting. Sugar canes will slowly grow up to 3 blocks when they are next to water and are placed on a grass block, dirt, sand, red sand, podzol or coarse dirt. When a sugar cane is broken, all sugar canes connected above will break as well.=Les cannes à sucre sont une plante qui a certaines utilisations dans l'artisanat. Les cannes à sucre poussent lentement jusqu'à 3 blocs lorsqu'elles sont à côté de l'eau et sont placées sur un bloc d'herbe, de saleté, de sable, de sable rouge, de podzol ou de saleté grossière. Lorsqu'une canne à sucre est cassée, toutes les cannes à sucre connectées ci-dessus se brisent également. +Sugar canes can only be placed top of other sugar canes and on top of blocks on which they would grow.=Les cannes à sucre ne peuvent être placées que sur d'autres cannes à sucre et sur des blocs sur lesquels elles poussent. +Sugar comes from sugar canes and is used to make sweet foods.=Le sucre provient des cannes à sucre et est utilisé pour fabriquer des aliments sucrés. +The trunk of a birch tree.=Le tronc d'un bouleau. +The trunk of a dark oak tree.=Le tronc d'un chêne noir. +The trunk of a jungle tree.=Le tronc d'un acajou. +The trunk of a spruce tree.=Le tronc d'un sapin. +The trunk of an acacia.=Le tronc d'un acacia +The trunk of an oak tree.=Le tronc d'un chêne. +This block consists of a couple of loose stones and can't support itself.=Ce bloc se compose de quelques pierres lâches et ne peut pas se soutenir. +This is a decorative block surrounded by the bark of a tree trunk.=Il s'agit d'un bloc décoratif entouré par l'écorce d'un tronc d'arbre. +This is a full block of snow. Snow of this thickness is usually found in areas of extreme cold.=Ceci est un bloc de neige complet. La neige de cette épaisseur se trouve généralement dans les zones de froid extrême. +This is a piece of cactus commonly found in dry areas, especially deserts. Over time, cacti will grow up to 3 blocks high on sand or red sand. A cactus hurts living beings touching it with a damage of 1 HP every half second. When a cactus block is broken, all cactus blocks connected above it will break as well.=Il s'agit d'un morceau de cactus que l'on trouve couramment dans les zones sèches, en particulier dans les déserts. Au fil du temps, les cactus pousseront jusqu'à 3 blocs de haut sur le sable ou le sable rouge. Un cactus blesse les êtres vivants qui le touchent avec des dégâts de 1 HP toutes les demi-secondes. Lorsqu'un bloc de cactus est brisé, tous les blocs de cactus connectés au-dessus se brisent également. +This stone contains pure gold, a rare metal.=Cette pierre contient de l'or pur, un métal rare. +Top Snow=neige +Top snow is a layer of snow. It melts near light sources other than the sun with a light level of 12 or higher.=La neige est une couche de neige. Il fond près de sources lumineuses autres que le soleil avec un niveau de lumière de 12 ou plus. +Vines=Lianes +Vines are climbable blocks which can be placed on the sides of solid full-cube blocks. Vines slowly grow and spread.=Les lianes sont des blocs grimpants qui peuvent être placés sur les côtés de blocs pleins. Les lianes poussent et s'étendent lentement. +Void=Néant +Water=Eau +Water Source=Source d'Eau +Water is abundant in oceans and also appears in a few springs in the ground. You can swim easily in water, but you need to catch your breath from time to time.=L'eau est abondante dans les océans et apparaît également dans quelques sources dans le sol. Vous pouvez nager facilement dans l'eau, mais vous devez de temps en temps reprendre votre souffle. +When placed on soil (such as dirt) and exposed to light, a birch sapling will grow into a birch after some time.=Lorsqu'il est placé sur le sol (comme la terre) et exposé à la lumière, un jeune arbre de bouleau se transforme en bouleau après un certain temps. +When placed on soil (such as dirt) and exposed to light, a jungle sapling will grow into a jungle tree after some time. When there are 4 jungle saplings in a 2×2 square, they will grow to a huge jungle tree.=Lorsqu'il est placé sur le sol (comme la terre) et exposé à la lumière, une pousse d'Acajou se transforme en arbre d'Acajou après un certain temps. Quand il y a 4 pousses d'Acajou dans un carré 2×2, ils deviendront un énorme arbre d'Acajou. +When placed on soil (such as dirt) and exposed to light, a spruce sapling will grow into a spruce after some time. When there are 4 spruce saplings in a 2×2 square, they will grow to a huge spruce.=Lorsqu'il est placé sur le sol (comme la terre) et exposé à la lumière, un pousse de sapin se transforme en sapin après un certain temps. Lorsqu'il y a 4 pousses de sapin dans un carré 2×2, elles deviendront un énorme sapin. +When placed on soil (such as dirt) and exposed to light, an acacia sapling will grow into an acacia after some time.=Lorsqu'il est placé sur le sol (comme la terre) et exposé à la lumière, un pousse d'acacia se développera en un acacia après un certain temps. +When placed on soil (such as dirt) and exposed to light, an oak sapling will grow into an oak after some time.=Lorsqu'il est placé sur le sol (comme la terre) et exposé à la lumière, une pousse de chêne se transforme en chêne après un certain temps. +When you hold a barrier in hand, you reveal all placed barriers in a short distance around you.=Lorsque vous tenez une barrière en main, vous révélez toutes les barrières placées à une courte distance autour de vous. +White Stained Glass=Verre Blanc +Yellow Stained Glass=Verre Jaune +“Coal” refers to coal lumps obtained by digging coal ore which can be found underground. Coal is your standard furnace fuel, but it can also be used to make torches, coal blocks and a few other things.=Le "charbon" fait référence aux morceaux de charbon obtenus en creusant du minerai de charbon qui peut être trouvé sous terre. Le charbon est votre combustible de four standard, mais il peut également être utilisé pour fabriquer des torches, des blocs de charbon et quelques autres choses. +Water interacts with lava in various ways:=L'eau interagit avec la lave de différentes manières: +• When water is directly above or horizontally next to a lava source, the lava turns into obsidian.=• Lorsque l'eau est directement au-dessus ou horizontalement à côté d'une source de lave, la lave se transforme en obsidienne. +• When flowing water touches flowing lava either from above or horizontally, the lava turns into cobblestone.=• Lorsque l'eau qui coule touche la lave qui coule par le haut ou horizontalement, la lave se transforme en pierre. +• When water is directly below lava, the water turns into stone.=• Lorsque l'eau est directement sous la lave, l'eau se transforme en pierre. +Lava interacts with water various ways:=La lave interagit avec l'eau de différentes manières: +• When a lava source is directly below or horizontally next to water, the lava turns into obsidian.=• Lorsqu'une source de lave se trouve directement sous ou horizontalement à côté de l'eau, la lave se transforme en obsidienne. +• When lava is directly above water, the water turns into stone.=• Lorsque la lave est directement au-dessus de l'eau, l'eau se transforme en pierre. +Stained Glass=Verre teinté +Granite is an igneous rock.=Le granit est une roche ignée. +Top snow can be stacked and has one of 8 different height levels. At levels 2-8, top snow is collidable. Top snow drops 2-9 snowballs, depending on its height.=La neige peut être empilée et a l'un des 8 niveaux de hauteur différents. Aux niveaux 2 à 8, la neige provoque des collisions. La neige laisse tomber 2-9 boules de neige, selon sa hauteur. +This block can only be placed on full solid blocks and on another top snow (which increases its height).=Ce bloc ne peut être placé que sur des blocs pleins et sur une autre neige (ce qui augmente sa hauteur). +Needs soil and water to grow=A besoin de terre et d'eau pour se développer +Grows on sand=Pousse sur le sable +Contact damage: @1 per half second=Dommages de contact: @1 par demi-seconde +Slows down movement=Ralentit le mouvement +2×2 saplings required=2×2 pousses requis +2×2 saplings @= large tree=2×2 pousses @= grand arbre +Grows on sand or dirt next to water=Pousse sur le sable ou la terre près de l'eau +Stackable=Empilable diff --git a/mods/ITEMS/mcl_crafting_table/locale/mcl_crafting_table.fr.tr b/mods/ITEMS/mcl_crafting_table/locale/mcl_crafting_table.fr.tr new file mode 100644 index 00000000..23caccff --- /dev/null +++ b/mods/ITEMS/mcl_crafting_table/locale/mcl_crafting_table.fr.tr @@ -0,0 +1,8 @@ +# textdomain: mcl_crafting_table +Crafting Table=Etabli +A crafting table is a block which grants you access to a 3×3 crafting grid which allows you to perform advanced crafts.=Un établi est un bloc qui vous donne accès à une grille d'établi 3×3 qui vous permet d'effectuer des objets avancés. +Rightclick the crafting table to access the 3×3 crafting grid.=Faites un clic droit sur l'établi pour accéder à la grille d'établi 3x3. +Recipe book=Livre de Recette +Crafting=Fabriquer +Inventory=Inventaire +3×3 crafting grid=Grille d'établi 3×3 diff --git a/mods/ITEMS/mcl_doors/locale/mcl_doors.fr.tr b/mods/ITEMS/mcl_doors/locale/mcl_doors.fr.tr new file mode 100644 index 00000000..9d1f25d9 --- /dev/null +++ b/mods/ITEMS/mcl_doors/locale/mcl_doors.fr.tr @@ -0,0 +1,24 @@ +# textdomain: mcl_doors +Wooden doors are 2-block high barriers which can be opened or closed by hand and by a redstone signal.=Les portes en bois sont des barrières hautes à 2 blocs qui peuvent être ouvertes ou fermées à la main et par un signal redstone. +To open or close a wooden door, rightclick it or supply its lower half with a redstone signal.=Pour ouvrir ou fermer une porte en bois, faites un clic droit dessus ou fournissez à sa moitié inférieure un signal redstone. +Oak Door=Porte en Chêne +Acacia Door=Porte en Acacia +Birch Door=Porte en Bouleau +Dark Oak Door=Porte en Chêne Noir +Jungle Door=Porte en Acajou +Spruce Door=Porte en Sapin +Iron Door=Porte en Fer +Iron doors are 2-block high barriers which can only be opened or closed by a redstone signal, but not by hand.=Les portes en fer sont des barrières hautes à 2 blocs qui ne peuvent être ouvertes ou fermées que par un signal redstone, mais pas à la main. +To open or close an iron door, supply its lower half with a redstone signal.=Pour ouvrir ou fermer une porte en fer, fournir à sa moitié inférieure un signal redstone. +Oak Trapdoor=Trappe en Chêne +Acacia Trapdoor=Trappe en Acacia +Birch Trapdoor=Trappe en Bouleau +Spruce Trapdoor=Trappe en Sapin +Dark Oak Trapdoor=Trappe en Chêne Noir +Jungle Trapdoor=Trappe en Acajou +Wooden trapdoors are horizontal barriers which can be opened and closed by hand or a redstone signal. They occupy the upper or lower part of a block, depending on how they have been placed. When open, they can be climbed like a ladder.=Les trappes en bois sont des barrières horizontales qui peuvent être ouvertes et fermées à la main ou par un signal redstone. Ils occupent la partie supérieure ou inférieure d'un bloc, selon la façon dont ils ont été placés. Lorsqu'elles sont ouvertes, elles peuvent être montées comme une échelle. +To open or close the trapdoor, rightclick it or send a redstone signal to it.=Pour ouvrir ou fermer la trappe, faites un clic droit dessus ou envoyez-lui un signal redstone. +Iron Trapdoor=Trappe en Fer +Iron trapdoors are horizontal barriers which can only be opened and closed by redstone signals, but not by hand. They occupy the upper or lower part of a block, depending on how they have been placed. When open, they can be climbed like a ladder.=Les trappes en fer sont des barrières horizontales qui ne peuvent être ouvertes et fermées que par des signaux de redstone, mais pas à la main. Ils occupent la partie supérieure ou inférieure d'un bloc, selon la façon dont ils ont été placés. Lorsqu'elles sont ouvertes, elles peuvent être montées comme une échelle. +Openable by players and redstone power=Ouvrable par les joueurs et puissance redstone +Openable by redstone power=Ouvrable par la puissance redstone diff --git a/mods/ITEMS/mcl_dye/locale/mcl_dye.fr.tr b/mods/ITEMS/mcl_dye/locale/mcl_dye.fr.tr new file mode 100644 index 00000000..75e5992f --- /dev/null +++ b/mods/ITEMS/mcl_dye/locale/mcl_dye.fr.tr @@ -0,0 +1,27 @@ +# textdomain: mcl_dye +Bone Meal=Poudre d'Os +Light Grey Dye=Teinture Gris Clair +Grey Dye=Teinture Gris +Ink Sac=Poche d'Encre +Purple Dye=Teinture Violette +Lapis Lazuli=Lapis Lazuli +Light Blue Dye=Teinture Bleu Clair +Cyan Dye=Teinture Cyan +Cactus Green=Cactus Vert +Lime Dye=Teinture Vert Citron +Dandelion Yellow=Pissenlit Jaune +Cocoa Beans=Fèves de Cacao +Orange Dye=Teinture Orange +Rose Red=Rose Rouge +Magenta Dye=Teinture Magenta +Pink Dye=Teinture Rose +This item is a dye which is used for dyeing and crafting.=Cet objet est un colorant utilisé pour la teinture et l'artisanat. +Rightclick on a sheep to dye its wool. Other things are dyed by crafting.=Clic droit sur un mouton pour teindre sa laine. D'autres choses sont teintes par l'artisanat. +Bone Meal=Farine d'Os +Bone meal is a white dye and also useful as a fertilizer to speed up the growth of many plants.=La farine d'os est une teinture blanche et également utile comme engrais pour accélérer la croissance de nombreuses plantes. +Rightclick a sheep to turn its wool white. Rightclick a plant to speed up its growth. Note that not all plants can be fertilized like this. When you rightclick a grass block, tall grass and flowers will grow all over the place.=Cliquez avec le bouton droit sur un mouton pour blanchir sa laine. Cliquez avec le bouton droit sur une plante pour accélérer sa croissance. Notez que toutes les plantes ne peuvent pas être fertilisées comme ça. Lorsque vous cliquez avec le bouton droit sur un bloc d'herbe, les hautes herbes et les fleurs poussent partout. +Cocoa beans are a brown dye and can be used to plant cocoas.=Les fèves de cacao ont une teinture brune et peuvent être utilisées pour planter du cacao. +Rightclick a sheep to turn its wool brown. Rightclick on the side of a jungle tree trunk (Jungle Wood) to plant a young cocoa.=Faites un clic droit sur un mouton pour brunir sa laine. Clic droit sur le côté d'un tronc d'arbre de la jungle (Bois Acajou) pour planter un jeune cacao. +Cocoa Beans=Fèves de Cacao +Grows at the side of jungle trees=Pousse à côté des arbres de la jungle +Speeds up plant growth=Accélère la croissance des plantes diff --git a/mods/ITEMS/mcl_end/locale/mcl_end.fr.tr b/mods/ITEMS/mcl_end/locale/mcl_end.fr.tr new file mode 100644 index 00000000..4254dbf3 --- /dev/null +++ b/mods/ITEMS/mcl_end/locale/mcl_end.fr.tr @@ -0,0 +1,28 @@ +# textdomain: mcl_end +End Stone=Pierre de L'End +End Stone Bricks=Brique de l'End& +Purpur Block=Bloc de Purpur +Purpur Pillar=Bloc de Purpur Sculpté +End Rod=Barre de l'End +End rods are decorative light sources.=Les barres de l'End sont des sources de lumière décoratives. +Dragon Egg=Oeuf de Dragon +A dragon egg is a decorative item which can be placed.=Un oeuf de dragon est un objet décoratif qui peut être placé. +Chorus Flower=Plante de Chorus +A chorus flower is the living part of a chorus plant. It can grow into a tall chorus plant, step by step. When it grows, it may die on old age eventually. It also dies when it is unable to grow.=Une fleur de chorus est la partie vivante d'une plante de chorus. Il peut devenir une grande plante de chorus, étape par étape. Quand elle grandit, elle peut finir par mourir en vieillissant. Elle meurt également lorsqu'il est incapable de grandir. +Place it and wait for it to grow. It can only be placed on top of end stone, on top of a chorus plant stem, or at the side of exactly one chorus plant stem.=Placez-la et attendez qu'elle grandisse. Elle ne peut être placée que sur le dessus de la pierre d'End, sur le dessus d'une tige de plante de chorus ou exactement sur le côté d'une tige de plante de chorus. +Dead Chorus Flower=Plante de Chorus Morte +This is a part of a chorus plant. It doesn't grow. Chorus flowers die of old age or when they are unable to grow. A dead chorus flower can be harvested to obtain a fresh chorus flower which is able to grow again.=Ceci fait partie d'une plante de chorus. Ça ne pousse pas. Les fleurs de chorus meurent de vieillesse ou lorsqu'elles ne peuvent pas pousser. Une fleur de chorus morte peut être récoltée pour obtenir une fleur de chorus fraîche qui peut repousser. +Chorus Plant Stem=Tige de Plante de Chorus +A chorus plant stem is the part of a chorus plant which holds the whole plant together. It needs end stone as its soil. Stems are grown from chorus flowers.=Une tige de plante de chorus est la partie d'une plante de chorus qui maintient la plante entière ensemble. Il a besoin de pierre d'End comme sol. Les tiges sont issues de fleurs de chorus. +Chorus Fruit=Fruit de Chorus +A chorus fruit is an edible fruit from the chorus plant which is home to the End. Eating it teleports you to the top of a random solid block nearby, provided you won't end up inside a liquid, solid or harmful blocks. Teleportation might fail if there are very few or no places to teleport to.=Un fruit de chorus est un fruit comestible de l'usine de chorus qui abrite la fin. Le manger vous téléporte au sommet d'un bloc solide aléatoire à proximité, à condition de ne pas vous retrouver dans un bloc liquide, solide ou nuisible. La téléportation peut échouer s'il y a très peu ou pas d'endroits où se téléporter. +Popped Chorus Fruit=Chorus Eclaté +Eye of Ender=Oeil de l'Ender +This item is used to locate End portal shrines in the Overworld and to activate End portals.=Cet objet est utilisé pour localiser les sanctuaires du portail End dans l'Overworld et pour activer les portails End. +Use the attack key to release the eye of ender. It will rise and fly in the horizontal direction of the closest end portal shrine. If you're very close, the eye of ender will take the direct path to the End portal shrine instead. After a few seconds, it stops. It may drop as an item, but there's a 20% chance it shatters.=Utilisez la touche d'attaque pour libérer l'oeil d'ender. Il s'élèvera et volera dans la direction horizontale du sanctuaire portail d'Ender le plus proche. Si vous êtes très proche, l'oeil d'ender empruntera le chemin direct vers le sanctuaire du portail de l'End. Après quelques secondes, il s'arrête. Il peut tomber en tant qu'objet, mais il y a 20% de chances qu'il se brise. +To activate an End portal, eyes of ender need to be placed into each block of an intact End portal frame.=Pour activer un portail d'End, les yeux d'ender doivent être placés dans chaque bloc d'un cadre de portail d'End intact. +NOTE: The End dimension is currently incomplete and might change in future versions.=REMARQUE: la dimension de l'End est actuellement incomplète et pourrait changer dans les futures versions. +The stem attaches itself to end stone and other chorus blocks.=La tige s'attache à la pierre d'End et à d'autres blocs de chorus. +Grows on end stone=Pousse sur la pierre d'End +Randomly teleports you when eaten=Vous téléporte au hasard quand il est mangé +Guides the way to the mysterious End dimension=Guide le chemin vers la dimension mystérieuse de l'End diff --git a/mods/ITEMS/mcl_farming/locale/mcl_farming.fr.tr b/mods/ITEMS/mcl_farming/locale/mcl_farming.fr.tr new file mode 100644 index 00000000..5eb3e05d --- /dev/null +++ b/mods/ITEMS/mcl_farming/locale/mcl_farming.fr.tr @@ -0,0 +1,99 @@ +# textdomain: mcl_farming +Beetroot Seeds=Graines de Betterave +Grows into a beetroot plant. Chickens like beetroot seeds.=Pousse en bettrave. Les poulets aiment les graines de betterave +Place the beetroot seeds on farmland (which can be created with a hoe) to plant a beetroot plant. They grow in sunlight and grow faster on hydrated farmland. Rightclick an animal to feed it beetroot seeds.=Placez les graines de betterave sur les terres agricoles (qui peuvent être créées avec une houe) pour planter un plant de betterave. Elles poussent au soleil et poussent plus vite sur les terres agricoles hydratées. Faites un clic droit sur un animal pour le nourrir de graines de betteraves. +Beetroot plants are plants which grow on farmland under sunlight in 4 stages. On hydrated farmland, they grow a bit faster. They can be harvested at any time but will only yield a profit when mature.=Les plants de betteraves poussent sur les terres agricoles sous le soleil en 4 étapes. Sur les terres agricoles hydratées, elles poussent un peu plus vite. Elles peuvent être récoltées à tout moment mais ne rapporteront de bénéfices qu'à maturité. +Premature Beetroot Plant=Plant de Betterave Prématurée +Premature Beetroot Plant (Stage 1)=Plant de Betterave Prématurée (Etape 1) +Premature Beetroot Plant (Stage 2)=Plant de Betterave Prématurée (Etape 2) +Premature Beetroot Plant (Stage 3)=Plant de Betterave Prématurée (Etape 3) +Mature Beetroot Plant=Betterave Mature +A mature beetroot plant is a farming plant which is ready to be harvested for a beetroot and some beetroot seeds. It won't grow any further.=Une betterave mature est une plante agricole prête à être récoltée pour une betterave et quelques graines de betterave. Elle ne grandira plus. +Beetroot=Betterave +Beetroots are both used as food item and a dye ingredient. Pigs like beetroots, too.=Les betteraves sont à la fois utilisées comme aliment et comme ingrédient colorant. Les porcs aiment aussi les betteraves. +Hold it in your hand and right-click to eat it. Rightclick an animal to feed it.=Tenez-le dans votre main et faites un clic droit pour le manger. Faites un clic droit sur un animal pour le nourrir. +Beetroot Soup=Soupe de Betterave +Beetroot soup is a food item.=La soupe de betterave est un aliment. +Premature Carrot Plant=Plant de Carrote Prématurée +Carrot plants are plants which grow on farmland under sunlight in 8 stages, but only 4 stages can be visually told apart. On hydrated farmland, they grow a bit faster. They can be harvested at any time but will only yield a profit when mature.=Les plants de carotte sont des plantes qui poussent sur les terres agricoles sous la lumière du soleil en 8 étapes, mais seulement 4 étapes peuvent être distinguées visuellement. Sur les terres agricoles hydratées, elles poussent un peu plus vite. Ils peuvent être récoltés à tout moment mais ne rapporteront de bénéfices qu'à maturité. +Premature Carrot Plant (Stage @1)=Plant de Carrote Prématurée (Etape 1) +Mature Carrot Plant=Plant de Carotte Mature +Mature carrot plants are ready to be harvested for carrots. They won't grow any further.=Les plants de carottes matures sont prêts à être récoltés pour les carottes. Ils ne grandiront plus. +Carrot=Carrotte +Carrots can be eaten and planted. Pigs and rabbits like carrots.=Les carottes peuvent être mangées et plantées. Les cochons et les lapins comme les carottes. +Hold it in your hand and rightclick to eat it. Place it on top of farmland to plant the carrot. It grows in sunlight and grows faster on hydrated farmland. Rightclick an animal to feed it.=Tenez-la dans votre main et faites un clic droit pour le manger. Placez-le au-dessus des terres agricoles pour planter la carotte. Elle pousse au soleil et pousse plus vite sur les terres agricoles hydratées. Faites un clic droit sur un animal pour le nourrir. +Golden Carrot=Carrot Dorée +A golden carrot is a precious food item which can be eaten. It is really, really filling!=Une carotte dorée est un aliment précieux qui peut être mangé. C'est vraiment, vraiment rassasiant! +Hoes are essential tools for growing crops. They are used to create farmland in order to plant seeds on it. Hoes can also be used as very weak weapons in a pinch.=Les houes sont des outils essentiels pour faire pousser des cultures. Ils sont utilisés pour créer des terres agricoles afin d'y planter des graines. Les houes peuvent également être utilisées comme armes très faibles à la rigueur. +Use the hoe on a cultivatable block (by rightclicking it) to turn it into farmland. Dirt, grass blocks and grass paths are cultivatable blocks. Using a hoe on coarse dirt turns it into dirt.=Utilisez la houe sur un bloc cultivable (en cliquant dessus avec le bouton droit) pour le transformer en terre agricole. La saleté, les blocs d'herbe et les chemins d'herbe sont des blocs cultivables. L'utilisation d'une houe sur la terre grossière la transforme en terre. +Wood Hoe=Houe en Bois +Stone Hoe=Houe en Pierre +Iron Hoe=Houe en Fer +Golden Hoe=Houe en Or +Diamond Hoe=Houe en Diamant +Melon Seeds=Graine de Pastèque +Grows into a melon stem which in turn grows melons. Chickens like melon seeds.=Se développe en une tige de pastèque qui à son tour forme des pastèques. Les poulets aiment les graines de pastèque. +Place the melon seeds on farmland (which can be created with a hoe) to plant a melon stem. Melon stems grow in sunlight and grow faster on hydrated farmland. When mature, the stem will attempt to grow a melon at the side. Rightclick an animal to feed it melon seeds.=Placez les graines de pastèque sur les terres agricoles (qui peuvent être créées avec une houe) pour planter une tige de pastèque. Les tiges de pastèque poussent au soleil et se développent plus rapidement sur les terres agricoles hydratées. À maturité, la tige tentera de faire pousser une pastèque sur le côté. Faites un clic droit sur un animal pour le nourrir de graines de pastèque. +Melon=Pastèque +A melon is a block which can be grown from melon stems, which in turn are grown from melon seeds. It can be harvested for melon slices.=Une pastèque est un bloc qui peut être cultivé à partir de tiges de pastèque, qui à leur tour sont cultivées à partir de graines de pastèque. Elle peut être récoltée pour des tranches de pastèque. +Premature Melon Stem=Tige de Pastèque Prématurée +Melon stems grow on farmland in 8 stages. On hydrated farmland, the growth is a bit quicker. Mature melon stems are able to grow melons.=Les tiges de pastèque poussent sur les terres agricoles en 8 étapes. Sur les terres agricoles hydratées, la croissance est un peu plus rapide. Les tiges de pastèque matures sont capables de faire pousser des pastèques. +Premature Melon Stem (Stage @1)=Tige de Pastèque Prématurée (Etape @1) +Mature Melon Stem=Tige de Pastèque Mature +A mature melon stem attempts to grow a melon at one of its four adjacent blocks. A melon can only grow on top of farmland, dirt, or a grass block. When a melon is next to a melon stem, the melon stem immediately bends and connects to the melon. While connected, a melon stem can't grow another melon. As soon all melons around the stem have been removed, it loses the connection and is ready to grow another melon.=Une tige de pastèque mature tente de faire pousser un pastèque sur l'un de ses quatre blocs adjacents. Une pastèque ne peut pousser que sur des terres agricoles, de la terre ou un bloc d'herbe. Lorsqu'une pastèque est à côté d'une tige de pastèque, la tige de pastèque se plie immédiatement et se connecte au melon. Lorsqu'elle est connectée, une tige de pastèque ne peut pas faire pousser une autre pastèque. Dès que tous les pastèques autour de la tige ont été supprimés, elle perd la connexion et est prêt à faire pousser une autre pastèque. +Melon Slice=Tranche de Pastèque +This is a food item which can be eaten.=Il s'agit d'un aliment qui peut être mangé. +Premature Potato Plant=Plant de Pomme de Terre Prématuré +Potato plants are plants which grow on farmland under sunlight in 8 stages, but only 4 stages can be visually told apart. On hydrated farmland, they grow a bit faster. They can be harvested at any time but will only yield a profit when mature.=Les plants de pommes de terre sont des plants qui poussent sur les terres agricoles sous la lumière du soleil en 8 étapes, mais seulement 4 étapes peuvent être distinguées visuellement. Sur les terres agricoles hydratées, elles poussent un peu plus vite. Ils peuvent être récoltés à tout moment mais ne rapporteront de bénéfices qu'à maturité. +Premature Potato Plant (Stage @1)=Plant de pomme de terre prématuré (Etape @1) +Mature Potato Plant=Plant de Pomme de Terre Mature +Mature potato plants are ready to be harvested for potatoes. They won't grow any further.=Les plants de pommes de terre matures sont prêts à être récoltés pour les pommes de terre. Ils ne grandiront plus. +Potato=Pomme de terre +Potatoes are food items which can be eaten, cooked in the furnace and planted. Pigs like potatoes.=Les pommes de terre sont des aliments qui peuvent être consommés, cuits au four et plantés. Des porcs comme des pommes de terre. +Hold it in your hand and rightclick to eat it. Place it on top of farmland to plant it. It grows in sunlight and grows faster on hydrated farmland. Rightclick an animal to feed it.=Tenez-le dans votre main et faites un clic droit pour le manger. Placez-le au-dessus des terres agricoles pour le planter. Il pousse au soleil et pousse plus vite sur les terres agricoles hydratées. Faites un clic droit sur un animal pour le nourrir. +Baked Potato=Pomme de Terre au Four +Baked potatoes are food items which are more filling than the unbaked ones.=Les pommes de terre au four sont des aliments qui sont plus copieux que ceux non cuits. +Poisonous Potato=Pomme de Terre Toxique +This potato doesn't look too healthy. You can eat it to restore hunger points, but there's a 60% chance it will poison you briefly.=Cette pomme de terre n'a pas l'air trop saine. Vous pouvez le manger pour restaurer des points de faim, mais il y a 60% de chances qu'il vous empoisonne brièvement. +Pumpkin Seeds=Graines de Citrouille +Grows into a pumpkin stem which in turn grows pumpkins. Chickens like pumpkin seeds.=Pousse dans une tige de citrouille qui à son tour fait pousser des citrouilles. Les poulets aiment des graines de citrouille. +Place the pumpkin seeds on farmland (which can be created with a hoe) to plant a pumpkin stem. Pumpkin stems grow in sunlight and grow faster on hydrated farmland. When mature, the stem attempts to grow a pumpkin next to it. Rightclick an animal to feed it pumpkin seeds.=Placez les graines de citrouille sur les terres agricoles (qui peuvent être créées avec une houe) pour planter une tige de citrouille. Les tiges de citrouille poussent au soleil et poussent plus vite sur les terres agricoles hydratées. À maturité, la tige tente de faire pousser une citrouille à côté d'elle. Faites un clic droit sur un animal pour le nourrir de graines de citrouille. +Premature Pumpkin Stem=Tige de Citrouille Prématurée +Pumpkin stems grow on farmland in 8 stages. On hydrated farmland, the growth is a bit quicker. Mature pumpkin stems are able to grow pumpkins.=Les tiges de citrouille poussent sur les terres agricoles en 8 étapes. Sur les terres agricoles hydratées, la croissance est un peu plus rapide. Les tiges de citrouille matures peuvent faire pousser des citrouilles. +Premature Pumpkin Stem (Stage @1)=Tige de Citrouille Prématurée (Etape @1) +Mature Pumpkin Stem=Tige de Citrouille Mature +A mature pumpkin stem attempts to grow a pumpkin at one of its four adjacent blocks. A pumpkin can only grow on top of farmland, dirt or a grass block. When a pumpkin is next to a pumpkin stem, the pumpkin stem immediately bends and connects to the pumpkin. A connected pumpkin stem can't grow another pumpkin. As soon all pumpkins around the stem have been removed, it loses the connection and is ready to grow another pumpkin.=Une tige de citrouille mature tente de faire pousser une citrouille dans l'un de ses quatre blocs adjacents. Une citrouille ne peut pousser que sur des terres agricoles, de la terre ou un bloc d'herbe. Lorsqu'une citrouille est à côté d'une tige de citrouille, la tige de citrouille se plie immédiatement et se connecte à la citrouille. Une tige de citrouille connectée ne peut pas faire pousser une autre citrouille. Dès que toutes les citrouilles autour de la tige ont été retirées, elle perd la connexion et est prête à faire pousser une autre citrouille. +Faceless Pumpkin=Citrouille sans visage +A faceless pumpkin is a decorative block. It can be carved with shears to obtain pumpkin seeds.=Une citrouille sans visage est un bloc décoratif. Il peut être sculpté avec une cisaille pour obtenir des graines de citrouille. +Pumpkin=Citrouille +A pumpkin can be worn as a helmet. Pumpkins grow from pumpkin stems, which in turn grow from pumpkin seeds.=Une citrouille peut être portée comme un casque. Les citrouilles poussent à partir de tiges de citrouille, qui à leur tour poussent à partir de graines de citrouille. +Jack o'Lantern=Citrouille-lanterne +A jack o'lantern is a traditional Halloween decoration made from a pumpkin. It glows brightly.=Une citrouille-lanterne est une décoration traditionnelle d'Halloween à base de citrouille. Il brille de mille feux. +Pumpkin Pie=Tarte à la Citrouille +A pumpkin pie is a tasty food item which can be eaten.=Une tarte à la citrouille est un aliment savoureux qui peut être mangé. +Farmland=Terres Agricoles +Farmland is used for farming, a necessary surface to plant crops. It is created when a hoe is used on dirt or a similar block. Plants are able to grow on farmland, but slowly. Farmland will become hydrated farmland (on which plants grow faster) when it rains or a water source is nearby. This block will turn back to dirt when a solid block appears above it or a piston arm extends above it.=Les terres agricoles sont utilisées pour l'agriculture, une surface nécessaire pour planter des cultures. Il est créé lorsqu'une houe est utilisée sur de la terre ou un bloc similaire. Les plantes peuvent pousser sur les terres agricoles, mais lentement. Les terres agricoles deviendront des terres agricoles hydratées (sur lesquelles les plantes poussent plus rapidement) lorsqu'il pleut ou lorsqu'une source d'eau est à proximité. Ce bloc redeviendra de la terre lorsqu'un bloc solide apparaît au-dessus ou qu'un bras de piston s'étend au-dessus. +Hydrated Farmland=Terres Agricoles Hydratées +Hydrated farmland is used in farming, this is where you can plant and grow some plants. It is created when farmland is under rain or near water. Without water, this block will dry out eventually. This block will turn back to dirt when a solid block appears above it or a piston arm extends above it.=Les terres agricoles hydratées sont utilisées dans l'agriculture, c'est là que vous pouvez planter et faire pousser certaines plantes. Il est créé lorsque les terres agricoles sont sous la pluie ou près de l'eau. Sans eau, ce bloc finira par se dessécher. Ce bloc redeviendra de la terre lorsqu'un bloc solide apparaît au-dessus ou qu'un bras de piston s'étend au-dessus. +Wheat Seeds=Graines de blé +Grows into a wheat plant. Chickens like wheat seeds.=Se transforme en blé. Les poulets aiment les graines de blé. +Place the wheat seeds on farmland (which can be created with a hoe) to plant a wheat plant. They grow in sunlight and grow faster on hydrated farmland. Rightclick an animal to feed it wheat seeds.=Placez les graines de blé sur les terres agricoles (qui peuvent être créées avec une houe) pour planter une plante de blé. Ils poussent au soleil et poussent plus vite sur les terres agricoles hydratées. Faites un clic droit sur un animal pour le nourrir de graines de blé. +Premature Wheat Plant=Plant de Blé Prématurée +Premature wheat plants grow on farmland under sunlight in 8 stages. On hydrated farmland, they grow faster. They can be harvested at any time but will only yield a profit when mature.=Les plants de blé prématurés poussent sur les terres agricoles sous la lumière du soleil en 8 étapes. Sur les terres agricoles hydratées, ils croissent plus rapidement. Ils peuvent être récoltés à tout moment mais ne rapporteront de bénéfices qu'à maturité. +Premature Wheat Plant (Stage @1)=Plant de blé prématurée (Etape @1) +Mature Wheat Plant=Plant de Blé Maturée +Mature wheat plants are ready to be harvested for wheat and wheat seeds. They won't grow any further.=Les plants de blé matures sont prêts à être récoltés pour le blé et les graines de blé. Ils ne grandiront plus. +Wheat=Blé +Wheat is used in crafting. Some animals like wheat.=Le blé est utilisé dans l'artisanat. Certains animaux aiment le blé. +Cookie=Cookie +Bread=Pain +Hay Bale=Balle de Foin +Hay bales are decorative blocks made from wheat.=Les balles de foin sont des blocs décoratifs en blé. +To carve a face into the pumpkin, use the shears on the side you want to carve.=Pour sculpter un visage dans la citrouille, utilisez les cisailles du côté que vous souhaitez sculpter. +Use the “Place” key on an animal to try to feed it wheat.=Utilisez la touche "Placer" sur un animal pour essayer de le nourrir de blé. +Grows on farmland=Grows on farmland +Turns block into farmland=Transforme un bloc en terres agricoles +60% chance of poisoning=60% de chances d'empoisonnement +Surface for crops=Surface for crops +Can become wet=Peut devenir humide +Uses: @1=Utilisations: @1 diff --git a/mods/ITEMS/mcl_fences/locale/mcl_fences.fr.tr b/mods/ITEMS/mcl_fences/locale/mcl_fences.fr.tr new file mode 100644 index 00000000..ccfb86d9 --- /dev/null +++ b/mods/ITEMS/mcl_fences/locale/mcl_fences.fr.tr @@ -0,0 +1,18 @@ +# textdomain: mcl_fences +Fences are structures which block the way. Fences will connect to each other and solid blocks. They cannot be jumped over with a simple jump.=Les barrières sont des structures qui bloquent le chemin. Les barrières se connecteront les unes aux autres et aux blocs solides. Ils ne peuvent pas être sautés par un simple saut. +Fence gates can be opened or closed and can't be jumped over. Fences will connect nicely to fence gates.=Les portillions peuvent être ouvertes ou fermées et ne peuvent pas être sautées. Les barrières se connecteront bien aux portillions. +Right-click the fence gate to open or close it.=Cliquez avec le bouton droit sur le portillion pour l'ouvrir ou la fermer. +Oak Fence=Barrière en bois de Chêne +Oak Fence Gate=Portillion en bois de Chêne +Spruce Fence=Barrière en bois de Sapin +Spruce Fence Gate=Portillion en bois de Sapin +Birch Fence=Barrière en bois de Bouleau +Birch Fence Gate=Portillion en bois de Bouleau +Jungle Fence=Barrière en bois d'Acajou +Jungle Fence Gate=Portillion en bois d'Acajou +Dark Oak Fence=Barrière en bois de Chêne Noir +Dark Oak Fence Gate=Portillion en bois de Chêne Noir +Acacia Fence=Barrière en bois d'Acacia +Acacia Fence Gate=Portillion en bois d'Acacia +Nether Brick Fence=Barrière en Brique du Nether +Openable by players and redstone power=Ouvrable par les joueurs et la puissance redstone diff --git a/mods/ITEMS/mcl_fire/locale/mcl_fire.fr.tr b/mods/ITEMS/mcl_fire/locale/mcl_fire.fr.tr new file mode 100644 index 00000000..60b6ffd0 --- /dev/null +++ b/mods/ITEMS/mcl_fire/locale/mcl_fire.fr.tr @@ -0,0 +1,19 @@ +# textdomain: mcl_fire +Fire Charge=Boule de Feu +Fire charges are primarily projectiles which can be launched from dispensers, they will fly in a straight line and burst into a fire on impact. Alternatively, they can be used to ignite fires directly.=Les boules de feu sont principalement des projectiles qui peuvent être lancés à partir de distributeurs, ils voleront en ligne droite et éclateront en feu à l'impact. Alternativement, ils peuvent être utilisés pour allumer des incendies directement. +Put the fire charge into a dispenser and supply it with redstone power to launch it. To ignite a fire directly, simply place the fire charge on the ground, which uses it up.=Mettez la boule de feu dans un distributeur et alimentez-la en redstone pour la lancer. Pour allumer un feu directement, placez simplement la charge de feu sur le sol, et utiliser le. +Flint and Steel=Briquet +Flint and steel is a tool to start fires and ignite blocks.=Le Briquet est uo outil pour allumer un feu ou allumer des blocs. +Rightclick the surface of a block to attempt to light a fire in front of it or ignite the block. A few blocks have an unique reaction when ignited.=Cliquez avec le bouton droit sur la surface d'un bloc pour tenter d'allumer un feu devant lui ou d'allumer le bloc. Quelques blocs ont une réaction unique lorsqu'ils sont enflammés. +Fire is a damaging and destructive but short-lived kind of block. It will destroy and spread towards near flammable blocks, but fire will disappear when there is nothing to burn left. It will be extinguished by nearby water and rain. Fire can be destroyed safely by punching it, but it is hurtful if you stand directly in it. If a fire is started above netherrack or a magma block, it will immediately turn into an eternal fire.=Le feu est un type de bloc dommageable et destructeur mais de courte durée. Il se détruira et se propagera vers des blocs proches de produits inflammables, mais le feu disparaîtra lorsqu'il n'y aura plus rien à brûler. Il sera éteint par l'eau et la pluie à proximité. Le feu peut être détruit en toute sécurité en le frappant, mais il est blessant si vous vous tenez directement dedans. Si un feu est déclenché au-dessus d'un netherrack ou d'un bloc de magma, il se transformera immédiatement en un feu éternel. +Fire is a damaging but non-destructive short-lived kind of block. It will disappear when there is no flammable block around. Fire does not destroy blocks, at least not in this world. It will be extinguished by nearby water and rain. Fire can be destroyed safely by punching it, but it is hurtful if you stand directly in it. If a fire is started above netherrack or a magma block, it will immediately turn into an eternal fire.=Le feu est un type de bloc éphémère mais non destructif de courte durée. Il disparaîtra en l'absence de bloc inflammable. Le feu ne détruit pas les blocs, du moins pas dans ce monde. Il sera éteint par l'eau et la pluie à proximité. Le feu peut être détruit en toute sécurité en le frappant, mais il est blessant si vous vous tenez directement dedans. Si un feu est déclenché au-dessus d'un netherrack ou d'un bloc de magma, il se transformera immédiatement en un feu éternel. +Eternal fire is a damaging block that might create more fire. It will create fire around it when flammable blocks are nearby. Eternal fire can be extinguished by punches and nearby water blocks. Other than (normal) fire, eternal fire does not get extinguished on its own and also continues to burn under rain. Punching eternal fire is safe, but it hurts if you stand inside.=Le feu éternel est un bloc endommageant qui pourrait créer plus de feu. Il créera du feu autour de lui lorsque des blocs inflammables sont à proximité. Le feu éternel peut être éteint par des coups de poing et des blocs d'eau à proximité. À part le feu (normal), le feu éternel ne s'éteint pas tout seul et continue de brûler sous la pluie. Frapper le feu éternel est sûr, mais ça fait mal si vous vous tenez à l'intérieur. +Eternal fire is a damaging block. Eternal fire can be extinguished by punches and nearby water blocks. Other than (normal) fire, eternal fire does not get extinguished on its own and also continues to burn under rain. Punching eternal fire is safe, but it hurts if you stand inside.=Le feu éternel est un bloc dommageable. Le feu éternel peut être éteint par des coups de poing et des blocs d'eau à proximité. À part le feu (normal), le feu éternel ne s'éteint pas tout seul et continue de brûler sous la pluie. Frapper le feu éternel est sûr, mais ça fait mal si vous vous tenez à l'intérieur. +@1 has been cooked crisp.=@1 a été cuit croustillant. +@1 felt the burn.=@1 sent le brûler. +@1 died in the flames.=@1 est mort dans les flammes. +@1 died in a fire.=@1 est mort dans un incendie. +Fire=Feu +Eternal Fire=Feu Eternel +Dispenser projectile=Distributeur de Projectile +Starts fires and ignites blocks=Démarre les incendies et allume les blocs diff --git a/mods/ITEMS/mcl_fishing/locale/mcl_fishing.fr.tr b/mods/ITEMS/mcl_fishing/locale/mcl_fishing.fr.tr new file mode 100644 index 00000000..2bac42bb --- /dev/null +++ b/mods/ITEMS/mcl_fishing/locale/mcl_fishing.fr.tr @@ -0,0 +1,18 @@ +# textdomain: mcl_fishing +Fishing Rod=Canne à pêche +Fishing rods can be used to catch fish.=Les cannes à pêche peuvent être utilisées pour attraper du poisson. +Rightclick to launch the bobber. When it sinks right-click again to reel in an item. Who knows what you're going to catch?=Clic droit pour lancer le bouchon. Lorsqu'il s'enfonce, cliquez de nouveau avec le bouton droit pour rembobiner. Qui sait ce que tu vas attraper? +Raw Fish=Poisson Cru +Raw fish is obtained by fishing and is a food item which can be eaten safely. Cooking it improves its nutritional value.=Le poisson cru est obtenu par la pêche et est un aliment qui peut être mangé en toute sécurité. La cuisson améliore sa valeur nutritive. +Cooked Fish=Poisson cuit +Mmh, fish! This is a healthy food item.=Mmh, poisson! Il s'agit d'un aliment sain. +Raw Salmon=Saumon cru +Raw salmon is obtained by fishing and is a food item which can be eaten safely. Cooking it improves its nutritional value.=Le saumon cru est obtenu par la pêche et est un aliment qui peut être consommé en toute sécurité. La cuisson améliore sa valeur nutritive. +Cooked Salmon=Saumon cuit +This is a healthy food item which can be eaten.=Il s'agit d'un aliment sain qui peut être consommé. +Clownfish=Poisson-Clown +Clownfish may be obtained by fishing (and luck) and is a food item which can be eaten safely.=Le poisson-clown peut être obtenu par la pêche (et la chance) et est un aliment qui peut être mangé en toute sécurité. +Pufferfish=Poisson-Globe +Pufferfish are a common species of fish and can be obtained by fishing. They can technically be eaten, but they are very bad for humans. Eating a pufferfish only restores 1 hunger point and will poison you very badly (which drains your health non-fatally) and causes serious food poisoning (which increases your hunger).=Le poisson-globe est une espèce de poisson commune et peut être obtenu par la pêche. Ils peuvent techniquement être mangés, mais ils sont très mauvais pour les humains. Manger un poisson-globe ne restaure que 1 point de faim et vous empoisonnera fortement (ce qui draine votre santé de manière non fatale) et provoque une grave intoxication alimentaire (qui augmente votre faim). +Catches fish in water=Attrape les poissons dans l'eau +Very poisonous=Très toxique diff --git a/mods/ITEMS/mcl_flowerpots/locale/mcl_flowerpots.fr.tr b/mods/ITEMS/mcl_flowerpots/locale/mcl_flowerpots.fr.tr new file mode 100644 index 00000000..d8049711 --- /dev/null +++ b/mods/ITEMS/mcl_flowerpots/locale/mcl_flowerpots.fr.tr @@ -0,0 +1,26 @@ +# textdomain: mcl_flowerpots +Dandelion Flower Pot=Pissenlit en Pot +Poppy Flower Pot=Coquelicot en Pot +Blue Orchid Flower Pot=Orchidée Bleue en Pot +Allium Flower Pot=Allium en Pot +Azure Bluet Flower Pot=Houstonie Bleue en Pot +Red Tulip Flower Pot=Tulipe Rouge en Pot +Pink Tulip Flower Pot=Tulipe Rose en Pot +White Tulip Flower Pot=Tulipe Blanche en Pot +Orange Tulip Flower Pot=Tulipe Orange en Pot +Oxeye Daisy Flower Pot=Marguerite en Pot +Brown Mushroom Flower Pot=Champignon Marron en Pot +Red Mushroom Flower Pot=Champignon Rouge en Pot +Oak Sapling Flower Pot=Pousse de Chêne en Pot +Acacia Sapling Flower Pot=Pousse d'Acacia en Pot +Jungle Sapling Flower Pot=Pousse d'Acajou en Pot +Dark Oak Sapling Flower Pot=Pousse de Chêne Noir en Pot +Spruce Sapling Flower Pot=Pousse de Sapin en Pot +Birch Sapling Flower Pot=Pousse de Bouleau en Pot +Dead Bush Flower Pot=Arbuste Mort en Pot +Fern Flower Pot=Fougère en Pot +Cactus Flower Pot=Cactus en Pot +Flower Pot=Pot de Fleurs +Flower pots are decorative blocks in which flowers and other small plants can be placed.=Les pots de fleurs sont des blocs décoratifs dans lesquels des fleurs et d'autres petites plantes peuvent être placées. +Just place a plant on the flower pot. Flower pots can hold small flowers (not higher than 1 block), saplings, ferns, dead bushes, mushrooms and cacti. Rightclick a potted plant to retrieve the plant.=Placez simplement une plante sur le pot de fleurs. Les pots de fleurs peuvent contenir de petites fleurs (pas plus d'un bloc), des pousses, des fougères, des buissons morts, des champignons et des cactus. Cliquez avec le bouton droit sur une plante en pot pour récupérer la plante. +Can hold a small flower or plant=Peut contenir une petite fleur ou plante diff --git a/mods/ITEMS/mcl_flowers/locale/mcl_flowers.fr.tr b/mods/ITEMS/mcl_flowers/locale/mcl_flowers.fr.tr new file mode 100644 index 00000000..e038063c --- /dev/null +++ b/mods/ITEMS/mcl_flowers/locale/mcl_flowers.fr.tr @@ -0,0 +1,32 @@ +# textdomain: mcl_flowers +This is a small flower. Small flowers are mainly used for dye production and can also be potted.=Ceci est une petite fleur. Les petites fleurs sont principalement utilisées pour la production de teintures et peuvent également être mises en pot. +It can only be placed on a block on which it would also survive.=Elles ne peuvent être placées que sur un bloc sur lequel elles survivraient également. +Poppy=Coquelicot +Dandelion=Pisselit +Oxeye Daisy=Marguerite +Orange Tulip=Tulipe Orange +Pink Tulip=Tulipe Rose +Red Tulip=Tulipe Rouge +White Tulip=Tulipe Blanche +Allium=Allium +Azure Bluet=Houstonie Bleue +Blue Orchid=Orchidée Bleue +Tall Grass=Hautes herbes +Tall grass is a small plant which often occurs on the surface of grasslands. It can be harvested for wheat seeds. By using bone meal, tall grass can be turned into double tallgrass which is two blocks high.=L'herbe haute est une petite plante qui se rencontre souvent à la surface des prairies. Il peut être récolté pour les graines de blé. En utilisant de la farine d'os, les hautes herbes peuvent être transformées en herbes hautes doubles de deux blocs de hauteur. +Fern=Fougère +Ferns are small plants which occur naturally in jungles and taigas. They can be harvested for wheat seeds. By using bone meal, a fern can be turned into a large fern which is two blocks high.=Les fougères sont de petites plantes qui se produisent naturellement dans les jungles et les taigas. Ils peuvent être récoltés pour les graines de blé. En utilisant de la farine d'os, une fougère peut être transformée en une grande fougère haute de deux blocs. +(Top Part)=(Partie supérieure) +Peony=Pivoine +A peony is a large plant which occupies two blocks. It is mainly used in dye protection.=Une pivoine est une grande plante qui occupe deux blocs. Il est principalement utilisé dans la protection des colorants. +Rose Bush=Rosier +A rose bush is a large plant which occupies two blocks. It is safe to touch it. Rose bushes are mainly used in dye protection.=Un rosier est une grande plante qui occupe deux blocs. Il n'y a pas de danger à le toucher. Les rosiers sont principalement utilisés dans la protection des colorants. +Lilac=Lilas +A lilac is a large plant which occupies two blocks. It is mainly used in dye production.=Un lilas est une grande plante qui occupe deux blocs. Il est principalement utilisé dans la production de colorants. +Sunflower=Tournesol +A sunflower is a large plant which occupies two blocks. It is mainly used in dye production.=Un tournesol est une grande plante qui occupe deux blocs. Il est principalement utilisé dans la production de colorants. +Double tallgrass a variant of tall grass and occupies two blocks. It can be harvested for wheat seeds.=La grande herbe haute une variante de l'herbe haute et occupe deux blocs. Elle peut être récoltée pour les graines de blé. +Large fern is a variant of fern and occupies two blocks. It can be harvested for wheat seeds.=La grande fougère est une variante de la fougère et occupe deux blocs. Elle peut être récoltée pour les graines de blé. +Double Tallgrass=Grande Herbe +Large Fern=Grande Fougère +Lily Pad=Nénuphar +A lily pad is a flat plant block which can be walked on. They can be placed on water sources, ice and frosted ice.=Un nénuphar est un bloc de plante plat sur lequel on peut marcher. Ils peuvent être placés sur des sources d'eau, de la glace et de la glace givrée. diff --git a/mods/ITEMS/mcl_furnaces/locale/mcl_furnaces.fr.tr b/mods/ITEMS/mcl_furnaces/locale/mcl_furnaces.fr.tr new file mode 100644 index 00000000..deec7981 --- /dev/null +++ b/mods/ITEMS/mcl_furnaces/locale/mcl_furnaces.fr.tr @@ -0,0 +1,9 @@ +# textdomain: mcl_furnaces +Furnace=Four +Furnaces cook or smelt several items, using a furnace fuel, into something else.=Les fours cuisent ou fondent plusieurs articles, en utilisant un combustible de four, dans quelque chose d'autre. +Use the furnace to open the furnace menu. Place a furnace fuel in the lower slot and the source material in the upper slot. The furnace will slowly use its fuel to smelt the item. The result will be placed into the output slot at the right side.=Utilisez le four pour ouvrir le menu du four. Placez un combustible de four dans la fente inférieure et le matériau source dans la fente supérieure. Le four utilisera lentement son combustible pour fondre l'article. Le résultat sera placé dans la fente de sortie du côté droit. +Use the recipe book to see what you can smelt, what you can use as fuel and how long it will burn.=Utilisez le livre de recettes pour voir ce que vous pouvez cuire, ce que vous pouvez utiliser comme carburant et combien de temps il brûlera. +Burning Furnace=Four Allumé +Recipe book=Livre de Recette +Inventory=Inventaire +Uses fuel to smelt or cook items=Utilise du carburant pour fondre ou cuire des articles diff --git a/mods/ITEMS/mcl_heads/locale/mcl_heads.fr.tr b/mods/ITEMS/mcl_heads/locale/mcl_heads.fr.tr new file mode 100644 index 00000000..56436f51 --- /dev/null +++ b/mods/ITEMS/mcl_heads/locale/mcl_heads.fr.tr @@ -0,0 +1,11 @@ +# textdomain: mcl_heads +Zombie Head=Tête de Zombie +A zombie head is a small decorative block which resembles the head of a zombie. It can also be worn as a helmet, which reduces the detection range of zombies by 50%.=Une tête de zombie est un petit bloc décoratif qui ressemble à la tête d'un zombie. Il peut également être porté comme un casque, ce qui réduit la plage de détection des zombies de 50%. +Creeper Head=Tête de Creeper +A creeper head is a small decorative block which resembles the head of a creeper. It can also be worn as a helmet, which reduces the detection range of creepers by 50%.=Une tête de creepers est un petit bloc décoratif qui ressemble à la tête d'un creeper. Il peut également être porté comme un casque, ce qui réduit la plage de détection des creepers de 50%. +Human Head=Tête de Joueur +A human head is a small decorative block which resembles the head of a human (i.e. a player character). It can also be worn as a helmet for fun, but does not offer any protection.=Une tête de joueur est un petit bloc décoratif qui ressemble à la tête d'un humain (c'est-à-dire un personnage de joueur). Il peut également être porté comme un casque pour le plaisir, mais n'offre aucune protection. +Skeleton Skull=Crâne de Squelette +A skeleton skull is a small decorative block which resembles the skull of a skeleton. It can also be worn as a helmet, which reduces the detection range of skeletons by 50%.=Un crâne squelette est un petit bloc décoratif qui ressemble au crâne d'un squelette. Il peut également être porté comme un casque, ce qui réduit la plage de détection des squelettes de 50%. +Wither Skeleton Skull=Crâne de Squelette Wither +A wither skeleton skull is a small decorative block which resembles the skull of a wither skeleton. It can also be worn as a helmet for fun, but does not offer any protection.=Un crâne squelette wither est un petit bloc décoratif qui ressemble au crâne d'un squelette wither. Il peut également être porté comme un casque pour le plaisir, mais n'offre aucune protection. diff --git a/mods/ITEMS/mcl_hoppers/locale/mcl_hoppers.fr.tr b/mods/ITEMS/mcl_hoppers/locale/mcl_hoppers.fr.tr new file mode 100644 index 00000000..40795d09 --- /dev/null +++ b/mods/ITEMS/mcl_hoppers/locale/mcl_hoppers.fr.tr @@ -0,0 +1,16 @@ +# textdomain: mcl_hoppers +Hopper=Entonnoir +Hoppers are containers with 5 inventory slots. They collect dropped items from above, take items from a container above and attempt to put its items it into an adjacent container. Hoppers can go either downwards or sideways. Hoppers interact with chests, droppers, dispensers, shulker boxes, furnaces and hoppers.=Les entonoirs sont des conteneurs avec 5 emplacements d'inventaire. Ils récupèrent les objets déposés par le haut, prennent les objets d'un conteneur au-dessus et tentent de les placer dans un conteneur adjacent. Les entonnoirs peuvent aller vers le bas ou sur le côté. Les entonnoirs interagissent avec les coffres, les compte-gouttes, les distributeurs, les boites de shulker, les fours et les entonnoirs. +Hoppers interact with containers the following way:=Les entonnoirs interagissent avec les conteneurs de la manière suivante: +• Furnaces: Hoppers from above will put items into the source slot. Hoppers from below take items from the output slot. They also take items from the fuel slot when they can't be used as a fuel. Sideway hoppers that point to the furnace put items into the fuel slot=• Fours: les entonoires d'en haut placent les objets dans l'emplacement source. Les entonoires d'en bas prennent les éléments de la fente de sortie. Ils prennent également des objets de la fente de carburant lorsqu'ils ne peuvent pas être utilisés comme carburant. Des entonaires latérales qui pointent vers le four mettent des objets dans la fente de combustible +• Ender chests: No interaction.=• Coffres Ender: Aucune interaction. +• Other containers: Normal interaction.=• Autres conteneurs: interaction normale. +Hoppers can be disabled when supplied with redstone power. Disabled hoppers don't move items.=Les entonoires peuvent être désactivées lorsqu'elles sont alimentées en redstone. Les trémies désactivées ne déplacent pas les objets. +To place a hopper vertically, place it on the floor or a ceiling. To place it sideways, place it at the side of a block. Use the hopper to access its inventory.=Pour placer un entonoire verticalement, placez-la au sol ou au plafond. Pour le placer sur le côté, placez-le sur le côté d'un bloc. Utilisez l'entonoire pour accéder à son inventaire. +Disabled Hopper=Entonoir Désactivé +Side Hopper=Entonoir Latéral +Disabled Side Hopper=Entonoir Latéral Désactivé +Inventory=Inventaire +5 inventory slots=5 emplacements d'inventaire +Collects items from above, moves items to container below=Collecte les éléments d'en haut, déplace les éléments vers le conteneur ci-dessous +Can be disabled with redstone power=Peut être désactivé par la puissance Redstone diff --git a/mods/ITEMS/mcl_itemframes/locale/mcl_itemframes.fr.tr b/mods/ITEMS/mcl_itemframes/locale/mcl_itemframes.fr.tr new file mode 100644 index 00000000..180c5555 --- /dev/null +++ b/mods/ITEMS/mcl_itemframes/locale/mcl_itemframes.fr.tr @@ -0,0 +1,5 @@ +# textdomain: mcl_itemframes +Item Frame=Cadre +Item frames are decorative blocks in which items can be placed.=Les cadres sont des blocs décoratifs dans lesquels les objets peuvent être placés. +Just place any item on the item frame. Use the item frame again to retrieve the item.=Placez simplement n'importe quel objet sur le cadre. Utilisez à nouveau le cadre décoré pour récupérer l'élément. +Can hold an item=Peut contenir un objet diff --git a/mods/ITEMS/mcl_jukebox/locale/mcl_jukebox.fr.tr b/mods/ITEMS/mcl_jukebox/locale/mcl_jukebox.fr.tr new file mode 100644 index 00000000..d843acc5 --- /dev/null +++ b/mods/ITEMS/mcl_jukebox/locale/mcl_jukebox.fr.tr @@ -0,0 +1,11 @@ +# textdomain: mcl_jukebox +Music Disc=Disque de musique +A music disc holds a single music track which can be used in a jukebox to play music.=Un disque de musique contient une seule piste musicale qui peut être utilisée dans un juke-box pour lire de la musique. +Place a music dict into an empty jukebox to play the music. Use the jukebox again to retrieve the music disc. The music can only be heard by you, not by other players.=Placez un disque de musique dans un juke-box vide pour lire la musique. Utilisez à nouveau le juke-box pour récupérer le disque de musique. La musique ne peut être entendue que par vous, pas par les autres joueurs. +Music Disc=Disque de musique +@1—@2=@1—@2 +Jukebox=Juke-box +Jukeboxes play music when they're supplied with a music disc.=Les juke-box diffusent de la musique lorsqu'ils sont fournis avec un disque de musique. +Place a music disc into an empty jukebox to insert the music disc and play music. If the jukebox already has a music disc, you will retrieve this music disc first. The music can only be heard by you, not by other players.=Placez un disque de musique dans un juke-box vide pour insérer le disque de musique et lire de la musique. Si le juke-box possède déjà un disque de musique, vous allez d'abord récupérer ce disque de musique. La musique ne peut être entendue que par vous, pas par les autres joueurs. +Now playing: @1—@2=En cours de lecture: @1—@2 +Uses music discs to play music=Utilise des disques de musique pour lire de la musique diff --git a/mods/ITEMS/mcl_maps/locale/mcl_maps.fr.tr b/mods/ITEMS/mcl_maps/locale/mcl_maps.fr.tr new file mode 100644 index 00000000..6feb253a --- /dev/null +++ b/mods/ITEMS/mcl_maps/locale/mcl_maps.fr.tr @@ -0,0 +1,10 @@ +# textdomain: mcl_maps +Empty Map=Carte Vierge +Empty maps are not useful as maps, but they can be stacked and turned to maps which can be used.=Les cartes vierges ne sont pas utiles en tant que cartes, mais elles peuvent être empilées et transformées en cartes utilisables. +Rightclick to start using the map (which can't be stacked anymore).=Clic droit pour commencer à utiliser la carte (qui ne peut plus être empilée). +Map=Carte +Maps show your surroundings as you explore the world.=Les cartes montrent votre environnement lorsque vous explorez le monde. +Hold the map in any of the hotbar slots. This allows you to access the minimap by pressing the minimap key (see controls settings).=Tenez la carte dans l'un des emplacements de la barre de raccourci. Cela vous permet d'accéder à la mini-carte en appuyant sur la touche de la mini-carte (voir les paramètres des commandes). +In Creative Mode, you don't need this item; the minimap is always available.=En mode créatif, vous n'avez pas besoin de cet élément; la minicarte est toujours disponible. +Enables minimap=Active la minicarte +Use the minimap key to show the map.=Utilisez la touche mini-carte pour afficher la carte. diff --git a/mods/ITEMS/mcl_mobitems/locale/mcl_mobitems.fr.tr b/mods/ITEMS/mcl_mobitems/locale/mcl_mobitems.fr.tr new file mode 100644 index 00000000..b7c92d83 --- /dev/null +++ b/mods/ITEMS/mcl_mobitems/locale/mcl_mobitems.fr.tr @@ -0,0 +1,68 @@ +# textdomain: mcl_mobitems +Rotten Flesh=Chair Putréfiée +Yuck! This piece of flesh clearly has seen better days. If you're really desperate, you can eat it to restore a few hunger points, but there's a 80% chance it causes food poisoning, which increases your hunger for a while.=Beurk! Ce morceau de chair a clairement connu des jours meilleurs. Si vous êtes vraiment désespéré, vous pouvez le manger pour restaurer quelques points de faim, mais il y a 80% de chances qu'il provoque une intoxication alimentaire, ce qui augmente votre faim pendant un certain temps. +Raw Mutton=Mouton Cru +Raw mutton is the flesh from a sheep and can be eaten safely. Cooking it will greatly increase its nutritional value.=Le mouton cru est la chair d'un mouton et peut être mangé en toute sécurité. La cuisson augmentera considérablement sa valeur nutritive. +Cooked Mutton=Mouton Cuit +Cooked mutton is the cooked flesh from a sheep and is used as food.=Le mouton cuit est la chair cuite d'un mouton et est utilisé comme nourriture. +Raw Beef=Boeuf Cru +Raw beef is the flesh from cows and can be eaten safely. Cooking it will greatly increase its nutritional value.=Le boeuf cru est la chair des vaches et peut être mangé en toute sécurité. La cuisson augmentera considérablement sa valeur nutritive. +Steak=Steak +Steak is cooked beef from cows and can be eaten.=Le steak est du boeuf cuit et peut être mangé. +Raw Chicken=Poulet Cru +Raw chicken is a food item which is not safe to consume. You can eat it to restore a few hunger points, but there's a 30% chance to suffer from food poisoning, which increases your hunger rate for a while. Cooking raw chicken will make it safe to eat and increases its nutritional value.=Le poulet cru est un aliment qui n'est pas sûr à consommer. Vous pouvez le manger pour restaurer quelques points de faim, mais il y a 30% de chances de souffrir d'intoxication alimentaire, ce qui augmente votre taux de faim pendant un certain temps. La cuisson du poulet cru le rendra sûr à manger et augmentera sa valeur nutritive. +Cooked Chicken=Poulet Cuit +A cooked chicken is a healthy food item which can be eaten.=Un poulet cuit est un aliment sain qui peut être mangé. +Raw Porkchop=Porc Cru +A raw porkchop is the flesh from a pig and can be eaten safely. Cooking it will greatly increase its nutritional value.=Un porc cru est la chair d'un porc et peut être mangée en toute sécurité. La cuisson augmentera considérablement sa valeur nutritive. +Cooked Porkchop=Parc Cuit +Cooked porkchop is the cooked flesh of a pig and is used as food.=Le porc cuit est la chair cuite d'un porc et est utilisé comme aliment. +Raw Rabbit=Lapin Cru +Raw rabbit is a food item from a dead rabbit. It can be eaten safely. Cooking it will increase its nutritional value.=Le lapin cru est un aliment provenant d'un lapin mort. Il peut être mangé en toute sécurité. La cuisson augmentera sa valeur nutritive. +Cooked Rabbit=Lapin Cuit +This is a food item which can be eaten.=Il s'agit d'un aliment qui peut être mangé. +Milk=Lait +Milk is very refreshing and can be obtained by using a bucket on a cow. Drinking it will cure all forms of poisoning, but restores no hunger points.=Le lait est très rafraîchissant et peut être obtenu en utilisant un seau sur une vache. Le boire guérira toutes les formes d'empoisonnement, mais ne restaure pas de points de faim. +Spider Eye=Oeil d'Araignée +Spider eyes are used mainly in crafting. If you're really desperate, you can eat a spider eye, but it will poison you briefly.=Les yeux d'araignée sont utilisés principalement dans l'artisanat. Si vous êtes vraiment désespéré, vous pouvez manger un œil d'araignée, mais cela vous empoisonnera brièvement. +Bone=Os +Bones can be used to tame wolves so they will protect you. They are also useful as a crafting ingredient.=Les os peuvent être utilisés pour apprivoiser les loups afin de vous protéger. Ils sont également utiles comme ingrédient d'artisanat. +String=Ficelle +Strings are used in crafting.=Les ficelles sont utilisées dans l'artisanat. +Blaze Rod=Bâton de Blaze +This is a crafting component dropped from dead blazes.=Il s'agit d'un composant d'artisanat tombé des Blazes morts. +Blaze Powder=Poudre de Blaze +This item is mainly used for crafting.=Cet objet est principalement utilisé pour l'artisanat. +Magma Cream=Crème de Magma +Magma cream is a crafting component.=La crème de magma est un composant artisanal. +Ghast Tear=Larme de Ghast +Place this item in an item frame as decoration.=Placez cet article dans un cadre d'article comme décoration. +Nether Star=Étoile du Nether +A nether star is dropped when the Wither dies. Place it in an item frame to show the world how hardcore you are! Or just as decoration.=Une étoile du Nether est lâchée lorsque le Wither meurt. Placez-le dans un cadre d'objet pour montrer au monde à quel point vous êtes génial! Ou tout simplement comme décoration. +Leather=Cuir +Leather is a versatile crafting component.=Le cuir est un élément d'artisanat polyvalent. +Feather=Plume +Feathers are used in crafting and are dropped from chickens.=Les plumes sont utilisées dans l'artisanat et tombent des poulets. +Rabbit Hide=Peau de Lapin +Rabbit hide is used to create leather.=La peau de lapin est utilisée pour créer du cuir. +Rabbit's Foot=Patte de Lapin +Must be your lucky day! Place this item in an item frame for decoration.=Ce doit être votre jour de chance! Placez cet article dans un cadre d'article pour la décoration. +Saddle=Selle +Saddles can be put on some animals in order to mount them.=Des selles peuvent être posées sur certains animaux afin de les monter. +Rabbit Stew=Ragout de Lapin +Rabbit stew is a very nutricious food item.=Le ragoût de lapin est un aliment très nutritif. +Shulker Shell=Carapace de Shulker +Shulker shells are used in crafting. They are dropped from dead shulkers.=Les carapaces Shulker sont utilisés dans l'artisanat. Ils sont lâchés de shulkers morts. +Slimeball=Boule de Slime +Slimeballs are used in crafting. They are dropped from slimes.=Les boules de slime sont utilisées dans l'artisanat. Ils sont lâchés par les Slimes. +Gunpowder=Poudre à canon +Carrot on a Stick=Carotte sur un Batôn +A carrot on a stick can be used on saddled pigs to ride them.=Une carotte sur un bâton peut être utilisée sur les porcs sellés pour les monter. +Place it on a saddled pig to mount it. You can now ride the pig like a horse. Pigs will also walk towards you when you just wield the carrot on a stick.=Placez-le sur un cochon sellé pour le monter. Vous pouvez maintenant monter le cochon comme un cheval. Les porcs marcheront également vers vous lorsque vous brandirez la carotte sur un bâton. +Wield the bone near wolves to attract them. Use the “Place” key on the wolf to give it a bone and tame it. You can then give commands to the tamed wolf by using the “Place” key on it.=Maniez l'os près des loups pour les attirer. Utilisez la touche «Placer» sur le loup pour lui donner un os et l'apprivoiser. Vous pouvez ensuite donner des commandes au loup apprivoisé en utilisant la touche "Placer" sur celui-ci. +Lets you ride a saddled pig=Vous permet de monter un cochon sellé +30% chance of food poisoning=30% de chances d'intoxication alimentaire +80% chance of food poisoning=80% de chances d'intoxication alimentaire +Cures poison=Guérit le poison +Can be placed on animals to ride them=Peut être placé sur les animaux pour les monter +Poisonous=Toxique diff --git a/mods/ITEMS/mcl_mobspawners/locale/mcl_mobspawners.fr.tr b/mods/ITEMS/mcl_mobspawners/locale/mcl_mobspawners.fr.tr new file mode 100644 index 00000000..f008ad83 --- /dev/null +++ b/mods/ITEMS/mcl_mobspawners/locale/mcl_mobspawners.fr.tr @@ -0,0 +1,5 @@ +# textdomain: mcl_mobspawners +Mob Spawner=Générateur de Mob +A mob spawner regularily causes mobs to appear around it while a player is nearby. Some mob spawners are disabled while in light.=Un générateur de mob fait régulièrement apparaître des mobs autour de lui tandis qu'un joueur est à proximité. Certains générateurs de mob sont désactivés lorsqu'ils sont en lumière. +If you have a spawn egg, you can use it to change the mob to spawn. Just place the item on the mob spawner. Player-set mob spawners always spawn mobs regardless of the light level.=Si vous avez un oeuf d'apparition, vous pouvez l'utiliser pour changer le mob qui apparait. Placez simplement l'objet sur le générateur de mob. Les générateurs de mobs créés par les joueurs engendrent toujours des mobs quel que soit le niveau de lumière. +Makes mobs appear=Fait apparaître les mobs diff --git a/mods/ITEMS/mcl_monster_eggs/locale/mcl_monster_eggs.fr.tr b/mods/ITEMS/mcl_monster_eggs/locale/mcl_monster_eggs.fr.tr new file mode 100644 index 00000000..fa2d204b --- /dev/null +++ b/mods/ITEMS/mcl_monster_eggs/locale/mcl_monster_eggs.fr.tr @@ -0,0 +1,9 @@ +# textdomain: mcl_monster_eggs +An infested block is a block from which a silverfish will pop out when it is broken. It looks identical to its normal counterpart.=Un bloc infesté est un bloc à partir duquel un Poisson d'Argent sortira lorsqu'il sera brisé. Il semble identique à son homologue normal. +Infested Stone=Roche Infestée +Infested Cobblestone=Pierre Infestée +Infested Stone Bricks=Pierre Taillée Infestée +Infested Cracked Stone Bricks=Pierre Taillée Craquelée Infestée +Infested Mossy Stone Bricks=Pierre Taillée Moussue Infestée +Infested Chiseled Stone Bricks=Pierre sculptée Infestée +Hides a silverfish=Cache un Poisson d'Argent diff --git a/mods/ITEMS/mcl_mushrooms/locale/mcl_mushroom.fr.tr b/mods/ITEMS/mcl_mushrooms/locale/mcl_mushroom.fr.tr new file mode 100644 index 00000000..647b3644 --- /dev/null +++ b/mods/ITEMS/mcl_mushrooms/locale/mcl_mushroom.fr.tr @@ -0,0 +1,24 @@ +# textdomain: mcl_mushrooms +This decorative block is like a huge mushroom stem, but with the stem texture on all sides.=Ce bloc décoratif ressemble à une tige de champignon géant, mais avec la texture de la tige de tous les côtés. +Huge red mushroom blocks are the cap parts of huge red mushrooms. It consists of a red skin and can have pores on each of its sides.=Blocs de champignons rouges géants sont les parties du chapeau d'énormes champignons rouges. Il se compose d'une peau rouge et peut avoir des pores sur chacun de ses côtés. +The stem part of a huge red mushroom.=La partie tige d'un énorme champignon rouge. +Huge Red Mushroom Block=Bloc de Champignon Rouge Géant +Huge Red Mushroom Stem=Tige de Champignon Rouge Géant +Huge Red Mushroom All-Faces Stem=Tige de Champignon Rouge Géant avec Pores +Huge brown mushroom blocks are the cap parts of huge brown mushrooms. It consists of a brown skin and can have pores on each of its sides.=D'énormes blocs de champignons bruns sont les parties du chapeau d'énormes champignons bruns. Il se compose d'une peau brune et peut avoir des pores sur chacun de ses côtés. +The stem part of a huge brown mushroom.=La partie tige d'un énorme champignon brun. +Huge Brown Mushroom Block=Bloc de Champignon Marron Géant +Huge Brown Mushroom Stem=Tige de Champignon Marron Géant +Huge Brown Mushroom All-Faces Stem=Tige de Champignon Marron Géant avec Pores +Brown mushrooms are fungi which grow and spread in darkness, but are sensitive to light. They are inedible as such, but they can be used to craft food items.=Les champignons bruns sont des champignons qui poussent et se propagent dans l'obscurité, mais sont sensibles à la lumière. Ils sont non comestibles en tant que tels, mais ils peuvent être utilisés pour fabriquer des aliments. +Red mushrooms are fungi which grow and spread in darkness, but are sensitive to light. They are inedible as such, but they can be used to craft food items.=Les champignons rouges sont des champignons qui poussent et se propagent dans l'obscurité, mais sont sensibles à la lumière. Ils sont non comestibles en tant que tels, mais ils peuvent être utilisés pour fabriquer des aliments. +A single mushroom of this species will slowly spread over time towards a random solid opaque block with a light level of 12 or lower in a 3×3×3 cube around the mushroom. It stops spreading when there are 5 or more mushrooms of the same species within an area of 9×3×9 blocks around the mushroom.=Un seul champignon de cette espèce se propagera lentement au fil du temps vers un bloc opaque solide aléatoire avec un niveau de lumière de 12 ou moins dans un cube 3×3×3 autour du champignon. Il cesse de se propager lorsqu'il y a 5 champignons ou plus de la même espèce dans une zone de 9×3×9 blocs autour du champignon. +Mushrooms will eventually uproot at a light level of 12 or higher. On mycelium or podzol, they survive and spread at any light level.=Les champignons finiront par déraciner à un niveau de lumière de 12 ou plus. Sur le mycélium ou le podzol, ils survivent et se propagent à n'importe quel niveau de lumière. +This mushroom can be placed on mycelium and podzol at any light level. It can also be placed on blocks which are both solid and opaque, as long as the light level at daytime is not higher than 12.=Ce champignon peut être placé sur le mycélium et le podzol à n'importe quel niveau de lumière. Il peut également être placé sur des blocs à la fois solides et opaques, tant que le niveau de lumière pendant la journée n'est pas supérieur à 12. +Brown Mushroom=Champignon Marron +Red Mushroom=Champignon Rouge +Mushroom Stew=Ragoût de Champignon +Mushroom stew is a healthy soup which can be consumed to restore some hunger points.=Le ragoût de champignons est une soupe saine qui peut être consommée pour restaurer certains points de faim. +By placing huge mushroom blocks of the same species next to each other, the sides that touch each other will turn into pores permanently.=En plaçant d'énormes blocs de champignons de la même espèce les uns à côté des autres, les côtés qui se touchent se transformeront en pores de façon permanente. +Grows on podzol, mycelium and other blocks=Pousse sur podzol, mycélium et autres blocs +Spreads in darkness=Se propage dans l'obscurité diff --git a/mods/ITEMS/mcl_nether/locale/mcl_nether.fr.tr b/mods/ITEMS/mcl_nether/locale/mcl_nether.fr.tr new file mode 100644 index 00000000..048072be --- /dev/null +++ b/mods/ITEMS/mcl_nether/locale/mcl_nether.fr.tr @@ -0,0 +1,40 @@ +# textdomain: mcl_nether +Glowstone=Pierre Lumineuse +Glowstone is a naturally-glowing block which is home to the Nether.=La Pierre Lumineuse est un bloc naturellement brillant qui abrite le Nether. +Nether Quartz Ore=Minerai de quartz du Nether +Nether quartz ore is an ore containing nether quartz. It is commonly found around netherrack in the Nether.=Le minerai de quartz du Nether est un minerai contenant du quartz du Nether. Il se trouve généralement autour du Néantrack dans le Nether. +Netherrack=Netherrack +Netherrack is a stone-like block home to the Nether. Starting a fire on this block will create an eternal fire.=Netherrack est un bloc de pierre qui abrite le Nether. Démarrer un feu sur ce bloc créera un feu éternel. +Magma Block=Bloc de Magma +Magma blocks are hot solid blocks which hurt anyone standing on it, unless they have fire resistance. Starting a fire on this block will create an eternal fire.=Les blocs de magma sont des blocs solides chauds qui blessent quiconque s'y tient, à moins qu'ils n'aient une résistance au feu. Démarrer un feu sur ce bloc créera un feu éternel. +@1 stood too long on a magma block.=@1 s'est tenu trop longtemps sur un bloc de magma. +Soul Sand=Sable des âmes +Soul sand is a block from the Nether. One can only slowly walk on soul sand. The slowing effect is amplified when the soul sand is on top of ice, packed ice or a slime block.=Le sable de l'âme est un bloc du Nether. On ne peut que marcher lentement sur le sable de l'âme. L'effet de ralentissement est amplifié lorsque le sable de l'âme est au-dessus de la glace, de la glace tassée ou d'un bloc de slime. +Nether Brick Block=Brique du Nether +Red Nether Brick Block=Brique Rouge du Nether +Nether Wart Block=Bloc de Verrues du Nether +A nether wart block is a purely decorative block made from nether wart.=Un bloc de verrue du Nether est un bloc purement décoratif fabriqué à partir de verrue du Nether. +Block of Quartz=Bloc de Quartz +Chiseled Quartz Block=Bloc de Quartz sculpté +Pillar Quartz Block=Bloc de Quartz rayé +Smooth Quartz=Quartz Lisse +Glowstone Dust=Poudre Lumineuse +Glowstone dust is the dust which comes out of broken glowstones. It is mainly used in crafting.=La poudre lumineuse est la poussière qui sort des pierres incandescentes brisées. Il est principalement utilisé dans l'artisanat. +Nether Quartz=Quartz du Nether +Nether quartz is a versatile crafting ingredient.=Le quartz du Nether est un ingrédient artisanal polyvalent. +Nether Brick=Bric du Nether +Nether bricks are the main crafting ingredient for crafting nether brick blocks and nether fences.=Les briques du Nether sont le principal ingrédient de fabrication pour la fabrication de blocs de briques et de clôtures du Nether. +Nether Lava Source=Source de Lave du Nether +Flowing Nether Lava=Lave du Nether en Mouvement +Premature Nether Wart (Stage 1)=Verrue du Néant prématurée (étape 1) +A premature nether wart has just recently been planted on soul sand. Nether wart slowly grows on soul sand in 4 stages (the second and third stages look identical). Although nether wart is home to the Nether, it grows in any dimension.=Une verrue du Nether prématurée vient d'être plantée sur du sable d'âme. La verrue du Nether pousse lentement sur le sable de l'âme en 4 étapes (les deuxième et troisième étapes semblent identiques). Bien que la verrue du Nether habite le Nether, elle se développe dans toutes les dimensions. +Premature Nether Wart (Stage 2)=Verrue du Néant prématurée (étape 2) +Premature Nether Wart (Stage 3)=Verrue du Néant prématurée (étape 3) +Mature Nether Wart=Verrue du Néant Mature +The mature nether wart is a plant from the Nether and reached its full size and won't grow any further. It is ready to be harvested for its items.=La verrue du Nether mature est une plante du Nether qui a atteint sa taille maximale et ne poussera plus. Il est prêt à être récolté pour ses articles. +Nether Wart=Verrues du Nether +Nether warts are plants home to the Nether. They can be planted on soul sand and grow in 4 stages.=Les verrues du Nether sont des plantes qui habitent le Nether. Ils peuvent être plantés sur du sable d'âme et se développer en 4 étapes. +Place this item on soul sand to plant it and watch it grow.=Placez cet article sur du sable d'âme pour le planter et regardez-le grandir. +Burns your feet=Vous brûle les pieds +Grows on soul sand=Pousse sur le sable de l'âme +Reduces walking speed=Réduit la vitesse de marche diff --git a/mods/ITEMS/mcl_ocean/locale/mcl_ocean.fr.tr b/mods/ITEMS/mcl_ocean/locale/mcl_ocean.fr.tr new file mode 100644 index 00000000..247f4c9a --- /dev/null +++ b/mods/ITEMS/mcl_ocean/locale/mcl_ocean.fr.tr @@ -0,0 +1,56 @@ +# textdomain: mcl_ocean +Sea Lantern=Lanterne aquatique +Sea lanterns are decorative light sources which look great underwater but can be placed anywhere.=Les lanternes marines sont des sources lumineuses décoratives qui ont fière allure sous l'eau mais peuvent être placées n'importe où. +Prismarine=Prismarine +Prismarine is used as a building block. It slowly changes its color.=La prismarine est utilisée comme bloc de construction. Il change lentement de couleur. +Prismarine Bricks=Prismarine Taillée +Dark Prismarine=Prismarine Sombre +Prismarine Crystals=Cristaux de Prismarine +Prismarine Shard=Éclat de Prismarine +Dried Kelp=Algue Séchée +Dried Kelp Block=Bloc d'Algue Séchée +Brain Coral Block=Bloc de Corail +Brain Coral Fan=Gorgone de Corail +Brain Coral=Corail +Bubble Coral Block=Bloc de Corail Bulles +Bubble Coral Fan=Gorgone de Corail Bulles +Bubble Coral=Corail Bulles +Fire Coral Block=Bloc Corail de Feu +Fire Coral Fan=Gorgone Corail de Feu +Fire Coral=Corail de Feu +Horn Coral Block=Bloc de Corail Corné +Horn Coral Fan=Gorgone de Corail Corné +Horn Coral=Corail Corné +Tube Coral Block=Bloc de Corail Tubulaire +Tube Coral Fan=Gorgone de Corail Tubulaire +Tube Coral=Corail Tubulaire +Dead Brain Coral Block=Bloc de Corail Mort +Dead Brain Coral Fan=Gorgone de Corail Mort +Dead Brain Coral=Corail Mort +Dead Bubble Coral Block=Bloc de Corail Bulles Mort +Dead Bubble Coral Fan=Gorgone de Corail Bulles Mort +Dead Bubble Coral=Corail Bulles Mort +Dead Fire Coral Block=Bloc de Corail de Feu Mort +Dead Fire Coral Fan=Gorgone de Corail de Feu Mort +Dead Fire Coral=Corail de Feu Mort +Dead Horn Coral Block=Bloc de Corail Corné Mort +Dead Horn Coral Fan=Gorgone de Corail Corné Mort +Dead Horn Coral=Corail Corné Mort +Dead Tube Coral Block=Bloc de Corail Tubulaire Mort +Dead Tube Coral Fan=Gorgone de Corail Tubulaire Mort +Dead Tube Coral=Corail Tubulaire Mort +Seagrass=Herbe aquatique +Kelp=Algue +Kelp grows inside water on top of dirt, sand or gravel.=Les Algues pousse à l'intérieur de l'eau sur la terre, le sable ou le gravier. +Coral blocks live in the oceans and need a water source next to them to survive. Without water, they die off.=Les blocs de corail vivent dans les océans et ont besoin d'une source d'eau à côté d'eux pour survivre. Sans eau, ils meurent. +Corals grow on top of coral blocks and need to be inside a water source to survive. Without water, it will die off, as well as the coral block below.=Les coraux se développent au-dessus des blocs de corail et doivent être à l'intérieur d'une source d'eau pour survivre. Sans eau, il mourra, ainsi que le bloc de corail en dessous. +Corals fans grow on top of coral blocks and need to be inside a water source to survive. Without water, it will die off, as well as the coral block below.=Les gorgones de coraux se développent au-dessus des blocs de corail et doivent être à l'intérieur d'une source d'eau pour survivre. Sans eau, il mourra, ainsi que le bloc de corail en dessous. +Seagrass grows inside water on top of dirt, sand or gravel.=Les herbiers aquatique poussent à l'intérieur de l'eau sur la terre, le sable ou le gravier. +A decorative block that serves as a great furnace fuel.=Un bloc décoratif qui sert de bon combustible pour le four. +Dried kelp is a food item.=L'algue séchée est un aliment. +Grows on coral block of same species=Pousse sur un bloc de corail de la même espèce +Needs water to live=A besoin d'eau pour vivre +Grows in water on dirt, sand, gravel=Pousse dans l'eau sur la terre, le sable et le gravier +Glows in the water=Glows in the water +4 possible sizes=4 tailles possibles +Grows on dead brain coral block=Pousse sur un bloc de corail mort diff --git a/mods/ITEMS/mcl_portals/locale/mcl_portals.fr.tr b/mods/ITEMS/mcl_portals/locale/mcl_portals.fr.tr new file mode 100644 index 00000000..76a2a6f8 --- /dev/null +++ b/mods/ITEMS/mcl_portals/locale/mcl_portals.fr.tr @@ -0,0 +1,15 @@ +# textdomain: mcl_portals +End Portal=Portail de l'End +An End portal teleports creatures and objects to the mysterious End dimension (and back!).=Un portail de l'End téléporte des créatures et des objets dans la mystérieuse dimension End (et vice-versa!). +Hop into the portal to teleport. Entering an End portal in the Overworld teleports you to a fixed position in the End dimension and creates a 5×5 obsidian platform at your destination. End portals in the End will lead back to your spawn point in the Overworld.=Sautez dans le portail pour vous téléporter. Entrer dans un portail d'End dans l'Overworld vous téléporte à une position fixe dans la dimension d'End et crée une plate-forme d'obsidienne 5×5 à votre destination. Les portails de l'End à la fin vous ramèneront à votre point d'apparition dans l'Overworld. +End Portal Frame=Cadre de Portail de l'End +End portal frames are used in the construction of End portals. Each block has a socket for an eye of ender.=Les portiques d'End sont utilisés dans la construction de portails d'End. Chaque bloc a une prise pour un oeil d'ender. +NOTE: The End dimension is currently incomplete and might change in future versions.=REMARQUE: la dimension d'End est actuellement incomplète et pourrait changer dans les futures versions. +End Portal Frame with Eye of Ender=Cadre de portail de l'End avec Oeil d'Ender +Nether Portal=Portail du Nether +A Nether portal teleports creatures and objects to the hot and dangerous Nether dimension (and back!). Enter at your own risk!=A Nether portal teleports creatures and objects to the hot and dangerous Nether dimension (and back!). Enter at your own risk! +Stand in the portal for a moment to activate the teleportation. Entering a Nether portal for the first time will also create a new portal in the other dimension. If a Nether portal has been built in the Nether, it will lead to the Overworld. A Nether portal is destroyed if the any of the obsidian which surrounds it is destroyed, or if it was caught in an explosion.=Tenez-vous un instant dans le portail pour activer la téléportation. Entrer pour la première fois sur un portail Nether créera également un nouveau portail dans l'autre dimension. Si un portail du Nether a été construit dans le Nether, il mènera à l'Overworld. Un portail du Nether est détruit si l'une des obsidiennes qui l'entourent est détruit, ou s'il a été pris dans une explosion. +Obsidian is also used as the frame of Nether portals.=Obsidian is also used as the frame of Nether portals. +To open a Nether portal, place an upright frame of obsidian with a width of 4 blocks and a height of 5 blocks, leaving only air in the center. After placing this frame, light a fire in the obsidian frame. Nether portals only work in the Overworld and the Nether.=Pour ouvrir un portail du Nether, placez un cadre vertical d'obsidienne d'une largeur de 4 blocs et d'une hauteur de 5 blocs, ne laissant que de l'air au centre. Après avoir placé ce cadre, allumez un feu dans le cadre en obsidienne. Les portails du Nether ne fonctionnent que dans l'Overworld et le Nether. +Once placed, an eye of ender can not be taken back.=Une fois placé, un œil d'ender ne peut pas être repris. +Used to construct end portals=Utilisé pour construire des portails d'End diff --git a/mods/ITEMS/mcl_potions/locale/mcl_potions.fr.tr b/mods/ITEMS/mcl_potions/locale/mcl_potions.fr.tr new file mode 100644 index 00000000..632c1d96 --- /dev/null +++ b/mods/ITEMS/mcl_potions/locale/mcl_potions.fr.tr @@ -0,0 +1,25 @@ +# textdomain: mcl_potions +Put this item in an item frame for decoration. It's useless otherwise.=Mettez cet élément dans un cadre à élément pour la décoration. C'est inutile sinon. +Fermented Spider Eye=Oeil d'araignée fermenté +Glass Bottle=Bouteille en verre +A glass bottle is used as a container for liquids and can be used to collect water directly.=Une bouteille en verre est utilisée comme récipient pour les liquides et peut être utilisée pour collecter l'eau directement. +To collect water, it on a cauldron with water (which removes a level of water) or any water source (which removes no water).=Pour collecter l'eau, poser la sur un chaudron avec de l'eau (qui enlève un niveau d'eau) ou toute source d'eau (qui n'enlève pas d'eau). +Water Bottle=Bouteille d'eau +Water bottles can be used to fill cauldrons. Drinking water has no effect.=Les bouteilles d'eau peuvent être utilisées pour remplir les chaudrons. L'eau potable n'a aucun effet. +Rightclick to drink. Rightclick a cauldron to pour the water into the cauldron.=Clic droit pour boire. Clic droit sur un chaudron pour verser l'eau dans le chaudron. +River Water Bottle=Bouteille d'eau de rivière +River water bottles can be used to fill cauldrons. Drinking it has no effect.=Les bouteilles d'eau de rivière peuvent être utilisées pour remplir les chaudrons. Le boire n'a aucun effet. +Awkward Potion=Potion maladroite +This potion has an awkward taste and is used for brewing more potions. Drinking it has no effect.=Cette potion a un goût gênant et est utilisée pour préparer plus de potions. Le boire n'a aucun effet. +Mundane Potion=Potion mondaine +This potion has a clean taste and is used for brewing more potions. Drinking it has no effect.=Cette potion a un goût propre et est utilisée pour préparer plus de potions. Le boire n'a aucun effet. +Thick Potion=Potion épaisse +This potion has a bitter taste and is used for brewing more potions. Drinking it has no effect.=Cette potion a un goût amer et est utilisée pour préparer plus de potions. Le boire n'a aucun effet. +Glistering Melon=Melon étincelant +This shiny melon is full of tiny gold nuggets and would be nice in an item frame. It isn't edible and not useful for anything else.=Ce melon brillant est plein de minuscules pépites d'or et serait bien dans un cadre d'objet. Il n'est pas comestible et n'est utile à rien d'autre. +Dragon's Breath=Le souffle du dragon +Use the “Place” key to drink it.=Utilisez la touche "Utiliser" pour le boire. +Use the “Place” key to drink. Place this item on a cauldron to pour the water into the cauldron.=Utilisez la touche "Utiliser" pour boire. Placez cet article sur un chaudron pour verser l'eau dans le chaudron. +Use the “Place” key to drink. Place this item on a cauldron to pour the river water into the cauldron.=Utilisez la touche "Utiliser" pour boire. Placez cet objet sur un chaudron pour verser l'eau de la rivière dans le chaudron. +Liquid container=Récipient de liquide +No effect=Aucun effet diff --git a/mods/ITEMS/mcl_signs/locale/mcl_signs.fr.tr b/mods/ITEMS/mcl_signs/locale/mcl_signs.fr.tr new file mode 100644 index 00000000..158640da --- /dev/null +++ b/mods/ITEMS/mcl_signs/locale/mcl_signs.fr.tr @@ -0,0 +1,9 @@ +# textdomain: mcl_signs +Sign=Panneau +Signs can be written and come in two variants: Wall sign and sign on a sign post. Signs can be placed on the top and the sides of other blocks, but not below them.=Les panneaux peuvent être écrits et se déclinent en deux variantes: panneau mural et panneau sur poteau. Des panneaux peuvent être placés en haut et sur les côtés des autres blocs, mais pas en dessous. +After placing the sign, you can write something on it. You have 4 lines of text with up to 15 characters for each line; anything beyond these limits is lost. Not all characters are supported. The text can not be changed once it has been written; you have to break and place the sign again.=Après avoir placé le panneau, vous pouvez écrire quelque chose dessus. Vous avez 4 lignes de texte avec jusqu'à 15 caractères pour chaque ligne; tout ce qui dépasse ces limites est perdu. Tous les caractères ne sont pas pris en charge. Le texte ne peut pas être modifié une fois qu'il a été écrit; vous devez casser et placer à nouveau le panneau. +Enter sign text:=Saisir le texte du panneau: +Maximum line length: 15=Longueur maximum des lignes: 15 +Maximum lines: 4=Nombre maximum de lignes: 4 +Done=Terminé +Can be written=Peut être écrit diff --git a/mods/ITEMS/mcl_sponges/locale/mcl_sponges.fr.tr b/mods/ITEMS/mcl_sponges/locale/mcl_sponges.fr.tr new file mode 100644 index 00000000..58dd74be --- /dev/null +++ b/mods/ITEMS/mcl_sponges/locale/mcl_sponges.fr.tr @@ -0,0 +1,10 @@ +# textdomain: mcl_sponges +Sponge=Éponge +Sponges are blocks which remove water around them when they are placed or come in contact with water, turning it into a wet sponge.=Les éponges sont des blocs qui éliminent l'eau autour d'eux lorsqu'ils sont placés ou entrent en contact avec l'eau, la transformant en une éponge humide. +Waterlogged Sponge=Éponge gorgée d'eau +A waterlogged sponge can be dried in the furnace to turn it into (dry) sponge. When there's an empty bucket in the fuel slot of a furnace, the water will pour into the bucket.=Une éponge gorgée d'eau peut être séchée dans le four pour la transformer en éponge (sèche). Lorsqu'il y a un seau vide dans la fente de combustible d'un four, l'eau se déversera dans le seau. +Riverwaterlogged Sponge=Éponge gorgée d'eau de rivière +This is a sponge soaking wet with river water. It can be dried in the furnace to turn it into (dry) sponge. When there's an empty bucket in the fuel slot of the furnace, the river water will pour into the bucket.=Il s'agit d'une éponge trempée d'eau de rivière. Elle peut être séché dans le four pour le transformer en éponge (sèche). Lorsqu'il y a un seau vide dans la fente de combustible du four, l'eau de la rivière se déversera dans le seau. +A sponge becomes riverwaterlogged (instead of waterlogged) if it sucks up more river water than (normal) water.=Une éponge devient gorgée d'eau de rivière (au lieu d'être gorgée d'eau) si elle aspire plus d'eau de rivière que d'eau (normale). +Removes water on contact=Élimine l'eau au contact +Can be dried in furnace=Peut être séché au four diff --git a/mods/ITEMS/mcl_stairs/locale/mcl_stairs.fr.tr b/mods/ITEMS/mcl_stairs/locale/mcl_stairs.fr.tr new file mode 100644 index 00000000..645fc510 --- /dev/null +++ b/mods/ITEMS/mcl_stairs/locale/mcl_stairs.fr.tr @@ -0,0 +1,101 @@ +# textdomain: mcl_stairs +Stairs are useful to reach higher places by walking over them; jumping is not required. Placing stairs in a corner pattern will create corner stairs. Stairs placed on the ceiling or at the upper half of the side of a block will be placed upside down.=Les escaliers sont utiles pour atteindre des endroits plus élevés en marchant dessus; le saut n'est pas obligatoire. Placer les escaliers dans un motif d'angle créera des escaliers d'angle. Les escaliers placés au plafond ou dans la moitié supérieure du côté d'un bloc seront placés à l'envers. +Double @1=Double @1 +Slabs are half as high as their full block counterparts and occupy either the lower or upper part of a block, depending on how it was placed. Slabs can be easily stepped on without needing to jump. When a slab is placed on another slab of the same type, a double slab is created.=Les dalles sont deux fois moins hautes que leurs homologues de bloc complet et occupent la partie inférieure ou supérieure d'un bloc, selon la façon dont il a été placé. Les dalles peuvent être facilement franchies sans avoir à sauter. Lorsqu'une dalle est placée sur une autre dalle du même type, une double dalle est créée. +Upper @1=@1 Supérieur +Double slabs are full blocks which are created by placing two slabs of the same kind on each other.=Les dalles doubles sont des blocs entiers qui sont créés en plaçant deux dalles du même type l'une sur l'autre. +Oak Wood Stairs=Escalier en Bois de Chêne +Oak Wood Slab=Dalle en Bois de Chêne +Double Oak Wood Slab=Double Dalle en Bois de Chêne +Jungle Wood Stairs=Escalier en Bois d'Acajou +Jungle Wood Slab=Dalle en Bois D'Acajou +Double Jungle Wood Slab=Double Dalle en Bois D'Acajou +Acacia Wood Stairs=Escalier en Bois D'Acacia +Acacia Wood Slab=Dalle en Bois D'Acacia +Double Acacia Wood Slab=Double Dalle en Bois D'Acacia +Spruce Wood Stairs=Escalier en Bois de Sapin +Spruce Wood Slab=Dalle en Bois de Sapin +Double Spruce Wood Slab=Double Dalle en Bois de Sapin +Birch Wood Stairs=Escalier en Bois de Bouleau +Birch Wood Slab=Dalle en Bois de Bouleau +Double Birch Wood Slab=Double Dalle en Bois de Bouleau +Dark Oak Wood Stairs=Escalier en Bois de Chêne Noir +Dark Oak Wood Slab=Dalle en Bois de Chêne Noir +Double Dark Oak Wood Slab=Double Dalle en Bois de Chêne Noir +Stone Stairs=Escalier en Roche +Stone Slab=Dalle en Roche +Double Stone Slab=Double Dalle en Roche +Polished Stone Slab=Dalle en Pierre Polie +Double Polished Stone Slab=Double Dalle en Pierre Polie +Andesite Stairs=Escalier en Andésite +Andesite Slab=Dalle en Andésite +Double Andesite Slab=Double Dalle en Andésite +Granite Stairs=Escalier en Granite +Granite Slab=Dalle en Granite +Double Granite Slab=Double Dalle en Granite +Diorite Stairs=Escalier en Diorite +Diorite Slab=Dalle en Diorite +Double Diorite Slab=Double Dalle en Diorite +Cobblestone Stairs=Escalier en Pierre +Cobblestone Slab=Dalle en Pierre +Double Cobblestone Slab=Double Dalle en Pierre +Mossy Cobblestone Stairs=Escalier en Pierre Moussue +Mossy Cobblestone Slab=Dalle en Pierre Moussue +Double Mossy Cobblestone Slab=Double Dalle en Pierre Moussue +Brick Stairs=Escalier de Brique +Brick Slab=Dalle en Brique +Double Brick Slab=Double Dalle en Brique +Sandstone Stairs=Escalier en Grès +Sandstone Slab=Dalle en Grès +Double Sandstone Slab=Double Dalle en Grès +Smooth Sandstone Stairs=Escalier en Grès Poli +Smooth Sandstone Slab=Dalle en Grès Poli +Double Smooth Sandstone Slab=Double Dalle en Grès Poli +Red Sandstone Stairs=Escalier en Grès Rouge +Red Sandstone Slab=Dalle en Grès Rouge +Double Red Sandstone Slab=Double Dalle en Grès Rouge +Smooth Red Sandstone Stairs=Escalier en Grès Rouge Poli +Smooth Red Sandstone Slab=Dalle en Grès Rouge Poli +Double Smooth Red Sandstone Slab=Double Dalle en Grès Rouge Poli +Stone Bricks Stairs=Escalier en Pierre Taillée +Stone Bricks Slab=Dalle en Pierre Taillée +Double Stone Bricks Slab=Double Dalle en Pierre Taillée +Quartz Stairs=Escalier en Quartz +Quartz Slab=Dalle en Quartz +Double Quartz Slab=Double Dalle en Quartz +Smooth Quartz Stairs=Escalier en Quartz Poli +Smooth Quartz Slab=Dallle en Quartz Poli +Double Smooth Quartz Slab=Double Dalle en Quartz Poli +Nether Brick Stairs=Escalier en Brique du Nether +Nether Brick Slab=Dalle en Brique du Nether +Double Nether Brick Slab=Double Dalle en Brique du Nether +Red Nether Brick Stairs=Escalier en Brique Rouge du Nether +Red Nether Brick Slab=Dalle en Brique Rouge du Nether +Double Red Nether Brick Slab=Double Dalle en Brique Rouge du Nether +End Stone Brick Stairs=Escalier en Pierre de l'End +End Stone Brick Slab=Dalle en Pierre de l'End +Double End Stone Brick Slab=Double Dalle en Pierre de l'End +Purpur Stairs=Escalier en Purpur +Purpur Slab=Dalle en Purpur +Double Purpur Slab=Double Dalle en Purpur +Prismarine Stairs=Escalier en Prismarine +Prismarine Slab=Dalle en Prismarine +Double Prismarine Slab=Double Dalle en Prismarine +Prismarine Brick Stairs=Escalier en Brique Prismarine +Prismarine Brick Slab=Dalle en Brique Prismarine +Double Prismarine Brick Slab=Double Dalle en Brique Prismarine +Dark Prismarine Stairs=Escalier en Prismarine Sombre +Dark Prismarine Slab=Dalle en Prismarine Sombre +Double Dark Prismarine Slab=Double Dalle en Prismarine Sombre +Polished Andesite Slab=Dalle en Andésite Polie +Double Polished Andesite Slab=Double Dalle en Andésite Polie +Polished Andesite Stairs=Escalier en Andésite Polie +Polished Granite Slab=Dalle en Granit Poli +Double Polished Granite Slab=Double Dalle en Granit Poli +Polished Granite Stairs=Escalier en Granit Poli +Polished Diorite Slab=Dalle en Diorite Polie +Double Polished Diorite Slab=Double Dalle en Diorite Polie +Polished Diorite Stairs=Escalier en Diorite Polie +Mossy Stone Brick Stairs=Escalier en Pierre Taillée Moussue +Mossy Stone Brick Slab=Dalle en Pierre Taillée Moussue +Double Mossy Stone Brick Slab=Double Dalle en Pierre Taillée Moussue diff --git a/mods/ITEMS/mcl_throwing/locale/mcl_throwing.fr.tr b/mods/ITEMS/mcl_throwing/locale/mcl_throwing.fr.tr new file mode 100644 index 00000000..bd78c031 --- /dev/null +++ b/mods/ITEMS/mcl_throwing/locale/mcl_throwing.fr.tr @@ -0,0 +1,12 @@ +# textdomain: mcl_throwing +@1 used the ender pearl too often.=@1 a utilisé la perle ender trop souvent. +Use the punch key to throw.=Utilisez la touche frapper pour lancer. +Snowball=Boule de Neige +Snowballs can be thrown or launched from a dispenser for fun. Hitting something with a snowball does nothing.=Les boules de neige peuvent être lancées ou lancées à partir d'un distributeur pour le plaisir. Toucher quelque chose avec une boule de neige ne fait rien. +Egg=Oeuf +Eggs can be thrown or launched from a dispenser and breaks on impact. There is a small chance that 1 or even 4 chicks will pop out of the egg.=Les œufs peuvent être jetés ou lancés à partir d'un distributeur et se cassent à l'impact. Il y a une petite chance que 1 ou même 4 poussins sortent de l'oeuf. +Ender Pearl=Ender Perle +An ender pearl is an item which can be used for teleportation at the cost of health. It can be thrown and teleport the thrower to its impact location when it hits a solid block or a plant. Each teleportation hurts the user by 5 hit points.=Une Perle d'Ender est un objet qui peut être utilisé pour la téléportation au détriment de la santé. Il peut être lancé et téléporter le lanceur vers son emplacement d'impact lorsqu'il frappe un bloc solide ou une plante. Chaque téléportation blesse l'utilisateur de 5 points de vie. +Throwable=Jetable +Chance to hatch chicks when broken=Possibilité d'éclosion de poussins lorsqu'ils sont brisés +Teleports you on impact for cost of 5 HP=Vous téléporte sur l'impact pour un coût de 5 PV diff --git a/mods/ITEMS/mcl_tnt/locale/mcl_tnt.fr.tr b/mods/ITEMS/mcl_tnt/locale/mcl_tnt.fr.tr new file mode 100644 index 00000000..b5cba53b --- /dev/null +++ b/mods/ITEMS/mcl_tnt/locale/mcl_tnt.fr.tr @@ -0,0 +1,8 @@ +# textdomain: mcl_tnt +@1 was caught in an explosion.=@1 a été pris dans une explosion. +TNT=TNT +An explosive device. When it explodes, it will hurt living beings and destroy blocks around it. TNT has an explosion radius of @1. With a small chance, blocks may drop as an item (as if being mined) rather than being destroyed. TNT can be ignited by tools, explosions, fire, lava and redstone signals.=Un engin explosif. Quand il explose, il blessera les êtres vivants et détruira les blocs autour de lui. La TNT a un rayon d'explosion de @1. Avec une petite chance, les blocs peuvent tomber comme un objet (comme s'ils étaient minés) plutôt que d'être détruits. La TNT peut être enflammée par des outils, des explosions, des feux d'incendie, de la lave et de la redstone. +An explosive device. When it explodes, it will hurt living beings. TNT has an explosion radius of @1. TNT can be ignited by tools, explosions, fire, lava and redstone signals.=Un engin explosif. Quand elle explose, elle blessera les êtres vivants. La TNT a un rayon d'explosion de @1. La TNT peut être enflammée par des outils, des explosions, des feux d'incendie, de la lave et de la redstone. +Place the TNT and ignite it with one of the methods above. Quickly get in safe distance. The TNT will start to be affected by gravity and explodes in 4 seconds.=Placez la TNT et allumez-la avec l'une des méthodes ci-dessus. Déplacez-vous rapidement à une distance de sécurité. La TNT commencera à être affecté par la gravité et explose en 4 secondes. +Ignited by tools, explosions, fire, lava, redstone power=Enflammé par les outils, les explosions, le feu, la lave, la redstone +Explosion radius: @1=Rayon d'explosion: @1 diff --git a/mods/ITEMS/mcl_tools/locale/mcl_tools.fr.tr b/mods/ITEMS/mcl_tools/locale/mcl_tools.fr.tr new file mode 100644 index 00000000..02cd7f2b --- /dev/null +++ b/mods/ITEMS/mcl_tools/locale/mcl_tools.fr.tr @@ -0,0 +1,32 @@ +# textdomain: mcl_tools +You use your bare hand whenever you are not wielding any item. With your hand you can mine most blocks, but this is the slowest method and only the weakest blocks will yield their useful drop. The hand also deals minor damage by punching. Using the hand is often a last resort, as proper mining tools and weapons are much better.=Vous utilisez votre main nue lorsque vous ne portez aucun objet. Avec votre main, vous pouvez miner la plupart des blocs, mais c'est la méthode la plus lente et seuls les blocs les plus faibles produiront un élément utile. La main inflige également des dégâts mineurs en frappant. L'utilisation de la main est souvent un dernier recours, car les outils et les armes d'extraction appropriés sont bien meilleurs. +When you are wielding an item which is not a mining tool or a weapon, it will behave as if it were the hand when you start mining or punching.=Lorsque vous maniez un objet qui n'est ni un outil d'extraction ni une arme, il se comportera comme s'il s'agissait de la main lorsque vous commencez à extraire ou à frapper. +In Creative Mode, the hand is able to break all blocks instantly.=En mode créatif, la main est capable de briser tous les blocs instantanément. +Pickaxes are mining tools to mine hard blocks, such as stone. A pickaxe can also be used as weapon, but it is rather inefficient.=Les pioches sont des outils d'extraction pour extraire des blocs durs, comme la pierre. Une pioche peut également être utilisée comme arme, mais elle est plutôt inefficace. +An axe is your tool of choice to cut down trees, wood-based blocks and other blocks. Axes deal a lot of damage as well, but they are rather slow.=Une hache est votre outil de choix pour abattre des arbres, des blocs à base de bois et d'autres blocs. Les haches infligent également beaucoup de dégâts, mais elles sont plutôt lentes. +Swords are great in melee combat, as they are fast, deal high damage and can endure countless battles. Swords can also be used to cut down a few particular blocks, such as cobwebs.=Les épées sont excellentes en combat de mêlée, car elles sont rapides, infligent des dégâts élevés et peuvent supporter d'innombrables batailles. Les épées peuvent également être utilisées pour couper quelques blocs particuliers, tels que les toiles d'araignées. +Shovels are tools for digging coarse blocks, such as dirt, sand and gravel. They can also be used to turn grass blocks to grass paths. Shovels can be used as weapons, but they are very weak.=Les pelles sont des outils pour creuser des blocs grossiers, tels que la terre, le sable et le gravier. Ils peuvent également être utilisés pour transformer des blocs d'herbe en chemins de terre. Les pelles peuvent être utilisées comme armes, mais elles sont très faibles. +To turn a grass block into a grass path, hold the shovel in your hand, then use (rightclick) the top or side of a grass block. This only works when there's air above the grass block.=Pour transformer un bloc d'herbe en chemin de terre, tenez la pelle dans votre main, puis utilisez (clic droit) le haut ou le côté d'un bloc d'herbe. Cela ne fonctionne que lorsqu'il y a de l'air au-dessus du bloc d'herbe. +Shears are tools to shear sheep and to mine a few block types. Shears are a special mining tool and can be used to obtain the original item from grass, leaves and similar blocks that require cutting.=Les cisailles sont des outils pour tondre les moutons et pour extraire quelques types de blocs. Les cisailles sont un outil d'extraction spécial et peuvent être utilisées pour obtenir l'élément d'origine à partir d'herbe, de feuilles et de blocs similaires qui nécessitent une coupe. +To shear sheep or carve faceless pumpkins, use the “place” key on them. Faces can only be carved at the side of faceless pumpkins. Mining works as usual, but the drops are different for a few blocks.=Pour tondre des moutons ou tailler des citrouilles sans visage, utilisez la touche "placer" dessus. Les visages ne peuvent être sculptés que sur le côté des citrouilles sans visage. L'exploitation minière fonctionne comme d'habitude, mais les éléments sont différentes pour quelques blocs. +Wooden Pickaxe=Pioche en Bois +Stone Pickaxe=Pioche en Pierre +Iron Pickaxe=Pioche en Fer +Golden Pickaxe=Pioche en Or +Diamond Pickaxe=Pioche en Diamant +Wooden Shovel=Pelle en Bois +Stone Shovel=Pelle en Pierre +Iron Shovel=Pelle en Fer +Golden Shovel=Pelle en Or +Diamond Shovel=Pelle en Diamant +Wooden Axe=Hache en Bois +Stone Axe=Hache en Pierre +Iron Axe=Hache en Fer +Golden Axe=Hache en Or +Diamond Axe=Hache en Diamant +Wooden Sword=Épée en Bois +Stone Sword=Épée en Pierre +Iron Sword=Épée en Fer +Golden Sword=Épée en Or +Diamond Sword=Épée en Diamant +Shears=Cisailles diff --git a/mods/ITEMS/mcl_torches/locale/mcl_torches.fr.tr b/mods/ITEMS/mcl_torches/locale/mcl_torches.fr.tr new file mode 100644 index 00000000..394d58d4 --- /dev/null +++ b/mods/ITEMS/mcl_torches/locale/mcl_torches.fr.tr @@ -0,0 +1,3 @@ +# textdomain: mcl_torches +Torch=Torche +Torches are light sources which can be placed at the side or on the top of most blocks.=Les torches sont des sources lumineuses qui peuvent être placées sur le côté ou sur le dessus de la plupart des blocs. diff --git a/mods/ITEMS/mcl_walls/locale/mcl_walls.fr.tr b/mods/ITEMS/mcl_walls/locale/mcl_walls.fr.tr new file mode 100644 index 00000000..e4bbfd0d --- /dev/null +++ b/mods/ITEMS/mcl_walls/locale/mcl_walls.fr.tr @@ -0,0 +1,16 @@ +# textdomain: mcl_walls +A piece of wall. It cannot be jumped over with a simple jump. When multiple of these are placed to next to each other, they will automatically build a nice wall structure.=Un morceau de mur. Il ne peut pas être sauté par un simple saut. Lorsque plusieurs d'entre eux sont placés les uns à côté des autres, ils construiront automatiquement une belle structure de mur. +Cobblestone Wall=Muret de Pierres +Mossy Cobblestone Wall=Muret de Pierres Moussu +Andesite Wall=Muret d'Andésite +Granite Wall=Muret de Granite +Diorite Wall=Muret de Diorite +Brick Wall=Muret en Brique +Sandstone Wall=Muret de Grès +Red Sandstone Wall=Muret de Grès Rouge +Stone Brick Wall=Muret de Pierre Taillé +Mossy Stone Brick Wall=Muret de Pierre Taillé Moussue +Prismarine Wall=Muret de Prismarine +End Stone Brick Wall=Muret de Brique de l'End +Nether Brick Wall=Muret de Brique du Nether +Red Nether Brick Wall=Muret de Brique Rouge du Nether diff --git a/mods/ITEMS/mcl_wool/locale/mcl_wool.fr.tr b/mods/ITEMS/mcl_wool/locale/mcl_wool.fr.tr new file mode 100644 index 00000000..22ef78ed --- /dev/null +++ b/mods/ITEMS/mcl_wool/locale/mcl_wool.fr.tr @@ -0,0 +1,37 @@ +# textdomain: mcl_wool +Wool=Laine +Carpet=Tapis +White Wool=Laine Blanche +White Carpet=Tapis Blanc +Grey Wool=Laine Grise +Grey Carpet=Tapis Gris +Light Grey Wool=Laine Gris Clair +Light Grey Carpet=Tapis Gris Clair +Black Wool=Laine Noire +Black Carpet=Tapis Noir +Red Wool=Laine Rouge +Red Carpet=Tapis Rouge +Yellow Wool=Laine Jaune +Yellow Carpet=Tapis Jaune +Green Wool=Laine Verte +Green Carpet=Tapis Vert +Cyan Wool=Lain Cyan +Cyan Carpet=Tapis Cyan +Blue Wool=Laine Bleue +Blue Carpet=Tapis Bleu +Magenta Wool=Laine Magenta +Magenta Carpet=Tapis Magenta +Orange Wool=Laine Orange +Orange Carpet=Tapis Orange +Purple Wool=Laine Violette +Purple Carpet=Tapis Violet +Brown Wool=Laine Marron +Brown Carpet=Tapis Marron +Pink Wool=Laine Rose +Pink Carpet=Tapis Rose +Lime Wool=Laine Citron Vert +Lime Carpet=Tapis Citron Vert +Light Blue Wool=Laine Bleu Clair +Light Blue Carpet=Tapis Bleu Clair +Wool is a decorative block which comes in many different colors.=La laine est un bloc décoratif disponible en différentes couleurs. +Carpets are thin floor covers which come in many different colors.=Les tapis sont des revêtements de sol minces qui viennent dans de nombreuses couleurs différentes. diff --git a/mods/ITEMS/mclx_core/locale/mclx_core.fr.tr b/mods/ITEMS/mclx_core/locale/mclx_core.fr.tr new file mode 100644 index 00000000..eaabebec --- /dev/null +++ b/mods/ITEMS/mclx_core/locale/mclx_core.fr.tr @@ -0,0 +1,5 @@ +# textdomain: mclx_core +River Water Source=Source d'eau de rivière +River water has the same properties as water, but has a reduced flowing distance and is not renewable.=L'eau de rivière a les mêmes propriétés que l'eau, mais a une distance d'écoulement réduite et n'est pas renouvelable. +River Water=L'eau de rivière +Flowing River Water=Eau de rivière qui coule diff --git a/mods/ITEMS/mclx_fences/locale/mclx_fences.fr.tr b/mods/ITEMS/mclx_fences/locale/mclx_fences.fr.tr new file mode 100644 index 00000000..244b588c --- /dev/null +++ b/mods/ITEMS/mclx_fences/locale/mclx_fences.fr.tr @@ -0,0 +1,4 @@ +# textdomain: mclx_fences +Red Nether Brick Fence=Barrière en Brique Rouge du Nether +Red Nether Brick Fence Gate=Porte de Barrière en Brique Rouge du Nether +Nether Brick Fence Gate=Porte de Barrière en Brique du Nether diff --git a/mods/ITEMS/mclx_stairs/locale/mclx_stairs.fr.tr b/mods/ITEMS/mclx_stairs/locale/mclx_stairs.fr.tr new file mode 100644 index 00000000..2922b6b4 --- /dev/null +++ b/mods/ITEMS/mclx_stairs/locale/mclx_stairs.fr.tr @@ -0,0 +1,82 @@ +# textdomain: mclx_stairs +Oak Bark Stairs=Escalier en écorse de Chêne +Oak Bark Slab=Plaque d'écorce de Chêne +Double Oak Bark Slab=Double Dalle d'écorce de Chêne +Acacia Bark Stairs=Escalier en écorce d'Acacia +Acacia Bark Slab=Plaque d'écorce d'Acacia +Double Acacia Bark Slab=Double Dalle d'écorce d'Acacia +Spruce Bark Stairs=Escalier en écorse de Sapin +Spruce Bark Slab=Plaque d'écorce de Sapin +Double Spruce Bark Slab=Double Dalle d'écorce de Sapin +Birch Bark Stairs=Escalier en écorse de Bouleau +Birch Bark Slab=Plaque d'écorce de Bouleau +Double Birch Bark Slab=Double Dalle d'écorce de Bouleau +Jungle Bark Stairs=Escalier en écorse d'Acajou +Jungle Bark Slab=Plaque d'écorce d'Acajou +Double Jungle Bark Slab=Double Dalle d'écorce d'Acajou +Dark Oak Bark Stairs=Escalier en écorse de Chêne Noir +Dark Oak Bark Slab=Plaque d'écorce de Chêne Noir +Double Dark Oak Bark Slab=Double Dalle d'écorce de Chêne Noir +Lapis Lazuli Slab=Dalle de Lapis Lazuli +Double Lapis Lazuli Slab=Double Dalle de Lapis Lazuli +Lapis Lazuli Stairs=Escalier de Lapis Lazuli +Slab of Gold=Dalle en Or +Double Slab of Gold=Double Dalle en Or +Stairs of Gold=Escalier en Or +Slab of Iron=Dalle en Fer +Double Slab of Iron=Double Dalle en Fer +Stairs of Iron=Escalier en Fer +Cracked Stone Brick Stairs=Escalier en Brique de Pierre Fissurée +Cracked Stone Brick Slab=Dalle de Brique de Pierre Fissurée +Double Cracked Stone Brick Slab=Double Dalle de Brique de Pierre Fissurée +White Concrete Stairs=Escalier en Béton Blanc +White Concrete Slab=Dalle en Béton Blanc +Double White Concrete Slab=Double Dalle en Béton Blanc +Grey Concrete Stairs=Escalier en Béton Gris +Grey Concrete Slab=Dalle en Béton Gris +Double Grey Concrete Slab=Double Dalle en Béton Gris +Light Grey Concrete Stairs=Escalier en Béton Gris Clair +Light Grey Concrete Slab=Dalle en Béton Gris Clair +Double Light Grey Concrete Slab=Double Dalle en Béton Gris Clair +Black Concrete Stairs=Escalier en Béton Noir +Black Concrete Slab=Dalle en Béton Noir +Double Black Concrete Slab=Double Dalle en Béton Noir +Red Concrete Stairs=Escalier en Béton Rouge +Red Concrete Slab=Dalle en Béton Rouge +Double Red Concrete Slab=Double Dalle en Béton Rouge +Yellow Concrete Stairs=Escalier en Béton Jaune +Yellow Concrete Slab=Dalle en Béton Jaune +Double Yellow Concrete Slab=Double Dalle en Béton Jaune +Green Concrete Stairs=Escalier en Béton Vert +Green Concrete Slab=Dalle en Béton Vert +Double Green Concrete Slab=Double Dalle en Béton Vert +Cyan Concrete Stairs=Escalier en Béton Cyan +Cyan Concrete Slab=Dalle en Béton Cyan +Double Cyan Concrete Slab=Double Dalle en Béton Cyan +Blue Concrete Stairs=Escalier en Béton Bleu +Blue Concrete Slab=Dalle en Béton Bleu +Double Blue Concrete Slab=Double Dalle en Béton Bleu +Magenta Concrete Stairs=Escalier en Béton Magenta +Magenta Concrete Slab=Dalle en Béton Magenta +Double Magenta Concrete Slab=Double Dalle en Béton Magenta +Orange Concrete Stairs=Escalier en Béton Orange +Orange Concrete Slab=Dalle en Béton Orange +Double Orange Concrete Slab=Double Dalle en Béton Orange +Purple Concrete Stairs=Escalier en Béton Violet +Purple Concrete Slab=Dalle en Béton Violet +Double Purple Concrete Slab=Double Dalle en Béton Violet +Brown Concrete Stairs=Escalier en Béton Marron +Brown Concrete Slab=Dalle en Béton Marron +Double Brown Concrete Slab=Double Dalle en Béton Marron +Pink Concrete Stairs=Escalier en Béton Rose +Pink Concrete Slab=Dalle en Béton Rose +Double Pink Concrete Slab=Double Dalle en Béton Rose +Lime Concrete Stairs=Escalier en Béton Citron Vert +Lime Concrete Slab=Dalle en Béton Citron Vert +Double Lime Concrete Slab=Double Dalle en Béton Citron Vert +Light Blue Concrete Stairs=Escalier en Béton Bleu Clair +Light Blue Concrete Slab=Dalle en Béton Bleu Clair +Double Light Blue Concrete Slab=Double Dalle en Béton Bleu Clair +Concrete Slab=Dalle en Béton +Double Concrete Slab=Double Dalle en Béton +Concrete Stairs=Escalier en Béton diff --git a/mods/ITEMS/screwdriver/locale/screwdriver.fr.tr b/mods/ITEMS/screwdriver/locale/screwdriver.fr.tr new file mode 100644 index 00000000..ae014ea0 --- /dev/null +++ b/mods/ITEMS/screwdriver/locale/screwdriver.fr.tr @@ -0,0 +1,2 @@ +#textdomain: screwdriver +Screwdriver=Tournevis diff --git a/mods/ITEMS/xpanes/locale/xpanes.fr.tr b/mods/ITEMS/xpanes/locale/xpanes.fr.tr new file mode 100644 index 00000000..7979dfdb --- /dev/null +++ b/mods/ITEMS/xpanes/locale/xpanes.fr.tr @@ -0,0 +1,23 @@ +# textdomain: xpanes +Glass panes are thin layers of glass which neatly connect to their neighbors as you build them.=Les vitres sont de fines couches de verre qui se connectent parfaitement à leurs voisins lorsque vous les construisez. +Stained glass panes are thin layers of stained glass which neatly connect to their neighbors as you build them. They come in many different colors.=Les vitres teintées sont de fines couches de verre teinté qui se connectent parfaitement à leurs voisins lorsque vous les construisez. Ils viennent dans de nombreuses couleurs différentes. +Iron Bars=Barres de fer +Iron bars neatly connect to their neighbors as you build them.=Les barres de fer se connectent parfaitement à leurs voisins lorsque vous les construisez. +Glass Pane=Vitre +Stained Glass Pane=Vitre Teintée +Red Stained Glass Pane=Vitre Teintée Rouge +Green Stained Glass Pane=Vitre Teintée Verte +Blue Stained Glass Pane=Vitre Teintée Bleue +Light Blue Stained Glass Pane=Vitre Teintée Bleue Clair +Black Stained Glass Pane=Vitre Teintée Noire +White Stained Glass Pane=Vitre Teintée Blanche +Yellow Stained Glass Pane=Vitre Teintée Jaune +Brown Stained Glass Pane=Vitre Teintée Marron +Orange Stained Glass Pane=Vitre Teintée Orange +Pink Stained Glass Pane=Vitre Teintée Rose +Grey Stained Glass Pane=Vitre Teintée Grise +Lime Stained Glass Pane=Vitre Teintée Citron Vert +Light Grey Stained Glass Pane=Vitre Teintée Grise Claire +Magenta Stained Glass Pane=Vitre Teintée Magenta +Purple Stained Glass Pane=Vitre Teintée Violet +Cyan Stained Glass Pane=Vitre Teintée Cyan diff --git a/mods/MAPGEN/mcl_structures/locale/mcl_structures.fr.tr b/mods/MAPGEN/mcl_structures/locale/mcl_structures.fr.tr new file mode 100644 index 00000000..7c1ba272 --- /dev/null +++ b/mods/MAPGEN/mcl_structures/locale/mcl_structures.fr.tr @@ -0,0 +1,7 @@ +# textdomain: mcl_structures +Generate a pre-defined structure near your position.=Générez une structure prédéfinie près de votre position. +Structure placed.=Structure placée. +Village built. WARNING: Villages are experimental and might have bugs.=Village construit. AVERTISSEMENT: les villages sont expérimentaux et peuvent avoir des bugs. +Error: No structure type given. Please use “/spawnstruct ”.=Erreur: Aucun type de structure indiqué. Veuillez utiliser "/spawnstruct ". +Error: Unknown structure type. Please use “/spawnstruct ”.=Erreur: Type de structure inconnu. Veuillez utiliser "/spawnstruct ". +Use /help spawnstruct to see a list of avaiable types.=Utilisez /help spawnstruct pour voir une liste des types disponibles. diff --git a/mods/MISC/findbiome/locale/findbiome.fr.tr b/mods/MISC/findbiome/locale/findbiome.fr.tr new file mode 100644 index 00000000..0fc6aa57 --- /dev/null +++ b/mods/MISC/findbiome/locale/findbiome.fr.tr @@ -0,0 +1,10 @@ +# textdomain: findbiome +Find and teleport to biome=Rechercher et se téléporter sur le biome += +No player.=Aucun joueur. +Biome does not exist!=Le biome n'existe pas! +Biome found at @1.=Biome trouvé à @1. +No biome found!=Aucun biome trouvé! +List all biomes=Lister tous les biomes +No biomes.=Aucun biomes. +Not supported. The “biomeinfo” mod is required for v6 mapgen support!=Non supporté. Le mod «biomeinfo» est requis pour le support de mapgen v6! diff --git a/mods/MISC/mcl_commands/locale/mcl_commands.fr.tr b/mods/MISC/mcl_commands/locale/mcl_commands.fr.tr new file mode 100644 index 00000000..a655368b --- /dev/null +++ b/mods/MISC/mcl_commands/locale/mcl_commands.fr.tr @@ -0,0 +1,23 @@ +# textdomain: mcl_commands +Players can't be killed right now, damage has been disabled.=Les joueurs ne peuvent pas être tués pour le moment, les dégâts ont été désactivés. +Player @1 does not exist.=Le joueur @1 n'existe pas. +You are already dead=Tu es déjà mort +@1 is already dead=@1 est déjà mort +@1 committed suicide.=@1 s'est suicidé. +@1 was killed by @2.=@1 a été tué par @2. +[]=[] +Kill player or yourself=Tuez un joueur ou vous-même +Can use /say=Peut utiliser /say += +Send a message to every player=Envoyez un message à chaque joueur +Invalid usage, see /help say.=Utilisation non valide, voir /help say. +,, =,, +Set node at given position=Placer le noeud à une position donnée +Invalid node=Noeud non valide +@1 spawned.=@1 est apparu. +Invalid parameters (see /help setblock)=Paramètres invalides (voir /help setblock) +List bans=Liste des interdictions +Ban list: @1=Liste d'interdiction: @1 +Show who is logged on=Afficher qui est connecté +Displays the world seed=Affiche la graine du monde +Only peaceful mobs allowed!=Seuls les mobs pacifiques sont autorisées! diff --git a/mods/MISC/mcl_privs/locale/mcl_privs.fr.tr b/mods/MISC/mcl_privs/locale/mcl_privs.fr.tr new file mode 100644 index 00000000..eee0ac22 --- /dev/null +++ b/mods/MISC/mcl_privs/locale/mcl_privs.fr.tr @@ -0,0 +1,2 @@ +# textdomain: mcl_privs +Can place and use advanced blocks like mob spawners, command blocks and barriers.=Peut placer et utiliser des blocs avancés comme des générateurs de mob, des blocs de commande et des barrières. diff --git a/mods/MISC/mcl_wip/locale/mcl_wip.fr.tr b/mods/MISC/mcl_wip/locale/mcl_wip.fr.tr new file mode 100644 index 00000000..a17ad49a --- /dev/null +++ b/mods/MISC/mcl_wip/locale/mcl_wip.fr.tr @@ -0,0 +1,4 @@ +# textdomain: mcl_wip +# WIP means “Work in Progress” +(WIP)=(Travail en cours) +(Temporary)=(Temporaire) diff --git a/mods/PLAYER/mcl_hunger/locale/mcl_hunger.fr.tr b/mods/PLAYER/mcl_hunger/locale/mcl_hunger.fr.tr new file mode 100644 index 00000000..811868b3 --- /dev/null +++ b/mods/PLAYER/mcl_hunger/locale/mcl_hunger.fr.tr @@ -0,0 +1,8 @@ +# textdomain: mcl_hunger +@1 succumbed to the poison.=@1 a succombé au poison. +Food=Nourriture +Saturation=Saturation +%s: %.1f/%d=%s: %.1f/%d +Exhaust.=Échappement. +%s: %d/%d=%s: %d/%d +@1 starved to death.=@1 est mort de faim. diff --git a/mods/PLAYER/mcl_playerplus/locale/mcl_playerplus.fr.tr b/mods/PLAYER/mcl_playerplus/locale/mcl_playerplus.fr.tr new file mode 100644 index 00000000..6482bd73 --- /dev/null +++ b/mods/PLAYER/mcl_playerplus/locale/mcl_playerplus.fr.tr @@ -0,0 +1,3 @@ +# textdomain: mcl_playerplus +@1 suffocated to death.=@1 étouffé à mort. +@1 was prickled to death by a cactus.=@1 a été piqué à mort par un cactus. diff --git a/mods/PLAYER/mcl_skins/locale/mcl_skins.fr.tr b/mods/PLAYER/mcl_skins/locale/mcl_skins.fr.tr index fe321cfb..61d0059b 100644 --- a/mods/PLAYER/mcl_skins/locale/mcl_skins.fr.tr +++ b/mods/PLAYER/mcl_skins/locale/mcl_skins.fr.tr @@ -1,16 +1,14 @@ # textdomain: mcl_skins -# UNFINISHED translation! -# TODO: Remove the # sign from the translations below and add the missing translations. +[] []=[] [] +Select player skin of yourself or another player=Sélectionner une apparance pour vous même ou un autre joueur +Insufficient or wrong parameters=Paramètres insuffisants ou incorrects +Player @1 not online!=Le joueur @1 n'est pas en ligne! +You need the “server” privilege to change the skin of other players!=Vous avez besoin du privilège “server” pour changer l'apparance des autres joueurs! +Invalid skin number! Valid numbers: 0 to @1=Numéro d'apparance incorrect! Numéros valides : 0 à @1 +Your skin has been set to: @1=Votre apparance a été définie à: @1 +Your skin has been set to: @1 (@2)=Votre apparance a été définie à: @1 (@2) +Skin of @1 set to: @2 (@3)= +Select player skin:=Sélectionner l'apparance du joueur : +@1 (@2)=@1 (@2) +Name: @1=Nom : @ -#[] []= -#Select player skin of yourself or another player= -#Insufficient or wrong parameters= -#Player @1 not online!= -#You need the “server” privilege to change the skin of other players!= -#Invalid skin number! Valid numbers: 0 to @1= -#Your skin has been set to: @1= -#Your skin has been set to: @1 (@2)= -#Skin of @1 set to: @2 (@3)= -Select player skin:=Sélectionner l'apparence du joueur : -#@1 (@2)= -Name: @1=Nom : @1 diff --git a/mods/PLAYER/mcl_spawn/locale/mcl_spawn.fr.tr b/mods/PLAYER/mcl_spawn/locale/mcl_spawn.fr.tr new file mode 100644 index 00000000..f1fab2bf --- /dev/null +++ b/mods/PLAYER/mcl_spawn/locale/mcl_spawn.fr.tr @@ -0,0 +1,4 @@ +# textdomain: mcl_spawn +New respawn position set!=Nouvelle position de réapparition définie! +Respawn position cleared!=Position de réapparition supprimée! +Your spawn bed was missing or blocked.=Votre lit d'apparition était manquant ou bloqué. From 8c20dfa5d270765ffacc03389069b3305c4e5122 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 5 May 2020 02:23:17 +0200 Subject: [PATCH 696/737] I no longer accept PRs --- CONTRIBUTING.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index ec238b32..0fdda27f 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -26,9 +26,8 @@ For small and medium changes: * Fork the repository * Do your change in a new branch -* Post a pull request here: https://git.minetest.land/Wuzzy/MineClone2/pulls -* Alternatively: Upload the repository somewhere where it can be accessed - from the Internet and notify me +* Upload the repository somewhere where it can be accessed from the Internet and + notify me For small changes, sending me a patch is also good. From c9a37d0dbcba3d8132ebe20996bf5d0ca8df921d Mon Sep 17 00:00:00 2001 From: Rocher Laurent Date: Tue, 5 May 2020 21:02:21 +0200 Subject: [PATCH 697/737] Translate In French --- .../locale/mcl_doc_basics.fr.tr | 121 ++++++++++++------ .../locale/mcl_achievements.fr.tr | 10 +- .../mcl_inventory/locale/mcl_inventory.fr.tr | 2 +- .../locale/mcl_dispensers.fr.tr | 2 +- .../locale/mesecons_noteblock.fr.tr | 2 +- mods/ITEMS/mcl_armor/locale/mcl_armor.fr.tr | 2 +- .../mcl_banners/locale/mcl_banners.fr.tr | 4 +- mods/ITEMS/mcl_beds/locale/mcl_beds.fr.tr | 2 +- .../mcl_buckets/locale/mcl_buckets.fr.tr | 17 +++ mods/ITEMS/mcl_cake/locale/mcl_cake.fr.tr | 12 ++ .../mcl_cauldrons/locale/mcl_chaudrons.fr.tr | 11 ++ mods/ITEMS/mcl_chests/locale/mcl_chests.fr.tr | 36 ++++++ .../locale/mcl_colorblocks.fr.tr | 8 +- mods/ITEMS/mcl_core/locale/mcl_core.fr.tr | 5 +- mods/ITEMS/mcl_dye/locale/mcl_dye.fr.tr | 2 +- mods/ITEMS/mcl_end/locale/mcl_end.fr.tr | 2 +- .../mcl_farming/locale/mcl_farming.fr.tr | 4 +- mods/ITEMS/mcl_ocean/locale/mcl_ocean.fr.tr | 5 +- mods/ITEMS/mcl_stairs/locale/mcl_stairs.fr.tr | 10 +- mods/ITEMS/mcl_wool/locale/mcl_wool.fr.tr | 4 +- .../mclx_stairs/locale/mclx_stairs.fr.tr | 6 +- mods/ITEMS/xpanes/locale/xpanes.fr.tr | 8 +- mods/PLAYER/mcl_skins/locale/mcl_skins.fr.tr | 16 +-- 23 files changed, 207 insertions(+), 84 deletions(-) create mode 100644 mods/ITEMS/mcl_buckets/locale/mcl_buckets.fr.tr create mode 100644 mods/ITEMS/mcl_cake/locale/mcl_cake.fr.tr create mode 100644 mods/ITEMS/mcl_cauldrons/locale/mcl_chaudrons.fr.tr create mode 100644 mods/ITEMS/mcl_chests/locale/mcl_chests.fr.tr diff --git a/mods/HELP/mcl_doc_basics/locale/mcl_doc_basics.fr.tr b/mods/HELP/mcl_doc_basics/locale/mcl_doc_basics.fr.tr index d4b3c289..d6edcfb6 100644 --- a/mods/HELP/mcl_doc_basics/locale/mcl_doc_basics.fr.tr +++ b/mods/HELP/mcl_doc_basics/locale/mcl_doc_basics.fr.tr @@ -16,6 +16,7 @@ Basic controls:=Contrôles de base: • Recover from swings to deal full damage=• Attendez les virages pour faire des dégâts complets • Right-click to build blocks and use things=• Clic droit pour construire des blocs et utiliser des choses • [I] for the inventory=• [I] pour l'inventaire +• First items in inventory appear in hotbar below=• Les premiers éléments de l'inventaire apparaissent dans la barre de raccourci ci-dessous • Lowest row in inventory appears in hotbar below=• La ligne la plus basse de l'inventaire apparaît dans la barre d'outils ci-dessous • [Esc] to close this window=• [Esc] pour fermer cette fenêtre How to play:=Comment jouer: @@ -32,14 +33,14 @@ How to play:=Comment jouer: Minetest=Minetest Minetest is a free software game engine for games based on voxel gameplay, inspired by InfiniMiner, Minecraft, and the like. Minetest was originally created by Perttu Ahola (alias “celeron55”).=Minetest est un moteur de jeu logiciel gratuit pour les jeux basés sur le gameplay voxel, inspiré d'InfiniMiner, Minecraft, etc. Minetest a été créé à l'origine par Perttu Ahola (alias «celeron55»). The player is thrown into a huge world made out of cubes or blocks. These cubes usually make the landscape they blocks can be removed and placed almost entirely freely. Using the collected items, new tools and other items can be crafted. Games in Minetest can, however, be much more complex than this.=Le joueur est jeté dans un monde immense fait de cubes ou de blocs. Ces cubes font généralement le paysage qu'ils blocs peuvent être enlevés et placés presque entièrement librement. En utilisant les objets collectés, de nouveaux outils et autres objets peuvent être fabriqués. Les jeux dans Minetest peuvent cependant être beaucoup plus complexes que cela. -A core feature of Minetest is the built-in modding capability. Mods modify existing gameplay. They can be as simple as adding a few decorative blocks or be very complex by e.g. introducing completely new gameplay concepts, generating a completely different kind of world, and many other things.=Une caractéristique essentielle de Minetest est la capacité de modding intégrée. Les mods modifient le gameplay existant. Ils peuvent être aussi simples que l'ajout de quelques blocs décoratifs ou être très complexes par ex. introduisant des concepts de gameplay complètement nouveaux, générant un type de monde complètement différent, et bien d'autres choses. +A core feature of Minetest is the built-in modding capability. Mods modify existing gameplay. They can be as simple as adding a few decorational blocks or be very complex by e.g. introducing completely new gameplay concepts, generating a completely different kind of world, and many other things.=Une caractéristique essentielle de Minetest est la capacité de modding intégrée. Les mods modifient le gameplay existant. Ils peuvent être aussi simples que l'ajout de quelques blocs décoratifs ou être très complexes par ex. introduisant des concepts de gameplay complètement nouveaux, générant un type de monde complètement différent, et bien d'autres choses. Minetest can be played alone or online together with multiple players. Online play will work out of the box with any mods, with no need for additional software as they are entirely provided by the server.=Minetest peut être joué seul ou en ligne avec plusieurs joueurs. Le jeu en ligne fonctionnera immédiatement avec tous les mods, sans avoir besoin de logiciels supplémentaires car ils sont entièrement fournis par le serveur. Minetest is usually bundled with a simple default game, named “Minetest Game” (shown in images 1 and 2). You probably already have it. Other games for Minetest can be downloaded from the official Minetest forums .=Minetest est généralement fourni avec un jeu par défaut simple, nommé «Minetest Game» (illustré dans les images 1 et 2). Vous l'avez probablement déjà. D'autres jeux pour Minetest peuvent être téléchargés à partir des forums officiels Minetest . Minetest as well as Minetest Game are both unfinished at the moment, so please forgive us when not everything works out perfectly.=Minetest ainsi que Minetest Game sont tous deux inachevés pour le moment, alors veuillez nous pardonner quand tout ne fonctionne pas parfaitement. Sneaking=Se faufiler Sneaking makes you walk slower and prevents you from falling off the edge of a block.=Se faufiler vous fait marcher plus lentement et vous empêche de tomber du bord d'un bloc. To sneak, hold down the sneak key (default: [Shift]). When you release it, you stop sneaking. Careful: When you release the sneak key at a ledge, you might fall!=Pour vous faufiler, maintenez enfoncée la touche furtive (par défaut: [Shift]). Lorsque vous le relâchez, vous arrêtez de vous faufiler. Attention: lorsque vous relâchez la touche furtive sur un rebord, vous risquez de tomber! -• Sneak: [Shift]=• Sneak: [Shift] +• Sneak: [Shift]=• Se faufiler: [Shift] Sneaking only works when you stand on solid ground, are not in a liquid and don't climb.=Se faufiler ne fonctionne que lorsque vous vous tenez sur un sol solide, pas dans un liquide et ne grimpez pas. If you jump while holding the sneak key, you also jump slightly higher than usual.=Si vous sautez tout en maintenant la touche furtive, vous sautez également légèrement plus haut que d'habitude. Sneaking might be disabled by mods. In this case, you still walk slower by sneaking, but you will no longer be stopped at ledges.=Le faufilement peut être désactivé par les mods. Dans ce cas, vous marchez toujours plus lentement en vous faufilant, mais vous ne serez plus arrêté aux rebords. @@ -63,11 +64,14 @@ Extended movement (requires privileges):=Déplacement étendu (nécessite des pr • K: Toggle fly mode, makes you move freely in all directions (requires “fly” privilege)=• K: Basculer en mode vol, vous permet de vous déplacer librement dans toutes les directions (nécessite le privilège "fly") • H: Toggle noclip mode, makes you go through walls in fly mode (requires “noclip” privilege)=• H: Bascule le mode noclip, vous fait passer à travers les murs en mode vol (nécessite le privilège "noclip") • E: Move even faster when in fast mode=• E: Déplacez-vous encore plus rapidement en mode rapide +• E: Walk fast in fast mode=• E: Marchez vite en mode rapide World interaction:=Interaction avec le monde: • Left mouse button: Punch / mine blocks / take items=• Bouton gauche de la souris: Perforer / miner des blocs / prendre des objets +• Left mouse button: Punch / mine blocks=• Bouton gauche de la souris: Perforer / miner des blocs • Right mouse button: Build or use pointed block=• Bouton droit de la souris: Créer ou utiliser un bloc pointu • Shift+Right mouse button: Build=• Shift+Bouton droit de la souris: Construire • Roll mouse wheel: Select next/previous item in hotbar=• Molette de la souris: Sélectionnez l'élément suivant / précédent dans la barre active +• Roll mouse wheel / B / N: Select next/previous item in hotbar=• Faites rouler la molette de la souris / B / N: Sélectionnez l'élément suivant / précédent dans la barre de raccourci • 1-9: Select item in hotbar directly=• 1-9: sélectionnez directement l'élément dans la barre de raccourci • Q: Drop item stack=• Q: Déposer la pile d'objets • Shift+Q: Drop 1 item=• Shift+Q: Déposer 1 élément @@ -75,20 +79,20 @@ World interaction:=Interaction avec le monde: Inventory interaction:=Interaction d'inventaire: See the entry “Basics > Inventory”.=Voir l'entrée «Bases> Inventaire». Camera:=Caméra: -• Z: Zoom (requires “zoom” privilege)=• Z: Zoom (nécessite le privilège “zoom”) +• Z: Zoom=• Z: Zoom • F7: Toggle camera mode=• F7: Bascule le mode caméra • F8: Toggle cinematic mode=• F8: Basculer le mode cinématique Interface:=Interface: • Esc: Open menu window (pauses in single-player mode) or close window=• Esc: Ouvrir la fenêtre du menu (fait une pause en mode solo) ou fermer la fenêtre • F1: Show/hide HUD=• F1: Afficher/masquer le HUD • F2: Show/hide chat=• F2: Afficher/masquer le chat -• F9: Toggle minimap (only works if have a map)=• F9: Basculer la mini-carte (ne fonctionne que si vous avez une carte) +• F9: Toggle minimap=• F9: Basculer la mini-carte • Shift+F9: Toggle minimap rotation mode=• Shift+F9: Bascule le mode de rotation de la mini-carte • F10: Open/close console/chat log=• F10: Ouvrir/fermer la console/journal de chat • F12: Take a screenshot=• F12: Prendre une capture d'écran Server interaction:=Interaction avec le serveur: -• T: Open chat window (chat requires the “shout” privilege)=• T: ouvrir la fenêtre de discussion (la discussion nécessite le privilège "shout") -• /: Start issuing a server command)=• /: Lancer l'émission d'une commande serveur +• T: Open chat window (chat requires the “shout” privilege)=• T: Ouvrir la fenêtre de discussion (la discussion nécessite le privilège "shout") +• /: Start issuing a server command=• /: Lancer l'émission d'une commande serveur Technical:=Technique: • R: Toggle far view (disables all fog and allows viewing far away, can make game very slow)=• R: Basculer la vue éloignée (désactive tout le brouillard et permet une visualisation éloignée, peut rendre le jeu très lent) • +: Increase minimal viewing distance=• +: Augmentez la distance de visionnement minimale @@ -99,18 +103,32 @@ Technical:=Technique: • P: Only useful for developers. Writes current stack traces=• P: utile uniquement pour les développeurs. Écrit les traces de pile actuelles Players=Joueurs Players (actually: “player characters”) are the characters which users control.=Les joueurs (en fait: "personnages joueurs") sont les personnages que les utilisateurs contrôlent. -Players are living beings which occupy a space of about 1×2×1 cubes. They start with 20 health points (HP) and 10 breath points (BP).=Les joueurs sont des êtres vivants qui occupent un espace d'environ 1×2×1 cubes. Ils commencent avec 20 points de vie (VP) et 10 points de respiration (BP). +Players are living beings. They start with a number of health points (HP) and a number of breath points (BP).=Les joueurs sont des êtres vivants. Ils commencent par un certain nombre de points de vie (PV) et un certain nombre de points de respiration (BP). Players are capable of walking, sneaking, jumping, climbing, swimming, diving, mining, building, fighting and using tools and blocks.=Les joueurs sont capables de marcher, se faufiler, sauter, grimper, nager, plonger, exploiter, construire, se battre et utiliser des outils et des blocs. -At a health of 0, the player dies and loses all items in the inventory. The player can just respawn in the world.=À une santé de 0, le joueur meurt et perd tous les objets de l'inventaire. Le joueur peut simplement réapparaître dans le monde. +Players can take damage for a variety of reasons, here are some:=Les joueurs peuvent subir des dégâts pour diverses raisons, en voici quelques-unes: +• Taking fall damage=• Prendre des dégâts de chute +• Touching a block which causes direct damage=• Toucher un bloc qui cause des dommages directs +• Drowning=• Noyade +• Being attacked by another player=• Être attaqué par un autre joueur +• Being attacked by a computer enemy=• Être attaqué par un ennemi informatique +At a health of 0, the player dies. The player can just respawn in the world.=À une santé de 0, le joueur meurt. Le joueur peut simplement réapparaître dans le monde. +Other consequences of death depend on the game. The player could lose all items, or lose the round in a competitive game.=Les autres conséquences de la mort dépendent du jeu. Le joueur pourrait perdre tous les objets ou perdre la manche dans une partie compétitive. Some blocks reduce breath. While being with the head in a block which causes drowning, the breath points are reduced by 1 for every 2 seconds. When all breath is gone, the player starts to suffer drowning damage. Breath is quickly restored in any other block.=Certains blocs réduisent la respiration. Tout en étant avec la tête dans un bloc qui provoque la noyade, les points de respiration sont réduits de 1 toutes les 2 secondes. Quand tout le souffle est parti, le joueur commence à subir des dégâts de noyade. Le souffle est rapidement rétabli dans tout autre bloc. Damage can be disabled on any world. Without damage, players are immortal and health and breath are unimportant.=Les dégâts peuvent être désactivés sur n'importe quel monde. Sans dégâts, les joueurs sont immortels et la santé et le souffle sont sans importance. In multi-player mode, the name of other players is written above their head.=En mode multi-joueurs, le nom des autres joueurs est écrit au-dessus de leur tête. Items=Objects Items are things you can carry along and store in inventories. They can be used for crafting, smelting, building, mining, and more. Types of items include blocks, tools, weapons and items only used for crafting.=Les objets sont des choses que vous pouvez emporter et stocker dans des inventaires. Ils peuvent être utilisés pour l'artisanat, la fusion, la construction, l'exploitation minière, etc. Les types d'objets comprennent des blocs, des outils, des armes et des objets uniquement utilisés pour l'artisanat. An item stack is a collection of items of the same type which fits into a single item slot. Item stacks can be dropped on the ground. Items which drop into the same coordinates will form an item stack.=Une pile d'objets est une collection d'objets du même type qui tient dans un seul emplacement d'objet. Les piles d'objets peuvent être déposées au sol. Les objets qui tombent dans les mêmes coordonnées formeront une pile d'objets. +Items have several properties, including the following:=Les éléments ont plusieurs propriétés, notamment les suivantes: +• Maximum stack size: Number of items which fit on 1 item stack=• Taille maximale de la pile: Nombre d'articles pouvant tenir sur une pile d'articles +• Pointing range: How close things must be to be pointed while wielding this item=• Plage de pointage: A quelle distance les choses doivent être pointées lorsque vous maniez cet objet +• Group memberships: See “Basics > Groups”=• Appartenance à un groupe: Voir "Général> Groupes" +• May be used for crafting or cooking=• Peut être utilisé pour l'artisanat ou la cuisine Dropped item stacks will be collected automatically when you stand close to them.=Les piles d'objets déposés seront collectées automatiquement lorsque vous vous tenez près d'eux. Tools=Outils Some items may serve as a tool when wielded. Any item which has some special use which can be directly used by its wielder is considered a tool.=Certains articles peuvent servir d'outil lorsqu'ils sont utilisés. Tout objet ayant une utilité particulière pouvant être directement utilisé par son porteur est considéré comme un outil. +When nothing is wielded, players use their hand which may act as tool and weapon.=Quand rien n'est manié, les joueurs utilisent leur main qui peut servir d'outil et d'arme. +A common subset of tools is mining tools. These are important to break all kinds of blocks. Weapons are a kind of tool. There are of course many other possible tools. Special actions of tools are usually done by left-click or right-click.=Un sous-ensemble d'outils sont les outils de minage. Ceux-ci sont importants pour casser toutes sortes de blocs. Les armes sont une sorte d'outil. Il existe bien sûr de nombreux autres outils possibles. Les actions spéciales des outils sont généralement effectuées par un clic gauche ou un clic droit. Mining tools are important to break all kinds of blocks. Weapons are another kind of tool. There are some other more specialized tools. Special actions of tools are usually done by right-click.=Les outils miniers sont importants pour briser toutes sortes de blocs. Les armes sont un autre type d'outil. Il existe d'autres outils plus spécialisés. Les actions spéciales des outils sont généralement effectuées par un clic droit. When nothing is wielded, players use their hand which may act as tool and weapon. The hand is capable of punching and deals minimum damage.=Quand rien n'est manié, les joueurs utilisent leur main qui peut servir d'outil et d'arme. La main est capable de poinçonner et inflige un minimum de dégâts. Many tools will wear off when using them and may eventually get destroyed. The damage is displayed in a damage bar below the tool icon. If no damage bar is shown, the tool is in mint condition. Tools may be repairable by crafting, see “Basics > Crafting”.=De nombreux outils s'usent lors de leur utilisation et peuvent éventuellement être détruits. Les dégâts sont affichés dans une barre de dégâts sous l'icône de l'outil. Si aucune barre de dommage n'est affichée, l'outil est en parfait état. Les outils peuvent être réparables par artisanat, voir «Bases> Artisanat». @@ -120,7 +138,7 @@ Melee weapons deal damage by punching players and other animate objects. There a • Single punch: Left-click once to deal a single punch=• Coup de poing unique: Cliquez une fois avec le bouton gauche pour traiter un coup de poing • Quick punching: Hold down the left mouse button to deal quick repeated punches=• Poinçonnage rapide: Maintenez le bouton gauche de la souris enfoncé pour effectuer des coups de poing répétés rapidement There are two core attributes of melee weapons:=Il y a deux attributs principaux des armes de mêlée: -• Maximum damage: Damage which is dealt after a hit when the weapon was fully recovered)=• Dégâts maximum: Dégâts qui sont infligés après un coup lorsque l'arme a été complètement récupérée) +• Maximum damage: Damage which is dealt after a hit when the weapon was fully recovered=• Dégâts maximum: Dégâts qui sont infligés après un coup lorsque l'arme a été complètement récupérée • Full punch interval: Time it takes for fully recovering from a punch=• Intervalle de poinçonnage complet: temps nécessaire pour récupérer complètement d'un poinçon A weapon only deals full damage when it has fully recovered from a previous punch. Otherwise, the weapon will deal only reduced damage. This means, quick punching is very fast, but also deals rather low damage. Note the full punch interval does not limit how fast you can attack.=Une arme n'inflige des dégâts complets que lorsqu'elle a complètement récupéré d'un coup de poing précédent. Sinon, l'arme n'infligera que des dégâts réduits. Cela signifie que le poinçonnage rapide est très rapide, mais inflige également des dégâts plutôt faibles. Notez que l'intervalle de punch complet ne limite pas la vitesse à laquelle vous pouvez attaquer. There is a rule which sometimes makes attacks impossible: Players, animate objects and weapons belong to damage groups. A weapon only deals damage to those who share at least one damage group with it. So if you're using the wrong weapon, you might not deal any damage at all.=Il existe une règle qui rend parfois les attaques impossibles: les joueurs, les objets animés et les armes appartiennent à des groupes de dégâts. Une arme inflige uniquement des dégâts à ceux qui partagent au moins un groupe de dégâts avec elle. Donc, si vous utilisez la mauvaise arme, vous pourriez ne pas infliger de dégâts du tout. @@ -129,7 +147,13 @@ Pointing=Pointage To point something, it must be in the pointing range (also just called “range”) of your wielded item. There's a default range when you are not wielding anything. A pointed thing will be outlined or highlighted (depending on your settings). Pointing is not possible with the 3rd person front camera.=Pour pointer quelque chose, il doit se trouver dans la plage de pointage (également appelée simplement "plage") de votre objet brandi. Il y a une plage par défaut lorsque vous ne maniez rien. Une chose pointue sera soulignée ou mise en évidence (en fonction de vos paramètres). Le pointage n'est pas possible avec la caméra frontale à la 3ème personne. A few things can not be pointed. Most blocks are pointable. A few blocks, like air, can never be pointed. Other blocks, like liquids can only be pointed by special items.=Certaines choses ne peuvent pas être signalées. La plupart des blocs sont pointables. Quelques blocs, comme l'air, ne peuvent jamais être pointés. D'autres blocs, comme les liquides, ne peuvent être pointés que par des objets spéciaux. Camera=Caméra +There are 3 different views which determine the way you see the world. The modes are:=Il y a 3 vues différentes qui déterminent la façon dont vous voyez le monde. Les modes sont: +• 1: First-person view (default)=• 1: Vue à la première personne (par défaut) +• 2: Third-person view from behind=• 2: Vue à la troisième personne par derrière +• 3: Third-person view from the front=• 3: Vue à la troisième personne de face You can change the camera mode by pressing [F7].=Vous pouvez changer le mode de l'appareil photo en appuyant sur [F7]. +You might be able to zoom with [Z] to zoom the view at the crosshair. This allows you to look further.=Vous pourrez peut-être zoomer avec [Z] pour zoomer la vue sur le réticule. Cela vous permet de regarder plus loin. +Zooming is a gameplay feature that might be enabled or disabled by the game. By default, zooming is enabled when in Creative Mode but disabled otherwise.=Le zoom est une fonctionnalité de gameplay qui peut être activée ou désactivée par le jeu. Par défaut, le zoom est activé en mode créatif mais désactivé dans le cas contraire. There is also Cinematic Mode which can be toggled with [F8]. With Cinematic Mode enabled, the camera movements become more smooth. Some players don't like it, it is a matter of taste.=Il y a aussi le mode cinématique qui peut être basculé avec [F8]. Lorsque le mode cinématique est activé, les mouvements de la caméra deviennent plus fluides. Certains joueurs ne l'aiment pas, c'est une question de goût. By holding down [Z], you can zoom the view at your crosshair. You need the “zoom” privilege to do this.=En maintenant [Z] enfoncé, vous pouvez agrandir la vue sur votre réticule. Vous avez besoin du privilège "zoom" pour ce faire. • Switch camera mode: [F7]=• Changer le mode de l'appareil photo: [F7] @@ -137,6 +161,7 @@ By holding down [Z], you can zoom the view at your crosshair. You need the “zo • Zoom: [Z]=• Zoom: [Z] Blocks=Blocs The world of MineClone 2 is made entirely out of blocks (voxels, to be precise). Blocks can be added or removed with the correct tools.=Le monde de MineClone 2 est entièrement constitué de blocs (voxels, pour être précis). Les blocs peuvent être ajoutés ou supprimés avec les bons outils. +The world is made entirely out of blocks (voxels, to be precise). Blocks can be added or removed with the correct tools.=Le monde est entièrement fait de blocs (voxels, pour être précis). Les blocs peuvent être ajoutés ou supprimés avec les bons outils. Blocks can have a wide range of different properties which determine mining times, behavior, looks, shape, and much more. Their properties include:=Les blocs peuvent avoir un large éventail de propriétés différentes qui déterminent les temps d'exploration, le comportement, l'apparence, la forme et bien plus encore. Leurs propriétés comprennent: • Collidable: Collidable blocks can not be passed through; players can walk on them. Non-collidable blocks can be passed through freely=• Collidable: les blocs collidables ne peuvent pas être traversés; les joueurs peuvent marcher dessus. Les blocs non collidables peuvent passer librement • Pointable: Pointable blocks show a wireframe or a halo box when pointed. But you will just point through non-pointable blocks. Liquids are usually non-pointable but they can be pointed at by some special tools=• Pointable: les blocs pointables affichent un filaire ou une boîte de halo lorsqu'ils sont pointés. Mais vous pointerez simplement à travers des blocs non pointables. Les liquides sont généralement non pointables mais ils peuvent être pointés par certains outils spéciaux @@ -161,13 +186,17 @@ Normally, blocks are built in front of the pointed side of the pointed block. A Liquids=Liquides Liquids are special dynamic blocks. Liquids like to spread and flow to their surrounding blocks. Players can swim and drown in them.=Les liquides sont des blocs dynamiques spéciaux. Les liquides aiment se propager et s'écouler vers leurs blocs environnants. Les joueurs peuvent nager et se noyer en eux. Liquids usually come in two forms: In source form (S) and in flowing form (F).=Les liquides se présentent généralement sous deux formes: sous forme source (S) et sous forme fluide (F). -Liquid sources have the shape of a full cube. A liquid source will generate flowing liquids around it from time to time, and, if the liquid is renewable, it also generates liquid sources. A liquid source can sustain itself. A long it is left alone, a liquid source will normally keep its place and does not drain out.=Les sources liquides ont la forme d'un cube plein. Une source de liquide génère de temps à autre des liquides qui coulent autour d'elle et, si le liquide est renouvelable, elle génère également des sources de liquide. Une source liquide peut se maintenir. Pendant longtemps, il est laissé seul, une source de liquide gardera normalement sa place et ne s'écoulera pas. +Liquid sources have the shape of a full cube. A liquid source will generate flowing liquids around it from time to time, and, if the liquid is renewable, it also generates liquid sources. A liquid source can sustain itself. As long it is left alone, a liquid source will normally keep its place and does not drain out.=Les sources liquides ont la forme d'un cube plein. Une source de liquide génère de temps à autre des liquides qui coulent autour d'elle et, si le liquide est renouvelable, elle génère également des sources de liquide. Une source liquide peut se maintenir. Tant qu'elle est laissée seule, une source liquide gardera normalement sa place et ne s'écoulera pas. Flowing liquids take a sloped form. Flowing liquids spread around the world until they drain. A flowing liquid can not sustain itself and always comes from a liquid source, either directly or indirectly. Without a liquid source, a flowing liquid will eventually drain out and disappear.=Les liquides qui coulent prennent une forme inclinée. Les liquides qui coulent se répandent dans le monde jusqu'à ce qu'ils s'écoulent. Un liquide qui coule ne peut pas subvenir à ses besoins et provient toujours d'une source de liquide, directement ou indirectement. Sans source de liquide, un liquide qui s'écoule finira par s'écouler et disparaître. All liquids share the following properties:=Tous les liquides partagent les propriétés suivantes: -• All properties of blocks (including drowning damage=• Toutes les propriétés des blocs (y compris les dégâts de noyade +• All properties of blocks (including drowning damage)=• Toutes les propriétés des blocs (y compris les dégâts de noyade) • Renewability: Renewable liquids can create new sources=• Renouvelabilité: les liquides renouvelables peuvent créer de nouvelles sources • Flowing range: How many flowing liquids are created at maximum per liquid source, it determines how far the liquid will spread. Possible are ranges from 0 to 8. At 0, no flowing liquids will be created. Image 5 shows a liquid of flowing range 2=• Plage d'écoulement: le nombre de liquides qui s'écoulent au maximum par source de liquide détermine la distance de propagation du liquide. Les plages possibles sont comprises entre 0 et 8. À 0, aucun liquide ne sera créé. L'image 5 montre un liquide de gamme fluide 2 • Viscosity: How slow players move through it and how slow the liquid spreads=• Viscosité: la vitesse à laquelle les joueurs se déplacent et la vitesse de propagation du liquide +Renewable liquids create new liquid sources at open spaces (image 2). A new liquid source is created when:=Les liquides renouvelables créent de nouvelles sources de liquide dans les espaces ouverts (image 2). Une nouvelle source de liquide est créée lorsque: +• Two renewable liquid blocks of the same type touch each other diagonally=• Deux blocs liquides renouvelables du même type se touchent en diagonale +• These blocks are also on the same height=• Ces blocs sont également à la même hauteur +• One of the two “corners” is open space which allows liquids to flow in=• L'un des deux «coins» est un espace ouvert qui permet aux liquides de s'écouler When those criteria are met, the open space is filled with a new liquid source of the same type (image 3).=Lorsque ces critères sont remplis, l'espace ouvert est rempli d'une nouvelle source de liquide du même type (image 3). Swimming in a liquid is fairly straightforward: The usual direction keys for basic movement, the jump key for rising and the sneak key for sinking.=Nager dans un liquide est assez simple: les touches de direction habituelles pour les mouvements de base, la touche de saut pour la montée et la touche furtive pour le naufrage. The physics for swimming and diving in a liquid are:=La physique pour nager et plonger dans un liquide est: @@ -180,31 +209,37 @@ Crafting=Artisanat Crafting is the task of combining several items to form a new item.=L'artisanat consiste à combiner plusieurs éléments pour former un nouvel élément. To craft something, you need one or more items, a crafting grid (C) and a crafting recipe. A crafting grid is like a normal inventory which can also be used for crafting. Items need to be put in a certain pattern into the crafting grid. Next to the crafting grid is an output slot (O). Here the result will appear when you placed items correctly. This is just a preview, not the actual item. Crafting grids can come in different sizes which limits the possible recipes you can craft.=Pour fabriquer quelque chose, vous avez besoin d'un ou plusieurs objets, d'une grille de fabrication (C) et d'une recette de fabrication. Une grille d'artisanat est comme un inventaire normal qui peut également être utilisé pour l'artisanat. Les objets doivent être placés selon un certain modèle dans la grille de fabrication. À côté de la grille de fabrication se trouve un emplacement de sortie (O). Ici, le résultat apparaîtra lorsque vous aurez placé les objets correctement. Ceci n'est qu'un aperçu, pas l'élément réel. Les grilles de fabrication peuvent être de différentes tailles, ce qui limite les recettes possibles que vous pouvez créer. To complete the craft, take the result item from the output slot, which will consume items from the crafting grid and creates a new item. It is not possible to place items into the output slot.=Pour terminer le métier, prenez l'objet résultant de l'emplacement de sortie, qui consommera des objets de la grille de fabrication et créera un nouvel objet. Il n'est pas possible de placer des éléments dans la fente de sortie. -A description on how to craft an item is called a “crafting recipe”. These crafting recipes can be found in the crafting guide which you can access from the inventory menu.=Une description sur la façon de fabriquer un objet est appelée "recette d'artisanat". Ces recettes d'artisanat peuvent être trouvées dans le guide d'artisanat auquel vous pouvez accéder à partir du menu d'inventaire. +A description on how to craft an item is called a “crafting recipe”. You need this knowledge to craft. There are multiple ways to learn crafting recipes. One way is by using a crafting guide, which contains a list of available crafting recipes. Some games provide crafting guides. There are also some mods which you can download online for installing a crafting guide. Another way is by reading the online manual of the game (if one is available).=Une description sur la façon de fabriquer un objet est appelée "recette d'artisanat". Vous avez besoin de ces connaissances pour créer. Il existe plusieurs façons d'apprendre des recettes d'artisanat. Une façon consiste à utiliser un guide d'artisanat, qui contient une liste des recettes d'artisanat disponibles. Certains jeux proposent des guides d'artisanat. Il existe également des mods que vous pouvez télécharger en ligne pour installer un guide d'artisanat. Une autre façon consiste à lire le manuel en ligne du jeu (s'il en existe un). Crafting recipes consist of at least one input item and exactly one stack of output items. When performing a single craft, it will consume exactly one item from each stack of the crafting grid, unless the crafting recipe defines replacements.=Les recettes d'artisanat consistent en au moins un élément d'entrée et exactement une pile d'éléments de sortie. Lors de l'exécution d'un seul métier, il consommera exactement un objet de chaque pile de la grille de fabrication, à moins que la recette de fabrication ne définisse des remplacements. +There are multiple types of crafting recipes:=Il existe plusieurs types de recettes d'artisanat: +• Shaped (image 2): Items need to be placed in a particular shape=• En forme (image 2): Les articles doivent être placés dans une forme particulière +• Shapeless (images 3 and 4): Items need to be placed somewhere in input (both images show the same recipe)=• Sans forme (images 3 et 4): Les éléments doivent être placés quelque part dans l'entrée (les deux images montrent la même recette) +• Cooking: Explained in “Basics > Cooking”=• Cuisine: expliquée dans "Bases> Cuisine" +• Repairing (image 5): Place two damaged tools into the crafting grid anywhere to get a tool which is repaired by 5%=• Réparation (image 5): Placez deux outils endommagés dans la grille d'artisanat n'importe où pour obtenir un outil qui est réparé de 5% In some crafting recipes, some input items do not need to be a concrete item, instead they need to be a member of a group (see “Basics > Groups”). These recipes offer a bit more freedom in the input items. Images 6-8 show the same group-based recipe. Here, 8 items of the “stone” group are required, which is true for all of the shown items.=Dans certaines recettes d'artisanat, certains éléments d'entrée n'ont pas besoin d'être un élément concret, ils doivent plutôt être membres d'un groupe (voir "Bases> Groupes"). Ces recettes offrent un peu plus de liberté dans les éléments d'entrée. Les images 6-8 montrent la même recette de groupe. Ici, 8 éléments du groupe "pierre" sont requis, ce qui est vrai pour tous les éléments affichés. Rarely, crafting recipes have replacements. This means, whenever you perform a craft, some items in the crafting grid will not be consumed, but instead will be replaced by another item.=Rarement, les recettes d'artisanat ont des remplacements. Cela signifie que chaque fois que vous effectuez un métier, certains objets de la grille de fabrication ne seront pas consommés, mais seront remplacés à la place par un autre objet. Cooking=Cuisine -Cooking (or smelting) is a form of crafting which does not involve a crafting grid. Cooking is done with a furnace, an cookable item, a fuel item and time in order to yield a new item.=La cuisson (ou la fonte) est une forme d'artisanat qui n'implique pas de grille d'artisanat. La cuisson se fait avec un four, un élément pouvant être cuit, un élément combustible et du temps afin de produire un nouvel élément. +Cooking (or smelting) is a form of crafting which does not involve a crafting grid. Cooking is done with a special block (like a furnace), an cookable item, a fuel item and time in order to yield a new item.=La cuisson (ou la fonte) est une forme d'artisanat qui n'implique pas de grille d'artisanat. La cuisson se fait avec un bloc spécial (comme un four), un article à cuire, un article à combustible et du temps afin de produire un nouvel article. Each fuel item has a burning time. This is the time a single item of the fuel keeps a furnace burning.=Chaque élément combustible a une durée de combustion. C'est le moment où un seul élément du combustible continue de brûler un four. Each cookable item requires time to be cooked. This time is specific to the item type and the item must be “on fire” for the whole cooking time to actually yield the result.=Chaque élément pouvant être cuit nécessite du temps pour être cuit. Cette durée est spécifique au type d'élément et l'élément doit être «en feu» pendant tout le temps de cuisson pour donner réellement le résultat. Hotbar=Hotbar -At the bottom of the screen you see some squares. This is called the “hotbar”. The hotbar allows you to quickly access the lowest row of items in the player inventory.=Au bas de l'écran, vous voyez des carrés. C'est ce qu'on appelle la "hotbar". La barre d'accès vous permet d'accéder rapidement à la rangée d'objets la plus basse de l'inventaire du joueur. -You can change the selected item with the mouse wheel or the number keys.=Vous pouvez modifier l'élément sélectionné avec la molette de la souris ou les touches numériques. -• Select previous item in hotbar: [Mouse wheel up]=• Sélectionnez l'élément précédent dans la hotbar: [Molette de la souris vers le haut] -• Select next item in hotbar: [Mouse wheel down]=• Sélectionnez l'élément suivant dans la hotbar: [Molette de la souris vers le bas] -• Select item in hotbar directly: [0]-[9]=• Sélectionnez l'élément dans la hotbar directement: [0] - [9] +At the bottom of the screen you see some squares. This is called the “hotbar”. The hotbar allows you to quickly access the first items from your player inventory.=Au bas de l'écran, vous voyez des carrés. C'est ce qu'on appelle la "hotbar". La barre d'accès vous permet d'accéder rapidement aux premiers éléments de votre inventaire de joueur. +You can change the selected item with the mouse wheel or the keyboard.=Vous pouvez modifier l'élément sélectionné avec la molette de la souris ou le clavier. +• Select previous item in hotbar: [Mouse wheel up] or [B]=• Sélectionnez l'élément précédent dans la hotbar: [Molette de la souris vers le haut] ou [B] +• Select next item in hotbar: [Mouse wheel down] or [N]=• Sélectionnez l'élément suivant dans la hotbar: [Molette de la souris vers le bas] ou [N] +• Select item in hotbar directly: [1]-[9]=• Sélectionnez l'élément dans la hotbar directement: [1]-[9] The selected item is also your wielded item.=L'élément sélectionné est également votre élément brandi. Minimap=Mini-carte If you have a map item in any of your hotbar slots, you can use the minimap.=Si vous avez un élément de carte dans l'un de vos emplacements de hotbar vous pouvez utiliser la minicarte. Press [F9] to make a minimap appear on the top right. The minimap helps you to find your way around the world. Press it again to select different minimap modes and zoom levels. The minimap also shows the positions of other players.=Appuyez sur [F9] pour faire apparaître une mini-carte en haut à droite. La mini-carte vous aide à trouver votre chemin dans le monde. Appuyez à nouveau pour sélectionner différents modes de minicarte et niveaux de zoom. La mini-carte montre également les positions des autres joueurs. There are 2 minimap modes and 3 zoom levels.=Il existe 2 modes de minicarte et 3 niveaux de zoom. Surface mode (image 1) is a top-down view of the world, roughly resembling the colors of the blocks this world is made of. It only shows the topmost blocks, everything below is hidden, like a satellite photo. Surface mode is useful if you got lost.=Le mode surface (image 1) est une vue de haut en bas du monde, ressemblant à peu près aux couleurs des blocs dont ce monde est fait. Il ne montre que les blocs les plus hauts, tout ce qui suit est caché, comme une photo satellite. Le mode Surface est utile si vous vous êtes perdu. -Radar mode (image 2) is more complicated. It displays the “denseness” of the area around you and changes with your height. Roughly, the more green an area is, the less “dense” it is. Black areas have many blocks. Use the radar to find caverns, hidden areas, walls and more. The rectangular shapes in image 2 clearly expose the position of a dungeon. Radar mode is only available in Creative Mode=Le mode radar (image 2) est plus compliqué. Il affiche la «densité» de la zone autour de vous et change avec votre taille. En gros, plus une zone est verte, moins elle est «dense». Les zones noires ont de nombreux blocs. Utilisez le radar pour trouver des cavernes, des zones cachées, des murs et plus encore. Les formes rectangulaires de l'image 2 révèlent clairement la position d'un donjon. Le mode radar n'est disponible qu'en mode créatif +Radar mode (image 2) is more complicated. It displays the “denseness” of the area around you and changes with your height. Roughly, the more green an area is, the less “dense” it is. Black areas have many blocks. Use the radar to find caverns, hidden areas, walls and more. The rectangular shapes in image 2 clearly expose the position of a dungeon.=Le mode radar (image 2) est plus compliqué. Il affiche la «densité» de la zone autour de vous et change avec votre taille. En gros, plus une zone est verte, moins elle est «dense». Les zones noires ont de nombreux blocs. Utilisez le radar pour trouver des cavernes, des zones cachées, des murs et plus encore. Les formes rectangulaires de l'image 2 révèlent clairement la position d'un donjon. There are also two different rotation modes. In “square mode”, the rotation of the minimap is fixed. If you press [Shift]+[F9] to switch to “circle mode”, the minimap will instead rotate with your looking direction, so “up” is always your looking direction.=Il existe également deux modes de rotation différents. En "mode carré", la rotation de la minicarte est fixe. Si vous appuyez sur [Shift] + [F9] pour passer en "mode cercle", la minicarte tournera à la place avec votre direction de recherche, donc "haut" est toujours votre direction de recherche. -In other games, the minimap may be disabled.=Dans d'autres jeux, la minicarte peut être désactivée. +In some games, the minimap may be disabled.=Dans certains jeux, la minicarte peut être désactivée. • Toggle minimap mode: [F9]=• Basculer le mode mini-carte: [F9] • Toggle minimap rotation mode: [Shift]+[F9]=• Basculer le mode de rotation de la mini-carte: [Shift]+[F9] +Inventory=Inventaire Inventories are used to store item stacks. There are other uses, such as crafting. An inventory consists of a rectangular grid of item slots. Each item slot can either be empty or hold one item stack. Item stacks can be moved freely between most slots.=Les stocks sont utilisés pour stocker des piles d'articles. Il existe d'autres utilisations, telles que l'artisanat. Un inventaire se compose d'une grille rectangulaire d'emplacements d'objets. Chaque emplacement d'objet peut être vide ou contenir une pile d'objets. Les piles d'objets peuvent être déplacées librement entre la plupart des emplacements. You have your own inventory which is called your “player inventory”, you can open it with the inventory key (default: [I]). The first inventory slots are also used as slots in your hotbar.=Vous avez votre propre inventaire qui s'appelle votre "inventaire de joueur", vous pouvez l'ouvrir avec la clé d'inventaire (par défaut: [I]). Les premiers emplacements d'inventaire sont également utilisés comme emplacements dans votre hotbar. Blocks can also have their own inventory, e.g. chests and furnaces.=Les blocs peuvent également avoir leur propre inventaire, par exemple coffres et fours. @@ -213,9 +248,11 @@ Taking: You can take items from an occupied slot if the cursor holds nothing.=Pr • Left click: take entire item stack=• Clic gauche: Prendre toute la pile d'objets • Right click: take half from the item stack (rounded up)=• Clic droit: Prendre la moitié de la pile d'objets (arrondi vers le haut) • Middle click: take 10 items from the item stack=• Clic du milieu: Prenez 10 objets de la pile d'objets +• Mouse wheel down: take 1 item from the item stack=• Molette de la souris vers le bas: Prenez 1 objet de la pile d'objets Putting: You can put items onto a slot if the cursor holds 1 or more items and the slot is either empty or contains an item stack of the same item type.=Placer: Vous pouvez placer des objets dans un emplacement si le curseur contient un ou plusieurs objets et que l'emplacement est vide ou contient une pile d'objets du même type d'objet. • Left click: put entire item stack=• Clic gauche: Mettre toute la pile d'objets • Right click: put 1 item of the item stack=• Clic droit: Mettre 1 élément de la pile d'objets +• Right click or mouse wheel up: put 1 item of the item stack=• Clic droit ou roulette de la souris vers le haut: Placez 1 article dans la pile d'objets • Middle click: put 10 items of the item stack=• Clic du milieu: Mettez 10 objets dans la pile d'objets Exchanging: You can exchange items if the cursor holds 1 or more items and the destination slot is occupied by a different item type.=Échange: vous pouvez échanger des objets si le curseur contient un ou plusieurs objets et que l'emplacement de destination est occupé par un type d'objet différent. • Click: exchange item stacks=• Cliquez: Echangez les piles d'articles @@ -229,11 +266,13 @@ Here you find the most recent version of MineClone 2 and can discuss it.=Vous tr Bug tracker: =Suivi des bogues: Report bugs here.=Signalez les bugs ici. Minetest links:=Liens Minetest: -Official homepage of Minetest: =Page d'accueil officielle de Minetest: +You may want to check out these online resources related to Minetest:=Vous voudrez peut-être consulter ces ressources en ligne liées à Minetest: +Official homepage of Minetest: =Page d'accueil officielle de Minetest: The main place to find the most recent version of Minetest, the engine used by MineClone 2.=L'endroit principal pour trouver la version la plus récente de Minetest, le moteur utilisé par MineClone 2. -Community wiki: =Wiki de la communauté: -A community-based documentation website for Minetest. Anyone with an account can edit it.=Un site Web de documentation communautaire pour Minetest. N'importe qui avec un compte peut le modifier. -Minetest forums: =Forums de minetest: +The main place to find the most recent version of Minetest.=L'endroit principal pour trouver la version la plus récente de Minetest. +Community wiki: =Wiki de la communauté: +A community-based documentation website for Minetest. Anyone with an account can edit it! It also features a documentation of Minetest Game.=Un site Web de documentation communautaire pour Minetest. N'importe qui avec un compte peut le modifier! C'est aussi une documentation pour Minetest. +Minetest forums: =Forums de minetest: A web-based discussion platform where you can discuss everything related to Minetest. This is also a place where player-made mods and games are published and discussed. The discussions are mainly in English, but there is also space for discussion in other languages.=Une plate-forme de discussion en ligne où vous pouvez discuter de tout ce qui concerne Minetest. C'est également un endroit où les mods et les jeux créés par les joueurs sont publiés et discutés. Les discussions se déroulent principalement en anglais, mais il existe également un espace de discussion dans d'autres langues. Chat: =Chat: A generic Internet Relay Chat channel for everything related to Minetest where people can meet to discuss in real-time. If you do not understand IRC, see the Community Wiki for help.=Un canal de discussion générique pour tout ce qui concerne le Minetest où les gens peuvent se rencontrer pour discuter en temps réel. Si vous ne comprenez pas IRC, consultez le wiki de la communauté pour obtenir de l'aide. @@ -243,7 +282,7 @@ Items, players and objects (animate and inanimate) can be members of any number • Digging times: Diggable blocks belong to groups which are used to determine digging times. Mining tools are capable of digging blocks belonging to certain groups=• Temps de creusement: Les blocs pouvant être creusés appartiennent à des groupes qui sont utilisés pour déterminer les temps de creusement. Les outils miniers sont capables de creuser des blocs appartenant à certains groupes • Block behavior: Blocks may show a special behaviour and interact with other blocks when they belong to a particular group=• Comportement des blocs: Les blocs peuvent présenter un comportement spécial et interagir avec d'autres blocs lorsqu'ils appartiennent à un groupe particulier • Damage and armor: Objects and players have armor groups, weapons have damage groups. These groups determine damage. See also: “Basics > Weapons”=• Dommages et armures: Les objets et les joueurs ont des groupes d'armures, les armes ont des groupes de dégâts. Ces groupes déterminent les dommages. Voir aussi: "Bases> Armes" -• Other uses=• Other uses +• Other uses=• Autres utilisations In the item help, many important groups are usually mentioned and explained.=Dans l'aide aux objets, de nombreux groupes importants sont généralement mentionnés et expliqués. Glossary=Glossaire This is a list of commonly used terms:=Voici une liste de termes couramment utilisés: @@ -273,8 +312,8 @@ Items:=Objects: • Craftitem: An item which is (primarily or only) used for crafting=• Composant: Un objet qui est (principalement ou uniquement) utilisé pour l'artisanat Gameplay:=Gameplay: • “heart”: A single health symbol, indicates 2 HP=• "coeur": Un seul symbole de santé, indique 2 PV -• “bubble”: A single breath symbol, indicates 1 BP=• «bulle»: Un symbole de respiration unique, indique 1 BP -• HP: Hit point (equals a half “heart”)=• VP: point de vie (équivaut à un demi-«coeur») +• “bubble”: A single breath symbol, indicates 1 BP=• "bulle": Un symbole de respiration unique, indique 1 BP +• HP: Hit point (equals half 1 “heart”)=• VP: point de vie (équivaut à un demi-«coeur») • BP: Breath point, indicates breath when diving=• BP: Point de respiration, indique la respiration lors de la plongée • Mob: Computer-controlled enemy=• Mob: Ennemi contrôlé par ordinateur • Crafting: Combining multiple items to create new ones=• Artisanat: Combiner plusieurs objets pour en créer de nouveaux @@ -303,17 +342,21 @@ Technical terms:=Termes techniques: Settings=Réglages There is a large variety of settings to configure Minetest. Pretty much every aspect can be changed that way.=Il existe une grande variété de paramètres pour configurer Minetest. Presque tous les aspects peuvent être modifiés de cette façon. These are a few of the most important gameplay settings:=Voici quelques-uns des paramètres de jeu les plus importants: -• Damage enabled (enable_damage): Enables the health and breath attributes for all players. If disabled, players are immortal=• Dommage activé (enable_damage): active les attributs de santé et de souffle pour tous les joueurs. Si désactivé, les joueurs sont immortels -• Creative Mode (creative_mode): Enables sandbox-style gameplay focusing on creativity rather than a challenging gameplay. Changes include: Instant digging, easy access to almost all items, tools never wear off, etc.=• Mode créatif (creative_mode): Permet un gameplay de style sandbox en se concentrant sur la créativité plutôt que sur un gameplay difficile. Les modifications incluent: creusage instantané, accès facile à presque tous les articles, les outils ne s'usent jamais, etc. +• Damage enabled (enable_damage): Enables the health and breath attributes for all players. If disabled, players are immortal=• Dommage activé (enable_damage): Active les attributs de santé et de souffle pour tous les joueurs. Si désactivé, les joueurs sont immortels +• Creative Mode (creative_mode): Enables sandbox-style gameplay focusing on creativity rather than a challenging gameplay. The meaning depends on the game; usual changes are: Reduced dig times, easy access to almost all items, tools never wear off, etc.=• Mode créatif (creative_mode): permet un gameplay de style sandbox en se concentrant sur la créativité plutôt que sur un gameplay difficile. Le sens dépend du jeu; les changements habituels sont: temps de fouille réduits, accès facile à presque tous les articles, les outils ne s'usent jamais, etc. • PvP (enable_pvp): Short for “Player vs Player”. If enabled, players can deal damage to each other=• PvP (enable_pvp): Abréviation de «Player vs Player». Si activé, les joueurs peuvent s'infliger mutuellement des dégâts -For a full list of all available settings, use the “Advanced settings” dialog in the main menu.=Pour une liste complète de tous les paramètres disponibles, utilisez la boîte de dialogue "Paramètres avancés" dans le menu principal. +For a full list of all available settings, use the “All Settings” dialog in the main menu.=Pour une liste complète de tous les paramètres disponibles, utilisez la boîte de dialogue "Tous les Paramètres" dans le menu principal. Movement modes=Modes de mouvement -If you have the required privileges, you can use up to three special movement modes. Using these may be considered cheating.=Si vous disposez des privilèges requis, vous pouvez utiliser jusqu'à trois modes de mouvement spéciaux. Leur utilisation peut être considérée comme de la triche. -Fast mode:=Mode rapide: +You can enable some special movement modes that change how you move.=Vous pouvez activer certains modes de déplacement spéciaux qui modifient votre façon de vous déplacer. +Pitch movement mode:=Mode de mouvement de tangage: +• Description: If this mode is activated, the movement keys will move you relative to your current view pitch (vertical look angle) when you're in a liquid or in fly mode.=• Description: Si ce mode est activé, les touches de déplacement vous déplaceront par rapport à votre hauteur de vue actuelle (angle de vue vertical) lorsque vous êtes en mode liquide ou en mode vol. +• Default key: [L]=• Touche par défaut: [L] +• No privilege required=• Aucun privilège requis +Fast mode:=Mode Rapide: • Description: Allows you to move much faster. Hold down the the “Use” key [E] to move faster. In the client configuration, you can further customize fast mode.=• Description: vous permet de vous déplacer beaucoup plus rapidement. Maintenez la touche "Utiliser" [E] enfoncée pour vous déplacer plus rapidement. Dans la configuration du client, vous pouvez personnaliser davantage le mode rapide. • Default key: [J]=• Touche par défaut: [J] • Required privilege: fast=• Privilège requis: fast -Fly mode:=Mode vol: +Fly mode:=Mode Vol: • Description: Gravity doesn't affect you and you can move freely in all directions. Use the jump key to rise and the sneak key to sink.=• Description: La gravité ne vous affecte pas et vous pouvez vous déplacer librement dans toutes les directions. Utilisez la touche de saut pour monter et la touche de sneak pour descendre. • Default key: [K]=• Touche par défaut: [K] • Required privilege: fly=• Privilège requis: fly @@ -371,17 +414,17 @@ There is a small set of core privileges which you'll find on every server, other To view your own privileges, issue the server command “/privs”.=Pour afficher vos propres privilèges, exécutez la commande serveur "/privs". Here are a few basic privilege-related commands:=Voici quelques commandes de base liées aux privilèges: • /privs: Lists your privileges=• /privs: Répertorie vos privilèges -• /privs : Lists the privileges of =• /privs : répertorie les privilèges de +• /privs : Lists the privileges of =• /privs : Répertorie les privilèges de • /help privs: Shows a list and description about all privileges=• /help privs: Affiche une liste et une description de tous les privilèges Players with the “privs” privilege can modify privileges at will:=Les joueurs avec le privilège "privs" peuvent modifier les privilèges à volonté: • /grant : Grant to =• /grant : Accordez à -• /revoke : Revoke from =• /revoke : révoquer de -In single-player mode, you can use “/grant singleplayer all” to unlock all abilities (which is often considered cheating).=En mode solo, vous pouvez utiliser “/grant singleplayer all” pour débloquer toutes les capacités (ce qui est souvent considéré comme de la triche). +• /revoke : Revoke from =• /revoke : Révoquer de +In single-player mode, you can use “/grantme all” to unlock all abilities.=En mode solo, vous pouvez utiliser "/grantme all" pour débloquer toutes les capacités. Light=Lumière As the world is entirely block-based, so is the light in the world. Each block has its own brightness. The brightness of a block is expressed in a “light level” which ranges from 0 (total darkness) to 15 (as bright as the sun).=Comme le monde est entièrement basé sur des blocs, la lumière du monde l'est également. Chaque bloc a sa propre luminosité. La luminosité d'un bloc s'exprime dans un "niveau de lumière" qui varie de 0 (obscurité totale) à 15 (aussi lumineux que le soleil). There are two types of light: Sunlight and artificial light.=Il existe deux types de lumière: La lumière du soleil et la lumière artificielle. Artificial light is emitted by luminous blocks. Artificial light has a light level from 1-14.=La lumière artificielle est émise par des blocs lumineux. La lumière artificielle a un niveau de lumière de 1 à 14. -Sunlight is the brightest light and always goes perfectly straight down from the sky at each time of the day. blocks. At night, the sunlight will become moonlight instead, which still provides a small amount of light. The light level of sunlight is 15.=La lumière du soleil est la lumière la plus brillante et descend toujours parfaitement directement du ciel à chaque heure de la journée. La nuit, la lumière du soleil deviendra le clair de lune à la place, qui fournit toujours une petite quantité de lumière. Le niveau de lumière solaire est de 15. +Sunlight is the brightest light and always goes perfectly straight down from the sky at each time of the day. At night, the sunlight will become moonlight instead, which still provides a small amount of light. The light level of sunlight is 15.=La lumière du soleil est la lumière la plus brillante et descend toujours parfaitement directement du ciel à chaque heure de la journée. La nuit, la lumière du soleil deviendra le clair de lune à la place, qui fournit toujours une petite quantité de lumière. Le niveau de lumière solaire est de 15. Blocks have 3 levels of transparency:=Les blocs ont 3 niveaux de transparence: • Transparent: Sunlight goes through limitless, artificial light goes through with losses=• Transparent: La lumière du soleil passe sans limite, la lumière artificielle passe avec des pertes • Semi-transparent: Sunlight and artificial light go through with losses=• Semi-transparent: La lumière du soleil et la lumière artificielle subissent des pertes @@ -401,7 +444,7 @@ The values for X, Y and Z work like this:=Les valeurs pour X, Y et Z fonctionnen • Follow the sun, then go right: Z increases=• Suivez le soleil, puis allez à droite: Z augmente • Follow the sun, then go left: Z decreases=• Suivez le soleil, puis allez à gauche: Z diminue • The side length of a full cube is 1=• La longueur latérale d'un cube complet est de 1 -You can view your current position in the debug screen (open with [F5]). This is considered cheating in some games.=Vous pouvez afficher votre position actuelle dans l'écran de débogage (ouvrir avec [F5]). Ceci est considéré comme de la triche dans certains jeux. +You can view your current position in the debug screen (open with [F5]).=Vous pouvez afficher votre position actuelle dans l'écran de débogage (ouvrir avec [F5]). # MCL2 extensions Creative Mode=Mode Creatif @@ -421,7 +464,7 @@ Mobs are the living beings in the world. This includes animals and monsters.=Les Mobs appear randomly throughout the world. This is called “spawning”. Each mob kind appears on particular block types at a given light level. The height also plays a role. Peaceful mobs tend to spawn at daylight while hostile ones prefer darkness. Most mobs can spawn on any solid block but some mobs only spawn on particular blocks (like grass blocks).=Les mobs apparaissent de manière aléatoire à travers le monde. C'est ce qu'on appelle l'"apparition". Chaque type de mob apparaît sur des types de blocs particuliers à un niveau de lumière donné. La hauteur joue également un rôle. Les mobs pacifiques ont tendance à apparaître à la lumière du jour tandis que les hostiles préfèrent l'obscurité. La plupart des mobs peuvent apparaître sur n'importe quel bloc solide, mais certains n'apparaissent que sur des blocs particuliers (comme les blocs d'herbe). Like players, mobs have hit points and sometimes armor points, too (which means you need better weapons to deal any damage at all). Also like players, hostile mobs can attack directly or at a distance. Mobs may drop random items after they die.=Comme les joueurs, les monstres ont aussi des points de vie et parfois des points d'armure (ce qui signifie que vous avez besoin de meilleures armes pour infliger des dégâts). Comme les joueurs, les monstres hostiles peuvent attaquer directement ou à distance. Les mobs peuvent déposer des objets aléatoires après leur mort. Most animals roam the world aimlessly while most hostile mobs hunt players. Animals can be fed, tamed and bred.=La plupart des animaux parcourent le monde sans but tandis que la plupart des monstres hostiles chassent les joueurs. Les animaux peuvent être nourris, apprivoisés et élevés. -Animals=Animals +Animals=Animaux Animals are peaceful beings which roam the world aimlessly. You can feed, tame and breed them.=Les animaux sont des êtres pacifiques qui parcourent le monde sans but. Vous pouvez les nourrir, les apprivoiser et les élever. Feeding:=Alimentation: Each animal has its own taste for food and doesn't just accept any food. To feed, hold an item in your hand and rightclick the animal.=Chaque animal a son propre goût pour la nourriture et n'accepte pas n'importe quelle nourriture. Pour vous nourrir, tenez un objet dans votre main et faites un clic droit sur l'animal. diff --git a/mods/HUD/mcl_achievements/locale/mcl_achievements.fr.tr b/mods/HUD/mcl_achievements/locale/mcl_achievements.fr.tr index ca9cb6c0..ae4941d2 100644 --- a/mods/HUD/mcl_achievements/locale/mcl_achievements.fr.tr +++ b/mods/HUD/mcl_achievements/locale/mcl_achievements.fr.tr @@ -2,8 +2,8 @@ Aquire Hardware=Acquérir du matériel Bake Bread=Faire du pain Benchmarking=Fabriquer -Cow Tipper=Chevaucher un vaches -Craft a bookshelf.=Fabriquez une Biblioyhèque. +Cow Tipper=Chevaucher une vache +Craft a bookshelf.=Fabriquez une Bibliothèque. Craft a cake using wheat, sugar, milk and an egg.=Fabriquez un gâteau avec du blé, du sucre, du lait et un œuf. Craft a crafting table from 4 wooden planks.=Fabriquez un établi à partir de 4 planches de bois. Craft a stone pickaxe using sticks and cobblestone.=Fabriquez une pioche en pierre à l'aide de bâtons et de pierre. @@ -27,15 +27,15 @@ On A Rail=Sur un rail Pick up a blaze rod from the floor.=Ramassez une tige de feu sur le sol. Pick up a diamond from the floor.=Ramassez un diamant sur le sol. Pick up a wood item from the ground.@nHint: Punch a tree trunk until it pops out as an item.=Ramassez un objet en bois du sol.@nConseil: Frappez un tronc d'arbre jusqu'à ce qu'il ressorte comme un objet. -Pick up leather from the floor.@nHint: Cows and some other animals have a chance to drop leather, when killed.=Ramassez le cuir du sol.@nConseil: les vaches et certains autres animaux ont une chance de laisser tomber le cuir lorsqu'ils sont tués. +Pick up leather from the floor.@nHint: Cows and some other animals have a chance to drop leather, when killed.=Ramassez le cuir du sol.@nConseil: Les vaches et certains autres animaux ont une chance de laisser tomber le cuir lorsqu'ils sont tués. Place a dispenser.=Placez un distributeur. Place a flower pot.=Placez un pot de fleurs. Pork Chop=Côtelette de porc Pot Planter=Jardinière en pot Rabbit Season=Saison du lapin Sniper Duel=Duel de sniper -Take a cooked fish from a furnace.@nHint: Use a fishing rod to catch a fish and cook it in a furnace.=Prenez un poisson cuit d'un four.@nConseil: utilisez une canne à pêche pour attraper un poisson et faites-le cuire dans un four. -Take an iron ingot from a furnace's output slot.@nHint: To smelt an iron ingot, put a fuel (like coal) and iron ore into a furnace.=Prenez un lingot de fer dans la fente de sortie d'un four.@nConseil: pour faire fondre un lingot de fer, mettez du combustible (comme du charbon) et du minerai de fer dans un four. +Take a cooked fish from a furnace.@nHint: Use a fishing rod to catch a fish and cook it in a furnace.=Prenez un poisson cuit d'un four.@nConseil: Utilisez une canne à pêche pour attraper un poisson et faites-le cuire dans un four. +Take an iron ingot from a furnace's output slot.@nHint: To smelt an iron ingot, put a fuel (like coal) and iron ore into a furnace.=Prenez un lingot de fer dans la fente de sortie d'un four.@nConseil: Pour faire fondre un lingot de fer, mettez du combustible (comme du charbon) et du minerai de fer dans un four. The Haggler=Le marchand The Lie=Le mensonge Time to Farm!=C'est l'heure du fermier! diff --git a/mods/HUD/mcl_inventory/locale/mcl_inventory.fr.tr b/mods/HUD/mcl_inventory/locale/mcl_inventory.fr.tr index cfc1810a..e15a422a 100644 --- a/mods/HUD/mcl_inventory/locale/mcl_inventory.fr.tr +++ b/mods/HUD/mcl_inventory/locale/mcl_inventory.fr.tr @@ -1,7 +1,7 @@ # textdomain: mcl_inventory Recipe book=Livre de recettes Help=Aide -Select player skin=Sélectionnez l'apparance du joueur +Select player skin=Sélectionnez l'apparence du joueur Achievements=Accomplissements Building Blocks=Blocs de Construction Decoration Blocks=Blocs de Décoration diff --git a/mods/ITEMS/REDSTONE/mcl_dispensers/locale/mcl_dispensers.fr.tr b/mods/ITEMS/REDSTONE/mcl_dispensers/locale/mcl_dispensers.fr.tr index 2390b14b..622d0a70 100644 --- a/mods/ITEMS/REDSTONE/mcl_dispensers/locale/mcl_dispensers.fr.tr +++ b/mods/ITEMS/REDSTONE/mcl_dispensers/locale/mcl_dispensers.fr.tr @@ -15,7 +15,7 @@ The dispenser will do different things, depending on the dispensed item:=Le dist • Heads, pumpkins: Equipped to players and armor stands, or placed as a block=• Têtes, citrouilles: Seront équipées pour les joueurs et les armures, ou placées en bloc • Shulker boxes: Are placed as a block=• Boîtes de Shulker: Sont placées comme un bloc • TNT: Is placed and ignited=• TNT: Est placé et allumé -• Flint and steel: Is used to ignite a fire in air and to ignite TNT= +• Flint and steel: Is used to ignite a fire in air and to ignite TNT=• Briquet: Sert à allumer un feu dans l'air et à allumer du TNT • Spawn eggs: Will summon the mob they contain=• Silex et acier: Sert à allumer un feu dans l'air et à allumer du TNT • Other items: Are simply dropped=• Autres articles: Sont simplement lâchés Downwards-Facing Dispenser=Distributeur orienté vers le bas diff --git a/mods/ITEMS/REDSTONE/mesecons_noteblock/locale/mesecons_noteblock.fr.tr b/mods/ITEMS/REDSTONE/mesecons_noteblock/locale/mesecons_noteblock.fr.tr index 94554912..f8d8e3d7 100644 --- a/mods/ITEMS/REDSTONE/mesecons_noteblock/locale/mesecons_noteblock.fr.tr +++ b/mods/ITEMS/REDSTONE/mesecons_noteblock/locale/mesecons_noteblock.fr.tr @@ -6,7 +6,7 @@ Use the note block to choose the next musical note (there are 25 semitones, or 2 • Wood: Bass guitar=• Bois: Guitare Basse • Stone: Bass drum=• Pierre: Grosse caisse • Sand or gravel: Snare drum=• Sable ou gravier: Caisse claire -• Block of Gold: Bell=• Blod d'OR: Cloche +• Block of Gold: Bell=• Bloc d'OR: Cloche • Clay: Flute=• Argile: Flûte • Packed Ice: Chime=• Glace tassée: Carillon • Wool: Guitar=• Laine: Guitare diff --git a/mods/ITEMS/mcl_armor/locale/mcl_armor.fr.tr b/mods/ITEMS/mcl_armor/locale/mcl_armor.fr.tr index e22feddf..6f55a73f 100644 --- a/mods/ITEMS/mcl_armor/locale/mcl_armor.fr.tr +++ b/mods/ITEMS/mcl_armor/locale/mcl_armor.fr.tr @@ -3,7 +3,7 @@ This is a piece of equippable armor which reduces the amount of damage you recei To equip it, put it on the corresponding armor slot in your inventory menu.=Pour l'équiper, placez-le sur l'emplacement d'armure correspondant dans votre menu d'inventaire. Leather Cap=Casquette en Cuir Iron Helmet=Casque de Fer -Golden Helmet=Casque d'Or' +Golden Helmet=Casque d'Or Diamond Helmet=Casque de Diamant Chain Helmet=Casque de Mailles Leather Tunic=Tunique en Cuir diff --git a/mods/ITEMS/mcl_banners/locale/mcl_banners.fr.tr b/mods/ITEMS/mcl_banners/locale/mcl_banners.fr.tr index 4d102c10..ee877272 100644 --- a/mods/ITEMS/mcl_banners/locale/mcl_banners.fr.tr +++ b/mods/ITEMS/mcl_banners/locale/mcl_banners.fr.tr @@ -27,8 +27,8 @@ Brown Banner=Bannière Marron Brown=Marron Pink Banner=Bannière Rose Pink=Rose -Lime Banner=Bannière Vert Citron -Lime=Vert Citron +Lime Banner=Bannière Vert Clair +Lime=Vert Clair Light Blue Banner=Bannière Bleue Clair Light Blue=Bleu Clair Banners are tall colorful decorative blocks. They can be placed on the floor and at walls. Banners can be emblazoned with a variety of patterns using a lot of dye in crafting.=Les bannières sont de grands blocs décoratifs colorés. Ils peuvent être placés au sol et aux murs. Les bannières peuvent arborées une variété de motifs en utilisant beaucoup de colorant dans l'artisanat. diff --git a/mods/ITEMS/mcl_beds/locale/mcl_beds.fr.tr b/mods/ITEMS/mcl_beds/locale/mcl_beds.fr.tr index ba0345e6..d85d48bf 100644 --- a/mods/ITEMS/mcl_beds/locale/mcl_beds.fr.tr +++ b/mods/ITEMS/mcl_beds/locale/mcl_beds.fr.tr @@ -19,7 +19,7 @@ Orange Bed=Lit Orange Purple Bed=Lit Violet Brown Bed=Lit Marron Pink Bed=Lit Rose -Lime Bed=Lit Vert Citron +Lime Bed=Lit Vert Clair Light Blue Bed=Lit Bleu Clair White Bed=Lit Blanc You can't sleep, the bed's too far away!=Vous ne pouvez pas dormir, le lit est trop loin! diff --git a/mods/ITEMS/mcl_buckets/locale/mcl_buckets.fr.tr b/mods/ITEMS/mcl_buckets/locale/mcl_buckets.fr.tr new file mode 100644 index 00000000..4320f750 --- /dev/null +++ b/mods/ITEMS/mcl_buckets/locale/mcl_buckets.fr.tr @@ -0,0 +1,17 @@ +# textdomain: mcl_buckets +Empty Bucket=Seau Vide +A bucket can be used to collect and release liquids.=Un seau peut être utilisé pour recueillir et libérer les liquides. +Punch a liquid source to collect it. You can then use the filled bucket to place the liquid somewhere else.=Frappez une source de liquide pour la collecter. Vous pouvez ensuite utiliser le seau rempli pour placer le liquide ailleurs. +Lava Bucket=Seau de Lave +A bucket can be used to collect and release liquids. This one is filled with hot lava, safely contained inside. Use with caution.=Un seau peut être utilisé pour recueillir et libérer les liquides. Celui-ci est rempli de lave chaude, contenue en toute sécurité à l'intérieur. Utiliser avec précaution. +Get in a safe distance and place the bucket to empty it and create a lava source at this spot. Don't burn yourself!=Eloignez-vous et placez le seau pour le vider et créez une source de lave à cet endroit. Ne vous brûlez pas! +Water Bucket=Seau d'Eau +A bucket can be used to collect and release liquids. This one is filled with water.=Un seau peut être utilisé pour recueillir et libérer les liquides. Celui-ci est rempli d'eau. +Place it to empty the bucket and create a water source.=Placez-le pour vider le seau et créer une source d'eau. +River Water Bucket=Seau d'Eau de Rivière +A bucket can be used to collect and release liquids. This one is filled with river water.=Un seau peut être utilisé pour recueillir et libérer les liquides. Celui-ci est rempli d'eau de rivière. +Place it to empty the bucket and create a river water source.=Placez-le pour vider le seau et créer une source d'eau de rivière. +Collects liquids=Collecte des liquides +Places a lava source=Place une source de lave +Places a water source=Place une source d'eau +Places a river water source=Place une source d'eau de rivière diff --git a/mods/ITEMS/mcl_cake/locale/mcl_cake.fr.tr b/mods/ITEMS/mcl_cake/locale/mcl_cake.fr.tr new file mode 100644 index 00000000..06e3b7ce --- /dev/null +++ b/mods/ITEMS/mcl_cake/locale/mcl_cake.fr.tr @@ -0,0 +1,12 @@ +# textdomain: mcl_cake +Cake=Gâteau +Cakes can be placed and eaten to restore hunger points. A cake has 7 slices. Each slice restores 2 hunger points and 0.4 saturation points. Cakes will be destroyed when dug or when the block below them is broken.=Les gâteaux peuvent être placés et mangés pour restaurer les points de faim. Un gâteau a 7 tranches. Chaque tranche restaure 2 points de faim et 0,4 points de saturation. Les gâteaux seront détruits lorsqu'ils seront creusés ou lorsque le bloc en dessous d'eux sera brisé. +Place the cake anywhere, then rightclick it to eat a single slice. You can't eat from the cake when your hunger bar is full.=Placez le gâteau n'importe où, puis faites un clic droit pour manger une seule tranche. Vous ne pouvez pas manger du gâteau lorsque votre barre de faim est pleine. +Cake (6 Slices Left)=Gâteau (reste 6 tranches) +Cake (5 Slices Left)=Gâteau (reste 5 tranches) +Cake (4 Slices Left)=Gâteau (reste 4 tranches) +Cake (3 Slices Left)=Gâteau (reste 3 tranches) +Cake (2 Slices Left)=Gâteau (reste 2 tranches) +Cake (1 Slice Left)=Gâteau (reste 1 tranche) +With 7 tasty slices!=Avec 7 tranches savoureuses! +Hunger points: +@1 per slice=Points de faim: +@1 par tranche diff --git a/mods/ITEMS/mcl_cauldrons/locale/mcl_chaudrons.fr.tr b/mods/ITEMS/mcl_cauldrons/locale/mcl_chaudrons.fr.tr new file mode 100644 index 00000000..03b0e9be --- /dev/null +++ b/mods/ITEMS/mcl_cauldrons/locale/mcl_chaudrons.fr.tr @@ -0,0 +1,11 @@ +# textdomain: mcl_cauldron +Cauldron=Chaudrons +Cauldrons are used to store water and slowly fill up under rain. They can also be used to wash off banners.=Les chaudrons sont utilisés pour stocker l'eau et se remplissent lentement sous la pluie. Ils peuvent également être utilisés pour laver les bannières. +Place a water pucket into the cauldron to fill it with water. Place an empty bucket on a full cauldron to retrieve the water. Place a water bottle into the cauldron to fill the cauldron to one third with water. Place a glass bottle in a cauldron with water to retrieve one third of the water. Use an emblazoned banner on a cauldron with water to wash off its top layer.=Placez une marmite d'eau dans le chaudron pour le remplir d'eau. Placez un seau vide sur un chaudron plein pour récupérer l'eau. Placez une bouteille d'eau dans le chaudron pour remplir le chaudron au tiers avec de l'eau. Placez une bouteille en verre dans un chaudron avec de l'eau pour récupérer un tiers de l'eau. Utilisez une bannière blasonnée sur un chaudron avec de l'eau pour laver sa couche supérieure. +Cauldron (1/3 Water)=Chaudron (1/3 d'eau) +Cauldron (2/3 Water)=Chaudron (2/3 d'eau) +Cauldron (3/3 Water)=Chaudron (3/3 d'eau) +Cauldron (1/3 River Water)=Chaudron (1/3 d'eau de rivière) +Cauldron (2/3 River Water)=Chaudron (2/3 d'eau de rivière) +Cauldron (3/3 River Water)=Chaudron (3/3 d'eau de rivière) +Stores water=Stocke l'eau diff --git a/mods/ITEMS/mcl_chests/locale/mcl_chests.fr.tr b/mods/ITEMS/mcl_chests/locale/mcl_chests.fr.tr new file mode 100644 index 00000000..b84dac02 --- /dev/null +++ b/mods/ITEMS/mcl_chests/locale/mcl_chests.fr.tr @@ -0,0 +1,36 @@ +# textdomain: mcl_chests +Chest=Coffre +Chests are containers which provide 27 inventory slots. Chests can be turned into large chests with double the capacity by placing two chests next to each other.=Les coffres sont des conteneurs qui offrent 27 emplacements d'inventaire. Les coffres peuvent être transformés en grands coffres avec une capacité double en plaçant deux coffres l'un à côté de l'autre. +To access its inventory, rightclick it. When broken, the items will drop out.=Pour accéder à son inventaire, faites un clic droit dessus. Une fois cassés, les articles tomberont. +Trapped Chest=Coffre Piégé +A trapped chest is a container which provides 27 inventory slots. When it is opened, it sends a redstone signal to its adjacent blocks as long it stays open. Trapped chests can be turned into large trapped chests with double the capacity by placing two trapped chests next to each other.=Un coffre piégé est un conteneur qui fournit 27 emplacements d'inventaire. Lorsqu'il est ouvert, il envoie un signal redstone à ses blocs adjacents tant qu'il reste ouvert. Les coffres piégés peuvent être transformés en grands coffres piégés avec une capacité double en plaçant deux coffres piégés l'un à côté de l'autre. +Ender Chest=Coffre Ender +Ender chests grant you access to a single personal interdimensional inventory with 27 slots. This inventory is the same no matter from which ender chest you access it from. If you put one item into one ender chest, you will find it in all other ender chests. Each player will only see their own items, but not the items of other players.=Les coffres Ender vous donnent accès à un seul inventaire interdimensionnel personnel avec 27 emplacements. Cet inventaire est le même quel que soit le coffre d'ender d'où vous y accédez. Si vous placez un objet dans un coffre d'ender, vous le trouverez dans tous les autres coffres d'ender. Chaque joueur ne verra que ses propres objets, mais pas ceux des autres joueurs. +Rightclick the ender chest to access your personal interdimensional inventory.=Faites un clic droit sur le coffre d'ender pour accéder à votre inventaire interdimensionnel personnel. +White Shulker Box=Boîte de Shulter Blanche +Light Grey Shulker Box=Boîte de Shulter Gris Clair +Orange Shulker Box=Boîte de Shulter Orange +Cyan Shulker Box=Boîte de Shulter Cyan +Magenta Shulker Box=Boîte de Shulter Magenta +Purple Shulker Box=Boîte de Shulter Violette +Light Blue Shulker Box=Boîte de Shulter Bleu Clair +Blue Shulker Box=Boîte de Shulter Bleue +Yellow Shulker Box=Boîte de Shulter Jaune +Brown Shulker Box=Boîte de Shulter Marron +Lime Shulker Box=Boîte de Shulter Vert Clair +Green Shulker Box=Boîte de Shulter Verte +Pink Shulker Box=Boîte de Shulter Rose +Red Shulker Box=Boîte de Shulter Rouge +Grey Shulker Box=Boîte de Shulter Grise +Black Shulker Box=Boîte de Shulter Noire +A shulker box is a portable container which provides 27 inventory slots for any item except shulker boxes. Shulker boxes keep their inventory when broken, so shulker boxes as well as their contents can be taken as a single item. Shulker boxes come in many different colors.=Une boîte shulker est un conteneur portable qui fournit 27 emplacements d'inventaire pour tout article, à l'exception des boîtes shulker. Les boîtes Shulker conservent leur inventaire lorsqu'elles sont brisées, de sorte que les boîtes Shulker ainsi que leur contenu peuvent être considérés comme un seul élément. Les boîtes Shulker sont disponibles dans de nombreuses couleurs différentes. +To access the inventory of a shulker box, place and right-click it. To take a shulker box and its contents with you, just break and collect it, the items will not fall out. Place the shulker box again to be able to retrieve its contents.=Pour accéder à l'inventaire d'une boîte shulker, placez-la et cliquez dessus avec le bouton droit. Pour emporter une boîte shulker et son contenu, il suffit de la casser et de la récupérer, les objets ne tomberont pas. Replacez la boîte shulker pour pouvoir récupérer son contenu. +Shulker Box=Boîte de Shulter +Large Chest=Coffre Large +Inventory=Inventaire +27 inventory slots=27 emplacements d'inventaire +Can be carried around with its contents=Peut être transporté avec son contenu +Can be combined to a large chest=Peut être combiné à un grand coffre +27 interdimensional inventory slots=27 emplacements d'inventaire interdimensionnels +Put items inside, retrieve them from any ender chest=Mettez des objets à l'intérieur, récupérez-les dans n'importe quel coffre +Emits a redstone signal when opened=Émet un signal redstone à l'ouverture diff --git a/mods/ITEMS/mcl_colorblocks/locale/mcl_colorblocks.fr.tr b/mods/ITEMS/mcl_colorblocks/locale/mcl_colorblocks.fr.tr index 2f2ffbb0..d457364e 100644 --- a/mods/ITEMS/mcl_colorblocks/locale/mcl_colorblocks.fr.tr +++ b/mods/ITEMS/mcl_colorblocks/locale/mcl_colorblocks.fr.tr @@ -55,10 +55,10 @@ Pink Terracotta=Terre Cuite Rose Pink Glazed Terracotta=Terre Cuite Emaillée Rose Pink Concrete Powder=Béton en Poudre Rose Pink Concrete=Béton Rose -Lime Terracotta=Terre Cuite Vert Citron -Lime Glazed Terracotta=Terre Cuite Emaillée Vert Citron -Lime Concrete Powder=Béton en Poudre Vert Citron -Lime Concrete=Béton Vert Citron +Lime Terracotta=Terre Cuite Verte Clair +Lime Glazed Terracotta=Terre Cuite Emaillée Verte Clair +Lime Concrete Powder=Béton en Poudre Vert Clair +Lime Concrete=Béton Vert Clair Light Blue Terracotta=Terre Cuite Bleu Clair Light Blue Glazed Terracotta=Terre Cuite Emaillée Bleu Clair Light Blue Concrete Powder=Béton en Poudre Bleu Clair diff --git a/mods/ITEMS/mcl_core/locale/mcl_core.fr.tr b/mods/ITEMS/mcl_core/locale/mcl_core.fr.tr index 827dba49..4d97fe22 100644 --- a/mods/ITEMS/mcl_core/locale/mcl_core.fr.tr +++ b/mods/ITEMS/mcl_core/locale/mcl_core.fr.tr @@ -137,7 +137,7 @@ Lava Source=Source de Lave Lava is hot and rather dangerous. Don't touch it, it will hurt you a lot and it is hard to get out.=La lave est chaude et plutôt dangereuse. Ne le touchez pas, cela vous fera beaucoup de mal et il est difficile d'en sortir. Light Blue Stained Glass=Verre Bleu Clair Light Grey Stained Glass=Verre Gris Clair -Lime Stained Glass=Verre Vert Citron +Lime Stained Glass=Verre Vert Clair Lit Redstone Ore=Minerai de Redstone Magenta Stained Glass=Verre Magenta Molten gold. It is used to craft armor, tools, and whatnot.=L'Or. Il est utilisé pour fabriquer des armures, des outils et ainsi de suite. @@ -202,7 +202,7 @@ Stained glass is a decorative and mostly transparent block which comes in variou Stick=Bâton Sticks are a very versatile crafting material; used in countless crafting recipes.=Les bâtons sont un matériau d'artisanat très polyvalent; utilisé dans d'innombrables recettes d'artisanat. Stone=Roche -Stone Bricks=Pierre Taillé +Stone Bricks=Pierre Taillée Sugar=Sucre Sugar Canes=Canne à Sucre Sugar canes are a plant which has some uses in crafting. Sugar canes will slowly grow up to 3 blocks when they are next to water and are placed on a grass block, dirt, sand, red sand, podzol or coarse dirt. When a sugar cane is broken, all sugar canes connected above will break as well.=Les cannes à sucre sont une plante qui a certaines utilisations dans l'artisanat. Les cannes à sucre poussent lentement jusqu'à 3 blocs lorsqu'elles sont à côté de l'eau et sont placées sur un bloc d'herbe, de saleté, de sable, de sable rouge, de podzol ou de saleté grossière. Lorsqu'une canne à sucre est cassée, toutes les cannes à sucre connectées ci-dessus se brisent également. @@ -248,6 +248,7 @@ Granite is an igneous rock.=Le granit est une roche ignée. Top snow can be stacked and has one of 8 different height levels. At levels 2-8, top snow is collidable. Top snow drops 2-9 snowballs, depending on its height.=La neige peut être empilée et a l'un des 8 niveaux de hauteur différents. Aux niveaux 2 à 8, la neige provoque des collisions. La neige laisse tomber 2-9 boules de neige, selon sa hauteur. This block can only be placed on full solid blocks and on another top snow (which increases its height).=Ce bloc ne peut être placé que sur des blocs pleins et sur une autre neige (ce qui augmente sa hauteur). Needs soil and water to grow=A besoin de terre et d'eau pour se développer +Needs soil and light to grow=A besoin de terre et de lumière pour se développer Grows on sand=Pousse sur le sable Contact damage: @1 per half second=Dommages de contact: @1 par demi-seconde Slows down movement=Ralentit le mouvement diff --git a/mods/ITEMS/mcl_dye/locale/mcl_dye.fr.tr b/mods/ITEMS/mcl_dye/locale/mcl_dye.fr.tr index 75e5992f..8d53cc73 100644 --- a/mods/ITEMS/mcl_dye/locale/mcl_dye.fr.tr +++ b/mods/ITEMS/mcl_dye/locale/mcl_dye.fr.tr @@ -8,7 +8,7 @@ Lapis Lazuli=Lapis Lazuli Light Blue Dye=Teinture Bleu Clair Cyan Dye=Teinture Cyan Cactus Green=Cactus Vert -Lime Dye=Teinture Vert Citron +Lime Dye=Teinture Vert Clair Dandelion Yellow=Pissenlit Jaune Cocoa Beans=Fèves de Cacao Orange Dye=Teinture Orange diff --git a/mods/ITEMS/mcl_end/locale/mcl_end.fr.tr b/mods/ITEMS/mcl_end/locale/mcl_end.fr.tr index 4254dbf3..39140587 100644 --- a/mods/ITEMS/mcl_end/locale/mcl_end.fr.tr +++ b/mods/ITEMS/mcl_end/locale/mcl_end.fr.tr @@ -1,6 +1,6 @@ # textdomain: mcl_end End Stone=Pierre de L'End -End Stone Bricks=Brique de l'End& +End Stone Bricks=Brique de l'End Purpur Block=Bloc de Purpur Purpur Pillar=Bloc de Purpur Sculpté End Rod=Barre de l'End diff --git a/mods/ITEMS/mcl_farming/locale/mcl_farming.fr.tr b/mods/ITEMS/mcl_farming/locale/mcl_farming.fr.tr index 5eb3e05d..5ee1bcdf 100644 --- a/mods/ITEMS/mcl_farming/locale/mcl_farming.fr.tr +++ b/mods/ITEMS/mcl_farming/locale/mcl_farming.fr.tr @@ -91,9 +91,9 @@ Hay Bale=Balle de Foin Hay bales are decorative blocks made from wheat.=Les balles de foin sont des blocs décoratifs en blé. To carve a face into the pumpkin, use the shears on the side you want to carve.=Pour sculpter un visage dans la citrouille, utilisez les cisailles du côté que vous souhaitez sculpter. Use the “Place” key on an animal to try to feed it wheat.=Utilisez la touche "Placer" sur un animal pour essayer de le nourrir de blé. -Grows on farmland=Grows on farmland +Grows on farmland=Pousse sur les terres agricoles Turns block into farmland=Transforme un bloc en terres agricoles 60% chance of poisoning=60% de chances d'empoisonnement -Surface for crops=Surface for crops +Surface for crops=Surface pour les cultures Can become wet=Peut devenir humide Uses: @1=Utilisations: @1 diff --git a/mods/ITEMS/mcl_ocean/locale/mcl_ocean.fr.tr b/mods/ITEMS/mcl_ocean/locale/mcl_ocean.fr.tr index 247f4c9a..a1b3f0b7 100644 --- a/mods/ITEMS/mcl_ocean/locale/mcl_ocean.fr.tr +++ b/mods/ITEMS/mcl_ocean/locale/mcl_ocean.fr.tr @@ -51,6 +51,9 @@ Dried kelp is a food item.=L'algue séchée est un aliment. Grows on coral block of same species=Pousse sur un bloc de corail de la même espèce Needs water to live=A besoin d'eau pour vivre Grows in water on dirt, sand, gravel=Pousse dans l'eau sur la terre, le sable et le gravier -Glows in the water=Glows in the water +Glows in the water=Brille dans l'eau 4 possible sizes=4 tailles possibles Grows on dead brain coral block=Pousse sur un bloc de corail mort +Sea Pickle=Cornichon de mer +Sea pickles grow on dead brain coral blocks and provide light when underwater. They come in 4 sizes that vary in brightness.=Les cornichons de mer poussent sur des blocs de corail morts et fournissent de la lumière lorsqu'ils sont sous l'eau. Ils viennent en 4 tailles qui varient en luminosité. +It can only be placed on top of dead brain coral blocks. Placing a sea pickle on another sea pickle will make it grow and brighter.=Il ne peut être placé que sur des blocs de corail morts. Placer un cornichon sur un autre cornichon le rendra plus brillant et plus brillant. \ No newline at end of file diff --git a/mods/ITEMS/mcl_stairs/locale/mcl_stairs.fr.tr b/mods/ITEMS/mcl_stairs/locale/mcl_stairs.fr.tr index 645fc510..9c6684fc 100644 --- a/mods/ITEMS/mcl_stairs/locale/mcl_stairs.fr.tr +++ b/mods/ITEMS/mcl_stairs/locale/mcl_stairs.fr.tr @@ -8,11 +8,11 @@ Oak Wood Stairs=Escalier en Bois de Chêne Oak Wood Slab=Dalle en Bois de Chêne Double Oak Wood Slab=Double Dalle en Bois de Chêne Jungle Wood Stairs=Escalier en Bois d'Acajou -Jungle Wood Slab=Dalle en Bois D'Acajou -Double Jungle Wood Slab=Double Dalle en Bois D'Acajou -Acacia Wood Stairs=Escalier en Bois D'Acacia -Acacia Wood Slab=Dalle en Bois D'Acacia -Double Acacia Wood Slab=Double Dalle en Bois D'Acacia +Jungle Wood Slab=Dalle en Bois d'Acajou +Double Jungle Wood Slab=Double Dalle en Bois d'Acajou +Acacia Wood Stairs=Escalier en Bois d'Acacia +Acacia Wood Slab=Dalle en Bois d'Acacia +Double Acacia Wood Slab=Double Dalle en Bois d'Acacia Spruce Wood Stairs=Escalier en Bois de Sapin Spruce Wood Slab=Dalle en Bois de Sapin Double Spruce Wood Slab=Double Dalle en Bois de Sapin diff --git a/mods/ITEMS/mcl_wool/locale/mcl_wool.fr.tr b/mods/ITEMS/mcl_wool/locale/mcl_wool.fr.tr index 22ef78ed..6b93eab0 100644 --- a/mods/ITEMS/mcl_wool/locale/mcl_wool.fr.tr +++ b/mods/ITEMS/mcl_wool/locale/mcl_wool.fr.tr @@ -29,8 +29,8 @@ Brown Wool=Laine Marron Brown Carpet=Tapis Marron Pink Wool=Laine Rose Pink Carpet=Tapis Rose -Lime Wool=Laine Citron Vert -Lime Carpet=Tapis Citron Vert +Lime Wool=Laine Vert Clair +Lime Carpet=Tapis Vert Clair Light Blue Wool=Laine Bleu Clair Light Blue Carpet=Tapis Bleu Clair Wool is a decorative block which comes in many different colors.=La laine est un bloc décoratif disponible en différentes couleurs. diff --git a/mods/ITEMS/mclx_stairs/locale/mclx_stairs.fr.tr b/mods/ITEMS/mclx_stairs/locale/mclx_stairs.fr.tr index 2922b6b4..98becd49 100644 --- a/mods/ITEMS/mclx_stairs/locale/mclx_stairs.fr.tr +++ b/mods/ITEMS/mclx_stairs/locale/mclx_stairs.fr.tr @@ -71,9 +71,9 @@ Double Brown Concrete Slab=Double Dalle en Béton Marron Pink Concrete Stairs=Escalier en Béton Rose Pink Concrete Slab=Dalle en Béton Rose Double Pink Concrete Slab=Double Dalle en Béton Rose -Lime Concrete Stairs=Escalier en Béton Citron Vert -Lime Concrete Slab=Dalle en Béton Citron Vert -Double Lime Concrete Slab=Double Dalle en Béton Citron Vert +Lime Concrete Stairs=Escalier en Béton Vert Clair +Lime Concrete Slab=Dalle en Béton Vert Clair +Double Lime Concrete Slab=Double Dalle en Béton Vert Clair Light Blue Concrete Stairs=Escalier en Béton Bleu Clair Light Blue Concrete Slab=Dalle en Béton Bleu Clair Double Light Blue Concrete Slab=Double Dalle en Béton Bleu Clair diff --git a/mods/ITEMS/xpanes/locale/xpanes.fr.tr b/mods/ITEMS/xpanes/locale/xpanes.fr.tr index 7979dfdb..6b2fe43f 100644 --- a/mods/ITEMS/xpanes/locale/xpanes.fr.tr +++ b/mods/ITEMS/xpanes/locale/xpanes.fr.tr @@ -8,7 +8,7 @@ Stained Glass Pane=Vitre Teintée Red Stained Glass Pane=Vitre Teintée Rouge Green Stained Glass Pane=Vitre Teintée Verte Blue Stained Glass Pane=Vitre Teintée Bleue -Light Blue Stained Glass Pane=Vitre Teintée Bleue Clair +Light Blue Stained Glass Pane=Vitre Teintée Bleu Clair Black Stained Glass Pane=Vitre Teintée Noire White Stained Glass Pane=Vitre Teintée Blanche Yellow Stained Glass Pane=Vitre Teintée Jaune @@ -16,8 +16,8 @@ Brown Stained Glass Pane=Vitre Teintée Marron Orange Stained Glass Pane=Vitre Teintée Orange Pink Stained Glass Pane=Vitre Teintée Rose Grey Stained Glass Pane=Vitre Teintée Grise -Lime Stained Glass Pane=Vitre Teintée Citron Vert -Light Grey Stained Glass Pane=Vitre Teintée Grise Claire +Lime Stained Glass Pane=Vitre Teintée Vert Clair +Light Grey Stained Glass Pane=Vitre Teintée Gris Clair Magenta Stained Glass Pane=Vitre Teintée Magenta -Purple Stained Glass Pane=Vitre Teintée Violet +Purple Stained Glass Pane=Vitre Teintée Violette Cyan Stained Glass Pane=Vitre Teintée Cyan diff --git a/mods/PLAYER/mcl_skins/locale/mcl_skins.fr.tr b/mods/PLAYER/mcl_skins/locale/mcl_skins.fr.tr index 61d0059b..146c6be5 100644 --- a/mods/PLAYER/mcl_skins/locale/mcl_skins.fr.tr +++ b/mods/PLAYER/mcl_skins/locale/mcl_skins.fr.tr @@ -1,14 +1,14 @@ # textdomain: mcl_skins -[] []=[] [] -Select player skin of yourself or another player=Sélectionner une apparance pour vous même ou un autre joueur +[] []=[] [] +Select player skin of yourself or another player=Sélectionner une apparence pour vous même ou un autre joueur Insufficient or wrong parameters=Paramètres insuffisants ou incorrects Player @1 not online!=Le joueur @1 n'est pas en ligne! -You need the “server” privilege to change the skin of other players!=Vous avez besoin du privilège “server” pour changer l'apparance des autres joueurs! -Invalid skin number! Valid numbers: 0 to @1=Numéro d'apparance incorrect! Numéros valides : 0 à @1 -Your skin has been set to: @1=Votre apparance a été définie à: @1 -Your skin has been set to: @1 (@2)=Votre apparance a été définie à: @1 (@2) -Skin of @1 set to: @2 (@3)= -Select player skin:=Sélectionner l'apparance du joueur : +You need the “server” privilege to change the skin of other players!=Vous avez besoin du privilège “server” pour changer l'apparence des autres joueurs! +Invalid skin number! Valid numbers: 0 to @1=Numéro d'apparence incorrect! Numéros valides : 0 à @1 +Your skin has been set to: @1=Votre apparence a été définie à: @1 +Your skin has been set to: @1 (@2)=Votre apparence a été définie à: @1 (@2) +Skin of @1 set to: @2 (@3)=Apparence of @1 set to: @2 (@3)= +Select player skin:=Sélectionner l'apparence du joueur : @1 (@2)=@1 (@2) Name: @1=Nom : @ From e058ee8487d74188cd5d7974ee06998be0718aeb Mon Sep 17 00:00:00 2001 From: Rocher Laurent Date: Tue, 5 May 2020 21:02:48 +0200 Subject: [PATCH 698/737] Fix some template.txt --- mods/HELP/mcl_doc_basics/locale/template.txt | 101 +++++++++++++------ mods/ITEMS/mcl_core/locale/template.txt | 1 + mods/ITEMS/mcl_ocean/locale/template.txt | 4 + 3 files changed, 77 insertions(+), 29 deletions(-) diff --git a/mods/HELP/mcl_doc_basics/locale/template.txt b/mods/HELP/mcl_doc_basics/locale/template.txt index 4056de57..5abc582e 100644 --- a/mods/HELP/mcl_doc_basics/locale/template.txt +++ b/mods/HELP/mcl_doc_basics/locale/template.txt @@ -16,6 +16,7 @@ Basic controls:= • Recover from swings to deal full damage= • Right-click to build blocks and use things= • [I] for the inventory= +• First items in inventory appear in hotbar below= • Lowest row in inventory appears in hotbar below= • [Esc] to close this window= How to play:= @@ -32,7 +33,7 @@ How to play:= Minetest= Minetest is a free software game engine for games based on voxel gameplay, inspired by InfiniMiner, Minecraft, and the like. Minetest was originally created by Perttu Ahola (alias “celeron55”).= The player is thrown into a huge world made out of cubes or blocks. These cubes usually make the landscape they blocks can be removed and placed almost entirely freely. Using the collected items, new tools and other items can be crafted. Games in Minetest can, however, be much more complex than this.= -A core feature of Minetest is the built-in modding capability. Mods modify existing gameplay. They can be as simple as adding a few decorative blocks or be very complex by e.g. introducing completely new gameplay concepts, generating a completely different kind of world, and many other things.= +A core feature of Minetest is the built-in modding capability. Mods modify existing gameplay. They can be as simple as adding a few decorational blocks or be very complex by e.g. introducing completely new gameplay concepts, generating a completely different kind of world, and many other things.= Minetest can be played alone or online together with multiple players. Online play will work out of the box with any mods, with no need for additional software as they are entirely provided by the server.= Minetest is usually bundled with a simple default game, named “Minetest Game” (shown in images 1 and 2). You probably already have it. Other games for Minetest can be downloaded from the official Minetest forums .= Minetest as well as Minetest Game are both unfinished at the moment, so please forgive us when not everything works out perfectly.= @@ -63,11 +64,14 @@ Extended movement (requires privileges):= • K: Toggle fly mode, makes you move freely in all directions (requires “fly” privilege)= • H: Toggle noclip mode, makes you go through walls in fly mode (requires “noclip” privilege)= • E: Move even faster when in fast mode= +• E: Walk fast in fast mode= World interaction:= • Left mouse button: Punch / mine blocks / take items= +• Left mouse button: Punch / mine blocks= • Right mouse button: Build or use pointed block= • Shift+Right mouse button: Build= • Roll mouse wheel: Select next/previous item in hotbar= +• Roll mouse wheel / B / N: Select next/previous item in hotbar= • 1-9: Select item in hotbar directly= • Q: Drop item stack= • Shift+Q: Drop 1 item= @@ -75,20 +79,20 @@ World interaction:= Inventory interaction:= See the entry “Basics > Inventory”.= Camera:= -• Z: Zoom (requires “zoom” privilege)= +• Z: Zoom= • F7: Toggle camera mode= • F8: Toggle cinematic mode= Interface:= • Esc: Open menu window (pauses in single-player mode) or close window= • F1: Show/hide HUD= • F2: Show/hide chat= -• F9: Toggle minimap (only works if have a map)= +• F9: Toggle minimap= • Shift+F9: Toggle minimap rotation mode= • F10: Open/close console/chat log= • F12: Take a screenshot= Server interaction:= • T: Open chat window (chat requires the “shout” privilege)= -• /: Start issuing a server command)= +• /: Start issuing a server command= Technical:= • R: Toggle far view (disables all fog and allows viewing far away, can make game very slow)= • +: Increase minimal viewing distance= @@ -99,9 +103,16 @@ Technical:= • P: Only useful for developers. Writes current stack traces= Players= Players (actually: “player characters”) are the characters which users control.= -Players are living beings which occupy a space of about 1×2×1 cubes. They start with 20 health points (HP) and 10 breath points (BP).= +Players are living beings. They start with a number of health points (HP) and a number of breath points (BP).= Players are capable of walking, sneaking, jumping, climbing, swimming, diving, mining, building, fighting and using tools and blocks.= -At a health of 0, the player dies and loses all items in the inventory. The player can just respawn in the world.= +Players can take damage for a variety of reasons, here are some:= +• Taking fall damage= +• Touching a block which causes direct damage= +• Drowning= +• Being attacked by another player= +• Being attacked by a computer enemy= +At a health of 0, the player dies. The player can just respawn in the world.= +Other consequences of death depend on the game. The player could lose all items, or lose the round in a competitive game.= Some blocks reduce breath. While being with the head in a block which causes drowning, the breath points are reduced by 1 for every 2 seconds. When all breath is gone, the player starts to suffer drowning damage. Breath is quickly restored in any other block.= Damage can be disabled on any world. Without damage, players are immortal and health and breath are unimportant.= In multi-player mode, the name of other players is written above their head.= @@ -109,8 +120,15 @@ Items= Items are things you can carry along and store in inventories. They can be used for crafting, smelting, building, mining, and more. Types of items include blocks, tools, weapons and items only used for crafting.= An item stack is a collection of items of the same type which fits into a single item slot. Item stacks can be dropped on the ground. Items which drop into the same coordinates will form an item stack.= Dropped item stacks will be collected automatically when you stand close to them.= +Items have several properties, including the following:= +• Maximum stack size: Number of items which fit on 1 item stack= +• Pointing range: How close things must be to be pointed while wielding this item= +• Group memberships: See “Basics > Groups”= +• May be used for crafting or cooking= Tools= Some items may serve as a tool when wielded. Any item which has some special use which can be directly used by its wielder is considered a tool.= +A common subset of tools is mining tools. These are important to break all kinds of blocks. Weapons are a kind of tool. There are of course many other possible tools. Special actions of tools are usually done by left-click or right-click.= +When nothing is wielded, players use their hand which may act as tool and weapon.= Mining tools are important to break all kinds of blocks. Weapons are another kind of tool. There are some other more specialized tools. Special actions of tools are usually done by right-click.= When nothing is wielded, players use their hand which may act as tool and weapon. The hand is capable of punching and deals minimum damage.= Many tools will wear off when using them and may eventually get destroyed. The damage is displayed in a damage bar below the tool icon. If no damage bar is shown, the tool is in mint condition. Tools may be repairable by crafting, see “Basics > Crafting”.= @@ -120,7 +138,7 @@ Melee weapons deal damage by punching players and other animate objects. There a • Single punch: Left-click once to deal a single punch= • Quick punching: Hold down the left mouse button to deal quick repeated punches= There are two core attributes of melee weapons:= -• Maximum damage: Damage which is dealt after a hit when the weapon was fully recovered)= +• Maximum damage: Damage which is dealt after a hit when the weapon was fully recovered= • Full punch interval: Time it takes for fully recovering from a punch= A weapon only deals full damage when it has fully recovered from a previous punch. Otherwise, the weapon will deal only reduced damage. This means, quick punching is very fast, but also deals rather low damage. Note the full punch interval does not limit how fast you can attack.= There is a rule which sometimes makes attacks impossible: Players, animate objects and weapons belong to damage groups. A weapon only deals damage to those who share at least one damage group with it. So if you're using the wrong weapon, you might not deal any damage at all.= @@ -129,7 +147,13 @@ Pointing= To point something, it must be in the pointing range (also just called “range”) of your wielded item. There's a default range when you are not wielding anything. A pointed thing will be outlined or highlighted (depending on your settings). Pointing is not possible with the 3rd person front camera.= A few things can not be pointed. Most blocks are pointable. A few blocks, like air, can never be pointed. Other blocks, like liquids can only be pointed by special items.= Camera= +There are 3 different views which determine the way you see the world. The modes are:= +• 1: First-person view (default)= +• 2: Third-person view from behind= +• 3: Third-person view from the front= You can change the camera mode by pressing [F7].= +You might be able to zoom with [Z] to zoom the view at the crosshair. This allows you to look further.= +Zooming is a gameplay feature that might be enabled or disabled by the game. By default, zooming is enabled when in Creative Mode but disabled otherwise.= There is also Cinematic Mode which can be toggled with [F8]. With Cinematic Mode enabled, the camera movements become more smooth. Some players don't like it, it is a matter of taste.= By holding down [Z], you can zoom the view at your crosshair. You need the “zoom” privilege to do this.= • Switch camera mode: [F7]= @@ -137,6 +161,7 @@ By holding down [Z], you can zoom the view at your crosshair. You need the “zo • Zoom: [Z]= Blocks= The world of MineClone 2 is made entirely out of blocks (voxels, to be precise). Blocks can be added or removed with the correct tools.= +The world is made entirely out of blocks (voxels, to be precise). Blocks can be added or removed with the correct tools.= Blocks can have a wide range of different properties which determine mining times, behavior, looks, shape, and much more. Their properties include:= • Collidable: Collidable blocks can not be passed through; players can walk on them. Non-collidable blocks can be passed through freely= • Pointable: Pointable blocks show a wireframe or a halo box when pointed. But you will just point through non-pointable blocks. Liquids are usually non-pointable but they can be pointed at by some special tools= @@ -161,13 +186,17 @@ Normally, blocks are built in front of the pointed side of the pointed block. A Liquids= Liquids are special dynamic blocks. Liquids like to spread and flow to their surrounding blocks. Players can swim and drown in them.= Liquids usually come in two forms: In source form (S) and in flowing form (F).= -Liquid sources have the shape of a full cube. A liquid source will generate flowing liquids around it from time to time, and, if the liquid is renewable, it also generates liquid sources. A liquid source can sustain itself. A long it is left alone, a liquid source will normally keep its place and does not drain out.= +Liquid sources have the shape of a full cube. A liquid source will generate flowing liquids around it from time to time, and, if the liquid is renewable, it also generates liquid sources. A liquid source can sustain itself. As long it is left alone, a liquid source will normally keep its place and does not drain out.= Flowing liquids take a sloped form. Flowing liquids spread around the world until they drain. A flowing liquid can not sustain itself and always comes from a liquid source, either directly or indirectly. Without a liquid source, a flowing liquid will eventually drain out and disappear.= All liquids share the following properties:= -• All properties of blocks (including drowning damage= +• All properties of blocks (including drowning damage)= • Renewability: Renewable liquids can create new sources= • Flowing range: How many flowing liquids are created at maximum per liquid source, it determines how far the liquid will spread. Possible are ranges from 0 to 8. At 0, no flowing liquids will be created. Image 5 shows a liquid of flowing range 2= • Viscosity: How slow players move through it and how slow the liquid spreads= +Renewable liquids create new liquid sources at open spaces (image 2). A new liquid source is created when:= +• Two renewable liquid blocks of the same type touch each other diagonally= +• These blocks are also on the same height= +• One of the two “corners” is open space which allows liquids to flow in= When those criteria are met, the open space is filled with a new liquid source of the same type (image 3).= Swimming in a liquid is fairly straightforward: The usual direction keys for basic movement, the jump key for rising and the sneak key for sinking.= The physics for swimming and diving in a liquid are:= @@ -180,31 +209,37 @@ Crafting= Crafting is the task of combining several items to form a new item.= To craft something, you need one or more items, a crafting grid (C) and a crafting recipe. A crafting grid is like a normal inventory which can also be used for crafting. Items need to be put in a certain pattern into the crafting grid. Next to the crafting grid is an output slot (O). Here the result will appear when you placed items correctly. This is just a preview, not the actual item. Crafting grids can come in different sizes which limits the possible recipes you can craft.= To complete the craft, take the result item from the output slot, which will consume items from the crafting grid and creates a new item. It is not possible to place items into the output slot.= -A description on how to craft an item is called a “crafting recipe”. These crafting recipes can be found in the crafting guide which you can access from the inventory menu.= +A description on how to craft an item is called a “crafting recipe”. You need this knowledge to craft. There are multiple ways to learn crafting recipes. One way is by using a crafting guide, which contains a list of available crafting recipes. Some games provide crafting guides. There are also some mods which you can download online for installing a crafting guide. Another way is by reading the online manual of the game (if one is available).= Crafting recipes consist of at least one input item and exactly one stack of output items. When performing a single craft, it will consume exactly one item from each stack of the crafting grid, unless the crafting recipe defines replacements.= +There are multiple types of crafting recipes:= +• Shaped (image 2): Items need to be placed in a particular shape= +• Shapeless (images 3 and 4): Items need to be placed somewhere in input (both images show the same recipe)= +• Cooking: Explained in “Basics > Cooking”= +• Repairing (image 5): Place two damaged tools into the crafting grid anywhere to get a tool which is repaired by 5%= In some crafting recipes, some input items do not need to be a concrete item, instead they need to be a member of a group (see “Basics > Groups”). These recipes offer a bit more freedom in the input items. Images 6-8 show the same group-based recipe. Here, 8 items of the “stone” group are required, which is true for all of the shown items.= Rarely, crafting recipes have replacements. This means, whenever you perform a craft, some items in the crafting grid will not be consumed, but instead will be replaced by another item.= Cooking= -Cooking (or smelting) is a form of crafting which does not involve a crafting grid. Cooking is done with a furnace, an cookable item, a fuel item and time in order to yield a new item.= +Cooking (or smelting) is a form of crafting which does not involve a crafting grid. Cooking is done with a special block (like a furnace), an cookable item, a fuel item and time in order to yield a new item.= Each fuel item has a burning time. This is the time a single item of the fuel keeps a furnace burning.= Each cookable item requires time to be cooked. This time is specific to the item type and the item must be “on fire” for the whole cooking time to actually yield the result.= Hotbar= -At the bottom of the screen you see some squares. This is called the “hotbar”. The hotbar allows you to quickly access the lowest row of items in the player inventory.= -You can change the selected item with the mouse wheel or the number keys.= -• Select previous item in hotbar: [Mouse wheel up]= -• Select next item in hotbar: [Mouse wheel down]= -• Select item in hotbar directly: [0]-[9]= +At the bottom of the screen you see some squares. This is called the “hotbar”. The hotbar allows you to quickly access the first items from your player inventory.= +You can change the selected item with the mouse wheel or the keyboard.= +• Select previous item in hotbar: [Mouse wheel up] or [B]= +• Select next item in hotbar: [Mouse wheel down] or [N]= +• Select item in hotbar directly: [1]-[9]= The selected item is also your wielded item.= Minimap= If you have a map item in any of your hotbar slots, you can use the minimap.= Press [F9] to make a minimap appear on the top right. The minimap helps you to find your way around the world. Press it again to select different minimap modes and zoom levels. The minimap also shows the positions of other players.= There are 2 minimap modes and 3 zoom levels.= Surface mode (image 1) is a top-down view of the world, roughly resembling the colors of the blocks this world is made of. It only shows the topmost blocks, everything below is hidden, like a satellite photo. Surface mode is useful if you got lost.= -Radar mode (image 2) is more complicated. It displays the “denseness” of the area around you and changes with your height. Roughly, the more green an area is, the less “dense” it is. Black areas have many blocks. Use the radar to find caverns, hidden areas, walls and more. The rectangular shapes in image 2 clearly expose the position of a dungeon. Radar mode is only available in Creative Mode= +Radar mode (image 2) is more complicated. It displays the “denseness” of the area around you and changes with your height. Roughly, the more green an area is, the less “dense” it is. Black areas have many blocks. Use the radar to find caverns, hidden areas, walls and more. The rectangular shapes in image 2 clearly expose the position of a dungeon.= There are also two different rotation modes. In “square mode”, the rotation of the minimap is fixed. If you press [Shift]+[F9] to switch to “circle mode”, the minimap will instead rotate with your looking direction, so “up” is always your looking direction.= -In other games, the minimap may be disabled.= +In some games, the minimap may be disabled.= • Toggle minimap mode: [F9]= • Toggle minimap rotation mode: [Shift]+[F9]= +Inventory= Inventories are used to store item stacks. There are other uses, such as crafting. An inventory consists of a rectangular grid of item slots. Each item slot can either be empty or hold one item stack. Item stacks can be moved freely between most slots.= You have your own inventory which is called your “player inventory”, you can open it with the inventory key (default: [I]). The first inventory slots are also used as slots in your hotbar.= Blocks can also have their own inventory, e.g. chests and furnaces.= @@ -213,9 +248,11 @@ Taking: You can take items from an occupied slot if the cursor holds nothing.= • Left click: take entire item stack= • Right click: take half from the item stack (rounded up)= • Middle click: take 10 items from the item stack= +• Mouse wheel down: take 1 item from the item stack= Putting: You can put items onto a slot if the cursor holds 1 or more items and the slot is either empty or contains an item stack of the same item type.= • Left click: put entire item stack= • Right click: put 1 item of the item stack= +• Right click or mouse wheel up: put 1 item of the item stack= • Middle click: put 10 items of the item stack= Exchanging: You can exchange items if the cursor holds 1 or more items and the destination slot is occupied by a different item type.= • Click: exchange item stacks= @@ -229,11 +266,13 @@ Here you find the most recent version of MineClone 2 and can discuss it.= Bug tracker: = Report bugs here.= Minetest links:= -Official homepage of Minetest: = +You may want to check out these online resources related to Minetest:= +Official homepage of Minetest: = The main place to find the most recent version of Minetest, the engine used by MineClone 2.= -Community wiki: = -A community-based documentation website for Minetest. Anyone with an account can edit it.= -Minetest forums: = +The main place to find the most recent version of Minetest.= +Community wiki: = +A community-based documentation website for Minetest. Anyone with an account can edit it! It also features a documentation of Minetest Game.= +Minetest forums: = A web-based discussion platform where you can discuss everything related to Minetest. This is also a place where player-made mods and games are published and discussed. The discussions are mainly in English, but there is also space for discussion in other languages.= Chat: = A generic Internet Relay Chat channel for everything related to Minetest where people can meet to discuss in real-time. If you do not understand IRC, see the Community Wiki for help.= @@ -274,7 +313,7 @@ Items:= Gameplay:= • “heart”: A single health symbol, indicates 2 HP= • “bubble”: A single breath symbol, indicates 1 BP= -• HP: Hit point (equals a half “heart”)= +• HP: Hit point (equals half 1 “heart”)= • BP: Breath point, indicates breath when diving= • Mob: Computer-controlled enemy= • Crafting: Combining multiple items to create new ones= @@ -304,11 +343,15 @@ Settings= There is a large variety of settings to configure Minetest. Pretty much every aspect can be changed that way.= These are a few of the most important gameplay settings:= • Damage enabled (enable_damage): Enables the health and breath attributes for all players. If disabled, players are immortal= -• Creative Mode (creative_mode): Enables sandbox-style gameplay focusing on creativity rather than a challenging gameplay. Changes include: Instant digging, easy access to almost all items, tools never wear off, etc.= +• Creative Mode (creative_mode): Enables sandbox-style gameplay focusing on creativity rather than a challenging gameplay. The meaning depends on the game; usual changes are: Reduced dig times, easy access to almost all items, tools never wear off, etc.= • PvP (enable_pvp): Short for “Player vs Player”. If enabled, players can deal damage to each other= -For a full list of all available settings, use the “Advanced settings” dialog in the main menu.= +For a full list of all available settings, use the “All Settings” dialog in the main menu.= Movement modes= -If you have the required privileges, you can use up to three special movement modes. Using these may be considered cheating.= +You can enable some special movement modes that change how you move.= +Pitch movement mode:= +• Description: If this mode is activated, the movement keys will move you relative to your current view pitch (vertical look angle) when you're in a liquid or in fly mode.= +• Default key: [L]= +• No privilege required= Fast mode:= • Description: Allows you to move much faster. Hold down the the “Use” key [E] to move faster. In the client configuration, you can further customize fast mode.= • Default key: [J]= @@ -376,12 +419,12 @@ Here are a few basic privilege-related commands:= Players with the “privs” privilege can modify privileges at will:= • /grant : Grant to = • /revoke : Revoke from = -In single-player mode, you can use “/grant singleplayer all” to unlock all abilities (which is often considered cheating).= +In single-player mode, you can use “/grantme all” to unlock all abilities.= Light= As the world is entirely block-based, so is the light in the world. Each block has its own brightness. The brightness of a block is expressed in a “light level” which ranges from 0 (total darkness) to 15 (as bright as the sun).= There are two types of light: Sunlight and artificial light.= Artificial light is emitted by luminous blocks. Artificial light has a light level from 1-14.= -Sunlight is the brightest light and always goes perfectly straight down from the sky at each time of the day. blocks. At night, the sunlight will become moonlight instead, which still provides a small amount of light. The light level of sunlight is 15.= +Sunlight is the brightest light and always goes perfectly straight down from the sky at each time of the day. At night, the sunlight will become moonlight instead, which still provides a small amount of light. The light level of sunlight is 15.= Blocks have 3 levels of transparency:= • Transparent: Sunlight goes through limitless, artificial light goes through with losses= • Semi-transparent: Sunlight and artificial light go through with losses= @@ -401,7 +444,7 @@ The values for X, Y and Z work like this:= • Follow the sun, then go right: Z increases= • Follow the sun, then go left: Z decreases= • The side length of a full cube is 1= -You can view your current position in the debug screen (open with [F5]). This is considered cheating in some games.= +You can view your current position in the debug screen (open with [F5]).= # MCL2 extensions Creative Mode= diff --git a/mods/ITEMS/mcl_core/locale/template.txt b/mods/ITEMS/mcl_core/locale/template.txt index b7cd2a70..f988435a 100644 --- a/mods/ITEMS/mcl_core/locale/template.txt +++ b/mods/ITEMS/mcl_core/locale/template.txt @@ -248,6 +248,7 @@ Granite is an igneous rock.= Top snow can be stacked and has one of 8 different height levels. At levels 2-8, top snow is collidable. Top snow drops 2-9 snowballs, depending on its height.= This block can only be placed on full solid blocks and on another top snow (which increases its height).= Needs soil and water to grow= +Needs soil and light to grow= Grows on sand= Contact damage: @1 per half second= Slows down movement= diff --git a/mods/ITEMS/mcl_ocean/locale/template.txt b/mods/ITEMS/mcl_ocean/locale/template.txt index aa0db175..9fb4f8e1 100644 --- a/mods/ITEMS/mcl_ocean/locale/template.txt +++ b/mods/ITEMS/mcl_ocean/locale/template.txt @@ -54,3 +54,7 @@ Grows in water on dirt, sand, gravel Glows in the water= 4 possible sizes= Grows on dead brain coral block= +Sea Pickle= +Sea pickles grow on dead brain coral blocks and provide light when underwater. They come in 4 sizes that vary in brightness.= +It can only be placed on top of dead brain coral blocks. Placing a sea pickle on another sea pickle will make it grow and brighter.= + From 3566ef37fafa070b8904282a2ef72ec81fa5c9d5 Mon Sep 17 00:00:00 2001 From: Alexander Minges Date: Wed, 6 May 2020 16:37:18 +0200 Subject: [PATCH 699/737] optimize all textures (optipng -o7) --- .../textures/mcl_particles_bubble.png | Bin 938 -> 171 bytes .../textures/mcl_boats_acacia_boat.png | Bin 265 -> 258 bytes .../textures/mcl_boats_birch_boat.png | Bin 264 -> 258 bytes .../mcl_boats/textures/mcl_boats_oak_boat.png | Bin 267 -> 259 bytes .../mcl_minecarts_minecart_furnace.png | Bin 271 -> 260 bytes .../textures/mcl_minecarts_rail_activator.png | Bin 285 -> 282 bytes .../mcl_minecarts_rail_detector_crossing.png | Bin 282 -> 273 bytes ...necarts_rail_detector_crossing_powered.png | Bin 274 -> 270 bytes .../mcl_minecarts_rail_detector_curved.png | Bin 259 -> 258 bytes ...minecarts_rail_detector_curved_powered.png | Bin 260 -> 258 bytes .../mcl_minecarts_rail_golden_powered.png | Bin 257 -> 255 bytes .../ENTITIES/mcl_mobs/textures/mobs_blood.png | Bin 895 -> 178 bytes .../mobs_mc/textures/mcl_totems_totem.png | Bin 346 -> 282 bytes .../mobs_mc/textures/mobs_chicken_egg.png | Bin 176 -> 169 bytes .../mobs_mc_TEMP_wither_projectile.png | Bin 215 -> 208 bytes .../textures/mobs_mc_arrow_particle.png | Bin 186 -> 185 bytes .../mobs_mc/textures/mobs_mc_donkey.png | Bin 3085 -> 2825 bytes .../textures/mobs_mc_dragon_fireball.png | Bin 362 -> 321 bytes .../mobs_mc/textures/mobs_mc_evoker.png | Bin 1836 -> 1230 bytes .../mobs_mc/textures/mobs_mc_ghast.png | Bin 1402 -> 765 bytes .../mobs_mc/textures/mobs_mc_horse_black.png | Bin 2975 -> 2718 bytes .../mobs_mc/textures/mobs_mc_horse_brown.png | Bin 2994 -> 2738 bytes .../textures/mobs_mc_horse_chestnut.png | Bin 2993 -> 2743 bytes .../textures/mobs_mc_horse_darkbrown.png | Bin 2999 -> 2735 bytes .../mobs_mc/textures/mobs_mc_horse_gray.png | Bin 2974 -> 2717 bytes .../textures/mobs_mc_horse_skeleton.png | Bin 5972 -> 5964 bytes .../mobs_mc/textures/mobs_mc_horse_white.png | Bin 2904 -> 2645 bytes .../mobs_mc/textures/mobs_mc_illusionist.png | Bin 3025 -> 1612 bytes .../mobs_mc/textures/mobs_mc_llama.png | Bin 5394 -> 4702 bytes .../mobs_mc/textures/mobs_mc_llama_brown.png | Bin 4397 -> 3530 bytes .../mobs_mc/textures/mobs_mc_llama_creamy.png | Bin 9349 -> 7412 bytes .../mobs_mc/textures/mobs_mc_llama_gray.png | Bin 14050 -> 12101 bytes .../mobs_mc/textures/mobs_mc_llama_white.png | Bin 12785 -> 10994 bytes .../textures/mobs_mc_mooshroom_brown.png | Bin 1048 -> 642 bytes .../mobs_mc/textures/mobs_mc_mule.png | Bin 3094 -> 2838 bytes .../textures/mobs_mc_mushroom_brown.png | Bin 374 -> 350 bytes .../mobs_mc/textures/mobs_mc_mushroom_red.png | Bin 433 -> 298 bytes .../mobs_mc/textures/mobs_mc_parrot_blue.png | Bin 573 -> 368 bytes .../mobs_mc/textures/mobs_mc_parrot_green.png | Bin 547 -> 365 bytes .../textures/mobs_mc_parrot_red_blue.png | Bin 561 -> 369 bytes .../textures/mobs_mc_parrot_yellow_blue.png | Bin 558 -> 363 bytes .../mobs_mc/textures/mobs_mc_sheep.png | Bin 1723 -> 1674 bytes .../mobs_mc/textures/mobs_mc_sheep_fur.png | Bin 1688 -> 1592 bytes .../mobs_mc/textures/mobs_mc_slime.png | Bin 992 -> 989 bytes .../textures/mobs_mc_spawn_icon_cat.png | Bin 315 -> 312 bytes .../mobs_mc_spawn_icon_cave_spider.png | Bin 648 -> 476 bytes .../textures/mobs_mc_spawn_icon_dragon.png | Bin 489 -> 460 bytes .../textures/mobs_mc_spawn_icon_enderman.png | Bin 439 -> 340 bytes .../textures/mobs_mc_spawn_icon_endermite.png | Bin 529 -> 375 bytes .../textures/mobs_mc_spawn_icon_evoker.png | Bin 759 -> 486 bytes .../textures/mobs_mc_spawn_icon_ghast.png | Bin 750 -> 454 bytes .../mobs_mc_spawn_icon_guardian_elder.png | Bin 335 -> 333 bytes .../mobs_mc_spawn_icon_horse_skeleton.png | Bin 1040 -> 585 bytes .../mobs_mc_spawn_icon_horse_zombie.png | Bin 1276 -> 1023 bytes .../mobs_mc_spawn_icon_illusioner.png | Bin 866 -> 614 bytes .../textures/mobs_mc_spawn_icon_magmacube.png | Bin 706 -> 443 bytes .../textures/mobs_mc_spawn_icon_parrot.png | Bin 440 -> 331 bytes .../textures/mobs_mc_spawn_icon_skeleton.png | Bin 855 -> 477 bytes .../textures/mobs_mc_spawn_icon_slime.png | Bin 1492 -> 1490 bytes .../textures/mobs_mc_spawn_icon_spider.png | Bin 1182 -> 649 bytes .../textures/mobs_mc_spawn_icon_squid.png | Bin 692 -> 422 bytes .../textures/mobs_mc_spawn_icon_vex.png | Bin 775 -> 530 bytes .../textures/mobs_mc_spawn_icon_villager.png | Bin 629 -> 482 bytes .../mobs_mc_spawn_icon_vindicator.png | Bin 676 -> 464 bytes .../textures/mobs_mc_spawn_icon_zombie.png | Bin 751 -> 550 bytes .../mobs_mc/textures/mobs_mc_stray.png | Bin 847 -> 574 bytes .../textures/mobs_mc_stray_overlay.png | Bin 790 -> 587 bytes .../textures/mobs_mc_trading_formspec_bg.png | Bin 1442 -> 1430 bytes .../mobs_mc/textures/mobs_mc_vindicator.png | Bin 2474 -> 1461 bytes .../mobs_mc/textures/mobs_mc_witch.png | Bin 2216 -> 1052 bytes .../mobs_mc/textures/mobs_mc_wither.png | Bin 1136 -> 713 bytes .../textures/mobs_mc_wither_skeleton.png | Bin 764 -> 530 bytes ..._gameconfig_enderman_cactus_background.png | Bin 99 -> 96 bytes .../textures/lightning_lightning_1.png | Bin 2436 -> 1257 bytes .../textures/lightning_lightning_2.png | Bin 2725 -> 1420 bytes .../textures/lightning_lightning_3.png | Bin 4044 -> 2276 bytes .../textures/craftguide_arrow.png | Bin 136 -> 135 bytes .../textures/craftguide_clear_icon.png | Bin 708 -> 594 bytes .../textures/craftguide_next_icon.png | Bin 727 -> 714 bytes .../textures/craftguide_prev_icon.png | Bin 728 -> 714 bytes .../textures/craftguide_search_icon.png | Bin 1908 -> 1319 bytes .../textures/craftguide_zoomin_icon.png | Bin 3544 -> 3145 bytes .../textures/craftguide_zoomout_icon.png | Bin 2948 -> 2674 bytes .../textures/doc_basics_build.png | Bin 107639 -> 107361 bytes .../textures/doc_basics_camera_behind.png | Bin 50535 -> 49825 bytes .../textures/doc_basics_camera_ego.png | Bin 49404 -> 48705 bytes .../textures/doc_basics_camera_front.png | Bin 61814 -> 61325 bytes .../textures/doc_basics_craft_grid.png | Bin 2607 -> 2504 bytes .../textures/doc_basics_craft_groups_1.png | Bin 30456 -> 27075 bytes .../textures/doc_basics_craft_groups_2.png | Bin 30207 -> 29556 bytes .../textures/doc_basics_craft_groups_3.png | Bin 31256 -> 30135 bytes .../textures/doc_basics_craft_repair.png | Bin 6184 -> 5882 bytes .../textures/doc_basics_craft_shaped.png | Bin 15459 -> 15145 bytes .../textures/doc_basics_craft_shapeless_1.png | Bin 8335 -> 7965 bytes .../textures/doc_basics_craft_shapeless_2.png | Bin 8438 -> 8102 bytes .../doc_basics_gameplay_carbone_ng.png | Bin 108394 -> 108272 bytes .../textures/doc_basics_gameplay_hades.png | Bin 84294 -> 83816 bytes .../textures/doc_basics_gameplay_lott.png | Bin 106038 -> 105708 bytes .../textures/doc_basics_gameplay_moontest.png | Bin 61057 -> 58372 bytes .../textures/doc_basics_gameplay_mtg_1.png | Bin 89116 -> 88532 bytes .../textures/doc_basics_gameplay_mtg_2.png | Bin 95864 -> 95397 bytes .../textures/doc_basics_gameplay_outback.png | Bin 80215 -> 79894 bytes .../textures/doc_basics_gameplay_pixture.png | Bin 72384 -> 71564 bytes .../doc_basics_gameplay_xtraores_xtension.png | Bin 83270 -> 82826 bytes .../textures/doc_basics_hotbar.png | Bin 8339 -> 7548 bytes .../textures/doc_basics_hotbar_relations.png | Bin 43073 -> 38263 bytes .../textures/doc_basics_inventory.png | Bin 16434 -> 15991 bytes .../textures/doc_basics_inventory_detail.png | Bin 2487 -> 2369 bytes .../textures/doc_basics_items_dropped.png | Bin 46409 -> 35999 bytes .../textures/doc_basics_light_test.png | Bin 112743 -> 112488 bytes .../textures/doc_basics_light_torch.png | Bin 62900 -> 61558 bytes .../doc_basics_liquids_nonrenewable.png | Bin 71960 -> 70124 bytes .../textures/doc_basics_liquids_range.png | Bin 54674 -> 53445 bytes .../doc_basics_liquids_renewable_1.png | Bin 56184 -> 52820 bytes .../doc_basics_liquids_renewable_2.png | Bin 54144 -> 50153 bytes .../textures/doc_basics_liquids_types.png | Bin 47658 -> 42917 bytes .../textures/doc_basics_minimap_map.png | Bin 22645 -> 19706 bytes .../textures/doc_basics_minimap_radar.png | Bin 12342 -> 11766 bytes .../textures/doc_basics_minimap_round.png | Bin 27471 -> 25918 bytes .../textures/doc_basics_nodes.png | Bin 84210 -> 83292 bytes .../textures/doc_basics_players_flat.png | Bin 59927 -> 57971 bytes .../textures/doc_basics_players_lott.png | Bin 39159 -> 32984 bytes .../textures/doc_basics_players_sam.png | Bin 54510 -> 50036 bytes .../textures/doc_basics_pointing.png | Bin 69739 -> 58643 bytes .../textures/doc_basics_sneak.png | Bin 73552 -> 70826 bytes .../textures/doc_basics_tools.png | Bin 12781 -> 12290 bytes .../textures/doc_basics_tools_mining.png | Bin 14504 -> 14118 bytes .../HUD/awards/textures/awards_bg_default.png | Bin 699 -> 457 bytes mods/HUD/awards/textures/awards_bg_mining.png | Bin 21274 -> 7705 bytes mods/HUD/awards/textures/awards_template.png | Bin 322 -> 204 bytes mods/HUD/awards/textures/awards_ui_icon.png | Bin 3514 -> 3096 bytes mods/HUD/awards/textures/awards_unknown.png | Bin 322 -> 204 bytes .../textures/hudbars_bar_background.png | Bin 140 -> 113 bytes .../textures/hudbars_bgicon_health.png | Bin 895 -> 178 bytes .../hudbars/textures/hudbars_icon_breath.png | Bin 902 -> 284 bytes .../hudbars/textures/hudbars_icon_health.png | Bin 903 -> 189 bytes .../textures/mcl_achievements_button.png | Bin 393 -> 390 bytes .../HUD/mcl_base_textures/textures/bubble.png | Bin 902 -> 284 bytes .../textures/crack_anylength.png | Bin 1295 -> 552 bytes .../mcl_base_textures/textures/crosshair.png | Bin 144 -> 128 bytes mods/HUD/mcl_base_textures/textures/heart.png | Bin 903 -> 189 bytes .../textures/mcl_formspec_itemslot.png | Bin 231 -> 173 bytes .../mcl_hbarmor/textures/hbarmor_bgicon.png | Bin 896 -> 177 bytes .../HUD/mcl_hbarmor/textures/hbarmor_icon.png | Bin 904 -> 253 bytes .../textures/crafting_creative_next.png | Bin 387 -> 270 bytes .../textures/crafting_creative_prev.png | Bin 391 -> 273 bytes .../textures/crafting_formspec_bg.png | Bin 1030 -> 946 bytes .../textures/crafting_inventory_creative.png | Bin 1246 -> 1233 bytes .../crafting_inventory_creative_survival.png | Bin 1419 -> 1289 bytes .../textures/mcl_inventory_hotbar.png | Bin 358 -> 356 bytes .../textures/mcl_anvils_inventory.png | Bin 699 -> 696 bytes .../mcl_armor_boots_leather_preview.png | Bin 131 -> 129 bytes .../mcl_armor_chestplate_chain_preview.png | Bin 255 -> 253 bytes .../textures/mcl_armor_chestplate_diamond.png | Bin 316 -> 310 bytes .../textures/mcl_armor_chestplate_leather.png | Bin 227 -> 226 bytes .../textures/mcl_armor_inv_boots_chain.png | Bin 221 -> 214 bytes .../mcl_armor_inv_chestplate_chain.png | Bin 278 -> 274 bytes .../textures/mcl_armor_inv_helmet_chain.png | Bin 222 -> 217 bytes .../textures/mcl_armor_inv_leggings_chain.png | Bin 236 -> 230 bytes .../mcl_armor_inv_leggings_leather.png | Bin 203 -> 197 bytes .../textures/mcl_banners_triangle_top.png | Bin 173 -> 172 bytes .../mcl_beds_bed_side_top_r_black.png | Bin 202 -> 199 bytes .../textures/mcl_beds_bed_side_top_r_blue.png | Bin 202 -> 199 bytes .../mcl_beds_bed_side_top_r_brown.png | Bin 202 -> 199 bytes .../textures/mcl_beds_bed_side_top_r_cyan.png | Bin 202 -> 199 bytes .../mcl_beds_bed_side_top_r_green.png | Bin 202 -> 199 bytes .../textures/mcl_beds_bed_side_top_r_grey.png | Bin 202 -> 199 bytes .../mcl_beds_bed_side_top_r_light_blue.png | Bin 202 -> 199 bytes .../textures/mcl_beds_bed_side_top_r_lime.png | Bin 202 -> 199 bytes .../mcl_beds_bed_side_top_r_magenta.png | Bin 202 -> 199 bytes .../mcl_beds_bed_side_top_r_orange.png | Bin 202 -> 199 bytes .../textures/mcl_beds_bed_side_top_r_pink.png | Bin 202 -> 199 bytes .../mcl_beds_bed_side_top_r_purple.png | Bin 202 -> 199 bytes .../textures/mcl_beds_bed_side_top_r_red.png | Bin 202 -> 199 bytes .../mcl_beds_bed_side_top_r_silver.png | Bin 202 -> 199 bytes .../mcl_beds_bed_side_top_r_white.png | Bin 202 -> 199 bytes .../mcl_beds_bed_side_top_r_yellow.png | Bin 202 -> 199 bytes .../mcl_bows/textures/mcl_bows_arrow_inv.png | Bin 245 -> 237 bytes mods/ITEMS/mcl_bows/textures/mcl_bows_bow.png | Bin 206 -> 205 bytes .../mcl_bows/textures/mcl_bows_bow_0.png | Bin 231 -> 219 bytes .../mcl_bows/textures/mcl_bows_bow_1.png | Bin 227 -> 225 bytes mods/ITEMS/mcl_cake/textures/cake.png | Bin 246 -> 241 bytes mods/ITEMS/mcl_cake/textures/cake_bottom.png | Bin 196 -> 194 bytes mods/ITEMS/mcl_cake/textures/cake_side.png | Bin 201 -> 198 bytes mods/ITEMS/mcl_cake/textures/cake_top.png | Bin 227 -> 226 bytes .../textures/mcl_cauldrons_cauldron.png | Bin 215 -> 213 bytes .../textures/default_chest_top_big.png | Bin 200 -> 199 bytes .../mcl_chests_chest_trapped_top_big.png | Bin 200 -> 199 bytes .../mcl_chests_ender_chest_bottom.png | Bin 161 -> 160 bytes .../textures/mcl_chests_ender_chest_left.png | Bin 189 -> 188 bytes .../textures/mcl_chests_ender_chest_right.png | Bin 189 -> 188 bytes .../textures/mcl_chests_ender_chest_top.png | Bin 191 -> 189 bytes .../mcl_clock/textures/mcl_clock_clock_07.png | Bin 239 -> 227 bytes .../mcl_clock/textures/mcl_clock_clock_10.png | Bin 236 -> 225 bytes .../mcl_clock/textures/mcl_clock_clock_11.png | Bin 240 -> 228 bytes .../mcl_clock/textures/mcl_clock_clock_13.png | Bin 234 -> 232 bytes .../mcl_clock/textures/mcl_clock_clock_14.png | Bin 241 -> 230 bytes .../mcl_clock/textures/mcl_clock_clock_15.png | Bin 244 -> 232 bytes .../mcl_clock/textures/mcl_clock_clock_16.png | Bin 244 -> 234 bytes .../mcl_clock/textures/mcl_clock_clock_17.png | Bin 234 -> 232 bytes .../mcl_clock/textures/mcl_clock_clock_18.png | Bin 241 -> 231 bytes .../mcl_clock/textures/mcl_clock_clock_20.png | Bin 233 -> 230 bytes .../mcl_clock/textures/mcl_clock_clock_22.png | Bin 240 -> 226 bytes .../mcl_clock/textures/mcl_clock_clock_23.png | Bin 239 -> 226 bytes .../mcl_clock/textures/mcl_clock_clock_40.png | Bin 236 -> 227 bytes .../mcl_clock/textures/mcl_clock_clock_43.png | Bin 240 -> 228 bytes .../mcl_clock/textures/mcl_clock_clock_45.png | Bin 247 -> 232 bytes .../mcl_clock/textures/mcl_clock_clock_46.png | Bin 240 -> 229 bytes .../mcl_clock/textures/mcl_clock_clock_48.png | Bin 243 -> 230 bytes .../mcl_clock/textures/mcl_clock_clock_51.png | Bin 244 -> 228 bytes .../mcl_colorblocks_concrete_blue.png | Bin 205 -> 203 bytes .../mcl_colorblocks_concrete_brown.png | Bin 186 -> 182 bytes .../mcl_colorblocks_concrete_green.png | Bin 192 -> 190 bytes .../mcl_colorblocks_concrete_grey.png | Bin 186 -> 185 bytes .../mcl_colorblocks_concrete_light_blue.png | Bin 198 -> 197 bytes .../mcl_colorblocks_concrete_lime.png | Bin 212 -> 210 bytes .../mcl_colorblocks_concrete_magenta.png | Bin 218 -> 217 bytes .../mcl_colorblocks_concrete_pink.png | Bin 221 -> 218 bytes .../mcl_colorblocks_concrete_powder_black.png | Bin 292 -> 290 bytes .../mcl_colorblocks_concrete_powder_blue.png | Bin 383 -> 381 bytes .../mcl_colorblocks_concrete_powder_brown.png | Bin 388 -> 387 bytes .../mcl_colorblocks_concrete_powder_grey.png | Bin 391 -> 389 bytes .../mcl_colorblocks_concrete_powder_lime.png | Bin 379 -> 378 bytes .../mcl_colorblocks_concrete_powder_pink.png | Bin 420 -> 419 bytes .../mcl_colorblocks_concrete_powder_red.png | Bin 374 -> 372 bytes ...mcl_colorblocks_concrete_powder_silver.png | Bin 382 -> 381 bytes ...mcl_colorblocks_concrete_powder_yellow.png | Bin 332 -> 331 bytes .../textures/mcl_colorblocks_concrete_red.png | Bin 181 -> 178 bytes .../mcl_colorblocks_concrete_white.png | Bin 178 -> 177 bytes .../mcl_colorblocks_concrete_yellow.png | Bin 178 -> 177 bytes ...mcl_colorblocks_glazed_terracotta_blue.png | Bin 190 -> 189 bytes ...lorblocks_glazed_terracotta_light_blue.png | Bin 180 -> 178 bytes ...mcl_colorblocks_glazed_terracotta_lime.png | Bin 180 -> 179 bytes ...l_colorblocks_glazed_terracotta_orange.png | Bin 403 -> 227 bytes ...mcl_colorblocks_glazed_terracotta_pink.png | Bin 177 -> 176 bytes ...l_colorblocks_glazed_terracotta_purple.png | Bin 188 -> 187 bytes ...l_colorblocks_glazed_terracotta_yellow.png | Bin 171 -> 170 bytes .../textures/mcl_compass_compass_00.png | Bin 229 -> 228 bytes .../textures/mcl_compass_compass_01.png | Bin 229 -> 228 bytes .../textures/default_acacia_leaves.png | Bin 214 -> 211 bytes .../mcl_core/textures/default_acacia_tree.png | Bin 196 -> 194 bytes .../ITEMS/mcl_core/textures/default_brick.png | Bin 333 -> 281 bytes mods/ITEMS/mcl_core/textures/default_clay.png | Bin 191 -> 189 bytes .../mcl_core/textures/default_coal_block.png | Bin 170 -> 169 bytes .../mcl_core/textures/default_cobble.png | Bin 560 -> 266 bytes mods/ITEMS/mcl_core/textures/default_dirt.png | Bin 311 -> 246 bytes .../mcl_core/textures/default_dry_grass.png | Bin 171 -> 170 bytes .../mcl_core/textures/default_gravel.png | Bin 228 -> 227 bytes mods/ITEMS/mcl_core/textures/default_ice.png | Bin 194 -> 190 bytes .../textures/default_jungleleaves.png | Bin 232 -> 230 bytes .../textures/default_jungletree_top.png | Bin 216 -> 214 bytes .../mcl_core/textures/default_leaves.png | Bin 226 -> 224 bytes .../mcl_core/textures/default_mossycobble.png | Bin 710 -> 303 bytes .../mcl_core/textures/default_obsidian.png | Bin 188 -> 185 bytes .../ITEMS/mcl_core/textures/default_paper.png | Bin 210 -> 206 bytes mods/ITEMS/mcl_core/textures/default_sand.png | Bin 315 -> 255 bytes .../ITEMS/mcl_core/textures/default_stone.png | Bin 191 -> 188 bytes .../mcl_core/textures/default_stone_brick.png | Bin 217 -> 216 bytes mods/ITEMS/mcl_core/textures/default_wood.png | Bin 203 -> 200 bytes .../textures/mcl_core_andesite_smooth.png | Bin 197 -> 196 bytes .../textures/mcl_core_apple_golden.png | Bin 246 -> 241 bytes .../mcl_core/textures/mcl_core_bedrock.png | Bin 192 -> 190 bytes .../textures/mcl_core_bone_block_top.png | Bin 194 -> 191 bytes .../textures/mcl_core_cactus_bottom.png | Bin 229 -> 226 bytes .../textures/mcl_core_cactus_side.png | Bin 243 -> 242 bytes .../mcl_core/textures/mcl_core_cactus_top.png | Bin 241 -> 240 bytes .../mcl_core/textures/mcl_core_charcoal.png | Bin 171 -> 170 bytes .../textures/mcl_core_coarse_dirt.png | Bin 375 -> 287 bytes .../mcl_core/textures/mcl_core_diorite.png | Bin 194 -> 191 bytes .../textures/mcl_core_dirt_podzol_side.png | Bin 300 -> 292 bytes .../textures/mcl_core_dirt_podzol_top.png | Bin 203 -> 201 bytes .../textures/mcl_core_emerald_block.png | Bin 197 -> 195 bytes .../textures/mcl_core_frosted_ice_1.png | Bin 205 -> 200 bytes .../textures/mcl_core_frosted_ice_2.png | Bin 219 -> 218 bytes .../textures/mcl_core_frosted_ice_3.png | Bin 229 -> 227 bytes .../mcl_core/textures/mcl_core_granite.png | Bin 231 -> 229 bytes .../mcl_core_grass_block_side_overlay.png | Bin 296 -> 246 bytes .../textures/mcl_core_grass_block_top.png | Bin 315 -> 245 bytes .../textures/mcl_core_grass_path_side.png | Bin 371 -> 337 bytes .../textures/mcl_core_grass_path_top.png | Bin 332 -> 264 bytes .../textures/mcl_core_grass_side_snowed.png | Bin 294 -> 282 bytes .../mcl_core/textures/mcl_core_ice_packed.png | Bin 188 -> 182 bytes .../textures/mcl_core_iron_nugget.png | Bin 255 -> 214 bytes .../mcl_core/textures/mcl_core_iron_ore.png | Bin 255 -> 253 bytes .../mcl_core/textures/mcl_core_lapis_ore.png | Bin 259 -> 258 bytes .../textures/mcl_core_leaves_big_oak.png | Bin 196 -> 194 bytes .../textures/mcl_core_leaves_birch.png | Bin 207 -> 206 bytes .../textures/mcl_core_leaves_spruce.png | Bin 207 -> 205 bytes .../textures/mcl_core_log_big_oak.png | Bin 204 -> 201 bytes .../mcl_core/textures/mcl_core_log_birch.png | Bin 200 -> 199 bytes .../textures/mcl_core_mycelium_side.png | Bin 354 -> 326 bytes .../textures/mcl_core_mycelium_top.png | Bin 347 -> 277 bytes .../textures/mcl_core_palette_grass.png | Bin 248 -> 202 bytes .../textures/mcl_core_planks_birch.png | Bin 210 -> 208 bytes .../mcl_core/textures/mcl_core_red_sand.png | Bin 341 -> 283 bytes .../mcl_core_red_sandstone_bottom.png | Bin 350 -> 297 bytes .../mcl_core_red_sandstone_carved.png | Bin 357 -> 304 bytes .../mcl_core_red_sandstone_normal.png | Bin 355 -> 302 bytes .../mcl_core_red_sandstone_smooth.png | Bin 350 -> 297 bytes .../textures/mcl_core_red_sandstone_top.png | Bin 333 -> 264 bytes .../textures/mcl_core_redstone_ore.png | Bin 255 -> 252 bytes .../textures/mcl_core_sandstone_bottom.png | Bin 330 -> 272 bytes .../textures/mcl_core_sandstone_carved.png | Bin 337 -> 287 bytes .../textures/mcl_core_sandstone_normal.png | Bin 338 -> 278 bytes .../textures/mcl_core_sandstone_smooth.png | Bin 330 -> 272 bytes .../textures/mcl_core_sandstone_top.png | Bin 318 -> 251 bytes .../mcl_core/textures/mcl_core_slime.png | Bin 315 -> 310 bytes .../textures/mcl_core_stonebrick_cracked.png | Bin 224 -> 223 bytes .../ITEMS/mcl_core/textures/mcl_core_vine.png | Bin 187 -> 185 bytes mods/ITEMS/mcl_core/textures/mcl_core_web.png | Bin 199 -> 196 bytes .../textures/crafting_workbench_top.png | Bin 213 -> 210 bytes .../textures/doors_trapdoor_side.png | Bin 191 -> 122 bytes .../textures/doors_trapdoor_steel.png | Bin 221 -> 220 bytes .../textures/doors_trapdoor_steel_side.png | Bin 212 -> 136 bytes .../mcl_doors_door_acacia_side_lower.png | Bin 133 -> 131 bytes .../textures/mcl_doors_door_acacia_upper.png | Bin 205 -> 199 bytes .../textures/mcl_doors_door_birch_lower.png | Bin 232 -> 231 bytes .../mcl_doors_door_birch_side_lower.png | Bin 133 -> 131 bytes .../mcl_doors_door_dark_oak_lower.png | Bin 183 -> 182 bytes .../mcl_doors_door_dark_oak_side_lower.png | Bin 169 -> 139 bytes .../mcl_doors_door_dark_oak_side_upper.png | Bin 160 -> 134 bytes .../mcl_doors_door_dark_oak_upper.png | Bin 188 -> 185 bytes .../textures/mcl_doors_door_iron_lower.png | Bin 267 -> 265 bytes .../mcl_doors_door_iron_side_lower.png | Bin 267 -> 265 bytes .../mcl_doors_door_jungle_side_lower.png | Bin 132 -> 131 bytes .../textures/mcl_doors_door_spruce.png | Bin 396 -> 235 bytes .../textures/mcl_doors_door_spruce_lower.png | Bin 467 -> 264 bytes .../mcl_doors_door_spruce_side_lower.png | Bin 190 -> 158 bytes .../mcl_doors_door_spruce_side_upper.png | Bin 180 -> 160 bytes .../textures/mcl_doors_door_spruce_upper.png | Bin 448 -> 255 bytes .../mcl_doors_door_wood_side_lower.png | Bin 139 -> 127 bytes .../mcl_doors_door_wood_side_upper.png | Bin 134 -> 127 bytes .../textures/mcl_doors_trapdoor_acacia.png | Bin 212 -> 209 bytes .../mcl_doors_trapdoor_acacia_side.png | Bin 171 -> 143 bytes .../textures/mcl_doors_trapdoor_birch.png | Bin 580 -> 579 bytes .../mcl_doors_trapdoor_dark_oak_side.png | Bin 172 -> 123 bytes .../textures/mcl_doors_trapdoor_jungle.png | Bin 303 -> 292 bytes .../mcl_doors_trapdoor_jungle_side.png | Bin 245 -> 155 bytes .../textures/mcl_doors_trapdoor_spruce.png | Bin 261 -> 257 bytes .../mcl_doors_trapdoor_spruce_side.png | Bin 197 -> 165 bytes mods/ITEMS/mcl_dye/textures/mcl_dye_black.png | Bin 190 -> 188 bytes .../textures/mcl_end_chorus_flower.png | Bin 198 -> 197 bytes .../textures/mcl_end_chorus_flower_dead.png | Bin 190 -> 186 bytes .../mcl_end/textures/mcl_end_chorus_plant.png | Bin 169 -> 168 bytes .../mcl_end/textures/mcl_end_dragon_egg.png | Bin 200 -> 196 bytes .../mcl_end/textures/mcl_end_end_stone.png | Bin 186 -> 184 bytes .../textures/mcl_end_endframe_side.png | Bin 202 -> 201 bytes .../textures/mcl_end_purpur_pillar.png | Bin 174 -> 173 bytes .../textures/mcl_end_purpur_pillar_top.png | Bin 183 -> 182 bytes .../mcl_farming/textures/farming_carrot_4.png | Bin 241 -> 240 bytes .../textures/farming_melon_side.png | Bin 203 -> 201 bytes .../textures/farming_melon_top.png | Bin 224 -> 222 bytes .../mcl_farming/textures/farming_potato.png | Bin 217 -> 215 bytes .../textures/farming_pumpkin_side.png | Bin 199 -> 195 bytes .../textures/farming_pumpkin_top.png | Bin 232 -> 230 bytes .../textures/farming_tool_diamondhoe.png | Bin 236 -> 235 bytes .../textures/mcl_farming_farmland_dry.png | Bin 228 -> 226 bytes .../textures/mcl_farming_farmland_wet.png | Bin 228 -> 226 bytes .../textures/mcl_farming_hayblock_side.png | Bin 222 -> 221 bytes .../textures/mcl_farming_pumpkin_seeds.png | Bin 212 -> 209 bytes .../textures/mcl_farming_wheat_stage_2.png | Bin 194 -> 192 bytes .../textures/mcl_farming_wheat_stage_3.png | Bin 206 -> 205 bytes .../textures/mcl_farming_wheat_stage_4.png | Bin 195 -> 191 bytes .../textures/mcl_farming_wheat_stage_6.png | Bin 211 -> 207 bytes .../textures/mcl_farming_wheat_stage_7.png | Bin 204 -> 201 bytes .../textures/mcl_fences_fence_acacia.png | Bin 197 -> 192 bytes .../textures/mcl_fences_fence_big_oak.png | Bin 189 -> 186 bytes .../textures/mcl_fences_fence_birch.png | Bin 205 -> 204 bytes .../mcl_fences_fence_gate_big_oak.png | Bin 189 -> 188 bytes .../textures/mcl_fences_fence_jungle.png | Bin 205 -> 204 bytes .../textures/mcl_fences_fence_mask.png | Bin 111 -> 108 bytes .../mcl_fences_fence_nether_brick.png | Bin 183 -> 181 bytes .../textures/mcl_fences_fence_oak.png | Bin 206 -> 205 bytes .../mcl_fire/textures/fire_basic_flame.png | Bin 189 -> 188 bytes .../textures/mcl_fishing_bobber.png | Bin 2281 -> 2156 bytes .../textures/mcl_fishing_fishing_rod.png | Bin 2397 -> 2194 bytes .../textures/flowers_waterlily.png | Bin 365 -> 358 bytes .../textures/mcl_flowers_blue_orchid.png | Bin 219 -> 218 bytes .../mcl_flowers_double_plant_fern_bottom.png | Bin 364 -> 305 bytes .../mcl_flowers_double_plant_fern_inv.png | Bin 455 -> 256 bytes .../mcl_flowers_double_plant_fern_top.png | Bin 330 -> 292 bytes .../mcl_flowers_double_plant_grass_bottom.png | Bin 398 -> 341 bytes .../mcl_flowers_double_plant_grass_inv.png | Bin 385 -> 250 bytes .../mcl_flowers_double_plant_grass_top.png | Bin 315 -> 284 bytes .../mcl_flowers_double_plant_rose_bottom.png | Bin 244 -> 241 bytes ...cl_flowers_double_plant_sunflower_back.png | Bin 294 -> 293 bytes ..._flowers_double_plant_sunflower_bottom.png | Bin 247 -> 242 bytes .../mcl_flowers_double_plant_syringa_top.png | Bin 219 -> 214 bytes .../mcl_flowers/textures/mcl_flowers_fern.png | Bin 358 -> 323 bytes .../textures/mcl_flowers_fern_inv.png | Bin 561 -> 309 bytes .../textures/mcl_flowers_tallgrass.png | Bin 337 -> 295 bytes .../textures/mcl_flowers_tallgrass_inv.png | Bin 488 -> 280 bytes .../textures/default_furnace_bottom.png | Bin 191 -> 190 bytes .../textures/default_furnace_front_active.png | Bin 300 -> 289 bytes .../textures/default_furnace_side.png | Bin 229 -> 228 bytes .../textures/default_furnace_top.png | Bin 191 -> 190 bytes .../textures/mcl_hoppers_hopper_top.png | Bin 175 -> 172 bytes .../textures/mcl_itemframes_item_frame.png | Bin 232 -> 231 bytes .../mcl_itemframes_itemframe_background.png | Bin 225 -> 224 bytes .../mcl_jukebox/textures/mcl_jukebox_top.png | Bin 193 -> 188 bytes .../textures/mcl_mobitems_bucket_milk.png | Bin 226 -> 225 bytes .../mcl_mobitems_carrot_on_a_stick.png | Bin 321 -> 306 bytes .../textures/mcl_mobitems_rabbit_hide.png | Bin 215 -> 214 bytes .../textures/mcl_mobitems_slimeball.png | Bin 218 -> 216 bytes .../mcl_mobspawners/textures/mob_spawner.png | Bin 223 -> 222 bytes .../textures/farming_mushroom_brown.png | Bin 168 -> 164 bytes .../textures/farming_mushroom_red.png | Bin 235 -> 166 bytes .../mcl_mushrooms_mushroom_block_inside.png | Bin 184 -> 183 bytes ...cl_mushrooms_mushroom_block_skin_brown.png | Bin 184 -> 181 bytes .../textures/mcl_nether_glowstone.png | Bin 196 -> 193 bytes .../textures/mcl_nether_nether_brick.png | Bin 191 -> 189 bytes .../mcl_nether_nether_wart_stage_2.png | Bin 202 -> 194 bytes .../textures/mcl_nether_netherbrick.png | Bin 186 -> 185 bytes .../textures/mcl_nether_netherrack.png | Bin 209 -> 207 bytes .../textures/mcl_nether_quartz_block_side.png | Bin 360 -> 212 bytes .../textures/mcl_nether_quartz_block_top.png | Bin 360 -> 212 bytes .../mcl_nether_quartz_chiseled_side.png | Bin 467 -> 237 bytes .../mcl_nether_quartz_chiseled_top.png | Bin 387 -> 216 bytes .../textures/mcl_nether_quartz_ore.png | Bin 253 -> 250 bytes .../mcl_nether_quartz_pillar_side.png | Bin 321 -> 199 bytes .../textures/mcl_nether_quartz_pillar_top.png | Bin 471 -> 220 bytes .../textures/mcl_nether_red_nether_brick.png | Bin 202 -> 201 bytes .../textures/mcl_nether_soul_sand.png | Bin 187 -> 183 bytes .../textures/mcl_ocean_brain_coral.png | Bin 317 -> 271 bytes .../textures/mcl_ocean_brain_coral_block.png | Bin 349 -> 277 bytes .../textures/mcl_ocean_brain_coral_fan.png | Bin 306 -> 252 bytes .../textures/mcl_ocean_bubble_coral.png | Bin 327 -> 270 bytes .../textures/mcl_ocean_bubble_coral_block.png | Bin 365 -> 287 bytes .../textures/mcl_ocean_bubble_coral_fan.png | Bin 322 -> 263 bytes .../textures/mcl_ocean_dead_brain_coral.png | Bin 311 -> 271 bytes .../mcl_ocean_dead_brain_coral_block.png | Bin 356 -> 290 bytes .../mcl_ocean_dead_brain_coral_fan.png | Bin 301 -> 252 bytes .../textures/mcl_ocean_dead_bubble_coral.png | Bin 321 -> 270 bytes .../mcl_ocean_dead_bubble_coral_block.png | Bin 359 -> 287 bytes .../mcl_ocean_dead_bubble_coral_fan.png | Bin 316 -> 263 bytes .../textures/mcl_ocean_dead_fire_coral.png | Bin 348 -> 301 bytes .../mcl_ocean_dead_fire_coral_block.png | Bin 372 -> 292 bytes .../mcl_ocean_dead_fire_coral_fan.png | Bin 288 -> 246 bytes .../textures/mcl_ocean_dead_horn_coral.png | Bin 329 -> 275 bytes .../mcl_ocean_dead_horn_coral_block.png | Bin 352 -> 277 bytes .../mcl_ocean_dead_horn_coral_fan.png | Bin 309 -> 260 bytes .../textures/mcl_ocean_dead_tube_coral.png | Bin 338 -> 282 bytes .../mcl_ocean_dead_tube_coral_block.png | Bin 362 -> 290 bytes .../mcl_ocean_dead_tube_coral_fan.png | Bin 314 -> 256 bytes .../textures/mcl_ocean_dried_kelp.png | Bin 414 -> 277 bytes .../textures/mcl_ocean_dried_kelp_bottom.png | Bin 364 -> 290 bytes .../textures/mcl_ocean_dried_kelp_side.png | Bin 360 -> 291 bytes .../textures/mcl_ocean_dried_kelp_top.png | Bin 364 -> 290 bytes .../textures/mcl_ocean_fire_coral.png | Bin 338 -> 288 bytes .../textures/mcl_ocean_fire_coral_block.png | Bin 377 -> 292 bytes .../textures/mcl_ocean_fire_coral_fan.png | Bin 290 -> 246 bytes .../textures/mcl_ocean_horn_coral.png | Bin 330 -> 275 bytes .../textures/mcl_ocean_horn_coral_block.png | Bin 353 -> 277 bytes .../textures/mcl_ocean_horn_coral_fan.png | Bin 310 -> 260 bytes .../textures/mcl_ocean_kelp_item.png | Bin 396 -> 235 bytes .../textures/mcl_ocean_kelp_plant.png | Bin 2291 -> 859 bytes .../textures/mcl_ocean_prismarine_bricks.png | Bin 220 -> 218 bytes .../textures/mcl_ocean_sea_pickle_1_anim.png | Bin 579 -> 349 bytes .../textures/mcl_ocean_sea_pickle_1_off.png | Bin 422 -> 281 bytes .../textures/mcl_ocean_sea_pickle_2_anim.png | Bin 581 -> 352 bytes .../textures/mcl_ocean_sea_pickle_2_off.png | Bin 430 -> 287 bytes .../textures/mcl_ocean_sea_pickle_3_anim.png | Bin 571 -> 346 bytes .../textures/mcl_ocean_sea_pickle_3_off.png | Bin 440 -> 291 bytes .../textures/mcl_ocean_sea_pickle_4_anim.png | Bin 529 -> 332 bytes .../textures/mcl_ocean_sea_pickle_4_off.png | Bin 427 -> 284 bytes .../textures/mcl_ocean_sea_pickle_item.png | Bin 456 -> 312 bytes .../mcl_ocean/textures/mcl_ocean_seagrass.png | Bin 1547 -> 759 bytes .../textures/mcl_ocean_tube_coral.png | Bin 338 -> 269 bytes .../textures/mcl_ocean_tube_coral_block.png | Bin 364 -> 279 bytes .../textures/mcl_ocean_tube_coral_fan.png | Bin 309 -> 243 bytes .../textures/mcl_portals_end_portal.png | Bin 1062 -> 1058 bytes .../textures/mcl_portals_endframe_side.png | Bin 202 -> 201 bytes .../ITEMS/mcl_signs/textures/default_sign.png | Bin 243 -> 241 bytes .../textures/mcl_sponges_sponge.png | Bin 177 -> 176 bytes .../textures/mcl_sponges_sponge_wet.png | Bin 177 -> 176 bytes .../mcl_sponges_sponge_wet_river_water.png | Bin 177 -> 176 bytes .../textures/mcl_stairs_stone_slab_top.png | Bin 212 -> 211 bytes .../textures/mcl_throwing_ender_pearl.png | Bin 213 -> 208 bytes .../textures/mcl_throwing_snowball.png | Bin 212 -> 207 bytes .../mcl_tnt/textures/default_tnt_bottom.png | Bin 274 -> 238 bytes .../mcl_tnt/textures/default_tnt_side.png | Bin 339 -> 286 bytes .../mcl_tnt/textures/default_tnt_top.png | Bin 380 -> 317 bytes mods/ITEMS/mcl_tnt/textures/mcl_tnt_blink.png | Bin 151 -> 149 bytes mods/ITEMS/mcl_tnt/textures/tnt_smoke.png | Bin 945 -> 126 bytes .../textures/default_tool_diamondshovel.png | Bin 243 -> 242 bytes .../textures/default_tool_woodshovel.png | Bin 225 -> 220 bytes .../textures/default_torch_on_floor.png | Bin 147 -> 146 bytes .../mcl_walls_cobble_mossy_wall_side.png | Bin 684 -> 302 bytes .../mcl_walls_cobble_mossy_wall_top.png | Bin 588 -> 288 bytes .../textures/mcl_walls_cobble_wall_side.png | Bin 527 -> 259 bytes .../textures/mcl_walls_cobble_wall_top.png | Bin 414 -> 263 bytes .../mcl_wool/textures/mcl_wool_light_blue.png | Bin 204 -> 203 bytes .../ITEMS/mcl_wool/textures/mcl_wool_lime.png | Bin 204 -> 203 bytes mods/ITEMS/mcl_wool/textures/wool_brown.png | Bin 204 -> 203 bytes mods/ITEMS/mcl_wool/textures/wool_cyan.png | Bin 203 -> 202 bytes .../mcl_wool/textures/wool_dark_green.png | Bin 204 -> 203 bytes .../mcl_wool/textures/wool_dark_grey.png | Bin 204 -> 203 bytes mods/ITEMS/mcl_wool/textures/wool_grey.png | Bin 204 -> 203 bytes mods/ITEMS/mcl_wool/textures/wool_magenta.png | Bin 204 -> 203 bytes mods/ITEMS/mcl_wool/textures/wool_red.png | Bin 203 -> 202 bytes mods/ITEMS/mcl_wool/textures/wool_violet.png | Bin 204 -> 203 bytes mods/ITEMS/mcl_wool/textures/wool_white.png | Bin 204 -> 203 bytes ...mcl_fences_fence_gate_red_nether_brick.png | Bin 192 -> 191 bytes .../mcl_fences_fence_red_nether_brick.png | Bin 183 -> 181 bytes .../mcl_stairs_andesite_smooth_slab.png | Bin 194 -> 192 bytes .../mcl_stairs_diorite_smooth_slab.png | Bin 211 -> 209 bytes .../textures/mcl_stairs_gold_block_slab.png | Bin 190 -> 188 bytes .../textures/mcl_stairs_iron_block_slab.png | Bin 190 -> 189 bytes .../screwdriver/textures/screwdriver.png | Bin 357 -> 245 bytes .../xpanes/textures/xpanes_pane_iron.png | Bin 191 -> 189 bytes .../mcl_player/textures/player_back.png | Bin 313 -> 307 bytes .../mcl_skins/textures/mcl_skins_button.png | Bin 2010 -> 1876 bytes .../textures/mcl_skins_character_1.png | Bin 5505 -> 4824 bytes .../mcl_skins/textures/mcl_skins_player_1.png | Bin 2625 -> 2237 bytes .../textures/mcl_skins_player_dummy.png | Bin 982 -> 973 bytes 515 files changed, 0 insertions(+), 0 deletions(-) diff --git a/mods/CORE/mcl_particles/textures/mcl_particles_bubble.png b/mods/CORE/mcl_particles/textures/mcl_particles_bubble.png index c64ceea39088ba890107a6c0adf686899539f8bf..3370a6986f98d12de258df067e7ace745aff54b9 100644 GIT binary patch delta 89 zcmZ3*zM64@G82Q@L{%%FLPJBt!otGC!y_UhA|oTCqN1Xsqhn%XVq;_D;^N}t;}a4R z5)%`Xl9G~>lT%VsQd3jY((2RF)6+9DGBPtWv$C?Xv$Jz@a&mKX^YZfY^YaS|3JMDg zi;9Yhi;GK2N=i#h%gV~i%gZY&Dk>{0tE#H1tE+2jYHDk1>+0(2>+2gD8X6lLo0^)M zo10r&T3TCM+uGXN+uJ)jIyyT$ySlo%ySsaOdU|_%`}+F&`}-$Mm{31);>1alCQY6^ zdCHV2Q>RXyHf`GU>CHEY+dUAJ!C`t|EKY}l}Ic$dMyQj~+dC?AY<+$4{I%aq{HJQ>RXyK7IPknKNh4o;`Q&-1+n8FI>2A z@#4ixmo8nteEG_iD_5^xy>{)|_3PJf+_-V`=FMBTZr#3p`_7#^ckkZ4ckkZ)`}ZF_ zc<}Jy!$*%EJ%0T7$&)8fpVmKp_Uzg7=g(ifc=7V(%U7>ny?*`r&6_uG-@bkK?%n(M z?>~I_@bTlvPoF-0{`~pNmoHzxe*O0C+xPF^fBg9I^XJcBzkdDx{rk_KKY#!J{rB(R z|NsAw-LhZGz`$Ty666=m@c;jRhV1O@|9C(kirl(&>(=opG0k9LU{LXNaSW-Llbqnd zBr_*QK&oTs0+Sg>Iny|tTn_RWcnc`$b1Y#Le#o#VW8Q(i3=9kmp00i_>zopr0D`pj Aj{pDw diff --git a/mods/ENTITIES/mcl_boats/textures/mcl_boats_acacia_boat.png b/mods/ENTITIES/mcl_boats/textures/mcl_boats_acacia_boat.png index 3ba00911738d6d7b444dbff2ddef510b7f09c5e9..40f767c351f61b5b3707e8457fb5c6f194725d04 100644 GIT binary patch delta 242 zcmeBVYGRroQP0B6z`*eK?xP?E1_rGFpAc6D1_m7+o!L=ZduCPq|Nmb{N2kp~=(5F@!^w^`IkH zlY>OtLw-)Hz-sAxFIegms?#rRGfJ*j+|#h~f>qA_P0ZO>cz5}pUo6U?;MrirxZ(XA zh6;1PH)m=x)%Y~e9TdOyqvT)frs*^9#)q-Q=3Nz<_HETQ`S!w>(MNB-Ixb>;b-v=# u3a6{(62Dj8UR7nr;P;xt(t@+d^QQcQMS5Q(_NN>LIm^@4&t;ucLK6Vzz+pxJ delta 249 zcmZo->SUTAQP07~z`!8?`F|n<1H%PR7srqa#w3Qu|Ns9_?k!|oWOAnOlG534V)Bds zUtW~^-}&bf$qlJ)pZ{k+FZ;(X)pVOdR(9_H7dx(aO80F%p={zT+MLsnXi%TF>-PVp zOC1d?Qw|>};;BvxW#Cd}7G_9PU@HrqUZ{F~GV?o5)oV^u{`(gtpS=rio_6W?1{J&SswZ!B z3NDLac9Gcf!cDBp_Lt#_9YW_msBKb865Z^_Hos+m>p||YW~KAzo4B1A7#J8lUHx3v IIVCg!02i@w?f?J) diff --git a/mods/ENTITIES/mcl_boats/textures/mcl_boats_birch_boat.png b/mods/ENTITIES/mcl_boats/textures/mcl_boats_birch_boat.png index ac0f3dc1b5f86d86f63161f37faf0b5579b6f8d9..fed5be7cc041ee6f763d63fc4591c15a2fb1e7b7 100644 GIT binary patch delta 242 zcmeBRYGRroQP0B6z`*eK?xP?E1_rGFpAc6D1_m7+o!L=ZduCPq|Nmb{Mp@4Z zCI^YOhy0vYfz{IYUa-_BR3D!*%_zB=^BL1Jr`H>#uk6cCWq)C2+aJczpu%{H<-opj zrU$pJHX46kI@98aLHNE4$ButquQmD1n|~XXUKXvMp7nCwt3QPj)30crxn{HM!s<$1 v!#3en_YcolR=4`sO(u)A%ugPuoKQ`z-{_?;cD(j?HON_>u6{1-oD!MRQF delta 248 zcmZo->R_56QP07~z`!8?`F|n<1H*Yw7srqa#w3Qu|Ns9_?k!|oWOAnOlG534r!?mO zpWL2vmKn|0&g~S~t+1Yffq}Io$S;@y1P*1hZDe3zX!dk*4B?1QPAF_- zU{hcS^x;WZSKTe#Qn-!fL;)|auQxAmY5}LV{_Lsq#Bxq1%nF-VY;3!As-lTW$-9de zPWZK*dO1`3a`?1uhAqoneP?ep+0?W!CoJRIr>SmfCQP07~z`!8?`F|n<1H&ax7srqa#w3Qu|Ns9_?k!|oWOAnOlG5349_F9_ zw$_A{N1Iwh`-1B0il KpUXO@geCxFJ$6d~ diff --git a/mods/ENTITIES/mcl_minecarts/textures/mcl_minecarts_minecart_furnace.png b/mods/ENTITIES/mcl_minecarts/textures/mcl_minecarts_minecart_furnace.png index 7beaaa1c71597592d9f8b7510eeea7f676ae9e46..71aec1c7ceee3ed06f6553d09da8df60f3f906b2 100644 GIT binary patch delta 244 zcmeBYYGIlnQP0B6z`*eK?xP?E1_pxwpAc6a9UWU++yDRn%gD$mD=R~|o}Qk*j#iO= z?%4^EEYFfcTDx;Tb#$R-Q0 zFe|FEIXeFQ|NdS*li|I2_iFPd3pG!=x4Zm*eJ*cOZosFRJF}jyTj|EL>f+tqSvlDQP07~z`!8?`F|n<1H&~>7srqa#-t5fx2j71|NmdUZ==?YEs0<2CFYr@ zTk#w|`ay~z=*IQSANMca__Dsz({MqE(J@B_mPISr7cQPFd?Qkl>+SZ<-~WAmb$Aa$ z%aJu=_RI$V&%W8vWh-z^dBOdN%yp~g^{-`8T9n1`WKQd6MO?{`Qi(?3fY;uA?5(ASf8(W%svO<7KLV|Dqix)FiZE9%LuDyKi>a8wD zo;&XXjnn-?=Nveo!xFSO>A(Tyk{h~5mpx%%UVmBk{^Ru1dIldXZOgQ_YgZpQFoz{* zaoT|cGv&5!N?vt~iS6AN-`(4@R_8EC?I^l-YN-|@&!2by8y!B%GhaF2#LU)V%q7Vn YmZ}vdf4tg(fq{X+)78&qol`;+04KjjS^xk5 delta 169 zcmbQmG?!^YO?{82i(^OyV{(E(5(ASfn_3!kvO`q7aYz@j`6MKnOi1yccS7aBf#+Xtth}@C4I^{0kVo$< zM&|UYE2sKaW^vD$A)(Y#viz@b!UL~(%j~B?QyJLmzW;Yv@I$Hb<>^de1&)FStHl!- a8Q7#$#q8Mqk1;SXFnGH9xvXi(`m{Bd6MO?{`Qi(^OyqfZ~JlZzpbi~78H=lAttSqJuI)i4M=KGf2>LGJdpW{(=B zP4-R+eVqE=xRN|}k&Q;gJ<&*xr7cUs<*%rtpi^11741L9?|Hscfb&yp@np3lZ%QZ8h*@f4q zU+UTAi#s~fRO7)H8CctzoUbIF*5c Ofx*+&&t;ucLK6Vk)kB#8 delta 161 zcmeBUn#44rvcARB#WAFU(YLRa@u&fZ3;*)G-{+$i{`|D)2cv>p^Gdly*Tkm^Li+_* z_6y8-+$R5uHArbUyZ16JwReGEbSh*mc^+H%Ng8d}JiN*0^^Vr}XASRtGbwqpBo92^!5~w{B628J QhyesVUHx3vIVCg!0J79U-v9sr diff --git a/mods/ENTITIES/mcl_minecarts/textures/mcl_minecarts_rail_detector_curved.png b/mods/ENTITIES/mcl_minecarts/textures/mcl_minecarts_rail_detector_curved.png index b5dabcc0174852dfb9c7fd86a4beca7e6e4e668d..cb7c10575b1d891962a51993ba92c6dbd51f67c4 100644 GIT binary patch delta 145 zcmZo>YGRsDSzqGm;us9B$Ti@{B9XNyN$UjF|d#mT_Hu;U#!L&)n;hLH6t zjK@|-%`RkKlV!YvaaHR3!@Miz{jHl{e79lV=bCdr8CRH{-+cZvcfiK)b;rK5hRlC+ zTq?QIOwrRw=u4-iy7t-t$A4-sO#>XW6~D&*Pq@aMIOTupbOr`41_n=8KbLh*2~7Z` C8$T2P delta 146 zcmZo-YG#^HSzqeu;uuoFm~?=fA=HPJ>4*WxVs740zi7SVWgzL$kD^5q{6b}_LN+hZ;*cI|9J}u!IbD~Jx#YzTl1_lOCS3j3^P6 diff --git a/mods/ENTITIES/mcl_minecarts/textures/mcl_minecarts_rail_detector_curved_powered.png b/mods/ENTITIES/mcl_minecarts/textures/mcl_minecarts_rail_detector_curved_powered.png index 2a9cc60297ee6122f60f52036c63689438d448a7..8ee6ce3b354b2e40e89df70969ece11b087573da 100644 GIT binary patch delta 145 zcmZo+YGRsDSzqGm;us5zf|%Z3-aJWF+te*Rx?%E-XL5cl4mAz*DdW5C`? zEE4Wp%^tJtSatRR%Zh1_ot|M$)R45HPw*M7)3d_5Vp z&QR}ynu@1elbzx7Ctlhi6TYkLWz)*gU9#^w|Jpw0A8c$@Cm9&H7#KWV{an^LB{Ts5 Dnbkg9 delta 147 zcmZo-YGImCSzqSq;uuoFm~?VQ|;n`Rtp7)9anv3Yn*bRc(B^zC|IZOJ(yG zW~ptb-b(Cr&2!+$_6?B{RQj`)LG}$($aSwXTNu{%G5=utwq1dTfq{X+)78&qol`;+ E0F6{UmH+?% diff --git a/mods/ENTITIES/mcl_minecarts/textures/mcl_minecarts_rail_golden_powered.png b/mods/ENTITIES/mcl_minecarts/textures/mcl_minecarts_rail_golden_powered.png index c118032ef4b90b476b7ea791eb7950ef184bb3e9..5277e24ec417162bef0b954fd836400349fb2691 100644 GIT binary patch delta 151 zcmZo<`p-C_puWn}#W6%elJ%gYpR=I=tHFLxsTCnd{^oP8?z*qm+$-YHx`@Hy%oCmy zzf){a_kNYyeQfKT>64V@)4xR~I=y1F$qLw);b~yF^wxLb6}eiUtZ#@-nSbcs?7HM% zcQ(J@#ri#6^OwHqx2t|WzUzgJ#l?GA0}>ZV7g&oh9I*dCM<-37WRvCx1_lNOPgg&e IbxsLQ0GF&mQ~&?~ delta 153 zcmey**vK@YpuWb_#WAFUF}I(UiOG8~p&Xj+*ttNB026oI3_Z9A;i@7R69*<+!{ zvZWcSY43Xr14_Ck7WOboKYJ`EarnVZzG9A#KRn;f&6VktesV{Mxjbz?Pb&ih1B0il KpUXO@geCy{??V6p diff --git a/mods/ENTITIES/mcl_mobs/textures/mobs_blood.png b/mods/ENTITIES/mcl_mobs/textures/mobs_blood.png index aa4a6123ca3489c6444c5838ebeee5e55613507b..ebda3703f7f1c020141d04125656a9a92ff16d4f 100644 GIT binary patch delta 61 zcmey*wuy0qG82RGL{)R?`y%bk3=9m6B|(0{3=Yq3q%kls=z6+1hHykrc45{Qm_FN> RlYxPO!PC{xWt~$(69D~s5E%df delta 765 zcmdnQ_@8ZpG7~eyL{;NK*pnsUX zhKGg5`ZY_RK6x-R$Dt@d_vG<|O)+N1YLYE=<&*n57)~lOwDVv1{HJ=?1B0&pvMC!R z6W8$AP7{n-9336qc2dg1!XmPrpU-b@XGXA}l~HQ0w1t++?Y%vrL6W!Yb0g2Ks%>pl z|G$c%C6(cSEJKYMLwjycMqogoyw_vhC7*WULHq6!rZr>|Hd>48%41 z3>>!l`p&j=DNr=m^_%EZRlmtHb+)2ajgF2^dXP(?gQ=&dr>(7Rtfx(3l)Iy;wxpya zgWrD!&8GkV|Cf}Ml$Ms3m6es3mseC&R9042RaI42SJ%|k)YjJ4)z#J4*EcjYG&VLi zH8nLiH@CF3w6?akwY9akw|8`Obar-jb#--jclY%4^!E1l_4W1l_t#IDFk#}viIXNx znml>(lqplDPMtb!+O+A@r_Y!%W9H16vu4ejJ$v??IdkUDojY&dy!rFzFIcc(;lhQB z7A;!5c=3`YOO`HOx@_69<;$0^Sg~T|%9X2Dty;Z$^_n$n)~;Q(_7CuwmoI zjhi-Y+Pr!5mMvShZr!?V+qUi7x9`}oW9QDDyXtrC+P!=Co;`c^?%lg@-@g6(_a8WL z;NZc7hYlS&eE9H@BS(%NJ$mfevE#>&pEz;i~6(;NioEj~+dG{P^*cCt**XK7IP^*|X=*pTBtV;^oViuU@@+{rdHrH*em)ef#d+ zyZ7(kfB5j>@ q@87@w|Njf5eT$u#Aj(uRXJWawz>2L~=P@uaFnGH9xvXd711SbnK0|Ud`yN`kk{ba4#fh)x!0VPaDdD`hccVPSO*I?a5L z=U~UT5RSupbtMlK_!hUVFf|3_Wb=sUAA*40)r(K%FMa;qzipgv)AVNa_gn{rMabc4Ni#@7VJLy_Fb+> zj)P(H>+MVTu0OPkpOr@-_>A&T#p5x~jLb)V-Z1#fTj#KFW`fXG#}NHVS!){OdBfH- QFfcH9y85}Sb4q9e0L=+*ssI20 diff --git a/mods/ENTITIES/mobs_mc/textures/mobs_chicken_egg.png b/mods/ENTITIES/mobs_mc/textures/mobs_chicken_egg.png index 9c6545452135bae93d5776a8126f021ded1a71e6..65dd01de6c58fed95454c9360b7aea0564d32c89 100644 GIT binary patch delta 153 zcmdnMxRP;#L_G^L0|Ud`yN`kx7#O4jd_r6q7#J3mdu?tHJvcS#(DamxD@&g4Z1{9) z+W))j0&Z+BVPIfjED7=pW^j0RBaMN9!N$|YF@$4ga)JV%fwqI>GPi)n4GA3r*>0;C zT$brv6+C0$&F{xz9CF!->mbj>fbtHJ#a>)4hRq8U!m1hW-WFoNzU|(hH4F?444$rj JF6*2UngBd|IRyX! delta 160 zcmZ3r>g!x zX~eSZ=gV_!pLiNG|J9ev-kHGqH15CWroWe0W+t39VCM7nS3D;$fzhB>!8sw0;bW%} z!;|nC;uCV&CEcblD!3}}D)gS1)%lI-jKBnMhglBm6g-VLDV~t5_@GwKuz$-6@81>= S6@8M00(?STd3kx|c%5;A1Sba@0|Ubm{(apO6@9WoJzX3_G=gLM4stRWaw22WQ%mvv4FO#ob>Fl+z- diff --git a/mods/ENTITIES/mobs_mc/textures/mobs_mc_arrow_particle.png b/mods/ENTITIES/mobs_mc/textures/mobs_mc_arrow_particle.png index 1d0cd9b1c918a7587048b647b74a9e693de262b2..40af172ba705e2a3bd4a3658058b3dbebd77b240 100644 GIT binary patch delta 112 zcmdnRxRY^0KxT-ii(?3fEbGC8oQDkr7!JCwN;t3SpuUsg_=Nf$6WDm(?H4`Yu*zW- z*?YcQgQ3;%-2b?t#}%4m#VC`JSJ^D<%h&2z1;8r@=sjkO=jkN zvhDB2S=?qKwbN2P)%az-lh+>IzV)tWpw(}q>+!h{9)Aw6zf!t$dhhg|^)(j43$8?( zUEa&+8e49$ASvw0*LzY6{(O4Map2)~#yExv$^AEE5SkJW>hNhl5wuYtP+F9l)AD+uPOt)V9oFU`R3+4_b2GNe2A=epS$dJIw@5LRgxT5I$u%a( zbL2MtD&EYKFyCQyF(2RjHyrg2saC;t4>L=d8dz=RkMP|8(|Vb){lyG>B?fket?Vlp z4;*FCVmTqk$gpr##W(fGW+GGF#26aBm-9EYGcoYRXYm%gPfgu<`(w)*MhW)=3Nb=g zISw>^Zhdrs|0dIenhj5kT`p|mJLRL#*zxn^r!T1$k%uH-wUpbi%JSSj=ol+fZ+hy% zf9ntR4F~#z!jyJA*~EHoGW+ux4O^I91egl`Nba5bEp|DBkKI=`xi6Xwv;J8&SgyYQ%171xBvC9_{MILS*yI|K_kC<>=c{=xHFChj@& z0TF=%H#n2IFT5~yQ)M}LW5V52oJW~l532;*?Dy-}-{0jun)`v}!0p?u3~qrKbod$;e_4P8rk*(by zjJP$fWim4qRocZ`hu1S(+GTldRy+SW+V7zM28Q%y>g@VfF?utqgAHyb&EMYe^h@}K z)yKrz>TO+r#rm%2W>__I-yaVnC0~;YZQc)!|L=HAV_c;rk!}-Je2OWcO@QGBBjW-y z$r^@a0lxj#hdFnO89cUHyXx8AF9)4er5N8xzYb?Swm_J{;#F7ozJr`+dv>1f)C>q_ zc>0*(*aAU@EeB%zx2L`pd))12yO8w=I}5{K-mruIR^9c6FYYm%npDT8z~sGiKBEHL z-MdUr?h7%#xUi5lZo_kF&-?ZI+*gDZxnR+Y|?d;Vj0YUzSlhK|-P+j%Zr|JL)eG4{gyG=?P;?sKs-pQvw6dR}mzgMICN z+bzB9A7ptRR2`aTTF-ys&iyUL4F8*E++g}-U%>sk;&PYDx`pT&xKWrhr4K9;dBmG3^T6&?>!MpUEOD>jIAtL*MQ@Zy9Bn zcStyhiQZrT&ic=`x~$2O+G{=C>i>#tNoVTGExPkpY?5GGNKc%igCIwoao*%z9EE&E zxkgD1CzwvpZsKOxHt|bk=W++RhjSSXww~OQ&SQ|WKtVrHWlE3=+W~3Y`oF(qR`J|^ zUFFoE_=}}dbIXAVJ^vUS=1+Ix=6U%;kD-#|!DpfADJhJ96dmU&{+`|FV$Of-byd9| zLqVJq!$yYyVZG%uO>Mau_9!jf@}ijWnh{Gw_euumCd2N3WredJ-Ag)eBKbAjz{4xz zHqX>MZg&gcx+<@0Z+;t<-T!7Ux3&75 zD~M^yv+%WIF#WGD$X$afY#TmLKSnrzJiEB3z}4cX0l2i-ZpR6O)z zxRjOJuz`Q#{c{)IGckBG+(?%#7Zi&v;%=Db)3e!-;e*YBE-}U%a_d&+b2Dt_wBl%p zT_|?AI$e2#+Kz_w=Iy!D=5LK>cGw*d{+l;PHZPUE=S9=K{|j9#e{y7sGUWfy-rv6} z*Z7D+{LFec@f&gz=F7)y=d!qQh4qe@PXEO|CxP08Kc$z}{AFd0SKR;pYPNiWp3N#< zu2VZFlyL3uJuLFXy!`M_rH(hh|9*^*3}Y&(j}&rX@?hXpU{q;fnZQ7p^QW}oKjZX_ YHyQ%v!l~C77#J8lUHx3vIVCg!07#zXM*si- delta 1950 zcmeAa>y_Bh#!}B-=;`7ZQW5ud=If-{76Pp=kLGz#+u?n^G-AW#UB37K^WH2z$HT-~ z<9+L$eC@`KCJoOrOeQVRty-KttL^@>!o!@Wvc6vH7QAiBcm94`(EadUhD|#1 zuU6@VFO_EcQ2hN*&5?G;<*B>xR-ERluaA4VI`r?ev(oFAMDSI(8ZP|5+uM?1{aNdZ+}mPD z%YBs=#DuOk^4YV>M)^R(Gv>1lzqiWsv3L2L+5a~vaErhOZl*GU3&)s#JfHemP~yUk z;xDr1%p4uBTA23L^D{-1FnavhwQ9q=DW$RYHZNZNl45*gX!t$2ec35(zl#b#mu;y( z;oQwIi9cA*dBdSEn^(UME%juuG5*uFr!L@wvC$)Ge#icG+cn<2d;hR}yRosudO?OI z3J2bpM^^?OSS#|ypY;=;U>UR_ zmP3JITGvt|_qv7?tqmd5F7c6F2=kO#uvTo~Tkq2oJeE9sFlhLDEKU1jcrCHad8Z%)=uS)B^*|+byCv3IccQ$E3{06qpql!P8 zI5xbG{k`s}`_Z3=FLC;K%Jiwu4xW-D>1W7l!5#5uE_TO5p79+O7bosUOJGOh9Eq4h2$iu|g!OZ&LW_`*T#&wQw_GuN1O%C8^ z^mIG4<*r_O=EVn|CPD=-W*KnrV4Ev=ATE2QV&2EPV-MptS#})oY1n2r_o>tr4hPwa@BNIK0?v$WOw!tws*yLle6%SsK(&9}3(O)cmu zYWQBFdo4rMhk<9!n~#o+r83c1JgnO~ufAq|kR4f5{{7%ZPH%Q;xoJOlo0orh$F!tX z{NjP#CETym#~$oqJq>G(7;Cbs&BB1Sf@J*V@U zX4x*i^jYK9o4avm*?kV!Gcd`_{ZM^@EN|X|EbpeC69L{J+cxNQLo>2B7Z?ce1*MSVZ)?Oh65ano!R$nezf*017q+p z_sZt82m7zHD=@ zCWe@PwnabZTzUGCscvO5(}cEL&W{xrFsL1r7g*qFAbdbE;nh6_hM44;4Uq<|GaXdw z8#KLTC(AfEPY&O)MK7T3taeh~OoKnhcX@gb_#EI^|8da;UzVrw$_1U4QPuLxJTwhDTG_oicAs*JzmCvCL7W zfw#8m|G&xa*fRfGo%S%i$)NW8k_pq}v?J1&jy>y*PnPs#VR-9(nd5;s4&Fpee_iVft*n?Ica6Km9B%4gM~B9D5n>@?QE?I&I=ihTGFM4k#N`s-?KiSDyDZ z<)o0Y@B+_z2F9xRha3+C53v*&-Bq5zu}n8dVcq4ssop&1%6&E)OFcf^Z2R}N@RZTQ z%nKKm?`No6b8*SN@7E)eew;7iUh&?d?a`bB|M{Qt7Qf&-oct#7e0%;T_hW^>ZinZe zVOd^yY=gIfoy8u%1}WDH%e$%!{}#BsJH~u>>xN*4=WTii*}vC6e384CgJVIzn5|=C z{ekKZ%O`>PDtZlEl1h75oM5r=`0;UD+!2L@_5ddaD=V&q3BIgW=OQlOE31irs=8`# z9D|#%ok~OVtx}DRFB@1+*u*3(UTD>>S9^VDZxe4ogK6KVh)?l?@efj6ns>!%HYD^u zoFi_nYPLaUdyshS0qqy{a!D&*mu_zGJ@nspmg|$9w=y{|F*ZL|-F%yMkBHihEoSHA zw&f-NSbpnw_1m2{O17jF{mtINx^e;cp`RQ0nh!U+=f8HHQ=|1SIE69NL2LpmDb)YX e4g19Y^H0xsqtQ5P12+Q$1B0ilpUXO@geCw+%!qmb diff --git a/mods/ENTITIES/mobs_mc/textures/mobs_mc_dragon_fireball.png b/mods/ENTITIES/mobs_mc/textures/mobs_mc_dragon_fireball.png index 69e643b137e392c13a500cb44dc74f74e672707a..cee41904a049490b962ad55cd6d3f5e6fb3b51cb 100644 GIT binary patch delta 220 zcmaFGbdYI+1SbnK0|Ud`yN`klk%Xt}EegJjOj)0ee)8hSRYm@BySTo(^l=3V1eQH~xx zCr+(A9pk`rJyTLq@0bHycEpVAZpH}*b6)MaBY7mjz)aIHjloc&r&sa-kE%dGOMrtI ZgGaekuz4KYdjbe$;A^) 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 C=C@k_ delta 1826 zcmbOyI$wOlWR`liZ=NoWAr*0NXTDCFZ6VM)x6E_FGogZO>n1OI`Fp>LZF-u@gdMle z=KX)s%{+@Sv(HVupyS6%#0ETC34eZi@#OB(9G%fJ8Oz_8@Y z-={x{7&quxEwF#4##lLTd+5aHk$HR-B^(0JpFVypE3YxCeb8Q zuPoprBw5|JFENjSvC&teNR~LEHW$|C~u;bel|jvq5cbv(}4K4}&X zVfQds+WD8wiSfW0j+gfGOfEqToJK4sT6i6I2)<3N6k_w(zfoO`)7F$Xgvt)nQC~CGe5PzVf*$-#$P%Ini(t&!&$!HJsWyp z!GgsM?;M)u_lSJ>_3hiLYxM`GF?{&^_3iSg*D-owJ2=%BL<)X*eZ7gn=JA>%xB;|8dC2$qt9}FL$$ze{bN&Zdj4>h|D7dK5W8Og;^v^nhGGqdYYGh27rGd}MQxKxl6###FYueqxlFEqpKu?`g-=X7*e@!#F=^*n=gl-dR1nkcU4VE-C6QQ&5@$d_g6>)su7`Ri44t6IWmVqd!5qR>T4`>N;DVsaW+UFPq1}2JLCH%EIF4$gJCj5>Ay(~e2mNV zUcC`x_*UVzhV#J`-ZlrRLuS4e{yE$lhtt~(zV<{2HVDq(ka%DlCbC4x@n3C`#5@3TGatFY~RCEK^u z1E0L=@7&n((RN;At)#(=e(Bj}`;HrL&|sKoTF<;V-00U*Lk0838~2_|MhGTIN^ss# ziusyyPI!|>L;d#WZYuw6KiDWv^jMacqp(FX@3!zJodavv&V+ z;YIg()jjSPemSanPk#T?yT=w<@4kNH^UI#~$DXw0pV*N2A$*^qaLh4L*ZhO#YBK+P z8ce!e%6V_qZ?6bYdf3K%*z`j%!}Yd1P5iGOX5`*wWifDTp0}XD%3OB#5^nZycR3e0 zE#olvC}ZIh^1F5|)`Ibm5f|f&7YYrYVWKZAihb?x@!N$nxCtA&FtCeC&u9D8!BDtc zy2RwjvkOP>m*zb_z^36K?Ov&IGm;~JgVFtI72CGGbNXN0Re$uHss4xf_LyXjLze4Q zbKG?}DvUf;cYJ-%UcZg&hRP%Rg^{{Dok~8`m1}oxa(|eTd$;vBcjsO+Ce0752Ta$u zKHQ~Wxn}L|h&x^X^(Qr`C~$f(kwQuB*IDqso;k?2FzJ$!y9omW1B0ilpUXO@geCw7 Cc`Jqh diff --git a/mods/ENTITIES/mobs_mc/textures/mobs_mc_horse_brown.png b/mods/ENTITIES/mobs_mc/textures/mobs_mc_horse_brown.png index 2d1733af9a407fc20b97be919ef4cf31468a3ae4..ca978f6d6ca117d86c494047edf49219a19ab19b 100644 GIT binary patch delta 1587 zcmdlazDab$WR`k1PEQxdkcwMxXTDBaWF^pWTlZa>XR6|~%W46+cWeKLKRKfs?$Ud8 zTfI@J%H-XmwP8H71D7{S>L@$}mCn%+GtKE}?}Sx8!cmVP2>G zi{$9%O-y2q-V`04=39j$P{#SMyfMN@m4kP zF_dsABsJV%uI;y&+Q6aW>9q0q3;8p<7p^k-+_0@Koxv)Z!Q)3*(n3Ll%k!S!I9AWl z6;+P7Sz2H-PxusP}A%>%V$=SxY-|)_rP-VtcXWU0svReAC#p z*}K-|%QEdVvdyUYsQ2_u+s&O#C(pf-VaPpvL2a*9UKGO&yS;V{8zL|0TD|ORyS|0} z#gtryhIuC|8_ufDO1HZGtcCr+6AuQ1LKca}1J4<*DeNlTRjm$*_8rwm<~vpFgJ)TdHr!)?C#f<%V(-_Hg+=l$S|#O zjAv}nbYn2%W@fmuz@Pm>p5iXo6RR0a?LFuGo6N9F^4?nJe5--nBJnufw*J;XfJ5mYH$J>Q&8LRyo^AKqgO# z-}U)U1`F2SI1UE6gL(1Kb3bve*D~GT$Ktz1mZ6aE&G+B+|G#P2+`Fe)w%fM;^#%3rxLqnNhg})k?IOPf zi5+M-zq%x-qYR{b_5`6LswYm@GYIkfq(7a;(8hQMq|EZllW?cA)kj1a*sFg1{jF&x zx&5=r^r{7qy$^~ryU2BPy_n9J@tkol1H&X9xvif~A{nkR3m*8_Q*dtnn0eRM<3<(RC|96;I;83UjHuKcQGYnfIg>vVMsMxF2>y$2> z{E};@@#5RZ`VMn!KenY_Hn5eq=CZ7Dsl>wW+mC|8cO+Zwxw=E3fsNH&+O}`;R`U&S zUo<>3c_GMfovpM{yoSFooM}R6s``rFq~?k%f(=RxS2WLR9a^Nfo#DlaqY}Lg2MQg8 znVB}&C)5{2Gju##A=wbTaC6`HlWqxWuj&t6TwvCAE=HVb7c&z>J@f6O+cz;PzkKjX z{?wO~?jDg0HNWNMPM4l~?>=?Co7&3-G79$gJMu(tByC>y+&HA{&B-?pzOGySw|4#M z+J;IV1smbQ^nYf0mXYP`w!1Iee@`o WB8z*v6Brm67(8A5T-G@yGywqpCA(k% delta 1845 zcmdlax=DP)WR`k%PEQxdkczmsGhZjowh(BY%eLJ_MQ__-wHtnScGUh4PdPtRl2c_} z+2-5!R)r463TKyJWSz5S*5Sn6xw8)EZGZee@4Anc{wDpfC95u-`771lZyugCi+%mp z=`kH!tUAP)r?^gwoTzmsMmgZ}p8duf*gh3LXDGX^yI7A+V}FTpK>f2Up$C88%E~h^ zEX_1~-OkH$dXe*& zi_o@~e-&%X6Y%Kx6mi!`(N@NWC3|*jJBCiVm4A+L(FZMtZx_<`Zhs;0cjGgLu4P)Q z4)p|th6*uwgf3M+Z`tre=*4D+daoA!nq$nNl{4?(O^plzV|rbx@q6{-5d(% zyL7&DuYa(jy5SP9qauUWxf+kKhIwC)Jam{S9Q>@~GFM`GH2(%x2U(^M$9oKzMUT}p zI8R7sY4TJ`K7Y}CrZkg7LNJSfX2TQ_2H|}=J1#zXk-4;1XE#GclSGq_Gt(cdg*TGD z4wo})O_f}Bm2dL;)l#1Wj2liKmvAYF)!DqroF%4pE{}rIW&N4cg}KUH=lltcej4Vu zxwgtF#!k%Vg{e@3CP(6&tJBLFN;n)EPe0pL@2Jbb%3-XSSNX!WzWB9Lj4XpRla4d< zg!Vvpqt8n&Ka;q?;t>8qz3Nnn!oy3MIZQKTtXNvlGUmBl&r)nqY2NwZQF_=01;g(X z`27N874CLC`KB$xECBX2T!gB1?L8z8v-rT7lV5J4>?@QU*q}4i{;_H35v{j z*k5o?tAAMfiNQZWp5gZ4hsRH!<~L?e6fMv`cIw5umg`xZ2VTEcXt3k{py1$lMzr(y zyEj@10WTaF-Z?1QOLBhr^y}B6YxN5)8D2a;{n~%)vaL5G9%@-OR53lczFv^Q=JA>% zx<8ivkV`P<*|7HY+i;Jy``#FKH_nrI=Gn`~_`7b!`|O$}^*8Dxr6x{lc`5N}<_D82 z$K|Ingg4G&Yj}71Ia@cDBwM^Bs*FW)XxI5Fa!RnIDfw<-@`@{G6e)`lXT5>X2 z`85c0{E>MecjR67#p@4LYAzq&C#AOI+wb-lkt>-FXtFe1WlG?m#gMQ*b@jqC$$xn+ z+deV&WiH_FVn|5bHH)$SsM!&zIhWI%YWt_}6E0)OsAPEO_@!fEljwHY?PsJCckDav z&0ukq~@cY|%m)T05J!D$W~c{jRAtb70Qkk*4g+hiTOc5%IUDE8&+>d)D&7701d ze+z2+r{C^yVr(d#(7l$Y>n&5k1&c?`OgS>y5g~V%bv`R%u>QW}G9xeZq579A9tzxL zXlXUScrYr+)sodm%F%S5!o2Lvd)YDvvf3H^bR-+NSg&33a^m1u-hSbgz0A_e^??kl zo7HrzT6hJ`>RiqQWpFpJhzazbnbht3U6dhcZvEj&o*B!-e3MxxUn>#}UGx6QsY`pV zTQKYnFy_{6aGzjwe~EK+(W2E{*(>WqUrcY1=CWt&sx^j zz%YYl#pme^7A!M%t=KHV5cTL~23JF{nM6~*>_<86t|dZWD;XpjIT&;+A>7ta_0Jg! z_?Q-0v+GSi{r^gnns5JY8lo`it79L~Vu(as= zD<*}BaeIz;DXnx_!cfRzbVbHt0^@EIMe(=B3V0lb1|3u zzc-&}J&>W)#!wKj@nfcfKBK_)-Hz_gIef8yVxL>By}`g(zol@>?MZW8AM%DhyDfD7 z+BM%x|K}uaEI!-)W4-e_Lzag!*M+tzi@8)7d8+RC`kuXh8`lk$NA?RNb$2?Ie5fne z?%L%3FeUe{%6IWe>VNAwRao~i?0B~ILfm&%{p{Cjy?ICfPZx4v@?hXpU{q;fnZSU? j(ZwS5C$(YOPw{(cry>=mHg+&DFfe$!`njxgN@xNA^Cd)e diff --git a/mods/ENTITIES/mobs_mc/textures/mobs_mc_horse_chestnut.png b/mods/ENTITIES/mobs_mc/textures/mobs_mc_horse_chestnut.png index ef051a00971988055670e3d4ac825ac36afc0115..a65562452f3334d4e4ec1b3021d3b1cfd23991cd 100644 GIT binary patch delta 1592 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 diff --git a/mods/ENTITIES/mobs_mc/textures/mobs_mc_horse_darkbrown.png b/mods/ENTITIES/mobs_mc/textures/mobs_mc_horse_darkbrown.png index 5fa6dd45ad014b60fb9240b0f6e9954a92abca47..048f68df2ea3294453f07c308076fa14259e749b 100644 GIT binary patch delta 1584 zcmdlkzFu_0WR`k1HcuDFkcwMxXTEk?Y$ec8n)x_y7b|Cb&VsDc`~PJvi%(9yH0jo> zeK9j=n!$30l`sI`A)Avqa$|%p{ zY3883S}V)z_MPU1nO1Ta4WvJnU1tc1U3@jC;hFoJMz;cC#=d;_dJBdH&c6HKS50`g zj=`y8+eD`jr3?#}gyp|~SRA@IQQttQw%+2)-+l3n8}7Sl@8!90px>Y2=9Zu+28B#H zdFcg{c+X20GX&}!U|e!vK96}quy*v$7ya9E1sEpWnx@=u$?)y_ca{tlze-65lSdyn zuDZ2ts)fz-1NYPvE98n3_H)%I__1DE6lQmN2?xWbCQJKWZ7a0+94{x$ErA7-3BV@52~f{P2-S1>v( zXHa76u)VOYBbc+pVUmhSb5!G-YI5}Kt$rBqE2gTWCzqYV2h%|I~F`V1KsDDD7DB}%*14dgI zN{nZvGW-7uW_YQ~klyu9V3MA+2GgNdhg!Wal$)BPjg0*B1hFq(FXM#j!RA@wg+rDgZVGKQ4LdN5q!e3OMJq^Yf=q=|9s{Hi#TPHR0`brak-gm^`GJV%DB+{=V%`Tnww(7dFNz-YoNbI6i#( z^~|M$%|uI%tCsGrP!#mHf8>0j*TesWEgS}Ur>`ZHP>bEncwHnAR|`N?N_znq3K)3tW;@^ z1?ijk3M^bc`=sBF|G+RqhLb_9k3m`Bhs*&f7kv2AE~_XS7&de|H<-S#W-vI) zaUd;`p+V})Q-)i*F55XOMHf61@4Q?u=&)C1pMYa;-zfo&4Tc96UevvDrTMP!Y=5RX zr}MwhVEFgJXoKa3`aH&t);0V*559ftdD&RH9F}8 z&rF7I`3W5i4gUULoSWjjZnHd?o1`19KOy&1s9nR{mA+2XyW^H+-diTX(mwly^Tkp< z20zEe;!F+h8*X2(oLzHhwb$AA%8rxYGO{?BA7j|qvbN^N1^2&A*=hB&au|Aat=>sB zSUG=UWQ*%!WVmwsZQ16VEqR;2#WM0R@%)l!O5kXFZ8KrzNtO%Ww)V0wXf&Ix%hf+; z+j|}Z9R`+-%Ia@_Gi9({&^&N{eoEi*+g7X<2XD^$opRCpdP~9%p@esnUG-BLd4BBk zQg6)==KMBu`^lK59W0fy4v!i$>qFmhCP*BJVJ&zyIoP*O^~xT1AI5?O&+qS_pFFwH z+P`=$d)7YD8e@kijVn6pq#MfQE^sp_oO}>y?LV0{!B&7VCtM}=>vNNt45#jLhwyA* zbZ;^?&)c!Zw=_R=GWUWzWm*ge9M1o5w0Yd{$Me?ZDT`+^W^7iuwNKOI-^2}9TJ`Fe zNk2K*lP7J>r)(p2`CqAvsM!Z+|1(z-TlDg}y<;DAzWfsS*o#3*L?-u(Mc=i12evI1 zo^^SFJ41~06;{3<))x0U9Kxo~U0~M5`zX?#p^G74xyfpd?p=477pRFRn=mmPXY}Ra zIPkCG@4;F|g;|T!82nmqS>02YZk)M-*}eHzy@XY9G{*~04u(I>IkNVr*m{;UpRU)q zEFQ0z%J|`NeT8ng_I~-$eNr=*G#54e`S)O3XhQedzI*2bZf+FcJo)IG1m%igZ zQ_S#iZpZFV{e>rwuCsd?8UN4RU+ut`{-q2e4NL(HTn>yH46F+BQIKp_g!DPOhc)_OEyVvRb-j_YAZNKkjeJ%Y>`e936ojUVbuD#zp{MGOD^?Rqs zbZmL;GMjOg(&;rGqG|60SG>P}UowLE=Z$mZcmLi;Muvc2 z|2EXyIc(6ea;aaln&Fep`qfJ3H{X%@@IpZ0+~?!Rt?hiQY@h#qSYRj5_q*A({YC%Q z&BfQv-ljHi*)Q9pv1*qF4};3pyRodR7G0_<<`ZZQXDn#r`@I>gk}cp%X`pyo%c|F1 z3=XTZWh>7y9+~bipEW?Srv9O^+=_Fn|Gd*X{c4xqjXmcW`z+TheV)VoJCq@owb4M= z>v-T(*19tTl8DGKb zewR5UkAsUbpzxXVCZ;cI)cM%E=FBj1pHs$hdy3ow76)mj56629m`#r{I8UfgW@++N zNNuGv9jm?p8^Y1SRE!PI;iDv9O}(j{Y*Vk;idUCl`_?)g8UN`7~e5}VLAQ5 zs)xsN?V zk9kUNw4GCyZ)$%e&zD06`dMWhH@>g?d+U+%(U+$$)%Q$M@j0$KpVQyD_D>>bf#`}% zh8O#4@)#tJwFTWjs`7Tp&#-%pr;hP3J@~6|!RkO{bC&(#dvTv;{%|T1Vknuzpf2#k z@_=o}UGd~q-IG7~%Ky%q@xW^S{Ke@@xfqrUFkEA3u+3m>*gI`)n^FH)W1sJ;^D`wI zssmUUxG!Jj(b!h6c5Xj}GhnVkN1 z!B!@Q*9ziGdAi;*6+yY0~2?LTiVH^%YJh)tUR|r@ubR@%M12xZ}QCE*`alJ}3gmIEpdbN90x zP&{zOb?#Y)3u5Ozycydk8I;e{c%RX*H&4VA%R7Wp}C^IU(_|I z)9Gh1g9SUI!93=Sm$%K`oSXNws}?G72XV@^a1|MSZHba?`e@`Ly_%u?mS0shG~t04C!Ac9SZf2{nRpx^}+qOI|WbH^ZP`2d#FrWDJ?B>i)Z^g zPE-Db^#N9YLo!|*w-@lcm67uOub98a-#m+nUu50m=bZZec>A8$TVDIUGyPU#^Ki9c z=@Ik#lp6*=wC~T*j5#Jc^kcPnyW0L zqRlxOdM++f*O2kgJ+AihP-AU5gGx$QL34`x5ywL(Z|(BrYlwGaZ0O@-@Yxi!;PDyL zzZLdBViyMtuhh61DRM6%b)W9X zoZP!Af6r@*Szq7N@!#r+l(WFOLfu5`B*zx@$stYA|LZ=auWs;F`X@Z=>LhI!_V?x6 z7imZQ7Q1=}p+5dQC=^29^m7LJmwG44euG mju8qE!8s7m_TqOvJ^dbdQ?vSlfY(AHi5|A#+2!^*KF(>wR7 ze$QT(BWDglvTS+0PFf`fdh(spdTJ#kNY9?ZW;b)-4azm}KtpeW+(@;H$o}E;!+C zEMtp6^E4-uq?Zo`8s@)y{Fq^V-t*i--A<36s(URnDVwi|bADT|+aMHhkS>%phyXpt5ILLvM*X4SK? zTzIK@U9{jQZ}8gJ4I3kwB2GAmF-+pGRdAZIDDO!iM}g?6Gkb&V7``mE(zk4PK3cYq z>)F2C>Mg4O1EU%a@V^aLTJpq-#X<3_LH#W;29pL4FNSmb7jB=hQJe9DVngZ+#urIj zPO;7VvYg?QH^VuRrvj7sOhp(4ofK;MWcbSKLlyROnWQ*Xg(f&Uz2l5(V`lH*zL?99 z$+t#yLW!V*GN;tZ)eKWUD4yWH_?6+c${EoGH@(+*aVUAP>=Fyuzt34{o38Ma{cWEf z{M)zZ&)t0zoH|E07(My0m0|t**$kK38Ny$GJ2_Q%%wLX~3mjPY z#^^xZ{4>V$*IF%R*fEELL9LHLSm21v0Vx-Azi^d@((&KInd=q9cWoDD2<9_b$`H_e zj^V+Y?|WWGPYTFAvG!c+0~v;E3q%>VD8%}2|9dOaB zMDAd4;Qdv^AT5>@(XxkY!*l+~7yp$S>P{yqHc8E$qWI##F%JFiO$nF#>dfETaTaLp zKb*_-LNGU_{J~vj0q)9rc}aygZzYYHZZEk%jp@h!bBs;BdQ3<7*fum4q@3qA`M!Ij zz=8j~bCMVj>{kD!=sfk48KXOTsezg^BIVb0*U z{LWuS9p)P{3R;2;74Fj8Kf2G#Sykf8aZH=>+N?Q#`@I>I?bdIKRLl}SZ1~!2=V^iM z3hS9qh|JKxWy>hTykj*(pQ+_L&Gjwy)4q3DGR%AN^ZWbfS5j~3z1|tdxc;>{vkI3= ztH0eePl;iD!`tq+Ka#dw4dzHVv{hmCL0t~cq;0ozS5=EwdolXl z@Y8+w(B=I9M%%}nKj&_JzH>=BYr@@Wk^h${{B}QdO~7hK{swmQ*4#HHeg)Y+zpr!d z-q2W|zbkneqc9I=bc_^JxzF+KQsGP&JRLLAmuG(Z=k{%G%>rxgzZ?zO&20y`|MA)7 zvnZ@T=6}KJFyF_^Y7A`*8_q|(Q__(t;%}Izax6oKL597=P>JC+DQIf8nOb{9*DN?RmcbzyI1>K4BhH#JtXy#TC-iWw-pj zc;erm{gqsd&*Zmp1u$wku&!VbUBDF5K$v6CC-%WUaz?-3CDSlv1_lNOPgg&ebxsLQ E013>q*#H0l delta 1825 zcmbO$I!}DVWR`liubwWBAr*0NXTDCFZ6VM)cbSD^WPzc$_4IA;|4(^iX{_9MGpHG4> zuQ?BFdeQK2#%z`+mG?qi=cVtod~i|GVb1mV{dOM{FTJ#s_h0_`XNlE39jgWQ&k~-m zTYI~bQM9gSkH)HH8a@nDLiqVbLqw;3n_b)xR3XZA?m>x7bcsX#nQ0A+^1GH9C@;y> z;%Zp3?Bc}dG7dGIUqYF*TJ&q`k1@~Mb4p%r)0)g#O=n-rJecuW%jmpi!5xtWs}&e7 zFDkKGwdX*;WbMR-=lRc_*zD83AS>gw%mnWS%fvs|*IFKE=(pIC+x<9Mmh;4BrPF^8 zXvXJ5548gPo2PG0XihAlD z3_MfbSpI6;$;iTDwvfS*)x(oD;ZQiM`79aR+%5fABN(PBv?-jPz_8zsquR&hkHvyj zMu#n~%&19@I^%qnK}|k6py_qeRME+b542=b879uGJGp00zy|F{PuAb+ie|0-`Kf6~ zjgG_%Q=tY;4uf;APP;Rea4cY&ezugonSn{LK8-1_@`Y`E@oS|RWkxfWh&D9`IXC5$ zXP(Q?8XoRyFnpn2b*e<+;ib$RrWrC;EUjl5^IW!X3T{wo-ud8Bde{a9!|xOL{Q_ha z?sh!+Ce6XhV6434e+`F#C!@*<0R>?*mWOUzra$$RQ22Xn){%8Cig%=qQW}0U*d8?6 z!>j**wcdv{q54JLp1pq!j2TupL>q=3t5DxF)t2er{dCqBn;H0-o*ao0yi;x-&e+`4 z$Fzf)v(6~!!0q3^XGi^Kjb=JxzRyp;kV#591-!>j~@47sFDQk#l{fs`#`HjmL+Wp(WvV-f2 z3FC`>HSYurdUylx=S>Y?QwS4tzPRiR!$#f+Wghdd6&tuL_UE!sShS9*Y6q*Wt>yl(4(4NKGumcX+2kp6 zH8Nat)bo-Qxy|}uLE%Am)*BYvHh5Ss>3mklST=9LWkz1-mdA@83fyI>?-0A^!k+CZ zdR6n#62XwioFDFZeV&)f7-lW$?uu2CIxiis!2cX;a3%JZ8T$`+=I zu`$LqP5G%Ndux(#Y-ofx^FsGo-`CWqG%(F@+j91oP|BGPTI)AldtrAi@XSM-OMB8? z8IDiu+`Q`6i4IG~uo%}_-`8;NcoF0xE6iZtcd)82XU6OsYmeO$2w+fSeDz0_QHIGU z_R39NhBqI3B7_fUO7k?DwB*kEFz<#~K-+nq#8;9Vl^B!_1Pu;UuhH;OZTfVb| zL;XjY36th*v3+0ApI;%Mb>id|;Z2q-7me zo6`+Xr~ccqG4pY?4fAiKgbVWKX1O)}=?Q@hO4)4nZtGLNcqcpLF>Ty?-gtx30V4yU z4X!(0ot&ed63FmB?|iSvzv>5-j!F}K?%r_7Fut=*JteYXuhY#3kQpCBOdT0+&O)>}}Z(mou#6-N`C{-+rwazr_ zb{zNN()dpi(d8R=i2jdPVf1tmn!rK|RWBLoaQ{Ddzopr E04Op$fdBvi diff --git a/mods/ENTITIES/mobs_mc/textures/mobs_mc_horse_skeleton.png b/mods/ENTITIES/mobs_mc/textures/mobs_mc_horse_skeleton.png index 7fa9ce1de368b5a739b74cd9cdfb3d0ca9231eea..5d460ad8a8de2501ac46cad83fccf3cf843f636b 100644 GIT binary patch delta 5932 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 delta 5938 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 diff --git a/mods/ENTITIES/mobs_mc/textures/mobs_mc_horse_white.png b/mods/ENTITIES/mobs_mc/textures/mobs_mc_horse_white.png index 264fffd26ff72c383c0a848945eba3a81595863c..c9478abfe43ca95c2da297fc605a156d6a5d7239 100644 GIT binary patch delta 1493 zcmca1c2#7w&Y7kwy7u6G`LqmkoG+$hG}k<#F}D=aoR~(*4b+Z+GjTEf!A^Pg!|*cjpo* zht>Q1L!MrdRTJ8tx-Dg@F{~nL;Z^lZf~p@FWnV! z@UqNOP1R54-OX_9<-L1+A6}ghd%>yrty-}xiS z2%7c0*RVl@FM(gF>~}6hmfY19Vs8!mq!<}8Wo~|!U^e*oZW=?>!zt4lmrOfF0+FltvB)+ z*c><-#eKbfA;W~duTmo_yp}QC+U?N0(YdEaK+ygt^Ib+)o-=yP8!QqS3>XrM8D=sq z5tDE~@=~=zfm`U4ZPovrdrg~y5*c5=ImZx^#K2Lp*5IPYjF%^huV^-?h<~w_sCQT% zJ5AEyU;D~aHU>9z7<7&(Ml&?=A9rA}cfGsXSp0!j$juK<7VH<=U(7jqQ&#E4Ppuhe zKV}3Z{aKvJ$fSR3tqaG=ORNqHzgW~qC^2w3sAw`gzkfM;RlrmR3-JR+B@89TT8kRh z|0*{85o<7ZE%tDA<@I!^64wxCZa?g+JE8tQYn9N-IiU%TPH#M;+LWz3gfE&kn6P7ky`*;y5F^A#J^Zwql2h@`b$(ufFm&eW*xj`g4DR+_L%o z{r1!I-GqV-*YKFu=^eOyS*f8&@4(evcXk%M{QgR-VBLIygb$4ZO@fSa^XJJu_n&Oa zFyZ>~`sLSWt!uf#l(3%R&+qS5nI~!|H62ys<~hw!zxMBM=_jAoyfo9^wQl!T?jPsA zBs@I2d&*Vb&E~9=*Iuh+xYhP>#uuYCRtz)j_S!LQh+h$Ha!Ix{Ka)R!ZMi~&Zi;Ne ze*b4P&xgfqWZj`55Qif#;g zT*?ej7WlJos8jsqdSW$0cHQJ3zxXvTeT)%4Jp8g}V$|D}g zC`{ckwO{(zl2{Ypz+m2neP?4g@Fi%aFf;TsSWmyP=0ZMK!^`7qo8Gh3SIlSC%Fg=C zV86#B`N50x`sW_+{Kv{L-TB=&hG~pBd;&TT87tghZ~yq*EON^wHtsb{Q_ObC)Ri(s zDp{#D<$BF+J1sC>!8{@%ZfZWe#rBhxzO`yL#f|Sj{5#(NyW~X3`qh=|S?9#=mr&T~ zAapdIEnzR~8zu&iYn6+xUkzcj;I5Ad)_rcic$PIO#Fl5 zxmg9vjJMf561#frShJjb#CFCH-^}f%86OrY3OL~wd@X_FxPMjMhFsAdDaA{k8&4^V zS-7L6>i(6#`_i-I6XKXU&b!oT$~@k5=;EBMCfDnIpRHt>u|HDEfjNVLcLAeG1KR}# f!kilG1NAx;-y~#?vZ*mJFfe$!`njxgN@xNAi6NO2 delta 1754 zcmcaAazkvxWR`li^`0({Ar*0NXTDCFZ6VP5_E_nrom(cDJP<3m_h0j7ahjWxQ2FxR zKNst7yx5cYETe=`z5QR+-k4wiZkh1L`(D-$3OnkbJ!zZS=b9t8fAe2|_1pUVMP+#v znRSQK7)wJ%uBl9&>8|qX_w{hKYc6*0XEi)4O1yTK>DBy1)>lEkT=f-yKX%1)G)&oN zFZOU>{PE3A%)f%Kv4qq{Z=EV> zm>V6;pt5yspUrcIPu`36t1fW+RevhnW|8jePfwR>+}gHQBJMfE@j3GseVW63Jd|-4 zmy&_5o}YVc*bl?S>$$%CJSv$Q_(I@{Zth&>Pl5@)Gydo0@)3+$=2cBF|T#>_9pnU7J8)Fd9wWjX*p$D6e+;O(G za4c;oQJ!?UT!5P)P0izfrLaN}lg9)_2h|*oN4*)^pC=nQ{pvOCjO}#VVJ@zETF3Hk_v+OR zo(HEg?O^7tGYUFz`Sa(=QU6)9nGUR9{yaWQx7aE&S=`TIyTXI>^CcN~9FOdd{^0v_ zZ$nztf%ofv|K+$MmApNY=gT1jeIsj@H@~-5zxbei_T%A8JoT$o^o~zCf8cIFetiT} z3~SabhLZTYd;xne37nH?T3@XclAHaDCHNfzJ{4kBj_& z_M|f2X%=GKU=WekaD}aYPm^+%nnbnDFCPhx1y5NE_!qhJu!c!l_ny&yRFd59&Qj3T z$uPUMnc^mNy6j1mAe-Dm`EP=G5A*T=dFe7a%Lvymc#W+FYl2G7hqp6 zm2*_;+_R07Kg_FSEQ{1pP!Ul0pjAFm)^u_H%h@g8&u~es+xUh-S}Erb$C{v=YR00u z*{>1}RQ9BMHZ-1@!&D~mqB>jRpVn#9_LlEwxE&;3CMX>6o?teANpf`7qSaj4nF`-L zD$Xad9%FK9bFXX-XMO%r>Zr`QdgX_<+)NhRrX)_!n$V!hcrC`|P<0t+gY^4~qKm;E zNrz*O`k9KgFL*d#dtcOneOwK?^BPncXY7?>j>%_I5!jY_s5mIvLE6r^Wutn+@&?9v z$-a(yN*VuU8D}($2%KZgJn8tjvVC{$;pUJ)-(&M;>=lg=H86PI87a)by5kayM}0gG zSWD6_k4IBZ%!n1;&@WbSbDvMcROcC=kLYkb@Kupx`X%||-|g+ymYhqznVmndjVmJd zrGIm8bN)x3oYf7E^-?)9HQnh6VGKsutWEAlzf>hAOm@i1|IDMqv4M+)=~_p)?aWU{ z&Tu{G6?o8>63&&cq0+TdTDl{5S@ie%BWJibxNAgTV`94dpSj?|g3i0&qiqa--7RSO zBKv-y<+0zFm+z^SdGdM#%P)m%i@Mq3KlMi5eaBMXWoKC9*TCYsaQ)n)>2`99&6gFc z7vy?y@87}qUhK762!luj`)+OLOR8ica0baXHn%h%-NmWi5Wia`Nuj~jOjP87 zU;Tscp}UU!+QY#1AnAF;qt;%3;mS2U2RW^zl8RqkdT;gH!hnG_qhL$>G}+c4EZLtk zJKeiWg@4Tt)+t+8+4$e;iIlU@xx(B;>m=s`b3OH%qW{-@*cp0Y!ioQF8*UZ#J~{jQ z?#hf)a;+enzl#f1=dfIQz}&#SzV~7A{ZA2VW(Uo<+x1_6Q-h8I_X#FaD1EUD-~Th| YRD6@r{n=f^z`(%Z>FVdQ&MBb@0O=hcdjJ3c diff --git a/mods/ENTITIES/mobs_mc/textures/mobs_mc_illusionist.png b/mods/ENTITIES/mobs_mc/textures/mobs_mc_illusionist.png index e6a0f86a621381a35e8ecea31254c2869b2f609a..3a67a687e7136eed82c36753f69d7e7711e35e0c 100644 GIT binary patch delta 1530 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 h>?_31ocriMvxp44$rjF6*2UngHzhm)rmV diff --git a/mods/ENTITIES/mobs_mc/textures/mobs_mc_llama_brown.png b/mods/ENTITIES/mobs_mc/textures/mobs_mc_llama_brown.png index 6cf366deb7f72cbe287e892a32dac971c4e909a4..442f90d6a61c0bab1b961dda979007da6bfababb 100644 GIT binary patch delta 3439 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 SB^VeO7(8A5T-G@yGywpZlD#MZ delta 4326 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 diff --git a/mods/ENTITIES/mobs_mc/textures/mobs_mc_llama_creamy.png b/mods/ENTITIES/mobs_mc/textures/mobs_mc_llama_creamy.png index e1df4612f9260c8c732857a18484e032215e5b63..cb6851f50dc69d025a8c4ae418b93b3171315a03 100644 GIT binary patch delta 7389 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 literal 9349 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 JS?83{1OUH;q2K@j diff --git a/mods/ENTITIES/mobs_mc/textures/mobs_mc_llama_white.png b/mods/ENTITIES/mobs_mc/textures/mobs_mc_llama_white.png index 85c291d7ebb37ca1840d2c2f115bbb806eb1c329..4fdfbb2c9f1417cc533c123fd3b6ce8204a690c9 100644 GIT binary patch literal 10994 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 Y8OEPXif7+rU|?YIboFyt=akR{04qi#od5s; diff --git a/mods/ENTITIES/mobs_mc/textures/mobs_mc_mooshroom_brown.png b/mods/ENTITIES/mobs_mc/textures/mobs_mc_mooshroom_brown.png index 115416a53c8a5e525b8f245dac8f40f6f8be1f19..85b15e0e7bbfbc7812d3bd9e2d807036d107b838 100644 GIT binary patch delta 557 zcmbQi(Zo7Il7pFnfnln1-?oX0-t`Q|0X`wF3}C>*z`)1OBrV9TD<>MNAs**#lwc;E zVy#jhWLA;t(`{rlr6Fauo!yrCEeG?`-4-wiGB7YOmIV0)GdMiEk;cHlxW&`OF~sBe z+^GkP4jXW|gszT#FLeCm|N311hLoF)>Ew;Z-u?Fbe*BKIS;j9zVwPzl;o1 zUgTw*l`#^CdCBd-))3z#ACb-4dZk_^M%BxTaogPo^BGif?(h0mz{C)=j#Gt?K|tE$ z*5^!>jg1yehxSY^I_f7?k??l6%~X{HgQ}7*nw|~px4-4y-X8Yp>LLNAl$p`%|1o`F zIA!+Q)N7*aF(1*rH>W&NR`u}pXxjRWO{4b0bB37?zpNiFaAtkQdO>Z`)+_3shJh9g z^`}7H4nTzawpKZT`CiBNe$H7Qf%j-}>Eh=8+>; zuT+)SY!O_pKkr?`|FfHqic;SZ!f>W>YvF#^wv`hHKHz47hRZ;?Vjcg5xJn?EPU=Fk;|IkxMh zu6i-ce{7MkimlHRUu?hacuMu2bz5r`m&HymC|t<>@7IsS?wtPA-fwHljousWIVR7r z`}Epu-T1izc6PUZadF=ao-b6BXFYE_|CL>Q{S)fmmacuu-RRO(lbun1TUxyQ7(2kyVHG_G9~YwH7#iw%M)!vgl5G{rq_`J{5hxYs5{z z?U?e!cdPx5^7QUEUeaQRt~8k(I6rfGiRnA$UtH%4?G5i|zbV|g?d}77kSdzle*{FzIp5d z^PGco`p-Tzjg9@LqW_oA(zNV9gG%YfB`Iy}0#A0_3yK9xDTAfH{bYV{WLe|yJMX8Q zIViv2wfnpmkD4la|9-D;*`vt&!SdbYSflNa7;WN`zuSM^d?2~r^W>cs>@SjM9_rk>EBB$&V}&qeet@I zss32Wx{cx5e;W_CKKwb^efDDG_V4Wbi&&lh9iPb0c5lmP-9$g_mvV}MeMRS&$E~en ZzAd?t^|1G94F(1V22WQ%mvv4FO#lHu@$CQr diff --git a/mods/ENTITIES/mobs_mc/textures/mobs_mc_mule.png b/mods/ENTITIES/mobs_mc/textures/mobs_mc_mule.png index 328018f5d49fed0c9b2e91a82182e965d0514821..8e0895bbc5134b3e481e5eb0fefd71eb99c7daad 100644 GIT binary patch delta 1688 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 W`tGEEQ)FOZVDNPHb6Mw<&;$TG=z53% diff --git a/mods/ENTITIES/mobs_mc/textures/mobs_mc_mushroom_brown.png b/mods/ENTITIES/mobs_mc/textures/mobs_mc_mushroom_brown.png index fac0f56ef0c934a782294a77e9a780e77c75ca6b..c3d33fcd482f163b15718321a1dfd8a5e4c39d5f 100644 GIT binary patch delta 229 zcmeyybdPC*BnLAC1A~SxfAB=boO-hWpAc6D28MDGxpohu9&x3~kv0o*+!iS)ZZkF6 z-WqV#&*pn>^#A|=V~y1FoeZl2OzT4JdNMpF<^=F=l}HPr5kOY%-H99-GJeblhw~45$0*3ah4q{7Sc*S zCz@w=GC!PpNzCKQ)kS-lHmuy1P#(*E-)>gkJbEB1Sz)2sT; Z%>U{N%l*xfCQcyRJzf1=);T3K0RZVrRv7>Q delta 253 zcmcb|^o?nPBnKM<1B3kM|A`Y7bLy{nx;Tbd_`jXFk&n?)pzXP$ik0KyvckKr3n#38 zBGuXvSGZ`3M#-X!9pVD~2PapEJ^hs1b36Iwi@zu5pSkz$`}q{Ve_AO$KX0o3lxz7D zI^9v}`pqAOTG|o?UDjg9uAF!)!xJz=v+rwL&T8N2{kOCk^j@y{uqddyjF*jpA*y0l z)~wihcXu*fIcdkH;1qUvU8~{NcdP-+YbM({a2X#p>OQ;Yx*6ANzk5gAofsHiuKA#n zC0QmdKI;Vst0CE6yTL1t6 diff --git a/mods/ENTITIES/mobs_mc/textures/mobs_mc_mushroom_red.png b/mods/ENTITIES/mobs_mc/textures/mobs_mc_mushroom_red.png index 8c22bd62a4f75ef59e4e407facf5c02ad4e87cf9..d4e4e6533f0edd3e66dcc8e543c5f4efe14762e2 100644 GIT binary patch delta 243 zcmdnUyozapBnLAC1A~SxfABdc>6=;t;{N`)|KwU|`@W3GxeOKmz|KN-SewU|>x0c6Z^H zzkcKZ0|P^nr;B5VMEKfXPoV<}94ws@A~8Szr#B}o-DvY<#y;Qc1`L0ktbU3xPYaE+ z>|n8wR`NN~JhPMe;nYiF9#^g|+QYPA<+gx%-^~_YSURC$B0!=Uwm7! f-}{_i)o*70S65i>Z;mu^0y)Lg)z4*}Q$iB}I3-(Z delta 379 zcmZ3*w2^s&q!b$i1B3kM|A`C?3~Wi>?k)`fL2$v|<&!5WYSlB^dAc};Se$-4(cX*M zQO50l#}D-g4L4U^HNB<@4XtX67A%lc2)o6y$C2xxb3{aC%LCR)hh!2iN3f^}oW3fU zRABzH#dBh6&YgoP+c$0~Ue)-sHh*6w^M7v_>Etu-4?7urOuu^TsB_8ADHUlw8+(PN zZA3m<1l{_3{=$!7^~ntN>c68ID!eXo|GKlz!e+j#>b6cst(m+wO9SpQ?p@Hop4HJp zCAyR`X@SIn>rH8^nGd}CwySVS%CmQIE{^VAHcQ{soH_Wly?s6F%cZWul`Gzh_PpZD zvDl?>&0)HCh1bN@rWeH7mE~%5dtyQt-F)>Rdm_(=DTgLb@>-TW$>xguea^5$6J|R^ ziYLW9Fu$vFUh1_9N4re?+Ya^by^lgpoqL|u8^}I=y}r-@%MsCfVY diff --git a/mods/ENTITIES/mobs_mc/textures/mobs_mc_parrot_blue.png b/mods/ENTITIES/mobs_mc/textures/mobs_mc_parrot_blue.png index 9181de260592c11756a7010a2ba676598fc0082a..1c2cc079e155deb2ac28e62d132ded1250f150ac 100644 GIT binary patch delta 315 zcmdnX@_}iB1SbnK0|P^2Nc!=K##;3Z1_3@Ht_%ze8#FI^RQ{QqgylV$4|7#NsJg8YIR7|JG}wP0XiU`+CM zcj1@V#c-2>fnkTIi(`n!`Q(HK261t=5C)+H{r8p(NzR8~8n-bR3-9{r_JZjYj|n@&7JZjf V4*$zd7#J8BJYD@<);T3K0RRD^b4maJ delta 521 zcmeysw3lUqgfs^m0|P^GRn->;1_rhyZ+91l#|-}&p8hzmk~L9LtDfQHqSM<2d@J-QE$`Jh5Bo_5M>fYw?493f_x3)YTmAeKhm6vO4gS4#@ABF$Iv=~q zE9$G3OiF%yddA#u3=HS|om%QW5A5J%FnXzbDYuBBLNoT^#xGy}x^J7a{%I6tXqe>v za@)o8OYCctQr1j+?4cIV$Z+umN6fz1+T_P?cPcYIJSxGkASl;Ki1l=^wsSXARMFYE z`)~G~^m`h}a6mE1B!0!~()A(t6+7iT7B$o?TvzWOVQPFhQ~!&M<4ynOP4hoptAEpU z<7EPGmgT)i>Bd}!>gUo#l6npXuUou7A?Z@O+J&u)e3*Q;u~o1~Nfl*-7;Ux;^fnl1P#sLAbG-pg0VY`2=S zSJgVsoZatma%sRyGxpV!%96h6ns0GuOz^rVm*LwgfA!-1rA@6z6gVTi0@m9ed_4D{ ffb$>e8ivp-yEmBJ$-cwDz`)??>gTe~DWM4f;>YQ} diff --git a/mods/ENTITIES/mobs_mc/textures/mobs_mc_parrot_green.png b/mods/ENTITIES/mobs_mc/textures/mobs_mc_parrot_green.png index 152acb8f412765da7c8c9ed9ed82984bc27801be..d2f220f9ffe50cac67caa8679c0fb913a9d40bf7 100644 GIT binary patch delta 312 zcmZ3?@|J0W1SbnK0|P^2Nc!=K##;3Zx&b~Rt_%ze8R|@GcYhPl?3?(Gcc4*K5N0iz`&T~?e4;t zzt_N@fq`L%r;B5VM)2CxihPG0L|iXQd(3EIImqX6gCUW(o?nZ%_gI^KXZ<67E(zt>-;GFYcHR{`$Jo}|G#I{PmdKI;Vst06GtSqW}N^ delta 495 zcmaFMw3uargfs^m0|P^GRn->;1_rhyZ+91l#|-}&p8hzmk~L9LtDbR#r;B4q#NoGL zr@an4h}a6t1|Mnd)(V-BbfEQhS)jnmAM$x$*jX;l)h_p{cL-pqclgsB#3g#GRNQHS zh}5dv00SOVtA1Eb`}Tc4|^tt+RgQjZMu96U(ZK9m^-^XhwII%YK8`_)fF56uURY@;*kBk zV*QPSnthB6;YYo7rkL;XySMwAgS8{)*Ny|)HV{8Fz+CQ|qC=BT#Q^NzB1Za%12b=2>{olCqz^?G+M z@jg1Q7@W6Yzrx;qQfdZU7CABX7_L|)RdH>_-#C};kC#l)OB4~DxW!W}a-t!RczVxK zGo}5EoeMf9bwAQDb2EN@=l|7QKF6}yFOPgbm8U|?YIboFyt=akR{ E04&ej?*IS* diff --git a/mods/ENTITIES/mobs_mc/textures/mobs_mc_parrot_red_blue.png b/mods/ENTITIES/mobs_mc/textures/mobs_mc_parrot_red_blue.png index 2f14ef1a59f808e04ec61cafa3863cdec4b5d248..c683f5cdba760e346e356533182d881b07fb2642 100644 GIT binary patch delta 316 zcmdnU@{wtR1SbnK0|P^2Nc!=K##;3Z1_3@Ht_%ze8*Z)S1WRDP~zI7#(PYi=kfoiU;i`c2FGTGIS)BVv^^A;4zxJJtFl*NN0V{Ha!;#^w>WcH+&9!0 zcht8rUp%HHAE_8>W!b&rV^ZSd+jl?Lv-_qUnb~;Rh;_m|1y8{iqbUbc&8Nce|_EP78CGU~^3xP48Et<|e5dvS>2LCiA45RKJZ^OiCk_wBiF@TR;WSbSUTk9z(k Y9O?I7wC68kU|?YIboFyt=akR{0H7Uz{Qv*} delta 509 zcmey!w2@_kgfs^m0|P^GRn->;1_rhyZ+91l#|-}&p8hzmk~L9LtDbS6r;B4q#NoGL z`~43&NYuKoHjEHrPd?=GBFOCVt3{o8JXS9bJhFel*ZH5(*C(c=z(|izPcMguZ&{%s zi+Ew9f#V&Yjf#vm?3tJ4Y}bV_)_<5*cVG4IySvr*Yb~25>ST4@S@Hh=Z^aIuq7pK=bVc=TU9WHB zZwdP$z{oJ?&CD&gS6T1d{PFHgFE$RAk2$YARus+(cpS1tOvI(6_RfitqT?Ck z9#?I3ykqKes<(uDTKKdGrueWa-Uk-31U?dd^zdKi1Cwu^hn;S;)VWk#YRi1m(V@6| zr>o}!$0u?QHZB!MD>u%U+M{{mm=n{xM|&(@JbM|l-u`3TKqO%IyRC%Hjh3G&PF;fQ+izct!xSpQrS?U?Y!_x8E!<)?xU_!O!f)OMd^4!1%qJmn275pwdQ+>Fwghg;=cZQgd(}cwrw!PBu(9M|4l_+W)cEprBC09m8AX9y% z$Qg(3h7!R&xmhK`d7pOWEeJcU+}JSDE%5h!W2HUE+vjnG_Y^3#NdBA6zvME<;YBz4 SzcDZ{FnGH9xvX#s-Ki52QqD*mwL6!caPo=w*eY`88*|w=USW-elLSomO&5~1|+canY z`Os~`&T`V}#rt{*35!UB%=!qE1uYC`iX^Jv=3WxM$)>8u#>U3hragQAzxuz-g74!O zh!t-#Fxd02G2ncM_PGm;J2M+!ImCH>+P`PglX|D5BTQ~dK?Xc`d?z|RwBPf6j^N!# z?ce7aE6sM)c;a!2RVj(-1>XV-myK2l^CmIQnOpLnX-@68Bc(j|57hYR9q?$W|2&09 zf`vset*+v~{87OlLaLUWGdbtC@xT8c93r47?y!TQi@EN<^HvElA%nsavxPwdbA2x` zt_hGklQhFQVy3}WflV@DF9eEMg!e6Q_v1d&!nEmWe!Y`{qI<$w))$HnIT~AD@lU!m zX|7->Z O1_n=8KbLh*2~7a*6WCJ# diff --git a/mods/ENTITIES/mobs_mc/textures/mobs_mc_sheep.png b/mods/ENTITIES/mobs_mc/textures/mobs_mc_sheep.png index 13496a3c510690d4b67a1ff2250c16140e8af352..b7b66a485a74477859ac9fce9d0dca0da2c613cb 100644 GIT binary patch delta 484 zcmdnZ+r_(KBTM}ePZ!4!3CX1g8}p=D1y~QM<(dFn#h>dEPUBuY#4bC=xqRG+e7 zTSx4i(3vSUqPyPi>NIl?UH2$Fs(xo+)Rjq}G|#1l1pP}=vrBDTBy;@guNb$P_fLK5 zX_mgZ#a~v@w&cw<*YHyr+_&aVDw}$!$EU_?du&PQ9qEnTj^!Qx+KB?W-PXRlvo20_ z>y5o9^Xo#p-Is@Fqvh{(6)koNIkRKc5uce_YtKAeZvW-NTb+eYhF14$BDy!-=nC2w zBN25g@_0hl=4&^WwzOz;TF0uE1zweqoNu&H!)RZI+wKmt5@F-q?PAM(1BGYnOBG%$ xy!393)wBz@4m~=yx;{*EagWid9J$Zxj;o$a74FfQ$-uzC;OXk;vd$@?2>>UJ^P2zw delta 534 zcmeC;-OamUBTM~PPZ!4!5AUN>awi{B;AzQzD4_J?|Nq?l^2uRe=3KnUzx|rgktdmP zD^80Uy}rA~GqK9s+@YPpV!l1g7elxA9qfue`7haa#5w*5Z^-(=^r2MPUQYSZjXL8H z1CNXA__r+C-CcT(Ra(CB^xEBGDskCwr-fTw#>=N1@0zAH5wBd?yZVE$vQnUH_jznjG^B(drhx)Uf$iKat52Poq8JdK%_cN z_N3A=M!QAs4E0yeYd&vLEn{iXZcgdEx^{P;p`CD~%G;tn+A(oVEycxCP15nH-|GuF8Dy@{36E4Ol$hAC{J`V`V)Dv$tPaPF8(3egkXv4& zw{VKO>V_uf15&>nIDM334BW2mtY5gn`$zjO{e>Hut<=pM%B-q=-v3*2*&_Xco=(E4 zhQ&n;>sDHd=&Vs>SjFJ6C+&n%42Qtfp#DR8l}y2$1rvVTv|jD&&r6(sVh&^dKZDXl zrU#-C!g@Uuvu`X-SAFnum3hoI*2bC2PY!+8d?U2H;K~9+E#@tWT8hsn1+V4oc1WCl zW9nlCg?s!$a`xXD94)VN`FZv?bci?DsyK2u9AcGZSRk}RY4Qed7KINJ7#0?M6!JQH tUrFep)VJ+hH+=qV{w6=`b{(S{tN4Utx_rz2FfcGMc)I$ztaD0e0sw;+>rwy! diff --git a/mods/ENTITIES/mobs_mc/textures/mobs_mc_sheep_fur.png b/mods/ENTITIES/mobs_mc/textures/mobs_mc_sheep_fur.png index fa447031d0f06b299c20108eeec9e9c68ec426ab..0f3d9785f4ca192496047986b650a757d4dce28d 100644 GIT binary patch delta 402 zcmbQiyMt%LMwa>_PZ!4!3CX1g8OwqU85j=UHL3dln<>&hH{ikEpw-65uJTV54Nu>f z{OO!y#KM}>58N~~_N9JM{C6>>`-k}C@}nQh9Ua{>+3MTLvWsSS&4ECfFEl zSiq*r|7_-ZQNgN1PYyou7T4su5M^Uv_kHpr2M*Vh4AvhLKXvUbO)NB((32L>y8Xn! zvL$^U?*v~78IylAVmuvfULQykpE`xDJNHvlg!ZQBxdzK=s zR`85J^2oG{4NnYiv}tH4Xw;W8-S2qoyCNYlNBCl@np!{G5izb!4q~^b1o`;LiFW&* zV|HXtnLR-!Na~2}M#0(a>vB$>)lp$;dgP~Q&dKd4(LKBJQSmOZjjntPQjVBaD!Q*Z zYAx$wpinn^Pk=|xL8hav8-3#@gc%4N>h@9)nflHyGs>p>78b_`f!v9ug^=klJN{)(NGqu#u6w`b54=EjVz z2itwlv#k9V7rkV|xsAq+POrC~|JB`)(P?RN=4WTak0CdR|47#xQ>8Jfm_NYuSwo(zB687$A;hBS1`9J8fmVTJk z^hdj*?{f}|-JZ=ya=)Ap+uo{lA+WE}+<_yiWWLs0!$Rpz-vh5}UCGH{X;5l$sgX@ZXKlIgleyI7!kgfNmvCM?4l7WGN!PC{x JWt~$(697!(=&1kz diff --git a/mods/ENTITIES/mobs_mc/textures/mobs_mc_slime.png b/mods/ENTITIES/mobs_mc/textures/mobs_mc_slime.png index 82ed087193b0fed32b49e219f5dd22d6ab17f7bc..5d82943dc30d28b1d22e3daca41b1e919cd1db4f 100644 GIT binary patch delta 20 ccmaFBewTfMA!GhTqhgjVzn%VWTw}rv09k7Yxc~qF delta 23 fcmcc1{(yagA!E@*qhj{@ij2T`uJapLnlJ+ZYLE!F diff --git a/mods/ENTITIES/mobs_mc/textures/mobs_mc_spawn_icon_cat.png b/mods/ENTITIES/mobs_mc/textures/mobs_mc_spawn_icon_cat.png index 123ffc337fddc38e20d9c077eea3cd5606026895..1b904e5ff0e0a881a42973a29634c318cf9e196a 100644 GIT binary patch delta 212 zcmdnZw1a6vPW^UI7sn6@$-M_R<{dH+VZE^0#g%vN9G;gP*PX9DSpF{b|H4(j#0^gy zOV6I$d-0EMkdD$1#&ZX`C2UsngnczaPIKYMn6Un2P9z$#9~2Z6)V7srqa#yw{?`W;sgVEfSB>-OJo3v=Jw;|H>K?vTEJP~yJRE}6S` z7R*+zjh-#C<}2eLwgbo?+~oZ2gMUA=8<-w8G|(t%Ileb%I@5uPc?f&RWuuP!_k0Da?i^K$}yZ)kW<<=0vW~ z(O=~F4MREJ8%BD1|I;e)R0@m#^vTn7yQk7c+rLlrS~l$0T2pD~94Bt|yxKwf1vf+e YZuKj73t#_YU|?YIboFyt=akR{0IKU^R{#J2 diff --git a/mods/ENTITIES/mobs_mc/textures/mobs_mc_spawn_icon_cave_spider.png b/mods/ENTITIES/mobs_mc/textures/mobs_mc_spawn_icon_cave_spider.png index d5f453de8d2239d822d151987b2bc5b25258e255..a7f1354de7569cb7dfac5f9e09c62c4d274322de 100644 GIT binary patch delta 385 zcmeBRy~8{~l7pFnfx%@-*RhGl{`Cyg0(?ST85kJ2#g%wv)cF*2`4x2qRE&hRtc5kL z1yxPB#1+{2ML9)fxy0nT#1y#26}iQgxFwXhC6&1)Rk)>8ctA*%S4N#zMuS&YlTS{I zPhOi(L5ELKk6%%jUr~==NuOWIKtRPvK*d;4)mTu~L{QCCNZm|G-CU?%!$L^YQb@~E zSj!4zrM8WTuHAA2gAIm;|NsBLd}m1<0|NtBNswPK0|dPP`P+{F-&6($2F4_BcNfE( zw`GeM7#Jpcx;TbNNWMLITdFZYfbGJ4&Gr>)QpX+5oO2HUwx9cZU#$4LXzsc8UoQH2 zNa#k~jc&c@QMN>-GS5s(p{LVa#QJ1Phr*(zB2IpDeO&|vg6)=1mhs%q;l*b@f5nP5 z`=&0``}F4cwhbxyzY_N>Tk+AZDfiT+1vbtz>?SOG&drfHjp4eSmPsOme?qSr+Z|C| bu98D_nlpLwZkkN$0lC}L)z4*}Q$iB}{7P_T delta 559 zcmcb^+`&3QQi_d%fuXpn>I(w{16z`}y9>jA5L~c#`Q(X;{`HI>JY5_^A`ZWua@#99 zP@rx9*6Vg@PZy}EZoP3yLrA13oJISGTJ8F{?}1#cK^l7nmN@Y*a`LaBOHxN7zC zt7!A$TGL=|2A$JxzuC5L^0*MuXya}z$8hWG#=k-zHyoe6>-eQ(+f1x>7rhs_W?s&q zA~)w@n6$!|scXd#y%Sve%y?bB++ybDr@t8Xtjmm>+s5N>xANCBZ%xzr>WSYk?A*-y z_3YgH!7D!hEjO{+ZS-#bqP+=5jseed-q){<%F6dN+NC1*O(K5Ys+}^6mVTSIK&NW{ zeeKIJq71h~0;ete|8%j@>1?B4A4AVRWihwfoiuB$w7>ZE_>RnVel58qpRv1P|M|5`|35ipxV6)k-}C3mUx(`=0s=nV|HPdpwR4MV U^-?DW1}+8$Pgg&ebxsLQ03c=vy8r+H diff --git a/mods/ENTITIES/mobs_mc/textures/mobs_mc_spawn_icon_dragon.png b/mods/ENTITIES/mobs_mc/textures/mobs_mc_spawn_icon_dragon.png index 7f75582415c3297cf713ae845258a7f224449cfe..228461b8a193c59f38dada01063ea69c10b4a222 100644 GIT binary patch delta 445 zcmaFKe1>^~WIZzj1B1(wu44=g43h(VLR=Xb7$R(ZQd~kJZN240q;%!g^gu{mUqRhS zNz+J4%UD_4L|Mm7Mb|=2-%8!kR?Ea*+tfkF%u&bOMbFYj-_p&%+TGA5*wQV+#w*&+ zC(gk?-Z3EAB{;<;B-J%E%`Gh5EiA)5JkvcQ%OkQr+cPT1D>~OZCeJ%2-zT=fH?Ghx zzQ`}3*gv7zKe0S8<^TWxcTDGQVqjokDGBlmW^icOzc}PB4+8_k6Hgb%5DCen2VaLZ zIWV+dyzIMsVaAo~ttyf%lIqL9*Y7%THHc+){n~HW<}d-1iirY^56r>{8U#4D$G z$um_=;hVxsFXt!Sl51y*-0eFirNHc;Ehnx#m%-+!H^2)l4(^D}$kr z{p6z9t6!I$`JApF delta 474 zcmX@Z{E~TsWIY=L14D6D)fWZ^#toh>jv*C{NfN9Kd8@TLd6~V)vXjLDp;B_?yLC$|=L=r5;;0Pxu>Pc&EYBbRvVtQI-X9X3^|$c7alQP? zOS1z!PeggLrHg*Jygg+0y|&X=zNNiTeUP^^@Yesh)|va3TebYDpOkT_J)_s|xb&ne z2?dwuPTH2lD>}iaMOZ~lFfi6`l1PE)X-3frD|&A#J-u+(X7aCB6I&YjnOgTxHvT1& zFL0p!eCEU~#;v7dF*P+kS6_y1@ZdT1a*8BJ=)Mz4Q>XK*T=BUe8o)T!)-x&as59r? z-kuO=p%sFODhm#!)axrf3ap>OacV)HgTs!sMNx8BEcAVJB(0vi@A5u$u=3fO6R!h0 z3*NDRYEf;Pe8`?bE+EpejW_rA3|*Uj+ibJi9c0;>G8bm=sC~GiqVJdEBiVVL>dY4= z9OJv7`C*r~V?}(Sij75agMhR|)C^yqlXXg(pRNfoZh6#U_(MeU@7kJ&3ly4yzfVqC zz{FLe{WE%=iDaH=Fzbo3J@4uhqgSpn{`daR_ri>=&5gz%4wi4|*xP(~)C&_^OV9fq}u()z4*}Q$iB}U5wan diff --git a/mods/ENTITIES/mobs_mc/textures/mobs_mc_spawn_icon_enderman.png b/mods/ENTITIES/mobs_mc/textures/mobs_mc_spawn_icon_enderman.png index da9ad355535d1b9b0d544e08424610f4a6d9dd79..79eaa871dee9b0a31ce7345e3591cbfe497ce7cf 100644 GIT binary patch delta 249 zcmdnae1&O(1SbnK0|P^2Nc!=K#{TsTx&b~Rt_%zeOziB;oSe*DT+BQ?EWEra)f0Mp zdN2k5|Nrl3`uzX{0|Q4%kY6wZ1jt*xj}KvBU|>x0c6Z^+-)rE{z`#)A>EaloaenRv zL#_q~9+m?UFZQqhtP`x6v9)!1#IM!{C%XsvscXy?*q6y{%IP?9Kl85Stc3<8=Y^EM zpSj?ltTba?v}6%qfLWU@zd}Lz;}e2PTvrl$6OJXUy0d829>xZKV+EIhY|rN>`6mS^ hC8;1_rhyZ+91l{~)+v@AAnL75(cO-Ln02p4Rh=| zY``-okY#E6zQq66%)hYieY)3nipcF-&BEJxbxevLy;<1wKw*MpwMjDL{Tr4qG%sD| zWO!pLo@ahPZr-9V6)9h0*%>xS+%;F2x9IcI<3BGkr!_?WyWh;jt(d>))v|=bi86d_ z3{##zjr2<0Z^Cms$YJ82mGy^$m_p}UPBgPMFjaE(ayH97-E>=KeKPh_OmsFY~6T| z;ewL^L(li$$Fu@!^N&UDo6BW)CO^$3yY+U*Gv|)$ysLXMCx7nmZM*-2HAlGcRgv?H1O^5M22WQ%mvv4F FO#r!8oGJhS diff --git a/mods/ENTITIES/mobs_mc/textures/mobs_mc_spawn_icon_endermite.png b/mods/ENTITIES/mobs_mc/textures/mobs_mc_spawn_icon_endermite.png index 8e0fdba9422d58ca325e01c7ba7f948b4db9269b..df5a1b281230cf60aa756e0ce61f5ec332015d53 100644 GIT binary patch delta 284 zcmbQp@||gdBnLAC1B1(wu45C8{p%Tw1AIbU85kIxlzp95e4P}%oK$>tS!@@uFzB(^ z8S^+gD0n-o_8=It&a9lRRAbZAU+>$mgYIl>Y;0}b^?Zhx&M^MaabsU%(K0cl`~Sb6 z$3MI~nZBsj>Y+&Tx zSm@Vt{>F?*iIyEdB;so7+)HjH9-PX2!BpXMp`}|#H@~w_Q+UV2Pfvd@ac5jv*vaeh zflKg=sLqll6(#PTAGi{E^Ku-*!zVU2HZnTfa&P?DtJ8Ki{YZpgiHOO{`n&qhn)ZlU7@# zrKM$NW@cw+XYaPl%gf8p&o5Z%-_X#|dnIYo-PAc>a<*>W`v3obTZYT;85kJqnM;EF zf*IuJhtF}D%D}+DnB?v5qI#I|BtHWK!!b`6#}JFtdoNrJJ8Zzg_F&f!=iuu%Xq z&FtRy-?;Bp?t>zkcR%>-Pa4?lT6JQ%&CTMKT1&b(y)OQ&7E3?uS7dhZlWM(p&W0(e zEBSudPQ6@Snx~;THRi1J0n?@1bxK~Gm#o;cG(`Bo9d_aV+sDnc9PAa3O<$IkudFDy zQ&w5&=sPB+g1Ks~BEJM3a%3V~fATZ(p6ALH$Wvrs7iP#+k^hs?z?{ME!na^q!WX5y z4|0Zk{!Qn-c6wFq#)CHJUsukJ-EjTGja|%)S-e6U1)nD}FfcH9y85}Sb4q9e0Ny5+ AAOHXW delta 670 zcmaFH{GD}zq!b$i14D6D)fWZ^2DT(`cNd2LAh=-f^2rkw{p*?HJzX3_A`ZWuzCT;U zQRb+^4TDx zNnnD)MK2XjkCgmtr_c4cZkipeTygsC(v!`p)8C(Yx3BiSb$47l%QdaCuAOsiL~j`>;D`Sxw@yO+0fa&twK|JF}h@zwaI zgz%Cn9ECFSvuDpXneDq~>zXxd9_)=@S}5??%z+(%+R( zZ!!C{mO`0!n~yC5HdUsrfA6X8D(DmEzt(LqDd^E&bx$F~0Pa2CJv1i~?$=gyJ1ag%~pguH2_ZP1n1U-x^2_$jzAuG|;# zKeaOORMS0;cWdW{tY5?4B2cpLug%3-r*u#JwcGG+`>f(VzvZ8od|Lk~d;7aTn;+lX zTdAuRzTl$43=Or7_I&Y|-H)qvwSSH`u(FEMFsS>g_B?A=-n3624@Z}kl^qG-{L@*- fIp^V(kKCm-JR3LOY&_4vz`)??>gTe~DWM4f<|sKr diff --git a/mods/ENTITIES/mobs_mc/textures/mobs_mc_spawn_icon_ghast.png b/mods/ENTITIES/mobs_mc/textures/mobs_mc_spawn_icon_ghast.png index ed3370dec368d95cbae0c3a63832e286d4882b9d..d139df508c8450d20b429f994374d3f13f925f36 100644 GIT binary patch delta 363 zcmaFIdW?C3BnLAC1B1(wu45C8{p%V00(?ST85kHIKYo1g-o2YQZ{E3c=jP3uUS3|y zmMuGa^yu;9$1h#FboJ`hYuBz_zkdD3jT<*_-n@0|*6rK3@7%d__wL>M_wPS^`0(-L z$1h*LeEs_M|NsAQ75Y74U|?V?3GxeOV33cGpC7aS*=z;|2F4_BcNfVwd0RUe7#NOw zx;Tc^Tbw>S@nD#fBaicHo8wx3#?$v{{r|sI?|>-l_LSMxmzJ4Uo9+GcSYN#_{m<6z z51D1y%N`x8Yc84Czo*Qq;+9dWg?$(dDUmam-A}Ht+k;U{T>f@!*to^FF zK3yAjH+ZspPP@r8bD7nOlvQ>Mb#AKI%52QEWjUp?rfNY+;-y{IGbAHUZZiKb5qWB! b?|!F8g3C5+kJ`$>z`)??>gTe~DWM4fK3=s( delta 661 zcmX@c{El^kq!b$i14D6D)fWZ^2DT(`cNd2LAh=-f^2rkw{p*>+JY5_^A`ZWu=IHm> zK%~vyT98Y+g=OohF2O88_6H7k8hFKDa=LlQv~x48?wacu7#S$}yE5#XMWTss=Cs({SeELxcxUr|@rm!F?6k<6he;B-LZaMspCQKxU-yt%%+ zyZh-2mbkb$r31fzTQ9F)zMLT<+wj3i)*%jXsr7830Y2Od9G=I7^U&=KoCw^@KGG<4zCbC0CC>}DMJ z`qlLL^XD;fahsyn7M*|p?wygQpkhlyao^#?hkf$W?tHHn(nDgw7^@ z1|K!yHCuhug!}sXe*E}xV=wDT*8f*8uUhrtUU{1Ru^Fqkto+mL8o~5UeZiI1Ag-k$ z=^^E1hkn+qyEO3|H$N|F6gaeC{k>aVzYS-feK+}W=ZUjbd;N}VQv9l(Cc^ah zNM`(t_=4%XB&Isd+_5fuPI098>#w^uZ>zVD;tooBU+bRZy#0QlNx-yPv)Omm9hZI7 zzHO-0Sodht8Q;q(Oy_nUjQ$j67oe6mOHJ6L%0qd_S&cl`1wM1?d`|sut9|oW{UdwO YEW^rss%`}88w%W9ps+2+0t_)~U)mvf%a zhL86w>e$6%L-=nW^iep{-N=8FJvKzteOdU0t4rDK=Jtg+$$WQRagF)><&AC5X+86N z)5|1<*llOC%x5&a^&rVFN$uLSb&b8NLvIBwU48M^wOv22$bV%O`O5Ns!54)v1_lNO MPgg&ebxsLQ06@}Pk^lez delta 206 zcmX@hbe?HKXZ=P`7srqa#o3>4UqrT@(R^Qc|54rn6_X!Vk{@#H{+qq7Gv|)R z2{BIguR9&TvMA+Uk+`~TE$a; z=}j-4go{iMax5s?dU(N|9G<)+66JAMg3ENv#WomP5_J5-~jekrcUs>MYKk@$< Q0|Nttr>mdKI;Vst0J5`Xw*UYD diff --git a/mods/ENTITIES/mobs_mc/textures/mobs_mc_spawn_icon_horse_skeleton.png b/mods/ENTITIES/mobs_mc/textures/mobs_mc_spawn_icon_horse_skeleton.png index 0f11de7c9fab8ec610a6ddd390eee329ba6c7a7b..266c8520ee0de6608288bd52114e35fd8162aaf6 100644 GIT binary patch delta 495 zcmbQhagt?%BnLAC1B1(wu45C8{p%T)2Ka=yGB7Z#ozwE{+R=5h+U}p)_Wb&x)w5gI z&S*V%V9TA;+n-%O{Qk+6d5(@|CTbR@8n#xtcGh~%Hs-;eF2TM&3E{!%aehT|a&tS2 z=Q%m8p4qy3R_ofCt?OsEZ<^n|Wns_uB^}#WOxv+^;?7kwcP*Q=d&QK4n-?EiKkMlB z6({PqEjYDf$?2U-&K=xxVgKq&hgV%Wyzb8F?RU@YxOZ;X{qwt@T|fN%_R058uKfT1 zfBU(Uw-^{0cuRu(f*IuH?d|RB=kMRYfB$`kPix*XFfcGCdAqxqx$p0|$iTqx#?!?y z#KQmV`O{%ch5{@X!fL!lj%#@Qbm`^VvUJMN|MAHWEiES3Cl+|Gy%bt5y!q{^$IouI zKlc6HDV#R>T&?0nnKCA?>k~c7F6`7+l`x#QcBa0n^v@Ofm#$~8wU63+qFqJ#?eo^n zogCk*zn8E7n-!kc;`wB@3nNoOa<750v(vc~297UG51Jo&?(?L7E{|gnql2Gtp;n5b z^Q`R+%?yd$9wN_wv&INGJf1A*=3sS4o597RitqDof0YP950<`q{o09#eRJ)# z!cwt}kpGRJFR(RFIP|K6F}#`S$Yz0myCRN8G%Q-Zs#_>0f0{|9@}~2u&i5D?7#KWV L{an^LB{Ts5Y!ve3 delta 954 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 JV|Get0szW8I;a2u diff --git a/mods/ENTITIES/mobs_mc/textures/mobs_mc_spawn_icon_illusioner.png b/mods/ENTITIES/mobs_mc/textures/mobs_mc_spawn_icon_illusioner.png index 953e90f447a50bdebc23b6164f8a04f6ed11476b..4e79812148e0eaf5315b08bebae78f5047cf93bb 100644 GIT binary patch delta 524 zcmaFF_KanMBnLAC1B1(wu45C8{p%Sn1^9%xGB7ZR$T(`a*6P~!>H79Hb#>|4^=X(@ zYgsnw+4YLcIZ3JdDC_5_804xLMXj?XE zTeWCgw`qGc=~%bv+4bt%w&>gS>HGB=SXUW1Og0FZXb?Er&}o`s@H8XG$wu`~(~UxA z8imd>c5F8en`7cS*WBFP!oA1V*4EZ7!p^JJ&a2zrCC(+L$JN!<-8b%`57|85kJud%8G=SoEIliw|#d5O6>FNq(kA^h=M|K3QDb z0%tKkUA5)QU;D`!>w9cUY?lB2wfp(Gh->?kWmsH}oO8+YG6@e~vtePwJKKJ7HLd** z0$YXO7;N4B#W6>b=koRoVQr!%yI%i&ksX@)ZC0Fm;I6B$7FFzTIqoV{`+8{#Q{@lM z@RQSDD*e=}Zyteyf&4-!t2gI2KW*lhTmBDCN zVE@dd_wf!r2JI_LAA8K?_2QbOZ}RET>N6D!zqF^t87$|z_Ex`M;L(o_$CtM#?zuQ?Yy^0 zqQr6g_h;U`+wtnvFJ)6s(IZY8yO#uH%Gy-E5a)Wh)P8~UgM|kUIJYn0@GR>*gwaO%<#zwR;{>$!Jq2>~L8*`*A}YQ-he!p{>02jAHZq z1ZV9(w(wPY&8%I0UmuDxn2J7pZxC3|_$vFF@Vb@fmg;_tp$tu@4V$AE)b4O-d*!{iti`c(yJKncssp+3bv9j{h_k8^y!Qpc`uQb{flIc$cvm#x(kafQU&|Ztcr9Bkxp#w< zFZX1>+bgoR8K1jzey#Mgn2x3@$-U}_Ib2nz{^?29pIoN9BalGpRg`q zl*r9)_~eYnxVY r`ZoQugTe~DWM4f3Ep>j diff --git a/mods/ENTITIES/mobs_mc/textures/mobs_mc_spawn_icon_magmacube.png b/mods/ENTITIES/mobs_mc/textures/mobs_mc_spawn_icon_magmacube.png index 5d6d58d3f6904999dffb6b39316c868221ca999e..37d2bb6d4cb4e38fed0d81e075710bba80aa1e8e 100644 GIT binary patch delta 352 zcmX@ax|?}|BnLAC1B1(wu45C8{p%TQ0(?ST85kH8q(zN2l@+DMlx4(K|1U&qMlmojFqZ`R1vA9& zpVO@!!N9=4nB?v5BFwWpW*P$n!$nUQ#}En0vj+qHLLCJh4jyZ+(v%7Lwm;%|y`ey7 zpnY%X=l?$^{51Y9npL;BdYxR5*xj?$3qJ)e7nhIQ)SdJ-_byJk zcyN)@ti>8JQ&h#m&t6m$^A>Y5b-x|F?L^p$XBpL6B{nxc?XjPP zFZSKBNPJsXpIM}fO0;RdMzl2NS^a{q$Nt2bpSgeMto?W9bs4-nX5LIoW?*1o@O1Ta JS?83{1OTk3j}QO= delta 617 zcmdnZe28^|q!b$i14D6D)fWZ^2DT(`cNd2LAh=-f^2rkw{p*>uJY5_^A`ZU|Kbt3P zDDY3{&ioA$=F@huiwUeQXo&gj@YJ+IW?nP1|Ap*)4n7gl3EOn?c5S(NOlHE_Bd_Pj z9%9v0cJ17I@8_}k`)3w5%zgVtKlfwNw{<#2duN>gVpiwY?C{+9@89F1*M9LY6S?zm zT^1|DkAi<&x5rP53J}{VSKseuQT2m?VZvSemMAj;8|Sstqz?oY_&gN}D#(3i`ek+h z^ZWOBk{0L`y}dni_v0y{Tba(Q-ALvMwmh0z+Ie~N_r(beY&Ue)Wu=z09ys@N#q_3V zhpjnpEJ|H2DjWE%TPMBdy42gdvP&K$^d$aIke_c?-zajY>BoUH-`CXKO58lXo{ix_ z*;Tjx!vFUdC2e|;RoTJqtC&Ncu3XH-aM1XDl%~b3`Q{mUdB2S(*w^2=*l@bb z`~TjLH>5R^c_trj{vvo`OVy`&RNU@;?^?(>=kGl8ml9e|iu?CUesF!y-L*`Pby1`;>-HWVt^;dx+RDn^*-|_< zdvzJODzE+iWv+;FvqXVz$VI16LlK`1vcGpNyv^;iySGz2Y)6LmyR!`^3s=?L_iN8e zI6S-46fslXcIb>~FiO zK$j%j)W_>qD{`$<;g_kyxLYP`qPc^?0N`u+~X*Z&MP=k(ne7#NsKg8YIR z?BgSA7PT`lFfb;0ySoTJ+G@Ltfq@~>)5S5w;`GzA)_e^HJj?-~Gc{FB1b69Tm#W5t}@Y`vI z-pq~yt@|yTPdszr7JSpwtJ$(etEs6sVe+wCW=jNTf3?4H`}j4JZ;S_z*@bx~{t=v~ z&QZ9AMOmh5_dVT1d-J+$-=DpG^JXiTsMeqKm^J6L9rh<)nX3Frlt1cc`q%5(+|}!1 zOy!mTwq1O@Jfy~A(S%0~J2~p}uJ!KIc8M?Bs;;UoaPt1Q;B|5qsfB5GXI8TYdA)CZ zI#u<}UDes`(RcEXL`Cs4%xtoL?BcbTbtTuzQ~k%dW;45`eT`atMA3h_?#-*)+&D{5 z9)DTNa{uUkxy1W^TR*UD3M%ki@XXpHNOarr^9($*4fSVfe8^UwxSmn@)CS35af>5z zHU%YitO?t#HUI6D`?BU<+}yb=e?@t#!kW9;O#>G;>Dw_po)XO|yrZF$fq{X+)78&q Iol`;+08NIQF8}}l diff --git a/mods/ENTITIES/mobs_mc/textures/mobs_mc_spawn_icon_skeleton.png b/mods/ENTITIES/mobs_mc/textures/mobs_mc_spawn_icon_skeleton.png index ad6d9f228a4370796ddd9075f713bf5725d3a0e5..450737604944ff0b2035ce488f0bdad77d288a8f 100644 GIT binary patch delta 386 zcmcc4c9(gABnLAC1B1(wu45C8{p%Sr1AIbU85kIHLv8!|`qZRFYinx@3JPj!YCv3B zaVrZ8TRjyw7Z*Q2zd&1qh=_>fFc;Q#@bgU1tQ>g(K!*OKm9*!VkM z$aO<*rt5^0_Mbm>>u#EJ?T}dX`%@7&9);fGj^32IEp6jb$%)%;DA{kjmXg)}FHO+T zcJ`?YyWey_u?v<|$umt?3bfo;7g4+OM84Qm=j*1AI6VSC3GfHE+_6^mzaP)BLF1>Z zc1riDyU#zW#QRTcK4o!g;Z3gYQ$KAkS??{j514sOS|u%T_Bn?RfvufWTaWg&ym@2b o@x~wmgf?urp&0OCdmTg8R{^0-I_IV`FfcH9y85}Sb4q9e0IOfB+W-In delta 767 zcmcc1e4TBAq!b$i14D6D)fWZ^2DT(`cNd2LAh=-f^2rkw{p*?bd%8G=L>zuQ?Vz_v zpv-am$L|FAtPcurn$wiUb66~8VYC9r#ih*w{~cOd!f*bTOIr6!V3&wu8Ml~n(=L%I zJLFz1b1ga9s20h2=>DxYS}z`!p7dOLC{lg*7i-(Jd$WIjs=fdI`}gMmU;9scRXb$o zzWVwr|9*de|MFjHcDf9L^#?!OxUei0@zQi*5ll=@RyJjp&E(fuI%(@;iTwq6D|!-41i^E1q5*HrwMYd9Ug?#(6lXJ#_e($%ayU%!3Zv~_E1hd@0`qp6Wm zQrA%>FU>;+O9C_!Zks(Vx_N3!qtil%%{NmrGdZu926`>rYPL2^d*i~OE{(1ePmAi^ zTh_gPv`f!XAmYG;jtdzkA8O_Af7hITdfMw<7JZZVvhCWn>&1%~2MT4jTyt~jcs!%V z?);}uMzd$n&RBcaZ*B^gLf4`e*5ief9@J-UjoSUFysGNf62=Ky+qYgzD=jT8OHEB( z@$HZ1QDfVZudyr#KJRg1W|%yAvRLHwYqw&gb!J{)zv|i1#k<)S1g)I0xB8piX%lw6 z*uCdAPk(>o_h+xANw-cm*6v>L{>et^zj5>KOg!}F(W4}x(|wN(Y;1D2?N*ww%JA*& z4dUmjxVP5dlJ=WpSH5ij{`m$x8*^uG-D=9l#wH;6>Z{e=yLWGFJA3EOowq)c8ec1? z{IW@#Z{zbv?zo|_uyB}&>yg4USFTJ^RpRe4+&nWo;pb`ded|m$=f0O*wfAqw>s|Jl zXP!>_z}fU5?b+EEw-Qdyv8tPLd@JkfZ{L!O&d+ve^Fzu iVBYcv|Ff3wW4jt!SQ@bLcbYqzTB_s^W{DfQ{9)Y`D3 zi%pUOOSn$D{^ylsNh}I}F?FYqzV;F&5s}#q90%){Ec#lcbWg+Nhve)nRx>S)pTF6A z{rGRI$!4?WSx)9?QutE&2@S^xFQH+55f!g2gz`7kqv8jOB)`y?OHgclI8a<>a&e z90*<%G=Ig1#at`1d$>&7)Ar}?&@J3FRk*yUq}-tTg^l(8s=wFfsI&AHK7FRPe@7X& z@z1|MuFQFNZ_0wklQRuhhV$J#u)y?^pNn@r_g00e&c&8fZ+)5d`RUe&pM_tYEIw1- z{PRG0qj{xMLg#98^UCkHbl3fPax1?*`|i#!1^jol*Z8>|S@&T^M}zpQiOgCo2F$rO z5*Mz7sE22i+hmJ>TY6iTn_GrEuC{t|`TDz$PFc_1FEi&woaXM`XZ~&J&$rpAt&^Pg zWQyi04~BYmhlZ>A>n^_QlUR4Q@Z5`}l!?g)*Wcf9baj6Izcnep+h$CXd#5~g`Fo|g z-&{_L1jYy)VPrbTxsY#$gS_(Qb?IL(d4Ag-F5we3C-_@kxqN6Jht7_w;?JKCY&US+ zW4NPYo|W|$7N3KaM_ZeAHZ7fZDeY67%G*>O^&^tmuf=Elt*t*(V5EM<>-TZZonLRP z+Muz)!9u|xX7=MICN^GnrT&>*X-z*E^Ee(Zxgg^Hs`UzMnVo=BYKz;;_iraZ=i)fc zB6j9iOYyNCS|#k>41-6=}l`aPaj#%y~?`ZfcDP8RH zK$Ay6a1Jxi8HetLM>{?{?VkN(`*+OMI_zf-0 zJJuT2N&jeY6f2y&GNdg%3@$FaKK@5;G6~L=QD5q z-YCC8p`hoI_#DZ?xD%OfrUf&kk}jCY1umVv?TA4AMZHFbL(7*ay?D7yhgh@Aw6C?EUR6UE?erC3!sesR_PFJ62HJiS@G}mZ3q6cqJlAVD(SBg* zX>+p(wSp;(Tq+^557w@l6DoSDQB=;5ucP1ugQsNDkxfM>Rvl1}V>>nX_4Y`&h@`*A z+SsKQut_EG)I_mHu%&+y5U5<~YCM-!=1_zs{YHO#6H6m{tLs1@j!% zbIkgT`i%E)@2dN4{%8G~`!^nV#{d1tHvRss2gc_=`OjD0{ONVkg%kz`1_n=8KbLh* G2~7ZYn3N*` delta 1398 zcmcb_eT9313O`$tx4R3&e-K=-clqRrivIPiHl8kyArXh)PQSf6HeB>ree$`T*KSQO zF7vxIAv$|Y+zDrHH3bjRTkZd(g;*XwS$aYJvx=S879|mp*$o^A>s>DXs!-aeVN%iS z8)R#lK7aG|)VO0G65p$-PfzyK;BZo3v-d{#)@MJSnIHRp*6`uxkN@rB>gzuT*Xp}h zzI<(euioadjeKbD!}tb zUia@0!@V8bESbxe>+9Uu|26+o&4G3)`%hC=Tsf}wXNl7*sl`rb7v9X5&hws=^YqAB znY+Gc-dUeNmw$iPJ-IpdGG1@D`qtGxwMzT6{AK5~f8XXTXso}vQZqAvAt&X6WTyI} zrOiYy9*stl!q}NyX zUR-n7GWC6bc|fgDO$FEA`Rx08IUn_2{JHtc&4sE7T<5g)M9zrn@J`X2{9P$izdqSg z@!X9aC4EQtFY8IyT^P1&|Cy6>k6(LwlOg4+@x6>fN5*Eh2a2`Jnr150wMaW#=$Ray z$fo$Uac+N0faJo!w%fm-gz<~s5oQo`K4h63CHkxWom0V%2b_zgIQc#{aW^HN?m8@Y zM#OEw&O??9=eg{*sd^>mN{*h_v+SO>Uk!a@$so}Zb>rXXrnmdwHaC7gwDPm@GHK;smCNpWF4$$V zMB>BLdV$jdM=bZ0cQo)y&bCu$-d1G&d|LgPFdh-*ZLN9V6B1Let={TxZ@1y@6SL&w z{RbM-qOBr7zxe#)qmYB;&ZxweOO5Lp>rXIUac~IbXQ*nc7mhOgGC3*o9nF50GUx>xXPYN=1JfK9Eu zr}f_=_mIO}Jh3Szvh^4B*)m=&pS93>Pqq1p7*=_+s*rLKR)89 z+xfL`)~toWw`K?`JoCv^zFXrcBUAP6%%-6E?rj|b&un805&~{{JmrzLG)WISb)~d* z)}`;6SNV0g`I&v)3Y+#-u${4EsVhlgNY${2KBc>y_3DYltPaP^6)scj>+T6UyZqk5 z^Go9BN{*^eCI{B8U2VRvNJZ2}>E!hDi{pPWJ$)0|c9ZkdEyGh8KA%iG9rhdCdVAu6 z*2b%;jA_v)CBGCucX%RK@bHoK^!_zW(VPYgUoqr|K3%gapkXVso$@DxXievyh`6ua zSDRPHGoCuT+Pv@HwD_v$o8lt__wI`EZ(Pqby`g*cZ*TV(FV5%3?)~`Pzf^C>mv`H5 z{CcNv$@0RgAggpP+c~EAxY+ymcU3+9{(rOZrKQJ<{%n5UtgTwr)Mgs!FE=pw|NsAsNzX4cFfeeI1o;Is zFfcI0*YDrIpXb*#GX@3*#w2fd7c=+$9TyoG7!5pK977}|&mO!OB8{M~ zne9e*bduGL`IqiG%DJtFVaCep9kaQ&^|&=;Uam0voyohcR6cRtyR2!V))VGxue>+I z^u~f?`zsg3{K#Cf+3@Hxi`hk&jxNobv-@7hl&1fsPgiiOu0QPBvN9#;LsFR0OF7}C z?DeW?ok30?bUtqLx$xEA#woukMM~pLg_6%xiG-C~zinNil2T z#L2(2btuqs;L&A0e3;5az>ir9j>m0RD-CLA<47va7wVg)zD zIwONVMs1<;2w|3heOn_8*GRMJ{7FjapRz%usrH8~CwJ3cmk;Y~m>PGh<(}>K^#ld1 Mr>mdKI;Vst0O?B1R{#J2 delta 1097 zcmeBVoyR#rQi_d%fuXpn>I(w{16z`}y9>jA5L~c#`Q(X;{`D+uo-U3d5r^MSznv!> zF4DF?w_4(u@#e?ON7=tJ$u|UOa%pgid+MDiE(rX}S<&)M@fTNZe~bgi(p;gYkO@*T zp(pf=EY8Wi$?Jc6m)qQ#sgZ%xBV>(q|FkW8{(b$Q{eLt2z9Y}&!k6jKUtw1o#NfnH zyD>~Tb%_BFa|8Qr{-gEQ*XI{h`T5H^9qKs@Jc-G2D@-ezBt0%8FM8 zJe`X=G`c+0CV%|Al3~aH)9c@qm3{qmDQV8;OJd71kKLB%jWd((KhCpQvEH^;%dfXF zX(h*k*H^P@zHl973iA53*Dmaq5|0zZmTMYI?ap-QUCXjcU2@|2XP3a1_rE1po-E8V zjh^#2|MujQDLRc)w@nB-RxPZ-Xo312UKyeIc|iPhZe%lcJUglhd# z$ldq;^YL@Sj2rfBS#j9lh)uw&pNyAEKm2KkNj&5vz*7I@bEVZ>zNME~PQ10wPAW@t zTP|B&y8iZFLFUR&LLQG66pMDdnwf1sQup~a_vfg;i(h=LVz_guDLP6aw*9@y9Uqls z&Uq&PM3!Y9tKWD1?&7eOFV?=zE&TrOS6A+Bo+~c1o-TEbT^;fzdU`=+X5jn%0oUID z)!Dc5`j(QpGa6@is?^)RE1NJ=M`>n6?UxrHz4k_3jmj>Q;w@Ymcl|l{b4k9%SHD(& z59hO3#r9&)43DBGX`rB3ebve9GeBSSzO~h{nTh_5a;>NkM8_BHZ5cO?ZS;E^|DJ|%k28w z;wWML;M%usH{uW6oGJPDoL#``kP^N5hYfhHy<4~cdT(Z8o!{(bC*N9U7v9~vdb1S= z)3L`N7e1|4X14Ba<7j%YcQ!N66^8qt`JbAZZEtzKYl_#>i2uo|7VqS~FZ;kOZ~r0w z^#5%eHKzoX#Fg0nGp()63_O4KY;E-vl`Zq1ST77)`NIF&8}C2*kK(s8el_U6TJ@8G Pfq}u()z4*}Q$iB}sj48% diff --git a/mods/ENTITIES/mobs_mc/textures/mobs_mc_spawn_icon_squid.png b/mods/ENTITIES/mobs_mc/textures/mobs_mc_spawn_icon_squid.png index 73e475f4679dc5ca3ce01315e2b808adab00133d..43a1d4e1d374b80f5a6b3053958aa25b0c41125c 100644 GIT binary patch delta 331 zcmdnOx{P^(BnLAC1B1(wu45C8{p%UL1AIbU85kG@WHf|iwItLngypowRZJvQ%_P+= zq%^H%v~6W|9pw#N6ph_gEqyg?1GODObsWPD++s|;l1#jl%zRVq!g4)Q8vegH^Z)<< zh8&q<1_lO}k|4ie2K)K@4Hy6U&%nUInB?v5A~8F&RgQsyVU4GYV~EA+r;`uX2OW0c zaSqNBaQP4wQug_O{VnI2DQ!8+zdw3Cxm@R_weSC3t5(T9SomPWMZxgBdvkuQcbl~T z%Kgs!O4EL9547Y{1p39l6!Z|H$50}dJd()OS#@_mEU{n*Yb29Dy zCC6zhrytaEoZ}BwRp9*H^K8os9#5ubmh-w6=JK`|9SkfJ{VpAp)4Qn7bGPpL+`m!N nmOlQ=9k5bv&V}Im3EJnaxTJNqnbb2dFfe$!`njxgN@xNA+%$MK?2f7uE^BVSfYH#cikQR$M)D<@& z@YbCy^F%?jHd9pm)$I(;lXxj*&y@BhZ>Cd?C+Tz{SKy8HC}=AX6YC3h_TS{(Df z$Npo!^@Mx(bhn@1FLR!`p7(X#JEo$e>g(3}Op{x(Vf|Y3vzz_((-{3{ciqqlcpoQh zHA~=zm*SEosdFxFzj`Due`;gk2KIh+A)7n(KJQmKo`1!ZV5%ROR;;$+d(9%|mv8SD zDb2HBiio_u*pCY_S-DUo5Q@o=Q4Y?(>WHt z(~b!N8lf?Ys&jWWs+F|-3BIt&V`9vu9Y5+`mA`pj>hs!f2j^G&z6fUCaUm^4BQ(Z#?!m%e8kfJky{{?v;pg9IhPuBYJDAxQhwZ&O z&FN&em{`bpmi7_S_-^+G%h-h9?`o-&)z-{y3npzVB P0|SGntDnm{r-UW|U8f~e diff --git a/mods/ENTITIES/mobs_mc/textures/mobs_mc_spawn_icon_vex.png b/mods/ENTITIES/mobs_mc/textures/mobs_mc_spawn_icon_vex.png index 8d01c05c2915060e7286bcfcf24403747f885cd2..3d3488eb784a87cb18dde240419e27128e1b2126 100644 GIT binary patch delta 440 zcmZo?o5V6fl7pFnfx%@-*RhGl{`CwK0(?ST85kHIJ$m&2|Nlpi9=RqYcqAu#dV2bI zb_R5H1$K7__4EYy_J;KJh4%M{O_&frabm{Ai5Zh8XH1=%Ib}-L{rQ|L^_(|GC28PR?E{-7*l6Mbwn=vIyuwHoV*J^P8>3pRl7J=t}@1NV1p=)gG zP@Vk$hK3E(T_Yvk3vW}N)Wv*|_goXwTBSitX;pEzfnKK&|Hii^ubR8#>OWmtaQBC4o9g*_v(2~cW?yut>ax$pJf0~p zq<5WRSQ4wg>kPva)dRx2L;kLAioJAcLwB{xw~OLCWMn2kG}L*>z`(%Z>FVdQ&MBb@ E0P|Ad`2YX_ delta 687 zcmbQl(#|$PQi_d%fuXpn>I(w{16z`}y9>jA5L~c#`Q(X;{`E}xo-U3d5r^M~?#~u+ z6!~}W%o|>rja?oGA_cflPf&_w3Tyh|&eF}|WOCz~{RZJ9cP57XV{Gc3aIOBqsgTS? z)!J_SK`NSM`T6%ZpEx_i``eQ`7wPxSsqJ?wjqiVdR-NA+sA)zTZU`qG&oF4Et+e|5RonDD%ioH#KiibdRk-0A#thQMC!E1&CGA! zym@f=VPe4ADTh4gB^MV8UW>|D+rFz-;>-%+`L>ljYfU>i%D1+yy{@SAqpGY;qwCQA zLc@Ba##vhihb79Ha z3KgdNm-LJ7+b&owdhpB)g+L}$iD7A xH}~Ij=4V4~J_;HXXB@m-mCz=c_Jj5AVmrH6CX%Zd7`PZ1JYD@<);T3K0RUmiL%je1 diff --git a/mods/ENTITIES/mobs_mc/textures/mobs_mc_spawn_icon_villager.png b/mods/ENTITIES/mobs_mc/textures/mobs_mc_spawn_icon_villager.png index 6b0d0c083679971d923d571ed50acb131d8b9756..21e7994f2b763ec5d7127951dee889eef31a66be 100644 GIT binary patch delta 391 zcmey$@`!nYBnLAC1B1(wu45C8{p%ST1AIbU85kH0tqdnrCCq5ZFt;&waJNy{Q8l(O zFtsu=vobQXHZr$0wy-s^ursl=H?^`iwRNztb+mMFv2k#>4T%aUsLU)%38~JBu5Kx* zi?wPhN@y)foK&4Or8Z?+ecJTK^cjsAGn%tzHm1*P%AC`dH@7W!ZhQW`+Q_Z-Tet3* z%K88Qf1b_WMGOoKY$ZW{!3^^A=kMRY{HN%21_lPkByV>Yt>ArE<}olZZ18k(46*1v zd*QTDlK~Iwg&$ths}?9Ibck&Y{rO*h%TZlU@4bh4x~tVriadB<^!=Xw^qTzST~it6 zl>XE5?N}hLc4tj-7}M7eQuo9eLvk-~<1hKfW)yn&%JaS%b-r%-(p-j@kFYp&L^@d? zZZtW5*zVu*Mnl&=SE+`iyd^CL_YTDF%C)oM-;ch8i!2gBjpO2PRr5{ vl(XJHT-d{KDp=BvQ6!mV!%XJ=C)q`lxL-a0;&_#Tfq}u()z4*}Q$iB}eUqDg delta 539 zcmaFF{FP;bq!b$i14D6D)fWZ^2DT(`cNd2LAh=-f^2rkw{p%U;db&7zt_Zl8ZE zK;Zw~>N+#VC1nd%YAHJHWBRMUkZ-0{+1Xh>k-tSZJ<$#coTlNtR4aZ#^vr2r{CV%|%D?ZnmX0`?EWWAsV?lkt>{Gu;p%>q) zkIVD-l|SG3_=d&*E&GqxvpK9d-09aYWod4{UH7;dvsdK>tA-#s4j!|fK#N(o`#e@p zbK+Rd6TzsUsDAOWo8~m82ao*uXD=1*NECmn?!IEruLg~-H4G7j2^L%zUgapin)mq9 zeKxD*75_?j4_`EhX2^eKsy4GEPax~WN7MPmf-H=7=5=owZk$cw+f)1fQ@ynGJta>A zLuaqX@1f%H)|=0$dp?+PF>9M1~l?%Vt$nKFIyCD=s;?jEAjR xo3k&Tt6}rE_gB~^K9zZJ>{Wl7YUWA%^+`+4@~_SQ$iTqB;OXk;vd$@?2>?0q_1gdd diff --git a/mods/ENTITIES/mobs_mc/textures/mobs_mc_spawn_icon_vindicator.png b/mods/ENTITIES/mobs_mc/textures/mobs_mc_spawn_icon_vindicator.png index a8b208c83873fcf02982a4672cc1a7b3e6a1640e..d7926703613fb6113b28aa59a39f27a95dfa1a1a 100644 GIT binary patch delta 373 zcmZ3&dVzU@BnLAC1B1(wu45C8{p%S@1AIbU85kIHb8|&SMa9L%B_$;l6%`c&la-Z~ zwY0Q!b#?Xi^$iUTjV$bqjg5^h9Zako&CJZq&CRW>tZbaT?CtICo&B8Lf?Ql&+`Yqn zeSJeiL!+ak)6&w?)6+9EGjnos^78WX^YcqeO6uzB8X6k5Zr%F-|Nj7&DYxqx7#NsJ zg8YIR><@f>z{ZBI-q$ z_?7?vT^Gik{xtqV-wq%l6>eQ_Yo z!hYi7Gj5Kaq8^F?q4T|+Z)@>6ypK7*$GlyW$3l-WTup{qOx^47(<6yo7avq!b$i14D6D)fWZ^2DT(`cNd2LAh=-f^2rkw{p*={JY5_^A`ZWuw!iO| zgTS$R3F-BX(UOdgTwcx-#SU&=?(I9#{h?@uv>emYokA@d0V=1Qmj}2=uqfR)_NTZ@ zSi>W{g>{aS`PB5>_jRAonr~))|E*tl*{9&WasP!_4hAbtOxS*Vj^Vck|4_dkT`=yYT!cGF+d)cxhrxkH+@%|*<_KNUedMWX-sjcv6;f8|r9>UU?#&+t*xneOejSdgEef5x&(n;-f7`#Bu+ zraNCREs0%z`>j@d#;VT@@^*E{JW}JIGraDTKm2}<@K0BUmNSoi>g8(B7YiE6$0}R# zC|x&DWz*62Jhkia*LvCDf{H$thUYsg=2bs(KjmOF)2h=-?($U00KLP`_t`s+m$n2* v`>0L5GUfd9!`rXP9^X07>i*mP8}Gj^J^1#ddE|Kp1_lOCS3j3^P6qyREX1J7%Bi z;*jCuobK$L?dICt}|du*kV5OH0HF83rk_uIb3O7%Ve_L~ zJcjqqJ!P^=oz~LOz@Q*5!YaxdpvREaQ8D3RPWyunUiU-t-?i0}dFOtwjy+n-p_e#M z<@oK*C$zpFw69)wRXl!=mVSf$hJwk@?Hm;U9{P0XLh;fWhKtQZc$)>5{VrKhgTe~DWM4fLP@_* delta 662 zcmZ3+@}6~qq!b$i14D6D)fWZ^2DT(`cNd2LAh=-f^2rkw{p*>+JzX3_A`ZWue%4zg zQRcY)ZsX0p+w>Rvt<{W}xJ14BU_`aBlF=RwkL`M;FG3tUF0Ncquka#l`J(KFPeR2G zt5|VNij7k8I$D|@Sz2CJURF|`W|h%>ujInS1NWc)JlFsH>EZ9+ZTQb0aC}qz;||}R zy8XukrTZBc=q|ZeS0%c?{s50$?_L$3x2z) z8(-#3TP7U+>C?gkeb0sNPFwIeMtasXMXAt>TY6sGKHy6Daa4nWxw$s9_UAX%MS)kP z8|u4#dwdNIZiJtGUi5P>>yGaa_Xg{T1cWcYu!W~f>Q)e&?#?ac%O5$BYS_tc$I4b=W{IFLZ)Tz zv|?!ZklZrcOJZ@x0}dwlXzB9pEDwJfFofM)^oZGb_S5f|gjVnJi@RJ9trS{31(%B_Vm6#drP?CQxsqFV%BXL=jBwUdNFDW+>~eUGoAbB z$VY|xG;Rjzs4sj96Xzuu-t5U-XMa>|a#mmdKI;Vst02{|TSO5S3 diff --git a/mods/ENTITIES/mobs_mc/textures/mobs_mc_stray.png b/mods/ENTITIES/mobs_mc/textures/mobs_mc_stray.png index 21f15614dbc364fd08f713582d58f3c2cbcb2a24..4e98d526a9cc5b9ae1c9b4e2ce5b04c66fb27b19 100644 GIT binary patch delta 456 zcmX@lwvT0k1SbnK0|P_A=H%@Y6?5ttV>KTGtYn#iWgM6knCTM#%M|<8By_B*<*kxC)d(c~pZ85**^2|K%{MnXEQ6sZn z_d<#5$thd5wk^BOxFN=Fi@mPUW8tcXjT{SVj2Ax+{3hS zVd-v%&$q6oG%LEAp6Fe#$D1y7VD5z{?QfW#_}ps- delta 731 zcmdnTa-MC11Sba@0|UdNxpgfQ6?5vD)_A%&hGaNjo#vQ#+kwZmSoeK#7sK6c;xCrD z`d?gE)s)v9x8V1p@}j>ybr0L0_2hU8-<1Dxq2PyaUEi_7dCxvP{(b)O`s??P+t>f! zt62TSuR>^l-M^wgKR$g*d;c(ySAWvyL`#Mj)$e;Rd+&Up^<#tGo)?Gj9p;rNV%Qt~ z;BbA|9@cDodzPyg&gEEq7F+Z8k3fjC^WCl-i_Z@OWB*_N{_4+}dKPUv8;NWDj@k2` zd^#|*yx(R4zgJ#~UCx{KQ*(GeZEicM#eZ_)%c~hr6?SgeC?9of!9BVCZ_l?MwrpE- zvzT{H)>%W4(h#{b>}^&8M=ynKeI{Y{t+{Q2;?d~(ciT&B4j-%gV1730|2d~?|H>Pd zub*0O`#UaQk5Bsd!S*xuiAt4{YH4TZeVX|qMEn`^SBsoC?fLWVrZ}%rG}X?kxW8Na zMOKp0{Wh^pX@2}G?k1nmb2#_+=(n;9qV3A-)xMSnyn0@ELeJog{Lw0&n`tMQpIf8| zYx$p>pv&%>;!^)wS1Lo}MZkJ7XS2j9`#H7dtxQwQcCtEQdiDKod4?}BtJy6j62EU) z_tl(R|Ha`B#q32(FB&|l)nK=jcPTvQxc<4zZZ54=+aLR;EMuSfr1*+JX#1ZSzrTO} zGhYpfGu?76{m`+Z3uk<_#GJQr7)d?Ux$tb>&3?9UnN3d@%-FYFtNvZ#iCGSl?@vlH zpIiKsbG7t=;JS{5NkxgtmPO3{*G)cbFFreak@%H`N59>i{3qvSzSDX}kdA)8D*_Ye z9f(_cb#mP<#x=3tJh9x7?mwTtFje5YS#Y8Mo{UKL!sqL)Ud*1z{%uC-iF>TCDGz;=8V#j)Onsve!D^Jnig#`Lg@$->hk$*B-3c u7b@lRaqF*)&75D1eQNoB{4B8e$Nuh3(!-CP^~MYg3=E#GelF{r5}E+_8Fp#_ diff --git a/mods/ENTITIES/mobs_mc/textures/mobs_mc_stray_overlay.png b/mods/ENTITIES/mobs_mc/textures/mobs_mc_stray_overlay.png index ab00032b22e66672f41c26e6beef1f357ca3ed4d..5434e2b1dc41aab339fba1d39266b8ffad546ded 100644 GIT binary patch delta 468 zcmbQncA8~^BnLAC1H)A3zHJi~bLtt41AIbU85kIhJiPq9{1eN{r%#_gbLPwi3l=O| zv}oC~Wjl84*tv7(u3fv19Xs~_|9>rYT^mb#e=q;tVTQLE7#R3Ug8YIRP{67edEpEU zjQ*Z3jv*e$_fEN8)NH`x!n)@B+iiY<)}Twx!u9W9e%F2;P3S!&W#%l7g~Q=d@sJ9aS8LT#V_*$L!N}pH(fMGj&ax4 z&3#gnJT7@JefDcrq0I5$QWYl^Qf6u?P71jsRQO+N=Awv6Mx`zsbEKcHI=PNCZ5epwAAEwRbA$8HkslTG_|cg`Jr?utMTQH Sw{}ei1-GZGpUXO@geCy5h0nVH delta 673 zcmX@jGL3D5BnKM<1H+=ZbuAMWbLyFjJzX3_GMt}IbL@*U6mZ$;yTs#WinwObwu?E> zcy_uJO%b#{(qzoQ{ve7o^{1=r$+motPn=UiUX_*K+<$An{j8&^d+NVGT>j(d<>|sf z>o*-|J-mP4o_Q0zS8O`o%0FLxVd+#`y_y$)Ol_XBPOyKCy}1 zlTy|19|;#Z&q(sUa)9aZq$L8v*` z-=aUktDe4|=;nU&aL8Q^iFx+Rw$|8QdZAH0W0myL!*K^f{@$%+GMbn(S9{BrN2+`I z-(&~wx|$XGrR(10X`6R_XpeK|N#xsB@;u`0AGXrDbN{FOob~Yf>(b7f`bUdB7B7C{ zI78KcF8`B{GM4M>%Ne_7HF^uISiJJ79mtAjLB}1wh}K>>6YTviyKwj2X_jWQ&nE4R zIakgo8N6Jo_C-~j-`t|N;p;Rm+<*T)b?@!BUN+af_-+4gp728~DM&Es(ImcAe)^`B z=WgGQ{?CyMlWmf2jL(XRE#H&n$JfJ)6;Ur-Ij1A}w{^uHf2|jFZI$O4a%w)wb}- zEM-%kUKnq^`QOLa-X9+{|4wB(|KGx(nA@~N>G{tE^A&;J4co;KYd3-+XL nxf03!V$bux``eE`693e){Eu2WU!M&F0|SGntDnm{r-UW|$U#tw diff --git a/mods/ENTITIES/mobs_mc/textures/mobs_mc_trading_formspec_bg.png b/mods/ENTITIES/mobs_mc/textures/mobs_mc_trading_formspec_bg.png index e271ddb24adb91d8c3fccdc099f7766e019ee5ae..16cc72a1612b7cbae14f4a47865450c49d62ff1f 100644 GIT binary patch literal 1430 zcmeAS@N?(olHy`uVBq!ia0y~yVD@8RU>0CuW?*1=#HC@%z`!6B;1lA?z`)Sm-Re9p;fUq3N1kO&II*ZyMvASIM_ z@#KOMqZM2HeASyTom_Cq>Z)8w!18629bcvdWX{#%*IE^P8LFa`UG&<@mni{Ok|9yc zS2cINzEWbOG4~St)axssEnu=Xoy+63{Eg#Q^% z{>Sl(&-Ie9nmO5TWAUjsA^Cpizx=s3UH;iK#>>0ke?Q~7{LXs6iF38iX>PoH;pCi> zu6e<6%V!mzdTml-q(1l1^C{O>zM6B%ig)fA&*eWXQ%hG_FJI&5tX_QS?nc&e8;srS!+_w~V&`TL7+%sX-W^1R+VYMX9Nwtd;+XQi59b#=oFXdpm>sjz>( z*jyej^=2?`p1EwEy$PviB*H-%VbDF?ms$SgnDx}8GaBkQ6%vyH-D=-dO!*|Vcx_i6vS z`EX_X`ncLv(+a9AtyV;*w?CKJw%n@Z66f3!Cv^}7iG;ZqzyeSTSsWZkXyTVRp>c;K zj%?iWU)$b)zxlh-TXtUYjd=_V3=O+8kep+aA9DCx|$V_#pT~LZ7 zC%(G9?|%AwcD>SybBWbV3=9nK7UkxxwO;oky?wddzE67sd2c^Y{NA#!v<#$Rl`|}9 zqS-|)C$7r>T{nNP{EjORE!*F6BBHKg|E*`&c0KN@E30_*P0CuW?*1=#HC@%z`!6B;1lA?z`)Sm-Ri z+H+MxV=fc((%^&zC0smH{9ZO*%H%IO^nKoa!5^`G|97sFerTohE_;W6$M1I)eMgHE zE6!aiK5fC?P;7c`<-S{H~V(x@m}70%}w9A zCf56lqj}tB-XO&BR?!B9y%Zu$zF%4hqXZ7+)_4)T4bN}dF zKlwlAdT&XQY?%6Y(>v-{PS%#swK@K1r@>sC^p`tR=gwj7C|u{J{`|_E-&amrX3c%0 zy5YIAdUbKhruI{D=5yb8Udb%kbbR}PxSY9fW`4iNHg^xZtNMGrcR9AhTy&zMl+|I07*pVq@^vgozPnG9z=+z~I}Da|u&>kIwmK^)uk@{c|Fw z3`DVV*JG7uVDme1*(t2<2eQsm0OZznC&BK38Uyxrkpjp`F_R%;hG3UlfV>@IJHtXq zzgTGYOfazBXB^RK{IO2m&o1QmdPTIbfVcrE^xj!?LW1fM^@0!Tl~8`Qz9XmST7aE} zL9mvwX&0*9dw=BQVdeK%j?A&xsRr_S63CaZfJgZGvaGrxM0yU`(@z{gfrX;Qq7W3< zCmTU&q{tW982l+_`KyCU8!Pq;FVC+oPynS*g%kIyCamTLF;Ov7-f|J6iDpG2AYo5e KKbLh*2~7ZE6>!G@ diff --git a/mods/ENTITIES/mobs_mc/textures/mobs_mc_vindicator.png b/mods/ENTITIES/mobs_mc/textures/mobs_mc_vindicator.png index 512eae60a1c8f97beac53530c7a1b5b1e0adf58c..21ab622c8fbe369b20b6cef1cd9ced5536b0c398 100644 GIT binary patch delta 1378 zcmZ1_yp?-`BnLAC1H;_yjc+Cz``0u44DbnYWnf@XRaMoHcNqOjn=W*D-C{wDoJ29z1yP{|GBuhxVgD`>Uns0 zd3pKy`GtjrMMXu$#KgqK#U&*r6$6u%m6cUhRkgIVw9IVuEL;o?4UH`9jg5`X&CRW> ztZbaT?Ck99?d_f1f?Ql&+`Yp+JUqO;y?uRsA?^za2?-4ig*Xx7zO=Noyu7^p{QQ!V zlDfLOhK7c%TkE%qd|Z2nfq_A-B*-tAfhh2i!D<2n0|R4{x4Vn#VaAjE3=GV#JzX3_ zA`V}j+8=(|K;SrYv4&_X=MUz>ykN8ES%uu!$~u~wdo!da{Quwo@!h1d++W#t_dnb2 zkFB2-8~=Xto!Ci6X(~&Cyu1u&pLN_UnQSbgeff6W`pK0Fy=ldav#vAVE3L4)ng^REqZKekuv&tMJEW_EaR|J)OYK(TP1#*K&1 zCGNhw+AC@6H@-Nfl%EbSB$u3uSeeeQ%a#06;=IDP`p5e&&0oeReC)bn`-K8c&d(kX z>I04bUo$FmoPI<_$$1w0mjIFT3UALpVm!;EG_xn3D?>I%Oy{A&kyeIs@6vxeS`1^A zc$~lRXZmY$afYYKU8veN^RA1R)5R$h%Ho=rcwJ|DE$9A2JquGcJ5eLW+D=SR-T z9Y>reKh117zMSL0?Jax{Wcm9ZK9@Y*;lG^0f|-r6!jq$_M(R>=ujjPgQVq-G`d{u+ z>wNJ(=!b|?C|`-F4bQ>u)d?AsMH&u=PGYwGXwjLe9ox#1&~9)b*P`L~i{^I^@4e@D z_*?hT&Fb&3uO@d-u;(@NFFsg*L85l?qq+H~*SP$Rk5<0CmgNA`qu0B7ZW;04?GkQG z-*subSoiGNN1470t?4*3^FjJ9Bi5qA>fI9@4W6c_2b`><&W>SC={|8 zaW?*`T+G1m?+{Y~msN_+l0Su$o$FH@)*nyxIe+xIr)baS$4eN>j8lD_3{tOLdRg4p zHz!pn_h^Gf3r_;CTb`BsU30%;U-`ucRlXP2UtF)}Y+$*djp4)lvhDM(GfoRVp;E}q zn7?cN?$?|O-%A&5H&zVr-Oy8)oXqT0u&v?2gLanacaJCijEd%5BxAB|-uiOR30#Vd zK3d=H8Mno)HJ3Sls_|>7mhdx%W9(j=71*^I%?|u`6#ljKl1xZuy8N^KpTC?u_wV21 z*YB@~-&p5g_h-kheZMMs|CVpjX1s0i@7=e{ci-N<+y2NYemc|l$NoDqcMCB*&OhF8 pn!7f32}4FWQ$fv_bIdMGKX`8$vY$v$@X!Jk8lJ9xF6*2UngH%kNnQW| delta 2399 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 diff --git a/mods/ENTITIES/mobs_mc/textures/mobs_mc_witch.png b/mods/ENTITIES/mobs_mc/textures/mobs_mc_witch.png index acdf2ff9308175de89e8d46ff7020a8fd64252d6..30fb7f8f64fac7058145ac98386e50d01b05b602 100644 GIT binary patch delta 1003 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 diff --git a/mods/ENTITIES/mobs_mc/textures/mobs_mc_wither_skeleton.png b/mods/ENTITIES/mobs_mc/textures/mobs_mc_wither_skeleton.png index d0d6afe77d024115bab3cf28410b1ee8f34d49f9..ebde0d9664d172acd3e8e31f72ac754ea42a2d86 100644 GIT binary patch delta 432 zcmeyvI*Db11SbnK0|P_A=H%@Y6(i~y&d~E(aY+5W?}uc zs_!2^d@<6#z@yx*kEZtF{|nIw80{v8SGuIWIbNc3~&u@iS&?xPG+oc~6#o z(%ap%Xrn66c9tK08Z)O)QxdoR^}=H(_d5N3M?Ohja8$ps<61zP(-h0uTjsXEKFHFr zew)qa35q{5SliFsG5h&w*23eZObYu7yJqotI(E-UyjUs0edASw_71_qH(^rJk4saW rBYv~~kXr1qP$p!-4sYK#pX)91J0%5Nlv5ZO7#KWV{an^LB{Ts5Fz>sE delta 668 zcmbQl@`rVT1Sba@0|UdNxpgfQ6(j1Iay?xfLo%G7&J65kGURFbtG(}siiTasga7|y z%X`kK8!n5Dja^mFd|1tQmfx*+T;;1ZW%%0XKmPb*^ZobvD-4fryPZ2-@AKXjv)XeG zrET76vMPOx=;XgwS4j20G5x7;=CJ+1%JLUS_pyaup7_6x`QIPy1;J~i#6^QA*ZffW zcc$Jw!1v3F`Bpi(9J8Iyq}qvdXnm@)tS^W7U){#?5wwZ~bNuW`;gsb`%9$EI9f zeX*;vEAp7dmX^*e0qOb2I*-m-bxlM!Sw<^xr{ToQ{bl!BAp8t2#~%S_*Ij?jotkd{ z{JGVQp5r^_O*7=<5dFN;S?c<4y|CWHtK6oZub+|H<18{Kx5m%L`1wQk>Qmc$3Lk_l z-cXTLxktSF@fA`3<(FG89^2mYae-v#q_+>ZJ8!Knxg{$S9U`x;{;q7dtNDRvrN(dW z9WfHSygbR)>TT``-t_y=M5iwESbny>OM&J0T5gpMVcmYalL~7^&ZihIH$7;r`D)g- zx_e1IfBx9jYl}Uf6#g-=cJhJ+M~4lz08&`51eWdo_`3#BIu3Fz!15Ez+ zboR#>x@67Ea(Ja-Cz@>g^Ov>L8qYaWH_mMA`S~C=iLvIzmPm&ccRe-2&)(jv@Ooik z&GNJEA|8di%{Pione5ML-*s-|ACcA43zkpU+AnDKTv_Z4_r6W_4mKxiR_SK!owIw& zKJB9&t0BHd}4^^!KTD;zG0Ydt07IyC(nWe^x!S fbwku&rs;pnW>?s~lwn|CVBqj{^>bP0l+XkK2IfqO diff --git a/mods/ENTITIES/mobs_mc_gameconfig/textures/mobs_mc_gameconfig_enderman_cactus_background.png b/mods/ENTITIES/mobs_mc_gameconfig/textures/mobs_mc_gameconfig_enderman_cactus_background.png index e2f7ad9a2d802988b0fc470c2b74300238ef260f..6ec1170e2d37aae6ca06fa21f29e19ce4fad1928 100644 GIT binary patch delta 77 zcmYdJm>}W7$jrdNplX||#K6G7SRCZ;#IWw1%u5Ca2Ic^t5LX>{>BR+;3K$p|xIJAQ hLpWrU6$BX=7z`K~xt@E7FfcGMc)I$ztaD0e0sw&t5UKzG delta 80 zcmYdDo*?1P!N$PAApiM)A_D^hV{wqX6T`Z5GA|hz7-T(N978NlCtoR?{_ng4V?xpb lfgUM?tOF|;n~yRu^cpj+<({VZk%57M!PC{xWt~$(69D(|8W{ip diff --git a/mods/ENVIRONMENT/lightning/textures/lightning_lightning_1.png b/mods/ENVIRONMENT/lightning/textures/lightning_lightning_1.png index 37af59e04ef8b453211f3081030d8626dc3b2ca8..5f6c608608f3e677b6ee50c7314e7568fa2570cf 100644 GIT binary patch delta 1211 zcmZn>e#tpOf|G@rfq`LN%+}C}##;3ZiUB?$t_%ze|NsA=2?l4*oLRSS-J(T{&YU@O z>C&ZV&z}AN|37j;LMa0S1A9r3UoZnh{r>&;-%oxJGmn9RficP3-G!lpRn~)nfyLU> z#WAGf*4w$ZeNQZS-0U;mn6hNTjusQoA}Iyo9Y3b4xbjZmO#02~+xAVZVBuezNkt2J zHrO3wc*xYi(zIB6Gc!Y&_*zp%wg53EK8IEHq9u;eJH&L8aCcHGD>0Ef7PXV!rc?`T}H=P zWgKp^$*>uy)UV^pWemFAc{lcO*2kLZAu&Do?#u9hPMnmc5S%J!y=Gi%)nxBn8BLgf#DYq1K*pA{N~D2FDX>|7#`Gp z^)m0&J`Jn*zEG(H^)amC4gZ-|I(pvQp|P9E9R%1?sGeC zF9O>;HeWY$Dy}V z&7&FimvI)_E_PPi{r&Qsi3|_Y>Z_y=++#QPy|q1I35@Z?NlaX`8?taa>ZHT_8~Yh%UQ>QO(_1fhXAW6MYZ+^gpRT zq|Eq}g{@KLr($5?hIg*acQoYfd0H7ZsA)9$1{|5S;O)_s%r>?M=9@G$AD+No!5kal zQrDVv(V;-6!Fa!}rKiFKtr&(4>lgm0UFc`yU!T{1f6fQyqfc*|UU0p!{Fb#tztb&- zt;ZeMUoglnU@mFkyYPD9y{TXB{kge#!T+22;_8my9r;~eX0sn)%n+@6$so`AL%z3l X_xrGl8TT0&7#KWV{an^LB{Ts5$PX2p delta 2399 zcmaFK*&;kaLYjk(fq@~WXhj+W0|Q%J!+X5J5zGQCy-WF`(`S(@0N94d4H!+Kmo@Nt~X`7@8;_q~dnzj(cCT`Pk~z#l~hAI=MmB4)4T`PdiRFfG_}DEtpcgOg^> zuO0jhEDV<0{)dLnjp1c+NIY6^A@l84ecOkAmBoVlv+v38YIywdN5$LMhs_rJW-MV) ziTZQh?eFQQMek%;?^T9GFic3?U2h{N-@b;uh0lS*!72B@>G|{L<997%uB|U&dRidw zz;vti&&$ip_y2PH`|Y}k^Mh+u4lh`oI3mOwdb|He8T#`w%w-UX_!G>@q_O44Y{du5 zC&}+-5Uj4M`enWBzq}&D#ByFH23ZCth8=N7g2lhFFr*kY`ExQcP7pU|5?xbk@nUPg zW*wu$v(Mkl4#rzs-I?1s;lrN#x9eH!&Gdd%i@l%FKEb0s_rMvhy|G^&M*gp^vsYy3 zJo9$C5{p9P&c8F3|6kV9pwQsayTM0hDS0mFg5Hvwr_v_OJgQMhBXUzX4#jCD{PzG+S$$QD5UXk z-Oj2v>)&!kH(p~@dao7RRKflK_xJbpHUIwnJio5rocV#<>i-}9y{=rH=fH8`2*Zon z$FG;hhKGjU|25~?@of>p8$>yTpZ|8|Hvjf`R||trz0N-wrvtu@A2)GGOx$Vy?8q*I z7dIJpG+)`xVDA`Vz~aN~!101*v&3=B6vnj|nDx?6wNm?^2IRboTHM|Q(~_2vu_3qGvB`(2-5 z16#m>74m$)7`SqOmNG2((aJD)OUKL~-`+<5{rvp==RET_E%$Wq$*`<3_{DFzIG&wB za{E8$xNC|m3ZEi{{Q1epZzV2F9;?wH8e3VSZyr8#?-(X^=<~&X>Qlgj{`28Xg$QAn9$OC z$nC#k{k|~v1ak&6t$z_t2mCeUw=oLO6}wSC>9L&73m1z|{Bxh@Z}iAe6fn#Bn><5k z29v|XmIhM>1~1va$7KS#_!`bw%n4x#xN+kCR^|oV4NP4BZyjfKxMjmFuyTgn&bPO} z_rL6PJz*wrZQtko7kmHjVmM*IaqP`^?naZ$+d^MIefsqH@$vru_kPWJ{PBmy@*l_V ze9D$$5G<`{3=N&TYL(Sm!(XqN5{^E~|930hOTb6Bj&XwAZiY_Le>d(n81Ql^7TCzi z@8;U`ldoZ=|L>Vh2b$jgyK%Ap%!@d4pP$ve|2AA$asSum(C1&B6!P;}{g(W2R{!wj z%a<1_3IYO)ofCSW|IlSyc2p^Wv30-O$9C6ahaYa>S4;>Lcvm0sBldFBTIL7W%#t~n zWEpi#Uh(rbRA#PkW;z_T|G8shH7oZrhMbg>kIZcwc&!=?kM4iMk^7~+gPFmHaX~^E zqmlI2>vw)Jo9Wf)+H2G;xUx-t*(MGSCI$h91_lNe1_g!()0fVdO{kS)_pA4@h_2s% z|NV8VFUh^?Y>kXZ@7L`-cIi8_#K%$w7o%6@d*ky@`Z;`bZdqJ6y}F#KYd_CC8Sj)U z{Kt##S1G@rxTX95f&fQw^Tx$hyKl^%ug{?{X&mR^X6iakxMKE*Hb?=4%WZ3KCYg_m{7eP>Fc5 zovZfEt_D4ZOI!_?8_rAG$`+*hGM-q%EnzKtfzu(Wb^j5=*wWbR#qUg5#P}L^7XMRx z%@|rAI+uk}MTV!CNkM=qV8Xgm21N!|_6C85rtWx-1_lA9fTEAwjeB;0N;3rph7D{6 zN3O4r|6hEyghAxh+qZA!!yOqWa4u)%W{^lZQOV+vl+EC5)u1Zp$fm^6pm_BD*ZU67 z7z^IYFgY@?itYDPs1;+Jx%O|8kizDj|0ir^RIF#<6x+YI-r!dDpH)nidiOx2EBPKF6;~(42$g*7%njG zU{PSWz{&urp9L6RFbFU;Ffg<*ECX3($*_RgfkT18FVdQ&MBb@0QPDTRR910 diff --git a/mods/ENVIRONMENT/lightning/textures/lightning_lightning_2.png b/mods/ENVIRONMENT/lightning/textures/lightning_lightning_2.png index 7bab36b746ba0558509cb9c32c2f03c584080b04..cb6cc83758514026ef041042bfeace372325bbe7 100644 GIT binary patch delta 1375 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 diff --git a/mods/ENVIRONMENT/lightning/textures/lightning_lightning_3.png b/mods/ENVIRONMENT/lightning/textures/lightning_lightning_3.png index f090529ec2740de48eae2d90e0a404aaa69a8bf2..17e1d34ec022205fa023106b4ef64231eede1dcb 100644 GIT binary patch delta 2238 zcmX>j|3q+t1SbnK0|Udln604`jkW3-R04cLTp1V`X3m_sXwjl|>(-q)bLP^eOV6G? z`~Uy{%$YOKoH?^<)vEvh|IeGMeS?94fx9HgFPH%eW}bO%?AvC^rh98@7%qZ^>_B?@78{Exc9tzC7Pk{$G4!9@mJR^ zCIvG_b+dz8n^jB?@;;cV6e}-N!m^!@f&B!7RgEOWRhOwu`)5S0@KS1e$CR;F)L?SW zf9VTZ4c-?7?lA1pkYHj`k70bUl(Avn5te#chOpQK--h36674@$Z~i6Cu;OZ}=|S6u zLZ6Rcvp+j)Y_aHXQtJFU)4=|k+JUFG!aN?C4C<^#%pI~0_3R5Igq|^eo+YrKy&;A{ zD7B2ifpJfKbAlhc!L97ig{%%yP1ajAgbozMT;3A7<9)87jRxz+WCM;@UN>7Wdh;=` zCkoWta&|4ebj#S`J(nQgoCylt+N>F=*W;B60@JP4r+k*#?H|stVC%J6-)rSpHSZPn zN|^Wj#?18f_WUfbuCXjNJS=jZSvm}l-~5R{sO~BpMXj>2g}Az@6Cpel^G2Y zY8(s(jc*qph}LKfxzEJ$VAIUdJJp}nGM$rRvvclqcJ}5Jsd{yD~ohG#K&Z~9VA`QQt{BClX9KLDAFSc56jYh>0>Arq9d%4=at+JXsZvAkse0Xy8DfJ&)>e+W}*=Fmu*1388 zijp5Y@2s28lOUUSMX-VQZ@2IH6Uv#5H>Gp>81k~aw}@)J+jr)=V}7V(j>rCgvw0FG z+HR25IXv6gh9SZ$Wnx}sPF_$E!;aQnK0j9ezLmXiJ!g1B_VHJ|4kq$vDi|0tZ~4z< zOE~7tkf-c$XJy>R>-U+zEc;)d_qCEocnZInhfbp?gLIPw!{ugPE`5GKD~}j<8TW_I zvLFA;7}(xfY{{x2B$<%T)ajx&W8RHrR-KL4XD1vgR(sItw!oNSD(eG%8}|uZ3v7f< zL#rB!tfq#ZW4XT0f8#%!x!l&zTli{Mef2lqsTF2A>j3*_;hAfW70ML8oy6c%f1ZIs zqfO6KWLkyL0k=+{uqHXCKQ_x4X7oS1l-#gRqWuL!owVLL#&r(SJrkQ1CNT0dSTXRj z%{#@od^&T-o96WG5uvyLZ8@_zM(O|8ep$}5$u6bezUpVq^ps|h*?NNKfEhzVrC`Kf zrW%ixUGL(YxGS6!%NW8M#T+ac+?W`i)-yP;Y`7ySpu#XU*Yz3$3qu&+CB}@kTR%J0 zHE^u}UITipifi@*NJ85pi`NMu@kYgdBTSt-`fj~Mga&S-Y^WbMg2 z_M|2-f&KdHvgHoX&M>e)@cFR%#0Ej;2v!hs;)6qG^^Y8=C1})74KcBVkQDv2AZ)do^#ZE%LVuAVM zphHOp)1JSc%{KMZi>LSR&3~QycyieCWh@-!ADo!<>eqUBa&9Pe+l?m+On~HmPJNW52m{>*=NEST?9mUhvbZYF;pmmLqE5rVQ~LVX`-w9w59a9h=ab+2ZvI!tbr;w4*WY!I z7Ikb&(%o7mM=ov(MDMNOEmqpC~ z%PGabfU|w^o$#f%=IWi;{qNT=eklgl2i9Kl8V#LM6Bt8Iw5_ev@ z|BKv%Nw%EZnv0xy3l{P=?oq2?|KY^AZ_#NcxofUXPAbLBGW%KIJ{}F}?_7xwlU2gcb zUACUnZoxXO)_{Du1{*H>Aoj+PeAxx{pBdJd9jt#FzwO?W9kX*l%?wXhKbLh*2~7Yw CwBfA) delta 4020 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 diff --git a/mods/HELP/mcl_craftguide/textures/craftguide_arrow.png b/mods/HELP/mcl_craftguide/textures/craftguide_arrow.png index cde70b1ce77ed9a713793e77cbbb8d7584e6686a..c27a807c02ab5bff8bb5ebac9f37e6c8556ae7a2 100644 GIT binary patch delta 75 zcmeBRY-gO{?4s}K;uyjaot%)6n2?aboKz-|$MA^R;ZMWE|Nr?N{xEm^cX-L4P}pJP fAsZsk&CJlVR@nbfPjdnT0|SGntDnm{r-UW|{|Fk| delta 76 zcmZo?>|mVW>}ufY;uuoFn4FN1n2?aboKz-|$MA^R;ZMWE|Nr?N{xEBtW?JM}Gr__` gZWZ4eeidE@jV^&$wXB-!3=9kmp00i_>zopr0Qut?+5i9m diff --git a/mods/HELP/mcl_craftguide/textures/craftguide_clear_icon.png b/mods/HELP/mcl_craftguide/textures/craftguide_clear_icon.png index 9244264adcf8a710ff13a2d684f148f997f1522f..12d88f55861c0e804887c97bb8239d44c113d82a 100644 GIT binary patch literal 594 zcmeAS@N?(olHy`uVBq!ia0y~yU}ykg4rT@hhA$5${$yZaFbnVrab;j&_)j|cn0)LH z0|SF#NswPK12dPYxwDIRNOVkgPX6VGPx5k?PhwzT+~w)w7*cWT?W~)5%?1LloNJS( zv3>aeKPTgonob;>VYkxV&o+)-Ip&bDP+y{l3n@df9C+ z!?>Te2bg8F3Apgc{Y-7XUnAJO|Ieg@#_m54euOt{_r=y z`!f5ay58Pbjow#z{{0b&alWW9_kO{hmX+W3>BZ{^7*~9AsQ7aE$Ygnf`_o&g!3UDydt^{^{pWxr`_0 zZ6$(#F812Dv%z>C)9cw6B<eJ-|Ej@@q=m-2EQdg{t+^Yl?>^X1tg-)@&&1=1(-JZ3FJv(0ZKKO?jv*Dd-rhCL6Lu6~d$7H1de@z1<_ovy-WKtA z!shsh$I^cXqxk|}@eNb%#W2X7bz@4IbmPpKb7}k6`#rh%@Bg02)0@nh7*K%M=`&lm zPTfAs^M|$<*>)swRTPsqRR(I-5efya`=g+L}yH;kp?qy=kVxbV8|AFGF zKXm`NdtFfYqvutiQlpw7@o$N0g%X&dqFUkj!z$L`{?;W-a4LBYyQux-T?+6-E|WmFF0@`yeVDpgO#zph}3V_ zdUeOvx%F#UuJ5gBFge-oc-Y`iN5^}?!WBP^@|7RGo8mcP=Io9g(*L(lb9RwAmc8MJ za>DG~oOq$S=F*a{iDCMxD{PDA@BLuA#*yI`CLf6$J9v2`mWN~&RC b*kG}rLHo`xe)r?jJ|HPiS3j3^P6y6l@PDv^$qE-z z7#J9gOM?7@8JOAFIk_dJXoX5bxxXRPTF{I+w+gY!}njA!01(z6YUOh`{s%q=a)`su(+b<|J z&U_f2{r+my@9M_SYmH~meAw`uQ?W(Bi9@kP;D2A-{`bMGe17ZO7=s_Yc~@xoN|04; z_4X%aE^iK&%w4W8xRL#G>BM@qiwX){B0t@0YJ~(?yWaerxsA)ZQOP^`npO?>l+_c? zSlIp$eDHOF&;r$u;SE!d>}ALl&0?CPa*b8PHiN^U>Vk;Emj$W~^-{N)o?e!?ufWU0 zxTR5(;od|YrW-1^SQdD0;Zi705ND9GU@7n{;XE+ug@}XdMO}tdj_nM`7I-sEI^x%u zDnXKbndvoM#-`~myX8=bQ!D!?zRiQa46$E zpy$fhXj40jw?llAj_;!6Ge>V|HSC!Yz5eNmaN%x-Z(lEn9C&(OkKxSxPzJkIS^OFY z^q)WLV6)T7;b{1r&avS0b+HFMUauENmHeBsdfnov69t}gEQ%fJ-nXKT(5d1*y!;U|@S?i{8*e##3PNwuOBaeRO=R}4BYR~t4 zQt1$MkUz-$Ky!m;eD|Est%6557W5~Ci5(W(!9AzKvP0NmzxbKcANIBA(CL-}mw}r_}R`2^{k-?6s~8YdXO2=mx{i zn%;LVrVal$v+ZM$Z|Fa;iRB@mz=2Z9ADSPyA{b6@thJlS_@@5+eipxm?N5K7YH!@w z_xF4A!}y-Bm5j_c@_#HpFnc5aebo;Jhrgd(uz)*WbUmj*!`-&~_dmz?S3Wdu_*=jI zZ`Qh>Y#Z)xyMO=l`RwY-9gHkDzwsVuJy6l@PDv^$qE-z z7#J9gOM?7@8JOAFIk_dJXoX5bxxXRPTF{C2y?ak=mrT~f7M7~R$FEf_9Wx57V3;gi^fAobV zMK{`4@7=d7^8MF&4;jVpyr}FkJSLIcV|eU_y_Q68&27o)tsjqmocDIZ;Xf(=3d)nL zpRP05dG@}%e(v!(Pt{*$2kwixd2XkcjnC)vn}nEK9>0FGc+C-pub=DV>O+$ne*H{$ zEv{8;nD6uX*-vlAvhVuLH{SSjZMZvMV8P!%stjxYb~03b=V$-&UY=Ltj=jW%%Kt13 z4}Yjdm%o?i3W$^Ecu`mXf#K-C1q@gJOn z!4r&itW6E_2faR=f9+-vt#>YGd5qYx$(L(yD=udZ6uEKE020y?$#33&<&8CZ_NYDl ShY_ zWBRR(ytv#k#+O6O@Nd*HfX%76u^({QRmQQAT{PLw!mOI-oYdpN``vd+);|C%$82S(JGfy!5 zar^-52fiIl?;7>l6w;r?GrVu)*JUU_;4I(w{)FPa>}UOr{s%aAu*5MOwv$<`ec;{9 z`dwx})N5y(uqFI{u%9WfA^O3t{^op!fBW9l=QP(}yMB2o ze`c4R+s}6Hcia@-1J7pKXBqGRzI#by^MCh;(&}ewm<1w!@HkXFG-i0%dY++0eBTcS zi_gu>56g}fkA3T`9Jol?oc!REZrOclehKh;m77Swh z9xz1wX!2grs$apn;R7rCfkWal4BYVr3_3LjRWBS8-@_E~qlx*#yYu!7cY9wyB))^m zCj0qM^8?Y`@oDT53|ni{_!6&i87!_gI(~iIcloM+{9F#2sZrUrORBAoFZx@_v*%lg zz$R{ur9N3}?>AJwW;y+M1CJU@f-cMa@V>)u6TBFrIOb)o<=1X4=o4=#V%o4xXpIqz zCgTl(rkzI(bQq+&5;NyB#%Y}5IM9}4kuiVb?&b*$YeWw}eYaqjH3wJ2Zf52LLlXuu zXS~#g-4c4PtqT7#AHG!lP|NsG(SQLR{}*Fo7LaMuejt8V`w6c@1czA3`kw!Me@qxE z6(cU}HLG(fpZ)8h{OrTK_kZh{^;Guc=Acto@?Ei{9u?0?U*!L=oi>XxtNgWv0R%i< L{an^LB{Ts5o|!d` diff --git a/mods/HELP/mcl_craftguide/textures/craftguide_search_icon.png b/mods/HELP/mcl_craftguide/textures/craftguide_search_icon.png index aace8044ac235bcf5935ed8a72c4cb136746a916..9caa134c90a3fb74be3eb36904b87b0da4090986 100644 GIT binary patch literal 1319 zcmeAS@N?(olHy`uVBq!ia0y~yU}ykg4rT@hhA$5${$yZa)Cuqjab;j&*uH)HjT<-q zj{-s=U>NdfHUk4ga!HV1FaskaBO51|fRLz|gp!)Nrk1Y0k%_g9lbd@$ctlc4T2@|B zMO9;0|AdKCrcR$ZZ^7av%T}yhwR-Kk4VyM^*}8ql&fNzN9yxmA!sY8XZr-|m=l+Ao zPoBSc`R47r_a8of{`&35&p&_X1ex4rU|@Flba4!+xb-&jcla#>5xw=isa#rq;e~yk zjO>%IYvhOB6A735+_-{u;s5{tH*7Ywy{f$B;AE3|b8Gg0yH^uGd3JTaP}{-<2oS-) z?(X8tCn~ijd(L(D>o1GFwke-&(aEC4#uEO|KfkQFkU3@Y#RJPyzx;k!QmmnUUV(r1 z%Mbfhzp!sy^<{z1!RC-&*@WfyyEqQd+{Cnbp}@^Ur|S=SZ%Sf_eB^I%Dc>d9yo)n0 z>LPEt5hoN4E$zS?{8vi@S5X>T{g@44dn&PDOy zM!W5o9~SJY)tN4E#QN{+RKez^xqHspzf7~(|MzA1?)j%n)OR)6dN<*|JTb%MazY4v7Dg9@w%TuEFmWOY|c%o4(3RQ z@R>=@0{`DG*jc!N_uC_OecxxWr)5 zKW*M${dpYc6tA$#dP(_C7t3h+GymfO%L=0fdM3;nlN2}{CpLe5;3ClGacQCU%6A7_ zAGDW#FP`hK^tIHN{3J=yS<_k-I zSbJmFtIL+o3Jwx0ny1!$u-iB3m9c;T#}0;_w$IzX7e04*yTd`@f!LC=dz|kdKXLrH z!&M={ES&wc)q`4@$gAmgzvWp3;+Y;fdele@`MVqmHvE|6vPVWZ-{Zvglq0i)9_9Yb z=2z>tx1VG?>+XMrYKzc!r*FITKR>m2lH0NeqT(X|8~hI53O6|+x~9^zHSXZ7>m^oQ zE0!g!?e@|s-f%2bSC4hV^s7Ha4#Zx69K!H9VWY?irHfxqvi+8sVH5TDU#aEswFf@j zeE0jg$v;bjx*d16xint9{5Ff#l}$6uE-u=HooxZvy=_fO&d(dP7EJUAf4ElT$G3SK zn%47N^pIh_Z>S;~adN*;J@b|xcxIzOwF;raYfII@ll47#@W*$Z&XK2`UavYvr~fx*+&&t;ucLK6T0f*0Zd literal 1908 zcmeAS@N?(olHy`uVBq!ia0y~yU}ykg4mJh`hQoG=rx_U7tvy{FLn>~)o$H+=nkvyY ze?QZ$s655iU?-Q(FN*{e6%-2-FS*1lR9SOplfp$;b3Koe#E2aYM;sQl9bwg8EYZv; z9mL^TuEN{a;JB34C2yhbg)2^(!4vBAo;f?rnCYy)-1zyP^UJ!6tDgPc|9)=$zuyf4 zP8^CYxQI_)CpK3YuV#~KPygZ0dZ^?#Y~u(CDUJF_H1p^e?Rr z+#BQ~7|yV#RX=*pRNRnd&N%On;Dc$i69jhf@-X~$P`@DPv_p?M#rk7D<9lZBhUtIu zWdn@Q&6i=zV+e0N{qK7M$HN&s6V@Kt&M><%^}uQe#uam)oaSNNd!X_G(+2yN3yRD> z`H!R<_#3Y`xcUG299(lV(A>%V1N#Q`mVz)gjoMG!ncg$3Za6Bu;@R=j1_itptTMcc zHOkCW)IOFTSbku3-F5vLX`X-Mr2jD0$T{s$WcG>u6wY+J!SvpV)h9c)B<8EkV<>A8 z@S8rFF)d|9>;H}Se|9&nQu<$dW_Nk*zc>5d-rZ+-K+dpoYB_g$b#&6ia`En+e!cys zSC~xGzPVa{6>)N#wEyhnc#Ti@*&5~c8&@}YAMkvzMmmvW$MgGhU!K&iPzq=EZme3L z`KtEM0*R`>g&P)M+SMH#_ICD7|Fmn#M-3CwmY>a;KQq^S^VZnd*z-A$)~#EYke2<| z{M*lbK9Q9RkDIO!VN<{Hz<6{1**9K-j`C)kKc|%)IAdqH`H;#hjUV}PAF_GG7e4RG zULUM>T>i)1w6bGo-YsX@egBNr*_{5Frv3}(rR{fH9&g01)= z_ir3){;7t0zU!9SKMgE6qQ17sJ+yQE_L&(S=6O@{SuEJMvvhb{FuL_Td zY1Pe?hAE8mQ#G4yuQyC?=a>Iyq|I2Qs~#II!g!EIJ>ks^XbXM}py*Ibm zf^IQchcesPHgI=_eNegkH@xw&VvBJk_oQsAcT$tH8dc-MBp=jo5$N50eC-oSmOA!t zX%=DCv5ynZJl`63Oic2D=e25H0eAijvQ96~W-W+`-k#l?+&MjztzyZq^=eT!1kLm8 z+)P$qpVnNlb?3E>GtR$mV2w+YJdmjtwM+K;*WIjNO3KUUpQzdpliZ)(_gd)Occaq` z=d>2JN)&!!oIY#TES=W}i+ZQW6w7Shd&a2YGuugSy{f(Q=ZgF7dS>ygYG!H!ySZN% zW1jHZCnvenV~Zy-&Pr)$-{Z68pI+Z?&GL|IFG|lAp806>yeUYBYb|q}$B&wx4Bq%S z39lEd4qNm$`mt5)Nu5(7`}iT#Ih%t1cJ03T$8@~xPfmO3-ms#8nP<6;G4sVsZ}%8X ze)9B7Imijc%|CX2VVBA(PHDI`Wk+wt%v6TwN*|Te`RC1Sm62R<;P7GfdB=41H}gCw z5wve+yLcjUo>-{a1e;BkFH)y5&WR7^2~fDTZmM|L@+%R|prEjH{dD4{Qo_rMZ530c zuJ5>Fdc5%VX&q*Z^bWq1u58KkjIX4nrLU*hMy%U7@5jWmiTbZ4B_BA->sxiLwO^PT ziSwP!o;eY*e7R@IM-W}3b-^XJdn znagi(Ed6!={gW&&8+Dg6E6r>332 zl~Tz2qc>yvyL%^ZxxY}ZiQY4Rf76R4mrmZgbydu%!hd^p&4SrV_N8j8jVzgQaBZ_IT^W!CB$ zzFUsJ-&thV7$+_M@kRDyJ>k6~i&%dwxRcGa*TU%8(TVrU|F5~@yCD3y+8(QIEow8i zwJnU3n_Ji0wSv>7i?ha~eAPvrMLr6`Cs>RceG<~55_N=Es7>HZVVdaxrFflZI+!-X zlzfnnpLugnXU5gYgTW2wU*xLKdN|uluSMWr*b(jZYC9fPOJs{YJ!RZDDgK~Zz$fh+ zEM9f3vmYqCZZPs)V7iV4a;XbLQUFPq;BFtfWPMxWC6gUcyk2 SD#yUUz~JfX=d#Wzp$P!GEO%=F diff --git a/mods/HELP/mcl_craftguide/textures/craftguide_zoomin_icon.png b/mods/HELP/mcl_craftguide/textures/craftguide_zoomin_icon.png index 5b8ecc2cbdfbee1ae0398c6562221d711d47e6f8..2f9f62409b10620cb1e5925061bed5d4434c4a18 100644 GIT binary patch delta 1620 zcmca1eNtkABnLAC1B0_(yV*v?FRb;94+4BbT>lRgs2?bcq4tg(`_tbq^?c*C18WCGq(b(KFd;XFYD_5;vvv%G34I4LY-m-Pu z_8mKS?cTF@-~Iy!4;?;o^w{weCr_O|bN1YYi~S4IVpU2#lXPa?&;zfQgQ3;?VrIyi899vP5L)E>z-8!77nls zv2kELFS7f+(;n9Vf%Og_{WeGI_Mc+rpI2|X&hYNqc&TSI_nm!iYVq3O^qK0id9mLs zBUFVL(7})TdX={LNyb8+K`G9TS+R|u*7>CxJrBEoZPje4DZ7NYZY~YGJw5gIokgd2 znqJ&)@&3b}+M-5>vWr&9>^*Nce>iqN;=nXdh3KO#Z(g!&%Kp}J(^h3uxM$kx%(T;G zEjQ4-;joWpdPZS~-7H5 z#Fp%@op|Vst-_gk3k&wg{_~x&w`ATS)&l1lw&maEcXF?trrHu;IO#)Eq|=kXES~#b zFj;)fKK|o`y6VKzZ5H>g&aA(6XjgPs*R`0^87F7?Z&u$ zH{0IcDB=Hb_S)Jb&oZiirgdL0_@{UKsQK+3ZpAt4C+(ROvgYC$JB69KUnZY1JCZhG zL*2fczSawWUwCld@58&V275SV|KI(PpR~N}j`h8I!wv7BRXvsp|5lQ*ZGCmpinF%4 z8+~uyKE799c5`g(y}<6jTVL?MSZ=rew2_VEor~A(-c=eJT)t`gaNCaMx2kIUf2>nf z*Luah)a`9)ujjniv_J!4Lz2tWG zg|3?&xo*x%SKjwe?*5F_oL$KW%u~MpkXt5r!Y|0|)MwwPKUGVMBKJCIZC~Y9raaT3 u?2F;#7mJk_vg>#JsTM=eCkzY>A3h2n$gV9h_`+)dlJ#`;b6Mw<&;$T2%oAV$ delta 2022 zcmX>paYK57BnKM<14GG&a+ZyXUs&te*Lu1*hE&XXd)GTZCSCUU$M-ipUrpFj=>1qN zvoWA+g#fpPIVWc*M;r^cna<4*RyRH=?P}1Q=-{!!DT$H$9k*5fsrBg} zepK&PY;&AdjmpJ%@-hsr)bGiTn*8r!;>XEy$9haU=Pp1o8k-|)pkVw;jA2-QQV z0VC_dt^iwK7QKA=9kz&fckPUmXG>X>-eDI=68&Mbfo~1Ne5QM>@0iXr$ur$!i+l5K zH|HCM>;rY*zg|92`@r12>d8W$-M!%r?-|k?^_jLe?q{C9vizNI!j0T&=^d;!JU5ul zR;-xMevjoJ)1UVl{PyP)EM(-q8>;-^`A}T{;PBn+yL;}Nlv!Blyv(mYP!VCoQpZ#y z{o{PH&9&AC61#hYdlt*p+8SA2dzb&Ze=GZy*BfttyC60>ar;M}4R;glt$DvG^6Xx^ z_OTs9uVk6@zfI+bB+8`a0}fBDd~156-QZ2wv=za%pRL^g3azx1ER+7-`>j~={?^$B zZ_J|hMAtjlMtojyai7?%#O;Oiep%GSG0W}ib7@bwk;~KYUFyyAR<_>)ZFf)o-XfVE ze|({baNFHuvA5>DtLAT4@|7r)W`1?)O6A<+*_%P;>6zR*FM4aPRZK?P-E(2hwRe`B zJsQG&e#7mILN^wzS0_)$lybD)J!X7m%KFOKgV&dE{#UQxRyfVfdE#XYk<3FIZr@n8 z?!)Zsyjfi{o~7K#y~8*!Ym5Bx8@v)_($5>7OTBr{wNBfDv@MS19olev zhx6>4Px(Joy-~Y#c;418j{miu-0EO<$v}s+Lx$TcK-4D1LC`W|C<)&`^xea^P=p# z+p4b^WiC#>^QP~=Q0cMMxlznd^S;kfwm;<0_j~by^2TsUePgo)NjKj7tL(L^|G($v z-RG~bbop&>SkLsIetjhw1-*e>V^oIDL_Xj4w zUsm1IE`8g_KJs;&p$u`I0694>3 z)4gr|`cLuy!p+BC_dmW<{C{iZmE<{B?2rAko3>(p+{X7=Clj6LuDx)$twn$NG?{O; zHl^D(Oge1mIy<Z5NysE$@7EUEhj>tF~55B+q_}=%I**Ag9FzDJ}<}*HujuX&-TyptjT_l*aQC^ z%lD^d9Xpw^>}=Kc|E5}fXWxC)51K6aEVl5g?1S%D-m@)EmN|Q8=QZnN(jhytugtz| z^&#hb&9&Xn|1*hx@y%*FRGGzg(d+w;c!8SM_)jj)mk(%%lw4mqQ%OJgU`~)=%!_Sr z1B~;wt=JI1XwkhF|7u&iUh;wHX|F6IGL-2#|vH4uz)S18ZCl^gRkT`F-Fz>vCzY*%|&)%C~ zU$p=5o5fcvO6NC=tA9Owd+w*_lW)s?tvu$&`!i8~YS{i3-VdgkhyHhVrQ9GMu3!Dn4JYeWFaJ8-GdFFIM9Tm34<9}~S>n;Q*5lu&6(Fi@EzQXw dO6>U0K1n((bb45Q9RmXcgQu&X%Q~loCIDcZ3Y!1` diff --git a/mods/HELP/mcl_craftguide/textures/craftguide_zoomout_icon.png b/mods/HELP/mcl_craftguide/textures/craftguide_zoomout_icon.png index 7db747fdac7f320cd792262753d31c0aa0a68c70..2815f939dfa6a3659b0fce1dffbbfb309727bae0 100644 GIT binary patch delta 1145 zcmZn>|0FU&l7pFnfx%g?-E5=c7uI^lo&cW^*Z%_r>IceVsJ(;Je&1^u>lhdqnoENG zf*BZ@m|0la*m(s+M8(7hzhj=Pq2lbot7STet5$c=G(k%hzu|eE#zF+xH(ofBpXR_uuvv?ME0Gm=ru+978H@ zy}k7}SjbW4_{ZiKftxsV7w}B-5acuF-T0h=o7qL~h?0QsnN#y#UUX^wecamOc;}oq z(`V1!S+)OJ-nYEx)yDI8-rRZfuB9gv0|?ZE2nGg*5AQARST1p%RN|5i5o!1zS-t(t zB}<>6^uuS03jXFTjI0j2^zEk4qTuMg>sDW%yKkl4_a8G%Wh|f0{j%dpfxp40_FuEh z&bRzeQMvSb_LtjvEo(nrd2rx|>G2P)n=jm${%+lxr=Qk)f84%$X458t_4>9E)l=)g z)PK!%?3E>EGRYE2A?vZrnScSF+l}FePX1u`+E< zv$7An?RIWXO6IS>@H{vC$T7K&h>d`ZrpC`(KY9hv|e#u zAu#Rev3WN#&O2W%cAmTUUCFF(zyDv{d29XZg5vcXwuXvW6`Jzio4I~zn%MK?qv;pF z6s7G7*=Zl{t)k_>Xr}o4;Hgd}3s-$xzTEq1HTTu~R-3f>g}aYt6k1M;*;N|zCg_so zvrQ-O8PA)r*#613RNme>r9E*QSox&Fp8s-V_ly7d-P-wiZsX~)?QgcU-`VSaR8LL! zR=?7-y<68mU0>h#W?j?nc_RBb*dWn_M)o{X50~uje8e#QHAu$O)z4*}Q$iB}<-_>4 delta 1421 zcmew)(jq=Vl7o$bfuZC>Im<@HFRb;fk)AG&Ar*7p-aVf$k}7lj1RmQzJlI^{_s% z|8A3CvVjC&`((LhlQOxDq9->{2Wi^A`FFfWR&t}wi@SMMN8Y~MdiU6k+Bd&`-@N+Y zV(Y)MdL`daj<@rR57-p&TDaQ&*w3impx*HQ_NU1Q)Cw3YTDhJ{KPcIKS7^hvyzdGh zL_a7M@chV-KmMQZgX)Kf-@Df{+B2@-_VszAaqeIH14p;Lv-(h)-g7$l&+-Pv4GcE- zwv{*D`fhPD(Vlq^{~ia|y*{#Q&uw{{`XKdzSM)r_du(>~tYHo2jq#244bN9B{-Gp# zF8VP2bh(&UEF)$ zw`|_0>o@HTzFhA;taiKJ-#o9pr}nO4+4hZ`H9UK`V{U!+;9v0M`Hjsv@9*cy-?rA8 z@$YY0^*+0ID-xe47w=Af^SW>2?q1DTZ$zs@y!oUbyjsFu;J~|bv(K6*8^TvEm$7P@ zblA=**6@Pj6uE6~-Fwb#SG9b@_~HH%_Cg2V8-J&t`yE$w1?Ywcv?Y2xh zJWusc)LJ)hzG{!Xs-fGZ1pb-mTE2;V74K8xooM z`uPg)HtwABTOu=V&tLo~BJX?stSYwf#6&X&LSo~(bxO&uRfm^No@yZgSl>Hfp%HWw4vD&}?NO`N4!G>t25X4eCk=<><4 z3XAJoxqh37ehvElOGNZ?Xx6Tq>ECnov!`s&)68EYeL-B(5$PG1oo{d}eJ z4#X&2y1Q&r+gcA)RFB4|H@6biIW)2UKeI>vl|?b>$C?-z7#KWV{an^L HB{Ts5m^HR6 diff --git a/mods/HELP/mcl_doc_basics/textures/doc_basics_build.png b/mods/HELP/mcl_doc_basics/textures/doc_basics_build.png index 3f89001f126d54cbeee87b5b52c206bcf67a3105..0d071ddc776eb5036e9093e5ecbc8414ea3bdbb8 100644 GIT binary patch delta 105055 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ΜR_`p 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 VBg?3%0VJ*}?CeD>qpznc@48m26je=K6m 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 Q8F%u|D!1vM7cu4m0D!a{KmY&$ diff --git a/mods/HELP/mcl_doc_basics/textures/doc_basics_camera_behind.png b/mods/HELP/mcl_doc_basics/textures/doc_basics_camera_behind.png index 2f17e475939cdc4d54daebd82c921a8b632baf06..72e05b82ce2a8206c2c3704edb9ccdae7b8e0d0d 100644 GIT binary patch literal 49825 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
    Q#$eMV+$SS&1O&kCOtgxENF&I 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 E0G*U700000 literal 50535 zcmeAS@N?(olHy`uVBq!ia0y~yVANq?U^v0S#K6FCcds{yVo7)Ob!1@J*w6hZk(Ggg zK_S^A$d`ekN{xY`p@o6r7Xt%B!wUw6QUeBtR|yOZRx=nF#0%!^3bbKhU|>t~c6VX; z4}uH!E}zW6z`$AH5n0T@z;^_M8K-LVNi#4ou$OrHy0Smumg6?ov&>U(WMF7u@N{tu zskrs#Z{(W1$VqZ-wSpV3$^CoiQ+{Tn(dJdFcdvThXfoT^OT~3^i{s4+8G*|Z540sl zn>`SpZ16z+@P&+n|JTbo|%=#+N(EdRWh}%ihlm*`Ty_t{&#Iv+V|rT_pjUk@83T( zm674j-gq58zP`I}_wHw^dwTAm-s$w(-tcdhCjZvxKVU!6k#Xbw_ussNd!L6p{rL27 zLa*IL>G+#dYiGn-KHS~Y@oo3qRr{Vlf41Z1a(%g;XW?}fsq;6*T0X2kduH41v&nVu zz8r0KykY;Ed(WoxvtunECg;d}Tl(btf13^Vo9FyF#k>AZ@K$a0njXQ6&A-d<&zEHS zap~X%*55z!D^tV2HI_YX={Hxp7c*!7|L1dW6t8}%WxQvT|HXB4J}~FXw9mO*UAMwd zf8BAvH(F|YH~F6iiJ!e&e!F+SKC8-u<9*-4+aFG?jVgQEBA=$Y^l#nwc~34h&hGy5 zMJZOcE&SWc8&ierW(Z!a+wPlLb^g3$MU^FI?9PW%Yq>x=a%Xpc{x09PU3}$aZS_5y z{12|1^I@@XX!-89)pZd)|4yv!KL6{|x;LK_!u@`@Y`dR(zyE^EHhnpss@4lJH_OvO zqR-x?FaLgDc*?BH#j96NUVZED)Y|Z}r!D?jmd_J!>_5)W{QL9jkDK>x(f<8#o3?sQ zkn*Cp&mP%6t!9d|l9;{v@P||TxOW#F>Q8)U_vZV7-IJWv{$Dy+adg4XP5wFIem_3u z%sDpc^kRF%<>J>L8^wVf?gUbv`R@7iuU#Bo`#t8ncBZo%AU5&zcb_Kn=gzEYJ0ZkzdXgg{*5rm-0(1I z9gY)aPn*NPalSppxj*{$`|V4oy#H6b?#=v2?)hI?|6Gtb{BcLr0_nEDtd}3A*EWWK zJDfFtrf^+<*X{d@XBa5XdG(OJQGd(Pov%Y}s#52lar(&r#hKkm$u2ivG2!*!dt&o{ zoi%uqYyDHMQt6=Gm+kjg=RQ4U_gySb^L+h<_cB|)|En%bsrA1XR&X`6B-K7e%q`#k z$#tgMN85L8(%!wvKPmjhi>a|U({sZ8DpJG0N#33+9CveS?Xj|_E#YOU^Ebv?KBT7f zo}*K1r+vHIbMfK%?kNYS3fKAda6Ejh@1?}@?+goL%SUDPRr6nbW`216KF551&xzXV zf9BjMd~RR6y5>%^s*&HX^FinSPp(vGaQh>_?<427x$-W%iw>Rdbp4jScY446yNPuc zTZPZq%ky!>FdENS-+gK3FU75(RIB~F=j|!Z^>0quCGQ5&htJ%tpYSNgXmgeA%i<}* zah4CCAMw(BzI^$wm0a?|8|1&)TWk*CH0fhr^JZ_gcfP^b{@R(=JSq3TrWz~UcU|&= zuQbXn+T_QF?42O%pU!z_zvKD*S3e&x{8b2jBoQVM|2{wTNq4%-k@BL7ch{hSYkbk+7qJOYIc`xOoWt^BF8%ilzOV`#Wkj(>Xw3Tt_n;tSV)=P!FM`scEqUU@=rD2ReU^A_qVs4H(Al)hV{ni+FysN7IDd4{__i*n=3b+x9C(> zP*(Y$r#Y9kD2u&R;Yqd4g~rk=&C6^y`>=1^G1>B7@gKp$lbTCk8uk_b^a}R1tUVBG z!N^v{?d=|HzeU(O=agr(->ywOS#gIGs@|{#DhDQ=(p)*s#8)TW@}a%38{d!g=j|-> z1>(=?*L_cQW!8MM@pW`>-LqTMPR{)B?@oWmoi~5JIBNd<^XJXp{0}Eq-@W@~@0v)Z z^dHBj@xLiZKHc+Rdj0e%^^Ypj6&U1&z6c2l^B%r;rY-UPyS#4`e_Q}1>obh(^=*C@ zmA{MrHPw2_tl^i6_iXW<_ITT#_y6{;$TOQg=d!BGr@+~aAD=E(W@oH(&!2NU>&vuz z?EhCZbN*sHzkOHaxyo5>f9n($xhF^-a#vjy?)SrT;~PUowkhxbt+iXn`6k!8a_yae zc4xHI9@w-_HnZ;NI5Dv(NcZpt{iS=Vzt$i5Es*21d3)XS?q1!pYsQiXe=dG@=G;ZK z3B^IWOQ!@Cox6FL^NZruj`rtT7vG#YqwoXdY#+y0N?-oUg}hmiKka$hx4pAo{Haqe zQc`;Kx6Yog+PK)fp@T)f_Rrak506dDe^uHp!onVF{r9KO3GH6Bt9tI@ za~01sYX7&-5}s(>n7Qx3&3@S(R-E=TYvo%+@7Uj4w9Hcd&%RksaoXFrZTnGIx56^F z>~P-x^(RysXSAIBx%j+;c&799`xjp`)%X2btGoP5%jDac_RqTS#%+z6_BrtGyWG7$ zA4WD<##u-x*-nzOt6^qvh&c8=&hhD+cU?1t4?E6ReUa9eeocP;+bd^|IqlY&yz#>F z{W@1a8gKukzRbn;{A8yh0pi?x3>GA zbi|BcQq7 zH@#f6D_*YQiOG8f1%*FP&iOza0GAxqrcjPUqS~dkxnle{7ep=e)LL z${n2}-(UU_@t>$U$*Mr0ySbxg_F>mazFoHu@f|wOGi~4M=Y9QxX;&xooV5NJ_U8Gz z_?)60=0|oXJI{~X@~x%u{^Z6I`5*26x|huLeyQKF%WC*sTi~QL=hj2%r)-xWFZ}gB z^YYQNcCqh2TTN?!dQkoQqVKm0)9*Lcte-FO;MEhp&ywd1uO`aux%8H^QLcE;zR#0) z-MW)0SR(o5zy}__*8u`4vx&igK=`f3a)ZzDMkBJ-n^vYt$z7>TvV3zb$Spzq2&AFE!+0yZ_Xr z{aX9}X)SAyxW8MTFV2?V`R6>H&eyS3iMAG6)>jObd!M9PPVefgJJQU`U=aDqZSMQ! z?|utd3Op>~+P~UcH)@N3D}zfrf4o3j;{SK{3+5Ex-ez}Q;(p}4XACD~PcPt;F=KTw z>ht}q8S{eu&mOA?&&4w@J^kmf;BH>@{2k0k<<3?rDk-)IJUT30u)OW9+kB^jiT;j{ z@;A@Fw4pLZysSKEeszT1)X5Dqch_yrd&?R8$@AsYv%N2aLvyv<&g&ds=5H9cESg2h zZl_Mmp8u!19{0YV8RcxI=f}T2P)Td4&*O|$&)((9|9T<&;Zb7t-<7hnCN~>19lSsP zUj42E(QCi@pK@S`+S8vZe(v1)`~TB#zcp(SNLE=SaJ%aG`(3kt@w+Q@-@m)+--+L{ z+zxXmW=VNV`QD#;WY*)oLdllQ1>cV*DK4yx*#2?n_1Bjx)?I2#o%~H)m6zdeGM%$s_;-~9+kCxYE%YQn`Qm=Egal+N&nG6id4L3~Q z-8*uOF^x?yzRu9)OI^}AVKz4ZJS9i5*JXtd)P|WL1M8w`%LD4=k~4E+L)Qt@oZl2 zzT%AupZ-|5=9IsxwBdaIky$gKf6tB^KaU<2j*BZa?4Ff#CVRr| z_aDyW*QWy}%5c0{9q^<1^^AV2g^w4{T_VTMz+lSYn(O7iYioV}8&5gmoy_mD=G&wv z71grzn;*CznY$$T*_zn>3?Cn?t@&_o`_`j+U(cK6v)lYjy7zUuf6W?^|66X}W-;Ht z<3^o|fM0{v{?I(Xdo}B|#ilpB*j?`wVVWv=%4*uL#kV*e-yih5>-glI%hU%=-}l@+ z%=_zQDO;lT$JIN3&Y049Gi;+tPV9x$D^(txlRIp-tyiuwwtd`pV(HR13t0Ji)GHRe z=RL&A;Bi0pfl3M!?-HAQ4*Ak0HaDApcbFHJtED;qHDff$;{UpUsa@MFf&98fni3&45KhSMB7yp*BzAgz$<-uDg8K31mZOy8)=);F=S`(yhOO~hz zRNT9CmWzkSy!U{x;(wpI3rkKEXQcEOIA`hQre(eQw{H2D4#I_`k18-R|{Cbd+=&q9@}>RvPap0DNhy7FfDF( zJ$-!kZf4zVX_J@2)l7^>zR2a-2_95D^Kaheyn7|u{S9&pcN<=Oe)6x}z4z-nX3w5E zJGRWA<_$;pgXU5OHSS-2jTh|GGJJoZ5q{;k>Vvzr){z4z?^y<(&D_w&5Hrca`H7@l z#eU(avxXc`g&Kc2emnPl`5T6of^zwpYo7Xih`Y3VyF^pHc&J~K<^nH&p&r3TCOfsW zUH87%+qdw1X#VrICh7Nq*{b_@zqh}7yKeg9+BKmI`!=uKy=PN@h2cTzm3^;xjxV-8 zt{nKLhOy>mqNv{Xi>p=#{{MK`XttI#vrQ&L!94Marze;6?Y-Y(FHu$hD8HxSg#Ro% zP95>n@1H5Xh?#igH+Q*dz}o#)Uv3u~hjQn9Ic#=&+Jir~FPeWgZgAh%)n8uoIraRk znq_}|@Aq0J%+*EuXk z>FfNjb7O9@NAFl8e*Kz>muIF?YZ~Cnfc_O3DS)6GwhyCIWvVLQ;N~&F~b3#-23~NpH6(oq>{c# zJs@%CruXe1cRTEJpP_A%SN}cy->#N_<@>(=R?$p24uYK4ZZ?<{ya(CD-l>XiSIseaV(Xa0Ke_Rdud;e53Jb3Zz-|p(i+P`^xLbllM`Sc2cZ-+bulsuYe@bn|*-JaSI$M`TyW|P>#LS4;byR%+ z58>1MZqA!;S6y-X*xBaK?DqdQ*RRUlU3eol&~V@NF!rQ<^}BE9npfNzmC(kWxti%PONDRSk-gvs@hNHoQLP;=KtNh z|6@I8cbkyp&9iwwx4qgrd3k%`|1;e2vGR8;YX45%9#{YL)?0m>|BLH0?&R{_IiyP`@H)uR`~Bcv))rw-v3+)+(1?W0<(I!Sm7G-Ru7~$N$TAH8u|t71i^5KX2Y% z-HFZ|`TPHUUA#Q*$J+W2|08wy!`s#4|9!NtYVE7*Kl^pkGL@E{XFvaynmv8xg4wIB z^ju}uyX(klk2aw$KP=NsQ2Gx z`-g?~pKf&THz{8c_1Ap@|CS#Ja)rwyGw#^`|m7^zsI**`+>`&bqpO&e~+`*+~xoLhQIU2{E~?*>g)Ww zI%Or=4yxX(`Q~ow-_XA7?=|~h)dsu2z6tlsv#tMiOn%SS`*-V}o$mg+_2{cxAA9w8 zL*K9jqb&Ui_2Jh*V{2ScH2$kf=LrCW_+>jJ0WpSVB$Y=PbH=5Ie( zuLj9~x0W}tuhn{D{~+8UD%oQ zzpqZ(b`zgt=Jy5h@z-BA&D#3*ePDgj&yW0bAIzPqEp&!U?$sv2m;dUjzwq4gmV530 zn%!`-<(ogDmKA-PGgKKi#>f9Tn1AbcNSmFFV$FBv$}hX-?9`lHefHw#cS|$!oZj;# zm7535@T;$_d^(NJP zJ;!}!eZGD3TV{5Zb`YS9aPWiO#glWU}-}i6y?k_L;@ceeg--9pj+uHqH?9*-i{oni7PtOZ~kNy0| zV((3}>yCWWU;SB?e)z*~nOXb(a$UH()rqBCjY%+M^G&^$<|?iW);A>L-x*Cm_4dh^ z`oG!x?{8CNo44%ahab1H1h-jliM6q|&cDsqFjY6_|L^}t|-_4af^c$0lKfJB~B47KF|G(;H8Kz~NzRbEWs@{A{XtF$W!EM8b?eYJ%PT%(_ z{*-6%v8={Im&*rab{?2p_y79;$6qgg6|Z|E?(CqKaA?MwYz~*o{fV>o{rs9=`}BGJ z%j^G+{eSr6+4T9pKH8tXpwJ<>NQ?f|2y&Te*5)Kx1D+OuKE2PKi_=*|0Dmu{Qghs|BuK2J{SN0)8+r6Tz|^{ z?cM(={$Kuo>HM1CQ~!Vd|7d?*;eTG6OQ%FqmnH6>-}`p@(aPd0lP5g;d-V77@cM`A z|GfUq*uFZw?oX@zzw-LW^}@fNeOdeT?BwW6$Lha)+Arz6qx7x&yuIJze_oybf9~tM z!QZ#%|9#P586w7M;C(H zwCd}Im6dr#ojUn3$-d>rr=QK$i{~D9i2eQLq~hJ3pMTYTY5wb7_50D!+s7|gJTGzC zuu)*{{k`WOK3FV)yNGGAMRnYTl|?nhN-UKs6fZ?~>)bGLu~`TH`T zU3c45e7(Ki?BfUS_#c~0nx}r$cDDc{DN?-J*nFL&Oa zefsOgy4~UKZz2voeD$cM?*D5!rZWLgcg}E}{whB$Bf3ZVm)!o(+57+e+Ftk8|L^Jg zo!Nn0->Nwl>m3xhU?wp0e##t$p0|94i*hfRM64?;V`D2~V>eLr{q_If_y5=T|2Y5u z=hfc%|E%l3>i@r@|F3m=-Jj{l=G?l#k!-HOX2R>l&=9nsE9lvV1TPD_Lq}PE@wo!mf1&#u2~`TJPE&1YkoSsdSH z9Gh$YcE%a2+Ri4j|-MRn&-t@k@c>#Lgq=S_Y9^CYI>iYle@w>jdub019QE+X_ z!>ifb=hgnadjHq2=>IRZ^Z$zV%-jF*vi<2EnY8uqihJ`64qmjq{_jfspQGvd|IQ@V*Y1e;(_a6- zKCJ7=G}c{l+i$O((xTv%)ZU)W-pBX5yZd31^^D6O9Sxjamh)Dhd%VNiGD@m+_UFA) zx?%4Y+gM0DIbYA$^Eq7>eatcW@XjAeSKsS>dve9~&G)i`J8Su8DL#F`_+;VI>U>}G zyi$I@_SeTxZ$7Ib#PmDO_}%u*o92;QqPJe>n_m7d=hh+NsmoNKefzLO_?vZp{2KnS z{J#gAqtCC2umAgJsd&HqoVVM>>)yKA?0p{p!>RsbLX7Ti>*p&)gN|ABkbbZ0L`+a9O*;^h7IidFaMewDUPU>gP z=Uds?Wo#3^lx7}jcJ=Y&t9Ppp8x#s`jz$J9zB`tSw{y!ospJ6B3H!hOYEGYL zSt#4I<&{_Y`=2I>_6s^q`FtXJvfOXCFTY>$ z*j)b2e&cDIOFy@UzyEi6^6S%?pLXy6|LLv%pF^)6-1=BpTxW0p`O4<|bziOR|0&yx z{>->4`|kM1we0Kvywd)EKJVb~v)?L8tG%B7`gQc_s@wU?&Cl=KCn?{vd*kcrr{5K9 z-n~6W&mzk%_Q=#FhWVeOcPE~IcD+A;=FjZ%eXcIK_d7aLr7sqU%QNQJy?e6Ne#d>&LYYlM zw@xg~E-5Kj{&qGk<>TVRuIHY)-M(A#_u9#KCCk^{Rl2vU@`cXx?|$d?+9aIzX9R5& zpSSnlr|b7a$`z(4t__>Z)b3tbAGjtWNAvJB@138oh0O_f_b$F;6?uR6{`XZoZ@if- zc6wXHmg|1kf=}}7s!rc+#aVeJ(Sz^R>}{Me>7^63S*Q5;_)V0Ww(`XW>05F0cGcFF zPdskV#^^+)0f--yQFVZ{MP%-jdy`uef>ptWKJw^PwD;l#V6CN zYIfiDO+IzU2d<10faGiQh?@@q|u zz4(3Ygw}1++a6B{?x=a2QTqMevPe()TkOkkA8tNcW*wk#n$LZAOpJZR-ml+m#m_e% z3%hfdE8>B}ZXV6w%=ZLNoaX7gVSICLKn; z-7*;xVlqmH6K?)xc**R{aY59O_NtS+UhNtc%$7+C*{`i>T+`-R+eyPN2ceV$;x>K zpRFE*DNUT5T~MrMUN(E7$cBKY##c&C%Z7SIZ?=f4)|7cUcOWFIJ_iwtl-R}E6hx_l&{hzMd zNOa8V3zg+dlknH*jePa%+lL+Xk8eM}p0}>ecA~_b8Bfk$&YvYIvORw-DAPqvSb1}U z|0MyL)B9xIqV;dBoKm{`&dYy)N~EJSCx3grWB&=42?v%<@bJxGvV3< zo$|BM_wU*MpL#fR_V&khnFCGXFlR(s#WdgQ@@$_qC(YIZpIq~#r5swmO8VDeNya}&W6TnP*d zt;NbG2=kmvP*lqJIE9OGn$26Dz8zwD9Bi^{`C6118`{t9*>}?{TeErE#aAsQ>gtCo zR(&X+^Pwtc>Gs@0ndO?^ON=6Sb6pO5eWq>4gwpyA79Gn>^1dJa)V%w5nj%BOiN$8C z9b75{I$097zN=YKCi-qq-A0?Pl_GOvqKXtanC;$%v^XCxh$u9kej!8ebm-#dqop?X zcU=<~F0-GoMRU`lM0-IE|5FoH1O8fBoH;Q~jbHYxgPNdVjI2+doRr?;z!}f|ckGnD zq9fpa-Jv@&XU1>wB_Gp;2 zqS~Vq1^aLG#VYTP<(g8CzQ%Tugj|J>`@_%`AjFJ!a{A6Jq|f;L^z* z=NG1$@36X)f8T1?eo3p2EkZNSm01h=H5ay|Pwz9;p5qfMr8HsIyrrb9{(8xywn;upg$k>F$1C`%HOjtwb@l12 zsZ&m#TC$OMmDolX(*?6$A|{bQ|7&uiN`K5P3{UwOl@WajgL9fCZw*7|TA z;0=@E%iA$6A?EKzgR8l5bMHFx=vt>0ChJ~EVOX_YK$yE(;k(B-7bk`9Oa`w$$?9{t zbFG#6&i!;kdF9@Brc1WJj}e$G{@6|B0N0%usY_25CTsJR7tgTbPEuB#$vjKfOh|g- z0S!e1dAai2e{Z-{{(j57VY^{d!qL9D;>H|luG>aYg}*M>|2(=pZ{D6?bANY-ZjLa!yg+=n zt?^S&=O>lVCWB9!`945D^N(AFhNv*vZ?mPlO7%|Qhf`v*Xd4A*1T+2 znrr@Jf?sgf+9y2AZ6b4SoV5(PCvA8ubj9}dH=Pb&Dw121dFb=`_}|B_zmMHtDRAWe zuIgu8ol9i0fT^ui{lj@qZf!y|U`O!ovKFFvrQQ9+taViri;z ziEJ^_)3sNo{Ekb{<{g)AfXn%tMS2BXx|1icXq^;0eT`ShbI}gRtGk;enx8Dm z6?fose{H9YKDc-Me=#?h%tZ zxA@@2Z;OsToKbd+$-?RMGKF@r)79D69XGePolHF1nRxW|#IqCcW(f)}(>tWHIfu(| zr{cDplMkPm`7bY;EiTMhY4S+QVOMo($d4_70xlk#v(3uA7N7gVwQ$nj9yce2qGF3e z7rC>Wj>m~@jF$bjYSXL72dfqy<=FZ##W2 zw?wR~cS3;O)sH5flV&|B?DA##vzC4Ln#sn!zeAGkleA7gOWb4nT`7Y1nf6rmNhUlK z)SUl%o$M{yEqid^{iS(lMKvGpyyE#xtx-2RhJ|U_#)5)Qlb)YXu5~WeIkY`*zRmwP zC$~zkw$7gyzk8ooq@#jbCkwM-bMaYdTRYfbK}Ue@cp&fwHswy7mM3jW)y#G zZcgR7Q{nSWRnu@LbJya-N6V~b~`@Zs>5B}s)s+H$PAel?QwSL{|aSuPo~LJ>=`t2RvsQxBTU)V6ZY__P zby>4Zno{uPCufV;{8k^@qxSd&!|RX*xJ_Vd9~AHa%oytGhia`vgnIn&kIFHZ>XK61omO5qAV(t0LGV_8+x(RuSLe?{pnjXbgA zwCS6yX^xu(FTS1Ko}SOII$1qs(VmOl?1vv7oHTpGeu>#}m*OH%bY+$av`&jyp|bf+ z_hXA3ugx6G-aXqm*=D7v2ZP|#i!&_06*H(#v<$elQmtRNecQCUIj!2Z>wJzissy=a zTVB`_oaR;CyLZN~37bUqcRJ+Qrzq=d?DqAWCF|y=aOvXj>_n^OXMgH_$-TF6yV0H7 z<=HRA9QXZEpP#jRnu}$@@wu}KjX&?~SP|)QR`c$hRu2zjC+DEsx4UNV68BKZj8M<7 z(p=p5kjqz0+~>?!`E@6npB;R#z+qvc_A|e{dG6<%y%hRnqS&0(H$PFxD6%lAeqrH1 z?c24IN#9yKVq?|wuOAetT+VmCdC{R3-PUQWMO$L_l)mq&EEJf2eVzQ*TAgRP+WhC* z_T~EZg;wppJh&EZ&QP|7C~ zHP8F2se8uER)&aqon@wSmrwo`w6cxeB$K_&%i-2c=7kUcDKsreca!{jM`N<##)->L zt~Wh+0Txd+3Ygy32AMuGAEk1vM*FAZJ4`m{VgHutF^ZR_xFjH zn?L8jbo2G%KVSA2X!{0>KUyo@p6q3ww}#Pc=Yna`Jgdx<>zsr-p6@-YS~N3;X}4vE zMaUPy(!Y!sc)}0Ze0jvCr2cGH+_Jes3cSXXHIv*Gi{$pUnG1Eix?;JU%PH%VRl%O7 zu8ost@m-C%!r15H!e4C9aCw=7r&8Clj2ABmio!sJik=5m}$ySkf^YUV|-(K`K z;w+xb^i$?VW?>)80nv4Oy4OqkS|0E%3p&%ytTVBLVVOzB{)`sOZIj$5x0M>P&szE< z@mSi-&KZ@C4_ywV9JNp=QJUC!;tu2V6A1+hnI2MXf}EZyd@EiW&gke=o;YE*@MLR` z4(Fw+i{I(UD9X0~;%jvBKI=3qG(qit#l8&}j2vV-n2LhjEp6qwrzU#1Zp~5+t5_55 zc~6?1Nnv8_UY~P5LYifh)RWUPpBb+T)3FR-z43s9clIu|$tPG&Eenv|K6!UI2 z-E%@z-43kTVH|dP8}HjGpWZ(2(>wRA@#%*Z_I5FIW8XL>loLSa5vH#S2{~ zIa#HRj0!W&XT5ToDiQNqtk~mx%FT|Gcb!w%L&XigM%|j~FzYU(c}KwRDG&D?n5&#^ zlw?-isnR&}q*v>Xl|FthaSo57&#Lym)2KXE`DC6+_6yItcjxOAd(C1QcvAi!5??oe z-txjZyO>Wde!AD|uuzADX!sVUP92}i+Za0b8U*Veyqcm@#`D>x;>C`aN43{2j%yaP zSTgYfx3L39?~Glk=?l{is)&d?c3=JDrIh{At9WYLwb%RJKCYX*t5oA=r=Zn3hLRlp z?1q!SAJ1URzJBoJ_uV`JFDf)D?U(&c3ppEnN;1{UQm3HM(DT8C4a}JvmQCLhoEg#L zW^kX#BilmX1u@v$6*cZwn)0^2O8>Z;5iL=pGk6u6kVbxM}-5Mgiq7 zSLD1SjNH`{`L4*drs-aqpf({Oq9`Uf#;~PhWu$ktPNC+)RH24HKU(Vw_h$AtaTG79 z2|wMs)5>^h;OkvyswW$y&;H6_(k!07&?t;k(?cM*f9{n<-PV~KFMP5w6+hzhR;guL z>|PahMWIv8NBhotD0!~6oVn6^`?{mvX6fveFErnqn%wy^sWJzj!g9W^t5nt*{Y)vFMge6wh(w0 zwT`8z;$G(51-fe^J}whC@8|ZEUb}T;`)Q++H+@}8!)G#^8z`3rO-%7#_G)43X|=}B z8D}TmJ$Z$bW9^QGFI_iZ_u6FhcX9jOsC#v#{~v|(mCt_Id;MGIvPmIK*=Bun+|M?9 zCg{pZ@o~@7E9pDSWBO*@Lt$2~-UE(48`F!H1e)%iZguFkucF|ryJyet@rm0cEReL< z(`2terLtoGQOAkRlRcGvdHnBN*;z#KJkI!Vx4EQZ$Bxp+55D|c7uh9xzWM5_`j`{n z?p@JI;j&?(Lz6lDk|abM$T+I~W@r=DnKy=b_BycLqU6 z-FXvk?7V%=NttEGA+CrOkzRXuclBO!rt_zxIyx)@E}Pt#cGA*+X43Avw~n4` zds}yR-Mc%M{~vL0Up}dA?yi|DLq!(rl{2IXOnf|BefRI(JD%J&@7q56mrmuT?@|fcElQVWsGkp4UzMYQ)$GJtb@9wz$bjJp-oh!7h zO=30+mWSL~6wMl}Kl!jt856tURj0L2Url~zCjZ5_*P+AtE@ua`VA>MCxWv54(>R|z zQ~lXr^HS4y#-)&_e7u&C_(L55Om z<5fHs-_sOTBRz|Q0v1Pd&M7<9=(L8D^;F8NSgB_YiUsr5s3b4DVQefItZ8f|AEkC| zhvwtT%;^VtedR4St!zKx^5osDxgBdH+}jo&Iz6k0dFsUwZ@pG)Elc6u?}I&^V=gsU z&rVYm=l^DyFyqc0hjWdQKNKGw@==YPcgkD;&aGVa^w(miKcD^gYpXJo{C$f_W^cCr zUcC5f(N>vd8?zs+eXV}T$Vb_*H7sjkf6K#;y;Dx!YJIZNX?<}CuhV7`eZR(%O?9#l z`Pw-ePjuz`ElMaSWS1La~epRmg$1m?uQY>5i>_ozRv!};;oBz7< z>CW8cr?zogv#dkTl9c&nOJiBXdu|)4tGg_FS8&-0yE#L^=GC_?TVnUmt;sidW4_-^1mz`%1~A zZ()b!PRofW9X)GXqI9S-AT2L^>ol)a69Gfv;-kAy@NU%$>YOWTckz+wk*N+UG2e5< zrnP-a`0H5FakgdJ*|%@bMH~(>Zdd46d$iSLyG5VNhBt>J6BRpM6grJFw~b z+Glg89z3Ce#@a2t~$9yMxoK@Q4IJrG7?fKO&5)SufiptpCjbP-6i(%SXdGg&eAy${mVU91Z zIZDmi_UhHf>07S9Q}D4qJ9*l|1_j2mg3s4jMs9vKN$c~WV{fOhUrveJ6X~&=D|7j~ z70bVGn7i-OfYVY{qOJl_pAJ!=+)`_O0s7h z`~6+tt4y#<*IU6jqwMsIvZZNL&unOlYRbF5@Y?61PXar|IA+Cd+2P`6ohvRheb3Fl zlzlgSRnitWn+nuE^}c@p*EheoKS!0#pSRsfcz1eR?Y~y(ynT0lpQOCIRKQX5`q)MP zny)*rzrS<+iSKdKT^EDOlbH@oT)RWOpdoUtl&7x5vx^-oH%(LB^mOO>Su=Mv2dJeh zo}KpXS=WVA53@|?_1=`;zGdfX!=hdLUtTMD{Oi-z@b}9v?qa@|*Z%wa_RJG^9Vd8% z*=$KV>N#UZiIIp2_exjSdES2uiu-&P+)7NC&ZE!tW77YFOac)B8#OFGEm)Xr5!w~p zYo%hqy|i}a9RI#6I!huwPTIwZaPla1sx-EJPC9y4^P5iNtkxMnw-}qJKYZ2}VBI{& zl;L6y%antkGKwW48=EUEpWk`@NZ{m~ll+~&46lCvG}!l*>GV5?9Lq8u1(%iir%jE{ zOmIovvg5(3?!b+|xdM;awRlXkEfG?RZgeU78uj{ej!?&pTctj?FUh-TpKIhyIqJL7 zVv3~J?wlkuX3m+5m|n6Rna3$o{q51acU@lV*LFs_GCCjcek@_FnYqq0gr~p3CPL0D zhK2LWI_J$(3bUtPS#(oN^+s=5{>w7^fGIWUb$czmoTVS^Ru=>?y0nF4C z@BDlw`1tlbxxKaTV~pc!KB@`UKAviwd)vanX`{Fxvp$S0@)Nv5DBt zrMM~e@}oHKr7@Z2IY+f_ZwO16rMi4?meji(o;Y&j9&lpx&CLWg2EGgb`w9(SYeVt5UIeWAA)~PGq zR<(FtR-U^jvgLGM{EmZc+TV3bl8!FldyV;imp5<0gVay2Ua1^$nzhGg*-fqGt5ovE zg1)cMT>NW8z#0zQ<#W%S;dVc&<+8%R<{)!lu5N`!t=_yn8XKQp2)dQ^=4e;;w&?Ts1>C%Dp6Ejo*}GWho=0QFi2zkH*bN0V&PNrP?2jn%yoLoatm#DxQAeT|#2oizln4dqsEG zzP@p$-SGdP^ZPR19r1X^^Xk_>_5GjjG_xQ6w4l>B;`1Z^xZUjExh97#@R9PXPG%Hr zo#wk%<#I~p3J!s*KAjw*@~f>Dy*0`(^Gy@9oXy9kW*}4X;rH)78z*INYkwB-Yj$AN zx^BC5DTS*u`BcheqB*%=u0Q(E;@G|_zLQOdqGoLk$vD30b;8!V8Rtr@v`;U;wR6FC z%}N95JLdDgpK6>bxplj>0sAMT)2la3ST*}l*LCM**Y3=0^vY)`DangyF`aENd#76R z!&7-HcLp!@4_!2KmGi}QOH{T$IwE4Nw&=#kR1c>!DMw3;%3tv>77uUkyCv5u;Gwl$ zvO{)vrQDe_fxmS-WJ)VHnDFSPM&D_eHe-T$+R^Lgx4NyX{pQ^`cINuE)l0fO`>(~i zzb%X3_vPs9{Jo{yBDS}$etJE=?(>rr*5!$losO&CK0CWTzUt+-pK12JOJCl+vV5+s z$Yzb3pI1y(@^^T%M5VmE^GTPJPVnU0>v$U{`9E&1DchBO z?NZB!E2TRv?$6IFDqONhJzzKA*IMV}3m@(Y&WwD<&TGy;(J()8f`ibByO9stqJr|T zKZ-l7V-Oy}Day3&!nHXLX^RhpXt$g^ow6~Ro$=mU=UcZc0-cuZ5_xtidP(MTRY^h9 z)f2WYjb+!i%i}uhV&~z)+Pf@w=C-HT)*hB*;6T2vt0OOy;Vfiml@3zzaCP| zHND|RyUj`t$uu!{+di!vGvQy-8*_v#-}1hjDixT&N=5mB(1LAgS3_xwK#Iy?9X?%PG0Yx4mV!~#r=r>Q_yes(p%V@Qo#of-y8~b*@+_`+#<=ww;c&@J5CNH{6T3z|^ zg2S%U+*E>8SDJFKOt%w^+*UOy#ID)$R0>1rtiX($jax2DNwlA^o~Ney>eprUc&pCW z*&h>3znD*VHxFw!pYFc>*W-68?=lsZ&+77cvSZDkFFQXd=n5Xb^7&rJGd(V)h&IvP zdv|?X6SIG##h#1u_g?Vl>+sF5e)a2XMZspvf9Ib0eM&kyTSzO|++S~^tA?Jc$(qSC zE4Ong_(vAo6mz|K5vl@9t??1;l`|UUO+P3WT58I{o#;n>qNAhNIor1c# zmGEv0+4;NbdJpct%dprcYUUQ7IR1KVIqSS@OtWsT4Q)StMSJG5W6BIK{Qpm#?z480 z^1{VNk@uowHn14E`o=C>D|GlwVu!8wk}ca$9oIj3dci{B&Xk*$4K2ZIt7lcac1=@! z%jNJl@P_S)sp8vqU0kwv*TP5xhqQAonc)w%?2$X2aM{mUf7X^BH=n~^v zRp5N>UyC_DeOyzJQtod(^+fk$i@c(*?4kU;odx&Abyplr^h`_5(-i4#cP~tzyz=}V z)gr-bNmG^2_V(Nk;eRseS=!8H>J3Fk495Mp9$KX@6bi^{yi%jbFys2OFQ?)dgI+=U4?Kh<8&-Qery8*z?YlGayW5jX9V<;w2e_HKW}M(T;FJ7> zfpZSK?#b-q!iH0G{yLtR9D48Smf&D@_s!G1ocye{kDAV8*&%4yI&DqG?X~@WKh8-% z-_^?U?c58Sx}VzZZ=330zb@zF>pT0&;vK^(*A|Lt>u;Q365^J+@SB1` zpwyYJt=$jYmYL;x?dIa>=`ayV;!owQS8lC8D(S;GH?lk%qzBo4z%4YUUQ#3uFa|NOj2`KX*5)ctW^Z^J?M4o4%_D zPVSw(Y0teSd#{@P$cGr|2!s}x$^BHi+5WyX7;ccPo1ANS>Tb=EY}N5rcHEj-^~%~ zRr_Lxlls(y;uaHDypnegzt!x%etGF&T$&QT$!@k z)KTq~53rF+kC`2v?KYnpdopLRb&{nGVgdKL%oUfmnV6`!>KnZl><-7NNQwl}jI z!i`=Tujz>i_Yq$j+i9}U$IV5hWABtVE*p~gc1WE(Q=!(JcKPJ*#|%z#AyJPMmhH3G zHa)*SVcAMSVawLmp4mw!e;*czlGNj3_js~J`^aZciCH^KGxlh_yTim+8r-rnu$xgJ)A27@R`qPVh*R(D$mB_+@wH_ye=}pxr`3FJ5G&wVe{~;5Pia zMgOhQgsaoS7q@BOb_v_ODNyR0kVMJNeeBnpZcKbu<+akK$jvsSGu?{oj^jHwQwz?i z+i%Gq&0KFPetoa$=>WCMNgJn5Qe;eXXcYVI__(Pyeb$e-dc7v z(C09Z-tHXunjD|e-FZ%mq$_bPKapZb+!W)pUAvB~A;OxWPGb;ivvK5x?a+@z)~xwOASYt#7? z%}@7ws|2^So&7thVDYLACp!Y9)#j%0N*JH7o-2FoqI}z=hgp{d%0(+2-&np)H|1^e zm(Gov+4+3)s*+sqSjG*Le7Si(PMEIWV#mVC^Znfd%bIQK3woYCbJ?=z?AG>R?cB8s zO*lC&XKLPdD$=ylo_L$X;rUI)kVc(yt&^4x(VMA4;GT8ek;yPvF7)d1iw}%{O7`W6eo86W;;nh}Q(X4b zFs0+uR6cFdjp}K*)gGEW_npEafd_t0yMK2wA9allFv*=N)1AH1$L+~1#fi@6;~xIr z>*<{!r|-3vu_aFD{M|Xe@(~eD(^J-Ua3`j7ojAG7x08Ei&h>8!*H$cMGFB3?(p)_C zq(wu=?a&o}pUvLB?48Dj$)Xb)nzwkbTylA5x_sKJS-wiQpS*1h>AF+0Zt9LVeYgIr zP4p_$jaxbU=ou~!j=fU?oz*Wd%lP)rz{P3io?ltJr)}B3MO$X&ON+O?9CyzBIaj4{ zeXZh_GcHj!yw_yAqCKj0qkFmgWc{Ogb%U+Te{GlD96sUi-OZ=7)Xz9OIdZXf4Ar-1y7bo< z#+)S2)wxBdA=a>(VEc~Kfmt?Mjd$V(laOv< zmlKP5pU-S{n%egGz>y0n>*7koEGF%K?wI}jw9M`q(=R>_dZl>GXT=n~jJIDDkDX~< zzxK=7H9MKwQuD(bIoQe%Z_)kQpw^JJvwl`;hsTNT>rq^HZilW|lcezHvW!Djjo z!#PvEjuUN?Q zxc8?|d^nIHd_u3{Bzlvi&1e{T7i!j<+l|3emk^vpJO za+f|=9OIF@aD}u9_reOfsS*nngR4ARufN%Pds$ok=6jikAG>N!ZkuNraJk(iWAg)> z7X`C!m#)YuUA@BR=o1k>i_2Rymz`@=RWk8eXym;&?bcT7eUV;o70W(9Tr^`B3!kjF z!r2LJ%jbGMxWKd`f?37ss`ibz#=^O0y4nx8T+wTpdC70}879|r$+?eaAKmTbt>`9D zxKx#Gk^_UOcAmmiAMZDBt)^Twi9TxYeEO}|tx}E4I`?x-&C5-?13Cj1a`7(7o!FP{ zc|dFZ(Um@N)is||rb-EkpE-EhZ*ADI=w}TVu6>hVwO6IU#J1VtQ0ODIezB-kx$ci$ zH>Tt<1ZP-$d&Dqtca_xHtK#atqNk6R24&tbx?}rIY2vZ&N!#LnUKZLJdv`E&y?OGAqbxR{gQ8RC48S}G~stQ{crDZ96pQ2k5wEIWQUa{{w;j7F` z*@dhxzPS|O8TWh7gA>iE!TNf0LsBQ6nzo|YDvNVU$FIj6-*?$wP2T@$6{pCocR}`F zCcR~7m~cM#``ezWCG7_rKW>@x(!l(y(H+A(pKp0ad_VO!I`ftYQ`aoj>J?tU3U+0@ z5Zl~-DM!_s{T2V>WtF@51uF~BK0CVep_gt()0KIcY$m7j{I7 zMsBysa9z@|QlrDC$Uv(1*a>26(MFfZLaKWt$Z-_yOXo}`^? zRM}wig!Np(CzFia{Tz9G%ib9***kU3k%+q)pI)eHT5qjgai;m!1MA$WEi*i)xy-ov z^zyQT1vXNGv-(b_lVu2s_qv>x4E_+jOg@V$m3rX3E7ioo>eLre>Y2S@CB}Y=XTxe=7GD>{K$Kt}*@bFb?kkF2x2!rsqlE(_BW#5_3 zD7hw*?HSiQPVPBcuXwe?W-`2c(8eI8-(|AqCZ}DjhQwK?Ea6V89TBV_pQl-#;XTM; zq42g#(E>s5w@i-})inU-c(thHm7`zrSJY2}Om{uK#tWDVWZ&K#lgmdpGIlS`R^ z@fNMP-Ho1;4+qRbuOFx>d9FzC*$8WGi7YpA70+p z62@^)-nCO^#l5u)isHB2D2Pi^-#GnsJG=Qh`8&J!SN{FVuEetNLQ%#}mCZR**DpAk zq^~0)rM^(g^@_nV6>n?fy)}-x9`A3+PSX|NvC~(~IxW#)hJxZJZ-z|T@F)>n3+GL;coHb3hpPv{VzwfAJoD|hew{G@;8b?WuJS>>(^`=zgi z?%mZUeKyD>a^@DLh^g%1GffK4Hy1AWXEEiVmz(68=+n+K&R$7AuVRwREj;nS9zKpj zfx@#*n}XYp?+P)9n{qU8jZer~J*T^#D;jE4k38Kw?a8X0U7S0Va<>*eHH|*GAtyJ% zc>RsKv+r)bHtcun^HNpTa9`KHT$F zo-H%dTN1W8`TVSaN$=k+l?uM1ck@EfW*(UZnbUq=jJczKp5IB+&*#hnw@ZHBrx;z{ z^)VG+PI;FSd3KKUt6LIHB3CbPomrh!(#o|&P)K_*V}{tIZ&9JYPG!7vx%nyMt(V1u zpbC>{sgiZ9hC3BmR_$eVkublR9dc~LqcaXqY|g%jf72@AVjO<^>XKCUiI(h_S}t7N z5*)t#beCmuuAqW(y1>DmiJ1vUPds0@Gio;5PQG)z)kY05d&-uDaoKZ3>F|q1F{}tI z ~w^3>oBQ&V1GBzbCqgQ|nl+o=v`gH$HWeD1hffVGg}k2b zG*zv@W3~PfJ&)e%-G>Xlvn0&B!Oj{CzZD@DRbVmd$#7C zr+4e(w;Dg-sgS%PqGQ}(+%K_4C6UQpAkjkm3=8wb**i_He0h`L8>Obq#3RD_%x8jY zL51YnO%FQ+fBkB$h}odFI`vpr=#{q6ObfPaZ`NJ=64cZ>?el`I2Q9bASUqg;dZnyn zJo&`BV~hnx#jBV6$uSn0erIh__OqK|m)Ch5?p|!b8}@A$dw$p%r*i>|GlQM%yPXOi zoLavqptss^K1It}gdgbSjrfJ9_s~v6IKvo4&oCS8XH9 zC9c&9&sdSUWQE{Fj-&IMx5WRQ`23dHzrFwel>dFY-J*a)XQFqQ(3QAjx30)ui`g{& z$wJlBc_&p1Hc#-HeJSS*Lxs(Gkq+i|)l8$H_xy)8=st_%Ty{2SRZP6+xxO;h)Ky(p zlibfX?`mWb+7W56amv96f$5Xjr?b6Vu|k%;==-S+DmtWUQ}F89uqGSzi2!h%X;?o9Y*6|-V>d!Op2FHTLF=`&2qlB~ja zt=^O|lSlZ>n&|db|C-ve+<$({o92-#E^lA_;o?jE%`IniDh~JDYD$@TqV}IIGs|M{ z5|e%MvP+M++r^kyV%X?6O;A$B`Xg zcbGG?RiiWZeA>4B&DQ^md6rGjov-MXVX@7Cm3>E*U!2*iEQLvJs}Duo5;czqT<_yh zs$IOw?Tne_!P}?bukf;belo$d=IJcnUAwhI4d3iYVCt1#yF;1%RCT{?@scu4)9P7e zQJdA3w%9Vy*k){Z#x8jAx8;$uPH8ntt86$pH!ZC`^;K1&z>M@dSKD=2e=pBm#;x1j zy1wpdq~O23)8oC9PfmVzao4;go>gq0FMRs?c(Lns{>=Jqx0wvSZZZv>ZM~p!U6JSE z1g4rD8U@qaZijAoWTj#5(;yx^-|}l^5L4y07@htVv(5@>Y;)mms@|ODz3ya^x}>p3 z=%mPnQr`-e80}13d-9UbrW=L1T8|H`GZSXJ;(S^zz0BJ)Y?JZfv$I=6cor-RoyxeF z^HRa?2^YFW)r+_`JhH1iE0lcvUEH#nLAs5z`Yg|VU3A0iEk`1wacIl6uGv?2oMGHi z^=3zz!7f|9{A&M{Q^hkHPS0ZDP;m(h4brPu4ap8xVR&}yuY1%}-|$UKS4MA3)7<#j zW`*R1kXy1oiAQ4$Kf5aX@BU=a+snOjMWacGX;bG$o6Lv_>Z?1oxf}QNnAKlMIW2AI zA6EInYI|_d3kkPp3JUzE4!yOC*fwYGku4UV=7{fz5?zw5-u=X{JB_lDElU*3 z3l?@QHRWD;Xi0;y#4wwD(r!G!>=BV*T@7Tvh6CAcD2^XHJ@wQVe~DhqaaJ6|$7 zZnf%Wc66?sPP|AkKkrrBubWh2EmyC($(qOIKaYL&kr<&zw{#}YRh}And4jg^(sQ~Q z&xB^4Uvuu%JJU0~YbKvPx!n2I%+(8Tp7jci*l4u9&E)ijFEOjixX&xyTw0OJxA(_=nZ$2;NBjADUxp-m zZ@I9STo-K2DlBv>0|cDB71}KgCx^SuwpCLvneGv$xBCZ^N%hR4(jT`%XRs?PamJjn z2>G@x^kKHriba>)*Az`|S-Q|_=83Ck=gjQTD4TM8W`ggdJc)BtUI#F<&v<4U`uVU2 z-ztFyQR7ze$p}dO`a0QpdR-=41&-F;^!ITJ-MoX1 zeH!lqqp)k*?S4t_#c^K64hv6uExoA1KBuKqAnIbs&l^X0(v=+4jhEi)s9CwnB3vfx zmXn*xhLe%c)-B#}e@fw%9RisvV|E;FRhac~>&ljU7I%%jHNAq4O1Cl{w0RpE#WXRk zpSw*tH&m&$Z}-$C7acI=@u3ybJbZ+we{+%f%mH4H7>&10k@)x#T zeW#F7ru{7I*$mOXmS2w_yqYD`QYN`&hO2(H^24%|4c@`!?(4G-t*q$P%gT10yDpHO z|La6=GyQcpe>X3<>1i-$+OlNhmNqBn%YLReQ$o!qPrIHhcZNr?;3V7PhkH0Cf4Oo_ zD!`!G_tv^4W^+TV^vs`hE&L?&fdBE)_Iod)99+%_G?A5vA60GAKxjQ+dSVp z_bN-5=YktYtrE8h9r@0`Nm^xrnSb?1qm|Wfqx81+Ni$!)_h{DM=}$tho0Ls&V(Z$o z{g#MR5ocavp3M5istg7bjSt=2`!>y9;m5nYyxn5FwLjhYJx{;9`Qqq7jms`)mhF7G zw5jFgqKvXkOW)AS)+B)>lf63>{deu0&e@?`&aT)Sw%MpiAt2W>Gt9~9azNQ~w(n_@ z93eMnFjy44>C`Ws_1tZfgAB*bvjKlkiEM4StfSIkX?^7ziKy7-Ev;i;!j^E1cgYt6VPy6v&x$-Gb{wf(h2i_MLSg-;> zyRA8-XQ4{);YS+NQc^cP)Y<;}g1ozK-cqCTwXtna1C`IVpIgX2=ix+~GY?e_mCw9X zO}gs(v@)zV)^lRkTBfh-S^634YtnyWc?6DJ(V43NF6EZE3=>u>dUjZ?b={|pF_UNSPG^v_ zo~E%fV{KI77n=yrV@+C}LBIcH6)qI}f2eu;c2-qo;mI2#H-z7-`0#f7$`z%rIVNPT z@{y9ZDGO>P%Ow-z&e^X5MTImt_pI_e?6!zPeCv;|&9=tZA5eHKT1o{VEH$o{(Z z-Gba%-Z^E?L(+qiG&UdtC2eGaG5hI%rvDNvkjmesn!>)3A z0jWin1__xPCI#)Dv~2pUMc3b5_?gIB=l&`odSo85f*>_VS-a%N3ufHL+|AsXA|?It==bikek~dOn)v&ggQ% zMdXgx+r`C6UYtjY&$-#GK5}kHal@7vp;bpBTHWr{-pa^vm0}9)Sm9VK*W-M2@g9`} zGNC~$AHKSCIbc@Yufqm!O}FqgAGi8{#4NqoKY8xm$m*G&@7>k;_J%dp=(5%Vwg#Q* zptUZOZ+N#J&CwH!mMgW;m)Q}?!5O$<+e4!rtHncu*<-vzFS>;~pR-8~#4Qu0sRwgL^|J07e2IlLeA1Rp;|^gPN!$p*r%#(dZV+)f~)u&ce(TK zzTy`aS@V3Dc2~<@5AHm>YwN1}niJPt`PKE_pZlt$s8gZhG~O6?eJ_OX0LrcQ)^uOMljEV!ab^+u`-|O##OKlNx4+H*HdT-QTq8`P_Hv#-*oM ztX;iYnzut|w&>zYfv(pnE+XPVq6cRL?*CLZt*rM-W$dLO$+b zPk}e^fp^eXc9)($vj&-($j43B@0~er;QYMqu;cPg3a z^-DaNSDY1i>-9{;N?=m3g8SR9ZB?dWIwp$icKBtOxOy%-svW&JvgJbY)fsCdvu(G^ zwbi?6c%FUE*|Ko*B%S_KPG`MdJ+Qia_Ce&??0ga@HsxZ5+>!9i z2{GL=p^|IAWz61rHO=zOQi<7%>mNs6KDG3r)rqxz(^tK7kDG3Av`?$_#%Z7ZQhHNZ zWjb27MyzaZ`Wf_Nhwy8bN>tqL}a`nyVv|5CwrK2g^zyFQ)Mitfsuv8B@b;!=mw znQJ0j(j>EHuJ*ZB6w|V8Q_?eKzgM0oT=vA7{J(a8@!41YLN6wn8arEj$!KRuGvbv? zTq;;7_C|W6(a+c8;I=k=hIur7jchQ_a)by({O<^?N%h`TS)+Q)%Ju zGoL1;nxvn3{IJ(Tz%Mj>Zc1}dELM~lyTjtWl2`kTM zMSaznYT1&oaMj}A^vo-so30+r+LQHa>Px|D#>#nXuH}E@r8+|>TL$x5zI;L(|S z6*WE?sZUlhxtoG)^jZ#lasR*jyisw?29~h3%P+^&t~zpU)~hS)w_Or63Ek>>rOfU4 zQV#zo>0#c4Cytydy4SaL-V(T} ze}dT+gcOG31IWpHfh-jJ1R zZs~D*IGeg(eX`Xp>ewv?u9dm@TZ8N7={;Jv;%DgG{@91@lU8|HKYP^atW;^jwPLx| zox2mXI;1*h?o$4(UjMZ}r0_ty=VN8RA06Vqlhv&r&KfTa4z|Mze0KXz+VYG&gN^J8<2 zm98bfuZ{bD@67C(p^>3K7j)@dGP&B&E9mOD+9z_`?M-)XZ25C|S#IPa>C)!Rll}9z zrE>o4ufI9T_jJ+!jj3C2Pm@-Ol31ao!4s>`^{Uo*@|rVy-WQ*%TeDRu>6~R-eT{L_ z+TwS<8JziECwD%7v-f(Gpy6|w$I|zcr8V@QFg-h=s1u>;;8(*f{eFGWTy4(mu(`3> zYt=HoO+vO{3Sk~@Zl_OtXa9&u_hN+#!z_fS& zOx~3J7S}G>t@m-`<(j{@X4M&{=H@TQ-YyoI)bqWyZ>qsXhJC6T@+SRdbEknV>-Sw9~iWh!Z75GcG z*k-TK>6lHyQmg#iH~sqDqL;z&_`(XGk2wjaHaa#Pxx(}JVTbhG{;8s6+<~ie7d?2_ z{(R=5SG&?DbEe1j=qk^c>HLuF`j?(-!Dcnq+ zjYl@#$ef`cbj~i)bKk%D^Mfw0I`wt3uU%Ws8U}+ytzI&rEvjON6leIkEjYdE{rs}b z^`+Bh)!LaVaOqWUF?o^n^u~mKqn{=5&OzHkL-twiIX7>)8SkPW#dZ;I4j0J2&iNS; zd7;be6|?%8*>*QM=vOUi3zdEDxL7(gYOGO-;XBytnEeXH4`udyC&YYem z8Ee%REi_)ep(jc=_t3MzB{y6quP`~h#_A%^tp5HMzq_)}YSha7Cr{iHR9mGHrn}`l z|2K(q5Bzu!+xfJ6MT=|qycAlzbiId<(6mPj(-w2SdFPoF?yyN{rya|b>~BW9MSX%j zqg5ZPI-+r{~yLD?r zw2-g)jd#}{&6qnkXnXF#9F|}nzpWDw---V9XwsWaTW)3-ZBN@>AtXl9cL~mb}@j z)~qgnHhkVV>vxTbUH#|4w%0e94uvWhWLMOBNL8ml4o_P@)hy|iYeoDI&eu=wI9sw6 zwD-E*OOj$*`F};yyHuk`QgJqUhlM0qqm-T|&z(KJvf0Nqk@aybqd>Lp=IL)%XG`18 zRb1rgd7Up%g~KOnYgv_gq44T^Gt8Z?&NE=VcXoOEt7m14Hg+&{JgyaW-OpXJ`P}kZ z%QxQ%zWTd%i_VuxGmckPSU#V;H221xB?75cE0|_%-K+Jj>hDdv{xG%AOrAe{EypAmT;&Bq-5%Ujdty}M!m+G&zen0Bs=zS2hb|8Dw9K2p4ap@~<|?s?*t z)Utc_Z|7Y8!fj`LZ`trIZ=d6Sx;;v*`peIS_gg>in|AZrMUI4BzyC!}-`4ogWYML! zNpjjUS8qks%TAoi-hAOF_iS@^srDzqwtIE%>gCBTwF=)R|Lz@Y>bBM9yWVMCIr%B0 z)X`n@Ub97m2U}0~&T7+NUUq*UvWTBpe$cEhyw7g>`{w-}Y&Y#XuRN|OW%HAbe{%Qo zmioo%-4(lZFUP8e+o|L}mg)23S+cg6>newX=PU+YkNw#n_kNjF`1xl>Lrz}O3znvb zRz3QwOY@#7W=d5YxTJ7)t;xiF8pqm$+!hC$dNP@8RuJ7?8_=xovA{3FmW# zVvDYv?E5UU=vePDJ*}5~S8raQ_~<~xi35A)b-fI*%+R{J$HB!(q(~%5D1Tz0j-d3E zB|S&Ggch9=%M`w&Ge3&OymLQGW_ICvUej$^S7#R+E81-pGd&uh22_PBfI z>=;??2&!$}zUF6lCC;!MSV6xXk&D%`o0kdrGg}Tp9oV3<1#+~8w%9^CipX&cU zto&cOlPl0|zJJ*+?X`wtCA$sgzbZMA`sw37gPm8q?0+uom9Fq`iscaqpZZUWVMf1O zl)R%+sMH5e_tw^hX{oNKFTA%lo^n&b;C{Ht--WxP-)uRzrP6I?mQ>IS6S4e#OL^|D z;B$S=+1)%PqkO%_=I_yWW0p@ia`yP{Lk9gn19sQGDVufNYccPu)2Gjbau#nt$r-X} z!F_f?#U`J#EuqVsYv;yXy&P5<(!;;?g3^Tx?~`ZDvGY-y(I56~PxUMl&$E8(wR$D; z7KyH(y1ReNl@bM3&B;@5DyLM>Rg$hSKePDYj0l#`*DeR2*AmQ&JA3-hnLRrmW?nH_ zVP5_v=-H{a6V~Q_uI6&z;idy(P5p?#Xh)Y$2;{i&M4U?3Utc zI##jZcy@}Na(qci)9KKIJ%VyZhecPuVS0G@N`z7Bw^_2w*_IkH*p^A~Pvr>>efcf1 zShnKTv*eSDBhN}rsoe5cuO;rcuC4b1&j$-H7H&Q)Bm8OOF~tkF6U6%E_HA9-fU}u?sjH z{Pewb<(gW2jlXJ6?*DGd(mA(l^5=yMC)-4A=e?^|kg+iBO#SvtZM#?|XGKa(3SHacl<{!k6bAv*d?}axa ze%pWkIOH6(X|9S#K;h?~3sqmaS$z}FVqSP?hL(qti1z1&1_?!S+4FRr_J~by$dh(C zT(iYu%fYz}soRXM9X@VaGOJ3|FR%5%#mMcheWEu3#);?eWu|L2KCZnB@8 z4jeRfxbos(^GuzYZvMqB3vONhA-d$)^pj4@A3H~$nl!EKMNNwFUWUD?{Jf1?)+W8J z@^ zUIa^6PvtEvn{tuwd+Sui^BSkmb*;GFdV@8Px9ewwbg(|d^NGz2LQ!hJvhHkI=agwX zIo#5_BHAv_E>z-?z$1q@fu}-VdYpA>uPHKr{moJIdOojDPr%WSu4V2s&-B&R1P0iC z(Q>qKOP;YabpAVO9ks5vll`WdJ^Zq1N9CKVijVg$tlG}MMltf1!R~T9G4u24=hc%H zx#r}SdYSpGU{QOqfon-_i7}hy^ouLpuO8Sal_YeRz3IcoaE?zQy47;8zXT*-4@-M< z8N!pVJQR z;<^y^+5FrlUSYgN#B0C*Z1>JBvPG?H7Kz1Qekj|(dF1kf zM0t)q({he@)VNm2tFMkrt6Sw2%^Uhqj$V;a3jLEgW_i z&KAGimJy>Amb$W^>)kzh(^Xm~nQyj=85hsj{dVa0iw|nf#?NmnSN2ZZFl}x=XTw>8 z%~r;*mbc!Wy*qvV{S8&I6n%HtH^fyp z?`UYljWxmv?*tiI4l*A-ebVXD+sQAO=Iij@(m5fL6m%wOz0eZBFBT=*`)Y5ss>Iz9 zl&Cz+evUV{;7Gu%B{k>PNZdT8c=BDOy4FTx39ZH6tC@{-3=Wj62$QngRy|4MYPyi~ z*>{r*r%jmcKWCY*!jdaW2fLp;mmdF?DJ8aFclEm27i!*z1l|9|duxTst4Ud}OuxR; z^W}Y&JL^J|+6wV0pM^wqJ}Tv^Y5CqiGHDI>%J2i9UFwo2C$;zm$zKXv`{Uu`%A+?s zuYRtUI`2HY;N)FZubC6e99w2DnBcD3x8PE4Xo%Oh(t@m;Ufb&AxAjk+EkA$rMNvJc zOEX*!rtS7r6;-;>P}ATx(Lt!gLGfzr(iH9|HM7kRPBeGg&vw^_Pgm^R9c~YyZ(T*J zTFR1xRyDm?9ke>)lTnq&nQs}+&o0NNeN|x!eEPjOi~Hk+ZkI-#Nq)|2HzYBgS^V^( z>4%VzbB8MzK4V|Kxpm3kb-c-sgC_iVnaUaXyLLhT{1waM9to_8n0a=UeB2p>0|_o} zXG*u;XIAl)@R%zoxN`Ev(SH;cx954p!|moWQyXWG>{*_XF3 zK6#9L&fY$SFH$Z^`n8`e3^_bFB7Zu*yYS#~?8<_)$g|10oi#^))!wo74Kuu#su#i_ zB+zsq$LhlM6|y#lUjI#w#@$W0sp4@F(C$tz#H|6rL5bEuIQKSo?gE{K={tXv$6qNwHn=P z9Uc|Pnwwu-H9xNCftZY3$bt=b++Kw&E5E&?Be=F|Md`OX`EC9}4OUyvcK^>7^vz7@kyjqzhB6`HPp;AN7@s7v36862$ z7j3RHcJYK7-o5%ztxHK>OYFIbon?xk$?6j)GD=)rckpeknz{GunWi0_nc{o4&AyjA z<(Sx)B~6}^wY$#Go-JZs@wM_KQ*!Zz+|;T1OZ_^SE-h&3s(yDj;K<8> z3AZzA{JKR}{M51fDJ=Ek$z_|hM;&Bk0%zXnR`aaAu;BB`3q3opEnBhRtmaI~<<1wm z52vY3ySQ$*Pw5{0k|{#RYgUCAt;mY-5aoEWt#MwT&=I4`f}rJI{M?^-w)Y3kd-c)v zTHm%ljmgG4mfb%3(JXty$9+#OIy`K&T$#9q({1r~g>S2*CwAOez4^n}Z94x|_v_3K zJ*yraUbsE*rfIoDCsV}l&yRM=vnjsLu)AVp_PjDrTV;CTxrgsmZ@aK(i!*Fo-YjP= zl`*AG{=p3X($5-`CR{mWySU)>6@fJY65UomGxcV%6s%Wp^kJ1M{j3r7?Po~uU1t$B zrZtCi%Qu8?dbKc|>HS@^DpR|qLMmbETQ8i+Z4*1fm$71Z@XVQJx84h{KJMlzJL_ww z+Y*(dHF|xwPE9j1S{9zPUQzSqgeSAEzfqmd{P{*eDsT7Y&0ZWl;#?CKM@U30$_Q9d z9lKVh$*r)FD^>Z-agib&mJVsw2S?}bE8l!l$t&yEluZYY{Fc~yG^482@41S{+_gR# zJHOe6CTe*FOG*huZ|*CP__%Y1+u6nTm3waA&$0XQVcS)2#?KdfoV6VH_x?_wJA3-g zIpI4iw$1XN+OW!H;U{LUmmj~KRd$HGXE)~^*Wy^GOHnZ)*=1a_R919khluU^6IyB} zIKlO4Lu&T1O*i}X)7Hmrx~OHp#GzW^&g6p58@k*0_yQdr>P20bhy_VaNZ!+J##$tYlMfohxQ4e0XD9bSWP1db7D>%YFv3-4!`psrm%c%!Z=c+qH z7H@mC$ZXd1fE>o-B^sF*E@Zzsx-hQi<5k|8Vh8CPfyOHY8=LMl*j$THTg>R#u}C^_ z>eQ~AWp+m^qHol>kqY@RQ&VOvQwh! zmp;*pDD~xX*JaovR<7(GgI4}eu?PcTT?B! zih1|)99G{DkqwV3*R1OO9h6pl{99*L>D!VDkx0?QhWEC4DtLyk1qesl~A{W;nc~Or>{)gxM_+Lhs@-VtlcIZ z;Y(^cI8)aZ`0(s2ogpdw_`!v^-CDwS*g-n*>k5_o!DZ1MLM zM~zQc6pOLye!Dx@=;!6PGLyQtZP97sYbodyl(9d@J1z5F&(&4O7>yR*Z?D^bKw#zE znV(PoiAXH?e!){pL@UguEa~d06w~Khc!jR4&YUnyH&2Ak;j-C-$_baH)_WDo zTxi&St=ir2dz7t<CYyN1w zfhlEK)Z-%sNy{dEllgS*)|}0%U!=-kP5q$kXc>RbXEy(rsOdMlU0&`IyMAcO{huMO zswGKBb2n&x`*Cxf_shfl?_F4*DZTh+=(23P)X7h)UTouXy}x{)_wi0Hv4AIj6PI?~ zxj!#!WecN=YMD|)=z*9ADViOgj>WkG3-3tZKHj;1dCIMM4Fw$2SDUW4&HU6C#X7_P zZKBd<%`aY(g7crvl0EPxU|IXm_&hK7mCT~H2fw>G<;kSSY>t+au^;^O-~3p##W6&ftzxFn)>MgS zCy)I;#k})&Tb;P)mJP2evl#4Teg;G;wZ&ata68@8d9#JVXRAuNUg@)EI3_$3J3Q}Z zauQFU#|5j~74e53706cQ{3$l+(% zd}q|7JuKf%ZJ2%J*^zZmLJ!{!J;J)Gt9V@z*ikt3QpBGx|6gx=_^_nv z+nZkn_Fr%B*r`@@p$}O z`HyE-{rq%cqP?S9zU#tAo`Q?=%@`MV|4lP4#&GVG(~MUB6qEjuNh8cd{@ zEh{z4Uz$@dnzUTWDO65s^oID}xSN>~l_n(iilWMnK(4*IM`SY0q4Nj(3mLwP7 z6O;HuUD{qNG#+cbH)rLv_}Z$-KWt|=E!g_^iCg!IQ)0Q3@*=JrW_$2s(S^{?+k06w zTBOUFufCbH*V((&Xwe;mdsA!H{IxsgcXol&q%Ch70)>PpR{RM4)b+CQY>r#}*|Zt* zD>jy}?z zyY61zQax#w$(@3liN~kAhD`WyE!zBizWlU8Cdqs6o@EN>-FwH_!*6=t%-^g(_4`ys z7T#5PJ!?MBeyiv3Td(%};{Lmdc_C3#FFw3sw{(`E)O7a?47oecZWQj_B(!*sluY7< zya2Bsosx4_b}l)iuPLK0%fR5`<>}%WvgSaZbcNu#)Fp|YOro6=E<6*elf1|D<7VG) z;Z}`Oqx74K`8uC6QpFe!`?4IB+&jm*ul11Bv>&UE9e=^7@by$fO4!;Z*MBqp-}GDR zdDY*Uef2wUICD!KYyPKoj-R!`;!)Yzt&#RRSs$-t%S^HMvzsZZy>sWA$fFhWcjt1< z-F4{Mw|#3X3eU;4K7DPKqUNc@S5-Cf?!;|ciGpQk*G=5pcKu}V^1{U;56ls{Yu>wenOTc}I=5OZ7LT%8a@Zn|(J7?e zc(v@I9M1FZ#}1v8j=#6nK%xEjfB91vr$#M~6_#FR_o4F9jmh(qc69xxj zmAGboJmM!AY&kJ3Ywddv>C)ph8ky3r2C`arR%%9`id_<0EZ?bGJFWt5NY_IAz-L%gZmQ$a4Zn-Rwa`%*J z(>>#`2eOYAEEGS@$HL^DcY)zou(OKFgdCm)XUyhjDW`RAdbY|WthBLuJNM^}ySP~t zJvp>CmY!fZq~P*9gYVXRW_?fRlXn&L6g_XTtf(;Up0{mb+U)*>iIM4(6=L-lUN*W} zV>H8BplOL;m^Dw7>AX0x)gQ9Fd*-!hgjn`&Uz(CFAr~z)@q+jMZr?@oc$*$~2W_6X z`Pi1j7Ato4Z$IkZYkGe9t+!^Glh;bkl+WZSvC1(#tl@0`=F*3A+wW-ybqD?o^O+`P z5k2>;%;CJt`P&NSFSF_|wGs*Y@bk(V;dOGQQl|2&MV}v14(D<3*tD~g>B^hZO#(+5 zGZmj5i}|YXsIO+#ov_m`v(Ke59`4_{`_-oiMT?p_iW_X|iyRXzee6=VnqK%dwLZ_Q zie1Zx;m1p}&j%D%&Pep|s=YNlg zdQ>MK6{?zh;k*RZ z@7-Y#IC1#nw4+{U=UKhoolt!4c+8ynvY8p*8m-Cioj`gd41g+0y zem7-_d>hx~>LZ!H9!4>)foItNnTFMI|6KYv^u>1BhL8JX;#1V*odcF_TJXQyH`vbf z-HX-QXV*@9SrEB?ozQQI)Xn}vOU``zkSOMA`(K2iWVeSy$IneZ){nI#zJAmTmhz5g zWjL#?J5jFJDAHqJ%%vJx}K>NVpcGczL5!R>!SlTJH)c*xdYEo!m1wqBJD-o5XbmrL3jbxExO> zhD@JfVjHYhAyh5GcPd>!xluWH%QJ^fGU;sHwOfBrI;N=P<)19~`BB(e28lg~wg|@G zk)3jh{lE;x$G4Bm9!Y#KX`90taTeFbZ;ST6Pu_nso8#fr)6u@0Zrnd~$8Wo<$n4th zZ`R(uP=2EB$Gt?`5SJ9YsRBCBgPz^V62QHf{_{r_YB+)K+GC!Wo5Jt~_hZt5{pXMUEq z>FEu3JSxvV_HJ3Z%!c{-;y^!Nw*A(YL2{F(O>ULAuw~CQvsDK_N7(;5W|&+0U1h1` z^5m;muAJFbs9m>9w{p$w*;n2&sh(4DoqT%RweuoDLMDqElXjbPy;TW%e!K7D5w`1h z6+KOzlwVgV9&KZt7n+qWt=hzF{!XvGKmC`&F*^_8`zGm9&q`Zaf-%I~vIhmBau5_D`a_%yzmZi_8WM7x4>Dc>ax596a_yf=EgiQKN zXR`jR2(Q#+XwmRpwCsi1tG;Ra+*2l}etxJ{%G_DnW*71C<-P-gReTx~#bZPFPp$u` z^jo}kcjRGclVnpwQwXNG~*{f;AkyK{3c87w$wC)>pl zGIfQc>io8yOP5aKJ9%E?c9_1E%zAv8*m_vonsq zdeZ*f(q*DX+^lWVT2dZLQ*9&_w_niY-E@0R-!{|k(%3gsFLG9HO8xvj%Jx{C3EQmc ziHzPa{CmP~UA*fv+h*BE9aX+ljDDLh%eKsX&suHE=5fQ#b}FaPn6JLgEr+je$Elv*`q<(&0ADK~jdJ9GT5X-`!$ zU36o8uiUJ;zt4KpZ`nK{b9*_vX>(oNm?oW8=yRD6Ht*ymx$Vw5jLg#?TF;UeXa`S!NBJh_XmLJPOKn#yaj6mrzOSiYO9ao(E!oD9Ee7kq1q zDA~^YI9F}QA>GGcjMjg1dTX6r{DXJn(dskpxAJx!mffx1X}u$~Il(Sumzd$lQ@odR z7q-{DF)d>{(q^#q+ln*C4<)wk_Agd6UK#5tn!jL5!Mp82mok?hVp37L>i0=!TJ9ND z6V{y}?K`5snY7fYvjn5C4J=K>C`nx;(uQ-$)C4ut_6m%>gzS$NsXcptmTMm664 z^PMb)#y)2h1AT=S32n;PC@wADzfWr4ho8&ey?gX|pY{RJ4C}=e*B5 z7F?PWvrSdxp5lciij2L-c>-tlndUOBl{}U4mhFTjE2rnPWX4(7rJr(@)GOa_UVfH~ zVNG{IY}V-`k3@gX+8y7c7iY*~XLCO6(W%JC>#C|=F1TElCGWO7P3Uzf!;!UK3pSjV z)n)K+uvv6cvq9C=`L3+vBZbw+nuFuZynNUBmhwG3%VloA@5~&=9o@4_Z*Qmyb!%kd z-D`AsaoTdOmJ{;zq6)KLo5;@EDLt{~hSF}%)!EUvZB5N|qt&K%RUh2=?e`5{t=kW- zt$Xw(;Ka(Fx!1aE!pshDyl(NLK-lyC!kSKV!}(ddVQS}-W#4-j>xytpJ{_^^yVljI zU5Sp8Yx`V7k|fvq>0W>MsV#fL+s7*wdj7NEcqTUQc$@8kIX4zu6)k*LD6g?%b5@T; z5p(mc2!Y_A>-X;Y_~Tji{klZaRJ;9qcKbUWo$kUr@5!^z{m!pcj#mAMa5)=e=^#8~ zv3$YayR{FCuYW)O>z{f2m)-Y@%|5T|pa1`maIwA3oVa~9ZH|oFv-rO+?wWS;f$yTD zmO6!I-&qY-Y`Nqhx%b=?8Mm%IKV(dnwk|lAa>Uz1;@iaF_9z*_uUEK4Z)KTlyE9K| z>HI93uFLMYom)3gv--uXs+U*Szd!yeZtI@)H5U&qP;@$d>gh&)rDdzQJA1dyj(DET+9I6J@a3Dz*^cEglIJg&uN2JiJ9qlvgSgG}^Ndx~)^6o|boY^A z;xb34^}Al|Njx)Qg^KqF+hT^~kQcjm?BG)2IQuD#L9O3RUQ$+a+749)fytL+r?Dr7 zdmf9p<>t41#vIj4UP;S6wkOz$Ms~z-=Wdm~xF}0>QSK`@^%ZGS9?bJ@eoC<^l6`bE z`HhLcTQAf37ZaqaJU?yRIlX$-%nh|d=H@GRD(GK!{Wih(=$*BU-_PaE)7vPJBd=<) z%eUa8{J&4LYrXo{f4l$doBLLa`0~9s-_@0x-nlCue^2gRAN%EnyLaWOb@v&CF%&k; zo|?&*6#w(o;yZYz7se4>rmv0qXKAl1A%Z4z=qjBr)E(b0s zsfl!XwY+Gt>&0B>?fEw)UW-2GxTu|F=)32X&-tbLeG}FRSnbl%=)d-Ld4-Z;xg*Q( z^W{@^-PvcYd#RFhWx?^IMm&**=dZW@P+HZK8dY#5b!xZUMXkJ=YpIDGC%E`O@V}1s zn$4EHMx!q<|7}v(O~a_h*^!wYeB4|NrDrEFoH{8oDUV6k>+`{$FSd61SM+vXwm+r4 z$0WF?R6j4Vr*ForH#6P}g{3Wf{Gsrf%CwN(-;^1Q6B(zR%wXKO({o{drTP}>e9!L< z77tT3?&p+D%RhAMAfrOrTa9Nc-*xkw&RlxOixU?+S0-c zZyz5~Sv%+T^?kpXf4@E8>*f5|Il45W_&t|l&F|gvt^7-*n>0+`ip@@uv7h5CzdQEA zljGmtxhT|TOpv`l>DSfGb#--Jn(uZwvOccWEzVu^=2a%gZ*!|kohN5y?6ewYZ{6;w zTazrp5YoXssco~`jOnWVZa>rNWu50+C_Y)2-OcJ;m~q`FyW)1#rH)F;-Xe?G)oNS% zruz#W*m2(VN0S0ir`k*5ph(8~;tN|Y2+Jo2EC`p-TC2*qY_X%V#8MvTWmCB$-ygWO zD)QTg<%brWY2Q^A_WW^}K@97>3)+`mzpiO1a=)d?~aC=v?VU}#toR*C> zsd?wC{4FQs*j>N5=52?isb3+pH4DZ;KEj(kY()hAuMT)|4Khtd~f?SFw z9{VrbM9tlE|L6tN>9ahhc?y?H`X)u>nLc0hQ0?1qji%t$C3E|0w1Zne>aTrabzeQX ztMpBo;+C|-vh%8Pr@d#IxoVs80oY{2cQlsj`Io+bS>km2`u3Y!5 zQ21MZnc~Yoh1JqLOcjOk_kRC)SYfhr)$F;q+~>)^y70ZdeP`}22aj8COMY8)bxE#} zy{NMGQijoqqY5@0JX<`cKBz1@c532==;v<#-mFW$#bPvd?Ur`u6AP9o?JkWhFuCH# zGVSi1L*EQySpB^G%T4-Ae7o2-Ch_`3X9vXx&E6Mpxl8ZNSL-C9MxCE+&mYgdZPrku zvZ#Nxd9_%@W#^~cFG+8^sLWcR&OL`+hhcTbXXXa>ChKR;Pp$9WaS{9|c7!uZn4wR? zV$Jf$#^MKRQf576+HaY(Jav&gmqzzMcZoohV%Sed(7?}VddEHGD6(Kw}SU_Sn}1cPTdMF zYtCyee|ODX+STuW@-4F++s^S-cr3il%JuWrk$dO+^`AY<-lq0v#^-xml3qSC^r-%o zuEaNoW6_*j+uSvF)}7mUF!PLl{Jsks@xNd37r58w@#o2zZA$4WSfll~byC7-mB_C) z&#FR1bv2egi~o0a^7U(Txy0+a9%r(Bu-^YyufIf)bML!(ZuyOmkF8A?oLDh0He`jB zc;oI5I}5kT1n-uwvCz5v(CfSZWb3ShA5-IgO>XlJP<`<1XTs~^`>%YaUg?x>o82I` z;A+ts^J=L&la&+O{@2XB{{N1C(C5QJf~J1k*0@Q?xNx@L5Mi&_#`-%}O0ImFbz7IK zOVPH2`MD`mMY)#M9pcSg&G1U7Z*@spK!6oXyJ$uW%aOQei?4dkHjZjM@io25;?$k2 z$v4;^MPK>)>Ee8Uwsub4&WY~w>zEiy)smf?e73VTug63-+z}VFQ(Y_Z;?crLu35rYc70u?r&C(y;wke%)waoohr{X0cl(-;Z{OEi_yx-x zdVa5Fm(l;?wRb~#9B0V#D{!uBFt{#Ny5sb6^}jVbae>|L9u+52FL24)ohlD^%V1)7M={|XatxHqYb1txN3}0rHWg%U5 zW-;f6a~4Ti{+m-Tuid4*EbXROmC1v=q{W;Q*q(B&Jeq67@Y#9ljUJg^|=z{U?6+#iyVW)1ivd>3^Mb@jfz62GS!r}=;^rKdZzc+ z@5NkaAEC7NjXMK_7dxl4T77?h-|FrCH@k8>q}OhaHp_f&oRk&EzIAC>#eV+OO|vGN z9Xef6VaI=c? zDPL?#zZ*$MMkSt%dS#}VH>2pym+#_&yk5)_^LjHc7_?l-d|{f)H21*XLofNIZ%t|P zef`qpeDX&v)8ALGKKqsR`rWIqcfZHYIhM0@quZM6>uVnWNdJGVy6)4Di$CIjOW*&u zR=e^?j<{@=l$RL|H_5Y6te_#LjRNRbn#a_GL@4h_$zxaKrx=-@Y;{Pw*&*xw2mcNs+G5F}& z^5gdZ>wo9%*?u|V|DF4PUL009zkkQXHhXW#W(K&Q zR_@)a|KW0L>c#iXYD=}9R!eg)er7XY>*UiXO-vng%WgZ||59m^xjR()n(#~x&-T|> z-Yd(0G}_7WD#urNi^jIF_%gm1*AGW>m@HNMpZ=?r#W6Sc#G#3zaylkrNiyZi#bWEZ zIhTknzst6L&&z#R-YB+S>0WV0-Kcl=mp~E4E-jfL_2+3<9=yI{@{i|j_iP7Iz1_yW zlgt#qd2Ms!Nbl&F`mAQf(-fZGWTu+i4*zfL|H>-naav9;xeYA~9u-xU#F^Y{3@eK$)Dm_OX!|NYTnarQ^rkx$hB9qiu! zrQbjP$F1m+^=E|LgawzP}Ey|L{ESk9Ga~ckKTUguh#J>-)XEmH)r7 z{NbU3A>)CD_V%wzRp3M|>}Q1-%VZ^e&{XUk@awY1GEWZ0Fv;MkmHb_yn@TTk}r2bz~w zibZq%Im#xueQnp`Y+Hti)gjSGv-#MgwJL5uV3>08o&B87)+M=<*KS|LbHnCU#gl2B z6W8}Lur$2+5Vma6Pd$$HW~@pcyB#tX+}53*y|FNJW@W^S_zbrRBSbZuca9!1(ee(P7z5iJLe_DOPc1D%m;`6(vujY&Yd+X{~-nwu9 zAHToPcVGjrqG#ijTJ`w9f5ZFb9zXxLZU6TohGqSy@9zHmG2(RS6#f4K%|n4ZgUT$&Sj zQOTs^rOx%h%=JtYr{w=H%YMDl=a>S+DoMQyfgLPYw=v1SmcO%S|GykbUzVQ%DQ^{W z8ih`9&$s2vJtef8!C}|4XU`m7-S&Sv*--lV4+;4KpuWmj^+cBELrYG|zjOc)TS1v76H* ztJ{;#YDlT{hh=#?H0zbYZ9&QvSs)C6-Ol*-0DSi zHalkj6nMbtx%Rq{_R$}!tpbniT%jAeZ~Mv+SM?I>rcTQ}H`Ti4_?h+}ld|QNV%aWl z`(pdPz-`R?zRu8=vdL={+$I5t22c{*_4Pu}{UbN+wH&bY8HtOZcO(_=$u&G}WB!cGbH@yUm_G;gUWo3n(7LUaQ!j93r=Z=o z^H%>@e(t&x{rTbvJ&inuS1p@lOe6SwB2DBI6GaRTp1*kFON~TWe-&?|$4Z@x*-}ep zt@fCy!<(qPJ7dDm+Bw&PcZvEnNWRMX`C^GY<2?VZw^@B}9o@Fd^n{UU>&)jD3zF8X z;cj`Uea6X%+0&q*`s>GiYyK=(t6c53U$kwVcLUqfW82>f)_Defs`;?!Y|P=V$$3}f zSzpats~7QADAewrc)XrR$A(Q4-iv%%{_hk2TIus$*@ZWPmQS0e)7Z8=Lw)u(VWZM? zX8m=S4i_(azu>QQ{^4EQr=AQc;jk4?)ckh*|B-b2s>(k<%Km&f+F7K<@I^u3`0f24 zKCS=r=(N1(#z*`4{;dD^;4FLnpTdxi$D9AZ_@@8ASv)>?nYfAs7BUw!}gp*vSg z$N7J^{_g+(zxL->g|I){8~(rD|LfWI|3AWH%x<5(U;oqo_tf3>s$Hr7Wgpc4O%A{R zPq;rYwjurhmxt^B>=pl?C3ODZ?gR0Ee|;^l`^EdIdfvZZhxh;9Zue`kr_FEc1Mz?V z{?7mVMOr4)=HJ@K`@e6u`<3iz^V_^}|F6Zr^Z(3DzhV{p_t)Y0KeOfkihNlA=chhT z_w%Dx@8Xwl->0*|XsgrQ=6~1LcK$zAU!gyL8%OS3CH?yIGu8A?MI{y1f6=$m6Xra? zTN!toOWUvS#qzq$tXz)ESAJ~0(msPPed(ntmpe7v(k+j>s54A`_jvs$nR7=Pau;*0 zb1o~m@~|OcSMJkCM;q(oR%|)UG%fQcm)GZ#z544d1(xJWluexVcPjsz?7uq$#1G9h zP`JA;_R`M?@vy|lbvqaPbZ@E*c+1k~VPDFZDem>5%9$%SK455NCina-2& zXvK!JLTT1}*O=s|p1!^6#uA|=N7+_Ie5~2>bD~+O51jk7MKY8B9AR6*(`Lh4U_x-m@re`_1RhkH1_LQO`3e zlWN-*_dyF0%P3Lm^Gg}nYXZx*K>LGn~LC=Hi z!!u8Dzu@6|zN7P^S&HcO_D?(GD>lykd;R|tVNJh4!@{UzJ$=heULx0P#KckNERYp8|6K8^YRm)>6f{j2=H>2i(RtaAKVH2y8k zmzlr!%>GZ8&j%cRX8h^NQTy+!zvtUeiT}6WhTC!4lc;Ol-)6?|seQfor+EFZnHom| zH}{vf3S8&^|LpMg{~wfNC&w^$80Uq#%vi#yP_}84?5Qhxdql6d#Q)=uk2xedUH#!} z_Ur0?PVc_dzqw!8&D>C|yS1SF&coBMg^sW(Fh0?p_dUna?pk}lalPmM{5TLn)8d)s{{A`V6ceP;lNqzN;nTE&Yrhl(Cnz_j3OKJi@G&(r zY~pNJ{s;S}?JF%SzrNydXh&_rsdQaE0kgUqiHz;XS08Eier&WsG~>V|(WhY#*S!6l z#JqjNy0A)tw<*$ZJ!hA#mvk;Yq!aS6TU|Gs6#+LgmQ~@qhR4+q1-Z&f|)^@!IbC|6djf z{=4%3OKwr>-CMB*pC5B4DPG~-I;+^#E9tt!0xL^hMaD1J8_&m|Jmz;vHr3I(l+&eS z?>25d4fW6Ar#%_&+U;2+`k^fSeDu8_t;=`zofN#*v`x4Db8hT%?$j-ZkMI2XLdW2} z(whgWvGdNCI1)DIeQ-v{#pHJo)KX#M$nmrs*3+Z!fuS zR(EOTzHN~%<=3y?bvG%IvQ}l^v2ntVN2?dV+;nH>bk-Hy{^b3u3QdgSU836S!LV28 zwbS9}=@&hw$9YW16E5=?p8xD|_ohinC-3CGne%mGRLB0z%LehY5B>YAAAi*Rj;~8n zPwe%pS&uE4EX06K3X>a((`(pE>%!u<=XTEQ% z6$_gwbMCxz_D|O<4^3ho{*Kfy&aReGjb3dnW-02q-`BqM*!J_Mmx^6rvMD*SeB1G> zIYt_utU^(B2_3p0F6>!**yien4>=|aeb%o(RI_Gv(7ubSYBow8-g*5J2aC`4nLaIf z;$oU+Tf=9#cY7ZTvx{P$FSqoc)`#+K>$YALT{HEF){>*sZqA5xzJJPW(UONtEA1>d zGwfd2%c!3iohQ4+REY6&Xrz{zy7qI=1XXF{!>O95lb8Qqe)pxBv4h@&vtKdpI?a)>?Rr$7*kZ<<`6}~N=D4+J zEdRYJirJuG(N!nie{4njxP*4M#m}rf8@6wI{g&#_?Da3$`;K4!Sn=ac`u%%(+b>(3 z`)t#v>@v@$PR41)R=>+8Ic?wX|4-O{+phA@lL8B$%UkZ|-u=t}|A_og{(r}E>pnTf zoIl<%&%3!!Jo86<`ux4Wlo{l#ZF~6j-`N>`HkYg2_MV-6iD|lT^~YHPnY#aFHZ(nc z`Qc&rcV`a&b@wE89gIJ^aap_8{Hgl?C3fXLNKC!@xniS0WB&f%zJ+^l+THyUz53e^ zcC+j?U+z|aUR7{)HS6aU-FIHDEc9Wy zz{Kx%fAY>*CVqbMY-V+E-{-UIjq}=+whFJ_lBAVevcvCv{g=H##dbGt=TF?VV_8$x z+6L!&iFPKzQK#pbZJKg$(W>`#A7nqDVp7iCdM++KIU@bm%8n(z0*2R&HeTLzL(=T{ z!;Mjfzg|!Hx9P|KEwAURch~j3j4N4wY0B((X$Ln+?%B`vGh_K~rH0VXTIQJ%^S1oz zZlBg%GUZD9gcg$-FIwz1Wlv1il;0yzskrujO`XCT8+mWtvu(9iD<0P>DqXqDB6X?%=Y(=y3d#Pn4vfM?D8%*4O1PHZ)G+5Qm*sfXXnaP?9>02!m#Jnoaa+6 zt^a%Mes$&Vp!(RRHp}yAZ)@|m-TrAZyLzqZv4FEI9hwLCPWklY<>c3IC)@vW|M#N& z-p>!w@_)8XvgFH{@KDV()a9$u#HFuS-wO}n`KJE=iT|nIoZs2?`+l<5KNkdy|M$t|^Kb9%|NAca|DE&y-<)4Mg-`zcowQ89cGmmTFGS2r zkKku`qF(pOegEHo*5`N0|F}8-?@fut|CCP{Mb0~ZX~n|VJ>B!z_Pt@c`mfvm@7Mgg z=iA#q_U`{*ykF=LQ-hxVhDF__J7-J}c^LHS{2yuipR4!(=Ffj({QpD#UoG`pXA^`H z6s~8dClq@wewN()|5*Kd|NocX|M@%rr||!~|L^{P_J2YU%L2tUkAps!KG-SqPDyd= zb@}Bl@Bj6#|7ic~=6{8jdD+p6JveGEeR{F+G4tUkAq*YsYz%%lw$(maH(fmM^HXu- z8J{<1O+Y)gc8O>i%Ew~OlS zW-gCg7q~lg>O+GUWrg2$4hBB6lGS4Mn%1kRyYTWutGL=_k7uOr$zQ%dbo;HMz*)O_ zF617*n*O`ZP0aY1ac4%>gov~Aj(f#EsthmF+HwAXUbIN`6#W$f6XpLLl>c-8e|+7~ zf~pMOEeH4Hu0DIOoBzVC7ge9H{w?}->hbI4k4>iTyi()$(BpQ5xAe>l2g)luZa-eJ zXlqzptmsOIwWUv^yE|s?bZiI}dDi{ZPNM%EUx(In!=$UrVzOed-&p;A+m_zUR;wD# zcvXd5=NAIPr`~+Mk&*ejIrXZEp6K(UZJ$rRFjLGmUB-}G^!}?!hTeK6K_2ssjNf^e zHA)`~ej0F*eGTWX%2lro7Kg>lbZiW23X+f7QKa|u$z|t{N_>ym*I%u0yx0yjyNjCvD?n(uGy4}S%u|3?Wfim1K7rQB88#1MPTtb)@fa$>7-(n}|8DaY)?=lYvWY_6TX zV{`s%MRd`ot8e?n7w)&3?_F9r>*1s4ff!1KdNCF!w2 zml^uDMP6BRD6nm2>_4MGp5G4F1Ku;(A9i~FTzA2{4aV7SFD{qmg?kyG;A-*$W}pR#_Lj%zPOn!?-X!)E0_dc8I-)y+OPsr%*uP_!PuGOaotW*s^rxQJk(Y@dAJ*h9(3->+D;s>G zVfE41N*<1rcM13k&HK9QQf_Igbl>(?_WaosU+l8o)~@N=m{GfK_Sv%i_qVTHZL)<+ zJj_t3gZtLTbq+cjiQ$)^V|5Os#+UC< zP&+A^rm@+-J;{3YOzDW~odxq^;KTXXgE`c==iE=W0@ zb=jG-u(Eo6f<40o|7G5X%*<0cvR3+B-I8Q_`q&-Vc%}DgQ z^`1#NM>6M|=9b3N>l?0G+}OFT^$+w;9OPJPytbf1~F6`%L;-I}uR z&D+_x59G+Tw5MbU>|N==rn*R&QRian+q|hOH-)X-eBEi^)Xg)}l!UHxuGsPM`h2#) zHMMt_zO9^l{YG2y!c9f)E(S5J&+bM3{ZaVLe7-8<>BWcpufI>;9?Ed}_r}+|W-R)x zJ@s#81%t;FF~je-s#WjDr`q(c4f%Nue2qksH0hJa;W3WED|irTG%^mU(}+;e6co2!V$v*gPnUFtJxd>O2>Mf+G{fZjO<444_VJ1U2uGz^3KBU{AcH#b-TrRx|y#20C|Imp3SU5i$=9JyWxz zD|MTZRlyhaKX)YT8$20+-yN^8@9syb22SWFZjlU_7 z){ku#yu5uYd-4WDG1JP&oAk~JGI*JFuDu?R8{xB>A=E`+@|EswVr#qEYqf7#Zf;3< zoMfK)&;01AH|6hrug`zU*ur6MP^kNMs%388j{5vvmDMl4HCBo~j!g|&rn6_;1pX7)+OjL;bAJJw0}Wg<89xVtJec5^u{-IzNqqo~~d>*buDT4nVW z)71Qru?hx?EDScD?|;=O%TV)q{iUNf!WQYNJh-;!myk~6o*uU#&Oj!Tv&+5Al)Op|RIr_dJGFhB?MYxXZ{_~7m z`PRGY$Gv*w@cHRlrURdLW}Ls6H*?OzzHl-5bNdzZO8)*%TfnB%Jmcv83n$z+eq>;3 zdwsj^t$~{MuDh2Xonb1Ho3!=sgw$xx7uxI|A(xiL9*C;7y0Y|Q#ErG$@-8mx?!950 z&tJN0{ohdG$IBg`C#z=PSv}>XOvT6Q<#(lHrEXcp++Hd$wNuK`wdwlFH9rowe=b>n zJ)ghfc%1LrGki@Zj;bb~@7r9vUUV+<{vok^q3@w5S>03kz1q1q+3N0gJECav;9%;W z)4nfHMEGYu&o4e#)}ruc;azFYhE`MKOBI6G*$E#{uJ^XZ*3 zo{M7Qj13P@p4Q*8%dAO!OWQW4oeN_QuuWItOWZd>lGFF};p;(6~S)&)4=%u9M?7bBUy#wEZJ`B$Hy(7X1wW?0aN4$X}jMW z)AuTWImhW}_tX2_>R(Rk2d11!?VZ~w*>&{i#VpgZZFzBi9kbnHUv0PYJ^egheWUkD zy{^Zn_tZ|><}VcA5vs}%`tVBJfsdCeyuQqqXgWOC{J=)Q?VUJ><;FdG9epV!&dY|GE8Y;O?S(?9m`>S1n zf||)ouS@S;cSk(kN9pGnnZ~C!EB@TkQcBid&-E}IBexoa8 zBso2CeX`Y+uP5eR=dHf@`17o`-g$rfoKAO7ah3O3d#q;T&ElZ^o6hSGm)ZyyTb^vV zF!d&HL-FJI*NGvVie~;RzVfYIEiipna)qsTx@_;c@S>Y}+s%I0XlR{%lXI6zU(Dz8 zAJ!*l>dK}x`>rV4WL0@1Ln(LC5{xTAc@vb^p z`8n$RcDFT|9FsF*HkxpXFP*Go9j^O4YW}+V%+;EcboQA|I3#ylcKLLkZwqatOt;^1 zVd;$f%NLXQ-R(M`!_>>C_e_{PJtDp@von51wOdX}#^zfxY$j~IYnO8e?n!#uwITi7 z;^!wHUCgKxU|(tMl(jqVir<#}smpJ=E-SMWuVA?Gc z7M+`yKAS(ZthzqON}I)Wg?$_2|Q^nc@x9S+Gf4+FhE!3NF7*KmH9#qDM#r}cpxM+{_7m#kQu z`{GLMvv#pJY7WNd^`Ea{?R_M`#t?MuTHNXxq496bUAIhJxZ+s9^j3v;YKvHGW{Iwv zYyRW&@`!l}6TRm)uE^>LY`XA1;qRH$DC^n`5uHyvuU=j6TRPpTdztg;*Yo0Uo;uoC zu<^v-ue(ZO|E!;v@!Gj2QugQS`y1-cYuo?QRDYfwzqLYcE!+B|$)8FsG*3T&>il@~ zTHy(wRfVqHd>(u@>uE~j%`GMwk6j4)TCn*Zmn3!`6}Mp zc2@E4qRskG{9^u2?|)pBoU=!NT4wi+f?3}*;{QCe`l+gNxnn1jueiq(FRR#xV)HDu z8GTurBrZ#)*L+R9Z->PG$^tXt zb?@V(TQ|-ArzWa%&ONrG^UCBmmm+qrx5!vqAH$jb+VuJVBYvja{%5!4oX(Ct_u|^V zD{o>#H_1QF|Kz_rFJj%dq^a+{A0_Yp!QFg(ZPME(`YttZD{|y#POKHL^^z`KH7Ebe z(*+%Vmrv)$@;{t#uC~@%NG2lafwPc=4oFz zD?d;C^q0z~?onksR`@tK%z0eoxc-0gXXOhTvo7S`eo=q+*RCbyg~9fZr#Uiasw`Gm z(Wl@iVtBjgs@^W!sb6(>2FvVLaJZj-zur}*;G?`u<_yWBZ?btSB_CHrHaxsKIW={A zll$?X5BKQAeOzgONA92M;TOX1e+2*kp()R)YWUgc7glAmZ~dnF4rng*>!l+ z#_xsY+HXaj)t!AV*KT}elN^y{r4YDB$4_kes+V()Xzc6oSpC~5)NA&FgP&3gL$5K- zc=x(yMaJ?u+bS10>%DTmbwcod!RH#2WBOhW3nm>E6gri&)$B&Y!P;4!k|zAAaja<+U@0$;($&{XCM;X_CFZC{q1Jw#f0a>)x7Y%UdK5XTLbU zTKhrJ&5EBpy1lrA%=dhI9p4;uK3}CHu~&&{%H9L&)9&oz*>~P>tC`2YzkHkO?@d3E zdcKVFOR?dclcp6*FGT#dn#P~w@^q@uVZ9Eq^|cDo{8vLeeXjn=E_-}hUwQqGy}OTU zeo)%J_-|a)iRgnLcOHG%Be3S!jY8pTy~nhkE#P1xicPZs5x9IvyHoh++XI1r{{lOsdezmpJdL}N7)_&P* zAJ^&o^Dr#val31>-0ki^nbLxJwm*)peAF$FwzIpc?VN%**Wc66I|Z{{_{8h~eM@_F zD0}tRXEA!Gw-u}Y^jiAwl(8Z=@2$JbE1%_DkZp98U7jWW^~26dPx@c~WDL#S$o?l| zzRA1?-{beqys=uOckZ{{7i67yq=LMU*{qiDdcJa=_M&d@B~@(F5v`y8pLiRg|K^l@ z&D-vx9cht&xdiIxEsMFqKTk4!eZAzG9p%q8e;zgYArB&TNnJDQY!uX z!PZLcEt8)JF+{(25;D4*{jo}8WxR>cwi|U!3xkuEXGE{s?EKg|^6QQW&kY4nHuwG8 zs?WP-U8mg3Rqn@=!mf3+^XXJ~h)T+G=SGG>zExl`dnL@uV-Sz$I-P3`q zuRglesq=q}+(M_#27(r^eDXO2x2(+DUDhqebRc`SePLYO^g8hDyjR@r)1CuGkAIk84x4etZeIq;}+MB3EG2aWR<#mc3I=uXg>OY4|2ehr`Kda)whPha0D`#k>^Z^nkqS-o7# zo|et~8TmTZ?*D~s-RVmtR6AHY^v<6OGF}ri^Yo@|PwQ46^J`k6#`sxD|NB4hN32JA zpC9BD-h6k}^f#uvJ12k2F1u&_rf6HC<(G=Lr|mz^|MW}x$MY$xxb+*##X0Uj|E;GL zwC&NKjaIwMpI?8Fcp_lJRX2u)RZqGXPB&h-<)hNM)Rn()J{EB}`P^2CZ`U=ZyaOFy z&-1Wmr>>o6INK_mx7Ypo(pO%&q6ssjg3P6=(}0B+KU@b>PeLp>t0@1a3|rY@@(5>EyAxC|H`Y3ndYjL>#gyVY1h65vY8g# zC(mzYuj0u+m$v@-X)Ooa(|vdJL#B4EHs7^{m!+fse6if?T^(_jl`ae|0=x9~{yP)1 z?!amJ%2MtvuP&Qh)Ctf#E|F3C>{D&JZs=!j<`|U{DTPhTHtzdXu>NVb$1bZ`&Ib2H zIlR{Wj5w~@U%oV^awboi6^^8Tr%b+H-nees`Kxk|+!pU#VR!Dr>UoKu^Q4zK$697<%e)qUTFHC_I@s9RBUrEsEUsJD1=-`0vU_qnwv{ao#?=E+|>om#f9 zUuvuE(mszmtn~ST@UJF~GoV(>*`pp*w zvX9j!beP=RDtbb?W+zkl-ZHPu{rBywKe=7%(?1oXFSs&om5@@b&7HH!JPkW$Tc3Gl zkh6Q8@YT0z#l@d9?t19Wo_u;&Na(dQ2coihI{D_$PTa9`C#O`+Lis4W>Ghc$DX$!l zto|PK<8kcujV7;t|GRj0vB3WOhA!)0e6H`(dcd^MGVgwQzr1aq;k93@f)BeE|BBij z%6;eV)~c5{&)QFhL7NPa( z^X;2+r_Vm<^u>hb`mZM^A75E2X82@6Yb875x{Y=(9E!78H%OXY{nWK=iQ<%{Czc3h zES$9aw`+IcUsIXtv%MNg+Rx1IUaym%rXW_a*)`WG@|B9qhDwpA>z-{qbTC4?Yih*X z?TON}H!YoYRpW2ziQ{P;R`S`~Lw_3o|E#~!^5d)3b=P@QP3kJl<<}+e@85O9>3X+P z;!@@L;g2_cHtb&+`|%T(f3FyGO?TmiyOZc6?|fXFUza^^`E2+8xP29pO?lgIAO3jb``^jO{g-9d{QUH-!fM~wXVKx; z!ymt#;@zqE=biQYn$NTE|JeNhSp9SHdp}=S)ClDJzB~F@>uZuFYu461y>9vO_x`>s zuZwl9zc0RDPF1g?Cp%=ngs#!&j`BRa&}RY`1y-{4&u{F3k?f7-WB)31H$op1a5 z&CNG&{zyN$r2g#EL$;>b=kxY`+Qq6U`rQyx+++qIK)jxwKnos!r$2Pb+X|8kk)ht2Xo;96LUly${ zc``Xrnz#MW%>PHHKX|bCzL?LqmkZaG=Y3xjeLiw~xXj8m^QL!N>-k>1UZ@rRpv2<# zmN~)&4L4r?>&^SSylUh1eM$dRcciFX`KcuF$Uj{`=#FYqs(o z7D%46O!JsTa!o~r#?q45?f2hjuf6jld+pLG3vbtacw^7~`^>QeVXAUhmx_nXe)f~Q zBVo__FBc!|UMk8f|8ceXZsW}?z3VRC`*X|Hdga?&-?D!k>VG=bzTesPV*cT%cX3JE z6y6?`nzhtXWnIJLnHNr*pKa6%{WbLQBFAs}Wv?4n`IS{n)K9ta|IYcXf1IjT>@{MIxc~6zukFhWj{N6u?)2@A zH(FxKz`&qd;u=wsl30>zm0XmXSdz+MWMF8nYhbKvXc1y)VP$M&Wn`pnU}$AvP#@=J fgQ6ifKP5A*61N6E=6?+g3=9mOu6{1-oD!M<&qO;c diff --git a/mods/HELP/mcl_doc_basics/textures/doc_basics_camera_ego.png b/mods/HELP/mcl_doc_basics/textures/doc_basics_camera_ego.png index 98b533d2d26f06d6c602043f4f9328ae6cde12a3..5484190d83d7c7039ef4ee5d2f2ca018c2b79a0c 100644 GIT binary patch literal 48705 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 literal 49404 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 I&MBb@05~@-P5=M^ literal 61814 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 DO2BB8 diff --git a/mods/HELP/mcl_doc_basics/textures/doc_basics_craft_groups_1.png b/mods/HELP/mcl_doc_basics/textures/doc_basics_craft_groups_1.png index 878bc681bc74e81e3be963e68f366ace0d986485..4e95e1c9b7cd39c8b8aea52d461256d77d517560 100644 GIT binary patch literal 27075 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 literal 30456 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 diff --git a/mods/HELP/mcl_doc_basics/textures/doc_basics_craft_groups_3.png b/mods/HELP/mcl_doc_basics/textures/doc_basics_craft_groups_3.png index 149dc61d88068b2acfae873f75fc08cc148a231f..c127f51c2d5bbf4bdb5843a00f82376e84ce2fb4 100644 GIT binary patch literal 30135 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 diff --git a/mods/HELP/mcl_doc_basics/textures/doc_basics_craft_repair.png b/mods/HELP/mcl_doc_basics/textures/doc_basics_craft_repair.png index fa21ddf93e64e83f25e200a4946da8e528badc97..7586c19a3a20fdac3c642a072412eacbffaa656c 100644 GIT binary patch delta 5695 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 delta 5997 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 diff --git a/mods/HELP/mcl_doc_basics/textures/doc_basics_craft_shaped.png b/mods/HELP/mcl_doc_basics/textures/doc_basics_craft_shaped.png index a5e2f8e7080086fd98f58d090fe5407dc2d97bf6..cd93754b709669ef434f0e5d07b3957e6867dd61 100644 GIT binary patch delta 15031 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 diff --git a/mods/HELP/mcl_doc_basics/textures/doc_basics_craft_shapeless_2.png b/mods/HELP/mcl_doc_basics/textures/doc_basics_craft_shapeless_2.png index 77a456914b5d7813a9e86a34dbd7fb8d9e251ff6..f78953805b809607f0f1c043bcce5cf5a720b466 100644 GIT binary patch delta 7949 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 delta 8269 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%0DJcRxOTf;S*mRdv0g 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 delta 102955 zcmexxmhII!wh0ORY)RhkE)4%caKYZ?lPAV%)i*GBx;TbZ+&c3&e6y~1nOqm|-B#lma%_U=A!d6%6<@m|*r>ua+%FN>UNTD0T+Z?=E4|Nmr96LS&}RC00=~hG2%Ds`@DcYN|%$Gl&uzb(Gb;&C1C+kxa+C+X{Ij{Nl+G<|K ztFvU6aYKLGCf}Am+j3T2OqQl zf5BgWU&?S%_uaz}HT>oFen0wre&6RW7mvUH_BrtAxANNi{f`6oeg0T}?%b@|w_jg< z_2x}Yu~nR-?#kT@F8KXDdpTJCcFiCA*5m)PHuYVce)`}2Z$Eljf9>8sukJD9?)~QP z_D{BA^5Ds5e3wx7f9{;A7pA|T+{YAVd`q<~W}W_z@Vh+u(RXk6*L;qCs2%Ub!N$_? zpkW1%Mp{qKf)k8;Km5tr^Y7x_=l@@p?07d>f?2Mff4hf;U+rWi16ebd{+E4^>>^4xv6|C&$T?~QL})b~$5z%0S|ck)eUHMw8kTqn;u{aHPfQC58Y z<7F)zeH;l5r{BKXP~%v$*>|!mi%$L3nkz-CK5HsCa>T4|bx>@Hdi|-sM<*%wvR^PC zZ?EfF5zY8FW#R3YT#}|lshDmQ3B4#XX&3VZ>peFcWcObSxo7if+vVSL&Az2c|J%g) z|5l`f+ljO%e0>fXc`fgv7R~RQ|G)j^)p)0!2d(^DgL0gjR>~BwWIH(5{C4i?9=#~F zdY`jXyrplw{aH1~&%xkKZH^pI@Xa;b`sM8zw;0a~ZG0x3f;%$?8Z+`>zo8 z<9lKAhC9++9DVsUd`b*bN>&YwyZ)Y%R4GF+L{s>h$dM|JKxho4@hirmGJswpo`?Fubogxq?lx{^8N1 z%~9V&kIi73Ao=6tjqWS?^}la_4*C9j_gA%;H?vN6v*%`A{qXD?!@37ImZZroud_Lt zQaPvm?#;u;-{0jcv*IoNBC^=hD$4%N@s0e3Z?~l{b+Vt|x7?Y5xnb2Sjwu`$yl3(s zpSa`ZRuewUIhtk~Ngf~eA3ZE7aIx|31;#|r#8d$R9>xZlyA2FH2Tw9Gp1df-pqb#r zemp{Pclah2hZ9d27*@PUY73ZIbY$YgFOP2a+x@&5|L4o`{~w=q&-d9`{w3w#k4W?L z|BGbLGdAz!wo+nKWnea8FK}RpPO@TWP+*x{!LC++_q4yC`TRt?wM|ubr$6rgc_Clk zw#%@!a^CrK=hm%TcdYQuu6HLVtMC7DRKIL@tWTrHwp<>W*=e`Gw_1d3}^2`mGIb-qacGJ6W>IpFe-5HY=2SxyqztoJ_|L z-&I`tqK;`zN3N)8Yv}gOTSsJ`*DwfdEwb=gy-s%dOa6WT``^9$c76T2GY?BFd=CpK zdFt+dn`YCiD!zF0^!2~gmKxrEw#N2b`#RqSt_jNv?e5%t7Ih$Y)w%k}&KDK4ER+~k zp5)iRj&8pk(Z1KRv0WhP>i>JkzLk1+Hu!NgxDv`%H#9F~U~=7m&wl^C z{d*$n#d#-AIB@pPfr5>8?Cj<4_3kAdZjQZ217wSrG8tBDo#SFu2xVZ-m~nP>WpCa^ z?rV}M7k-8 zW$5b&SD8+Wbz!e7^+Ju>k{(PtS!>!~uw(Z$E4!K;9SzJB|w*ul1kE2Kk1 z`Q`;>SXg9Cw7LGVV2`!+{kIA35}#%)FP!zPvtHiKShj6q`0f2a9`@hPo9g6sck$U* zbLV_tIWt`MOr_KMHzBK5C(kUM)qZ%Ry^Npyp8o~gy`~&{TgIw;=J+w55T4AN=l&=1 zynG+0Tm5^7e$|2KY0n>U>l?&e6?!wi{E<>`VD2dcR7q|Cv2|#eMgg5Aqlq^4|3IwPf(It>JKE&`7wn zV>wlM6+0Bjr`=nr3*1r$_=lA_yZ!FiheER&FU-5DOKDpcdcwhU$HbnEA z7ytgAvI6l()#1l|6m=CRwYMDjygA%n?%DIz&+26x(mqOeIcm;0dUJRM6)@RKCGet+eCHIN zEl%6>IATu8#O3?spHeA_-^|qT`vz8^VRej#%V%QdQeE05py9-&n_f~v*viI}m z)6dV_&Heo2=hehhOQS!R?XG-&aq{VQe!k;B5A)ma+LJS{?%T_+Uw^!MmZr6|ONEc2 z=*|0mzvuS<|7rh!@g@1=i83Fu`s+Tsw13r3`Mlfb-><9t^YirV)#rWIg{AQC z;!oaNkZ`4WnsS99GtZn^YDpr3ZsjcODo^gNGnK0Qbb9}v$M#j`-mgV?GS@_Ki!XlF zo3wgP&y9w&Ii2Sx$jFH6J8ns_&Rcb22Cvc?tD1Mm=NIf<_4L6Lh8Dk7yxR*m-<`Rt z-gZ4*Jdb?e`D4ciA4N zr`F{v@OU3QUGMGwaJ&BV>yo$gE9Kc8giPE!UdYU0B+sNs< zX}1$saA=^l{p~QxE)j?Mr(ABVy>&WP+FNtynT7S8ce#ozS7pq8Wc}Vo>X`LauC_BB z9%%<;^z^Scu6!LfeRu!we+4#jF^;Qcmj!R<^SzzbSZ8t0RZmav+`01Go8SIA`0eQG zU9s;UDX%b+|D8TF*?!LKck}mr&)9uCscZkAKP$y^f@^+!NL=|kzy5jP?J1|vK7E^M zBj?{ap+MMTrhfg*5C6CEm8Y|_q!uWM1hO(M@_L{kxa?SaRgLFYgL{8A_2@4<%q_W| z>73b}uj|%l$$H!RUhe<*dH?JfnYlg^N7fc@nf#XkO?8+1U_bLDXqr30_ygnp;bA<(m3JaTxJ5z$Wi%O9@OT9vIK>Q|G2A47g zhRaJi`y6z($}FqNHK}G=R(jIdn!%x2ETv%Xj2%+EbDsr`R2X%zVA=({@=gOY}ZaktDTG3+1oZq zrQOc4P?0#stn9gV^;Ijg+?B5Nn^!e6t=+XF?&vK4EYXhVNoSt>M)^q#IIhYPb?eZ* zcSq)6(@ho)nGHT&4Q&Nw{}hfzES=}q{`lhr$)qRh{rAJCmtF_)Up5?=p3Z+XMeq3G zk9o8B(l*#t|3CcQ-s+ zg9=NOjyv?taV>w{e!uqp{2X)tpv$dWko&Tl0%b(aJxvXsNt*KXRz9|RJS@!42 z+~ZsOg1S8%z5ZqtE4u8O``+%yi-#7n`ug&7_#TPI#q6#4bMDupq~O)_`l^$ra4o;Q zC33C2U7gL-ja@5Nt=d)X@v>sa>fDDCK~KKltF@0?T6pew{o{}niRXd7Nk^jAirrpU z_GDB2uadhZj}2BeNjF+H?3m8+AhoKd@Y})N@8j;<-IkA^ctBVdxXuL*tk_|Rr4*+H5DZ#1?8drh9VPJhCTXm@7u%o zwO{-LqH%>o^7-lf*^xCs9n-m$Cv%AIwXnLIc{+1z~Az;eUgnJby|3~#4 zeH6GqGw18E$%};>t#>yu{;Jyj@90Mk1Hpx1yK8=&n{)bx|7zdI>s~x;R(~(Yzn$f( z%$1<2dYaD)#4NA)`QTIi$+KtQb}wJ=^x$jN?G|5qnb~E3|5f*& zNtyS&?nUrq0m+HacM44r$UNult^Ihze(Q6^J1y!r#Kzm~uUf`FtN3ky`Runh3tr7O z^D{nnh3D~=C8ov3=Qr)Q%MFu@4PV_mRk-}qqnqO5{O7K({(ATB-M3fo-b_n>5OrMd z(cO<~Yt~+?&zd6f-+ITv`)elOz5Yff=C19F&S%df@=pJIdG+-CX^%f!#Vuv2w3FpK zzqhjBs(hP`w$nwYrUsc6orVp&uk|#FHgxP%44xR(sjTpP4&z(~iIv&mxn6m7HuE?< zjs)*6<2q+|u3YX|`g!}sCTcA&KX_W!?z^`}FpQ0%qv1tDcXxek*On(dpkW>a6rs%sn3_uDJB=Prt3-4jUS=EP4Fz zfQOh#xdtfv@$NJ%EIPt4xm zC{#Pwtgg1?i`7Jz{r!oIvh{)|-dnqRKjx?pJ-P4y`TKix4@UQ@vlKBDD=;NIndY3% zdh+GLr-y@{Rn9u|@Lk@WH)a_({P#*)d^V9j?rVQ$`|s)Hzh5uQ4ZHn$PIpIa+`Q&v zmh;c)pJ%xJ_paPV#six_d#6pY^1ocNEqeA!>kf~VNnGW>?Oc0W5~VFJTse!t((+mrRD9`JP8wQXnJ z*QBj^*I!?IyC~c2c;+-Kv6VL(B6&sr)LCA5xK@Ds?m-?|h7*FawI?6dZ*^Vte^tP9 z?}axnzV%(l_@RnZ=1%83#W)5Ak8itt-o0wPQ6D?Q>%+xo)-Us)T@KYPe|%Q|Qw6Wt zm6v``LtYv1J+<&_H?se~Xt|!`MoTG!hWYE~+f;oBd^PLu%cINB*CnML;qhva*brMP zp1b|_n{D%JKL&r~$@9HzWVK*cqqKrRlF^s>b>FVH|NR&8-QUjcw9z`L)l08De7fa- z&fb5vu5qh2*DrH=(&4s_MK!AJ*6jlA&zk(^R`E~&{jAx+_R`bnmW<8nv^nj1Ehl_$ zl^*U-|(CaJ9rX`!C^U2(K$Q$=nH~Qo6s!5ZD z#od+J%8Pbw*K~3?6u*$`-jyS~_llx_+)}CAdMy5W%Kxjf5B4?G=hPU!H$OLF+V(2m zj2-)Tzgyh#Teq3vfWU>)p9v;LNnckS@XbexW--(t?2Mp$xrHdb~xD%UGp3X10A$Pad;%L+LTYD@wTi?5L zXWjMH-KV>+R+U!%`|<46(T@f7)fRK*?CYN7F^E_w+STnv?EAHD`)A!Ef$FYw0iJdzXMDE_@tZb}cl&E)7 zozNz@bO+DlmoE$dpZs^TzqUrSa8uQ)pC%_m7V>?LSi@0SXmwSGUE; z|9D(iiE@YCYG1uo*{JB&y4i=no|oJEdp~myr*8cOAbryGeerNOK-j@&ZnV$aK za=HhjLpOI)*6h#a_bTh>e7)>n_v_Ek^vfpKla@tzm7RESWX`h6q^?G%jE^NYOw;z+ zuL+lC6={FGF?{>mvfmFL9(`F*ZFSdm+Ue7G^KO50mTTX6ZI*g{;L)H}9Zz>|i4A|1 zF^~7s(WA}ww*L>;fBBpL_vZZn33I#?Zk6=D5?sjh_@K_3?YHwv|9yFR`Ecf{qm4V$ zKBmq4bR~Be`)%1ri{}NgwK`<@y*s_N$mDP}gRmqsgN5Xx!$nM5`$W6<@I{DBq=>nN*Z?&eZ#&h{6$#&}WklPv?F7R^<%i-IH&x-w^zfePhf2Q;)9~m2YAF@BV#i zf|E(q4uO3vyZKgdAA0na&7tH!@5{Ar%kTfLe^h-#S3$x;_vrbTCTu*F>&~oR90& zmOjIC#f9G`E>&G!s&=+gsx8j9?|AL>15+7!4C=mIJpTB`^Tf zyv*A2-#ex2^R~UN|E7LFv^#a(=Nl1l*UfF8Y1! ztWt$j;)#H+X~NH)?QGxwUVixPbBp`0N>&@)lg)3deDQoT+k4k~ZI;43>17RUM>{Vv zT(uOi=vut{a;-TZ!yAhj{^0uR@0;f5Oa<)BnlWW6rfl%kr;azG`=qWoP^4(A{+{ zE$8$?wuUh0T(Vl);<7YNbn)?vxb$QbTgLa3H=1};D?6U@Qi{v^V9c|7%d)LO_e7pJ1nDW@9 zm_OcUFMB@avuxeL%fqjK-rG{fh(|@F=^9hc-wLPJuX$&EyH*E0uPJ|(+~aFCzsU2! zn}554U;GQZFE+jJ>)*%EI3DmcaFq40j)>st*k@3`^}vm3GIzyZJG(nEnQW4(z4kHG z*7kI}{=2w;NvvD>&O5Ge_VInN@XYU^`X4vd%QvsnEAvgsKd2hFMsDZ#pzm&3&t4o^ zu-}?4u^s|pv z*V&i_)Jw~hV#FB#@y&Q+zV!P2dkGO7Dt&n?+8AY~@!oC_S1wUtQW1~y5xi0GQpEC6 zQMT^)>5NthEbiv*zu7u1lU`j5E#2G~{O;_LiAS9?&gJFxu?fsx8NGG+;e}J?eBN=p zEa-FE<$L$;GODTBTU$q$E}UX@*1g`P;EIHm%lXSLF8y-x9xD&uP*zalJ1p>MTbQjZ zdo9nIgCckD?pby2=&~3$C%=`o|Mz~^Y&o2GU;dj?s;ITWiO(fJSDgO*vcw|ye)W9I zn(w>!FMoA@-u{A?8*O?^Gi6TAQQoquZr|RF-QDT>>({OO?ezTM<4dB)mmXkmTku_+ zlcT<2`mA=wChNv~`C%tc%bjL;;~mG>r*q_cqPZ~uIEQvT0B`^+7`pLEN|$gZ;#vYa_{BZIYa zQ0uD&X=+?tM*~x^TXb< zPW*qg|Nq_<1vy8uq=geB%y;YTl%MDNBIUx{j188?4+NTKTXi`zny9c$shqVms;f}W zThEHGTwI(#Y_+J;2eVz`4kvd$dE}y^WZ9oO&pGADj=S$}mGv^jP8KjN>REW&lK-)$ zK*HQ*mFt!&IR2=YVsCxHyix0BwUf`yQ=G7Iv1DhX(gbUP z2q*K^X(_rmHq*b~`)ScqVkPH&aVO8~vsJT}Pq|e&FPZ0E+~*JHs^8n!{P^(b z(H{G=wfA>VTUC77_nqFX=a;hA`fSX-{(jHzlyjFi?w9t9bm1^uReAC6SJ9*I9_DS1 zT^~1Xt&q~f-NF`4mM@wLq7)8tbkyhdIVAM?aUT{Ftm)LbXW{E$z{Fgzt;uTAoKq#C z%frjB&p%f_|96SE(SmPb-(1^#MYhxm3$W~w2)X#iG~AiPa3*JUmsDA1cG^3xj)We+ zRa2E%(u^jpN^la0vMN^TOPtp8Chh3mJG_h&ns*y7-ndIs$ztaYtB85(tJ|je97?PI zDqyPUF;BZFWU7efrlSXPcl&MGWxKEA4#U;Zpiff4%*&RB6|Z4?Y|%a?=xW`Jvon;OY)Kc_BloGfUm zu|rr-H|xGjb`blj-Ww#<6A z+tF9Ac17mTFn|5EdDiJykB?jOUtXiRF8uA$tlezKCaKS!Q7Jn+Txb7EArUmhSzy7)LT>> z&IMjveR}oZ&2?6?&!SZgl#9(BwzWtIIBY3D?(jOl{&m0k-PWXk7thxlOxx}8rtgK| z#e=dEBCX1bEG{fbhK}LJg_9jrI8DABe*3UQf$Pmu&JDM>7*^>$uI}Ie_s`YO>izfX zE$hFP~hiV&}JUn*Q^OzB~plmIME0J$ZBPgP7fy z>;}R8zrIR0CSSP2DsZv$%FWkWSH7R0U4Gs~adlgk%`AC!>)uj{XKND9bp`S^E@Hkf z>@0ggd@l3u^^@6DmFoHRw<{)1Tj-U)$|Yi%R+8bC)mQswX3uOlY6^GJid-@)g!_!Y zoITTlpym7InGSy}37ENiTjhrbO4Bv>{{Ls-vp(*g!Vv+5=UPD%ulTeVTFHEuNqRM_ z{9fh%l37kMPv0!xeK_mxv@D;BJM!1=HJq zR_N~a>O_F`90@lAfh_H{-R>zY!G#KH4XtN#-*?F~7ie>|F1VX}-}=6t z*U9}AAA?(O9!TPOz|fV!GC^SK1Rh?^H@|n+|CaxE)?nT$o||f14?=gPeRseAfAajg zU*YHH+wZ+$8?;%?MD5s>p3OFUcJTOE_A3eq&6?f(q$cR1np$w6@Wrkdq20{_ij#Im z`V`i0y(h!}yHH}unb%*d^dvhOtl2v^8WtO9s4{2yXec=_UUXG?K9kXzC%$t=V|AMR z4(nGzQiZ>Y)P6*}X#ZO$AbD8IdCM!_hON(q(O}Np`nli#nih!iZ~vWb&g7aDeEP1| zT)*-&8{U=83(|c2vBLY}nb4!pR<8Ip`S^RLK)uvCZZ6yteS0)~oI4F;=gb%0waWMM z6sfSO;`(tl@4ws0wf%hc>(xQ#S@d> zr$A#sDWA%VBVkc5{{HxRIsVVp$L{^x`1i*?5`NablPyK9?2F9F8%2la`1`N7`<*>& z-KV?iI_16n*Y2A%CWb8 z`S9uR|HtzG-lt#K|Kno)p11S)iVjV%Xmj;Bqq~4v;@`dB^?PpH>6vvdT@~!*>7(Q| z@nB8d*0Z~+KOMjS-@aj~^M9XL{&TK!`cAz#QF2bl4cQRy9>K%%c7aR-)q=HI`(>K;s&efBpq!$TuXlGnt3UxuE! zhgJP7?u6$a9DQjHeJqR%6K}*FVxPV?qI_1$nKG%<5sB;KM6^v<-#Mqbl$n&~RsMeP zk^Sih;o>u!#lD_a@Atm;ui$x*^M~29oxNg(Jx@*foKVW8vXrAWASeO8$Kmeuc1 zyjuLmdiu>*b9vU+KRcYRzpifC;m|IxXIZ8{H8?X6XqrOT_^o-A|ZPgMl_nb1}u>vu|&H%WV9nJ=x>OpPTCU|9`ms^{S}C^h?)`SPvbzaU^VYx$o*# z3@=_W_+?xznA5G*wL^2q!zs`6u73Ti=w>GD;-lFyb5+BI1FTzkFcd#PE_5=d#R&Hn$!w=5?9D z$)M0_U7@O0?!>-t`>UlF7BDKV{ZVxJ1#5Wg&J!Ues|seFo{_Dm;P6OdN1>qc{AW6B z6O*JTU;B0Lart|VFNfFeo|h}#H^W>1YVe`LS)n@DtLpY;naehQcRugPplvwCNV(|p zI_3J~Uw0L2Kl@r?B_wow!BW2FYg!v$W=;M3&*Q~RZw~Qy(~9$MZ<|ti&RAhh`0BG| z+oRV0x@SK7^Wle5XTD!|S1F$$P&upLWk=R^-@~uJDlaQI_19$1r?Ypq^>!-#tg|Rv z;Jc)FgH>(W-%ro2%8t2ng&P9cHdpe#r*B?JOSBNE0!)hU7UBD z?}WPKyuCkeb{`J?I#F4#$C62uS#8PE=9OPBPq$zB^Z8?w4YNCWz7}lRec%iq=i=S1 zDeKqO-{b$AS@SZ1!DmIiL!U>Mo5!N|R2W@+aohL<75>HUH!PT>O9GQ`E`- z-#-8U^yTX2cJbMdSH|a-oxAF{xQCS`S=d#3(n@WqnX{QiG#i$zYELwpED?NrjX?0^ z2@`Lt9lbKIE!Za~EoifMrjv&2^2|A2zP{~e8kGeNmy1ZJsT@1Ho2hZ8P(uC5o#&*q z%C>wtby46=+)G}W3s)}AJ@YPBN@?FZFQz?$Pku~V{F}GtjCrTG_!^%ppE6#{$C?~; zD~i4$|IY8AtS>JUi;;^_dmJG(Jr#RRXXmvw$8-s*R6_;~G; zg>U-qbF87UMf-N|D*XQWuBxElPWk7`g7w-fL^W2uzIxM4&EoLM zSN6Q4#Oh1sxwOY+yOo(HMlG51t8VknIrHb6YrZLa{ycs6<%jQHUQTy?m3DdO;#Eq! zG6b()abdq9@0al7!>5C3viB>$oHIGQeY<&s-Py-a7qcI(IAv5-y7KDWin&&IT$WZ! z3BIhbsjAP}a;dJqy882Go%*f&_ukt!#ee(6UM2;ni9#JroG;^!hx_iH6^1QQ<3Z!k)dnvgCozBB=?xmx;PN zm2FY*0;mw;2Z`G3q`?w zJAVD#EN*XZoT8p)u43jMz+a%h{Lu90@9SP4uD^4Xdu!3Izwzla&aBM7HZi*V+*gyQ zlV4|Ut+fpK%C-erqbuEO^7>idG8mELB1Byd@+boX7?tmuhV@wI`b(LLPD=g4+t#+Kf_ zB+j+|$(}@Bje{l)EHPHgj~<*8ro_o3ade{Sq3jQn1Q{%Em}~5+F}^lQ@zu?!d;1S0 zFe^(7RHZ7Fe{Qw%yg2Qe?S;Jyco`-v)O=t&N#ZW^f{B8eEH8Fg<{xSoU%jecW9!d@ ztKENY*l0Clm)4A*M~}A7oa?7vymo7ggtw+;deI)6`Ua231xZXy{ITXeWa)!=QbN>7|xm+-C>57W0oHA#51$;JZt`6aDN$`=7$a0Qpv z_PaSop7p9??7?5BICb<0oN>8&;ALq!C*v7G8O!Dg+_Lt5+3-)84YceXTOZS86_{AqZ<_i%}MTz}>M*N6TUu!cOVdGXuQg4N`z zPFV4}ECJ`^8#$%)^w0198s)l5L``c|!;IyflD?~F>inwbJfouk7tn3u86`PKLL#VkkKcb6U#*5#VSZE{iT@TXp}Q*Df0Qj0Fze*O`6{8^me zH@WwZ+urmzr13TB)%SSFmgX)Fy&-$WXQ6lDxyc?gi{*pYl$vq-?1{|{&RSNG$C5~@Ab3T4g#_hh2V>V2SS9MOia%7V0+3T<0{W;j2c}pNMwBBY)WuB1w zlATZfe*BU&tLWTzbN$&82TfZ$GPd%#D5PE8+Hvi0XXA{QZ~in{gj{`mR!-ooY@<(4 z=klE$bDTIl7T(Tjd@=X?ebx_|Qo&vAhvzY@zLq*U-bkk2an%Ir8I|SNcCDPfGxCty zr*)ZDTm@Et<}e>=OG+qER}NC)kdc@$?UMO|#_3b6K6^cBY*rSUIirPR*|E;9-k?`s z{~e9sySt2W(QM6$2MPm!6YH->{^z@ZhYbTr;}S0 z%>GATbi3I2E_%m{Z3`Ywl{g);ER(Ns_Oi^!Qa5=-8xk&hm3=tMekl9nwfgE%mrK>6 zrtvPxoSX;Fm8Gu=`@APIKWwAnf=aooTnl<0_jIf-ef}y)_4!SonJZUKwmAMQr<{#p z>6ynS+hUW~ZQa$pWA>_b*I#e$?%pTgR;R*bnycKcQ4zX5^tNEdyyJEC*8a*u3V}R@ zyQA~VXYUMoW^vwf+skL~{IYp_vgDZR-}0Lqntrxn3gGydQyzG`>hr6gFZ1Rvubb00 zDg9#B)`CYdMob2imHkvdn}iASDK5KVy0$~$RMqCxwh4=7_!pmB`mUcjkwrxb0MU}l&Vsp)#erNLlp?(27oE$ccDZmi&WV0qq2AO&Ne|Bq_@Z1&U4oI_MhpC(qNKWV}l{&?9qeR`}{=iiWtP^iCXdtcDwEYrcPy+K>Q->XcQ`BiDR@^RK?yL)^LUtWAX9Q3TvW~Nt{ z@43h$oHJ+2+3m5B;agRDG1XN;bpCUz^N+Kx+SUExTf~1jz;#uK%MyW59q-a3mkV#m zyQ@r_#JFPB3Q1-D<%(N3ZcLlC?DT1GK24T=du;S0*T=ohf8V!!U;Ui7VWB#vFSLTs zZEaiEx#+WnY~H+D!5hgvFM>W@S(379>nWS`a(~Tvb92jX%UX!7w0v&k8>%uXLvO}~ zEp~NZD)t6_PJVUmamZc6BL%PcHBZ<)7g)4gXkk{Nxp8s1v9%n(p_$UHZFg_JbL=^3 z<*oVld$pkb)l~s=uW;V&$e25$e(jXEuMSpEmtPNZSQ)O zsw91rI4JADd7$IsnHh~uQ5!|BE1GN-+rDy2@;OBX^G4?lnNpn&TMb%IEC^k~AzVMR za$efXi~#SO#?95KZK>Z4g$vZv!rcQVX02P<>EPhANXv?y%lER+7l=N|5V~X?5&?alVyKmyUep$tT*-=Z5EO2 zuhnI8co#LDf0C6vfBRuZ#$=D&$w^(Bs(do_O3D`x9Z6DhHVEEcy-C=3wrAJf$H)8o z+o$(5G%VX{FPqFW`|P^+)#b4Tor{$9?-ge>hlY{7SU&hy*1XP=*McRx35_uX%Qa*h`+Ra?C+dzUGDk-JOP z*H>4o_VU#?E`KO->DNW;{&UaXntWa5bs#A9N?_>r*`~YvKXWAbp5EHCh|9w#q$n^j zJU=Na{~F(;tj{JHp@zJQ28Qls*CjZ7ls*^Md*8V_=Xi{_sj-V!+M=#AB2EfkOV50s zvvie~!Y;{qb7S+iN4u;F6d7VSN+>8^UhX*bLHaoKi1a& zdfQ+3|J%D)pO@P^eY-wI{I2}^terb|SMQ8ccVBZ=BKrD?JFHn*lHwOdmZjeE-W+TH z=ic^zsXduz%I*KZVNbGU*kz<-*_8N|q2u6%uW`Sx%@j0bx_I~DtVb{3?D_rS@p~En z@?yJ&i`~op_m}^R>oE)nnEcAZyZ(QdPwo2u`$gh8p2YoR6S(uvGG+b4);jy$kIRF( z?}t76TXnzVnaa5?9|hI($@URzH?aI`_`aF#fMCy^lY-frOP{sopK6(?$=Ip53EyjFS6a(d9U z*;|bT%sUpoEmO?w@|_)ZG3tu>>)hS9`Ys1Nx8XTlwtekVtNIFt@IO;C_p&YiX%zjC z_o>{$gB>4uJ@Y^IRrs&_XC(j1d{)c;rM-;b_l3rWi26RWd9yXF$<>fCj{QJS+8&LM zcetY@7#JFNWv$dmnQUEgprJ)#L$B}TTWZUe<%*iLxVVIGH@|(>%rtjh>b&JoU+aoK z>1OBG?p}F)()-B36Mr-74L&dPeE$4ylkJP&i)XevJo6KDS$gGGe6P8A`Co%;S$Q1} zGD#hY^U_0=x&8)ho)h!+=~X+Uzc2FZcimn$-)2wEmluv5yb^1!NxLsS_I>+twT)A_ z+FTaqhVkpk3pLMdY8KT`ij6Y$OtcvSC7d(wi=F%?jyH<*eBn6jc+9;dl=z1FigH*>^83xNXE!QO>bF(+Di@s_# z<&v>+B~N3q=IOL6>&y(-?lL_hG4UkNnYkRoP19wZM6PGf<6nNbYO}6VsMZXl6D50M z^ZwO0><^4{-2GhR#(J0Kan`%zUmnpB*>`>N(|b2=ho8>v`xYESIcdk+F<-5#T zet!#UOO4MO2f8Skr|@wbG`P+@yvj36?Um94zG+93MLt@}&)>g;ZE8EeyiMJoA0HpH zulC)2({zqS1|}?n2@FDq7w2U^GxpT zS+AeHnKNV81%-njE9!-leqGzX@AZQ1=KB1{Gv_=D+R!y`e*BUtX4(8x+FnLv%eC#x zHh&lFvEWru`kwSH91XnA`Dup>mu=XAUAOhj@(U%UHonDj-8TFG#cVax z_BmTSv(bqmT$S_fGyeVmm-nB$Kl{_!^K~ERAFph9aM@;tr?j#%s@df`#-A;C9^Y7AuQu^KvsFJdcmd@WVJep2zdGdfB#O)Ik3wLh+#_3Uq*e$u+Dwa;Z! z4}D$MJMnsMxaxDOZ+{J0Z06>jvRN$>-X$ZmpsP)Sw|ovTzOP*Tv^ihBTaaMjzxkJJLt)1D+iwlzX7xEmoz`fHN?mp7Ypws0 zGZESEc7^twyqnyU5O!77e`$)S=hnW%3$9*!8^+??BVu#sw87?;%2ip)$(!%mGR0s0 z8Rg0tbCyxL^+03&%uK=OYzl^w&pb5~ih39gcN#Vba=OMXXYZG73&^GbdG|F0qM z=3KZFaX6IJEy<_t{%GK-a=Q#&?8_(?Zu@M919V?)^duYMS$agwv(#}Q=&P8qI-*~g*%Ii$^zB^j_w(Kic^A|dbpQV zuS?wv+uoi#SEk4^Q7LGeX1$>s`-!DD=FGRN4fKj!;+pK! zt+Hh2${9LI6FY)d&(sUl6J(k(bE?w2X~i6h0)ZWlj1w2_Y&j76v|vtO`@^TFXP>vL zmJ(iXez)v$?T3rM8yhTUEPiF{S#;3A=dw(4(PFc;*H$mkhzD&E~*4Ha7 z7D)^+aTWfw!1dY2jwzM%y0whg?vgdUGD+~_nPs!&ZT9^*Z2#w4{U82%)ALgW_0FAR zZr%L$9OIQ9OQB66h2IUu&0X6Lu<~L>be`fzrGFi&PtIrg}sxVV> zf$+<#XP?{I+sn*5U%YZv*NGiIVKJ*(J5KQN=p-lX&g!-U zOVh5dd8IV#d7|FayWi#OzwfU9^6KcHKR3ONN*kiIl)^3sW#8U3YeDmD#fpwM0hS9I z1zHbeZjQ3u_2=D_C;!qrrYh{OO+$`@~RX4|G%AQR$+hKz}AxY?$D7JFB06A zaXee{%&z zo8j%z!|F;m9gfer{`zW6(ahIprajVn?in)S!J|)?L}usp`f$WfmReL%S}L1dV(b(? z(S@VovO$o?&S$Hx`ph_aMdsp_BMprG?TLCzuWY)x#;Icu*WEPLtu5v&#A|GQ{_w^> zx>v6^J%;B1Z*Au4!?iO`osPM@{mrY>!7=-UVt$DVu2ghVaSAL9XDef1HE=)9Ccx`? zca`>zg%T&4W^HWKsmiO^7sGtGB`)6kgZ?Rv1#Aa&l+LcI{_r93WcX);@3r^0^3FQ{ zSS2lXch+vd&{bzX+XyNOUR7eKsV-i#H75T4vpJ0&J{dDpB#s=p)A^$J!U~>Hm*fa2D1>;Jte z+FtejssZ;-LbEq^YMH22T9f-{#w8e_gz%<4S!@twqM29CzE*SW&U z4sG-Qe|b9p@9zJnx9|TPr&;U}W4A6>+U=T=lTV9Al%QkinNFt{$7iwL*f4*o)Qyro zGyU#_I5MZOn24H|KRzJna6)EJn7&Wv4%YS0ZXKzXG#6x4FlKOaS6#tSe?~%3kn@T$ z(~jbkWm5d}ZGXT1XTtONt&Y0NhpaTO4v7nU*X>$hHJdZgz}&#OA@usRpjjf>s!QCa zJii$f^}cL+?CzcS-2(6WUMW7?p%s>LPHSFjRHfGDDK@)2ubVBMV&tu<&dA~I34S%JB<-0;sH*o&XO8-1o8D9O&)Q@%N>Ji^qw^BF(K={{Fi%|JmgW%o0lN z^;bGNc3zL-m?(30&y}5BtC)=SKj*s~JUjCsW3HyMkdl(%%B;0XQG&KD9v(+z1d=Du z5}7^afTJ&mgX@9Ln^#nhwsdG3?pz?wAlWw4F}Y`%RbTLB6?XP7k6&I{mKLeb7r3M( zcX!m<81cZ1J3BYl{wO$Q+<0t<$y{ZDe6y9gx3%iI{2t8u>?88c{CK$jxA%L>C7Ts@ z%v={XcXz1f&L?l*={%p~?P>UIRqS=er4qBYDJv~1`?`I9&A*@b|7jeSvF3fk!X$7( zs*G!4s5yI}L6_i#nUS%ArYr@@=4QqY3S3VV6I_H0nG^Pe?^Z2kHCWOjGH>sXHK+7B zJ0zV;n9bW$>w_k)&b=OMFMCXU^6r(Ej0VNh;m>EE?qi<({+veJiJs6Y3pp3cE;oE` zxKu;Sce2aeiC0`w%mM|Y_qggU?PBK&I@mbt>#~sQ4<8H-cZE;%RVXts@KoIOVnY5E z6SlI|QQbn}E48HREse)R<}2px^xT%-Uz0{*Nw!ytFl$7qrBH*PQStSJxX=D)!n(@%>RmR zpOLYZ<#9&g=Bh6rf8WpE_2uyXzxtbf`{ZUFi=FPdw$WoXYt~$jHA)AT?fi4?`2GHk zlE=d5+y5<`c*^^V%NxB%T@Rk<1vJFUN;WUlz0>46*~=@r{x6r^!}q7|*L}75bM5i= zGjso&vj3Q7`mb+|kf4o@&~0ytGYowlE)Pt)b7yrdTeS5_%%_}g@0eX5qLh_eGEO|_ zms@q_nbHLBtrE#=Cl&AAYkTJ%fAG4kOo<73ObVNrszT4Zo(=Uf6K8Sb={q;&z|p%h zvI1Evqe9mjv9lav^?F$UF3r%5AzSI+X8WJ_(r(|0xi9zbSxoJmG!qU+rRW7ad;h%c zzrWdPaeqSUtanWdJzYO7%UqSd!RDLkbDKjVNm;koy|!`*S-a|$!eyIPT1rZnZTvKg zCdzbLNEr51cKJ>Ta(QLKdsBvEQ^pdv&<sHUj6QSTUMPi ze6lk@f!+A}&L``hRmv3`hGqsWn3A;UNwf$_-Ce$M<^PxZ|L^ndxxM%MxyANn>7nI63=1PqG;=J;QrxmkW!Z@qhK_Rw zJ6P|!Hf!&cUZgzf%B8jE^vn1ql{W4DUw`iCpYH6bk{54Z;XCZOb(ZJK%FTAlQBvQ% zp15{dU*}4jb$UwBW6@_TXB@WSY+!HOcwc$e?*3xS-8BZ!C%@2`cJhv3lJxV;zKKp5 z7cN{VUh69ys(Rh%`KIW#`_6IP-=XuPXvQz=w;xV_E~!8Kq^{fa-?qaS1$n1=s_*bH z&@=Amt*=~Xp!qsttDoLc-^_)|zm*m^J-AmId$~;O^PKMHS*r^yr>8H?&`Ur5&*MbHvM7#aAHOthDDw>vPz$MFx%CWNR#HdGvojlR=FC!K z+|;2np*hHiy-RV&ZJ~ckldP|4ZC$lEZ&pCpj>;}y(X9d7ORW+?<`2F;88EW1*o^^BgHY-xRfi zsE|FYpZ$GVb?W-gFZF&?JIr2-IfjOu2|RpU{y*d4XRm%}GVOkywb^V+;hX;D%`21^ z&r+O~!ssAsUZC*2VEsHUjR)I~DDUx@%BavLAZ1?v=f%mq>bmmZk4nmY79^M+{bBX_ zOOQ5$RYtwk>Zt-TTdpXnW_R%#uGTf(w!=Dpx>m8=-K}qvJbD~Hn+OKgJCp@ay>+Cb z|7xJG%pI9CGKMT|4M|q#j#^5sWNOu~UU+?fop8*H_pc7sKdwxxpPoF^;qiLyEeY?= zy`15_*0|G^hesr%vBa8DY3EFafCp@IytW3tvH0R_|MhRgvsFpY_PkJS)@;}v7ApEB z=;#p%$;Nk~Pp=Ay#Pz2-l$SiHo?f5NICF-Ru#&!MV8GfZR~NGJEV7)j!N+L+tSf3N z&65gru1Y8^oRPXH?dqkcPv5;1KVN!LdHDn<6`#hWp0lgGgSuDE2roAOx*>yAvSSC= zij0mWYH1SAt2uAaNZPP@^XWR99hXf)S=T*UHLrWw1;yiU-^JvVwCC;RT-kPdD~Hn4 zN%hZXZS`C|$9<|+)SVzN&rq!yUJsXa7%#EIq13t1}J{~T=6>1`J_wUuy;=4D0u8&&f!`xFTrsL5t=k*zu0{fl| z&KwH&%r`IkLk6Sxz*nNe5vl9H>*Nqz7#{f3)fYzggLKWX8fx9GynhH|C>{k!?>6feqZ*sj`_W4 z;&dg6F0t)h4|)tArd?gfb?*2_DSOc%A|Vc z&Zw31y2G5yjX08L9$S>ear0PEUS2+Dhm-PF@rjx91UJm;yj_(4{`l?>Q*~Q@pA6q` zw94FnZ?4(>E7R`PeR%&|^!@>scVCwXo)PK1!8;+0t+++Zp96!{N@!pA)xEM2u~-Z4Q# zgRKqAX0>m;zvg^!&g+X&?T6VHL1~XQisyvkZz_Gk*4}ZF-e&dn^YWF7H}lQ9gSHnl*qxT zSo8dF{g;D_-&_8we}2B+%CEewG?1MwxrIULg&>2RZPllrpZ(A4>AOC={qxz+)A~_I z-ezsRcr|sqv&)i2QQaZN>MHEUM+Jh`s!pF&d~c1O*GY!HC5txC-1X2VbFP=+`q0lN zyBBM9JPz1rF}H77(5skiN0m_K1z)RHKUiT*cfqN7D?(tdO zzhWfL?z;cm>+3gfg!B3T(|!J@Z1LCl*^b>U-5lnj#Vrl%pGQi3GD-=2SFLh7pz-tf ze@{ME*T)2E&$=78zhv&W?fS23Wcc*g@)g(Lmd{I-dj9c=+7&kyU*2T`;!4JXc6)Lp zId~)lbh@t|E;Mm8FV{dTMpWG@8t9B7sjYU5%{ zU^H}5N@I6Qh+g(^rlQ`>g41&jdSq6AtJrN>9CAn@DCpKI zkrvg?Cqsf?$mC*C-B*%Z|9WHpSuN|OHMrAa(nLC%2h_~>&tw9 z-17UQ`{u>^*17x7p4oTq62k*&x8?EMO&2syOlq7`C*wtn+r?;-#3t#F6nrjA3h6l4+s(1)JRx zQZJQye07DCk0#DDT-c=Cexh@trAA=U;cYLc@ts&{FSt74ptFU1y{^QYSvIqQA4 z;5);3$K^?Zg;duHwlrhmiK(sq?aT`VHFeJDmn-F1mfgL@!@%6c=#u2{At>EtO4Ra9 zhb=+R)yh^$bn^Hv5eQsscHU}onc^&Kcc*2kZ&Da?Ui572o#-w5?9$?P4l(8_NovOI zJU-n8+6~H#*19YHTwher#kZpCXI@R6RG#0@V;&4A&&Etun6p;@--GD?tFpHzJ?5|f z`M;O9<-pR4%Q?J83ma#22`t`Oq;Rpzp~LS;hlG>Mk*KpgS*C)*8!e|VoOwsTd+ z4YmD~z>vPKToNW}jIc;g_A&+-b=kB|%W!P3Jf8dFAy^^fIy!{bz`=8tYumAu1 zzvUF|Ijv5UXZ7W<%q}_>l|9oqAS201#l4-!!L_C1PAwzD4$H<_GiLZF&)nRUnGzmc zy7++IOOvNxx5<9mGAVCO>Guasv(rwcF5JA*!tiR4h4$NwIexFd&T2UJZ%fqL>61@~ zOERWRej2V+f44uyOnCFM&eU^?tmcdYX?X?$PF^cHUtW-J5L4A)%U7;GYiw-Lyppl# z$qBFh-!Ix%mi$~B^Lzh~)%Dt+_LJqbY+SdnmI(IC}!$!4Qd+Cw|PY z|M36hRg0Tx(sM5M#uyqbysWkMc3Q94%tcY9^W*naEW9~u9WQ(C<(UUx7T8bjjZm#G z-_EahJ5i_j+U>)d&tsl7Ufk{S_us0n1*>Ko-rUvw`fJr@TkHGt>i>P=p7}h#_Q%I} ze{>9%nLP{2y2^S;@I~BRB`O zye1b#S_*J)+}xRad(F1lE-lZjd=D?0ygSlGd;gE;_vLDTJzZWO`}&AS!v>y>j{JRV zlg-bR*ZKFfI;gDb*R#u;J-1oz*!0O-QObg+Z=ZK9sjpEqV|Ca3+%8{}JvlB)uD-dw zTg-38RRK=h1y!OY8-lWW63Z_p+F!rDFjG3s<-pgft803kbCSz#=6q|9UNB?zwyxue zbG&2I&dK`kt#)mR>h5|r$yMdT-maswqraUk*{{kF@#6FP^jmw^ZN3v89cMgi-?_WB zGjDz=P5YL*`Om6vZHhXVTMrfnPT4s>;nTC-^~wTw%lYmrIqiEoC;oh|Thy_`P0Bi( z*+nKY)J**7sNinmZoI}Ta>0(XVdaUXQmWj?wq-6A>|NTiGgQ;V@qOc6K8FsGIJK>U7EkfbD{)O z@#UOp+Dq!QT#lSkogQ@7htc+Y^5lpuENK*kdz2eruKqITbM5~8*!sd)zs4A^RKWubpY0}l zYbv`G8Zckah_iLL%e-LSQ5_FvO^;(XOLpEk`?U9iMBDAt*-0!CmyVvz`~GqFbu`||7d`ppW- z-0Z8%_U=3sJhy+doARVNY~KYQ7M@z}Jac;Kj7?dhCzqY*d6%^=@YT!2r5ikj7Vp?) zzIRvUuG@YsFXX(h7TlN5d;gukLm=VEB$jCH(=|rd^Y{Oq)*7V5iW$F{F|+omE4nQ z4h!bs>fW_RO!T7JZC)jxF7SfMN|XmgIi!tG7j zrhS**?_FpAPwLnlfm6>&{Lsy^tZb zR4QoQ*~2IA&R*BpAb5nMkt6S2LqxQ%3dateu8UG@S{hjvW}LlR)0_1$JD5#9O>CxF z^MV~|OwRQTrn9qEdki}j*&ue6hoLVH1G2Zw^q{EZ498t$)5`upL_Lw5tFdEcKsyr-?Gr0`+!v)%Id zHY+lnuTQVh$hg@0ZtnyJW)=qFvYw;L|G)Q096SCr)ur6xuU_W-U#6cf-W2>%|8U_Y z^X;{ncaw9Nc3t5$Y!Z-_bF})hUw7v{W{O%w%lL|JcIln?#ewR*`rKfy2dK zXQh@os+jA}DO%Y&W2$XJZgAi0;jX!?=>NUN14wkH5@1~j`{ad{{QsZe|S!& zZqmQ^|MKBKcKp*{eXO4U?_T=TW+jsC?pA%NnEBW)Ym>Iv++jRdhVEZ@0=P857gu~I#SMyy~F%5RV#WFqUu2Xh#%J+daJ2zIIWAou!MDotb0#&(E{5o%ij`jCxC9bx-C5 zgH4NfEnKyI*;d`hGXx4_Ut9Djb*h}&rLZVUw*BIk;N#rf2FWY0MQNtqeg9mgQunnS ze@)~2_xukYbp*VLL{%t6CaeR=RRS+J3BVS&!L~s2+Yx~eI^0!Ro)R*4-+#+A^Sfz8ZzkkwZ z7E$J1SAKugDPO`MHHq=e+8m9%d9^h)UwzkZRuKmW=hM<8LhFR2O=Z(Rz@sX9d&=Ia3MqGgx0H?3r#%IUYUlYFcBFu16h;Uc_zJFCG3g%p&;+CS;lsM&X-jpfp*SD)kJ`fUk z@u;otpY$P%bQa~eWx>-pqFX`~4<$=fu6$qj@AdpSeeA`eiP>g;&Y7ol&hR{QS>${7 zOUa*AJK3(jo~^62d*cB%6D2Js=}A_s3X6n~S{#bWzkhH4N##=!QML6mgtlHt`fQ%R zU!|=`XI@4ouR@Hdq;L2_T_IUM{_EGxE#IdcEnUlS;tW4O|Cu9BTXmXd=m|Ns?3@`J zf8VD18xKQN_I3ZfYg_%2ch>%vy31J;DaKHweR@-pOYHOS+owuIXMZne|DLhd)g@NE zaD%Zm?;oFumgRwkbrP&|BXwQs_dh+W;I{v`(l1GC;eKVQnkVrA3>Lq3esR(FWbB{+ z+rjzGXJd74Cmw#qPX#V~{c`nxt@$3fFMj{nk&B^fiS^N+r+*x5xf9&V+^GC#@rABtOhpo;YXOhlWQ{2Ye1TPpD_? z=~S|swJJHtaDvsor(33^uB$DY%@n#;a>rupu-0W|F|QPo)-k?&I6LuHo*qX)=-HCk z=k4v*m#un&Ghgr0yZv^lO5F5dKPQ>HiZ{3HTxs_9cDcift(6kWI^9(ZW@oNGvSVFw z{*>0G(;{s|*%_jynaX5EA1jnPE+gna&&F{@{o`jz+jkp&XZW0vcwmZ7&AjJtr${E= zJFl;2fA8di9ePjq9sLtt|NXtDz>=jpEV?cS9)G=kKjSCU#C7Z38PcZ(g)O>rKk{|6 z37Z(l>O?P@Mg}gS!=GpSbKcxr^ZQ?D?&?-%jkdPStMm8$x@rH9t+Vm<=YF&Eae2{m z8CPzN6jFImzxr&R)3n0lJ!{Xbvf|6!zkm9ajs;V09{hg1c5SZAc1@9szoVzO-aQjL zz0`It-?ObDyLRt?Tj>3{YS#0sQI~h|9X5D!@UEcs3Zd+^4SVF?1yAbk?wsohienlRDQsTWaais3?ZkcGJ{nnKOip zjTAj&OZV(MaX8?$R_EC>XP0G0_^l0fJ&+nHBh}CvRKeL0bZz$P#Mza1AJ_k`kN-cP zZ_2-apZEX#bNe^j@yibzMdsU8AJdWB+P|`c=Vm8oBvW_&%A1V%DMIC**o<-7X>>m>Pm4(WlCkGDdpUY%GFfuxZ&e0 zY;$cYN9Re~mZff`{h6Dqe_nK7I_=u2w9THCI!kq4zpSv?G=W3$_+yb~0md`D=VDEj z7ks~cH`#Dg0n586(O(U$(ciYKd$D| zEV+JnbA?COW~msNGlgU~T+phB&^&tf)h@f8|0I%DtTokr)@$)ASV}NDn~_bxvj4<{ zNiE^+Vk`}uoGBdj54d=kpUpYKd}yMukmH8$XC{l(&X8${$dYb*!sl}5`bXR4+%hg4 zOfy}!8b6ecVU=BUo{^c=uts81fSYHQHrK?@m%GK2l^d9i&ZeqyIku}zVfDX}RU9s6 zBkRSkncJ7W!es+2_w}Zu8Kk?n&iv7zk*Js9_ck6k)hr!|8 zhAE|*tdVj1E9VyJEtTmj_P?IHcGpddKBWcsg7+&b$;7lyY@I!OXR?DDTLXtP6Z@10 zeELis=bnd_t8g(Gzn=fkufCBXjbZ*tX*a=)(;su^=Bt0~kq9$v=nf~8IfsRNO1sMwi#U&1$6BJ6=`L*=qYkw`?9sieK?se3f5NEaEi06|&i$yM*QpMn5 zx|!oy&NHPgQ>H%YdHRXZk~2T5rOJ4XVB))mjq5&}@LW4|W#WdJMl-huSuzLIpWh_i zmMHak@@j1^2ceX#RSWf+4cs}IHV0`3WSx!WT~PPyQ|7cCyZ5i%x<=crCDZzBt0ljV z=Eb|QFF9p?|NU2e|93>tE&Df-2lfOt+`472=fe2l@eKKQ&J$v;#!j@7nHBUbErWr7 zd1>aK|G%#P|E|iKn<>M_6*gbBQtILr3E_H!ncEpyRh}I2d3N@Uq>(~mg2}xe>#fP> zAGsP z+x~y~yuaEq_xRgX1;+~QP|kCeH#`_Be!n}%ETFQ~(SrTv*|Wms(#IFBac^)~5H%}v z#?QNVnd`ZC|K5H3``Rt{@)!=KZI>>(m$Ut_LCw#r;d^&HO_Vr(*1+eT7t8MM*zC7o z&F?$31e|HS>8#)&&|z?AjiiF=iS$MjsRhmz-&gIPE4{iyp{3>C-3SLac{j_8)`Dx6 zmtT>KneHH+b2cKFK}&&Qaq7U&?PVNq?1nev*MgJ(t?u1x{D$CLU2ReXS(v zuq`Y&WrgYC8(FSO=E{o<7#J?-O<+p8mge$?(b6;9)R2)ugEdfM!;=F%Gdh=ZMK>`{ zlwMTKC)c9q|2wkRCv)vt$FNZTqR=fHIMTRmKOgcoEf6U&pDL2bHG?g&$zXMwu9JW; zTZ81{tD88|+GONr)@Mo;7T3D6Oggsp%2_q$EpN^8-Ddi8w@ly4;$RZ|&ELLuC*Rk^ z{|+***c|gF-e_e$XlQU|`sH2gx~=&R-|#Apm(}UF>ia9G zIBCt*s9CGjB;UQ4zjD@bV#2A(Gk04jt+*BQ_U_4dr)#-)+;|t1Vs^%+Ug>*IWuHR< zt9erKA&20v>yBSqcKht*_qD$k8^*5r`oVwyKkWr=XKHyJ1O=WvJ6`(#-$M<}-QwJ= z+-y$n>KyDn9NA6>9h!O6V-0>J6*nII-oCq9clzwr`L#1WmaJH@P{FB#CvV%`oasUO zdie}N3fr%79QBqw-ovr=mO;+?b@S`jUG=WqeK+>*ofu{pxlc8-o~rR{+S}Zb@8j?I zQE=nE-ui1nUYg#K^?x4A3kOC#nd2R)yhvfb%4dNE%G^;h_9OPs1xbVK{ zE{jO-0woJYrGP-uX&gmI3PdmMdUyJz;$+2)B&P!g0_WZ-Jaw>Y*Dki#>0n4>YvIVN zU+8g5FzSx}Q8_`r{%;(0DYl6gQnq|4OoB>0XCf>P`G$8ggf?+}-Ed4pwlFadSW#KAe)49H^k5#p%Xu6b;o-ZVR$Pe?%-AhE z-}Ywhr;nTe{{8oMxAo;L(dE4HaXET=ZdXg~bUkFhv2-lRdbsfH)q@Q)BH1`%pQl=$ z^){~fdUoxEX ztEXhKC2`m1-1@X3cg5Co0uk4~KKhk;bAR)hzO#3>yioVA|M2FdySi=7&wtNfaVPAk zVlhf(GU9)`@V#wxw~KJk zpFbzNyYEicnbdZ|a;}*Fg!Ov!>OQ|+eRXwuX7aB1=~qA8+;Oo!NWZ;iNBx5n9u8+1 zHt2Xa2&$JWGqFcs+jWM!DK<84TGaKeJCeO5C(O91>k^c`>)g|aiSv!vB9a^zq{iLh zWsIx+IyKVUsKjmCs-3&5nfqTBsqgsj<3D?W;OEeLc8|B@D)1dT;lLyJ;OeR7;H4{` z-8hBu|oOknX_w*41^Xg zFPq>qumah?U{QuGZ&y&AK$p$;^cHWGMjpsT1ZF79>)1|RF z$Ncwye(5f6`}5V+>GNy9O?BOIbINw}-HfF+HWRAP9g=ym_3d|lxv1#OcP>tSj&(M2 z*O#t!)lJZyI@zH8`qO1PnI1b{eZBmA{=S-DZ|Z+eK3w>3_WXa7*>}7)c@wwyS6QSN zi_YskcXP{b$DS)Z8hzD6li9Ih?Pnnw&8O-9=Esu@)qAh;RPC-{V(W3eAvID&^y2V3OGEV*iv;aLFo%ZT5FpuU=@_mF?1L|L@}b zT=Q_Quk!Z)>wni)I!tSM?q0R}URU$M8D{@K?f;R_zKe)Iy?Rv}TYILM*Q|bC+p?o~ZFm%vBXde||;_u6dwE}Qh#3$tvy7FYlKYmJT2 zB$cx7i+?|=i#To0rc$}+BUg&HiIGcm|LK>!2bs2|sPWxek(~VXMfF-I69Kht8e6A3 z@+Sv`D?j33XkyqFkj8YtuU%Y`<;7oBM%EjV0>T%9PaS%^=YxZVctF9sy-F?a4lM@m z>q8bgaW>d4nl@|Fmat;K)cV+9ue4)I53|x*Tps%H2|YCBR*;y%92DWaDJt7bvhz-C zQ|Dnv*+)0G<*az4GVjf@w`zA@Jnpv-jIaOvR66^|Yfr*h%)o&~WO~p{4zdl2ZegWfoiM`syy#;ha_)c6rK?PMcXfnWIjf z+**}=NqCyW?j2diT~{p?-?w#3I6M@2!T&k8euM3rcy<&1#SBdBJc5M`rU9Y(3ta{O zoV^|YfA(#Cn+D+v0zRA8Or26z^!d@J_RAHa4=XlSmTK@n;1w3)T)5`-9h*Z>ekIM$ zJUub8;@bDCe!`z^;F=DUbstd`SwbWtJ6|#1tv$W zb&E22zGQ8EmC5&8SzDJ0hDAqSyKJ!ReeM6>e+B0kzbj3$)BSxo*GnevUD)ZQRZ1n5 zTW{waOAYN<@j7anYC}|Tx%_d#MwUHI>`KcfaBSd+;0t`$$mYtHRwVoN#%B2o=NkSL zB)EJyx24ovz)z0v;XB3-pB1-MnvYvv6<|EHmtW=Xti>A&;_Kyt_$xW>&nN8u#dhd! z#}QkBxhtwm*Lq()1kaCx$nPM&wkrq_oe#%dnS(MyxiM1lpkc!?AEl7&WS*W=J`BfZXr9@kl#u_cSwU$^S68iKs6XMv zc#LOV8{^%X@7`t4EH1mc>eiV({fqXPu4jF;>Pp3@FV_EGEw2B!;ojdj;q^D)eBqz} zS2n0%o5_-Sg?VX_Mw25PI9oaRii8>XN{%+2Iq;_8A=?9&$RMq?88&lHy{)M_;n8*R zuqD%i<|e_7l|O&S|L+ZF>3UnrU2x^hjAfZO>U+fJ@B8zmWY65`%1UkQ?0YJHoe>mi zkm(3&X*;+}rT9XC6p;ctA(&oXWMw z$_&bjuDJ$vH53G0?NE3!MW|(_mXP44%(ImY$G6Topv<3B>N_(n)Un}ONu*;&&(f`- zo8I*QF5GNuYjY*z;nnC&%e}w;Y<_-z-4>bt@A;Rnek+*u{BZp|y(Lr1VqTq2pS}C` z_s1H(f8YJxyDHy&w$c1EC%5d3j@&wpHO7DWa)xa?^$zyPxQY3FO8RkT>JVj zuKv^a`xd{B>eZHP{{7|YS(6_1$bFT6(~R@#zcf#G>YQ=^uD!=RnL_iW4tH|Q9KOGf zT9&Cjv&GV|beVF(jMW}xTMg>JU(;YZart{wam*_wOhtVfp^dBw$nmyE%qPnc)fbLzg=zT#Qk;upZ@*B#$nPUQs3BP z$?-Ad-T%w?|L=~H_F8%;!oVrZnAv@OMn_x2hp)Hw>p!0rUp0^Y$BW0OU#~uUTz?m2Iv=1xtg!DW@u3ej@$~f(a z=FHnKO;-OZ+g)wu>vQrI&V%0l!VcifH=lQd%3A*?*L($}(mcf0WBmCvV4zqTe!jP1jPrk2-6pUZCh=d*0v zrS@=_Tw8tNfs8Yc_K8{ZC_J-TdU1B!TFwXm&e~u7`gXT@{9Cix!7eL04_GX_oY+4n zb?4^YcWZX^Z_|jqQ~Nne<>!X#9n~3Lr*Ev&JN9^!&hpFUc9n`tYd+q5KK*h6S&6apLt36}uKMz4EdsX0I4W zDy=|NHk_mB$(nw%pfG&obrQ%zJpkX9l)ax`)~)Ufsp^ zwrF0uOUTtJ?4hQ`TqW7w_0c{*%;*1qy!!9?3E2z0qz*Y84r#o5fQRGk)1&48J}efu z-(|nAuKag?^y=L&kMi&Pt>5t|Z(n`HJq{K{t6AkIZ89d@le=dm$eMdR*H}Fn|)@ zx=!LC%k8@f7iDu!u8~e_P+<)W&c1af>zuQnbH$Y?0Yk&(b2?UBxw^MAr9bV}QoX+g zyKV=GsU4oR z>BkyuU6&gBy6o0W=heO~$`Ahit3RjAz}YEhS(K5*w`2E> zINO~&qWj|Oe!td#fBK!1*>1xFkLSER<05nAmPA=5TL`6_x+LcJc}ZT-uKo3eUoiDfU;X#Z^Eq0apG=u_Vn+M+?fL$v z1B1f0>hJ&cY4LP@yQ-h{FW=7IE;;RLZb&INQ&&fjwzriG-zu*ach_IwmQtD_*}`e8 zI4g60Y{|~B9jjMwOIvmB$%RC7v4?U=@04s`o;YLMS+RoMqSM^CVY2DLbybxmd*)re zU17FxzTsyNfxJYQ=a1Pgde7%jUi3YNO~vg<(6vN~U*~lv-Ep3A=E@nN?w$2JA6Mpa zUWjV!n6hcBR*%55Ynyo1EuESwVG$$D+UORM!OE$4z3NP*#T$Nc@#&EYIkG}$mMg0q zIWVz>!y!83>axcbk~5WiG`5^OuV;QE=T;A!Q-{j!!w)MeD@8r-x=;Dkk=b!!p23Vu zH{Of-N;_N$QgVuR=DF(DF|$Bw66>4(`tIHPYyPE3U5e`MKb^PzFJE5S?2XsHee8a& zFZLt<-=kZB6LZXY@^Wp@toV3xbGl_JPxQ0OxVNv8sw$`U+ zN=|rLf9b)FUIvB+2GC{SCA04DsVm>Px3Xftd(Y|F+A5uo_m~MkYw&P3G8ep=x7~l9 zO|I|NwW}2v4%{u4;=H-$sp4|QpG;D&o2;ifI37@(%+4gx=o(?+cthX*_srRIrnQH8 z?b!S4+2-B5t=YBf5|-U9`1<(%|Ly}HZ{I$@zw&SQg9Y^rj*jU{W&IhtR~9O{JTduu zbpAhiWuvZtm+k-TxhW^O%%&$ZYTBmw{r}FD+s$3p{lVgm_@W~=ZJ+<{zTU!o+%3AJ zXYE#o?FULTpFLb4n2;#4Vr%c?8A7{F3pTSg*z_nTiB~(kU$oZya`g|-;{xm}tQh(Z zFWdS|kR$P-5@$z;aeXr1hpH0B>-+_q_$4IYd#bslS4vHsH~)CQHS>!V*4EvJI<{2z z-4ROOG4F0?*F!(em1YI*#|o}Lb9u4s-NmT0meNcvJ2YE&hMi%0nAlpteDA=P?wOiB z2ZS55Toawri;S5Wc!YSaGch*IR94DRFysC{?NUfK=b6eqJ9bL$tNmJk_Ue|~^3O7T zSS*$-)Nu`nxm{)RYL~<6({=J|^-gcPBY$mCULs$|nK^QDe8=xCT)OAJ{GEr-o*g@D zkR)-eqc*#@KTgnM`Qx!t$hTVdw+^IgG@H|Fmravqp>|IIwRy%irnc3na}U@&YbEx;ctnJpKyF!Px$V$n;z_v3x4Mx zr@o|c&a7=wAu8eBtG@lKyRW0sff&96=@T(x(1?GF374J;=VE{J$0NZepv z%g9>qem+v|_n*`8LTLr*j7nB>zqLPBJWzIhHp8x66+3V5329g9Y+W_A&bP0CS$J6i zdjP+()I8hz#uE)i)!*}C!&4NP1f6=WmBg-M-udY0)3nV~S1m7pA7^}d@^XLuSTon6 zeThlmPcREAeVouaqp0QSoNJqAWN-HJ5bJxM@NLCb)_SLk?LWV8_AZ~Y{WkA>*(xT7 zBXd3-IFokFXVunghbCo695xhQ|7QJbo!Z8l%yMEyJ?^#`ezz0O?*%Zih3oA7Q8OM2<)wU=4U$t|Ze?)hU2pX%r4 z@89`yY1{2T~}F+-r$Rp9dUbV{=L3m6CG7ODc^uU zzW(#s3GMys){FYv|G)aY{=?n=*4DO#Tf?ro#>G9EQgn{N;E7FNW}JWht!YvIj9YG| zxw!L`2b;TlcrH5|lFit2`t)38KFjRvwV5kZci;BBs-mg>rNcb`-qfutEhm{=R#}r3 zU;EW}^;Z97f;q8UyQS{!*~!cN`PO=@J#WLc1z>hz*R7> z#yD3vf42E$-_yG~g2`u6vD>t7GQY`dYO^vol%@tBLiu?|O;=G8}E z-!?ye|DSb(iGH;R`=J9r9`gS`u;9?kEnRnQc2@p<_cgOjknzj1)FX*c7-x4HGzlBm zE9INrPQBZm@@&dw4u)sBy30EZg4_MdzRG=0%#%x>pFN|?ep1v`TYx%k7&SoUv!b->uuaY|5hd zNA4c-ap9H_vYTpFa6g>&tp31}5i#Nt!1!7kv5q{@=yPvuFQq&)@&++jEb3D#9PSm)lo- zeDnQ!)sFrDw>zjVowxi5L!-!)Ig+-2zWrN$J%4|S;}o}*hnt#&8GB_WF0rlOASDJ*!MxWW#gqX1>odQ_j`DHtC3q zi`VW|R9ZU4VB(Yz-Q^Ge{Y#v+?cv48tl2AEgQwmSaw590_1p`lMdcOO&@o=L5nb*6N9vI~Oinw!T`qPNn zjBVRa9kEnTJ5wq1X_@GX)Lg;HWq03sl`^h*o3S-iW!Ch1Wrn9ZXKeZw?{;-LR~b1i zj;FeC#xhPD4R51#$DDn)-_EnCEUN#1OEgg7fMCXE+2CiXtZrufE)InSJq|pH9N!(B z+>6UxQdrE>8C}#1N+)mLb@Afl18#dwYZDqTwCJ&LDz{BsUv~NJ?N%WHx3#T-2POu1 zgybF#n|5>lJ)7d(`pD)7C`L(8r9l>5Zoh|RMb})2KP+8hxG1qUc zSen)MmUmZ#69pL#uRZtq)S>=!a{L_T?GF-9OcR`xAh#s^;PHh%>rL*~RlBX*;a;(z z<>pMEi)%SMZt$zjdz*hzx93ZQ!`ZnrvvcpbW~I$NDW1siDDR1YfR9IgOG|>_GdrF~ za(^F`#$SIdyuG^fLsZKl8sjh&JTJcpn1@B5vuG~MC#|1aMWoxv)Qq<~qWz%|QFjk%0S)S!0@}S}QM%VjJ zC1=$vuS9hpc>TNmvJ=zuPM(?%>&jQWxOub0uKQYLMTbYfiw4USm$X-cFK%4EUF|YG zD{$+SUpJaNnkHS@RllzIZtgO>{+m6`S+UPkci&Z5w41MU`qHM&6Brnb-S`C~TR=G|UQz_c+ z(sFL=Dr2Swk4pwzX%8-BEqmtZ!>DUBsYfu-%QUlP=Y5H@(k8+aQzNY}om+fdVEWcI zkxRC&dZ=@G)0}6P0vo1y`7Ezox3!+*bNlJ#GfQ_)>$nmXS{mEUq288Yc(}AvdEI`i zf69qZ8jIigTs}7Q+xP8JGgrjqv@ermd*%7#=jYe*iyuqZyB>J;>`9Z%0*NCX4|)}t z7i}=%W>MSm>&eglgPRWRUGL+0;N#P?%f)Z^8=T6lzo8$`7p*vl!RGnLr0UA=?`pqR zKB=E``Re6v?TY`~&U6PTvGt4fMRi|uo6&JHO8azdL(}wg+Apq5>M8)Ze0tTFt|e&bfY@2}$?P)*ByvVY`}xN3iH!>LtM@j-p8g z%q$E+uQOH3?)mOge^|OU@0Q{U7Y(152MnpPMd$ABx$XPXDD` zbs}f>+Rl>;Tutf|yAqiD=UH(vGAf;E*&3oEq-I{s?U1ds0WDRXCPc+Q)?Xf0cXg}@;LpVv|65+c8ct+h5hR;aPc$N9*nX)|3t zejW8vNo`6!}`&oA9T9^$V8&}A;<@q-Px0c+>l|RavXa2ISp~3GgpJUd;XU8}ktLke`PvrZ2 z+h!x{k~6=*?zK{Ao8;K%ao}))h3%WN+dnIW5+CMz&D6Yqcc1+Ca^Zwf1$K_Jw=Z7h zydZnwurKG$JzrnME0vUQ{?O%7Kc}Twu01hg+S7;s_MNuy6}`h-sOzTVk@#%E^JRug zK|+a*4hB5tjx0@6K0SS^(!wEk;_m_5Nhfx7{W5$X^~8Ca#;Pp&U$)cizJ0!?F+)>e zlZwj;O-83|QA0+zY&9i@D^aOw-^Ccuw76_tci5sLJ1pv-?o8+C)k-sp`z*NK1?vqs zuLtdVb5&tkW{EjN#C6r@Dn75erYI}%S_a6h4C4?{hvKvGaG`z4D6q%`?obbJt#}XH{&mWN>w9x&Af9cV;JtWagc`LtED@ zkK$5Fh-gtc89se?YHW0NmgynRVhfIw&yu8He6Gn_d;7emI^*_2sl2>69!@^~?Ri=n zf^*u>Zce|QU@!CT?wvD=6NFq{b{JoNmNdP1p8xBe`D`zOxxXaL)HC-lyZ`%N=Og=n z>(>ippR2z#+0Lp^o8LL(*WUMkHm8T{Pb>TJb@hDNQ@?la`MY}lAA8n_NeZnTUP=XZ zo2o&}!n=EB@4h^Je(l%mV(i??f(-V0@BdAo|7XACq@zZ$MMsXA{Ck!EPd7sD*vI~V zKdhbSnTbn(y%7`BpS-X3GoPZKo*v)l&doZ@+tp`hGC7^8XDZpTKRfID@5j5$RL&fp z^4a5v&Td6#&F51XpB-dYRXw@0JCtLizsuUGDn>kq-@g63CyT{MUFrP_rC{#Oa`W@V z<+n72IIkxOhTJXK%-93GE`LK>O zK0YN)C7xOB<*y2q+CJ3ZdgahuY202Y^LkarmU~Fv>73iPY@gXDhM*H28DtVy}vChfuGgop%ZB~gcWy+djV}!b50tX8VqXuQy0HM59f)QT1Yjx{CCkZN@G?{SYuyEVUTP~ijqq4KLG|xl{m9emV zW^hSf)L6Wz@SAhy)eB5sU&Cb0E1xgu;F`i|V4N=`oDjjy;GnobFZ80u)o>ocGADPY z+-*~&%!1g|-A_y^ihX7Bc2(42vu7!R;?i1KoQKYi|{mtEjlt zJAJvrZuo*@f)J~bS^wpzEY6NOLPEB8_OkaE&RLZxx824^A?5!heK~$%Eg>$KI_aVyusAiNho7gOH<~Lcl`fT^zLj} zF?Ua-oZ0JLL6#Y|?~Zjx-P!Bgxiu?$?Ha$96BRaVo#zR8c?Eb0P7F9*xyH9KQ)c-# z9gm1?=7NrT2L6*xe#@7dn4WCr5WYU8BJ*uYRI8+_GlStQDF=q2mR+|^^1N5By4HT) zA$``WR_=ubQP*CrI4i@*cf}7DKfdK(V#i32W0aCCH3 z|BzEGi*IWPIQrJW-?^ej+yQj9OR|<3_9-Xw zC@($2;nA=*LxBCr7D=Op)hnb0)sm)N5w2&v64fw&=}pG=%R()_rb}fU84|OWo>AE& zslJ5eU}KZaQcc0aQ+ZN}mrXJ^FA~d`V{APA@|?Cg9M7LV5pNF4`E0MqqPT0J zTirG=<(N(8Sh%{Q=WxZG{?9^_j1;QZ9Nxj0wN=Eli06yK5uKTb!>=AO>UnGFbW-_c;bM~&4YNo);iSHg>ntyQ;%YkV{q z;|^BdB~def6m7n#RUBHxqWq~KA)7B@j*uYJJpH|EUs=|BOfop5Gv!Uy!`jhZga@i_P?B)W&E=>w;J0vEu9v6cd|!?0rw)Aes{s0d-nKvhGdH++}Zuh zqVMno71oInC+^nySu$RFSRr-Xkh5C%#GUwQhD(=sexVL@d&MjOJ&}y`Jf@SjD}7fjy+Yyy$kGzF(@@mZ&Uot6;x|8w;LsRxbJ%w#!w+ ze*eFJX?rRyY71B7GtM>M#&*y0j*gVqT=~~x8Db}9Fa=+noalU^A@AU{EZ-R%4Y7AF z9PXUhF>Cg2!|ugdAxnDAT07=wD9nqok9~IgeeHAi^>MYGEy1@A6)|zMEmPo6NnkfB zu2(2EU!UE6bL+J$vtCwS?`34VBU>XTC-&^1OwXOvMQ6@%bSO%A%x!CbcO$Cgdy|=a zq8|fG`>rR3(p6v8eq!gY z;~U=>3*PlnRpsY@|H$IK^?kih^Ogy6`km$!ytBA|n$wwDzI*x0l~(T8IC4Ywkley+ z94n8zvpHnHog;g7zOAk1?YXW>b2Rqu{cFXq%y7kkKa}^-6pq)Q>{315s!AMhe_A%z z>zGzi6SFo z?$bVU20S~jDAjwsn;Nuz0Vfw@f%{JuLk89a3A z9lOG5%cm+WwJn_u$9k;YTe=c&pXF%TYRYm#v($0^%+|*n1pPu@uaeu{J=b#XwWrhf z|4NE)C^Fz;nPqLv*EGA(Cvt&y*Z0pq*SQ`z^w{Fsvg13&gr>}?Z)Z$G6_5q(_YrO$QF%HCh;$Fk{=&`!08RZ(1@MH(s6~q)-(hbwt*E z->-kC?Ng-W{L0tguU%(otTd_8V$o9@pT|ev*Z$wV|Ho7PkmNg0#P#RZe}4Nmb7ryJ z=7iWZ!^H|5`M2hKX_zo9n8sEw;IieKn4s@$)4jX)^e`m76I-&OpuKTI=foBK-@RvE z4>}~{@cW+Bu8n2~?%K7;yJ}d>%3_UP5W8=W<-YpEv03E%Uo&2 zZ=18ko;!6q$T!K!c^-_Mv?{M{@-(^O%LH8re*F3gs-m6z-6tj5weT+`E?C@B@Z>f8_X5;Rj12#VYx7Yu@U;qB+ z(W7NS9~_cTKJ@4*&$qL;-IH|g2t!=k$DPq)JJcht-HeXBmg<_p^6%;M`ES2-mvVC| z8J63s1T`7(s|Xc;;3y5g%-AYnYx8tUu^fAS%yhd`mkLjGym;7=A;_3m7b)tex@>(#8Zd(-QPZ8ae1>b@z9iFr6qHs8kAeqA{izGO_Dk0 z@L&O7RlUvIy-zO}y*jP#AbjkCf`G+smP3qpL>VkRRIY@nbvR6FnZYncLa;;e?KXY; z+MmmN4nO_%%wm7MmobOnYfHAn7H`Y^1&kgyu(bU7b=JJ`Z9z@Nw4YgA%#8+}2He8+UuQ15DI>z?CU-<;?>glj zSu>22C*|;^9bFSO=~bY2>j4+fmLC_bI5;|b(nU-c&0K2oB|XkY?N~{0*Zj$6Z=S9C z8+er?;o&u}wWiM-C&cicZ_Gbkw%e7(xU{_^;<^!!^K}`4!gHCi;pOv}t=y_qBUV?o zAo#n$cjdc+QUcFIg6oaFCw{cy`7}jHQA|p=W*KF4xopq9EZ0OMa z6{2}gQRHD-pjYHI)sGM46pm=80!80z`beDKs*lw35);Q@%{T1ee=chX| z9I+5S*2$q86Fbp@;jpP{+vfys8zn(+ughB^p9jxRo4xH{&{xqsznyEm7bpjvy8U{& zv|qe}89R#$_m={vqNHvI2aD>P3=ECD@69-(_M<>EE0B|BOs7 z?$FZW_CMU4LhlpGh9hpTB*3`1;aLmlGUrd6yjd zA9dUM{0!Rrh`(1(n+ZB%Hgyyl)<9TKE^Q?0(>K;BKgI==R&W=2O3z%shQ}TD?oi+F5_Q_y3sQZoc2CBs|sa z5Z~mZmlNwtH{XnXbMLj)hb?CRe@qsS|MMyQaoUPoey^>S?CiFzP@OePDOi9}SkBLw zL4D!x-_09Tg(j&S$(qW+xMxc0tZi~(udA%)vN3Y{c>2^zsrziY{c!eoZ~d3=?0Oc@ z+P*C9T5HAMn>;K>>TUP%+MGEPgkm|Hql*PEu!F}HtTuh+0~XtLPAW5{q7D;9Pa5VN=k1Iez}`<>+ zrFJs^6W>=j6q<=?Nn;_QYZDrn_iMgO(7Cxm#Vd<31224k`->-Xp z(d5u-CZ|VNEE{5ZE?snIIKuJpm`lBq5XYIDHUbk`4V1v@`H z45+tD$zk3V={>`Dwza{=U4cnlDgJ4^%oZyA%q+T}gI-(7`@8Wdm2ZFFa=cMJd--d1 zX@~VoRi}L~Z&%D0aN25FqLJ9*e9GB{;nvZ-M^hL+iL=0_V#*@ z1I0Yuatj|bPB{{Fu|UaEj^BvyfRoCc-sWZjPUc53R@yD>s(WfH-Z$i~eeyueJ9pE% z<4+UT7MLulPk6P{p;qnvv(-&!*>DPfi|EPELz%=o=!=9wdhXD!Nn{pze7dz*vcwbGDA4i_aO z-(UqLewRrqh8L~ofBRmZ$LA<$m$%HO$8E^7R&AeOeimon`dY&J+u)z4zvfr|e9p`MvSA_xvqk~tJMv9e~m#^17)2qazRG6f; zz))RcWMaE4Op24!adJz&{r{u(9ZL*3UF9x6dBIU;7lCoGX5|ijCvP4PK$ZQ<9A~42^3{-4{0~tXVos zijl*Z!BE|_{K=zf%O1Y{{XNn`$z^MugXot}UlSk4Wxs6HeRpN~Vh)EBXCxTk9c&Tw z(5dg3AheOE_L-+k`e{W4LB@rqvd7Q3uxy!m%4n^j4U`s4YwNk3#_%L)wa2Qh zPv$IFoEf^rV(v53#3@HO1&z) z_T8`Xe?Hfj=A8cjC;Y$LWZh+F7*#j_TBgXzy1)ED{g2HGE3Ppz?%w=;}N2 zmoU~xZ+3X{!d{Qj(DLh-qPK;{ue%;N2;{DHs`&h*NM`#BE(VS^5hbT4w!mv!w?=tc zKEK7z;=~@pW+5o7?C@mH?=q3!jm|s*oI-`Tv|5{AYW+CTLgFxF-qQ*InrR`(Ku6~vFX6EIn1JyM6GYtv@|3NBpH~iIZd$td-#8r#QOVp z>b`#8|D*qG_o8AU#=Nzz8g2!Tu9*aM&)x7N=345;XMLQ98>*FzHg9e4sJwHfysWzV z`^)3^|9_f&KD&N4|L@aJyGAZ*`-ZEany>)+mBmExCGf0sUemW&{ z&z&t*MRTL)=S#-L+5G%=_4*Ah+moM~#DSS(^tLoYkD0tt@P$QJ*#80JA=en1cYw!I6rbJ ziQ-=DSde`yHrgg9uI~N!`StbnHgiknJ-_@hZ{Gdsm)9;>z4OV(+xhwb*Z-gX|M>Fx zHAc%a^`>@k{9gHz*<0ZdLxLaUBS((7Eh}%;#B?Zdw{DNRp6BGR^!LjOEp<+Yw6txH zYPBye=G9Rwe>mx-vJ?9P{Z54y`96#s2Lzp6TsQ=;IEM|8ZXAtNNEF z)eX#T%>u?rn@e}k^jjW$N}%J}3{6HghQ7`6XJsZZ9zNezsCIDQX{MA{O4T;rO9hk} zn4?&guCEHeyxIO|^Z!dtb>Dv0TV07(XK0&PX1;rQ$CfGWJ8dTXNW8nAw{N-i<(a|? zoGd{Gq1`8rJXq&ZSYGk@*X`|ZGUo`TJ#E}tzqO7%U26a5i|P-Y8_s{uy!!Z4g8i?L z@_TFlPt(}<=j`N#w|>$`g8`qbEIUmNAx5??5F*{JY+|FB7})kv64 zJ=B!lyzXQDqsfmSE_rr&g5B>=;X-MbErd=Qt$!|>vY?GkuU5PMo5z60kfe`PBc#^F0zw4(94&{I3sW zHuME9qUQtBxt_busU$sH-iaL9V-RZiq~9?3RZhoaL71+wSUgU19uN!{Jk}3fj7Gym|xodr{bCT2d_v`%|c76XIgcl8hkwne2`t}QFKKYMN{!7!6oPe-OMt!VD& z2+qhOdl?zJXFT5j^Z%dq^?5&@oV?7zXW}B?e(}s5DIwz{7QBLdezP;J=RZr0m6MZ; z%5IxzFk#nH6NRQZcbX;6+q^h;=m>)v4}U>YQ^V=AlM8o8zxus_&A@Zl9lzj7EUF3` zHfEQv&j0i8e_ur1*Q@8R?XJ(-@b8OwedoNH+816e<2YlnsXu(WK66T5x$3ui#=O8e zOdCuS97D2Ch_o@3Y~A~Fv;Cj^JC_r8{{0>QpZ~C{&+WJR^*_5`tDC>SH_iUfNBO;# z|Buy(Nlv^pyS!S|CI6L3;fm8jVwop&=4}$#e8ED%DM}?3_h0a zo|+hN;BgekM3usKE_q=J3Y@D#S2H|SY_4ZyU~O3PGQ@xL&fs;cHl0-|(mFo>|DR&Z zx7qiPnP2@N@kxT=omA|Q)1$~b)_@dD{bMkMvtb%hf)U_<~lsNHfy&vH*e+} z$JLroKdTt4_9ytI#d*CnYS?wnq3HD;^)3c(_YnKfpYGmmJoiI-qK@aUG&X_frG?oK zpU17ttj`SF^;LFH^|BL(IdeAOKKuK2)N6xN27IY@Y~_M2ncD5Orm9>4soyU;OkAw{ zTW8PhSerNBZ8J^wG(T^VoN<`_0%YTUM9}p7dmg=z56HRI)Ak?$EvFWE8~4O-h887Z~WDhw`uydV~XxB#m+5f zoK$YTx%)fW@9^^bdv(5UxyIbEa_YL1ao5EXmu^Ws_2kC1NfB+CyKkS>G+x+ZTFU>x zr75#R?C)Atl^2UwaBu}1cQ9}nd0G5BDgU?o?sEG-yX$}P=ijg27XSYLW&3~CX{$ck zEzdYx*>Zr3>F}1D^3Sf-Gp*cLUvYHevA`L!NljBGvL5Q1Cy*(#ZTH=Gv#-a$)iVy*Q&IW3?*FVw@o$bjy(^cY z^UUcElkFllc9unJUOky{{E4f#=3E)CI~^GwT00dSX7cBmdP^O1IA)~(&MLRQZ4R5* zO`pqWznTVS`K~t0*5kM-*!lDS=_~cR(VJ3V&b%Q|>?iJ>D{Iwv=FH?xn^;ygyvj4# zb@77q<6V3n0l#l8tJ!f^KDqwalaKx1zW=@ZjgLWQk>z*ih#tWeGghRh zJfF2}?o)Ql(wpmlq@_9$4+u8$X^q9_ADlY8uRk~~< zIiX|Ltj~TfGh?nfomiIkg)!FneE42vc^jdyg|nEsmQIfN^rIcc~qlbFmgDP3vy{SRDTflf}xKWCi^v0uV5 z$JyZGp(i{F;=xyyI8TU}9=4FN4zRS&Z%TFx)=a+jfB(O)|Lh8mZZf=v4+TJu=?Be1unpDnc`P}GRq20rCi~=g{E=fyn z9&lJ7_Mzim*Jh>QXOoupckZxIYxwuqxBUp0*ky+Rk5I3frG|<-j&7PNaIfcb?RN3= z$Ls1XWY(?E-?|`sdY;{(s`u%o$~6ry&+RMXWvp-FFBYkO=6b#K?aj07Mk@av$ePSi zJ-{#_n5n_@kx$!PfA3YN-iXv)SfVJkXxdEq#lBAkFa9=2U+|SZ=24D#*v7)1oi!CY z%9{?hU%PTAHLdK2Vo-X@GQKMuonF%-xD*VMV#70D1>F2;A!=wG5MLQKMf0g$qh;^o zqQLj>xdJuoRcEFt1!!w^wVd0zh&6q4=Q(E45}BHeU>R1gGo3!R%`ap&U76#~B4*4G zqa&vJJaf*R`Pqe^mjq6%jQd|RLE_Jb|8v?yjSoI&Uf{qZX>agh22ami{h%O04X1OW zCuf{GeAtfVx?VHa5~0j<>AMx=r`bk$F}4I1xh1qO6Dek!S)X)9&7gi-#|+s_O`T58 z*UMfV7c4pVQJ`bex$?N=q)>+T`j6%H%kt}-Lzg9}ybzgi&@zA449=~38m-@I--TVB zbW(5w6T?i)Af|SnWeHE~zJIHD+>35zdmi!Fe zzFn&E(%)~sK81NFEzY-aIG;&KTQ)Q4+@eXHADfSH23%bwU?RQ3%Dlc?vEE^d5%1wM z%BIf7GcLc_yrqzD@wrU#2Aj(+6FWMcpE`@Wq@MeGLQ9~zn|aG z@i|*u=-Sj`yECTTO7`p=UK8hh`g3SzH-m*k$N`I`Hc!rOO8d5IhKnedf^zUox00Pt zG?()Ux-5FtAaKx1DN)a(>BKSy7p^7s%jBosIO4)(@V__7Zy{gislyhmP6;-0?XGWM z&uUT*FrBDXAaneIGsnESvu~@fvbw!LebKo!hW`>fQa^9Z&zm4H@t?rt8S_6ZUBSIM zar#6V35lA7;?AIRY!93ZmY%q?&O>vjK$Z&h}kQOP&q zq9pTVeuw3k4#ve*Eb1?DXm~A={h-adXpLhOYoV# zHS3rd#16)Mvgy;;;&9-Y*TKp7lbuDwOHkOIV~DBm&KZK6`AsLDF7)Dj7E&u1 zdXz(H$+|--k1p8n+`;uL!$R%**X!}J{q0YSDhmrA&f!*UdBDKoIJf)^&w*9XPB1rg zKArP@w{y=$4#xV*ed@P!UW6u>wfLzh3b9X5PCImT(ahI>J&b3!d0$-Qx^+oNk)F#6 z<4-!?D_)5_e#4{d`s|W#XlR}BDIXBIiTud1h7@UHPx$m`? zR?GCAOTHV@#_(n?|0LC=H%xL3CzjNFeB$2zcuMz^kZrsF{`7omTd#Y|efQnE{nqck z*Xn5ni-{!0BccBo6=FkiNzd8Y_z*( z?|LLr?O-4r$aygH+$tkK<}kkcuB!KQ%aaU}Ws_&c)qHw#bMj_?`^rG}sOvkj0=iW+ zgV)S(-h3lxJA2agE8P;_K0niT@0C5Z|IhjQ-af{)Pd2TaKgC4Cm!qqX;XtGJ%^Tqz zTs;{xJ$V}^1RC~rHb&iVNV@3Z*tnUoSztE%T=nxz4M~y3T1m%DSNy)&U-z}UzuxRg z>R*rlSLgrde$K#fu`qc1@!R)`@4nt~zg&Br_JYZ2PiJ0ll&tLwERsC7?n$EB`pL>6 z$|k1Ts!R*ME4CQ8FBf$PEt+GLaME&V&x$kWHl1h}uTWrc?_uc3X)E48g;|VI_4e1l zpNdK~s@u;9?fdcO`xn<>BdZICI1WDidGl0ty?L_h^9&7%X)yvKjN5O|T_v?p^2wY| z84ZEWos6|J7FfOSm>40}T_q=dXwu&GAqvN)Ojhcx60L_)_{`6?^Of{b@5aYwyczj>H?zGwvK|#?ZcDF2s1xl&Q zZ2o>YWWE1m*3Sni=g#yz&|9ZBZ~vbc>;J#f-{N!hfbjH19cgcz9ZuV)e4NVZ?b&HC z-D2?`9|6wQ7X*H4nW!&cUHHOx!UgF|CcUeE_Wyfv-T&OH2dYQ+E?qR)`*M@Lz}}h< zaY^;NinJyzyM1kUTglfYdmkMA|LJ=D+q2CRR#yM}cwXO6|6Td|{Z-#5@7kwofAwZ} zlF5^|ci+ujC?vQ^`19(cE5#BN-aq;EZELa5J!`j#p9-qOTYnW;q?``Av`;?lG&i$4 zLrY53p3hU)|N1y%vfO_8dVX~gqfn<)!HjAuB7rF-9u2dK9mQj=hP#2<{f!a}%Jp5d*PFWhWZuP7u4-HZ^J5;nd zzI-UCxqH7c@l0mlDS=8&<7eS93Bf@Ht2pGfrhjPGap2|kk(@avT*1?J6Jv^lk?`gR zH)g)#&j_B`zG_x-&qkH_)-IMV4q>JG0L|8!SG#HxIwo-2lz*Nxduz>4=Q$EKyS;cB z@3x237A#t(Wy8JMWbwk}bCpa9f-6_e(%i9Z=CPF-ih4dKycZYpAM_7SX}|lh!^3iF zrdIpid)5w}^PDo+Tvjz{Px3cAtz}{2%H;mQsh7vcQT_Yp^Z!4Xef;}yw$kCkJ+W(6 zE7tRB$tSV7ax?zm7uOe44QAYWYyCX?e>UFxZr6&gWp>%h#KDoGq;cfg{J6TLkp1`T zzkd6+HPFpiP-V%!>K~i;|A{y6UM{mK{#)tOD<3}n`FQv2T<#xFE^gl4{(JT1{_Q)zRB+98ow(# zOD~n)opUT;?#w)n6~Rt~dS0m4&fed|U$TTx|b0zHhov?yOVH$>(sT;mU?H z1=%j9%|^|B3syPR>m*Gp(#v}Hn@t$$Z+B3sV>G_8~Z)v zcsS;YDVHR$$cM=vanbtZJeQ+G!XZcOMTgLYbpLs~?qSW z=6NiUtYl(b>a+Db#|4wp&`Jq4rw~E4_gV4nT!IZguA#gHptz+y2bi#g^~-IL-++G;&Iq`9^ac*WBJ4Y&g3)Ga_hK z#9qteNBTCbi)MLV`!;6kV$VXKdY@yS8(bWkmlR_kc$M%gL2X@J;paz_ zr|)0Eclh0hyBc@P^Z)-kd-uIS;=4O%&iYS&B+xC%uzFGBjK=TX)6ds8r6uorDK95- z_WHpdpMxT2SUh)c^&-!GT z1lxE0)BnYDN`k{fQJT4s;fv+61kbCBUY&jDD0N=s-S_stH}3AOKHkytN=|No?p;qg zkXHJZ^B{Y;&))ARa@>-vj#?c3^Px=p&=VKqS%Ox}(^j1{^q%Otc^YGTa*U4D5u>lW zCm9La;>SVI%@FK&fDy%bZEnHA+c{I^)T8D&FYQ(M3+j3s-l#E3W3LQ0hp6Otq zkZzD%DP!!(SYP5Nz@szW<;;dd1Y}jOSDVPaH`VQ^+}q!!g?2)7pChJ&%Sq{Ysb%n?HmV!eKbY+yJN;4>-`qia(s_XLi+gHZFgSVkbmn{(%x6U?^=|4CeN6@k|SB>XikUVhHE@a zJ#==itGV89CAaMD?!|8wWEy!WhI{!KUFFUXnW;G|@Zu^iw+YMVB=J4CzkG|m?an`E@BdHR91*3pfK^sRbHa+Ut)CSOr|e_sT7L6MYhS>bImN2t zzYmJWyA+>tU|8UC#AEf}b7lajY>f~JDmz{7`v7)U|gTo_3wg31!4==S-FM`7+=B#k(a0~sg z%3~jscBIeZMXS4REtCPBO`>Y%kwki9)(@}FQr!7=yY>9ub;8S!;h(D`}X{Q zZ@(=pIuqADqbc(wU-R?Ue5sSJf6QJ_SUW>hIK_$OGvif*itAfCRjclq-~PF7q7@z z(q;BP_}c1gmF^yWverSt?kY-_;>L51h46R>Duo}pvf-1c@`6{3R>`jZp40H+kI$)z zi~j!D@OuC6FOx4nEHIWe?0263A|7{(T;na($DRo=~m-`0ib`ZZ&&h;OnD5 zKmEMyp0L4QX4~$$N0J@QQiLP&r`c5m7_^?M7F0HHb6I@g;o-2JiaBk|?inyn6c7th z5IBEtca-2!h3PYbZs|;C&`8h=IeX~2&Y6Z~FDoo~qO(|P+5Rl3W>W~b62ifIMrQl` z{eNm5e*J#`@3LO}=4^lS<@I+rigzyVOP*Hdd8VaHs+(b7#lJs4FUw2ci2wI2{_vfg zBAuod9s|uqn#~Qt{ZDR${xx|Ta^iqu&F`<*bMG$GIC$OgscZ1|lmeNH9TQwkpI;2H zzalijTkDkBWfsBo8S;jUKlhwayy9cBywB&Twf**!>4C@Fz24qgV;rLEv0z%{xm5_ zrcQ#+LYrsigkE^Ld-ioZ8_U?MN7x!Pr`L6~#cX0oD>N#JZdY=hXSZ+4l(ssBvU|!6 zvV5_DAMU6b%1bTc@ltDe;@iD)>Lh+Syj@O<0p(0}}K*4I0`v+5<@egAuR;qJZFD=bVEzx)lE z6q1)bYx7Db(aBSeu&h!iv*nS7rM*il~_%Pg|}y zEyzZA@upcGX)11MiVm4s%U8MZ81eJmxW0Pw*~=zfZf>7fUtJvk=SjcK&i_BA*Z+V0 z_unm!%PB5AZRalRewI_aG0Tr7pz^K^#i}S%$x9BBG%hJ{yxo23R z^yYZr(T186Q_J<12ma??!rU-*lB-DL-f|D)diKe491YK|y#7dbL)Wx9Ta}Jp3JG1H z)%&vBzuta{c&vTb$-9TQ?zXtUVCC7x3oAdZTwrs*I`fpEV31EkNRZ*<%u{w1my;IE zJ7_H)72kR*{9yT?-TM1g1x;K_RGXaynKdQc3-3+U;gHxPuDfti0K2@5(vd0iZSGzP zjjrbBF??2Ec&2Mc>M@qd$#MGr<;gvUN9$tNUU!MPS~`nOGi$-=qn8R}H?bNe2~AzL z(q#7>G2|`^k$#KkBo6_2EX~< zzEC=-N9d2tA^v+Gi>~%vK3Bhy-89rg>H78S>sIn+oRW0evsh!|VvSqxDts(;XR#(I zmR!CdI8oW?HGLdFzU=mW1{P*kq|KP*jK}nrS*?O)q1zApf zEC&{{E1NQhT>SFtu6gQ-CBxCsoxkECb6~T7-+LRmoRErv7$j^(kY+k0fHCj zESAhV$IzOVsBir5fzE8hEymeT59gdwIp$(k`Gw7)kN0Zm!@plmuOBqBy{ohT#~0Pj z+OzK6-B*+`Q$S$lfj|2iGS8W;oOS5q4eRIizV;?zIeKd(1OlJleOBVSphY3;=%b>W z`zk(F1e&(26S0v~XVqP_h~t&d0m0DF6{{DhotyZbC8I%LPrRO(tHN>>&PO4eW;8C7 zSsh^cY#Ensd@q0W)ENC~hb2N!&l2Zy^T-f!ntSX-%Tkw1A5O>rd-Zqr_T6vyMH)y7 zugbPj60BENda`Eq*G$3Qn-iw3-?w|-CC~|X*L|0Y&W^f1wbs1UP|V<^{HtZI%Z@~a zEG(LRwMd4YRZp_BKxl>5_3!L)jeH^DG8X@yd|sVwf9KBO3z}le{SRze=O616SYEhd zPWi&3V_`iFCnl~svtH~>j7$0f!v^6q9X85w0)ig19LlfPujh}>n7t}@_O4Y;i@P@m zpG@B9!?Gxd{q#<5y@CbD0?&S(d|Fu5+%Nc4tAW6x?=M!Q6%}qul$esWIVe0dSYL*# zkWshg)EZuP_5`&^Aq^!JqbHINpLqB(HqN;9^wp~`KOY~L|9<)5Z1Z}*bqY!viWQpI zmhXOjd%Mn&dkuxVcmJ*L-v5*T^tO`*9AfXC8g6x^dbll{vcLX+wD7j|Z=U2>EM&M>~64y`c7%^ZRpsV zVw^jBSJXB|3nzmU3pg2%_GsC&ch0k|%qdQsG`FBlDIrT~`E1^5CxiDh9Xc!a<(`?U ztmLJ|AaPvq>U5O`wi)OBZa=6!+Oul%>kG2X-~O$b%zaU^zOLN%U-$o)@wtB2;%myz zF&r(}9Cssa>)w6${FBQs>xWw$xx>#as3%q`bNYs>=Eud;?RV|mw=$z~rcImp{Jl3W z$@VlGO>3z2iGG#(axVX>rKc;;azAGl^jZ0s$xu!fM4f?J9`|y*iEaS@vB6_^as^{58Dsug_+}34%cWqo|2Ze<8GnPb! zEok)8oBF*YYByKUG}Hdh_LSMG)*>dWUtgQ-d${i2v?-GWFK%RaKUW>d>$6eb=h@s< zT#pJny1KufT>Sa-@(t>NSCkr?%inH39&d8?Wq#fF=@;|PaBk8(VIbSrZd)oBt8RQY;B~HdIcjx9E>xgMN6k2Wx?t`%|Fi#J9${(l&{*X%@1XMT zWm&JXCKk#3R!;fJnDM_kLhhtP(K&;~E9yg!GRRmzUoqqFgY}Z$L44g;XPx-^_(%S~ zH~$wKUI{(T$iw|V{@?lfo+rB#jTXFJC;V5yWzC-HNs(LvQd$OFQ?dfDuGX5oVl#_s zkma)?^B(iN|Lz_>TeMZK@2?5ZUy=5Rq%&cU*3_)kiVuBaV`bzJDypJXvMj;r@|5M8 zewS4u>(gd^%DSuL|7w?_ZsnVAEGuu{w{D6Nn!)y-@xV_5U%^J#rFpAoC>iR7WsClr z|4;t^X0csWTMGS7X7EWHeCAnTl**96l9p7ad2n@jd;b2qub=hjRkArv55D8~@#yH`sCwoQq9kx)dt>0aHgLgasZ_VxoVO57!;@K(wecqm1zvspt zFPvcV^TFI?0Y$Cu)cU{u|DVXm$HjfQD{$P?t26VI=BlPer&kq+&6{yx&8nsuS~u3c z=SoVf+xwb7*iPox-MZf!c1wN|bClib@OJa@`TDQAowr-}Rj-;LDKlA2HAwX#*WB!R zbLwk$R?SP@Wxua8)5s<5%Q;K;2BXtLs^V<0P-~yiZMjR&#UR^e5R|XBS1Ty*B&n%c4Rdr?<6FWzN6cZzNi(9p-TQZs zS@67^ky5aA=i5S&my8QImZD|C+W+uY+huGrW9?}q>3 z2}?VeKVNOSY~r=KVxPst!lE-fRTwPnW2>G|xZ%U`Y{&H)o&U|S-SWp*xJBdBJwl`3 z7d`8GH7jV-vGC)0F&f)amcM>hcspcjw$}1RHy6wfviGSEzEb{PewW?xMK`%-F8##F zAUA83h~%#q7Zyj#xG}6~QdWB&&gSs!cSeiI_K$V?9buN%*4CjDcay`KA7;I!`VK+cKGTrBICraWg_G@a@C_59O{Qb(t- zF(`*PH1dlVO*=Fx(3PvrKmO07q|Z+-yx(8<`RVMJrV|t_&)=J9(p${8YFXhrxnG4R z+^5Eba+~P{r#U;#>O65~Ps~=238#15zS|_W=q5kE*3u5ciJa$_W_iBaQy;%B%DA_1 zR<~nlaC4)U(i6#wX8Q|l-BG7@Mleojnzn;W{j~GEV}JEpwsEeN6cA<*wl*pG%M;6Q z*WJV6Srz~D@fLrhqjr-QZxT*9r7C+o&L_6u%?jzNP=<$JUj=dR+r9JSncc}X8@c-C zcCN_KliZ**uej&jnSwY)sSE685-aMvv^WwNg-+kQm?f$8{-}_MbJ8&bzg@LE`uz3u z&YLY)e|~)5{#`b*%T4+gw>_A<`c>9`dxPXtJ4GA{PKSE0(R3|iF>&{QKKB)S)y^AF zY_eHSIwkne%keYQd%iEPc7?5$f9&6@hGm&jyPH+g6N3AfJz~zfxN!ciS`+spGg0_#s&R2=VK{rU5cZ`Dp6l@-_b-kPK1E$`dPlYDu>$Izxwyx{QLFw)^Fq=)h9OGDcsk6*X-+W zBfBGyzy5P%`mT9Y@_;}T-`S0`eLg(h?C<#U_w{($?{~xNzyE!HKF-d5|Ai@Y%V(dR zCBY$>IBm`uXW1~;wEVV>PYyr4@x4~F>7IFa+Rin5+_yTNTiK{6-uT^o`|rA2vbzd9 zy32OPY{^R98!6Mj`@ta#AK$x8^^UhqG>=YsWWXc-JiT9Tu5~!a|ASts3%QK<&gbA! zdA5=-x2wwH%W`q`e);)fDoHC>N}7KD^knt-+m9vEPbfFM=KH(YeR_9lZPBjC^=3;C zTvk6{_j`N%rssFdywke3mEDVtv)#S#cHhzs&hBjsN@HgqvUqxTUH3*GreM8k-ZPWx z-?)_}?uX)X%Jm&(d0 zH_l=V)^ZJ*F*muNP3us^-&gMSpFaIuuKE0MLHe|-EOVt!zOkIOG~1)cc+<2<(K+SI z^xRe-R`RO({O$JR4eFaFU!HtwYLUx8~1TN6T4LN z+}wNTk;s>p^}dG7`CE5eGW=KE`qw!u@(nw;!Y!N0L37om51iS&>6+#9J^8mnFK=OE zHDP|p5YeVMyjZ&ohaV->$-1`m%`#g5&wNo!W` z%F8NyKee|-mAfotgESlJXMbf&lj(WJ|BESr znK{KkX88?%%jZVo9v2OTp3ewheXYiBN}bLuFO5~nGUea5|2EpVeuKyLsq6PwmzS0n z61Q%4Rh-y41@2kY127+AxUo8JWZDS`+oiVdVGG(uYdn`HSFJO zEBCE%XPm5G=9{Z?er{V;yI21G_VV(eJO1^5s_&QG&+`i}|GifrM{j-K?Rk^-?yub) z^P%YFtX)=-=5HD#H$`f`nrTy|#O2p5W51K@{Q3AJfBvk_U)SBHnI3L^SV_P;YFVO@>gns_>UY~@9@o>=+Wz`i``?9u zvFoRaRGjl$5!F+_fJ@6VUGf-<3#+5x;#9%Ob9Pzm+kIQT*LlvaDaTVXJ5)tovL|hI ziqo9NloVh8``xFD&;G25UGJ|lee>j{E33c%Gh03*c;&RWKO=YFe$N-R>*0&lTxlMP zf1Iy!o^5Hkz!A{JF~RrohN#ehkR>~Iu_?D-skq0d`8?@CVn?XxtAL==%Y{2vd0(ot z&^Td!zpmS-^tKA~p|m$||Gm3gcw=tNnsec=AJ@%jJG7%?<(}%|$;F+9R>xPTef@U! zuO-{IBTs&N{#vR3v~Fj{^lsPa@Ykuk<8mfD-}kPMy^{O&UB&LGZO&WP->W-)aIM+w zm`8clz8PEB%kEspcXx|6>n-1cIz8VrJQ9vteGAskUKJJ4dOGdq(I}sPuipPp4mM>H zHfB(?)NpO=IKwC*X#6;b!}wuoZPlilDU&x;Dlm?W^VNTyLU?t+fA*# zdo9@S%)YE>hWdGJ2aO`8@R-R9_qa0ru?fxN!>bP;a$$M*>B&v~ zeLtK-j{pDj|4aMnr#H>-*WCWv{$(d!B}Kd`xTE=8qFvnIj&E1R|G(eo+ti;*2#sY_vJ|-zn7Uj3_>AQu%X1!B z%uG4vEVqAu{a1nCi(i)SejVO^`}*zQ?S}Wt9@kBN@<6YCw_V6rgC3upWiAJv%#fX^ zd22?>eg1hX)t+i~WCpV?{Z(Zjm(Ra1@0_3B8K133R(=-!^HBcpr@z0y_x*fs|NH3K zv$X|N-FEKSaVxhxbVcZzmA8)fuV1#(-_YuMURbz%?U$e5*T>n`{`>Lmo!Rs=4>Asv zu8?6c{`p|`uF%6eCaxCsa*rNb*yiy66%b807W6|vL}BTqO?xW$%T7+y%-x+(#Bt0;cRb5tu$62&JQ_1-&{`L|NX@q z%Nh6X?N@tt_0gNf%jbvL9kFTax>B+?(oW_*w@0vk@R^-Y3SV41U7CHaly%~PoeqA_ z=j~X*$f3Y!V6;hDMM>?MfQ_;7q~bGAZq)x=l{fq7s#Ve74py&EaOGlDYC0VGoAFnp zXxHX`*@Gvz6kLxK?7G8y{Orldqsv?VeS5ffmBlyp+3w=$=LMq6%kRg}TYrheuH}LW z=i#3(7hiaF_utq0AN>CnpE902@aN{sbyGhF@kH+qd=qzwTePI&A8{yZe7{UlsaPcILjizpvhWiE;7LdoG^-`svZt z=Jn6_%=i^+SM&4s{dse87|yakcZvu(8(Hmo*DzOJAmR$YVfw{6#>HY2XGjXXURm?~ z+ryNb+tyZpc`+$aW_Q*_f%y9Mw^F-Q`&MR7@80(67xVcA8C$-dJhkTL`|mt((huN0WMdZ?Do?css`SEbFd~>%*-)`*^nhy*N4SRQ0be~0UT9sPd4{x!3aaPZ&$e=q#QU!Prg zzx=M^QjV}IEerYf-F?e{{r&s@pX>j12Yo8qTEcg{F#c-K5%tyGpD(+&*B^eEZvR`7 zUCL{F@A2*JcR`Dq@9(SpD}Mjaw+YGXe@<8yZvKA5$9(xbxnFlbJ$fRsylU?)S-#_k z6I_oa?zk^^yUZ{;hgZS(VsqjtUUpIEBDa8|z(A&Qi?TMid9z*5_LPRsoN{^dS&I^_ zE|*n1qVi|#?K(PTR~q4PL#N=u016vytkb3=rX4Kcm3Owd${gd zGbf(+y(`2#$#z%OmD0N>Pih9&+Pw3Y?3CaPp0_ICefizHhu=P1QaVrXoc!JU`Tlt@lJ++gczbuwHnhcmq1{rU6fD>J}>&|@8PY9fu@eE=H5MyycagCs?TnC^qiw9NcI{-V%Oidf4?u< zd+sdbqPGu!{CoH8@7dYE+sh4QJ0JXclC{wy`8ogJvX1gl=G}kyHtLCSi<)Y(Ij~iB z{JgM!0>jy~7-hpn(I%(Aro}o0d!{8#;_P{ISVHXwLmG$4cezm0=|L_cKHi#|e199{ z&v=^E%SwobxH{JJUiG=MK*XK7!#dW6hdp$Q#IM*(MyF*(1dmn7T$=cQ_5Y90SAJ=W z!%K!gd|L;v=`Su8%Yp<6kCT)A}Z?F7meSE#Ui~oGv*tKEb`QPt;_^@Pi z=ImCHptd+*E3H>N+dE8YIMP^I3!_mynLozlOF9j`xcj;+`92s&`^-G=k5 zOJA7qL?m3*E8qRMsFuqurzLBa%jTR_yJposX|r1X;$`z>r5C#OPd2>gdmM1p^x2ym zhLtRa>)aOK-@Cu#yd%f&CZ1T-lc1CTFCJSHU#{2T}_IoWX zW2eVFON6Awg@kMTTz9E+w(z z-;aN+t7a(BS`{X8N~D_Ex&FYaJdRkuM{~?sLpefaSIxS4R%-7~X}PBIGs|9`u>5pJ z@0n7XOPcCpMaCtWB^p6%^3Knz|8x1Uf!f5+pI86=7jTN@SkM81;%#~Ma%F!D&6fmj z=_vL%!*J}3Qb1SNsk?V`&&-W-DLav3vHE?7Z~Es=iHc4pZeOc1YrA9l?(H^h&arJipK0ZD9xw~6^d3yTpyL$r}Pt|-f>Qd2s zw6pT(pW}B6C4L{y+WKp<{Xcc}D&4H|0HQ; z-oNYbJSnKAHTac4$~z90%iwJX-pD9ROkDYNjc3TrRY4iM-}*dE*_$H5 z7CLp+D!+5*_>MC&?EQSVu)b*1I<5O(=dL(5L$2)hq{kQdgG%b(gunipws*s#GklVZ zUgVm~^!6DlEn2Z6>H5*jne|>S<9X#mDZK*)QVi^ zKdX1PN{1EG)JF{x94;$GCI(&ox+tn`!-ubzLZ>z;FbY0cqv*=^TVV31*BbRtC(GxH ziFZG(lK9o$9<9V`^6#eo&VqB6>t^0szyHs-4Y&XQTVEgBRrmMq_xSq1skeX0FZuGN zdjI#;nNs}6+uQFthgzn5|8@55#{2DEOs(;M{!H&Evw62%gfm7=b&FZ{7|GfHld9I=jeC;2~?KZn!0+DhhF8*6=%1s%G%m9e+5gR_wtJPe^<>Tk;+VwqAEMuCI&yhYC zVZk$HNujDKqK3_rKAZTjKFiXzVk3X<=8V~Govth)-5HGaJKpc!|L>bLcZXkhpW=p0 zwIvUvL(h1sWhfvFJ!JRFiVf>(Rjww_9mk?NL+%$v$g))<@h^y@0y-n z^dv{?AbU$eRgtI9?)rZnqTP`q7x|}YGaG0;66od-d?ItOMc`s#V4%QOrKkg3O$t&A z1Q)%`5j?(YrS0y@<^CQmJPvGpzMQ@%yUK+xFYb@~l02-JZ+^6x7;Cw*e|_4R$nZLQ<#b*}Z)ZM_o{ zH;?~tqonDryT5n8t#g0kdZ3+4hO;TTZ{>u~Cq##U9UzqbE1wAgO{ z#{ay3!@=-SG2xReoToh|?V0*{S=^+{hJs4gPNwd8_pU!NYJS()dB8x`Qs%c#n7Ow} zNkeXI<@@mEv)||6_ZAH**!l5$;eqmZrMP1f``MM$7o8 zxz$ft^m)VOkmm2JjxOow>F_MRGHJEItzCt0f_z+z4g6|k_we_;nai%?GV55UV|_sJ zVj;euygu8|gOyGJCaNj^ucx1{GwKVTbxCK-?%g-%<<5(X+uLI(_O|n2rJGK}iyDPZ zlJER{GBR2{UdR7^(;sj5Uz4Ha@H~S#dGpM!W=>ogbfSZ2sbg$fa{=o6aQ;r-e znkbR;l5d7wiByxk^NY^DRl9G9`#+PNq@TopJJ#pv&B@Dy)L3G-^?EuUNc!{ku7Tt# z5!2MNgW*c461y$8mQ)p~dEVc@H+H>W(Y1Z=JL+|psVrr9nH0Iyru2AYM|D77f@JX#b6*d2!d|I7Q zq+K@gy)AV)ul|Mg!>=c&9=_0$5R|s*$Yk~N{KsXJ{{BqgpTc)Mx#ruO$Lap_-+wFr z`{BTuGmcx%6biYUHn4MW=q;aA+2`$l9aeune}4YC_wsqHlZ>8DI%|})b4N^kZ0rmr34wQf{AcpIT4%n# zrmfOwv?O`*icfy^zyCe^C3a#`uWNgNbhUAa!(;jX7Z=AIlW;%w;myy_Gu-1Hy_grR znWoMB_V?rI@&EE9+E*#LNVI?X_V%oWU(l&3RtgHsPHkno)N3vL@8WWMX};!HM|7qw z$qkD#@q3)LHRpBN?z{g#O}F2@uQt}aTdC}SfxOmro!MtkR_(v-TgzU*jC(@;x6kwK z?r+i7er^}yp*nTqrRN^SsHRLoF%mRr|{Q{>QIey73_V_Uzj- z{7JVp-zOWLpYFf@TeA9@^YJxB{|k0hd{GHdn4B8?RA%-rBh3Vcn7?ml-_~1w_R0Jt z)z=ohi&CYQ?|VP9_GFsZ@xuWw{(kl5hd1!sO;Orc)Hd_Pwb$H9eT8dYAG0j$+nrc& z#&oCuIX`or(%1fe)6&&nKP*six{#!1T&(n5DebYz*=|YE+*h{@k6N6qbTG(R?X|Qa z%JXB+<_MFLx@|Qd-#j|GcysDoDgX4@S0}qaSD(G~d(5ejB^n2+_UgIvH1K+RdIp{2 ztiPBfBfDGDWs+|`|M8Bq`gQO515@_zb`Llo+VknG`Tg(C>l_vMb8q$UcXtmT z{;m10yYGx#1J9Z2vY5ZWrvDes&{%YLqw*#tOYzF`zyEH(-@mVZhnYZH-LD^?m)ZGl z+`aSfJOlQ1yc}uKEFU)Qtf=}L`QYlt>WUlt+0)&o)CYZYtdv@>MyL*4$ z?GHaLZnn~yxb;Or-A0G$4VRK)^~2Y$X#D)Td-ME1pVZHK{(bsdzu(H~^o6iJYwUkM zI==tkWBaNI}&vIXmb33!PMywB?-TvG9a*9?< z4406QwUgF!@$}{D{{6@K99~xy7Htyiox1pz`9b|}x8FXjhz?!nvZt=Jyl_+ExiimJ za_)Qi%T9cz?To4U`~Tg|pT4?amz{Q?)_XBu)81tBvV*%nfAy4V_t(>_pC3}^%$0n9 zlm5;tZ$CXNV}HWq;Mx)BlfGYHVnL%JcVO+Nmpb>CIe$%&jQ&&h``@njRRxKK(|UQf zWbNU;!@HLuW$W8*_vL>-HhA}LJLAlaYr?sMdC&CiDf;pGeca6TvzF=ZG_X{fpR~uq z+CSLr;N7zC-_G`SG~PV=bf-tyE@H1Nsn)QO}Mf8 z(5k!B^loO%+V-7ai{Z({4Vlf~eLU{5rXAn^M_vDlm!_Ed?tOLbF%t~ks=xi1yu9Cj z-|pS6A^b2Ps@#d&tLs4!7#5W+Q95wqsGS5N#(oqPH|ok2;}XM z56k^f~hX`Ia2%W-zCY2cW-;Y zSTe?LmzSn(<)GNWb{PGMoo{*mo99kQ5@7|28F5G5eA8S)tBPSDbrv2^Sa*-zX z4O840KA-bE*>^xNX5QRA74>DJb4<6MH+|O2C46*`tW@4sFC{rA7RbBm_T;W*21+ciVV-QHPa z5C35S`EAv~ylYL?Za*X?cxCOh=dX{hRM~ys&L`7_ePPkPVvcze&$t8@`z=#o>SFPE za8WBDKVT!9UH!KoH`C|u`1(m>@}HlE^_kN+4#?MkX-)FF^gQYL^7H4-_4oaJChcNj zY00U`^LNMHxBGsa)Sts$UjDxCuI=WD4-Nd<_i1y^v-@o^)u^Z1g|T?wCubSnKpwH& z-FxrPn;ZKj_RPi>fjQ5wX5H++o3u6La^|a7yONfDttzc5l)D_le!tCut7S378^XkvLd?J+=89h9s z=V0)DhR-?w@Y$ueuPjkrw(@+Y7Q@0-2ONr-db_8|+uK!s`tjxD;{G&kx6zjF_FE@aIR~6wMOMdyPtnHyL`Ivc2#NYTB(ATc`aI{ zZ(lun^!M)UfW@DEJhX4W{cA8y>xyN$@7Abm&pDzdm9(E^nY~T*iNF27qfc*sF1*wI zY|5j&`rY>TCSUz+U;i=f$B$P}pUc;8jGVKtwtn{JJU_pC_xANq>PmfH(I&EE=CYKo zQwo1hZk}KB>Cy4hy*qaA7Zy-7E)uAaZ=ZeGtf_aw-e+&Ftkqr}Aj{b_LsUCymMZs@ znYzbUUp=vHpN-@)KCZr4wJ#non5ySJ-Bf(k{pV+UD^)j!yuYtD>^JuA)4A2Uf6so) zdw1iNZ~i=*diR=V)w)aN>-XJ!x4qQasxQXy??#bxoytX;NZ~QXw%ZmQ#=hX&H7UFGCSV# z`LV*R*=-WtQ-ZvLLsj`2s>(Lim28YOm-Cqtmny@Yn$Qe zm-)76>CK<_Yd-&t|NAz+Ey0(yPoVSck5{iQf1aFvJg<7!zF#-R_wTGppw zZ?k>*t2w#u-w*fn*~f#ey_K8=*uKuTuXIEj6F8}xK z_xJxZJ6ZCAfA{0Nw{Kr}-5h0jMPjk$q6N-jN2joI<;?p0dGqu4_wU#L{QCae-LkHW zM=}d9hjfWtHR-!7|9^3P{jVP{i=P)>zsqsr>Sl5M`Y)e1r=KrZy|?V~6CG#IHNpp< zeJb1>b=0WqrNy&6jjWcIo(E~HMiP@4ng0LU|10C>n#UsY+sYj-R?l0eBN=}B^8EjA zx;1&r%dhYLTemgO+2HvcMvG^Y5;xn~TUu7$c;_|kyxs4KpT#aOOsVW>swx?GW|JxI{^xp9H?C^*zO*AoFJ!9VtW~$<`y2GcD$9#|m-&Zj zYpiOUeB*Fozz4RJETu&mN|HP?W6!KywK`5EP++0N=eKY3W)&ItFKsk+83s~Kenj(d)1ul=VSl*a=Z7Ii_YNRC)uvp_qc33>tgrx z{&_jKj;r@B5lUWjJB&B!)Mk?<9*X{56MVf+iC#YX^X1d4u1`Nc%K7-^qNnhIi5F8n zj2Rdj80tM;979&9up}$ZEN>0kQ(kQJy1+t2Hz6vtvE!mfmz>YNqni4&-v2(#SDgOz z;SKdpy#qgw9{pP;UA%63_tUh!ujSiB?%%)Dly%vpqvb)7P+F9kdU&{h-`~FmvcK!@ zf4}`;)^h(iyQ)7guD)K+d(1*j(2{SvVR_f0wCCym_J3b!PhWjBZU6n12ba&UDJ=cC zCiB(r_Hx(dJ169&aeSVyV8Q-iUQF%37mp@yyXiCa4Wk6d`g7lZ|NU36XF3lfqpU=f z&~%m9`kK%0WZ8Q%WsWmT@2~mu^6Jm->5hzyB8qiy)|GEJZ@rVAOD`;ydg|z?KJWBTJ{y^7V^h{_B(eSO>8RsNIL-`&JJ{c0C)M zQ#o?m!tO=Mec77nflQ3D^(QAU?+)F2-+so+qRK^1hR@DswWfHLmDN?&SO2dF-8$j< z3h%I~NiAGt9qX?J6PY+Q%qDX=hm~kzrQb?vMp2poLp}G_T5W_ z1$3A1`_H_~C`SR?ja@S-1Ya{hRmgJJ@CTkH39; z_jbVTGX{y<&VIV6e!jkNm)*~QU(G#=Ui9(rjK1O4$jY4ymIq&-|P|bi0So zpEKX?evaS$xcYDtrI{;@Hi=DG)4{?KDl1mM+SNyJfy9Zj-M@crzyGeh_I_!LU8+Fq zs=UrSKVODEoo#dUl;!)_(9ngSUYz8ZZ&Ug6e!RvRT`4#nwrfe$YJbeQfWyap`+cFCYo1N1kMX%`;;lJ7+<(@xlc~4l^OxTd zyj6H#wk)>uXz^2L)hy@v+itIOxubJF-lq2BpOc?0d|8gMIJ{z>{CM5{yLb2QzJKr8 zqBkq@WZ7NK;&=b8yZxP=Wrs~YmzV1Er;C!(-FDrzW09Bn{4R0!GEJ6sS;Cc6$HscfYUi?+%``?2XNxyLV-F$HtnL1~Z>H z`AaE%=l<&dXSd%s^A*_UPPe;r;r@R!$c(UoQST?^gNYq>W{7$fB${ylqn^9ZDwD8cdq?wRc-O-KG}8Cw3X)h ze#_lGYJTpjfW4+s(3~-SY3{zHR5feb>Nm#VgrLK06jZo`|0p^u(4fIsCA}LH+gQ zNt-?D<4k8yTvh-5?d|J#SxRr~i2uFO`SRJ9BU>7xLa%2{TYgfIUEJmC)!FZ_6x}tc zJaYScZFxuNhrW+*e}7+puV%T0q!@$pg33t`=Y+S07)`j6t59+;G;3GHwT_M#GR5aA zCHjBAGYiRC!pb7aaKO^VDBhBxqUPtt&8PJx_Ga{GPF!A}ynX-9z5Di7+q3JqvM@^8 zifn4)c=zemDOSJKs!wkU?Z1Ri_b)GZ-rmo0@MpsrkGjn}xHfHQI-L0Z*VXX*wZE?x z?w3D)qcrxUn0ji`)Fzhc>HXnnJ!4I?n$8(m6h)ZpnXJpbt-tTbQT6#XQ9oZ@-M-!{ z@S@VRzPo12Hm>`db+dj}RF7nXi$UKc_X#b&89Kt*pC7$)fBo!LNpV@-zPjqaYcq^Q z)Kt`59_ZKo`eS?aEd;{Poc;Uu-~GS0?RVGxKNnh3v@Jlm{om2g@}d_t z-wVFn>~DA8a_Jp?v9s>_^><2-hx}@9fBf>~Pm5eeg{7OKuBN~4KDGAS@A~$miz+`o z$=aN`sqb>hi{o!CzW8n}ykT?a{q=59r7O96t#jHJiff(=PrK6lc*ernTp}lfJp&K4 z1axd&_u*4c>9#d`=fuy;%@5=8d^=+c1LuNbMuz#ewYPL`P3oC2vGCii{$Tl4Q32j^ zuTI6s*}QAp=Y2VFc|>s8p1b^Q3<t`*yxL``qt7Vx^%u-&ANh;5DmdaZ*M{dd0 ztg?}ty)1Lqv+&)fe${Z?S^=iJbxQ!Y$)a?=VIf4=&w(bIz^PLHRkc%5hDefx6pa`EN*8+BX~ zWctsobUbrwv-$Jb52BLu=h_rq=?Ug{$nsfo@N?GA%9^i6EnzB32XvkY&h!=9Y}a|E z;ez2p{v|Vbjg{uF(VK7o@9E25e+u@=I_xt=f6X}vPqypech)&Nq^_WKGqiT z*q0>!%EYs8!y5hYvx}|PY*tBH^ZKd3{m;Y4m+S9cyl%g;`PsOAb5i!pf9FrG_fhql z)uk5Ia`x!W#jCqd8~PqLNz=^Y(l{b;`NylX-}CR)#fS4gHd3Du)6wl9(#yok;W}Z# zNnvZg{&VprdBJXm2kR&0Y~Ht{_P@aLCo*^K_Ux>!X!Yamk?0I?{P}tQ{H!p8isH{@ zUa|tuPRy_UlPp|QUwv8U_IbOXIeTMlbKci3NZx+`{Wkl*kJ4Kzs=vRx@z(i6%e!B{ z!gLG|S8c8Q_vq-?ui6e3|K4Pp%Sar)dGhG)*ZJ)$rI(%bSbj%YbJNVEbM+QH8%0(! zKew@bf8@)@$?37?D;>7q{~r7O*V)qfOB#fvyeqfl&5N6BQ(5xs$;Fc|m2zfn$ZA$z zJK>z1?caCL{(Y+mSh6g#ZPm+my{VckQfFoB~&BFCt zrL?DQ^SxIkTYYlxu|p~?-B*Qtz2*c=m6`ncNv*vrb9l_}uesB={(7=m-Ztlbd*+MZ zbyCY#)#sfF^a<`N4Aiar*?s^0u7&db#uBFty?CZt3+uMOYn-dJ>9B(oM@PefRsQyW zUlwh>`Tl*J-Tybo=l_%PY2RmUUH#|N&-1IYip&3VY0ef^o)sM)x>q5|MNxS2nVu&c z_8Yd8zUX(=nVz|Q_qsPb^W^ff1h6ZpVyz~vod?SU*Rpe zcbz3K9;M6wef8pz^Xui3Vzq$AmW&b&GG^XAXxjlKW%ufXZ}zkl!V-Btbl>u&x2kA8;CGm`y}Fr0Yu zqyPWz`F8c+{#eLO37&Z3h2yL8_wVlQt^Z!V|6eJ`*VXUiG|2=qJZ&2MZ z`)Jb67$L>ULXKXX9Pi$hcR%~GIDP(}y01|xf?;2aEEp}E-CvJ~FIVq=z-*x1 ze9A;oLeR{v#5F$u`)*Cn2PVF&um1Xc-oEa}eooQ$Q*Xa*5AIq0RO*1;uNSEWCdV8* zHz}^(ZM9n_dH$ykj`{WfTD5eE| zSGORi4a;)3tmrfl2&(wL;rx?ZlY2w|y}cki=fp0n>cY|)$K21y=kVWFbYHXD@6+E4 z@<9)`+4ectXGn#IhTc`ENSSx+B##84wV_W)pv%3F!JGpj6zvP~u1#cdkEHlZuHa-0L z`Qr6~mR#EGEGVMuG2^PGyu;+DGJC=um__PCgP5+=y~=;LUcT&l z+s$x^&mwcC2febIz-+3k#NZaO_SR|F-I}Uz`^)z|dVO13{KRJG;)q$dU+W6ie1GNr zX_jj2{XNz7pR4ZQm+Y9Oq^PiTO<%TwLQ~8X4G%U=rKq+-E16@vZ{Pj*PGGmjNt^3C zH6|!48`SKmuc-g~U-{MkS@l~_Zu(-7Gjnfw+P;6b_v-IWUH|IUyO%Q$E=bg1km*$M z=u*@a;c1%S^xwhWOEETZq4bBQDGh>Y1}!r)OZ>~jYg6rt|72gz+dNHgQ&!14|9QeQ ztMz}+DDS=+dOOs^ttvO9aaZ28)mFzWX7}g6&%d{?y12AB^xD(3=-9h!%}ejrA2G|C z&EI31FhjsY)G<)x$7TCUF~{pqyL`?RZ_DBPCMP2!v&Q`N9X|G(1-qOG7j3k6bwP_N-P*htF|#em{S`C>{38J&|iw znkP(BXA9V9#;jy?=FEiW`O{|`2}u~sJU`fe^wp#s+qr(~k0URyoq4xp)B8C)cklkV zkNN20$&0t;vRPQnkjXhEDj{|5`RTXIa#n51+LRL!dN#!-Q(AscQ&DvJ?YGk+g1SnB zMQ<)x>&#JaG~ajoZPP`omi;`Jvvt?~u+s+>?%%z=c9oYCinvB@hL zwli%_=#}{N=j@|%JnoZ!&U+uU`)1!9&9=j^m%P)`Q?xI7PFsUl_eRx^wiw;-Mg1&oyyHKa86M(mwUVB+IPEaXCki8UUiG% zz@xgt`ug~-*%Qr{EnAcSetP~5hS~R+87JsWycoC8N2FCja?!*FBksv7oP+{I4p?Y# zXrxFsb4gE<6Jb49t@>i|pX=*o_WygkYmc#Hzk2bqr1CnG`7&u`e}27wfBp8;+25zX z5@M99|K)gAQ)oux-MRheBi$Ev3oXdLoc1<+bwJq0>?L`%EgCWhR-N5kcUF9n%SDY{ zE6s106_?hp^~ljFW_t2FwX||4Q>xph1J2Jqs%2~x1TOP?bl1HTyIx)%?&^4EO8Vj?gQ)f4$5tfzbvo4NM&^mHzP%|%!EjOXqE)w) zHmGgBc_nAT%U!Q;S8vP7W%J12SI^F{+uGVS@W+K*^VREkzkh%Ic316(50RHy?&q=H z{BT&@K60vdLhroOx!>>3&hI~8_G(-1>@Bh3iyvyFw>@#bZ6IVQT-;;Gv?i;5@7LG6 ze1&FhQ(S%Yzz@B7mv83|-O3g!thJ2vd6uR7ObYi-e!YcBEh+>9HoJ!=s^sKr+r`7e?NQsWX|y!JU6ce{y%)b z=Cq!(5-a0|ozm`#_dOmS>zCWRr>6XB)&9t>LcA)QBlVp>DJJmjTwIy)r({oc;jcY9 z+g}$|Zr{VdGL$i3dFSRcn;JLi<%^eJtJjPUy|BcI$4vRR%bl-j1*&}vmY!lO>Uc+S~ua>P|wN9^g@3p@tA8)ia zHgPgorNPC;FzME|Ni6dFemuE(IDGR(zvz=$H`h&H+sM--a!yK!f%W0spC2#Y+j+2Y zSHZ8pT_wHYj;OEv??>$=^v3_;# z&a=gj=VV69FRuUe?pSEQHe6kopiW%c#-uP?l-pDUNM z?X=Qq2a(SQ*WZizclK^p>Wh7MuPv12X`dBPz1=eHeegu_(93JDzqZ+Yul(@C1-Y}` z`{i}TzUO|4+tQb5aDVshu=3eek>L~X%ziDp`%DBo3&*pUi^BsCY+re6+v%%X9wsN) z*mLIwUHSd{=+&>i?}PHn<8A+MTDdLuIs4I)`rA5_wj8jM>e+MsW5M^&=j$&0JlDSI z>)Hk>@4cEU7=(g(beR@O1r%LVa`2jzwEhlb$Is2~_Lepld-v|l+Lg;Omr3IAf(c3< z54smWPgg%5lCd>z7fqGkfKTqxL?DlDV`g!r-V#jThZ(d9= znA^kWw)pPP`kMFp{~nz`=O~Ht;(W_6jJMVSzKWb)dp4ZdAZ0gS28y^MT%?;mvwQA)gl_fUC4NWJ6M41Zb%z0aD zVbFe#=iR%!d;9+KG0LR2U69H?aW`h&y8HL7wbC9R-n=-ydh+K)vwE`*4nYl7R)Oyy zPwSU2Q)l1(+?~Du$II!#&#wGk>-NW$>MP%badZlKd|6-r{cp*h>XJ>H*Iqjn zG`XC)T|saA+zj8FdoRph_j{Y>{_Ist+io8G@h-1%hW90QasH6Nt;{~=;jfbdN)msY z@BjNcC*gkF-sm-A?(N6>*nDsHcAY%;=1o>{X>^=r@Ef19{PlV3_4L^f-(f%B*4OV> z&-*+z^xnPuPx2;Iak{Oq4CHZVHrsG_U1x>SyuE+_{jJ&d{n1nI_sj|_mc7i`bL-A6 zncl^L6P2@^B;WdZXRbdrJ7?BUkt>BSFUSA=cKdp`v|P^(r?>>O1id>Yo_JWCMa#wljqsLb5B(LvI%O=w)pV$^ZRQ4ec8Ns zZnBGVmP-#;&oO2*C8dUSnZdVPH(z%5m#;OFli4UTImzzC@xSj{dXtUTe0lKYV_9I{ z`)fh&H!C7dmrWIX`ZcNW^Ru&`UhTa<#jPQTYu{ORW>;mdYX*)itsm<%v^+x}-+gO+ zKjiARINeicm#tiVVe86Ovo@_-zfOO4?j6ZFay{q$zWMd{e-~dJJ>M$nT*d}_`;;?0 zPkZ|0>&@iFFaONBe(TKdKF(xuvD2yI*3WmWJXBLwQdP4rYVC|p-s`2G-`&0X^5)K_ zxVYGRcj6?S8J>Omv`K6GHJ)XYZ@#U+yVUU6!RF=ua{4!_r#&1tZLWI z9OoRBqlfQyf6PeVt2f{Nf5PUtGv&vYKj+VTw=P!i+9u?E7u6u17_ipMF%Bm?BnI&aX0aU2e>?UDxKv&j~5jRMI=XZS{;w z3yJ#gWlyf{`hE1&@*VXB0>ZySBALb7eQ&l3`1zlICsuy>W`sc4Yv0h&)mLR5Hcfe6 z`L0<##UZDrdrk*Kql)H2Ucf97k z_I4GgqV}{njrsd_>$X2WSyp>}t1g2=q8Fn>f1ljC`mpHt(g_khpOP{JRn_e8&s?dN z?kT$FH2dL;Z~tzU-tn2YSrwZH$kPv)o-1>-54@voY(J*f0EW9 zwT4mclFMGk#?6oGpZnXNim9voDy!M^Y3An5+x)tp{=Is(T=VK8K}L=VQ##gg85~}A zXPe=*+?`SS?2qSeo}4bf_s^%Rr{}+UKTl91z%9ikKxzJ=3M)RlkkH!wQF_z4@0Yad z21qtWTK+Pb)zj!9>T$Kh-YV;yS}dU_rFci)1MqwNeJXV!r)Wyp}^v`Xo8Y3 zcYupr|969^-dU6O?BBa5E^hs)-DlGzlU*FtdNjQzE#vCmeYR-l%F_lepI<(9S7x8t zx%%qU+2#91JCrm6*X6Ivn|{6fYwTO|Km7kU+iPrpdoE{x_Us3H`5(S{b1)};-`Z;n zU!OZaPwt)Vum1YK+HQ9HD{N-^t*WZmp0sM!mxY_Bbrx92C?@e37XSQtb8&v${&Ph= zf==wy-@g;@W?eXK_S@CdMG`jmNL8h{P&a}8`|k*QT~SIkQ0P^uYxR$*&7cw|_KCd&GBPriLyyUfX> z^zH3ylc&zu(_t~&zW(2)b*omd{$9FSO_;|ycsu{O__y!pSIbX$^zPlgoIT2qa^0E= z_eL^nN_VV$-RYrupgv>6?}wB1%Z}|{{j`+Fm#6W-ms?$>kFT#TowVcL9ivH72S z{-hYpxVv6Y_*w>wfTN=8#E#vclS3~5EW4~T{cBRRUU?b+zYqNX!ukEP`2;)~;tbqP0nhNvlgsMbum;W}c$c&ba@x>wntU|K0yj{{Qy+ z|Kk5&y*gXIF}pa$$BAiymyb_Ji-*Fcd>0+AV@uSeZR&sBY<`^1zPZ_KOZ5J)H?Gv( z?)GJ35RS;65z)HW{~&jVJiL1M>7)$v*IQktPB`T|H}&w|xr>+k$BVdbyQf!mjb~Nh#?YI3=G}hQ z@Be0P-1gv#^X9Lur%%1zd$xf$we@Aq?zP^@f`*DgJcWDpf?0TPT;=qfcva+@yS=P0 zXGTPi;EFrz+7~;9Uc0@iWar01?hCFj8ypW47%b#|!+bipqRo0tVTecUMmHm0~>{XtH%r8Irm^~7F z-|y}DyN>&6hRKKAmXxlVs;WOf{(rXrpKZ2Kf+eTJ~+x+@x-a zV6O#v7B}iEKE8VMr2gdV>-+EBzd!q2nfPkyi+(0wqaqj+Vihz zf#$PylGEot6+FD+^{%VGo|S!c<4k(;cW?XQhk3!*yRUxFX?6-SWol?(>z>}fzvAnc z?vEvPrT^_5#GTqN*8F^^zm_l3IFyM=AxAeiB+KOXlvx5QZ7~O36IGb%FU1wN2QZ3i z3bI~U_j;Y4zWLQ}pMGE8|9^G8{@bwR!xLmCg{G(|UH&;CU9#cWl%8VEQ~i_L3<{1O zy*T-0#yr8b;@u*9Cs}YG@lx<`$T^vIKy4-4#}vt=A3rYsT>bg4qgb)uFixJ$6X`?;FPY+bKqmeaxi#1QxEjX6QEkxlnChn|%F;qZcnu zCMA+dYhTkHm{w2?9jn~jm0}X&KPZJYx2Lw6VluD?%kYirCvgN`;}%WRmhvY_I17Uo3ZoZ<>mTf z-Cy6GdsktjxB6?=UWR&)y;du=8g~4>yLtQl`=DSpgC3+?vc3 z%9Yf;q^UvYNaIT9Hw;=6*S3`gx1I|Yax&F;zyI&9dwQLrfgT4Z_;v|$oK$gT6_~Ip z_tdVtd9Rn{-CA{Po!I?9?^f^sx4r)7?fZY)Z-38!pTDkKN!v|N|3>8DoJC1OP6{4V zm?q9@JQ*K1XU=AFJ652X1l+9?YCD))%E9nod56rzjNDSG(G0= zmX(*y+NQSp^Urzt!ME3he!YA9cK*Jf$J*88FO--?tq=E9di>z$gIJ2xcIY-}fLXyIktwnhy#H%-Xc-^sd}J zrq0QCiYm=z`t1LFn0&FKr1Wpv?%0(^iGkPezJ0s3C!Th1A1vb=ur;lqJhIXk1gS?;fT|0l(0 z-|oF7*H+C~eE9P=-`M)sx6hgT-rX`a!(FA}!JI%=-)RLO9y~gF_iS#c?yG0pBqk+^ z^fm>C=vs$dYvFk1Q@G)?g7N0*{`L-2N=wBzZjxj;vgbsoFOS*jwC~-sx9OftnD%th z$?Vwj?5VdV^mWhuJo)*|lTG;{&4%y(Uj3R>x_xb)bo`{i(^IU&cRW0IFRniF`tHQR~{{(boH`Aape@Sb@o`8B(RV*G!g%85$otQgtQU#&5DWJ~=*=GH=xm`PV@8204W1ar_kdzYVrigW6 zx3_j|uU|G{#`&~%|M@oY>%_P`Raym-bwZt9^c4Sm_ix9Yb`qQl(+k6rn5)vsrmU~6ckHX`7jawc_%6-WQ0w&BbLVotC+y3;CSUU_@aomqXRqCA zns|GeZWoWr)Z3S$p4XoGBr{WO@<)x+e;?JIpQRsHV{o>;zTEu%<~ybfm7Q~M8%{i3 zlytjPQLXTrSyu330HXLr3=n)_H`zJ1*ft+LFmahxx<#jHN^QN#VPgUYPD>DTl1 z_j7JCGZS!eGVN*TQpjO!!Upehwl`krN*x`T{XT9h4v(M5B zfBxFNKJ4_-8WVFh?#F?XZ>BV86nahb3CiP%_o`mKu;ofq#e^dwE&_~>o|i93PG)eO z_~UE+AJa^wWm6u!`0_}+{=a<9m#6Y}RX;yI{CM;1*RNN9mmgWM%2V+7S*sO{-cAb+ zWXbH>_Bl%^ZPfxpubw3<`aVzRx3{&fsxRA6T(!&muKcZytrrc-+jyKOEszNQw0C82 z*T(5zo-U6+qqF%j&&0)SD(BvwyL)%h+fyGczS~*K?Wy~Fc76R{>5C>Z;(D7~-hFxE zxKnp>+r^3xudbdhe}DhU%@1F`B<1J-|MyStNJT-x0bN;+Jd8e0l?5X%RdGFu9t75~S z&hk*ZTqvUXx@xm#czJg7&DGE4_th3#&h)YW^<(nw+unhich0@9|30_0q@*ZdTC`aY z*R`3TRX}S_%q$PjpLOi~bL(nr>+ajuPSb8gKA&;7WY_b(^?q!@@xO1JayYwq?q2(U zZzezfdG6=Mi|1;-{QDa{aYcu#Vb1Fb&)4O>61aTsU0(mjThl_PJv|b$<72^&&2ej; z#oe1d?_N=CY3G;Umiv0mUHcpHYsD&`OYFC?(C?y?5{7x6AHK z+urgb=i^28_*EYYB67CPHm}d$m%m#|pm*c>_&pIi??jJCs4SU#^WDXVFJE83zkRBQ zl2hI1XVszkvaJFl4Kr^pFuj?w=lZtWDs|;`d-j+A`uF$gyLT!V`f2%8TdNNM9 zA}42KVP&&(*Pf!hfbhDF5qYPt-v9IOdg@j;zjKR9&#>h9T)I)IKdUJG%Pyl8T=hvh zJQ6*d#XKi5O)zB>JH2|_>Ymc3ixH|q-fUAtRF16s`1S4IuVuRhJ^kfvr1;chr`a4| za&pOmlk3B~S0AnQ+*K5!+>n?p;1VJ{`K9B|BMwKxG$s~K{&@TPeY4b+N((}G+~WT| zl)s$Nl-DsObCUV}I@ucMz5Dhu73vrHF)(S=uh0-&v(+ns&2K`Ii^rAU4$Kj*&Qj{k zvb$Su`M9xeG*Fz#si@_UuNQS=&vNn4pY_Xmc;##>ZdR_GrKVc(>j!HPPo{9Px!gM` zsk-lX%a1(!@uOy&vHt0`ikC~{9Odk*HpJZ7U;n@DrsAwkclPbCOE*gPnU<>8Vs(rm z;rZm|RrRZagX9lCy*hgh!y}9N?`$hR{2q`8*2OH(;aGqhG;sNc$Y;K+reBF-N;xST$}Jb2suy4FpF+iO>MMO1BBQW|!( z=XkK7AgAWC-@mO@dKIsf?u}U++$CT8$FS*R?5-Utotoz3_71aJ!lh zIqCV|zx}I?Trbjm_KH<%ShAp_OK|?mjLbhj9to!(&%OTZ+<7;4dE392J|^s~kL}K! z6>(2b|9zNw?3#w4uEv$^n}j(sE=>`d&?)HHz%cn#+SYe9%scy6zS|aBTONHc{@&fa zcduw0%X%9IB`{A|Eae%d$*DE7<%MGdCyUp_wg}1lHJ@*J8Z9t9cJtoDlJ_bNs+(F( z@7I3ay(~)EWBnCh2bU!)yaWS81Sf=ETwPx%~rAl~p*RpgC(< z+szz1DSxxuyYj-#gp&=Ii78x7y}G!ivuEqKKYy0I3u_Q!Ht`j8;$HRmq0MQx(%nkU zw{xG?3Y*G2ZCk;8c6RxFw)q^fJPMs=v!_4MXOyVl8DU|5$KHndLD6Of*VCIHCj5K# z)II#VIlrFXo_wdQHD{k~ZeG9t-?NjG(>LFIS5-V&yd%Rgb??69GXME|c?=h|J^B0b zUMCaV{9}**{@#82W`=>;vkH@nJ=-@|RoDLhCMNW2)34q8e|$Rlah*r|gf$aSZm_s_ zf3DckSNmetTZ!JSziqwZR+^D?`;AtCwI^?H+d6IARV_FB+2{(y0*vmPhf+sE78Eodhsr!D{ymYfzW~ZWR z>bBVFv$U>+-dW?taLOlf#`dRHOAD%N>+3hO_%N(I(e4_zWXhxqFHdSl31%JAkuO)MvqNqFhpS3UOm0|nPVY8kl&X)*-pba|^y<^ck4J^KSTdxs zIfw82_pO{uaK(2^X0c=uYi#mHYUY=k7^E+R;oUEKpgpPUXR@T7WTl4qT z>@q(itI-^#G<6A=p7FUzCAW81dj%POcH38dEdTf9{n~BO=^wiN?W5OTi_O_|r}5Fd zKMCp2U%b72y5H_seMNeDd3yQtSIag`4xG1#3QiIqEK7TT@&u>ZJN&a?9MG z7azCti+5Y6pS^hTW>VpMH!T5YkIFa^GiHI%_rcb4 z{l3z{qemYfT%d6}cVfT8&g|si^6TN|(_|HnvOFzYt@-ZEw>X=hZ)Vr$@B9BXzkYJ+ zy0^1t)EE}Hq?yb*CZVr?KR*7xhKbVM>GnSt@4D%h*?heydg|@cF5QN(*=lVLT$0cD z`S|*eHP7Ey^Y7J{7YQ@$_g7rn`tt8n)8t?I|G)n)Z8O|bIxqTpgoEr{k`KVp__fBo?ZU=_3PFy3-)?XCMBNs#ZQwCrr7^~BmQ)m@tb$k%U8Y4Fsb~Hau|jM6TIjLj)w4f;4xT%A?)LZiUiE7dOj|XRLiHD$DjM~?!Jk& zVKwQQu&^Ywwz%~3-S6@I<;&-uwOX{GiKE4~(PP)wqObp~UvJ=5WVNmR&|!3%#V4~q z|C{{3zwvEPs;?V+PGVUU5YVCNc2Qxk)aEU@dn&#>dh;f7qW@aiJNja)pPDkJFx3A) zeV*HALeh(xwB974`c956+t8j!*HDwr4~N4ie}BL3U0&YJ7g@FUx2PKLJ|m%)&Mn%x z^5?Iw;raJ!>T7?`i)EK7PdmQby1l&ov}2;+%3Is&Kb!9l?y#HY>Ez{+k)M}mbo}wl z3szq?Zn8X+Hn}L+kSDaK-&DvbI(c)}ZOK!yY~4@4USD6o_=eEqw`c4BUi~VnVO#fM zmDcNBH~rcchwIx{{`zwD>e*=d?LxMWd>8-zy1w6QQrY)!NuM;!cJD5J9CLTu>>}qS zT8>wqGfx+9&foXbtcAl#X;S2D%hPV(`M<5+HJ6|5cjd>^{&xQ#9XxvYrAhz3gmbx# z4*P$;+HD^G{oJMd{}<1ny>7F|u^UV3RUAELHgq47l|7S}fA8AYvVEKNn^s*a6K#4H zIq&(;3=6eKXVZ@MoV#hBe~+ij@pjJcvaM^yX8Bw{x@)DQYs>d%%X8QI2LH~REb10& zY@W6If%9@tfteTNWaCouOy<7(c|qyWy?2S%8}cuGy{ejFlp@(S>qp&2CXKYo!W~C* zc3Ia;`GuYS`u1&Thivq>ea-u-R9|M%DU{XhRjzps6z`+Do~sloXkD;O@^KE%-V zB5Ci=$e8>2c}gbx>;KlTUcoCgN9Il4zegJ%iv+cIoDc|J{7R7F;*uFbU3>4cDSkNI zf2`8X(z>DT6UL#B_P`(+_%j*n|=1#ZF$p=WxY7S{`1w>aLv-lV>^w{?YMk-^VKX? zkLT&>zFQTU*A?uRz21At5$VQ`BuiidaZlY+?OHE@)9?+KP_i(Ki}VH zU;igXUHb(4lp|}d6?ip0+4t|?tG{ngCDi}9`CPuIc=?1$T!zgWD=OYgUYR&&u6&Pr z^X{j$;x^IU35&!7B>K9p76o3tnqX1Ts=Tb~_S&%QM=833DY<90VnS2rJzwzQ-`%Ha zq1i1TGZJ`~uTVe!-0sM-m4aK=y%w1CP^TqeyY$g5`}hC;_t#Y8&HMNF?%y|>eX~Sd zC^j~JYJF*G{dUhz_rnjj#iUwZ56zsb{mGM~Vnh9jp015=yK1o)afK@;Z$B@WU+MKBH@bY)fsVF`0SpQiA*oBtHtu5-YGiR^6usCs zfnh4g1Yt>oz8PoUy{WOY^NL%;>g2LzkwbzGpQjGP{{8iP_wCyow=VD9wD*EjI^t`; zTv;9_C~CW)jQ7gwDOoq}#fN^s|NCk5i)$CwI@JcRTVMO(^I_wXRw3t4k`tYsIxUx7 z{rbCXr*G_=n)2f6pTAb$|8q6|-_Q8JNB95x_dVXTXTjbsb_Irn|NAwSl$00*1eur? z`7dOykJq~wU#Bi4z*_HU_xr=q#eZ!NuV6SbgzAmMB-E3Z$Gn-es{J#3yJpbO_jgs{rK7HOh_i+8!Z?e`q zcI{pFD$Al^(Ze@io=#q_e?PWvedoUi>Gc^txAO7@pZt0A^z7TD;C1tDtNwiYdHMHl z@1)B5(w}c`dZ%yB-&d(Cbt52hx?xqeZ)o1_Ws_ANe@sb#p0N3*)U>QvTdVpv5@zM) z?T7xUC{4Y6>bKXy@Uyop_1F$yzRdo;{PoRqGKxn-gf$zc zwj7(G;_JoR)S;nh^}MH)gU5?2!KZ9PxnoQ2bsn~4hdVjj4j)`|C#1nsMXI}FS4{4@ zb^7K{eJ}M%D66Eg1OzaJ1}L`alrKu+5#IIp=i%HO$$8?dfv){ZJ|kxM-P(AoGfd zW(sPrR9WlBmDJOrne^%P=wc9$TNV2PN3U5|qdVZ(CqHk^g?5D5) zKaKzY`v1fK|91cX{=ek^ukym(Y@QuU7^Vrh2n!i>swspxxhMp@`a8{Wg2=?chLdUv zp-wKxri6T|`SSVv|AUj+<@-KAv^YG!?n92lAt_T;=b2k)Zmf3;S(6y*X{aU`l<4O4 zpqpQ9U$$DMopzhq3Gwss^Ujv_wO{7q;pEGUAOEJ+?vH!_UPk`?yuCaB*m)Yu z@yxTUJ=Nxv>P2e?IHN&OL8yIyRc`h|@iF`+Io%=9@3iecXJ! z|8-uoXa6^Tfe@9IM|zBU>TS*(J6f644IIbpQ> zMocQRwbXmV-OHjGm;BxP_weJ(XUn3?b1!AAmF+*SsPb__;6!Eb(0ON%pZDjptE>5V z@o@X@=0L|Ii=>W9rt@siJ$>ey)blkR4NXiI&(}EKpJM&lvnSTe@N~@kE4&@`El* z7xb^wTvBw|B=p6tzM0E6M?Qai@?~IT{_jku+uLHVcc~nnA|ClZaP#iX{wFs7`~n_F z=@j({W(wdwDdNf}(QWhk)~(bT;(Q@9>p2}bCrteIjnCLT?^ZzA>~rCU+a`%jW;JBs zc+k1vv*wZuWu;dXX1FBttTjG1Q)Z#UrK_J#{k|5V=EmsaoFKrn!SV23eMPSl>&b^7 zurB$Y6Rr|=?CP(7pPs$lwa49ytLd*2YsKcZQujHIyx;$SuUh4&4@Zy7|Is;r%)@ho zkywp%{W<^hx6E3n{QYIVf9h_3HJnZ?kXQ33-42 zre2B?i=gCE_l*q;)Re-e-s2Bp5#iuu^>Lcqpmg(q+0H$#U)pRp?mE+RY?5f2MeVOA zPv4!p_wU}t$CI0zJ^iGD-h_lUZgvdgkx?{!biXZsqKZ&x{n3C`$35oT)m9qJ^^CQ* zvpRcW5!2*JZM)aWF-0v(3YozZbR$Z5=9b)97b<%c%h?(x1q5$feO9gf=kN0A*KXX* zDc@mi#+JWsKl9gF*W4GsjGXsgUiN=~{kQ+IA?3TR-Tn3E)%|{^eSe$AkCV&of4=+r zJ@@Xl)Tzh3^J#ZHfT&(Hixetft4tQ)JX zt!amho@L+Z6mFi{^6u5Qt{WXo zZsz!_tey6~=~$$*3%{P+p6c@2@^VdwsrR|srySWC<0|mr(VK^}->-l7e)iwy#Cf~7 z-E29R?X~lC@{}_?YL5#q=geLv%U34)w64B1IoIimjkFT)`EznLzrU?Ei<`V`_HDL? z8%1UYidCIaH|7WmnbiLb|DR=~BQSfP1GlDvG)vNC&Law(2eZ4hrrbW+etv&U{H-6hCLh2@>J{=((%;^n7rpVDu-a>nMw))@BY zo(2XcmqmvbG&BftdLGb7a9}ap`l`TY?z?wy&y;`b>+im6neNAMW5O~EIsfj95uHw1 z|6iT|msK{K!o|ohs zl}en|S-i!}$xr_=ZjBK3MbP!@*zHd!yI>f203@tM-&mo#*@if4h72 zY;JV^%^3$5R22W+y0AXU=sxEb&b4)af0gI`izBV=QNs4xL$i zk%PhINcH?6rUsqU0tXekxIARUERBx~d|tD`%zNeXlPik*0zxhtY~SbHS}!o0@wxT6 ze-BruFK2K6fByf^c-`sc3C1q7o-~IBcY0ovOygd|v~uNjCc)lZ>%F^gJ~=u;;G)8^ zX~A=u#E+(wzyES}w)c~Ja_6_MZD?7)?^mr|5u^0{CAo*rRanhG>#!wr^@T&`>-TdW zlxC0Bz8WS`eCdkm+>LXeG99ql_2a?q{QCOx^7_4T`I~Hn8HzOK_4ChvbN1Z&b$WA4 z8;!2ckW?~qY*JM-YC4uyIsI1X=AO29ug=~}Ss=D5M0{O>tMJ+5>;FBdD=gn#F*#^5 z%Ph4s-_)nwefQ_Z?(fYm3k{eVgUfUSlKQSiDlrMNb{e*b^g4>Jz2e%;r% zSFf_y>)W4ct9)}qLazUNSaC$K z|KH8K^jMt?pTEuR|7xbVa?-aSQiqSR3!YPyznoH3QS#-*(aR_Q-Fx@3Gu*)-XU*LH zXTN_txF{)j9f|8znzZfm?DG15`v2PB@Bjb$@cjC3HSZJa-I+M&ZjOE9lvCqAO-4gg zC^Ea@^PQzrW-WX8|MmZu^UuUg>)fE?aWG1Fu>zAJAA9qZlE|t18d44w6-V(y?V{nFlT#emtbShNz2Daf9=c6GP05BHGP<2 z@;xr^eSTAjU5;eK)gMLyNgv6aqq(yt|i?I`?Y z%X3HWt=+BJ@8e?ky{u8?a@wM|{r>*y%Oy+ur}F>%^5SFn^7%aOlW+fyRw?aS!71n* zBDg`#`7DR*=0FkF%-h>O*VS*`CExp|BInk+&vw5q=)Aw~y!&}YOV@&4$MP+|3ue6a zWSH3C5h^}gZ{k(+{5bWMs;3T!z1`;J%jBxCc)@~6B36MVKcCls`u_ik{r`NsAJ+S8 zzMM>-yja@_Q;wQm4=N zV3e%i|6jlEl)|+QTl;RdGBC7BOmtk-@!)Pz?d`lhzRepy$9BoF{akTJ&uNXbkn7`| zd3(ZEzg@g|b8}6J+0Dwr4-ansJNh!EJnK`8M({ZUemhlx$8!{FKYzQsDN20uoQu|z z&o2LM>nb7Y{CxXuQK=V6zrOv>pV4wt;a1V+&V$)ri<9c@W}lm#<=t}dcv0*;*|}F& zU;Xy)S4#P(ht1vme0_0mhJ%-2j&$aum z&8t*&u1(-qwAWw$pq@Zc5eGqzz(v<37#stqPUr{{aoD2Que8EQ_Sy6H--~Mkaj)eWP=N+06orYa9$EyLW81D}Rue zmp@TR_{{Om5vOjPi&eQ7ZWBd(%SWSa{A-?gMZ$Ai&70O z4c)5vqhMG4zZWkmvywRq&sh7Pw+~pTcg68f*3B(vx2?%jE#(wB!Qz#>=2Vts^5GPo zUiaperr$n2)17Rw`0uaAD;7n&A2G_Z+Y!#R$cY&<;{on-dDHW+S9KS`s&^FaC7tf8!Ln_s$?H%yLDX8 z$k2cxvrA|qlLPwGcBikjf24g7cZ7Bp~%!p{J~qd z-hDN>`*UaMA~uFlMMjAw3r}P!Nzl{QuAXU#!Ne9}SmHxpJ$AW2y_M zYyFWKYqIw6vHdIwnwIKz^y0sdRl(~|i%RNjsyVRD!^rbXPTh}$EyZ^8rj7akgS_rlr@gxz`~LdjGiToHeQ(UE*!az~qpPFXY?;QT z!yl488hLj+F4Hn(VJXn__pIrNOp{G~c;;S8&7S?i({I1t{q^puwB%=-XS&>(DepFa zR_;nJ-^)JBl8>jE)z34Xy)4e`QU~Kn(F?wt8?d?G+upq zuEs{TbRVCgmypBG-Sz8lY)gFWyjRyeG_-VK*eC1Vn|EnCf8v;6z;#6L+KN99zJzYo zEjE+4`~9P!eEpp@e*W`hW#rbrzI}W3>Y}}qZYXAJzpdJQ>_Y6DclP$x^;vWG#>I&@ z|2*t|K8dUQ>~DtB$B+MhlhbVMNOih8BZM{Js#K`&?5x`I-*sDec?Jn{DsM{tc=zz( zzx7`}&!2yu@7pr=&oAG6dNx;p#WPS;gQ?{3L}AX*y{vBOUvl>S{&;h;;-TN=>&@RP zao*G49{VBpM%dXXR>r`i>2DUKYFOsfTdlQqohZODIY}uw*=hYOhnWSJxAfcp;b3=F zVr*g2x^h`vpwq#DvFoA*lXhT;K#zxlR?E+ODVOf;uPoZbeR4IUqc6k64#u{bo3AM` zIw-ja_IM_FEjso8`Tw`_Ki9pSX?iRzM|Z&&ze2rYsl?s6_5c6<+P(Vql%~Y!+*Mca zPO4XZ+kf2uTVFr><8*d+eSW{bw#_?r+m6gI+0xm;R_WNG*t+6?Ub6eN#t;S1gE#m8 zI{p8{?DzNjo-rGFbu9St^?LmA8&7vi_aEPRdf$&f>Zh-+dZ%^x-O+CG^6u|iKQ6Mz z@B8=b?%A(bD-sU;{u}u5=;q`0mH+;{e0cC+fAH2VH7=&jEL@ix z%}{X7>UGaXLp9$=J;_R)hQ=0W?lgZkW;mTPIb+&$!&7(99y9N4(JN-|6xwYf>63r| z-nQFPi_+$Nz4w+OrQUGz1R2G)vXn2=?f+gnx?$ID=^nSE)-tr-tsU{2qH?+tm8pMK6?j zJ}rEFCQ)qHGy(UcbuTVN>Tz|e{gk-1F68Z}IRc?9Do5`+{wufp`=j~t))>CBVP%iC92%zo$Jt=`|awsloZ=+|deAGh&FKb8pD zn}6d{^W^38ZT^4ycl-905)o$RRo`v}c-4Dwm~pP)TKP-B{qxU%H#Mc)Tn^M}^8bCP za8%_{(d^Vd7u^-E6K|xP&@tI`^J7g;h*MWWmxtL*r@I28Y|}bK0|Xp{?%)1y68h}_ z5*_PcM%?o*!dlc|NT@&*F5~ zp(ibC>RXz$RzyyV&UX4TH(z8@X})gt zjeW(B7r$4(kFWn9d-)1;GEd;uYqys%Z7>h-{(JM?^Y!!IrhK{h^J6-{yiCf`85IdU zF0KkjVmcF^&QPf+-KKD=Lr0;zYn1{=5{qxcidBXzN=Eg^N@Cqzu0{S`Eem+mJ)-Iq$gL`godO!V$Yr~KK%cz{h!1B z^XKoc`jlZNdwrj2bA6)Syqwvom&3%?wyfY}^u2vDWtX#qN0WWjqfUh;Z%+Z!RVMe; z84mLp27XfCe6aqPy8Ykg^Kx=$-aLF4v0>l7T6Z7AV|)KDK0NvOZQt)7FNfRL{(2%V zZ+A~RDDBIeg0eCb_LZ;lw(@Fg7zh>?Ss!lpkNaa{et6kxC$9LKFXi&}_7$uGtJ739 zj#-r*vouoi3=-PvX;=T}#bnCxYxwUHnvFaZ8fV z|M=na^KGOuRC0?~iyvp7zpv`shc^iZO*-ysfjyj)nfNx{{8utRIp%KM;#FE|uJTM8 z8;rQVvE60!V10GY{{Ii*Es;V=iqlnt7{%*1KtU)cbSa{63$2Sx{y;Yi{b~ z+6f*(R$_&(wKPqj6)ZX$E+ZalfqqF&zxy!3k+0Us3h1}y7se$aV(1HkL(ykNi45Z++(N3qKDgB=o$ToH#9Y zZ}iiCTgC6?MoT4X#Dhhq*0mq>FO}=bSrnMe?!2DU>~KHO z!-p-?tVbZcG>5_{D13gc1h&^81efR&9>Gpq* z`rF-^FYeLk@vS^ve7XDMMI8&H*Sza3HO$ECUbSl11&^lZ{_~}sbGN(kFsO7cdj9c4 zLV0@r#vQ6k0gtU^QGb@XKc60YI`U|JzWLrqAE4U0p6$#Dj%Xl~G74RN#WhqL+IzZKm~_$huG5 zHTP-rAT zB|=S(XFl0*l_=i5yIxL4w)V$^Hx&j_nzLpUC2z9nW{KrElV&0#UBsdx#On0inxWuY zWb&GmPU21clbm|&8kqz%X3hzjH8<(g#l_RrH_ttMa>d(Qx35~M?y2}vVIo=PyVH7J z?Z^60>bJkXJ@NAL-^=#@9!!4T&aQmH=hl^VYj{PT#50d2`tcLsjRH9c$XR zEfHZ6lIqdY@;bwEqjEjhxu|FI*S<6#TyVawb|q(n%bHmXB7zKxM=mI{%`Kk$e$V%F zQPa~Eq;~b4keHsytZ7~%x$^>R=*BQ(Vf)`dUfTbS|NrSx%B+o6&uh3k5;*2Q`uOk9$-|$& zR_(kyrK_auSA#^-D#j1rzL~X%X&$?B)Z=iH-pQY0#}{AR78NzS_SeVf0txk2|KGg4 zZ2#}W(Zh=^y<0rA>N#c=9oo3`Zs5ls4^Lja_wH(WzWh7?fA9R`Qg1c5q{@$w5wE^JCh4Qm``lpOhT z|KIa^E3*Syt3*U62u@I8R8Bp1rtR?KyLa7}r=QoC^S`qq>dtd5eLsKp`UDAMR=1>} z76D5yxx*7O%1x|p&9vQTQCm`XZR^+H<@u|2mF4^s>l91ABp}Er!D70~fr;&9(vEef zH}l(NS!T0Z`O2y|=X5wQ&J>)m*XP2nC1RYDldg#TDX|F?b(yUYyeTlCbMc0)PhP8* zsvbG#9TLFs4Tj_@D@A8P5FPTBE`pP=f2`46ohLn!EX9IYfwyFgm6j`)PAUMP=TUN1AAI!H0tX2MQj`+t$)t^`OTv@8R=~&^H-}zGdVPD^Ip0u#iJ)FO^0b)?DT+kxBo95KR>RV z?lRHH_4F}Dj#W|4En1w=RKS1@u$GG0qPtXJF@xOC<1-@kiZZr+`%pprdf;_Y+Hj}-JJBt=|J zJe8PKOxtQb6jhRYn3jsvGm3C>3O0x+lqoJf(z1lZ(6G_VW3Bl$tLN|Dzkip%UhUi- zE9>gYl0Qc`KR`4#wc*<_4Veqd(|CrpD!yGG&B>DNjmw7t9nYFI_aMJTX zUjnBDnEHA&B+Od3W_D;GkDtH4*=*7J4*88WpI-dox34ig9U1K6;>@#X4cDS0$9A4E zSS}$^lCV~lp>vW$BZuZsy`>tO9$qY7D-2nD3ymb~Y^?vjxY~X9=8l4Gxv$sV7Rvnp zw#T$<($16j-kf2n+GGFwX=8QUvkP}{F2L!)gmS$j`BJpU)3|aulY4!aUOgrtC?v$Jq&0!#|L6ao)~8aTS@H9Pw^-N~8Ap_svS?%DV9Xu&z} zeda1Nu_nHHZgomCiz7}^@_5(E`uIsM^$JNVn>y5#jE;Sq#p=SsVAvA3{l@QQ*|+cP zJeV*cDdW`HF~z|l*t{>;Bzj@y(Vb(GwsYCJKTd|gg-&3;Zo}O!c?|x-P zO+{&CdGX#j-D$0kK5v^JzqJ3^UjO4Idw&`;`@v|lGi)c7gqT*;cO@D5cxc_)UliKe ze8$G^*8SPNsuydD_UwocziZ{%dEnheTs+~^8+&!C|I_m!s-9mCwm)#@F+4JRcI)Y`z{F*bH+Jl+ zt-oDTXCukOJv%b{gqkQr;-V=+f`*GdUe)hfH(8}J?n}I%ilMQ>uLmcx`vrtM>X*z2xndBVT=(VDl>M?xS7hBTRXTLcz*uS7 zj5(WgHpG7y3=9-;4P0X`Eof?c-%WI)(d()y8V$>?EKZ-%F>4#2VoGG*+Sili6eheZ z-KwON8kx9O*z>Q4?y(hGE;&5umB-HP`}{Xx`TKpL)#+hn=T?4;kKHhR2fw3<oSM$x|G&HbPkH^nqpK$$4$KpF(kSZo5DHx=|H3`M)kQSWQIuEl%h%a1 z^1F5!e0lLh!|dN~^ZRR0iQazHJbix7_1RahN;b2yaXx1Jx7hyI&Ex!XA{~~JA|175 z#T-(}pO_r|%bAsa`>oj#GtUDZ)<=I_y?OC)^G4?LCpb+7S1>uhe=V2%!e#0EGr#*dLpcN$ zJAZ6j&7fqc(6lv1#5r3>kTJ+B(3L?#Fn#yuRp0K{{MPFXRS5iWPx;H$nM%p8nr&7p zDF`X#pPm}A>GRI|nKBB`RF<@y@L*6ll{1N9;iRsYo4cG`q$eH?u#@5nR1!bQ7Isi% zVvD7r>PNSz|dm4+It&D3W2w=o#H)qegbcS6i{ zo3Z@z3$1z!6ko4d!op?y#OA1k(}XF%=FaY_crSP|>hpH%iSmae7S*4QnfQEF)b(8Z z78Rv5H3qhp84*_um%ni4X|pJn6jp9p(IU`s!IGW9@K~Mo_s5;@`OVZk4cmSwYn_dX zHt+3-$X;9OA(0fqAi(&8(eSeUzn%`whkjekx@Flyyp4!f{ z5s|HRI@S|s^ooXd#+iPzs##?}W2dm7(vJ(rF0|c9^%48<=EoED`L!96*G^x3lqaYv zq%8dGi2Clw`+r~VpD!<$rkQ$VTCdS0#RMOrS{Eg^-|FH0cTj!35l@>4 z=VCQ|!6nN#F*kfWe5h{0-NSP^1p_!I-uz-$uc;PVU}k=dNn!KGYu^?ageEN0NVJ&u z=ji^Q+hdnEuuV+zQS#!@;_~o0)1|RWiKVuFtEi^Bwce+@dtEXPZm#<3dobsuCySB9 zQDIF*_0aXV6s~j3zLGRAbd~9>pyb6XFGe)yxN1G|Q#w6u%VvcYi-Z_k|KF_t`8iHN z|8&f>)H5PZJ9b5GvwQo#htrio?Dej%ox10jD|aW{5D0F%Vjfc)*JT(KuczI?rDT=; zd)K1%Z|a>nG*!*cv@srNf8bo8_xgUgmtctFR6#}65Z;B|h8F3)#atSmThiN%BD0fu zK=(Dye3_rGpv0IkX~lv?S!=eQQ%t&E>U%jQGOb7T(TZE@4o(aVN+xZ+ra3ca+*;SG zD3Qz)?GhBwc*7*s=U&ux`-2kKojv!ypVVP$cDg9-Rm$l``OPc-8va_a>H+`HDIJo( zG8!)|_F)tW4GcB4XbXJCb(pPDBuL1!>x34AhmusXgRi|s_UcFcd)EszEqSq9?I^>9 z2^j_wzHCP?Tw46NnO*&OY3NknnF?0fdf)i}{qx^nvBh}$-y}w-dRd=z@!!XnTYvVC zvy)44m@&gMq=t**fP+@;?sGXi+PylKh$O$S_>p{fV)X3j*E4iCrFEpN%2Cj|^7opcrvrnq=CxGYd7K-V7&N#euO5+D9CSr~(bCG< z?>_HHbxP-1Y5KQe-~RT$KN{Dbj+ysp+p61t?@nhm{;gh5f&Q*)IU z&%}BT_GRZ+9}9?_X4oph{3qe$-EbpAw)@*>bOJTPYQY?yIbhbg*8qJ zO0Q%5jpcaVeK-_4+!%LX*tRe2l*o>Rstwkbzy0ex6C?zh%w2rnG|WB8cIw#jDVrSw zJuiBESe%%wBJ#n|p=-s3>x*0ipH%AYt*G_!ayU|X?#As~3R0UEX8)FU zx^aDPt&ZyiiN#F}3mY~yeV@n6?R34gYle91MoEUH61&!UYyK^G(fjh?HA7W~0=;yz zy)B&wxcrlq>rKbT&d!KhNtANZ_&nh>Ys@Bd+@r;Xn4{nv4lfq~`B9Ob9` zHhW6BFIE&-70?wJ+@s_%Lxf|C`IgpwHlnU>$-g3J2fg|z(sZItQ%S31qt7%J)`T9SEntwsa6#hT(w#0ModSkzfiIpi9hB(KP+?_#o4EJdtd}LXOnf;MTNF5NOgQ$h z+|uob`2R=eU5pvSmWtHgk2Csey_3bOWtxM^$@*V;pMR~s{(QN7`wc}6l{1r`rNqh2 zv9r2SU;g!9R-~@4`pQ=oZCL^?0-;j^9{%4i=rOw}_qgkPONOQIbtPN{yk%0FZLi$a`+&nYmIy?cNC97Z+8W%B8D7g}e8Ox#%@Y1}>| zNhl!Itd_I>BEKSIBZJA`0}@GT&+qWxwhUOhuQ(}0jluVn*u)d=`D>L=cP!Cdrr;aA zT!g*Z@qdchvGQ1+&R;iellF%@JdvBd+HmQVImNZ7-X`8yHNkRn(*Ip5%dR}v7JPZ! zLs4}C$Ew`x+j8H=#Ha6+NdB-fFDu#N{9047iz==!{)=e{XVr@czH~QQwW!Ns#ey{q z6GBY9e6(_AFt}DbMB6_OTyoDy@moTz0NddcJ{bZGfkIyQj|o`0riLVJ`1{IrlHrRr zxwFDp1w50OSkqXP{%)MGxzF^Af|Wy)P5GI}DhynI)lE5Op6*F~y-BZC#JR)Kfnn?V zCxQ(-+U>HtHg)!@WGKWKBY}+x#MM7nUDgq8Zo}4Eq z6sCw6EL3}WJ!aK{C0&0bp0WE)`1bjXTvU^kuz;ZT>p5rVNH3Gv^S$(Lh8IJJLsL;v zmBs9{(@!^?xaM_v+upW?Tv_M$hkMN8ShV?C_1{kKS-3f~ zG~a?tz1ic~jDN;o1@#oUGbV+UJ07rbZnm+$HGA$nIe#@t51!Z+v$a|bX8UZmd0%r~ zS!?z(N0s!shHmvby97cQU9SB03vH`EoEX1vRo5yZ$-{F@x-vKpGHf!M=sBrpBh#f) zSw>a)*{jr+JxsZiZx>R!GiKQowa1zB#Q$=zOx(k7$dabAXo-DHr@Z&UFNZA}HI`nm zcd35Pl>BSe*3Ys^MoyQ_46Cwp=ZSwfEP7OeRphgcJP+HdTFz#VB?62KKHuBUtHjst zT+b53nl{;?`F+%T-ia$ZxC8_zd%TfOekEyiR!^N<#8fo29JAh21j+`V!Ou^d>Iy?mf9BNENWMMTfMUVnd` z*w-gHPJXOL^8zrKO86w;bER#v)Y8 zrPEQtjBB?&}O^Q z_Tz!%eqIT=%AjT=8-rC`txl2~Lf5YC3ti+fQOI?pcbd^}y zOp+aEDn7>TsXiZ9{rCU>zbT*h%so}M`R0ljMKJ~WT;}oXuWh~ZG-+qdoARHtJ7!o$ zXxN;ITJ5l6mB)R_Mg1&kYq!=1MU`$Z5D&X3;^JsfZZ5nmEKBoql3~wdqvwqmx?^>j z*nhKYs$LbT-+ECk(D3uww6|xcolf=QbT}6onyowg?5=B<_D_Fy?#vOXd*A;Chzf2C zTPvD)?(l?520W4+#_PB89=3SWcpxqDh5w{Hz1{-oo&nuojBBseLY=5jfLGU1YNWL zsuwU>R2{S2mG`LQox4&0KH1QQsO9_$r?%9uOTE=7YPm7PoMojPo*ovPr(XSctNCo@)VbcK#TE=48wG?l z9w@zGQOhljZh`q>IT6@BOY{ z*R&_^jx1m3G--+A$|cuc*_?m3Z~OM`w`;asd;j$BV-w?gg=wevs#vE6g@hcv)9Km5 z_-a4*kwZEzayn-i+3y_A%9UGpXw^;IGdX(2nxPRvUM((bSTA#&P6awZiTP$xUn8x=-IY!7c z$SX{7K|;>5vrnI9>efex7fQNrTD3tyAn`*&d4%bKP7RhPDQnAmR|N|x#O$exxX

  • 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 SM+>XTL{85A({Fe%<^ce~wu_?x delta 83854 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

    ?eFjJ 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 diff --git a/mods/HELP/mcl_doc_basics/textures/doc_basics_gameplay_mtg_2.png b/mods/HELP/mcl_doc_basics/textures/doc_basics_gameplay_mtg_2.png index 1ab57ba32bac0f556974a943d2aa117619a22414..c565d1b79faa7463dd58a18096d14a0762b9bd60 100644 GIT binary patch literal 95397 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%0ApEo^FYI*`ZLndq#{%I>%O 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 z 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�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 z z*JC^!vXdvTSj5)g!nWdwz^66xi#wKZtm@)mTd<1ZfKTPTO8KBkGn5237BdxOyfWP7G?v3ZT6jy(Cg{PWlPvv%CQ!{10`uVDi?+i|c zGd>{~7p`16OUi=9#YrJJP?SN~SmFJR)lQ)z^Y{FJ^Xu2Ys@>uqT+tf`lYpL$(xyTjue_j z|5;uC_4;Z{<5g~|Wo!%%t5(%=YYGW%EWX#g(zl!E%alNMgc(^WyT_nRZm3=I2kw^7?{`^SU&hkJ*a*pe_xol-a6{9-;-a~ zo4MOK92gcz1qw%hc@sK!ma&2|i;+Xf=Hvy>_*2aH*M8dnM&{m5-S>Bny`TT^w=mEC zPn`$&z3bZ`_G?q=Cs2EfhiX* zhzN4@hFlb36gb)5&|%Oj*U2$gQ-W!Nny|0Kt49`n8`=5Z*eDtYysHfqD}U{KyYzYb z^0#&6b(?IW&nkSKz5BY-rQU$@!+-x>P};TXhWXof7Z`RG`ux3N{&wHXYz2kq9kL7x zf{jn#%sDSU{e1kN7x7x*9t{Z`85|5A-xQ|UEByLjX7XpQ`p0wZ`~QBrtDL*bw##fz ziqYZ3b6#m|DMvaEFtjaO(DTJv<-={u)$(@tA{XDU|98JWy6&#zKJ|kiUaK+ef3EUz z?Z?x8@2AiGx!ru?`=3hBW2Pk~wX-eL$`!Bw_jz6{$3Cn575o!J6#JBfT+g0Kdb9jz z=YcaF9;S>h%F4IjzN;hl`RJ!5C%iXEEMBlsU3}AoNdk(31{+sOESh1oai8VdmrF{m zvYpb?SX8E6F>(8P#y?Ek^JVwz-5ipWZ_7mOpB1V&gU9l7*?!(M%fwgwKaHN4OuBh` z`t^M>zb&pUsyxAF`swC|_p|iU6y+DsiH&*ls?`1q3md~58zq4QQ{;Fz3m3V%6fFq; zF~3LTp2vgr*8A!M>zq{oCQx_uFSm3hs};|1awE?wfynd?y5i`i2UAUX*aW*1YcTr_-A+uU-}7+Ii-Q z#R|=dib9TN4^VJPu+aG?DyAq|LW}G&xn2Av}RS7oxbtJhXps(V-**i z+VWLNsaa6L&oZq#rkH^tVcDt!F2ZidHwKp&9-I7h)r|B1o-L0rXV+c*bJx3H5Bydq zZH<|=OsKT1a9XNd&>0)y6AN>nZ!Z42&a=7XZp~H|7s1YCE=ZypJMA618 z3?e*Nj_@>2n7||0czj8F;)(7(AKv{{7k^!Qd24lJr1hlYby4U1{ZBa@c#;&vz^fO0 z(W1}u2&;dGkg%GzlbFQGpuM;MJdOWz!}@CBoxAH*^B8*tI4yth$TogoI7eAo;YRbR zd7Hj?rG0A-Is3jslYwEy=8Y=FS?5>{Bz8-knON44F=eLWsrm(rKFGf)Xq#{(D2Ty< z)um(cOu@~`$2OgCI`(&hf|?7Pfs)9?U3ozvp~6l3q?4tdUrl;ukv^G)Yl4X)^Fsl5 z#?O-$bsf9dR36-R_{E0rt?ThEF0K6b^0T(juUA*Y z+s~%$)HodwH!tq){oFaua~^H<&}#_@(|h6~5_%wl@dN{J&zp*Q1tNzv{TcS(+5g|K z{bBg7H}~u04@xBSIVUdeWwz)uYC3XAFhdR3?1-LL6%67(ZB-+hiE-`ys z_sI!27(`1X*ftk#>O5=UdU*!J!=G2L?*Ehi|4GWTW^Sv-9!GT-H6^R_kqIsVSCy|^ zJfkByW1^%_*3k(8E(d#NT+vx+B(P$ZUgJd^{l6kDU%L<>auK#sXePh3;o8RA?f6h$Gc^`XMZqpow53gRmTCV@U zu4689dCxcD=arIk*pr!+Y|>8hGBVy25x9`!wBkkc`L)N{f2pPSF}S}!7@)pedWzah zQv+sJW0pCexEZ({TE0z~=+10Wck&B+!eyq(-CK`wBu-m&)MUwx_Encu@-})TeAp|* zala%}uD>$IXTP)a>vo^7a}$r{SE=uxz5e&P+!xz--q@ah_xqV|+WQZ6N+<~~>{4Rd ze0tLv9v78kH@4RHoZQ(n!(~#r#N`)r*cC#P)1F)WxUgmSI{9OT67Gh*u7MTr1txaf ztK7oBJiFug)wDA&reqZDnQ(&fMvAPlbttRx^SeoLwOo02 zBg_Nzj;;_s#lW5R?85iCN{(?sCyq(X{G%>k8)Wh4(dqrxSAKun5UnTX9N%4b+I3#5 z&Ux?md$V}-f=kX>URH6=Pc{imOP{=L_N9D=6nD$R<}WfC80^{%KIVpg+ObT4ae4fL z1e3qL0;2tn=U-Y>AK14?*4H}iUSQ-!!6h4I*&ptC@E}w;|B)Lsh4JG4s}M|NZ)Q_J_Q%(9J(TUFdE9H^HX#@P`sHrQ;e~UO(QK`+YB8 z(-D)tuk#Mj&dF`g3bSnznN^HJ4jez#aeNI2gHMyZ zs8wL7Pnure8v!552A62;38|9Ct8X5bVm5MUc)VQg!Bi>R8zpL4o`NSr zc5f_>5VrDMnLF$CZR_Z{I_Xp0U+}Z@uqwQLUC5BTSoO%woPQ_V<&Ug8T#>H=O^ zM6N3M^6S8azOOu&OY1IQaAF8`nJ1HM<2N(t6$g{0+iaP{+8di0bk3vsZY~`wR%tFRlxa^C znD}6G`=wx36BA{YWs5DHdOTL7xi9uPP&uC^c+>3Nzi%cLRu-PTCx1(?Vt%WES?+zA zRW>1;Z+`u|&N%!y3&&}t-+vZ=zrWk&@T=x2PxWhql?sJF2*T26lDD)$? z_JiN&p2m{e8xy(bJXe1%KPR?!)f8FV)h~NAeZ5MiRAIBpmfP#=?iv3!ntybkx8XF`c|lcsRtG0M`1ov9*7ed_`;@psSYhC1x>2WPSN{Hel|L_5%b)x7=<4g&RxMYH{#|r`zdr2h>g(%w zCvKH?JFnJ|W7cQIH%Yl_S=#+;zQH1uap%n6o_OoPCsbw7!}h!E#GX*rRM(Aj^uOi0 z2OiYnRj!s`l}NZ$mf^4>?Q-SCkTZS#C$j#yd87&LeSf0FK4Mdb+lobjNz08C*p&*n zvJUVE+v=S@dH1tfMfZY}GUb0K@Q6rctoqZyZg9E2$NOi0#-7K2ciEh8PYf|tDS5Lh zYuT#be;rE?t=X_@tM6==e~-w#+|Ep>?$T|%JRSOxZnJJ zdBTFM*z4bFpWCKKPTR;oZ}}D5hM8(<&uzQ87*r?j-u?FM*}pl3n_|wH{r>xIL$boP zD`xGpeJ!HTbmq#uGVFcR+_bRMD<_z#xWi+PY3v^REyZ6tKh=gWKfG|&s$J51ns3@{ ze7x)~d;FR7&;0lK?SKB>&+IJ8wxwlRM@xr^tG~d717~^ycm*3iW_SrMv{@#$>~#Bf zCFA^1Q=45i9%)j(Y`(UUJsXqFCvbnd#(cT`4aba$ODwgVli0r1?7n+sNpe%sHlM{k zi^VwVTb8}B|MpQ@Ij8<6`~8n~bJbjxS(F)!-|Y^(8p7Mi;}9hDvhq-<^4}ky&!2Q- za$$8an%thi+TiOYnj|yxr{RacYacPxFf=I6=ymo~|N3iM{QGX5)iuXX$UQ6xW7utRO5pf1%Pn`; zM2MVguk&dCeU|Izh2?Qm+UvGP?5X%w^1}K`$E05i`JbyRvV>HDYJR@u1H08xy_K;vk1D08@*hN2Fvw+~4VSl`|NFzyXW8#x9DaV@ z-1qm@v$0b{pPpQ$CH`4QdlgrM%jU!P_T^ps`fnSDwo8HH?V~Ry_jI*8KbDE?`G2zC zK3H=5_uYkJN%O;h_RP3YuyKRV^cP(17dLO+_)|LsVT80Z|;2Yd~JHB%K?pCscP;Q zv1Oa)d}qFM_b#(xwf!+cPPJuPe^nPAd%xy*W%`ZpZJPVVBR;=AdGb4R`8~@A*QXx7 zzf9tlb^o7lE#H{)KJo7?U}tbqnKWarv&s^s)5%_jz80oEhO0Pd9Gme-p|x1)QAJXa zvvEy=ZIIGDwYdc=&e(K5+Wu}C6N3=r0!`lwTW+|AiY!y)YcDG~c>dI!nZg>sdv5&y z8vp<6*|TRa9N%*y{Bz~?t?kQ7T~@yQwQFzZqs>|d2R4+;Fj;;UNw|^EADO1WrlqF# z_{YEM_qE>+c5l14Ha|abo~Y03e-o^~e|$c_H@WKTtECA=2h;auEZX*cJ=f!!x_|aVBmcR5840DF77UxU9enyR#a$=P{xz$pH;P~L z{#ve#|NJ;TEq^VKnG2m;zW#mt_inB9&EJn+oqT%rsAc4(!a36`6?X03J<%ks^2P68 z-`8k2khEroPL47{r;ZHrIQruQcC_zh|>0Z@In;Y}zTxVrqt z{qt$Yhp&9OD=_`V9HyCGUW-@qII}!H`pV_3P)6j`*|m4S@@_e}ewyO>V3}XrWGAb% zF3fE%S7Y)l`gYSMXZKqP>HRfKdCOu>E@2X!=-BV%*^(f@sd6$w!1;tp;|#$`jWbl8 z1Oix$O_jn2b}=5f{JDGE>s!mtZpzslx%k%8r>&jKR90U-dH1iaLR0zd-@hv(&#XSR*`39~ zS5q{!w63zUu+Xm0R@jPZYRUe6#v3+i-Ciemyl`hs+l2e~?y(tgE{(%O_!UP45W-^9RH_c{^Hf0$*Z>bvUm92 zzMo?j+taWsd+~a`8cXX<{dM8*ez$Mf|K}U`_v$If^ouv%i`!@K^8C-Yu8-{J{(L)K z{^g`?k1D@3Ymh{r^_)pELELxc%>P!*3pHCwcB(>3#UxYBXgH-Ta|W2ttN7K^?nfkzSF=ZdtR-yC^=>CYa4%6$=Q!nohp#$G>s zVQa2zvW=~6>AA19@zYq1`;(QLCSU%%F8kEaH7j@5b(oibKeyB9{Q9)dx1IOy{Z~2T zt@!fiP4hlamXi@wn8dMRp@y5!G^K7qsfCJ)8BC^E!`j0(&$Li?Xc0IQag1qK!mHDB z0(=+foEF%0-F&-Na_sh{>cVco&#(V^@3;QHU-SQR8|>b*T64-E%=mwDkMCy&<;g;a0Ca7XGBbm)4_-Zm^rxFMA3dzQaZtJ5S1Qc@3no~SU<=Bj4E=OE8 ztT^>te_p8TKXd!)mlruiI_jk@fAQNze5#hVxA50U(z<=u&v&BwhASKQ%+2t!(3Gfp zet;)rueI8DIpsN*UE1=GKH<5?S|EE|MCr)Nu29`c=I8z{%WJ=QZS9W34IH(M? zbgKHPUmMppOnCY3-@a4c3cK#-)NrV)t2^6^L`LYYYg_kShGm1Ss}Rp(6W_J7PTiTW zH=W^JVA=lNx~G2TnEn3oxIZL!^G&1O&(FvAJicKX+qH6)m(z*Qe_q}EU0S=t@@V6f>+PP{~YO}Nb5WPg1)EDDjV)}4rtQ&KXf>IsE?AuVJ^2d25!^veuEp-bHPSI3xFk-R(B<^?i z*nwqDp)JSFc^Nq-F!~BRIJH0NQrtA-Zob)~Ffmr)S2MysPu03}Z>@7+&4+{T3z z&E{9Xe{69^ytrt`-F4xspXP*hX)0R2cj7qxG|6)I%wvb^g3}Z&!X~SnWL0b1bY`vqRlpFj6;b@=+@hE?y+pFiK07^4&R`DfFFaP{Tw zwR>;B?b4Yoni~9mdiTy`sdhfjw9u=iYnRLj3Hkcy)2i&<`*NF)-!N~vH=$LAK}loD ztsv%U4Qg`)BpjJSU4>7aNL3R(#(H{=YQiVA#}e<~Utg8A%r)>$+3kJrZ*7x(91(hT z**mA5r_!_w?me*HbMU@yv|wHKpJT6om|IM~&wT55`~07`kGl#-ah zp#JCamb1(fLK}T21B0)zTbZzZm{2NvD?C4xBCvm%t&9^iNzkv<|+2QefCW%r|6#Fy!{mqZDa56DLQBP zc;UMJe?Fc5S#!*1_E*~lMu#oT795Wo*LQIq9 z9(cGysk6su$>pMLr!w3oMf$Ilz2$try!QJ3eRaB%(n2j~hnB{^|6c84ZE1V5>(#e^ z6ZHKyy>hv^Uv|Pjxmh#sw|zWV=OOTpUFTi=vcUc9{-2%wzLraG{>grJ@s5s@zYjcF zSKfZQg{8+K_!pm$q@QGK`>BxX;F7H4zhn&p7?RZ(41M<-Ik%>@Xb3hIhx$I~ojf7v zgz48wIy=rZ-Zq`RCgsz<*X@7n-p|dx^{iWepT=jU^Pg|;zJ2*$N!;9JQ|6qWq`{~# zqi>?a-0z>y%-7NK-Iy!=d`{N1)JU(w-M1~C&n%SLwfpw#%a?;M?ufg8F3mM`s=E4W z0V5ZsqB9j$Rrj{N%`wyNj=WsLFd@~|tE#ec=k2?)@2z?;jU1F2?7p3ylXbYihMS>a%}2K_?JX@2kF=fr zvR3F?J}{C__#Uthm(SNwgu+Nz%? zkIUb^dneC)wwC_9n7GiNJUzi(F2TNnLX%c*i_K26`ypTdFJ0-=QStaS@2{`Ex@nb> zpv9ZlNB4eOQy{EY^XM` zuxDb&x^?q-4u5!c_4I_t6CPz%{(5rq^Ro+PUlq@%rHnZDJNOYpQ)aRbLiQ{qyx@^{;TD8XL z{fgXM3t#gzbj0nc&_A~EP_T=hjv8lnU-%`Th6d%gf8fpNBuTxOe}){mwmBwwA10&Za$&Ra?|v8!L7- zYwNDPdv#A2ZH(x7%#iT;=bG2Iw&i~NJy-hYQFi@H3)aWq7md{9lwl9wwJuxLGjwW4 zuGin9xMPVnSA0$5k8YIzb?w2um=8x|c+d9uGUzzl%s=ZX+??sP;^LJ@H}2odv-|fY z*+sb5VcX4n>6IIAzp=HPpIRB{GBL5I_I5MVtOahpw(VZa+Q0SZ|2fVO`n$B9d)}oR zUu%Wgckiz+Ev>YhDy`^e!qc@Nqvt?y`IpX(2bXzWV^2|;C@2$rI^hSO16$veI)l=s zZVVyDm)Q9@&KQ;Gg>;`j^LxglTG`!sca}dnrWYACS2zEC_uaBuyLg?n?oAqHzoS?k zOqX6M`MO6d_mQr$%A%sMD{mkEy1Lr1EHzMJSz*p`Md@E37xUY%eQkBD;)Z$88ySA* z<37`;`}4IQetms?`9i&}psVZFukT#({`cFw$2O~%?XuLFws}g*-kqiwHqDvsAaf~i z_vW2@E8hS7`&U;`ciQT0xnZZLmcM)VZkJZr#2;z9&-?0!uYUdR)-koK-$OqCL@ce+V6V!@qaSzT}$p(%bnq=S}`G3uM;)e{BDL)-0d&&~INpy}3D= z+sLunS-+%&rC-yLc}|tLw0(-8U?!7`pPUlYK2g5891490gA9(E@9gf}beF+r%KoZY z?I}%6Er!biFP(ihPjk+?u+N+RJlHEdkvDR#?Y_&`*tN&%&8zeF{{uPRz56HSU_Sfnt0!+Z zpwpFt0Tg;V?BS{gUtnXRZa|T6@PzieHn3f`oai_ zpZD!uf2^Ofu3mw!+rG@Q{NrI~F7HH# ziH$|eY(A{(@6lP+a^T6QJsG!`y}vbwJ8F_*SO5JL%JKerkEYvM zC&fj%x6g@hK3Y^)UoYMCfBF9}=aYNZ$L+29^=0SxJekK?m0b-TJMQJpv#)=*_x_!A z;ioU_oX^XDx97Crf>m9+?&X^8UcG#}%1W)+Y0v+^%l|*kAw6~4)0zA-n+|=Rc<;EO zx`9JspT!TuZC$_q?EP*uf2O3hmb2!?6N$IYVy_GBEZVmstynbomD$(7NoJ?JYU*!n zTeR_Jmo^XQM8N>j4#%&tX4QYDHom$4_y_MPk-F1oo_z1Qzxna0|Ih!wuK#>v{P>^4F?$fI<~M|3#o^BS2rv>xZT`s? z?)SqdUmm5DR_(Hi3~?1?5)jxtGt;ZEXTbulgTE8s9C`BX+p_oVM{5>pmEN5*cV2qs zzh7ThPhoSgwckG@wAeFBo=@oV&6km(VWqVKm!B3%ep=&q%FbDtCB)W_{m--WAJ=X_ zng3?v?<=>xKZUnP)u&$j*WPpgQqW)7Tf6=@2xa8o{oj5=b!MZT$}hPxWv979uP1W| zO3YNcF>&R=Hy_vM*PU7R>Cof;S+@V`o*IsX3CCAtP z`t|EVnP9K&+sl3L)_i&B-u<&i=J>A6TkBGv?^@Sy7<%>1)zjDI_xwM|E?;BN^Y-6{ z>YtyU=9s;1&)a=J#-_Hc=;xNGbx!kyA79|FwYNy=cga$l@Y^T(%aVC21{vmYb7O4x z?1iA` ztO;emou{Ryl~q?qU*G!OPbJq(I#{>s(_??Tb*nyodv=Wd)Fz$NO{>1u_IJ2kF^j$b zU9sh8(!}RK|7}>k>eZ`PS+)BGJuBmuOnJ4dudt-g{5G#*?YEohvDeMd-U~R%>iX?W zyd>ENf_4baG>OiqdtHxm@ScjFqC+Z#!RDzi4)E=ocLS+|J!pf%R;rZBQNG27x7>xRFH>1pyc9~hOcl>U9#E^k*`6?*;a%a=EQ{`_gtm*&=D zcy!-;#sry120YK7i|@XxcmDI|&zrYpcW#(<_O2!1Hsd-@kw7c(zCWxZugP)BGnrNZamw>1LAI zeErwE?!GI(dtvVUxq4!oEy~2&H&33tF|$M_=Ghd_8=Z{I6BVT%JbAxZN-p?N!+rg% z`bmfH*T~G>xqS`;bFGOL&)K)zdNm6aW=UM=$jOpm>8dDsz;l4(VxMlng=OoUgdeZ< z+md*Bw!y^bx23zk`x*%{yvcar7pBEDLrZDjzI}S9V{CY5F?bve>5<)aV1XxNjodNA zs^`BFb-HYpnH<}A!q`{K)Ay*cq=3*ao9QCAw+T<&G-svL?Qd#oNv<=QAN>9McXRsr zbLY;@S|)hW-~O*p=>C7do*M8hU%p&v)BX2?AD^V`jL=Ey(OfFwE?WKV&Ck5;)qj6| zy}aCi^(rfS``!EZ_Z!ZeKmU8JzstSf5|1r-j?75E`KzwBxVXA%SCr25nfk01K3(U8 zRai1+uM5A$%Us=V_-x*VC3)4EZHBk@Wp3O3*5RMZp|kteC+{*4+q&%KfvpGIYwyR$ z#hgn&dSUtDeawd=EsdK^Ufo!J^^wYHC#hRT3?Fv%3dYVf&|s@7_;^B2hGVh2`9s~n zYHh*v`bS28bC0#?SDRb>Oz2@?*kR#x`&*=jqmZ$GQQGk^f#9$LAu|_+&B=>1SX>pF z-KWj$oRzrfhx6PUzs|h55%%I>q>8ihVRI*shD8_pov&|?+-4HYkYXZqcCYgWm6JiA z?gKY_IwdF$5yUU+_Y zja_s|XzH@^@^aU}FSYkeYdIF?-ac6tdi8GJ^wgU8@w+!~ zbdD8nekl;Hv?=cX+&OcOSeW@1mzJ_Fh`n!LT~=x#vuf3;O-bA4%;r8TaJz5~yQ6=` z;j1-e8M9)S_ZqUfcp5KseL2a?q@(5J#Stozek&f%z&_nYZ!NU7 zBz>Ya1z#`uxa`DA#)nH3e0@1jEL(G2q-P`h8!3iWiW0)-S6MEq^e^?%x+pkTFMRc- zjjGQ-FUxG=j=im{Wc_Mao|(3*592WthRN>h70$$jSPJF6yY6ve>(}XD?^SZmylwva z?7KX(_<3{Y%$Yma@bllh$1K0UdD*=!_xktS`~P&;t0~=n8x|VBr$Yby=C@_mTh~jr zCGNLRi8SnS?)i9gbGp)}^7{Y66GfW#@7_QA?DOa8;{NmPB-`pF+9Z;%ml__Mt{<-( zuKjhL;Qg{&d^aR_^>7_C^4WWgQE>81##QHAJZ|t8z6mw_yl+Qop&U0@)mp$w6{5x&ZOUIovS3H<_hg1Di&Md3zes2>PGF}O$@V857EMziL)Npv@ z__bl4x@q$A&2L+F8p-nce7GL5$Sb*5LE z%|5&T&!bY)*~W>JN;b_{-OIN4tMp-x*4HW$`=uj(E1xO)FUVsQz}%D^9#J9S+T_ll z@nQeZ`Tykw7QT-@KczBXi|wS3&*YUIDx#*Qe~$?SGlou7(OlKxVKlYf{#419m4^O9k{1LY+m#C*E0FGLXqdE5B&M_X^q2&43{Y?iU%xugoK$Yo`_y?10rSCQG(qy5QycJAD{!=nDzm&~5R?YHO7 znX@Kr_3hi$#-}&=gg%l`-x@Z})$7vtxvN?yoPA#W{_phox}Oi-<#okAzb*Uy=V$lP zq)Lk`nyR6p-X0oCvF1yr%qh0ho^4i|Z1rZ_HTg%0vb&oNc^kIh{`>W9X>k5}J^$I; z&Ua0n#VyQ!Jm;SI*SfuxRfUDytbRUvZohl)-muF8hr;*&a1Fn%xZ!)xJI9S0 z!xvWb1!phcmgzUG`)G~Ys;4!1tDNso>JbZ``Mjv*p7smo8!s2mztz0?-`RkB^N;0Q zT{zQtamsz;1uN%%Za&(`&~fbl&HrEO`8iytSuUIW)Txx^g0hb^!^DRX(jNn+|308* zyt5{&EJezeEpd5Mcd`-}!vo)-SH5MhZn(|9aN+KI{@u%_8m8&#pMH9>#_W8pgKwe2 z@l{+LZ#w2Gt302h#^|DU{>`Q}1$He;x8=%iAD(ujBf~CUXS#aAj@xf1eE9UKv$*p1 z*GWe#pWoRi``w~%)vmjFbBjO!{8O;v^{#z;_LTI+@2`s$shpSIeKcujOiJXlIri4p z-iB98_eSU(&{<~D=REDHYuufC_wL@iH|yrr%j)NLeyx&yJVX3vj-7sbxAX12`)a>_ zonBwQ^^|sc-^Sp8>5|nX9$YzNKz*{&;uEzxl`V4L|HS==*G`lEgweRSuprKR5ZP1+J7{D&79zqr`c} zy3Yb18qaXbNvZ5{Rs1~d?N7b)Qjf|Nf1T0cGGs_J?{V(ZOR?(FDKcCC$;Q9-^{E1h zS3KG-PEH01X`Y+{CwKO2(g=t4lR`s7?|(P!du-9SarLSqnd6&u zHtW18`yOn6FMNI6-inWlW}SWaF7Mp=^Q*J!YHK&g=;`b0Pd}}?U|Vi?$2sfwvPxyK z=F1u*#83bElN2i8-uT+jB1I)8%v5>Kt?)5UA&Us<4Wdh*kg7CG_tf4_^bp1gdzxLEtXw?<{L@y{zgIF03tT za9jRUR@wG_yHzwk{k+k;d9u3a4)$5ElE2JIJY?^hQaAnaiRv<+_5QB)EDNSNu=;YG z-T2)q?ly$w(a)Iye z!q>Bw9WVUzX0rbr{z{Io1q=ztI}-XjXNFA53fZ9H*(tiAvoQL);Y$m*v|ame$KB8E z{A-lu<)zS}GU?j)?dGd*)@)SS^fu3S_H?#IX8K)C5_#{}t&R*7o7!>b{{4S1-0ib& z*X`Z+`^jYgO?UR!{r&Xo*RL;MLauJRojYxB-M244yT$eA6#u@Pw|8HE;TJn^&3pIm z>5FyW%n>uXzD-x~Y})3hMV=zJTtrsAda}njQ|GmEid}c+_y0fh|KC6H?$e)5tJ1#T z-W|KQ-?_ZB^lIs~(z{t3HM;+#+yCEP|NZ^{x0BVwyKla!|FQkQeo@`Vh&glS{{1U% zpQ@+v<7m<}*0zlF(|<01pT9vpoN?DUaCeNJtQslUK zfT^&7Z5r#>h5N(>t~kh9N%%gHwsz|*cyxw6fR)8J%f(s7SuAYx&#bLMT!EKr_6fY) ztmDmgL`SK`qvK3QLSJGJC&Mn4z=Ly)jlWqYq)9m0nLlsPNIBAS_`>zl*lC;PL0z`_ zHQVmLkKgylE7Y|`a#mG+_2*x&UT*I0KD{gN+UwpdsmD9+=B-*KvN5q^_ua&uF-!;Y zwrh8P`t(VNA#PtyeD{8Xx-6GJ-_6^8Gbin{(bAIo^7z^SMJ2%nD|wuwx8IH} zo_k&L*P+>rd;kC0`};TVktKfJi(XW;(PDaA7M^Bb-9_>+WBSAyT~(d zXXDrFpXmEVo6CLGM)rGCm2Eis1OK)wEl~dPY4)WbzAulIA9-`bjYWQ)2*<~W?G7%- zEno18eE-O|K&|~y&bh!3A~MhB8Hcl^A7pG?(0RJlX78SW%j;JEf44kdZr0?@lOx4W z_y};$;FP?vQStx__hl7N(}j%@M;3>r9PjHCoEUg)?bhz!_ z7QH@y*EVjw?qi;=IR;Orm{{a9tWa2`^{V;0iPFRwlNK>2Fodqzo!HUb>s)UkQE_mO zf5i)B@iziZ-}_>PTvdV-KHY0w_@3YTbKeY&rHOm@aYlZ7^66+&VUb0S`R=pr@_WOl zZeG8?%JoIuo{IgicUhdOe!n+8t+bfKdVcCm$5~1~zyIo;-+VMFHEs9ZbJgpacHdq2 z{&#nG_mm@xpNb_H7kHe=^J&st)aX91RjIu0&1{Xm%NTX9{^nKSdu(yDMQCyP!t5w# z4#g>{OTFfGKdmX-H0LeCEmVnZTjk`JtyQ&J>l%Hn``&3ezLHl(y}fFmxcui z9xP`#jbD`^Vy?L{HfK-W+$Pr$Gjk^MhsuNZ`jdMM8zr?27Of~r zp6@XI^i%cuwRU{9*ZF?mP2Bor)u!9IGdfQ87FxXF?>?Gj82|5y`u~52`R(WEKePY) z^8WpM_s%^p7CgIY&#E+a_0{3)*M%lZ{N82x#MNy6+4;8BVN;7QcZQrhH8Wo4)Wigd zUw_l?%D-Cp`qw`0H%=car(Qq&@ZUSPUyU7p=gz-gHcch+!{@ATzrMb$tKA>5cG9c! zb-%tpeNz^u>zZ`?&CTC8b0$6)Ef#D2&G;*!@QN0@!lMbA0?P4mb}Luyd3`(4qhrU- zJh9KI5hxiM!AD}RYao(^nPdc>m4d}(Fn=VqZT?)f@>hN_7! z42}XDKCW2zviAscgY>Z-`Lj-Maw@xY^TzUp-Wx^Ij;yq9;_^}0s#*VIn{1OypZe@< zkwo7VG5Oa?3QDEHi=B=?krA$bq`csYhWMign<_<%=0C6WoTEHprDD`|9=i>nPqerO zvdFV}Hq{yQEnXbuql!X@xd|hl-`{>TkH6dS`XD}%2wBi2CaKgYV zE7*$jXuEtoPwwZ-`+vXud-v{@x((U8x2_fZ+01`0eB-XXS<8NIw*ReOd;k45>$JSv z(`L@BlsLA@L~!r^{prtc=7e2uzquw#cl!JN|LdlumflUN%xgHJm$FmtmXY?BIiC0L z-dpoJ?KP)(w`<^B_O{50TMd<%8d=;vEj+`0e#zs6wt0cRoL~Qxh;DlHdVT!U%8&o5 z<@udIz42i@=(=%0tFCJNPsan=+{prY!GoH>=-lW(dprUrB;i||B zj$>8H+51A*mbT20iNCDeX=5*EKlk}#CHo*Z8-4%H%ViK;N>e!AqUR{$QRuB_AF}|-#Ouj zJc5EV7&sUtFS$5aF|G;rN;YwFk?G(N5WWh;egMXo&yOE z9!xh%?k+G9aN)_lygk|0g*7E@p8gz0L!lLx#~Gx2Zw2}W3on!mR@uIG_a-R`oztua^KIB%E#tu)1Q(e3xr&kyC8%?>SgiCKSr^UWN)`TJ{r7Hzfp`{eQY zZMWZA^!>kC|7-pC-+$}&|M&m@biY*c{@b~F`sY`#y7jKiMelsKK#}J*>nr8IqbySr z+a7T2Nw$wax5#YX%o9FA$JUvinZxYzvb|x!GUsT1ww@WOmdcf%VhoyRsySI($3AU6 z9~CdwTC8{a)6*KUPdVFf#;yN;Y~j1f)+V31OnMdh)55NQ&Dt6yI#r@^@{$0Zb@TS0 zc$RMcyj5`Gq*)3NCb~AttusH{lLJ^}DVdY*v4- z3N$9bgmYnDDk-IeQ@un@SBkj1`jGDGcMkV;Yy1I-nz9wZY+l1{# z^BWkJx$B>kV{mdmb1889NoBoXFQnxY-}-d8tV&AYTIN2z=+eLYA7=74NIbmZC!{th zN5y!y7W48gEDRS|F4-knG0KQv-S+xg`>`aiWD{jI*+sh^996P&a8}>!a{o!u{ZIXc zla8Of;iAy~hBNb&x1Gx#LC%9Bp`sTX4puV0nf2}8voyo#Jr&;sB`V?-9t*G+)!oWH z%Fx-FAoJ+-T|LR>#$pvFk2n+GzpbjOOkRNuQ#)VjZBsK`R-1q6&BatZ{paWPRMqB- zzdidmJbtfK)!#Rd`@P?HZpix{YJd9Fqr?1mo|HQXZ~y0l<^S^f@0Xt@nf6WWVDM>dZ*gWizf@CLK(YGy^zKxd zw!)5b^YWGzvu=G8IKJ`q?LwKPp2>>OV>M3CJR#9_h#_vT)ak5~F1zoFH41Ee&+o@H zdFDZb9#6yGsu!2n$uD>pYRIjYmKwUZ;-Av#LutX{u8cf}YJ$F#_H-VRtKodo@nLO6 z%gu>8KFj~}VxK>a{dxDl z___ywRqQeLlu-5)&pW{|Ekx+R6fJ{*Khv_cyGnQhABNmzD9QP`U|GMQmXnhMYp|hl zu^qSX?RDFwnG`%D!%UrDx$A1#h3#%o)R<`#@M5N{p?SY)kj2bXMq4+zEO$$IQLt*V zx`Rs@hlfTaLqgsyyOkoY&q~6cMMj3S9C)L`xuDxYQdz0f$=vOEFYlxo5|g-%w^5XFV9*GN2V{a?>ZQdibd)!*_nZ{r7uo z&A*qImn*&e^GC*KX62`J7oH2sPt#PUMKpHK)KE?QcFJno-@JN@*tsiICn|dStDJc@ zclNf#_py`a#YBeQe0z7->udh=($aR^Tw{9la`)%`e{cW4KY8`?d*ZXd{`&KV>4s#( zB>z)heubOf^>wnFyuQW9u&SuCtgNr&u!YEqjFX8W3C_!_w%Dt`u)lf5d(y!RC1;9l zWUFy)z)@0GhUM@q}0BF6TI#Oj)o19Jc61$&m= zU)Gl59=CCEc$x##j42X4>Sx(`+R}oLytpyDl*wDp@Isl0Wkt_Ap9$K`P7m7OT|Ulm zLZo(XlS5U@`U#RNnSAv&)Ch-s30Tm{kQe))9d_XHKIB9F;@&ddSM&pP*tJM?yhOr5(~gg2y@ zH{z;*$XAJ5j4GE!BxH^(IXgYRK6d-t3*RcIaUKfUHE-&jlEeQ3xDP(vBz3%E^U8}K zf4=N;s7+AwQF77Ia?w%p>0uFacdB@B&;FiEptDQaIg#7jtgqaizP|imqG|kJ@&8Bn zdpiIB)II%doixX}^XvZov_BuzlN+7Cz5Mgftc?*{a;1}_?&mWYoG)frJKOBEk;|U_ z``52prEzMye!N}nuP0x=YYRqi6MMN6p4^zfW|ht95YdgZ&TBuAs(X1d7V{5hhS2(VI@M!pE@pvNJ6uE5za{?lj7AXja3Nzeld3fb9 ztDowocR6u?U)2A}H~TIvJjcGa%HoY<>WfPT%O;2}JmWNNyCB1jGZRiWT=6;DH?^xl zEiKJ##Vlh{RWSorWtE@;y~!ypPbMsVfB8bryZHXv#YWqFW2dH`Fp@M~D#*~VL-JTl z)xH_MNwH1=y-BVd7G?@r3zi+=^A%-qWm)#S&_v-w;%R2*ltrs_%(t)K-Mnq*{TA1G z?VFd{M@};{(NF#H>-2o#nk_bw^XA*1?EY~7|Ly<|9Bd&y*^vF|Nr&>zv8#&R+pFm|M`5r@#C`Ho|?W4c?>(Mib6xL8uSPk znY~I-NQ;_s^Vhd$8}^=;{Cvl}{mPZ!>sDUAAXg@9l0w3r>`nlAv<9MPXKk(ZmmoO5Ydw-1C%CXkZl7Sm0OWv7jO23B%P3L6`D+4EvHK zLeKOZcq4Jd(Zy-;_Q(_a66fw?T|MVW=B8CM4~Q(A6y-K2s9`eqbeAtXEYhKZa)(qtJXiHjxS1wuQI8+;I1&1lf>{HDCUa@zIM2)ip#QD2TpDjHGMv(L7}OMQT8pXYe=hxPmhm^)Z%Z+mpD=woUa>S zd|05-wJG!0?z6jA_)W2t;u93IIK`AM_V_|cEZYm2FxP9Y(nn>2g=JMeUvF+`|Y=P@5&l~ubrRz_vq1^fB)Xi+pgX9>Cc}_XIz%Nwt8+O zcy4+q<39thVDq$BP0Gg%dzThRimlo-W#M)~iuwIT4O>YYZ&Pt`twUZs6Z2 z%B-BiQn2QnkfE)}j#tjF{`7kNI(B+->@1EeeVt4!4SsL8c~46+5_T|9`?{nn!R3g{ z2`>j9n}<$v250jdwd6yuJ6|{0aHKDQSCB(snb<^&uaySI&d1Y&%Z|PY+}LFMf!ELN z^hTHWjZ9~Gavn`vz`i&8o7mfT$#+hivE8}n*8A^^d;InEzwM3<=6}9i-8WkPn>EYE zxT%kByy5xs<;xn4(;7+-g1p=Xv@*K5G@LH?d3dboNK#|V6qq$hdgJ?7TaV}V_@rcM|CW#YIzMK+~ zJg`_bOSsTpL1~VjnE$=~tIEsc_x$8F1t z``Z;i>4@hUe zvv)iD&Pi0+vXO`yC&@&@lGRtN8V+#f~CWb{Tr{4)VGRH-R z{dvZr-4^ag(v0|=FMr+n-NVJDr$VL1)#d6EwPl$r+~dxkKY#A|((1oY!#iHcmghdN zO<4A{NYE+l*=C!RuZhgg@fO^zlUK4yhfd@b;l075X3or8`YP68m6yk5+xljEOR+w= zy#l5J&Vk-sFFHaP9|azlb=2uEw4QOsy6TO7^%Nh+0EQ3~W2X(vwYzg*41cH-D+ z9p!)|H#egMHTQqHP6srn^YIIcH?aRuoi%fo%D3SBWM)C{i8_jhmi%>jG9%!j`O4!f zjr;?yK3TZv;S68)8k3U&{V_L6N_=@!o#yU6YT3;2?%A)hjWd)Vzn=a2X_8>m-TU{a zrv7{K>Cv-iY@C6K<-fbOf4`Qu`Y4k`t=OkU25N$ytIjDZ&78mI&dKkthCWTY9m^7H z%gwJvOGmeKESOiYGwSHNWR=HuE9TBWw|UKu+gEL$EN;?x^J-pfS7Cz4goy`cIwc%` zb0lE$rpGA;OJ@}X?LYo3>BoaT+Q!Rga4a~%l+jh#&+>SOkJr2g3EoNH=XLH{<{E0W z>XfB%rT<}rl34Xg^X%(i?XCa&EA+P6>Z`9#PF`L)@BZDpN{_Byy_&Z_ch<9Je!CU? zXV0F^wOsb{;4+cpg>%k6OB1-Ux@q}@)MCjgJ6FDT4&MGX?|%7Li)}}BW_v6>mN>Ey4A|2^SpXlcf-MKLV~&J0f9<_UH*xb$3{JAYl1+QL7QuOYF3tzF0aBrLBpmDv(ztFW(Wv`Zk28i6LoY<{Uj%! zB-?xtSNWJARQHRcOF0S6cxW~^is zQZ)S0px}_fU=;Ym=E6kVGsRm(mw&d|)lSz8v$8y}rL-Td3Dwmq}gPLr?wWT<5I%_jHYDtD>w#ZEy^?7~%U zXM?4dvc7hh{Q01@-0pc7(^LIUb{|FkG0D5fWU`mEfkdf{#^3VUuR3VuMhv^xHq@yseE6UY4H2Z4(|oAbE!Scyj-M~-h21Iz5e(8-#XT|_R%`w zCv=n=GJM+H9xQvdH_$iqvc&7VY$j}J%H4k%;#^G@1|~6{{466lac_q5vbGZ~s~Q{% zUnsJwto(hrMvj3)^09zy(j=BMTn9MZn-e#g1SFpNB)o8@R>wj$?l+e&%#I4qf4wcu z?7YMt^Nl(aJXjXIzP`Rqu`Kre9PWeZks4iGoq2idKI_a5VE_Dc&->kpFYed>|GR7@ zfBRqc`8C(fYHx3I4V-l_|2^*)7=9YhvfAO*-kDC$uj*G0`U|Wcj&`GZ~E}7cc017HJkC z)n50-^>%rmL}yON=E$pC&1>&F&V2t`th239qOENEHkMg8q^pcgoQ@`U%$8ZHDJ9jS zye#$A!tZGUHw`bY%TS&r#caWBbll=%gx}3)$p(*f!#`LX%;8V^r=Z(!u~~WL{VQ`1 zCahwWnEXMc&A`*J%kS9*mF5gJ{=FvqnKx!xak3gsoY^@;QL)N(#;NPP4p%2|@N~!s ztkUwaWxn{~hbW8i|4A~pH~2J4Ue0t}Wjo~x^8>+#1_Q=Fya(>)zw27`8UX9P?AZj@zwVW5^K7j@0#i!bvD-|MYwX3U+d zUUoo>iLF!6(dW?wR{uHG#}YGQ7ue{Bl=K{4csG1=P^g2>_dkDLK0P0QxA)=!cFCZL z?9V!<#-FrUdPK1z{oq2^&nHfbOb}9JUgTT0-8aOXgM+C-MJaj9frl@z7W3J3z590e zdVKxHwP~xbzA7P&Z#E9<5bbPb4nz%(Q$`87#7S!t;C8N?dPleEIh4>-58`)u-#vv#UN| zsb84l=2UznVN%ll@3DcRx!2FGj=avFTmPc{iLJjSlgo)sIUSsh$IB!x?b=ggHAy_# zfW?S8P`In(8AHM%Z%Ze){gN*hw5QCuDY8bbIhoySv-=&hW7{=z3ubZL7jvv~=#pf3 z;QZ?Y=A{4?zg8fx|PuSU0+f0k8V{Kw#U`Qc;zKP4KKS)}E-F3Qh%`Ea89KM7?k zBMGHFt&Fu-j=Ik{cck&#u@^_$L;jYS%M~nZV_3IpmBizR1sb1{wp*LDTb=(b@i^qX zmXhz?DXES=t4{hHm)M(p{2W93F4OkbY z)kloZxbRMFOPpZWwdD2sxaW59qR&|b1pHPxbqaVmOC_hIIHf!a2zzkI!nJ>Skh`&4 z*QygbNi4^8J$Vm?z9Lhg&}Z|{q>Xd7*8VpC|L=X={y(?cbN0vH`kcOk(?pR; zVQOe#*k>E=GjD2N{Qmd!^z`3<6Yb(fT&JZna_;;0>$J^zH3{EX^YHNSv<-3j^X#i1 z*1njv?e#6iW2e=p_wA9ICAca5Ib%-J_Zb12lcildZl4!7QxrJCN)*>-Q|8AHS0 zIyy5tKfIi*9x3+i>%6Na9TG-q=BpH%7?^%0M=;B;-ND)OLBW^*^|uv!)l^~SjhV=-9P6}ylsDG@%>ve z`>wt_{9yL<56{lXy_amro|R@d-#=yc^XJcZ-}MXi_w)PqdvAx1Sohbe+6+Gbc`?f@ z-hHbaH4}taLJsB6Zmq)WuLH|)=JTfnKRFD!*{!u2OKlzYRyX@pLKm8}d2tv9NcQQmc}EE+f<`a6sU~*TWZj z3q?M;UiG|{WB&L;O3s-REBFFCWhPA$E;=XasOYqKFzP6S_!wyj_kgf)0dEH_*rrNs!tpCCO;2Z`g(Vy zX?N{&W_4eU$Irfc$IlIWF5c(4Y?EbkW^jeeG+T>I{#3Jkl}9IXoBDq};N|*r*6Q!E zC|kAnA75&(=XTSgZbn@!EW!bBg1Q|LaN>&xHxSg2u`_Etg=iOH)n5<8m z^!)bS+Gi6^HkB_=KhM|hd}8y_lUZ-vdkyr(KWEMSsnxQ8DRtV{Cc3i* z&17({wZD_Ye`=?srtHKP7meViM-l9%v7f%o2oy{b$_~zbSz{Ny@O13IlfUKn?U0(t z@p6Z(pptR9b9Hrjd2Q`oGvCa1zcmwuN!;3OuNckqo`(TOQJyYt;YXZiHpOJAjYqhUcBr$c{5oC?!(iA63f1?Lv~ zZRK*G@WGI|ZN(}svE(mGX$!bq^v-K5sVSwE1uO6+3Y=B+cH8ZIng4OW{of~VzNomx z&J_?c@(P{WzD!K;{1p@5uxCdiQtUoIk=Wy=DrY*8JLR1r=SPRgUn{ylc)a|pkl5Dm zb?V-~6D?teAuWj@K7scnEc|# z_gJ3=h4lzXzYS5)Pv13MNfzGNU3NK&0@Y@*_YUr$bCD3TTWQUZgv&n}^LY4{c z3~oJ>`R4_78A>&LUzhnk_x6`q`;E(ekM=TTs9pBeUu~mW`}bGr#Od8XnKp<88qYYp zYLgDb0*$U2LK12-Pw9$soU{(&tkk>YDAV_7NuY0tXv0~Br7B99tCGZmZMha|N~~O! zB;=YZzsZJMkzXU{ydp^eQR#`myN|PwU^UxX4KA}JNK8-d;xL(>~|U>Wj^!lHIB3Q?6Y-|k&B&Y zzNqZW^1iKg{0C>6Kej$yb6-v4m*QLY{~pzayT4Y|mX%EldiDF?n>RU|Z~Evo_+Gwq z@7|obbEl>*O#A$E4#Vd)7XM!ueO{Qyw?1yK%yGqDXCF`Bxt}G9jG6g@-EBf`ZL66S zK1VvT#NOYU`?~r5`|qJM4Sy~7pSQQ-*S-#+ohChp4YU-5CM2hc1TvkmF*aPFY_f#0 zXR>d{mc{uANx|h^E7!bg+<)zW!4CyB&6(+PXBRC>pKqe{C`2QfZIOZL9H*8=C;q=V z|4*ma>BwYJi^2$B))u9tv^NE2vvtL|Sqk3l`|;{^;)^+-SFL=TC7N8OskwW>0mHu9 z`>H`_yx+&Vs=lyzW%1B*cb&xVI+?}G7RtAa9G{}HEJJhI47sqSQW8Q&?$3+GO&HpA z&Trmx!uz?AN*j9{>l`Ub1I9;p%dUT&oBTig|C{;gDZ9_s-Yy9Z)eF~lv9Yy2zeymu z$MxdZ*o`y9Q)luSTF6(H@VU5&x2wdR6u7DOuY+Cj$abD!=ZY6!t9(>09OnMBZ2mVj z_c|6|r9F)OFQr9)hy6KnZ_=*&3mPBFpDtMS>*@6Pw8*l$I=k6tU+t1RZrCD_tg=Yw z^sjyU_wJs3Rx9-HtJV7Uzg|p!a5%+GAW);LZolkfi;aI~NzPI;Ow(UcxBtJB%g=pIv2HW+Zx-0KM`J?lB$nViy0=93bDTSx@?`JCNuL!GvUpe+ z78RA)UEw(C)A!e?;|xQh(>p~Wb%UT6M{cBBnZ{qyRDLcP;L@JhVf4*;a!QDxpu+>t zctc|)JBMA#rmJ04mS$+(+qrN3{vSor)2=R>t^DYTdbh?T^OCz0w%y*V{XFMXW#18> zKFyTK&?&{ivvW=?+^pbaqR8K*IMeUTGhvH3hQ>~{eQy3wWRx2^Hr*0=A9(rY?Oc=R zGP@TvI0u!jTd}I?LHGRsYw~wbo;*40oJ&o4d3|ZArc&+ok1r!{f8VSjwAAiOmQ~+g zscD&ho)$h61gclev1baL@PW~aDZ@=Tt?1LcWqT8nB(0}8`(CUx3U;!)#x~nvqFSQ+ zah^l7vpz09^fxtk|GwfIg8E;NFX#EW|JVJ$@-u%vdBVcrk`g8M*urmNcjw|=I;THx zE`DFzlW8~qx$C*U|NoEtJ-I$NdfL7A-lTIoyJF`(y7oOZ&^_hg8I_qTuB#R(URuO+ zx`gpY-VNFR?0J!FOWGV?@CV%1HD`&KU_Fg7a)QRm2^m34G`do>X3h-Ut8{PoQO)v= zU6DP8cV_&)^WDfu$!LcMzkly;_eaa#&dPIqGGpb(yqjAme9qeW;+CIF zlGl+f5juN6t1iEqb=Bl-;hgKIMQ7!1&koGpJ#WI^{9~D~ewVhf&*q!gR$HnQJDpo` zlA?6j)J=&~3$MKoIIgm@;=QjwlU{Yf{gBg4b)MUn2IoKXzIuIrj^IDdww8az_H`#W zzwocU@bkd-a`&VNz3JiM+clSN-n{ws>+I0IJ9g~Yzh8gpocXb5lE2*Ze_UfBV>VmV z*etf%MlMLlSNep?F`Y#jCp_j=ZjM_UCapB@`4lfd&Dk@Vd^F|S40mjBcrZ=%+}!UR zFKp74O?_R1bzJ5x^f}Dfb7tr2-*YFqe_Q^-)YLdY;J~T73{C>3&kvcL&AmM>rsJe# zSSYiylEIGK?{^wJm>%iD6%o)bpIQ+}mves}5&Kv~AD7 z-}g8pt@~&bhpX4Amy7%DcJ10#_4ik)X6ww|+gy*Vi*74ZY&)}0_oc;~PbCdW_saX6 zw{RSLBVES(V9EP6aRs;ba!%|BaS1&ma#BKe&Ks?yw6M-+S0k9+ci%inDobi}&<*6FY6my2C@eKpta^1iu`gFcz`o%@)zweHswOXha9 zhJ&|PzrH~m#!@yDqsPUp|jpUSSR?3#Y(Dg~G?6wd0?WRCdoufRel zI$Xv4uGa+SS)JIM77u zd7|8LljYlTZ!TQbv4TrvLr)6{Qx?(?3A4+cCO z&pMK3J+I7jidZ|%V^^G>s`$6LE57`_wDJAS$z3ZeU6iyIu`OZH3cJWyDw3t;us}

    PbIwd*5ffdQy?T!K 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 YmAEzVG5>2|U|?YIboFyt=akR{0KrZB-~a#s diff --git a/mods/HELP/mcl_doc_basics/textures/doc_basics_gameplay_outback.png b/mods/HELP/mcl_doc_basics/textures/doc_basics_gameplay_outback.png index 540f4bbed243888f4b6be05694db5c582d0dd96b..c8c29d31627688aa5acb2e2b8bc94573c603c540 100644 GIT binary patch delta 79508 zcmccqiDlXcmI(kn?e#&UYo{fdLAqy4)ebOP5E!9YOiE%F!BBPI^LLhj_j$^%7K+%Sn_*j z*VnXY$IJX%JzwZ*-V)P=U0az}Hf?r$9niPTG2)Qp_Uze37H5?;queT(M3-NS>b+oL z{#!=(g7E40|4;t^r#5%_YCXG;jmxA;pY<~^1g}^Y-CzGA|8|n~OP!ZHsz2MW+Id1g z^STft!t%kxeN7($SkY#kc=n zc*{^|ZN5-1%OR`!=K%{`JoTK!f?Nt;Wn~L6Cq0gR8XIywbNk|@XD(UXnAMn^eB`X< z$)Y_QzdcHq`*k<|MEh%o2RVgL-=v%C+1;3Oc}UEUKnujwhuGI^-#xi-;^$zc4$Ox^t_z1e&MQ(f;VPg5sIt(c39u$ z!}-4~2%{?~1f?(A0H7@qvL{sXVeJr;p4m*aoFEO_bIp*&^RWH-02U2}|1 zFhsEUshX`>;=-2qY8Io+#=un@&P`Zhd7*-zv2`n3q~^*aXJ7SAn=G3>H>l!YC;u(A z`q%w`)<(bk%YF98p^W^y>}*q}$NxC-RNUU~PEDfT+~^nY-Fx>eXMDyX6VJa#qP!dmY8a{BkKe+m-L#Y#@2Z|p743HHsG0b(~-V# z_TTx|Kd0G$KGFV9k82`-c=`2t2VXWXp6ktU&2;j`Z}qKrz5BOZ^4o74FzM6U^Z9H3 zKKto?{_cP0_QxeZx7K=fE^0l}`C5G6T*r;_mp96-d;aLoybPv&jcwNxt~~xT`M*Hh zbYrE8IQT#cJ2RfYZduZ zsQRGKm!|=|!3k=LS9+hB2_z_PlzqGYx4Jf??&0On4sDF9s0&}$*Q)x&y#CCi?T4xa zOoG2(VPDn%|L@BJW$z&WbH68KY5HU}-Cv!pdVux5q0&V!F3VG={gx{?%-U6QZWjZG z0!!5Mz4O`HJhF9pIhL~Ai|BIV;Ouz&k8$Oqq>|LXchs-x+f3Rved?6EPcLuYzwp7T zqVSbB!j%_Hct1}**T%a1%f4eb&lb=3t)J}UxcJYvApgCObGK)(Zv6IlTF&vv?Nha0 z-pKcVo0mKL+n?zB9}n02&(_)DruBH%r&Go9C#!xhF=E)T``3@D>GjiVXKtAuc;~=c z^=T#E>y19GKKSvH$Wilb3321N%t94KfnDYcDwH3JAA9|E@_uLe|JFan|D|RW9iNbS zP-Di%yY(*o6qhywUkcWfL+Us7ao?JnW9CJ;k$-LUd7Os4` zH>z)&l=$MWpX2{b@U&w0-!IN!rf2u#j`%;3ry4z;?biM~`Tcvj8f^vzC9a%P4>LaBd3US0_;((A!`I^Zk+uJn3$5a( zIHz8^xzz6Sga5Jq<^8g?)}e=w?ympyi@~{F`R%XhonBFG#O^9D;iOO|??Q2mZg+vc7sTXn$NL2}kAPL2iz7p)4DxyOW} zq9Oz~iZC78v1+EH_d?MY0i6S1SrjMU-}U3eQuX@xcmKb%UwQiCy=$sVx8B}c@$Tf> zxcZ|ro^1R6hxc~R?4nIYZ{}Ku&#(J8vA+1}QGXRR%RTSEIhNaHZ8g)cdGhLJ|Evne z9k*|mPpRLz?d-dMm)}pddaHN;(;@Z$yRH4c_uc(^@9V1{$@L%VW%s;3F0|ix*N=@` z_Rcsf+q;{c@xbn5yMNvE|9k1&tKhXe7i+8EyA^FUvy}f{(f@d+MbG7bO%=}nS1j`9 z+|~3Q>sI%QADX!R?A$8;VuzZoF8duUZmoN|-KL_GLn={mX}KK#lCLXwSWKJD7F)sW zaQ*SU$=RHG_0`KKFP-Kj8{zGEW~#b>i_6S?`<5%W{dCTMr+c62%)T4%zKMBWIcJt? zd9(iY?_;ym*V%oaUH3`m=H8l$xU9;rf6~Q&pI*CTy35L~*8cTh)=yctbyp?lDxZ(< z{;Yj(@#~qqlJ#8cg6~(w?MfeR{BJOK7W;e|x!%zCFFIR=-_Lp%Qy+F!?A8f0rVrk~ zEyy;rIUEXATnWvf#dET?qBA>%Tqn=uGN`}nu%q;&B17fFmHjF=W9pw?^IN_D!l|(K z+Zsz;c9yGu4+TmCKBoH}jZwVr%ckVC|d&g_{ShV-q z^}1y@Y-TqY2hNe;y|-!7y;cW>3*HT3LecL%0)#y@Y`4#8nX|;G{!OmP(WSi8B$%!5 zTQIS?H5^#e(lIrI$+)TS(ViW3HV>Do*XMseB;Me1DR$qVCzl>w{4MtW=jL$xkNhl6 z7n61spL4lryZycVne9<8Z_V_cEqnRUyNiC+oSB=~%sc0Od&SKj(V`;T@2;_Q+Mz1>8M6;`2zXyKx+K`6 zC9eG@BcqG+z}I5;@bfkga#v3MczEk^yKnvMYva3=?*=Zkx43d;ai(qHi)L-P%B*6G zQt@@un&av->lWUAWwrbIl~Wq!*I)jgyo8ydB5zj?B4(y1IRo}Ev?^{hq$tBB@ z-__ys|IS!@O!@T`rll&az6)C>2$hs4UyqGB-|eQ$&$n%}V@^-*w(R=t!R>1KUD1C3 zJ9lhlVeqwFxqPpyFYnEL|LeTI{crZ$+5U3xWEVUD)y9XM z_iwT(&vcCh!s-Kpvs zd%~toO%QW(b(>u78|?16%Xp>n+9lVfO-fYEt4HZu_1Eyv4T~vOr;{m%F=Kik>Ner?{}IIA0y`Mq&J{!CUAP^*_~@ww+IDqC~8KX1>6 zi|Tc+_cu0V%COH;ODrmwAZu%3zxLFwMxCVBy@s~AR$MYOW5dPex;H&=N&Wq8zxK&# zj0`iDURyY`q`Fy4-!1w%;{v_1?Rqu;PEFpQm?EP-_p^U(!rNB<^QF_C-P-%WE!+S9 z-Ln_ZE!_Pt>yDMtoqbG;>g5x^Uwi-e<=oHn-@dn&UCMnh^!Yiv%-I(YR@bk&9=Gem zhxNSA?$6!-AtT*j{btscm&1+!Prb7ARjF{R2uJ55XW4t#7j-NDd^C@TT^5kRg;=SJ%T%Xmm%EV~zxft!tM=Lhwg-p48aYxSa z;*GC-&DQs9J69s+UlH$LruX&s+O+pIp;sP6)NAgm`WPI3-hPtm!O+Lu=WP`KoLg`^ zc80ypyqxD(j}=(Wjoy?0?t=B!JYRR|Y-#DA70dUQe0dW6|ImXAv#-bhc`-G;PTnE6 z|J0ic{Ata}L9RbGBOW`SU;4`~RKx_lv#AWNoJt9vj%#%-Md=xOrj(dqn(fxt+=JmYHRG@8aqTEB@^? zy?vujMQCxvi~|dNMI@(cEVOVr;c&3hU7Eb27G+pDih0Ez@7?>^k%P)9AO? zyjJvTnaKbBA=)Q-XV*ovX9;b7HF2Y%Z~RS+BF#h&^9*>*etg)+|q+z;S-@Rd(uq@cEMvX8?3T8keR1pD`97ylNHjj^Y?#p` z?(=w;QY#KM`^_OSUxNEOxSlqhN&9?ntq<`RK{;4mwKhKZe_gnwi z-sV!`0()AJ(jey%(BXXBF1CEs4& zxBGr${ZWmOOTN?n-mbOZ`|Hs1N!OgJ3tr5gTdnf4V!Pkf(~sEl{RGZ!6VhEE{4uC| znvs@m*gNZYYa;4DJb$zJzgU;72veX@@I8}_E+K9lYicuWehO&0t67A%c}8-lTD{%o zvhAFDP`$wCE0ZQ#Y+NYrshs-G!gSZXUs2 zb6IxH%eX)H{ps!JtITb`eX|el*?wb-t!lsBzcU+?FFuU++v5LsrI)Ov{nzTyqlNF! zMn9kDBQ#UBm|?-Cf`A^6>5&7R3!Aaq7N1>!-UowQHQba^j+ie(g!$ zmWCS>EOykan5!23dbYImd7f{~yEXTpCcIKuB4CtP8X7#^Zb?vuL(&B&|M1jBC$lGY~lC9Tn&6*L@5Yn9}`)jTlb5Vv=c6N4j;g>AO z9UFJny?d3nXw@3q`;ogIUy!vwv#{@W_s`AqZN7h4@3>)N*4)UoY78k z?Oh)V?!Wk1kr`zEbc5iRCCgn)s!z}DZIa)XZ{JSk{BsC?emi_#s@ReG|JDEA{4e|UZ+^*9x0(E( zKi-rIL8w65A+1|$_ zsIqc&DzLCCrpiciEnI55dA^zAq>iB5%Rcg~@R^kq7<%BK#?dn~#U=`^zb5-uSMFy0 zY3p6u>h-hL;_W~0y!PP0r;pn;Cof`1Q@c6u-8;i1Ba5<^NBw8+DF3nUJAe5$vupbD z^}qdlwyl4YJ6Aq8{sqss_9Fk~#nR&PSHJR!&F^ z@|M$emHJud|A*=xhL`EbCmu2JTk7yW_N`{0Pv+iqk3}64Q$^IelsOmz*iLMkHmNAc z)T<-n%I_w6nCA%;%KVmD@YNbN;V8 z`|s}gvnG)1hWXQbDbEjmIONQ`WbL^-8K2)Ay3^I7<{RzhrTAxoYQFWxnlJS)Y>F>? zR{VF`KKa{Zi%Axn>S}|;T>TEe{qwKO!eb&8i)=Z{^H zXPFek3_N}Wv`c=t-T!F$Uhm!e|Aar8yx)(jw{#xg{cZKRrRtLdC0***&HUQo#Ibev zw<}MV*Z+T`ynpNNe{+HYE$>-;zViO+wi(hgnX4{dJL(?gx#)GVt0htB@DExc8=!uZB{ul{m<^-OiMgbg;8IeF{kzgl@Nznj>9X4BPELYtXmuA7RtzE|s> z`)}jVzuSAR$=xl#E-(EqCg;=IWg7J-qxrVP20mUgZP6S*_uba(G}mN1Y;&8PK6~%i zujzJIC#Wp4c)Oq?^65gAPaFO2_Wn5?GwI&WlPOnBd?)&^-nB?TKv1w%VEy!?TC6&0 zC0qQX8q~KuyuI+o6o&h{^F7@Cb-w&vXgzJ^vYk_NeqZWinGnRqC3itXvZYH!X|pmD zLu>tlsXa@$&fIe8V+gYIR(cyl@i7*7`%2mR**~UM_R++PMw|p+&d5 z#I`N_w(kAkOzXSR^`Ex8hs$Yv4vaIk6DXRRIwjoH^hvCM*EW|_+v;nDMjcE0LaM&) zbdRt3a9wS;bo=|7^J@f-nakYOkjdMBXVpH%7Nz+u1-)na?_Dnq4V{`R_1;!#Uti8* zAp?&}yQeX@T1Gk)*cT3ViXzoKGhbNW1viOVA2A87oyw6{JmcGt?UMqccD zTm7;xoP4(Gm)2vAmlJ1mv1*-{HgIy4-xYW#j%^GT~`cEPCQyLrj`|74k4{Bf5hE7dV+InqmnDyCB z*IN@^8n!*0#>sBACH&#%-9<6`<7z|PB8%+zZ?Lr4Z8iCvjDP)cp{j8EF9-jBzIp!d ztz$Rc-#p<8{=9GgFZHV>#hZ#h?vwwses+!V#h;IoRe20dWWB0`}XTDne3@M zZ*5O)$vCxa*Z1T9_!A88RXzMve^b4D`QZaBPCpWy7d-e{VHIU*AilIPG?JxE>vj3` zY3%LHPg6Ia+jVR8hkM`u#axoxGiPR+)ty_b0oM>WdvG7p`F0!YltaP^|Fn#mldIo<2{TW&hE7@%^8zcZ>C}ObvE&iwZrbox8-S zzPHpf<<&Ab2TfNg_pQY)7rZVXxM3kK9ejPM%e=c?9@_Fv4qw(ybV|!~I>^3A$L~Ps zkw!@tcGV4>OIR}$8)`Q63I<#|`;~FwrH>P>?-hSp_npuD+_T-g6JqP0HfHT@57=U3P5u-1BYY15{CUe?{7)tPUP zx}S*3SeCg&c7^B7hU}co=f5vx1}be_RTBERWYfZ4&*yzyoIxEvJ51&!r@ha9uf6!r zLuKZ*6B{BPefsn1(xJfke(&Aer{^E}{C)4!>i^4kPQ4wMcIHFL`ka^3mx`z^I$823 z)%}Y!-)$4udExb;M~|FQX{m_4aV+l$`>iW|5)wHFt~c^ry{Pi|piF z+_6~0?9@#+#RUQ9B6S4<4Y+b2Ss0y*N}A?W;r4#-@(Ed6lYdYVynJ*6>FUy&GWa5jjU-nJCaWgSC^!fQ53xjt5J((XL)V)qQEi$+He(lGF z^?wg7umAXAW3=#NuJGNr=Ev+z-G1zD=Dz)Rt6%Lb&VD`l-U8OdBwf#|w|0KGaP8>v zX?}ZyTUK85%zjsJl_zktwbr?~dwING z`2LBYO18?tH!doilSU-&i&=C@Wb>ICbr`YtPiod%O<(Gt*sSvnq45!0O4f zx36*geCYVwVEF@E-Dkh;Uh82zS!j}mh%fH}mP?ggtqhIVu6fQX{80Kbh9jyW)r5l~ zr~c8BO<@|g*Sn?&_y+%QSSi$KXj=G~dG{@knOYwX&ek|5)N{FKPwpz2PN7zg2M$(g z$0u~Yj(V~3&fYzL@3fcZ1XvteFm=Z12dCO<|DE}AF8cO%x!m}>Qszs`t{md7c5<(d zKHS{yAGdSM_tyTJJ5|-!cmI#kmfrH5zeH)x#QAlf>L=d1b)zFLJ@5XdeaR;uyt;NP zX4$Tj4qAT?1oy9x-^sBkehu_C^a%VNo4iKi_PAVA`xk+ z&t@GfwR-Vpp2PKS@!!qLr`_-WGMc_asAfs*ejke~p*OFr-}5GlLop;YHgxjIBNBJB z%5S|r=bM+%^W z>*fZH8LzHrEL@ajl~cp;;MQk_Y0AevWwzgD(`>QYzfR#!%|fkL+Ow7GrDq+<(7ZY$ zWPfhQ8}a$Kd^WGR-MJ@!Ro3sF>Z_M+4APRm#^92pVfyLH?0w-2`PWHZ-!RvFUPNZE z(N?{}zC|Z=zwW-g=*05W^>Y~)h-(Tb+~wh`3ty0aS?88+>>91q*VB}mTR6^LT)I`O zuccF1?5~zd*_>4s>o}#=Uh?_X)&H-*a5_u5nZdiWdgjL&4{Ae0YizYX83kW9@!f2D z=l0o6VY5=BvNf;zW=pd=E&F*^``;6pIEmA1WxVT!uc}>ZKAco>uX2;G=$v9N55-qW zN`gw7P2Xj8R~_4^u(tPsfCNVaLZ3^f>Fa&kpX$t|MIW!;J@x6|wM&1$-W#eoIp^cI9raJ1`shw8SreQ(D~>H^ zhX!}{`pt`aXRggXwJ7J+srG`;@>0sI-kN8Z&WR4ZXL87V`>z>yEHCd+Si0>VcY>}1 zhvZSsjThXkpU?STRIm2kiA7CyDfbfJB{Ouomub3gU}_ANi8(ByVA0v(^JZ?)r6!d$ zhlLF@R;na2f483NV6sxy;7C-KX2$|i&19wG+LOQ5el2$0DEi9C$kY1v`{pyJ7p>_& z)RtVncmJxp&#r9?P+MPPRsVY8?)r-2w?6y#&rr+FpMCrO*U9bgYT^y+@5NYuZr!`J zI7p@Vv-+>!dB$%oy{D#bH<#Q0;g4}p$K>PwDsExg_cxdPSa;Uj-?u&5cXIiyiTY;S z%*5TcyR<7Q(qcCuyOq=m`HjJ9YC0>*qh;sP|5q*Vrk! zfMAUk(QZ>d8IM=66U!;Gz$3g=w$UF;hZ)y~9h$i&T}EHHCx=a$Z6sh4xhSt_M( zuqCPSh|Lr*o z(jD9O=O=zYmHhR`s%rs$YF{hfAK6>~rtkgF&Mn5}?{50DE&Oy#Jhk}EgT{*~Z^ZVk z-d|Gl^oH%{=GN-^5BB%1|Np$(9WT*aUiM9G>sp%~lZDkp>OY*F|L=+W^lAKWa_62G z>r4AvtG~BH@Il{BrAha1to(G(UoCmx$9LkNO--I%&WsKJpql&2x8vBQ$G3co?Oc|< zJiPyui`z+^vo@OrnraS<%wQ7qPSF%#bT}IP`mu)AsY`}T>}y-TKA17ngM&wrAwk47 z$}@kh$;TZZofb@5#3|EJFS1Bv1*;QB=CwYbkg9c@&vw~<@O^xEN1nq8hDX1&(*zP< z-%0j9{_f=GuSWMH=EOU3Xdi!XUv<7eFSaJ<@gMPR*U#t2)GX3j_hwzKU1v~!b7#r! z=${+5mVPYWyHl9`{jZB#Y;WxR@Zi^H`FQK^?A5dN18jGeW=?$b<@=_`Bn^vXUNza%SJ_Wx`B^0@AWr&`YKY5so3K={aA zn+zTn@#E&c(#4{`+5fkuPH?KYZE{YUv7vqu*A1^=&D6}fQ@mzr{5Zg%7r>Ch=Fh<6 zq`;uj=%jW0kfBmiWGJ5t$2||1BZt@+1dK28Hgh*hm`nnPVCN# zm8R_V)5@*AzqfM!&PxA%>hsx@<3D4h=RA|16zKK&%PrMR_0P3ar_X-9d#s~pvLnO+Z6yA+rrS$4d2LY~3>v#~4o&VLv8V#}_-=QcU4o^-?&|!uuJBxG&k0-4CtVd~7o1rX0~9!18V~fm-4bfb z>nzZ*_47Off$B8Rj3pkuYhpjJOmtaU;@iNm=CNlatI~Oat{6{EfmsLi1Y+*TiERG( zhI#+S-QS#6e6up?tWTM}=-s!abKC2l*9UyPns{JvTli4Q za{qf-arr+JwwIPx=9cFh2gR{8Pi0fI4d31Swks-&lXLyMy*u_)ysmklVEuOQha>rE z#XCwu((nF$RmE+Pd+P4FOA8PGes{0pSN!|?*W+%Vb6$`)YmLtQ72MW(^qov~Hqt)!2rmG5ny%!pKa($`HgqgFK<;~iqQKaZHY1!Md<1=1t{ldW5 zlTv*-gi-vZgU|M*S3FggUV1ZYQKr_h2v2W2&maZ+b-D^3E{q1nT3Z~_3K}I6qONn~ zbaqBEaIq{_VaisV({>DdK)I=FCA_<{feFShCO%U z_o$v%_j+Z~H~qV8Y3Ng}+aW!jTCX;qoOJc<$`02%=Pqev9$k4+tM8BO_p|Hc?q+U% zZ&m*_)_!XJ$N0JTHP>eJn(HML{ycK_eC0xDs>)pHs8b-|)bAPuL zzjUvAn7ZNfnHVuv!Mirmc7lQzON?gvsi}2Y&5e^ezTVS8R8Wc2oWC}o?|yPy`s@Q+ z%NMRPW?hh+KUdgDAUK$_Ey9U`@qo($0o#vP+FZEnl>-^B&0Cksuf&qp*fdk{;H92T z&rby>%Q8=x(4ZlhCC`$ikdV;1K*cS{Ls6}Fx8l1OA6{(^pZDjxclWY&HS>zSJ;aOF zEZZ9v75>kdKPD)fBxN_eZKm=qiZA6&Pkq?n?h}^N>5+R zTzaZ2Wc~YzZ1u(7&HwDS#fU^p@6Ntlm7H%Zb4JN==Z){r!air%?db~By7brYT7LRp zzvq{hzTH(8T4EN?*2aPv^Gf*MwRQtk9Ss@vBPoE6|adw$ErmR)eEw^xvi6txhYHvOo|)SIPOV5>8OypVBBI5ZLcAq)XK!lps;~Iq%x=@D)#-q zmU~ypL#mvZ<$>0bmqL|WZ|T{ex)K?Z@qP#R`&Vi&pTng`s&FU+x?Hu z*!SaPyhudm+Uaar<=6YwuP!~kWm{xqSD%c1>CZpH(X$Wdt-l&?QSoB!d++Cc{bu@h ze|Oejf45#{&s*8z)9(9^Jq)`T^sD#vW3$rOP}MtMlv(1RR7Q$;WiR%fv@G-2T95j> z4h<0>wO2nXcD{4*-^5$hiV=)eBCVx|u1B3ZA@SPT;p&9rl1F9;8eYv%VN3d*+G*vq zgvEe`E$LgsMzaT6s-;5eKeuFNJ094n>TrcAy{hKfO?D;*A!cI_mL!hr*JaOs4?Aux zKJVX^{cFngU1#L*U7s}Va+uWVAG`DH_w3wUUYZ=+s=7 z(1MG{EZtp}@?HvFlXAS{)a5Ii#DcgO8Rkh!^th-RY!BHrAuF?fiGdLBg5CSxy?EBz zKJVWZea;Dd2H&s9p3&@B`5=mGk$^`2SO2$HrM=jMRrmgLlG0S2?Yw=<@zlK)ALfO< z|MK9%TyeR7qP==uLh(|=uu1m|?BQH2JZd3k-l1*DHs;|XP z^OQ=7zL-$`e$Ln4K(Cc87JT()9*Nu6+gy9OBydUBq8&vqC7-uCZ2fsieHV9ob@%7v z`(FR87io+Yo+k8rlhUGprI7`>$4vaxC)Ze+22M#`YvDI#lGBOTeFwJf>@-`s!}$K~ z@=bU4r36;JW_C<)nzc2bQT~R9ffvgowEzV-m%_Ji*gHkMoDy6fNO&q=F)L7TsW%rt z9kHl$^4(76g}yx^Ow0nCnNm`ucYIpHx~=z;5bGk|5EipfyLK&J{I+|Z#DV4qt+m_F zysy4|ZmIg}i&KBH-jRDQcdPwf#rbbj+o$SBMVe1av)C77B7He6s;?zePo-|w=UGcO zhFNtjYTLM~M&xJBq|I;4^ty$1?quh3N${1a*PQ(I`+e&jZ~Nmb9yL#W-n&=#SX9R`T3-F?^5A-Uo}p%#N={tSQ?4ID_)9Rc-37ZsJ8Q3^l z=A9H)ULZC@tCQo%^#~VLgGtx72Im{@v9Tz){&M@@qwV$o-zyy2C!D|Y&mDOQ+nA^b zo&{O%leOo+aKAD4_VQ8_nYhdZt66>BO0SluM6uhO$)eQ7j-pb?N+fZ zBHQO)lAXHq%Z20fc3$wbQVP79vUaNKvc2-HU6=f3l}7z-EDv4tJmgAbbZu7RgqPon z@?U-_c(sl_RfxJPI5&y<4IJ=4tf)~|d2E6-?s#5<(b&Dc|GomHNQjt z{ne^Up7!2;W>06+lvkl%1x4Mj&3kJ?6jrZwzkBsLgQ1a^_Q4|@FJ?5Zn64U?z;e&{ zjj2kSqLhPbLD;P7OaptJQwJuvs`&+7pR#SEfwOp{bE@rG^&oA@;~#gdN>)`_Bz8z} z_W>3Kf%z1d*hD&xe8_ex9zVE)f z>yf~Q+quTQGrgYo2<|=n{oj{UAIong%&UF!ou!O<_1oT1j>7*ZY?t5rIK6qh-F-Ka z$E)Jry?P%l+<~e~+!-w`SGJd(WOtO;st1<6ACE+G>2$TYA^UxMf#hhr$xU z6%8Ghp-KXwb=U6l2skoKRxr`5-^%cDtCfOKppu%`s@Ibu{SU^~y}ADBu5t5ESL@jD z7gn90g1B6yZ&c6r=l0eW`n*-Y{8QLG_Oinkndxh<{h9b)a9Q!wOZ!{DBnak+EWJDR z@%DXR&vUhEeEInMpVOva50gH>bdR$!mho+~KD_ha9)X~e@LS98Z@0bIa@KhAS@G}n z*XGAq74$6CKX$wH>;#t}uInL_wY0Mmw=e(vyYId6;dcw)&)xsmf70q_;`}Rf-o4J9 z%pToa<=NTuece9JBZl{XIWL}a%0;c~k%iwQi@Kll6<9eKKg`OO+_QGQ4P$zpa{asS zf49hpozqZlG!-&3znAVM;n}e(ab<7N6WfjIYAN-NP6Y~L=PJ)0ImNU5r_*}v#xnJt z4h{>qJUM12)a1a!5afAup&A=QX9I_E`IUOlD+^VH8u&|Obr!C63zz$Ob#8II#M`)% zuP&Z$QlV45r@wzMTmAps(RMNRx6Rsj+vn$Y9TO2%IJWJSq|%X`zo(X_+x=ZXXKnXG zKf~Dk^RmDG)$jk)t$qBxtjrGEytAAOH+}ppE8F!kqdJ*)#=E`0-%WV?eeYzox!!E- z<=f-mytU??+#UUVf5Pg$8m~R(`ngY5I%E6$QCRcLmvi>~_!Atix6YimPwjQI^!eW> z-yP$gAHV-kli#h(->Vnyn6tBaEn9q%>$A%zUz;fXT6NLm-p*w!PuDByuND%Va!LQV z?^Z@L?vJyyuir`Dzw7Jk|D}6=-pMdYeJ|^1Z#tE~(a_6CH8oY%IQRqCjjHn+0*c;~ zc5Td*nOe%rYBhIyxU=CmU&(T77m*GI z0RijJ?(cs#{x2*4`}5+=^PF!gEw>kcWmOZ`)NxOD&Cj#Bl{Kp-Q*Kq}-6z#Mb))Ki zbw542Q`|4UdwTBA>umO)uJ6~Zt>#EUsrXPHx+Bpnlp!z83Br=IaN!9W))3GE~zF6_huA zyWXs>v+VHc?9~fD6jndIFxP%x!4p2U+fp*J>+E+|zAL_Y%J%7#Q}^y=SZpo6`*_jr z`ul6&|2dTZ=WX!zJM0T~e|Dd9=i|K8JMX{lYE~}q-KKvt>(dkUy2_^~X7km!>UqOS>w51aK`Yw~F1~0^ z=kn!XvbZGW8WQ64o7XtY}pQ@mBPZT(PpJ*omAGA$<(MB8u(}VH*6GQ zDoFdCc4V@oM-x3h2eZ{Az5Nh+>) z^U;GJx8MEET>tik?ET#pAI>eRpW)Nx8TyWs^Y7EgD;6bfYCrp{BIWzFa~g~et=ej< z{r|0-{ci8$f7{D9UAcKlW9^bCY5#NU?RxjkTw`1O^Qimv_?m=|FJ_1J-8H^z%l~9c z=X1V0g-_<$*FEyJzmuhUc<)y0{onJ~t+!peb*!y7m4M{ z>hzVyX(cML%zqxt^^o^Xt#8%hm9KZLd%fz@y~Peo{|R*Q?1=2RzGt`atTq3hO#W%9 zTyN|&F)(GK;He(z>)G4qW~;DI+oi=VZ6Oe<_a&*JfCR?+ZX$i4?eeI?Mi?D{->?B{_;-!|F5Q1*MGV5Sib1& zoV8~6zNOdIZ7KbD^!)##pxU~Zvh|N!+3P<4JpbRXK83|$uIsn8-)qXJY&{=m@%v-@ zynpY^=f=#KU;g@a_H_LV-+n%yU$tUZ&+McfB~P~1Zm-kd$laXF2(4#VIt`qYx7M%2qbxSF4=kG zy!*Ob8-^`?ceZ{%lRnwOCZ>K~*UYcQ{bGxGWz*gB>c4A$5G{Fqpy2Zx_4>d2xzDy~@v4t>|8R^=|3+MTV0C6APZp|D7QA>BYwC^EJ=pqi)~G zx{-I-cDuYqRl>f@UFPQBp0RPZe%$h9Vvek3+4qCN?|-gxx%c$QviSQvZ3103>GjLZ z7ku@-?Y2n!Z~z1E{!nv%MkUu+*@ zzhz6~9_3A}S(z*rZi^Ny%1~b(;;Fjivtor&kjF|}!-YAjYMx1qDYK(qKbQQ05AY|Cd_&hOhFd(_Z8PoRTy>o({8jKUG0wjU9H>s}Y1RXy=~ z)4pdP_tn1$;jjzbv}NJdtf{Fhw`R^Ub&xwy>GmLE5%&_o=!t8x;;)xp_wau+r+4ZU zHSSVP)`;gpic8JbY0fQnP+{2W;>{2=aeGwrq@ZJ+6M}AC60YZNxn#<4K(XS}#3LRF zi=KR)vUa9Lv{ljdm)rlp{3>qu_l*0$kFUh*%hMnKx%W$Q%B8Ty{(n}_zZ+Y7>ssrT ziJeAV-wsWdm(QESe~(jB^TuKI`#b+Xx&5}Jeeast%hoKvCSERYUz+puK#Iv)9ofhT zn=S8ee4PB*sC0I;@0B=(E4%Ao>u*!~_PF@Xw%(Ga<>xMHw6DtI)7dWC)jn@WmUDIW zZigwyzOcLBzj?d-_;k~w90k`E&hM*xmKQp;G;}ZHs_EVd3_>StU#!$#ysH22*q_GB zzs0BAuPylc(D>)I+jC1x?U*vVKAxNUT<(hJ>)87GfAyET+kbm6pB9$){FSlSvffhl zX?}aYezElp4o{uit3JK_+oU~FEh!6k|LOa_xBTm;wDb-0Z=QAkd8~VO<u1I#QE#?Q74VH!QeZx}$~yGOEJGHri{U{bjgk{)es??UVn@?Wr zmfO=%^7#^X$DJFeHaqv^7@j%wjC=lnQ4`zuoDLpK^Y^}IU*hRA$8X#G`+GlJ+`@V+ zVE<+Tog+qDqUYxA?&aX#UG2Xo;k)dO{lZeh3==T8+SST)kMEYQn*AB?l_A=`%1fu1ZIk$^#-Zd8@Tf}tE0aV0%PW8Fzuezp zHUHfj+b@m#?RC{X>kA8B{8;<_-waPH`CsY(kDlEA|H$q8U+U7|7QDW+yzXzkUCkre z?CJAuYXA4k?|2)VZvT;A&;DPwRrgYdLy57E7fd#--}mtvSBu}Getmt8$tH?iEC-v+8%>VP_{-0Qe2#cckcN%w>ov&BiA=N7JW`F92|5F6C zq-AQ}eE(x#smLv$N6?)tWyx-dcK(?<=$Su7k_>MO@lT9(hm9`M3%;#caqU3lYE=Q2@U8017sB2I7_cUodFX6h%V_AKIBS_+_e%c6G6^r0 zYe!nV9)2)-&Ek8=i0Nn6cEgoE`5#+WdxwX<|NXLl%g$d{{t16Cea>HhzV7$3^8f15 z;rer`zvavB`+GOP?)`ZknH^t^|G%q$t1EN*m$uWYsx8Mv*eefwdFI%8`~Kg@-DfMq zbFccg`t1GJG$Cz!VC4TRuXd`>`*mf%UDVFn?R(SrRQ~%={`ce2!{v2X6CGD&e7v%I zpUm2QZqtsey?p;~xbK}Xwa}*N!pry7_em$O)x9rpyk_qV^%HGpJ8tb>DE`20s+lW; z>J5%pvo`2&zB~PGab54^tPh8^)7RVm{duvwpKtzuCt(YN>_(3_w&ofaqNUe3I^+wo zFl>J`<3{+k)Qu-Mg>|pg=)N^sY{T7(B#$iy3}@EFEWSMLnq#Iz%bry>6-;lo?NV^% zxx!L^U*JjT;)xvxHD1+TS>ctxOXj@W z{WO>1!_*W71{u4*>;7H(sPXpP+Bqx@_a0sRUH>KB_s%;#8K#E0D{sq&cNZ7`e*Z)G zwEO$MEm^t!OE-AR82+9+cdlostj*89M<@Dqj(mQ)S^i%Ao(~DtA1kUKN*M24rgJPh zvi#x^{j=_g)djik5-xQgN>54F{Z@Sww>~lQ`5eEMrc2MmZI z+M@q@Q}@Tm`+t3R)3+0GVCt~A#1V3Zm%+ecO|$R}m6`h925viNwPqdljGQhMIeW#% zt=p$*q;S1HuvX<7Q)7Lzd#rh{)72-J1(+7+NH8oFd(q)O*;9wHSE$3uy)^LX+OXp% zHm!4O_1+?2^=`?oLciYiHp`C`-*io7_TN-{asE%&;y-WAUp&*3*^~V6f$aZ}+S}`Y zKHpvcVgH;xPyNLXm%i7U{H;}X(rQ&NrqtRQB3Iv?JGXE5^C>5%y|1``?q2=RgN?f{ zy_>XMHTXtk^}o*kfA=%5+5f#;U-$6C*7XIxmUs7FinsgcUi@73Q)iy){%hw>oe7Ps z_}^yn%)ad0&7Kw3%ci9YKXB7@40iSIls%#sD8jibuGBE#RoHfWmPV0BDvVtBenxII zR!kLjU}Czgqns%fz}Qf{a@y9(3ZnIp@A{-Q4pGfiw54nexHQ>$$C=g%b;t zi|PfT-wr_u3j~_3Gcgs5W!@JN?q>7k3g9?6t%)`8!2I2-yE(iR1jXlVKC1lo|8;o> zv+uL)ORv89W@g`*XLa-TjXO7)pXE(^(D?hokN%p{5SaqCcmK=(Ki<7{Qn&j3X=mkQ zEo$29FFo75|C{|8`8~z|F2uUu`?7C~sl@vjyYD~T#rWuxDA_bdAfW9AFlbo_Z(cGc8eg-0ys@16YrmtHNe+pG1NZAx2!<^9f--ia(4 zucI=U&op{?hcG!Ou*PxotXO7truPOh%+>Rd8qDL2D|&aDpKHmj3X zut=%0I6T&5TCd9GklgcqpVEX=3sy5M_@W|^+!&-eRkMV}tl(WIztFfR-doW z`uei}TAsg$@!hJD_w}d5^=#eV`t6?o##ir;UQyx0kN5T5XRE#4{*2G|duM&$`>OYE z>!0S=^mb%$q(<&(bYLr4P$Y4IdozqT;fX;ogu zs{DepFHY@D`YfcFv_X)ma=mI)wq}6ny3*MK96<-R7Wpv6Hmv0BOk&G8zAN~46TrkU*1z9e?EDCHs40eH)xR|`@2(O{XgC{W<4}}A-`-zE%V_Ek^7DJ=f6KC zetq75kD&b$@;goSyMopG{g(xYKW{yJI^2HS@A@OpUm1mazHdGM|Jt8}(f57_*XMtH zF#FLC`~5}7OLn}ADgH2RJ2Mwcg!TU~Th?v+e(ul5|Bt5k-z)xkk^lc?ja*slvR`lW zf6wdtDYY*nRP4Uu)Z~4AUz?jQzcmOidX(RA!G|lZ=WbEbZM6)?N70jl1N+PEe)88{ z<1^2h8E%%rSRd43aqgACr8TUnc{3yo43rz@MVh9`M|fSG^q^&vorJ)_YeFYjb!60} zdKg#)E5dd$Ej@4`#;lRCM?}a`Ny*9DS9xvMrT`fSt))|PwNADKUA>mL;V>KPgjIn> z921XpE}wZreY=W_@y*y^4&BzI=amyWjtCa06wG+{eeKdOKmOL+l;1c%U#Pe}@~F)A zhqFcQbA0Rh5V|vD^4_b*?f&&|)3fapI=1-Ej29>F#4M^zE{;{?UU|;$_sgwoZTYT9 zu94aOdF@~3a;~LIjsDgyXGnPY!nVF*i?;gqymzH%z+mbc^8qPbtfGSo>d|JK?=y zcbQP5iEHTWT^X)b)h5$|G&PwR8Q30VK9*jzEi5W&+7h!L%hoxbIK(R7F=Ok8wH`u_ z34U7@+D=VW{?x*;K!wXe_28MT)q>pe3<)uj3=!|jS1%JgxY*&7pMk&b(kKnaAN9rG z_1iYh>_2kl;tfHAbEnw!)q@l?8qd6WA(cN_>y5ntn<7DcO zpPtU4bRp^MN-rIYi|f9ao>O>eE1h7YxomfK_WAlavFZEYzq=jfX>@0&m0W&W=B%y1 z!r9*M-n6mqUuXZeUEH3lzsJ7+eSY6gccqv6j@D;>aqqe<95~N^-{nbDIW|1n@gPU! zmgw;s+l}lixpZZ#Ccc;cf9b1o{+Az5{(t*FBc?`6;40&uY^%tyFx5p4iZeO_E!@N< z8kQcIX)ProAi&z7cMdgP4XuN8+@{-aITeuX%*eo{@KW+u10rxio>N?n=v3 zpG7^h94@b_|9Iwe8q*q`}P6)+g3DlhLM7 zrC>MTJV%9|tniqMnA%_R>FxJ;enovQKUw-JeEF{@*Vz+KBxGy#$!(F}tx(6qsC?`7 zC06y{o9eyq%!;@CC|3A%^R0O&yKVHlH2h{B+;nYkvwGOOuKLS)*J6FFx$nREY;kMl z;`LYK9$EX!I5z~Ja=W5wxv|E!`-=3*;)%2SW4+r$CLXzNcjW4=@|voLoZ=iaH=nq2 zEmPQCEh%1nYdKGl$4V9@ZU?pvjUA2((@ixSnPy6+1zwI^ec`~Lr{9Da6aqXLT^cyd zHmFW&Xz)03ZnNW@*IOFvV_(KF+|1jmdQ;`~k$XQASOXHmWLudE4aKsbZVk%e{kTbJ zrc>jMYf2MMyl;MO30*KzRd>N^SKl|BYJFVCAHC#1y?K6je)apDTfblTKU>JE&+3$S zacc9|dop`9zU%cpHgD_@*t0CCIDTgG0hJ{j>jIme|B77}Fm>|XwWYP`@(lIg=I`MT ztl50^YW1=A=l8K)+VeeiVtu=dOS+_6_~EAH+S=B%;)(aC-*ilw%Ft+j`fSRgk`0gc z_)kfi;>7V#YUR}YQv!R$IC}bS7%DahC0+ZhW5CX!n9yeBkkB?W$d9{+)vD=KYvflG zHokeHNh+)i8b=NYbTBP+2w<2stIeQgGPl1l%OipuX~gK z^Ic=@zr$-oHd`*c%YLcg=c7O8OaAP1`_g*8dc&@~ee4V!M_Z=C-s~)0_u1E*<5}`m{yb8B8^JNHqnFt!%^^vxiOa%3x^d-C(`F?ikEwyxbW-*i%n|9upjw_j^t`88jz8MBL`Zd_#M zx3{?e`V4_)Jo6qS#jB+%Y zVVYyeWZR&;E{1_c(?F;x{gyzJ)&`LZ-4Z4S9!3d4Wlo`s!sd-@)*rkXwuB*&YqRCN z`Yo52T+jWzOm4cWVZ)VGA9N-Jw=Pw8F?svrnz?-3z56$-3X9)utDW3?@>5Nkx!c9K zb>hEgPycQar2fwC!y$1!u|7{nm5qvQ4E{0fVN45GUF$k^d701*%{TKZ3-uXZWw2Z3 z+Dp!?=dK%P{+)}k~3Hr1!kzYF}3t% z-;Q`5EwwbDvEEX^IxT5hN8gM_)rCUWSxh=4oIdm|X}DFbIiacCH+k-PUCG8XYZ!L$ z*vOxJx^CW&1-sO;XPx}{HcUNFHfo0b&NbF2r~2E5=lZ_?(Rll(@_C+jRzABYJL)hs zE6)c;F+CbxYwYGJF)g1M~jXSH?WFNUur}Ap~ zI4Dg`YWc>DQHy-6vbf`l?k1F8`~%{zv24SzI+!m80&Y^gdg!{B(o+ z-n9lh`fmJo-o?N3Z&ajx8e74+Tgx_XtDL!VUdN*957SQGk`(aj2w)XC@%G4!13@cS ztxJ2W*b&K*lE9K<<9X0nH@*J2#$a_L!=Y zplTrGq;0t>N4TT0Gfwl!UD{@pj{w%;+BKj-eLs*_GKpFHPk-N`**EUlQ-In$|Aq9a(fo@ukH zoS7q+kEy`pBa?&#Jaw4Q9|{m^)G6I^qW$TsbH?)&gU?^u8~)>O{q3jG%j$Prm-kU$ zylmx~;;o<8-*URN%@X>mVT{eJG(d;6Pejb}y| z&3-Psxx+d&a?*syi+Eh#>=9YC^y1knKLHKSdLhXfJt0vi9>}n3tz}-+xmifjBz0Nn zU5AGe+$kbw473-wb<8{Iage8#`(Twz$5fT`OVwKwR&_NB7GB8Y7U2wYP4?7KRWAK; z;*XR1t(vS*j+7R)3vKDgdl<@=zxXz(V`buw4?8!vs%?v{B_b;%}kC7F*|ErG}b=ilH?q~&c{=lz;-9s!{@l{5uHhkU#4u? zelxH1_S?R%j^*F>7L|v53U538de^VAMbD(olJlNVId??Q{M+tBI$sW$UwKgZesB4~ z-vUk?|6cE$rC+?_TMfrPz6Y@{J16dO;9=?L*?g|0qeq~l-ut-jQ4tNJOU6&81u1Wx z#AM1U&TYoUd13J?#$@KivQ!R>*AH0&ES(rM1GrUoTq`@Iu;7pugR#4i>LR0w1#ul0 zUYA_`C(K=5cmL(u=hv8=-#=JjdqU5yO0Y4Rk;lVJ@BXem-%hx?NSKAN8VOBZyl0JV z;q{Kwt?UfSfl9}OI_nt)lN4E;9`4|D;b~l`c#UJG5L4l`g>D9qbf&Z15K?ej){>sb zQM+&TUzOK-0v``Dx4TW|R4m(7yvnxX=|YUO0mbdIXm zq}6i_c3)OHz3IRWANM0VtrE{#rPh?JtNZxq+veAqYxw5Gbg;IU&$;#Q(9NGu&+Yr| zA5-_h=ftF==JJyEH7oOCR15`ju3urPXKOHO@mZ`q&v7;9n+`$6$qXHChpseo&(Tn6 zTlw5&JA%&K*#0{ z_s_^lwH~;@Qq;(j6rClg`uecvn&xSXwwSdTWQTMx%xda->$E6b!kF9`S-&Vvuk`wvGO>hbMg<8cL?#_^ zSvb*Vo63F>>6un$LP3oyMM58>iG`&~L|RKo7aaI@-Um_aQPj(a!ymVBKOuBpSf?`|B2=|DOSvy$a$~&eaDMqRofXN^A)p8 zm%GYoo}4$MfpJ2;)4LVZRi$j0TN0%GMT^%=Wty3FlVyeNNe7u5>_JSN3Jdyrj0Cnk zu*eRrJ9UOd##5xjtIMbJRAq>kV_=x5lH{uLcC)^c1Tm(}WudGJY-}IqgG{SfA(o-!^1Q9IeRJ5M(L7<30K4xf=VuA3nG;PRM##&++O&XoB|~turD@ z3`%Eqt#ROWjq zgg@6%*pL(RVrx*!R>N6kNxD<{6b%fOug|lX?~&#Zz)>g@u4mxz@}!lxXX=)9tCfPC z6sPO4uxSRITT;l-VVov3!*Oo?ho*|tf~^-`sos9RJ=!~#f#rOm`}S|=FRnaVe|GtG zp=TNUV!3BlpAykJ;yJ@~2ZQ^APR9ifWE<&6K zIOZ72G(=SMotYJ(bjDr6bK>h6IVTm@#O*72dFf|a`Gln_r+@x-Rd-M1;>tzW=PO4A z>~j2Uxs=D;dA9ur{q^S*gd@{)FI%MVmx-(wy#6VCKi6@Yyd}ZCLB(d`+paq^sJ8Sh zQdDPrvnQ`D^=|IgWYvIEM)O&ix>O~$R z+N)pc`Ocn<*m+0)&Nh9Y(|+cC(|5go&i3?HoYFzT>ZVAgN7H8&GBbbaonv{&mx1ZV z>Q0Fw|DDZR4$;Xvf{aD(Zb|N^S1SLRWMn(diEEwB>Z6la-mt6xIO+Sosar2a1Q%?r ze!9kriDSW{6Y=h@E|M2Et+TkdFs|_Ofqb(f_38V}<{qebaZ$8*KWFPb>mQRCT$vtZ zFV~#=UI?Pf2ym8I;R(1})8NsbQ36fgpXJs+uEtNFfntV}U zra;v!N2!Oiw~1+*mmatzs8pgH$DNyeFU`a2z=!;HfgNauo~1Ot-WG7T#jX6|(MyQk9E5iaA1*Hi+c%F6HiVI5Tg@7m<}I zd$#B1?%iTwfB*cfV`fjM+;Wev%n+GbdpY25Rb%|YlT$WvZq4e;)B2%Q>s$Q1d43_M z@kxom8FPJ~oOyg`x@n`d)yZPOUH{R;ri3dKr?-ri(S}73dxo`{P5iN<= zdj&7eIAJ=q^dMWGNXkS(HN8)rEDos-CzhQsu3uXuF0-iIMI>mkuNW&j9BFI;fQNwcH>4Bz8eM^YgG)Ds?wNde3fx!@L%)hT#431#%0gTc12xjJlKh@q}^P1>IyISo%*-&=)+qQ+3gLb49W^0&g^7Qa9~koV2qvdGXI1za}&4C;%Ces ze7K``324?o)QIVxqO>f?gV#4fsY5mBmXc*$(by;-zq-eYjUtbbv)R3C$ zSbO%k%;Kvrl5%){aja!azwmI)!0(Y^9#9af73eX_v#aim+X2$5PIG z+o4vlf2opc+WD+!D+CIKIhd>-3GDb3vpq`JIyNe1)u|dA$!uZe7mHRgA2okrc{L}? zEcnE}Pe(b{GIU+g{J_=Brf%q=!l=^7GQnY*K%A-tbH}X5oLi4wS+_p8>u`OqbX0-P zNe?g4(w-NyG(x!+`if|OTT*hJ?oy2CqB&aYgNiE3vLFA&8RZ9h4a0o~+sw@)7P!VEg z;I4PjWlgnp5$tHl*?&8YE7WrB>tDwVcgEj-oW#r^dOUuomkJxB%0nqBQI^If2eZEz zukl*I5iiF1($Q~)>B6#;8m5k4-)$T`*xcIm{ z(G&>gIGEd0zWz-P8`rg+o67!%eVeMVM^3Kwut8e=O?HL&7#%fX&5Y-##P#E?&Nl>g z%v2R~QY-B0IN_KcTV}FVr=SnndFdaG^Isx4vDELhrJR@`5Cw0XOpsq5#y@Ato*d9Ek3 zD>rjXY)9CV==#oCg0;E2EKTa)&RF}-=sd)_$St95Z`*5!jt7!D2aA-RE9)>b7p!U# zvv6Ll%ExnLjJH93*CaR}u6r2maiqb8$7_L*fOliZ)a5g8E&tSVli`hkVnzPv z%zIwR&-a*3eDk(CSF?=mgASug!#}Uz?FTm7vaZim^I&q#NY1G@Y2#SSG(X|5X!MpF z3;)Hvh`P33^!7hr*{gk9UO&CU_2gn}x?b%^O>gVPTTju5~t9h6dGkV<`!+xzk-*W%RVGfQn8iqZMSuTz@HvNp+_&Me6=9gPG z9qnUTEfR7x!o!hqhGX{HDf84Ps$PpqsPj9MX{*rc_v%xi*w_cTn|ZYuv|Xx>RBF}qoTWPZXAnT^zzxQZ{qW+|6M+MRbA3) zid3|voNw9k*$)rz*V*!N&JOh(Q4AbQQ>H93syI76DPhIxSf$mz;U2X$|0l++F3v37 zI(3^*PFkOwg;eI-*yf&l=Jh+)8!{R!_#t$oL!zOXfnTGR;l1t6#EsvT+Our#6#L%H zo$2YPxMA9qr4hYrzSmut+#a@Qm0$dxm@8YSI<+`l6Kl|DWl2a{#eC&oRH208gqb&g z3!LD-qtWJWHQ6#nkInkBjZKZ_ViVFUU~hs>WJ9$<>UG#J6e7`+v~z*vd3fb z>Z-r|Z?1J8{bq3g=EvRB*BdDnId0c_;mOx$?~WL*xBGnI*V4_!%kNLik9#L= zvNkXKX~gRXYq`JI@4Ig3e>{9^U;A!-u8d`_8C!ovE@I~j*}sX!p=itBIh{ric1_-P zW7@TB|A{TTR;o939pG&2I~vewb^he;Wx~Ew``WAP($k|tE2TIUZ$z%sy&gLE$PLfd zYj5`QuRHO1*~*IKV9%uj5;NwOH@sNGyIELAP|#ELu|{Cj`KInDO_%zE989bp!Qo58 zE=fFPPW3d><7#lY#34Ju;+mJDrNF!y|%%d)4^ctKtp+TDDY|?Xlidv~Ek?HlZGe&IcUF4u5*1 zJYD2~lM?g6Ba>AR?7e&Oxt+(E2_EiuYQKHH5T~(j-hEDkM8E0Nwk|4DJ8rEU8C&1z zF)cMVOooFwahlfigA!|^XH4&lJm%@M?__cG^-yhJ>Eq`@y^NTw{F7Th*FNeUTi0r9%D><+?Z@ZS-yp7-Pye*$we(336oo_BI zQCcd|-cy3yV;64ibh6!=;wW`iFKor+X$*pzI;Vpe9aIdjX5}<1=P{jEF>74N8B_Vr zHECMgYYwKvK1*ad&zPtcu{jwsC;Hly>9B4wH9GL-@~Q(uih)jwg@GBGyV%sH3F)@W zak*#KuSrr2;9^TrZ0=hYoqo0G+N+YOldP?!4_31kPA6)0b(xUuVi%Q`iA&S6 zAD_zqcX{RV$+EE>8gt+0r+r>_`x$fY)+@#bL;bWSnr^M1Z?a~|3N^-AOV-44)cp@K zns;ke(sSG2p0gyx9&UU5vN*j+A#h4veuP@5&8G8j`YN+`&wM>=s;cGL%F?@S2kr?O zh^v-FCoNnq_AErG@#3EkGpq7*n!kIkwCHNyHI4ZMgT|7JY8CJIl%Bg*>gp4fx%A7t z@R_`_%(J8!H(YohURwWjRaVgLkj{uz5ANc++&j0y)?SEg@IeX4}qv@XayW8_^ zoaaawD=(KinKW^cN1$(~Zpqq{uAS|ZN+pnH0J#L3GqAH9n__g1!s z*YxlFxcYD6k!~6qnz>=A_1f3{-yW5}aFzY<^ZTCzLVQCw4aIlly4%^qQ0 z-|+It*4&lPSI#>7ey(fdw%m2`Z~LZgoquVwe%K^#k9oea=eicIl(4Vdw7N-q=lphy zna_5ub9kE3Bvg9uRNY)}opW6)bkwc#AO7=vx!tp^?rY^clW(yz)uoNTcz$zT+%Uti z__p7Sh|uD`Wb4iub3b=@9P!XFi7rUh+MOgi*(0r9{KCnTIa1}TlQJ?nmhetK{a0_b z$mbN%NEdCc&j&=C8FmH)UTs-b_a?8%FH4JU_gyx}V$GHS>yovL*G#+8H7ng_ZRVRJ zEKKbMA}2ooczbQ4&zTOk30G_!<9!&*j#gcqRq!Y?ev5{Psk2H$m!Tw^kyA*sMwr_R z`^OyZ$wy}E)Mq(x{MHF7E4TZV|GNC1r|0curn;_YTC1!w6U+0yGR6G0*Iirxv|CYI zpy})>|7EZ3Bkb!dzn-tp{{JcX#vZF(+cT!G4PE6Fa;4#T-@9j3)s_3oS~8T&WZjAc zmCrG=Hc1yZ-C6xjGgVS^ZbwIp!Mg`Z0vtAs${a~%42w8sc-A-WVDOVpcYSoWDmrXY zmj9teYZZTV?KS(_7AtkCZu@na-Lu5Dp7wpKc2>(g(6D@Wr1qT^(dQ1oOxl(+ZTaEV z`rG{N_q_S`G9_r@^Is3w%-wRnepBVgzv&;VjQ`(iKDlR|+C%$)+9jWFzD<{poh$wQ z$jm_WJf}pB=tZqR-?+ zeRu>D1TP3*>*-n4)^|p+;!u*A-id|_7CbI{duEvmY+YlpVp~tvw$rN^`WBR4sW(zN zDp+kOayKoxW#;lEHLkf4owYwt+ONA`cjWZ(%m`+Wd+*QduirOs_m8>%%LC`h-0l7U z?|zWeK^Z+?8N_}t4sWwF*JfjO@{ z4(`ffbKnqNENS7y7SOQf8mGmfi)Mlx?l*65lUQ_>-P7V4k9mFI(S&y!i)OI*a&fW0 z4?BAzgG*&q$Azhe6aO3#RBLd2Sobz>GRMv}ZE8pI_TJ3jW^HhL-TGhQ^8-64d`tU( zjsN;ToAtZyxNH~rcYP06Pdm>TR15NH9v^i|2|02 zKZ7I3;MXq+M_$2+jD;z8SJhuxra7JS@Zz@o*0L9j4|mDm*fPU#5z~q&-xUdsnlrz; zW<78C@#Wzn#SH)DWg9(To1_>n$PN6ISGx19>u&$`_vh?7b#X1j*UIjKx_!IDKc5L+ zJnhP^Mf-o3*DqjWeG_+D9s zYqp-Px>j)bLyrF2ExUd{ySO<2PI=$2Bm1k@u3ELs^7yKCCl7?UxP*G2-1#Kv6YI+> zESw(_YF!LZC#~POza>;!LVSa4k>d03ySJ|FnYqxES*huu!Zy!c93j>^s^yD>&sV-s zob2J56nUmMXol;80~eS&BM-B;r?M4rqY(X|{iF7Q-sU2@GpXeQH+v_t#Cw%pD8`{d?jtC0BL zr>>jZ|KsxzYz}SH{IFlTdxDPn(`}mJIi03u|K6Pc{*pbnLGrp8drPE;}(x+)wG3E}J!DE92gD4TFfX|Zz&L&J+>Z&;Up!Q)~JE$Ev))t3N9q->nxSy0K%4Nc%o><3QHUALC9PkzT!A z;P^gUC4+_5ACe~sbib&o-MzxLc?0+L*}1|tOh%p}vijeCCmpL3;!^r@l5x<}XQe zBMwL8@Yt|8N%^01h%ihuW8~fR;_A;X{H9mnDKt^YiX*0)*N1;u;^pPHHBQWn zO>6k8HFs~JjrGis&Chnr7sx9<=V3S)?lY%|ZSyLr)2VJQ=Tw*U_7n;;Ftl~ZU1WIi z^>>fvb~$!ahNN$~zPIykJWq@Ze{xq~_vLHlocX^Nrp;k%5xKag=!~60V8f2c{Me%f zvIo2B*G<-pNNCY;J-&>)Y*|Z1OrU7M88-{p*C)<=J1ViDtiz#shBHTou$$e4&9hW;CWQ4AU}ZRenmh_+^s7H^=RwSf--}2U|Ty#EH-K8hjRN35oAO2HqBGXctnGqp-J};dT5So1Kh}>$=2Mcc`E?|r}vPrYY zQ75gjBk*cM*iN+{wcF#rDx@{Ytg_13W1joV!bkGmo&DS2w#QzV^-r%ic(de*;`GOp zjh&~5M~h$8IyQZ7PvYLJ4Zdb8Ivqo1T1Z)DG)@qBHg873D+5lECf5bA*K#jT{A9wv zCdax5p>X%4H@LDj&n6;{vBx`pZr8O~w|Fuajo z`eypp+vR_s>*q-(2uSO@D4Qg|IV)z$>d><0*@<6FM{`uT`es~Ex@O^|lIG#@eP3C+ z!>(Pg{QA^qhwk6^cHX+hv%a}TyMKQ0eCqCZpTzC!_f1lYEIswb{6?Ep`K$jKpSDd> zcQW?SoHcWW!lI%V>+`MZEwMUDQN}Y5 zetr9OLh;#>x>D0wIY)KgY;SDfyt_ib+Tfv%S)6|B8l_YBZcgA-=u|lxcSSg?Wzn}y z!YgVwuZg?+MyojYnm+Yc=J{9xmveJj>W%{jyP#eao)e0S^rC+>CMn&WS! z)|K_%m|uTa$mwy)vy`xtYn+tivS+NZc=djff<%X`-6YW`{eO?yWYs@jQhLiObFP_= zOY-tlm2HNOg^>pXN-iI*-E;Ery|;M>ispMqD{F)`dLQ)3xGkPqzxUVS|7ANWpUT{g zc@yyEWxM#aQ<=U8FNf;r+wXRAa8Y1sV-`Kwdm-HAO4G)MC^wHRxx$)rT}{gmU+vD` zU-7u&*M}EBkB86pK9ex7;7O}teG{XeO=Zj88~Y;SkAyaQ3OXFzlWcIhspr8=7nidF zA_CdVRJtlGetmkqPDhbpfjYy1bq-++EbJERPPT0<^l*AslP0$%#g#t6GT}+DhE!p8|^zq7sjf*v|Ss684OBO0tI1~DG zuJqT{kN4jZ&f8>ksJg#j?S93FhvjzB@$cX7t*tWR{rl7EZL;C)xqhkhZ@GScwq5?} z->N5-hE5yEB^Rov;6cu{+d4%F28(fzW<+g)`Fzz`+xq|nC`zd-e3Lg1^(Zm z&pAUI1r{CH_u`JS^4Fx)oN~E+sw)Z@ru4+Jvm~(eCoho`5;7KAsK|KebNAn;tK{o` z1pS^9B)Bnf*NeD#DbWO$dfvwx5mPyj?`-uFJX{#ili*?^602J8)_ioyt)p*51kY5y z4>}dep{Ut2x1;u2l37(AM`F$SmIy&Hm6bL#L|fN*Ef(N)IG}d?^2sgV)`pt~-(ANR z&Ck}hVA-Tl&Vwf`MMDD*%<}T@eR;63XMOBHS6xPbLD@#-AXE1lE>}xp8jnxD7Okne zF?r=POWww(Z!-L>rpyUhQm@bD!R7L1Lgq_@Wir9*B(vR=7Og7XSG@R!E9033i4klu zGF#*S-v4u|>h9-qyWPL<-Ms(fd|l?(qSAjSudcrTzvR)2v+)&=--zG;^YQ-A=Cr8a zo)YYTdn64#a*L-0X7jKL+H@GYRdzYH4@t@NLsf)fnN-Hk>+qCwwp4Yk6-Rbk|Kg@mlQC73_ zxp!%;%%bKiZ{lBky6vqu{w^N%ExTh`8Wua85@QuOw$jS3=KHxcW1EW4 z84=&_nyu3_V_;zUE+r>&{l&3qYQid}Oe`%kl5Dw66S`(D58eLuxSp(n5tD=!gS$oH z2K{G(%#ACoT$qE5S%g{BzD=7P81_18PFq3wp~*AWv&r6Fv(aFIf>HyUlbS%Qib8>f zqWglhdLh%}D>~^le3tU9b3FaFsp3B=;DBPW85n#JJ65*f?#Y z-OMSq|C|3m>tDbb|9@+FTWpTB{mP&B7B4>eaZ6pvre9As@$v03R+@F?^zO~w{rckb zHc2u(>EVys*SG1US4Pr}Zp)T91p$GDOcjSzww*WQ5QyxX6{`GuSJB*z?a`I#$KAcv zJPzmWk8WRB?$SKtZ~am(kN;B>6WS+yyng)C>nppQe`c|zHSnm}ColT_NyF@{Ynfqv zQQhA7x&NOu-@my&UUB2JJ6C)&p6||ccX>Vi{JvN7WB)w7e|q-S!z-gbG&5XFB!raC zOh3E(e%+3{Ja<>sfBo31{GlcAqNNLKugJE;4?QUceD%MMMKkQ( zwqYhyqojjz_B)%XJiYRHA5QkicP1(rFt|D$*_$b^syX3%sO%*PS2hl{KF>zkz;l@l zTs|wO_$dUObUoT275SLwcib~2AZwwhEmY66M#a>su z(vh%C^Lx~Rz4JI`G%~OpIgs~=QBdo7nDeYEtCgD4!7DUFyi0_)yEnXjr53VPncec( z-(4$uTCd!=9_gNZ=EE!IuyuN_*n?#|zpr(F`SIkp z%k``OUj6op-GBLUVOI|>{{3G&)UIys*E{3GV9U7htj#*(U(U~@xA-tz5T9F>)S$7= zx9jmkPmYGzjVm5x*@pz%&opv;?Cd%vNIW=CYkkVnRk958ZGL&b%lvmnFJQ?GO+iKm zYxfVo;-3HL{~Y$_bgJdH-I+WIa=(9Dx$$Mr_nux{@3WV0cVhL<`1m(w*L|WU-o6F9r@z%*vBv7`(kY9CO`aFT=j?t}_i1nXf@^OdRTKvsuRHwl;}w6c z&YjWxlepgr%jBf8|1c8jbG2T&0)Z>Aq+w&cS2I zHRExfgoD{)UvmM0M-dT>43b}5{om=%b^g+$+n^fLt=2l({q)V|r{VQ)?;iEsZ8LMt zHcp0F$KGCx-Mu3H{k@5??>Sc=xOy_hs6M&;w*Py*u=UsWW`xbLdeil;TgX9S4F|I_ zV~2aYMVK1f;{)u1Jp!!@N=xe378sw1S+e9`vwZypmb}}qs4?aD5_UPPdZr{IuBi}|`-n6qm zu3Y@J-&L(+m9B3J9eOk*BYkzRM}1`R8`Skq>+{obwoz- za$?-yU2kN(3r#i`Wt@?m!nDs#$<$@h%JSVa_8B~ z*b!>!66pNCnSWW+G(Wj>)64tT?Y}YW#D-{5-KF=17?oOfMScyu;+IzZW?PQ}+iSFY<;;Z?x40dQ*)+*)JDS=1+KZ73UT75n@cY(*~YVkEmC(ir-Qo%i2YcudY?XUlpfXmfJ^tyg*f>nEvp*~eOQB>V_2`S@db z{V8#qKPu;|>$jTsvprytVkuDQY5yL)Ib;TZrgFPx!_rANEd_6W`TM>8yZP_DeuZ=9 z2MlSlm?_Rds_sg*9YWeHQ z-`~Z?=jCtTd-I2nvwm59Nb&E4jW>CcHtfE6c7|A^)y8he;_Lf={kHE~>@?w+OKA+t z8&SrYe0OwRtfzcGsk1;)LH^m-c55x+3OANH8@?ti;7ZG@*%z99Y;u>nyFVidt|cuB+RW8R@sxhvQE)VJ*0S&)!gQ!-;mT6g4$N`9fm z+*ju;IG?)pZnzK2iiX*X_}||T-*EfwwR+w~NzViX6P~S1^0BWgJiBGrt?kDzf6cug zo0E2bhj&Y%`IhqM_X2}|KiK(x^HCd@Oopthle?m~eRg!)o)@@6f~o)DMlrs#c`6O- zGOjuQG!gM;nwOw&@HxU#Ene``&6jg0Pd0wPW8H1nryPPDGc@j0em-B2X!1wcoAdvd z>eQz?^$ScJuktzbZ@%bI@FM-z31yQT>egG#FRFj2U(^5V*Ltf(hZLK&X3SVMWsQ>f zdAq$e|6V@r_E$Z+EY{?0&HjB+GWQub*sQ7l{r>-SUu(-<#qsa=bFO-m@cC~2lzDsX zpRd_8_w8=B4|5Ifx_7VstU4uj8^68P_I~}QTXSa}c&rtvUcXH{%J@jS`F79EQpy7T zpYx<$j(cYwZLhzWXpQP^hrG!L@wR z#IRyMW?=?C<(J$S8#*+evbgwYJmzT8e9qFgG(|}&Nzo}-(1q2>D&*t|xj<$o!O}NT z>9bV|JeIP#Iyk#!*T-*P_OU^~Vb(^C6|)%6*jOD2WJyZdnWEsUq?)=(@N2@+28Q=J zcES%>csg#cnR}xq>bv>!zcoK!tbKg;^zA%(|M$9e@7CM?`||s|zTN&^zrS5k{!vi$ z=iAM0_3in!uMhU`|Gg+_apu==`gT?CrOWq!|6W&7D9LHLfbXu{!7dM>dgq3gylpXa ze4=J<)B9ok|AOKIDG8^e5m(NjAwf%R4Z@!Ts+{y!;a+jqQh6?=H{pMu zJ`XRyzxVSKbNhVtx zQZno7xG-n+s#mMu?|VFV_l|vW`QN{;tKa|FKzoJMzt_T6%1(c+R(0-M;MfEnScU+3?&_!hwvEg$BAC6>b_u7~PQ&p7`TH%h3k`ZxjU{{xIq1P;!#7 zY%814r=)o3p^2NDic5g20b>AbQxMDX(6wo4C(dvjd&A@?#OT7pp5}VwOw-|yr)G79 zH8ONw(A&} zc`|qB&#$kmE#CY8SA2DM@J!v+;s4+Ks{c0sFH=Irr;Dqr-`|}nd)9omjl`l?Tho_X8o`)t;$al41?YFsUK^;6yF!}ou& z^NYW`_u-;*-PUBjGWB(cbkow~OE#R1G8VigH>2tDthqBB3|-t+gx~X?5Y<@K z5qPSuquBqnLwM_yJvXw?@K0Vc<%rgXda;!&42uGt)m%~-LX({gr6p(d6`V0pw0W{~ z3e#3+W(DKp9c=RgCyJb`Jk`MU0ky05z4 zyn6Z7-M(Vm-nVNDGyeVjzFxOX{@-N&&uag!|37N)yp=2W_s6FNdYaFtPv5P0to>|> zQTFOY^}>DzI{}6tS_(Ta{$gcQdbNmYQ|jTB%T>&5XWy-_|NZ1-f1KT~S2v~K&)apX zx99U}`Moy3zDd88R&UtRJ!^}JuLi5w)ZPC|mez$u(TlL|`!)Eia*{1b{wH8@jA&H;XXK$S8 z7|(O&O@Hb-Nk)agCG{=;QiUI#-#)1`?%$K|>*oLCSi+Fd)0`h=)Rmd>{IpV<$1`n) z+oikL-Onq(UGv-ZO}w8>*@Ih|%xelYEcp%?d|vEyYTCi9HaW=|H-Gkc@$vL99546n z=<_(sBGBm;F>mok5gGTg02jsv4)-pe!#`#uRq>{M?{g_F5fNH2Ls6-|p|fwFT6pNx z6^u-ZCmT<6F_m#Io_11ZwuXR)yx300NzO)P0Yz-{OcUidFZ8{=?fvd0&pMlnHOr31 z9G%hVGf9i({DdVEDXmG1Cm&ukOM>CRjq~9STbv)-$7S(+&?qo-Xz419=Bs$)a6{ov zb&W~nmdUBY^19*EcbDI@s{48IXZ?$I5mVP4-!n90|2!(UdwR%O|L}&}cKa>=|H+yy zDk$?P%Hvj;cUNpao0?VBOw(s`b6lqSET6Y+_uFl+eK&PAI2r~ttMYq`E1ceOoUy@s z-#Qbe2odQcUy6QznP0o5x~TRWH~%;LsT7G)%9MgSShoyF|yQ%0_ zzv1CkD^*8h7LyG+*SbS{wo12d6YFL?a7J08*U+cu0mtDC&cGdhx1@a;ZcVN>h!lGC z*j#?O%I$sYXJuZ!!o|iG@&9$oQ7MNj{~IgH|H}V9x_tA^>-+v{+rKiu{rUXa2|Nxi zCe5=tl^VP}R|bgsFiP4k{?5lHvf!BFEXyrj3d;3DjKZOORhu6~@G=Bk-8DnIopFl< zmy^AUQ^o;_HO^r!$?7Y1FY>Tpe<>>T(IUj5jBUn&Fir91o&Iel$$pGS8qOS3DOS63 z@lGv=89TE`5ntd1h6DWpD$Fhc4(<_W&g7IVTBhUiM6z2;ai*HGndzyW{Q+GKSt8oX z>l}}Eu%4(_P8C!(Nh!M^P;O|=;<`eTe;VJRS$uZuHr_th@~)JvjcFB=q0&K(eaU|| zJx}|6``w?-uU9YE{$lcG@~X1g7L(Q--@Eesr#FA6=e{KFxbztuIsey@9p)!>t=+*iYyrx}ff^S_Ck|Gqpc{?Eb5hHNFz`2Tco|@Hu1pN+Me0=lDbMv0b!FoGaFMs#z<>tpv zAF)iX(98OH&iel}Y2^!7ZnM>!>@J!aEnz19X2bhMO%oY6iofh;oUtpwlGUOoXzA(fjsOTSG%AX9pScjx)#qH`7QXrw=Qof|JaCxqwd zHlHIsKF;Tyr_G$sIa|^7!S&9lj5CXFi3)F?c5$M`1D?f>A+kaTI8rQZZnm&XHq|>b zv>dRQx4OsT+iczk35qTZDoO=D$>ygm`L&+eC`xV2>`OZHMrNssM+*Z}# zc&4&y!GeTk21SqDmoPWn&7Zp>w@3NY4|n$6A`BAOT9~G}{GK7PMnm9`LK?&Bvm5^Z zRaa?C_?;Bb$LbdPcE{cQKTfhTo?&8rn{WTNK2GaQ`c%0^N@oO_epgwUZb;j2ICXWL zK%(G|v^}>sF}~THH(BYB&7YFR@4LRawomceZzy78=al49a!zIMx$Idxor`W+z1;C3 zrzVL*z0c<1RfWKu`K9qZf=&-QHgsO%R5)N3eON0kx#0bZT@ptG91pf7%?mhtMW^>c z^)bIMYMJ$6EbYHTR;A7JW^_?0ud56W;-3IS;no&>HpL7Rvmx& zeRpiv;e;hS@5|1evqn!(mgn^3$%)&O{SA$lxxBf-5*X4^>%3zBpYHtS{cM$`u>zd| zE)I@YCd^g(%EiEwuzC0A?fd^G6z%){gn$0K@QoZ6PIbI8^(VR5#Q1*BW?R4V$hvR+ zbq@nGS9O2>`}Jqujpc_~TKTlq1lXE-wy_H^ypIrROo&NiyO8MdfT!W2lx#$5PM6Fs zvyLpYf71m-6`nqsuT7Mw_4;8xGj7sx6)al)R%Yr?wvs@80@w{uGN(KT?}XsEVPN#SY|`{Z5j zDJ<<4vqV`FK3QF@jrZZ%G;79D8?XG6XSy2AO|4mqwH$(^ucsfKA-YIH;tUg`g9vNG z#}`E|-CZ0LUs>+_ur%TCGepeyi*T_x{EGt$Sz5TXMT;^c<{{PeWGlZI%pP&E#$#y}nlOMnQ__5ZVzkMIWjPyHM?g}fO zos6sfcd~Bp%Qo9ebDmhHEj!BlY^&=7J+*umyE+Q`#MwNpGhWBZtn&OsVebZEqflYx zt5Uf)cwetxD?amzp4Id#N7j6G3;TA?IBNP;W1WCSi7ZZK4Hg=8U;eG$RW>zJ=1+Rf z{YIM;>jeaydNaZ;t%I8@qE2(q*!y1IH7jIlr&}<;Qm057pF%#Lzxa**kB-S&om>_5 zZl=n|7k?C=D{ji-+jelHLYJg~u#@i;SDC`Md#1#Q>`7ox(sfETkYjprp_V(hmZB9W$9#PZ4*{)?8=B|5tKd@ zc*vOJiF0SpV?HIe-AVHvoGy?s4rVYFW@e61{mc^iQ0d($hyX^Ym-Q@oI zn$lX!x%Kns%$ZZN`t#MQ+o{6A*~`-FZ+36E9k=G3{hRILEgYBJ=YP6(_00r_NiQEB z=XZ{OCqMVxzR>?a4u9XieRbXa(8-yemyWxXE@kp9&{Q(Ax_tR)&R_TaOBvjA6&#c| z1x!D+wJ&G-FU2xd`z(p8dix~w=EvU6uF&96T=Top$A2SBL;bz>qzzI@0@iE0B~?`% z86N3Py_@%e<-1hhh8^E7&-$_^hE2dR#f4ELi+3Tjwu7KeUF8h9D^U(dI0S606m^vS z8sFJPNibNy+GhAQGFj!3&MQt1#co3<&B~T3Rza*&0v(o23Uz1n)nuJ0=*gg?e!Qil z>x@>id&ZL`J$!2%GU~JD8LafRwPJ3!P_l8$zIvmUvBGzXn@nSfmRVxe`|0xhzd6`8 zFD|Ry+`j1b=daJU$sZOyzTV*8-9L^xU82qED#oF@hs8R|4Bu~FA;n{?^wy>Y{$OjgeuuMV&WHyLdg~3c~^kfkWG5 zv~o-}PGoM5&EKXu^^|pR@5XM;-ZfHDcE7ysIbVNUF?XKM^yQhwzNOZ=X+bPkW~@kY zyrNd1*)_@k{kc18I=60q{pp=7Ufi`kPW`gdA88yd5;O9*Ih`lqm*In<%0ZK9x-(tF#iLxJl~ zK0diZXH|!XL7won1*Hs&o(UYx`Fzw=YR2Q?;ni16Y}IUa^8clTh1g2@k7dc0kbILm65#Th0GwS?KCtft*bTb)Ba(iZ=| zr|7ozbX@&Iix}Rb*(Cy>SsE7rmlXK ztGQb*ZTDZZfA<81(5=c zqDL4U=1MT|tYSFOl@<_`S1++E!e(+~3&w*s9Ehcaof(qLWU- z_LTveJvZ3)+)HO(A#vn@VA|Hbv)ow@rChVv<(b4L`fzjl>W^D)q#19x+?6g@E-7T) z-qOL#ENs?e>~75dT4$=Vlf$C4Z7wcOb9O~Mew+O>P;OU~%jTyi9oMW-TY0^H(xMqF zc#~?c>6_X%3UZpN>u_$o&}__5Aa_ln_NhDWS~dF%>$DK z4@5e9t`+yr^2~j7Ls7v&q_^$%nodJafdfZ^17EnhI_89YKX^n@QDvjy=M9QArM0!s ze?0k;u_-Qo`kcMVOnWrj7)%qtewbZfKU4hT?R5WrzyEiwet!M>^~hiAR(;$3wkB$R z`>Tt4%U}Q7x9)n>6SH@ZuNFt|-IDqDWbnP1H(UqRtM`gH7rnR1=u6u+gZ<>Em)bdI z%=6}VM_#pJalX3bneC*N9jhb+l{PSF8Zt^m8JTSDoXM=f%qqlc8e5U#;2`1>n#{uX z_@ZxpLYvD{53$t?bhc_g6AqQVnq2RCM&RLuWho2^ThFW$5fs z`Ib|TU)z|chc!fGLIb0F(Mn~N!%1f6BzOcn<~WD479C_3=$zuWf={pEHh--UgG;c3 z%^p+JU_wN4vz^`Bp$FHAXe-(ubPP<-J@65DD@_6*&8R6FFyxk)s0wuT? zO>{Ej-@#}kp?+IAn3+x1oNx1@o{U-L*Uj(!wmy9{LS=QPki)YyBgaR1+vThsS|)gF zCUFEnyhw{pv_A2yNyoRONdCJIsD4LWmyJ>I zpjpJ){Jj6K;(vyE-c750Dia#2>f@=ix^TfGt^d=RESl$p>)-u#S@PwCg@vI{1vGq~ ziza$<>>W4jrym9n;-AK{5xOA zPfl0n@waW+{%ZAK`s)|%H0XORBbj@JU#3H)p~Fm$UwK-Wporn>m5B_>4NUE~BpB5A z+{GLXomu@iNO^HHM^9`#-j(;{|DzXg)lV2Udb%+j{wRNjgU7<{l=Ooa-|7XJgAAG% zN;LTHy63(8m`c;hGCr@bE?VA<#q zdH)>qU6-?IJN|TMU-Rml^m|q8KUO>Q`dt0;{lCi}U5LF`Gx3hy%L9E~$3hxpvJy3X zJ)O(HW)=T5dcQr*D4s>{=efvW=UKKH{qnl={y%xd{{I2{#x3CoV`qQ+ZI`O(!pQQx zUEp2q)Aeuk^~%Kklb$;Iu8lc5&-eW`hov!PQO0ttOb2RX?>|}NTzA3Awd!SzNyRRC znS=GsV(Yq(2E12!zsshyLjTCtOMH8koGzCsZR}3Fd%s0~_RaD?yR+xnop@gU^cus0 zRrOles$~zEzOt&A^Q?2$%)^1_5)vK=9$XV%%CJ}T(>_I0U7ie&>SQIRKvQNF_6ecQ zi#?xeo2iMr{+==AhVnuYwJ?X{=N1}9>l{5J;wUP!u%1DvfhlL*?#u1P@)ldJUP#}0 z^L*OXZ_7lsI!q9GHt*NZ}{vY+^P7tCOF^WSi`%=m@T0`(k@XN~jTbuskbJ*Sbz7Tn() zm2f9*Z42KgmS&y@oB|)zUMU3}-oY`&N|N8r^g~CmyX%sr3!XaXkwc;V z_a$t-&gGwu#eY!SxwGcu!}|XZR@XZ(U1~p_We-o$N5`7~=C3bp*SS@HZd>zykJSer z{`gU{b!Xf?%j)O%4sW^j>eZ&`_@ig97Oq}q6mzfW^{EHv?#xv>X z`|6rsFU#jYQ+%egc&-q~>Q(y^SIgODY@6OtX)}dGfQLiDpo__9Mx(k0SB3+F=tHgB z8NcN2@}z|cm$Br8FdR>BIOt|`(W3r}^$PQl0}TR=d&S(Gj0IGjM1rlhs4{YNYbkRj z3EA4sl)FE>?$g1g>3e=3yTqV3Z|(iR&+dxL&tE>}u^l5{w6WGE@frTF4kR(Ce^;}7 zon?BZ&(+7}nyZ#t3u7nugeiwO`sS{XV3@Y!HvhZ^UNr`;Yub`cFC^M~%>DI#oxZ)g z{`>quX@#_tS-%sv=(}#+xxB03(Fe9UOl%H~Q+**HEJlyv}^}~r9o7U7TFeE(?kYaDSVqn&je0ocw)r+Lu zGeWjI0w&!!bh$fjn&{S^qX~0vR~&K|mb0HIIE|69;Ni|6Zzd#_a2 zR@=2^)#|rr{px?WRbB|XzR#)otlAgprLT|fIk0Zek3ToxtjJCO`g3#l*P~PCUn#Xv z=n+}?{?ecFHkeB>j>ME6F%Gl5-;T!WVOtd;Ou!8 zZpyL5=>fy8jo$mOzcs6Bx>)cgzW#bq!vvNi36BcY!x}m-D4O*|u9+b@vp6T~^0D&R zu2s%Gd^`^B@rxu`T9OnJDyKLw_oRIZ+M;06msS2^)09b@nLZEWvuVh zN;zU}`rY-o!j_eX7l}#8K8!ppsw^?3+3jn=;dLBWuPFN1bVeN&aplV@GM#ZoHnGe3 z{@Ys*^1`<_m}q9+ab34)&fI^lDcPAXoQst#cW&sY{Ga~#Q`g%45w&0VD~sQHuUaE; zOM#VPf8GB#iRSaq-Hx^R_&a^`?esrJv2n3;>SZ79ypw*_vY`vsdKyjTlqd~ z6~^T~VHe&f`DwncVvsQ17QiFbR>^Q_lb=}99JX8Cxooj)s|2h+x#b*`T%`KOb(h3@ zg>4y~J2srY*ZZq+QIlQA34Uih< z+f#f#_t(by`sAdKc{@L;ElxkrGo!%doV){LhtjLr1<(JzIlF$2*R`uhqfZ7e&tQQo3hpAglj8 zaBW&%^Lb18XV2Jt92hdMtYlJfdT`O#zR&-RpqRAm-u8~@(2RPSBiEDurbX@SnjQHx zdwt~d%LN~cYK!-UI+;mqHA*{R!R2>BdG8zV#|6(aasos*Fizn}TQ9sU`HlYXzZrGf zN{ddt*)g;E)HeOt`PuBo?(afB3hll9|uq+barB zbUglBn#1nCG1f9-!m%*z-g=g#hPF)ove_ZLQSG9Ooefx&bgDYGxyu~hvR2~^lVDQm ziAe|6z0lHD(#;k>aOvi4lezUD9{#qk`Ttw}^tV5+lJ?#^uV=qdX0eon$^VQ09}1-Y zdtN!$=EteGM<<`wuZutR?ajgJuYVryPvL3|%c-Be|9kmz{rcti)_dPSFTT)rc74d! z>2?b<7dtsv@pPVvtuOk@zCU)|{P@^-`|8TiPcDC+9)IVV;(Gi2m(J@y>uJ2`qNSU1 zso@Gwqrn#AlbsV}dRvUv$nqv7e?Bbu&dA5cvPDj!Lv5a5;(Spb&!;Ptj8AyDZCN29 zIC<5r47DRuid{p5dDrz&|_-7>PN0~tu>V1oTSvUQr%GFNY##(!x!hS z{QO7y|I71d{nS2RKKW+{=j5#7o$WK+t~dp16nM<$bLl4wM)bZe6@@ z2BVQerWR!1wV^yjMGNuL{(w>(lXV|O@mTjli{1_2JHgFBczZz#OtSk{-d zOfY2^&*FV@G6!d5E@r#ECTjyvg%}UZe8uLdVAJyVcV_$aEuXy5E=w+6Q>m9{(U*Vs z&)fgs{-3G+;a>Cle-%b^?dtznu3J{W>qC@MrdNDT{ie!AnNN3JonXZ5;rV*C%JhKA zni8|}+7nO7F1R!Q&a*oY*KAVsm6;R~CepkvL#^h=i!U#B@YYuTyZLqX>$?>*R@^$w zxw$N=oo@!i1O_dpF$=X$dZ zw{&JRZuH{3r^v|UBg>FsB&>GWIa{%rm+ef1%kk6FvT3}(-Z7i!zWx;&9eHBq8UN+8 zSO3ks+wbgD(Yx>7-Ea5*x6AAO{~TZS;VgT`wtJ$6376-Xip|!2?fBux+R4Aye^Z^d zs?haw+5Ly@;`2T{um77{lDuSkq#s+#VigCjdL^M39nlI&OsVIc6_Xf@?O2kTCiaGY zxxt%e%)ENSrY2RNooaB-H&VGWI=eEf;J z(}HB!72nl==xt3(V{H+wJ<4`3{haF4Es=K_4!pdm*{>FGths3E3RlaDJ|qvr9gIOB~<) zUovy$mtTMWmVIyX4o{5R|3k)ciBkR~?{&=0DM>m>ZBJk9_!McsziQ*oUuPKi{MeXu zag%>>+e&rjR3`hpnJw$eHnX2*o%pu>rHV-Nj_%jD`#xT9lyno5Y}#b3lyE%PqVjpg zet+RbS0_ss=opG#U2SKzu)ga8^F;nvbJLl$gHD}YrrfgIbn`(~BZ1Y+=T4d9m0-

    yTgdVH_Pw)G>zudC1zpSaUD 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 delta 79851 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

    &%I$y%kDLLWoS(6 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 diff --git a/mods/HELP/mcl_doc_basics/textures/doc_basics_gameplay_pixture.png b/mods/HELP/mcl_doc_basics/textures/doc_basics_gameplay_pixture.png index ead1a160bc1f7df09d169717a081199d0d6f5c4c..3b586b9b07e354cf1f5d0356fcbc948ee2700924 100644 GIT binary patch literal 71564 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 W8u*z1H83zRFnGH9xvX literal 72384 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%0D9(;Q5(9W+X&mFTj-JokBIe|H?s-eJ_ z^}{~{eG9(L%%|A`E?>$CU$;g0uG#ge+PR7MU%gs#QE*Pfp~OmycT5`|o@G+GCg$2$ zkf=Ls%*zdWD&l@Ht+?dDEXWcNS`iYWVSc@^cEd~N&BwR5RNN1^U;SIR z{J5*ye7n-y!u~cte?0ELU-)g^I^MmEw*)3whJ99RFgS2?lj+sByS)D2b#;_Wt72)a?QsA%Z-?c8LU8HNT;yjynH&HX=bQG-Nz@z$9W&-f&VKEIv6zqg$A(CMDOs#S|^ zu6q9a_Ho}f?dG|Q_O40Zlly70&FROrr;_$wVwUAnvX$EG^f`P7qet)Rw-Fp?&rZ)d zUsO?baL)1Rv4%TNiTSA=Xa4+2MU`17AdIh(iS329kHD36d+vzxrDU&Wd&OPauI0Sh z_4rBF|191cxL8>yo#r}v_Ix>$TmvJk)BD7gt5z=!^m5?tbw9a7oJVbqmru{tRiWP) z^mWhjJzvb;kyOYO!SpI&h6IOrxD(Sn-E`}Q7Mo9OHurs<1FC zX7;Qsm!G}p``hjVYY!UtJ&4{S{)5LZe2u~L1N;r_OMkG2 z{Af9TfWPI~n}s_cJ9EVLbbIZ4`)qffb*;HoEWhm+0ggL&EEjzIB3-Za?~*{%fj*wI z2R|)1mvY>o`a+54+1({adQPrln0@=!BXcz?l^rv0%!oh2^P&3L%=Bxb=GyOGv|DCnTNyy}yX5F^OQBGet z`PXl#C_HzDeT|rz=q?x6$V=5MoC}t2HfH#18zGlrJXKnw>+wHLO|uKt8uB9iYwi7* zt1XyB8ioHjWSD)Keb>04<8z~)fKc;Hq31G8jh06bwz1_;VR-Vve*vFd1MdSCt)!}e zBFBqL2e{te-_PW>a&PQuOG}Gh0~eX#r#W(`TpkKs;eDUsawE4n)^(%7%N;T%kIHhg z6G}gxsIZEO4tb)p?9NigP&3;(x=(nxZZX-+l~B5N;L~Csna=+3=Hfl89n9o-RLxpu z_+3zUnZ90U`^(Gc?S4Mhudn>~XZ`tkJGIsK-uNISRjA2vFeYun+n3X3?9C2avn4*k z!f3UfD#vskW2-68e?6J_N@cco?%5tU!^<1ieg0;BZrbxJ2V28Hm0yK@dx3d(XyQA` zg?f??=V>zX74Dlf^(}p4sx02r_bIf5EZ3oDY)FN{X^bw z)ukuRK7PFBz~sfod-_a?gEW7-kh?-@=_Lh~H_m>2!ZjW%G^g}m&i-)9L8@e~vPJ^) zJ0+{+0AIuT&p3|y`fq=3!locHxq6ac@jQWFyveSM+dm&YvD`Lb$>+}K2gcR44pK5j zAH-xsBD`a`w>}Tx;!5ck6n|vGz~e8f%M`_KBPhjWBbe8_x~n_(BDb&47Pf>0>FEm` zcHCUS(_VaZP0yA1qnj77n0U^a$Jkp@FvH7c*^Iy6MK7|x;LHxuU@~>ydHs5YZ3Sn! zh=A@DbF087K~pYQ+%>&E<>{3+_M@*}zV=;EnXDMI=ZuE=k#D=a_OFf1yV!SHFO^xn zpQN0NbnjK=(8U0sBBHR;mp^5$-Bi>$oS2@0G9|R!{yJp1?^VJo?>(os93(iazkbU z+n%Y@yp%Nz$~73f_^yk1@rN8RULkB~HEA^`!-IdFJF8C$9`&`9?C>sdU(j9F`1!{U z8D7SJowvF=#O!Mh#1>eKL`1&qToj;lMs1CW#qq_R=~LFMn6YWPP3RPUqd;vF+X}Y> zKHXZSU#?XzX6bwMVDk+9scmyVFs^uPGIhay*)Q_C<jRK1tY?&V~diw2n zw{3mt3azW(yqdkE1D%~qjCrS49_l=N?TXm4kB#dp1LIx@tFhi#&r{U(bt7Z-(Lg!Y zzT#c!#&yK$; z;6mm@tE>cugX;fw=0@K*kx4@=(pSWf zFMLrUK6%2tIg6cV{?SR(REc$$mH5=;#`wY_ zdwaTZ7Q5=|0Cf|^hPwKNpKok1jgGb!-+J)t(R0hA7jwm~k4j6)O32u-Z`0z;*m5tQ zW$(5eVG(#GEiqTCc=uA%tl}=`j<-gOPiD^3Yx(udEi~|(`fBF9tR9W8F(!@jtJf@= zQS)ZS!igK#POV(9*|kaRuG9R`g?cBWcAIw2>Qc%5tMy;PU%S4%`sDxkO;282T-?~$ zn0)wJUTF*$M}GH~mR-)K3xj0BeLOa}N%LQAs$-VRP`M&f#V^{T)vSHtkYt(0Mu`Jc z`W_20Y))!bwK&2qVf$lR0>ddQqqz*vFAJt$5^ODMX4y5%q$FuY{H!U?$NOasws7=V zA5Irx?H6QNAi84BltqUVS2oNv$di+~_;drWpM3awp68C9Qn8;gxY54_o@AcQ1l!o5lUExXn0MXncMD8s0rDEp2^``uImh@K#gd`fY4*x5-COxZNSfY`)mt}Q=GvA44Tcn@g zFSKj_@zFm+w{))X-=5~itr?jU+y1#PW7%ujbJCNkfu;I{Wz{Xiodq)j{L&88F%`{W znA`s8u+t;$kWM?TQ;Ao$N-UYUYsU`-r?MrpHdJ%2V-R9aP4t#*ZLg0j_SKOKZu$Dd z@L9A^qsK=pgJzz6H}_i0Ono?mcc1Ib197hTqF-P1h4;S|{`H&9JiPR4DetZsuciGR zKkIeLnwl7SaeOQ>Fb2=esG&DEgzG1_a)(iLV*PorF9XG@Fv*K%4-_~;<%oe&9oZObj+j^_8mSIcf z=VuNPa()a4rXT)2O;@qWzlK9h_{${|g)4&38?H_?6&7k&I&viX$Q_>9Y6U^@?^QW2 zc3hCjd@)sflEm%EKtM-QGte`b8%5e)bEWHf^RO#~OYgc`n9$i(Xwp@q&&FJNa`F4?ce6 z_z}kHFRSZPw#~%VP|S(H{JcYM#De%4tvjbKZLOM=l$W=1_3mk6!8^)a*6i6^o6>UT zjL!17rdwyv#)f}h7TC0Q?cP5M86wL9nd-Rg_dgUekvePQb-=%|&8JSF`{kb*S=QFo zJ6Y1xr)N%S2+I*^>GfV;5!jOV{`EAqxd#1erSxN3H@(g6n_A&+Hj zEe`sLsue~XTCN>h;?TMC1N*P8@=3=IWH5L#>=0s-FKAh(x&IMQqeT2iQIG5Zg@bL! z7RL%a3;Y!RQIh46mfPWlb{UQZEqgd0EVWwj_Q1z)W%c)_hb#{7oRrzZXq?9=C3*7f z!$nV0q-Vs02$?!Qd~tcv<>L>m|1cTs)NmBg{;C-I<*1_b%WvgpXMa8N=BEAUJ6}&_ z8?D#yKOg=4EK|$%mRXz(OB{56bj|s3%>EWq|$9s3|nK0LU&UsVGCM(TbZFy@WwyLyFDmE1H z5%#jEGU2+nQi5Y@k8xjvjN9IY8e7DBW?R=-2*oV;XI-X~9(~}2UyVSw<&v_-&%8Vu z;-|Oni73AK{_3O150cw>_jBG-vnj3HC;X~;pT?aBZ*thDw8^)GMX{zcm@^+-P?3wg>EGQ>Cd_*7&c`P|;oA zrKJ1wuF`ogUw(V@SX6A6!@|Or#Q7I8XKu0Rw@|K5t@!h5hX=*R>H9P$`P|=A1CpgcAQ=r>~BJhm#7V_6A>(nIC9zW5tRIulPA`-fwn1%xO^mqPxk&p!sy8Rm|B- zLFR_~OwDhc>m_mp=JCz>{>@AA@efT2ZwBcZQ&M8%-ktLlDd@Ny;Jjh(w6t!ml@eJk z&yOFru+lr~Uvu`-QqVMc(YKsEr(fRx=s(l*ZtMk-pWjdPEB^iH#?5^tWq#v9=FiXV zO{>4%(|&ef$pOAE--~OTvrD$9Ug4JNY33iGn5g{@yuCA6Y15N4}2`u*Vol3qsidWv#+YS zW%B1mNaN)!#LDi(Br;&&qd99#!A%d(^(mv}Urkn9h$xbEX}yPia53wOqg%t{gjreK%eiN{fA7hbDqxx-aZO15K{LmjNj$S8@*djk-hM*w@##Qc zDTj?U_u7m3=P(JLF0egv>*zy8$rx$bT-MvHD!XZ-?Jq~o)8xBtE(pzVq{^921R{2#)3=<=Y9;N2*Pl@^NT<-6Aljom> zdG8OqC%;s^-^FZTID6q`D|h__u7(58>n{Ag+9Chs8!Pt?`^12N30t?$i`Zi=qoXxV z@aC~2D_)iyLf_ z3pFiVvUcsIOBE8@A)@X9n>Z{BSnq9!h+*viU8K>mIG`rQX0F7uscF^$wiow#*xt@F ztl|;o+V7xa^d+gsdP3XBBbi!!UyTmW*}VCl#-A-wYws_OzZe%cT`1N(t?BZ<>q3ic zY@Z5!sElg$P*vHnb8AGDoke|JXY*nHuL_&uZ!HS*_g?!A}q^FCr!>hz*)li;NW#7<_{9eN;)&FcxzoHSV}}zcEr5$>i0Xc)nkU?KkqMp z|FkUE;;lB26q<3+@lGJiabEw+#j&i97asjHudQ>5LsP`T2fELkme?g0ZQ9ClWFzzH z6}nnGD~lO&md*LbRO@Z1_>ev6=%!lsby{MA22zunq7Q#Ep43+P)IoMt`>L*8p3nI1 z6s=^hUb}*`@6C;kGOhV{rH*;l9Q(2$PiupQT=Xx?l=2Ys=*=@{{tQXIlCpQ^%PHOm zRO8~}tTrw_c6r6I6(@gXPDw~jJV%8?TE%D)@mD3VZG8P#}zBk@G->FW(@0$N} zN1e6%pWeT6=+B~)RSp@68>d9ZC3pq}U#=4|b;gJ7j zr_{vg1$P>Rr8uiSZgT{<7WtKD>^ZSe>_BIc-$&-~idvaN4>`2NwF8r$@Aa4 zcz3k1g{|Hj>t%WPP3I2rn`z!GiR%KV9NWUc)A6)P$Z*mVWxs12RZEZVGw6AfyUNPy zkE98UWHu*gsir>b!l=C>0!}l9gw{CDdhx+yGj}_`yPTyEt2AqLc$8M^SLg5iS!{C` zGm2=&EmRo~wCTT~bb%@5oZ@!_Gae`CQcmKg`N z+xE6j6=P%w+F~vz9L8Iky!p_d)qAXu&va4TmsI8EweQAdWmmoxEuG&*GCOUrzH$XE zx|`f`;Z&BUjIM^>i>6f<_ukp0n(_V~$3)w+{cMgrY`Yv^F8p|A*I76DY3@3jA5yKh z?Xx?{+0w1C-a}}iK~PLLhtk(a8cR=em{7A z>!d3kTg%R_`bS}hzC-E7)5fAunatVLme8y1+q@DSdKnboNZ(s| zhv&gDK@CwpCQ-eR3|zn4{rRy|t?o)|mb4JpUx@hJfeeg~#WZ z$8SE?yLgJoHwnufT4JhMI~4-fq?f1bx%n|ZP+)lRo_}HQtGB#vtQIaO1w~>`)M;k* z{W^Vkp-fVuk|l>U$GV3JTV2!rxeQ(J-tax@JCo1dX6}~C&sND+uwH2J_8Ut6Y z_^`nIgodTwx8&Uo<-4Zn?AdJGu-D6}se0=4-HQv#%1v#C3ZID_&fe|QE>;?Bu1J|$u+W+mFL_v7B#DO z>vFwz&xcH`S|)E84hKA8^)k>jvHswiIK?92#wDh1#olMZFLx?*I9psP72(*m;)O<| zBv&VUxUS(Iwk3s%HXaV4f%_sZzUJ&!zf}7B^isn%>8ow6EG`j3uoZ@)_aiQ z%vE0w*AtE6n_p~ZbebF47tyZx)vQ(AfJZU7@bSl^lQh(`t%AD!-ELECAKu8g^Kohj1!xqGC2daE0)Ze zlk&mpx>C1?ZDxY!nXIaX2bEf47}h$?-L+elouS{{EXl1gps|3de9GqH3mZybFVQT0 zxFOSR(U~O%8Sma5`pI_gR$&RtKKXOvjH;Ikm$f&PCRxS09cXQtv2c#8^&vjlNo~=e zKQFbtI%5gXfz9=DWV|^<;g6(KM$)DkdD2&AEtaZa*Q%`ai}B&$u=Hl*Sh%Jq z^`TR#<&h=Z%_aI|f>VnF_skIelD195s_w$wfBzEnIuBTyM8?=S+NSN$^kOqJIm*CX z>lEXWtdT3B_3dOrU%>;dKXLkgA5VT0zH=%tbIykoXG$7a(^_QLwdy|opxLwY&yqP> zDgUP_Rvg;Tn;buJ;?pyBb0#ahUNYJ#EZ4&L;)mB!c7g7>RypRv`u7B)GX2 z2L?Rwnapv_LE*2%GTq0AVqUC{*#1uYnq*bMN0vDb%M5OB(JV+=5afJ)`kw+<*5`5- zsq7CO1bw(`lc(rRV>(>^Rd`(vM|1d*I?;E^!u^wqyZIEC?6+^3ePd1B+X?gZa`W4= z7;M)09g@9#DQEKJ+)0zx%zVNmS5&vpSW0T+&xO+pjd`{vGZm$s^7P#3*lwVEwl7ld zqxAyGLu*4TqS#JPo3i8P?fzuWyLWQEylfieC#+ueY1_7aAKE{D-n@R*B^EZT8MC6w zN?0ZwKH;%^Mh5%cx0^&c>K9Eb5Hyz%&a|&RQnsgY1OEl%iGI};NesF5i3_=VPI|P( z$M@as?oDE9o%v~@^6@1)Z#FlwtYa2Ro^kl(f)wM{^F?#IY}TK+yTIb+fiGrEMfJ}n zEld?Q7P}|Y)A&HMWSLjP zLqqqr#3dsA6)AZQj^C@FdPN)Rs!4;Ya(+DAKzn#7q7B{10Kl9zUATT z?y^ZrnvfGnq3!7=A7JWWI5&3PScG==Zk-r zWtOYl(0HaJ>dn6O%o@c%4)*sZPOkg(RG=)tvgr_?G>?MD+t=J~+(trzdUsi6EelQ? zs(8iCGgj#7-O5zj(Ejp9LHPpL@{m7F^Q_C;jvtR^^maS;iSel3qDz@F8LcmzG&XI^ zv0q)v~4GIQT4Z$UAv)qOBUsC^L>5!4IVZuelJA$2&8y_wy{K+qIm_0+c&*A3|Q*qIZPIuA?>;DdTdLRIZ^6S`SzflY@CS4G^9NkvkBVHT*qmrq-C_Ns#q`|C!byrQ z)`y;S+*!%S%e#H2_;dDSM-C*cx+vFa+9K3)XD-``LSFWa=k}E@Io85QrkGtyv8}Uv z7y0yIq6OEXr>AWLq}|t-Z;!b1a_=Q7U!N?h=qoF*Yhbo#Wz~Bl=G84~R%ugm?!n*wXEr70UOc@nX8Zrq zrR(>1JevFcx#PXM@^{hi&(;1v{PTUi$^X6l&-Z^n_{aSIy#KfF>(_j{UbX#RTFvFN z&)oa1_;{)W51l*5u&iit>?GE&I$D#=HhTDMVQVoo412JADXW5Kv7*7$n5{fdc5oJ^ zFPFDdS6emn;uHZP%Q+{f{$AkMHsRzmi>)2)L59i=5{Ew)mYYj(E9RIh_Vl>yzmWCV zjrZTqq}JrXiPj1^nIHSQHr?3d+9XiF>Qd127a7&Y!K{boA3eac{Xz3GCuK>CV>)h0 zvrRHptrefVir8p6>B;GX9!ySsD;+)-i2iO=+S<~#TKLIK=4VFD*Vx!*wY1G@ZJp^I zyV7sE{r~Gz@Bi`sdQ*J!zn}K2>i@2PB|rZRTVp;a)BV2*a*9W+?e>3v_(p&K%%4~7 z(`$a7?a|*i@8`Gb;`qO3AN_uJ{r=|bVs4WJ@4cx!b!h8EBjXL3+F=pz?(B@2cT>IP zInkcy~nogx@BuCTem^Hs_loF_UUy?j;NZ2y%hfU zMbX48j%V(|oeirT7wnFVyd-5~u_9&zcj)79wLiGFvHsICRxUbh9HSwoU0JBkX%Q(S z^0bIO?-zIf#NrZVfmsJ{+x$N?so#D!^B=o^Ip5g-&-i>Ix%=0)h%etF4~W|qT&TOA zcYCqBY~4rh?ZVeB}!Qi>FbqEEIM;Qp-bl2tc}dZadCYYFJ_sW-)?4~&b)1xm48B7`tomIxAygIMaZS&U8x2@^+_+O0Rwvp;5kZc|mgU&-q$<_Yc@!P?wo~?~r>{ zWo30WE6a}zlej3|10TM9n$*|v_+DMzy&nya8tES1(c=0waTnLdYksHyzDtzbvHi%jy7LDW z7l+py|9^ZwZQsvtcaG1GX!`W}_1=uA$&+&(I9$%PdCcn+h;Vx7GgY^J14ECp`_heb ztlz~jnTv+(|9|n$^7&V9?>%0YaiaUTjF_lpck9l>fzLGNUrfJqh*PxTKL=mpbJsZj zY>t2>>D_Idb3F?r1QRb_eR|yU&khUiFVc!i6F2tTM67z0*B0YZw9>`@RJXvR*q@pu z*Mwi?-jgv&%3V_WI-q2u?nILp=by}fFkvS%qnu5s6Nmm3v1ZAz9Ri*y*T1FsIm$e_ z@Z#FqAhV0v>$cW?HShlS@7kMw`?)_)Wqy?X81zadAXa#!E}cKg;1-<<-|)+RSL8Fw-*59H>=E{PTvqIkPu(qb|QJn7Gs~*BLVvB)L9yDZ)>&v zJm=r-_ve29Sv|A9w)WdgWA4qH&RC={{Y{JD@p!g?!{W&m`x7kE4e||zPW=y)Sy}yj zUa)A*_{ghg_&d|$^8>~9rum%|JWY_2@ef*2_4#y#%_7#dUr3EXJ((2!pTKF++Z&tPn zzi-tL{Zjbfgj%PqzkWwWo|l!{QPX%)>rCD0r!_or2MZ_a7&K&tA368_aOIpGY5khB zEkYIMANDwB|36hx_Ncp@@v8WI2KM|E-9;u34$gSlEB$xJWoO4m=Tz4K=h}$e(i5wu z-b+<&)DGVBsd($mmv*634?bPm$oli$o0lKUc!VY>KB?l9II#HmG@Gw)MDzEU{=R%Z zeb3)}d*bh9Yi@g7+WK~q`p20cc||?^wzZy@6iroio-zOZnNIgRjv`)cvo5Oe6N%Q9L#3=eK@9jFcbc$liVa7!Yt*v5zncEyb zzRy4R`}Y0y4)KN0{bqkFtKS$D*`*Y*@etG3$elr}*!E;cIBopq#bx69vn1YKp~S_1 zlC;^&o<6?gWt#&73a=Um#B4rx_Uu^)P{(ePKvaaz)awt5Hmf{4DfZ)M=hb)bGVbq8 z^LHuAw$MHyx@(cS#ED+(nMVb3I&=}ZB||SD*D`v zecvC-oJ*gx_il~%epQ)RiS0isN>i4oTJ;vVzm!|t7SnRHFu_Kx-9K^B(SP>}YVSU& zbhF+*?xK zWl>;n$4S1lAm?|V%D=2Qyng=m_K%f+PO9$GyVG%Fy^l`h%m^1xZ>>Hq-;1pRMvN_o zByO3SR2Un!-|DO^qP=w6FyrwzT0)1=~I0D?El}*)8%c~9j|oa@M>5qRvpgc zekLT$%UW!Gy#89nCwbmFj5Q~VRf;~h?0z5_dZ*X-$)aE(TTKDKwf-D)6V;4XNKFtf zei!FcbvovwOm^b6*fcSb;*5WH*xO!i$&{AluKP0M@%(>9Pov+TtA4k~&fS-rYe|K< z-}m52!a*q-Xj^RoIX);#h2BNb8n;;N;t)ITd#5x z>aXtRO%&k}WRRGz5lDf~^8 z`%;+IVI5<;bsH|Un(@AuNpjrk9_Eyhx98-KmFY|Vy<-1Aqx`$RZlS34#u9x-(N$fm ztE!ogJDo^9Sai;G%FHP$tR1VfvQ*?77N2~)PCY~+L_vl-v7lhX)TwgiTil*=onq!& z*cYO2G3U%-PWx`}>IG{ywA=|^x%qN`cIARiK6&R;ax3aziaNjep1nW1=bTWxL&D+@ zk}|KXmTC)sF1768j8_$wcqT8tUrATX#8OGaar&7nH#*NeK6OOmUGBBJZ}r)y96Y>c z#fJsVoNfn1Z;97591z;~@0n=+e(UecX8U@1@AUusp-k$q3VW4i@3*GxdQZ-rC8C*A zY`!-?nryXHF{XdKH1giF=uYVi;{> zY0}5|PcAZ5NiQ=u?h;Tt`lKaevGAg>wb9Y>;kU0`xiW3*s)Q;1QnJ&m7+W+AD`n^2 zJJX@a%+Hbdy!86r%|``KO4Z8!9M@&4T4{K=hi*l&*Km7Fc^xHQ)GxD4Esk$@Gbl{BB*wv~e zn82Wz5*DMe(PNUnZ_fb$aQz{i{DHL3-)?i?pS(-c7 zI%;xL6ZbTMyO!S`&Cm!mkvVLwYQ+BXo$WS%`_=5?zxMJ!U(|iV!>a0KgV^+fmkQtc zWB1>4S9vmR6W4*uVhP@2L8?ZozYGp;0BwkW^1Ef*w$nw$b6ut^$q;NecjeyclnpJeo*(n`SA9Q2-92z<$0Gc!KvZc$9O`j@mE?|G^-{0fc*5_Yr-LNam_E-BZ0XG&^KZeAtoI20M9W#o*CnWLh zII_T%XSGLhgVHyLQ#FiVe=6`-)Um)3TIrGBAnJhbkW?KI? zGymPOLgD|!tD%>w1Vx{h&8T#nsUD&*N2Mh(F>ymngTS0M5s8YQf_E4mU2vjA?8;@~ zEBD^%zxQigr!e`Cq0a8z))Rzp_Pou@E3A6Bv~_;H>Fb&4XHOKw%$a34Q#<^YQE-BL zbwHBO%sc!(JtwUT9%M;6G2Fa*bv1Wl@#kYNo-ST45S(1BHfyiPnY{NCl3q*rvQ55m z>y*K+hms=4b{EA8nIA}4rEO65EbOxR{dvDnKHnVo`|YF0;nsy^Q}$`_?E8>xd(-dW zn@-=IwUK>O{)DT{pLFeOSZL+V8ycA(z(wdB=P%cklyw*M?drZP$;fQmd{H3Tc%hFT z*M7faLjTmmzc_V%f4jZ<@!OyBbvEChXqvyvZAo%e;7AV_aLastZo{KLI(I+LnCE*t zg+sCWn~c=ciR-*h%CaW91ROeYY{Sx<{^CxR&Q5Hz#6@;Id1}eMzG#N?p6_2-H$Su} zZN7W|U!7`faEai~2LgM&HmYW<@K872;}-d0jUcmSka%G0f5x*19Wxt`-S{E~niLXt zI5D?e@x!AhItyfGwcDob3#cgZ`FAq6f5uUsUv1}QJ~wE+zm@y@pL_AWn)H8LuUi@K zjjG)%F8(q-&8t{+!rR-2tE!bt6m|6D>VJGN-F0lk!iAyYhpzF;CjQ$P+`0UuclUYM z(@pmjRJ2b!-V5?t(tEKes+IrrnuRhSo@`R{_}}n+vcG=q*X`l|UUjNktX*}gdGRs_ zk$#@}GS8bWY?Osh8O-uOx=`y+mc=TcYuW;S%uW?Ocklk&ySK4m<%)d)`V;G-z1E(d ztF>UFfsW6W)2u8>XB(_9U$p=GW|IH@8DC%Ji-BF*Te7PLz5O}=7lRi9yMyw zEM&dC?cHV5Hko;j&o^w_CKwcceTvL<%cTz`ITU294Gyop7{GhW)=ay?D(_+2H`gEY zFI{HTI`{1Vzy9!vK06kF5ZNIwZSFUf_5LBp(2d?__wJd>kjHxHr1Off*M`fv!!H}# z+guf|bxoUFI-^W+1yA_px z^Qfrzfxx8NAlq zK7GMlclYU+`IV*jdo-Hv|9_dO^RRvF(Yeca^om3-jn+%CnB;c!Ou!4z=1lYLsf!i1 zY%XO83>IasO^)U0?e$q6(=l=7^y>v>V)pjBTyxw^V`5@bIj&~S&YY5vx$;`;hSGzF zH2;g7?kQEA<0k9V@zHg2%t&5*{vxZT!^}vn9clf) zGmC7P{lsH~gSzcaowjjURHo$=$&0*v{Zf@5qzRVq=PaMC6cJjX7 zdMNa2pRBB?mQCu#zuBB@%K{G_4Lz`bdEANZ^%E{yruq2RvDml1=l>miLLe&o_2pTH zk-}4ZW^vtXm~8Uqrq0?ZExodZeG3=LM{ZSE+Q^W0R@d*mP5IO3@n?7Z+#b zDvVP?I6iYM@{dquU9)5TT8R<#ikjxM|)I(>zU&Ftk88zs}bn5>?dubrN!XdlA4i^1o+UoK@EuG1ED9N@p!~O>0W4+^W3tvYZOf?&96`_dwml zj#ot%TuvS<%+lV(xMs;zoc8b1Jmc@V{$x*XgzVnUX;=GRnVk6cDs=a&$z@kn-)4H; z)Amj-iftBu>@icF%QkV>^w3bb7_E~W5q*~ru-1M^oPB=(tgjD`7q9!@s#`B(#T`?~ zq^(t^`Xy-L_dT_{O-h@cjyq-KKTpWZOUyGfZ9Ki?b>FO+GyS)+#3=1vta0kXg_KpQ z3vMmGb5V18LR#awDeJ6vB|coVa#})4%A(hOv;1E#zfkJl%j3KJWAKW#dPVNbKL$rc zMD!K8uU+%SfxD{qjM8CWCs*^6ykQ$xcr*#TwO-Mj#mnpY^XRr5&SRE8)T;x2eEXuS z7GJyg*PGLl?0kBRmt;;f8Vb%e^jtEhX?5=9NqS$HA9l-G6vUJVY*|sztJm`S+SS)W z5#iUT2+d#W{ovDq9W5P4UiIuac6DOz&P3^=Y1^N*Y=6?iA9h4OVt)~noJ2==1C6;`N_?uDO1H$EM}(nZ5nCWc_&tUb?Gw8gaC!?cNA{MIyy&y!48WJ90$8$*jynm?uW|yoACzu~UaCYz>>= zpZ$9~?r-lE%RgT~|593WB|jx8dB%E`F@NzwF-GvsoTIBdIBQ`mXOR?8@r(;pM= zF+4atf%)5a3CY7Hp%rCYtUv79o*TaZ_rE#iuG{!7Xt$-5`D7ls>qi`2js@y(G;@-gdQfm(rLJyivWD6gfpu?k)6eez_g->C%l5gZk2zWT zU&qh9J$uWpLdFkyjaF&SQkbj>wx#G)<(x*?aK23dnZAy6fy0vRpt&+d3d*-aB zBwDbGLm;Fs{h$^EZ~V6Utad)Ns*mw9o3hs3l=%Hyszy1V6y+-J%@Lab^lsZ z4@u}vuGcg3Jj1g{h%;j6n@jGUGXfRn*t9J2*O;lFz_w8T)E(XnEAHJ}ur~Ve1^zcL zIVCnW-Z}KG$(B51sFqwQX?L#CS|L}cD~+=$ zc&dv(S4;5RHSzo7F70{ut|9mKl8t-M&Svi9HD_que5%u>z|}N4Nn_dW;~$U9nYY#M z_`FVab-1;ONk#vg4ig*8b-Tl7iWr4GpFS&KkJe6=;?&6E$IH&nX45{k>e{-ME7z=O zT@xK`ZrD;<>YKUp=Hi~jB$tre63I70B`ghF*sm`)^tG79nYL7*Z>dO>!msvyv&~o^ zEKhho;q
      *nvh`{%3qx{BX-E8Y7e3xgBawL4`moitx~|8$`PYaJ{qIo7WIDq-z3 zwdpnM*=BnbEk3^PvTXm#wRtLyQv&}U*tn@IH+Mt*6ulP5e;2R5ylmLUTzj~3&V!1@ zM-N^;8GYP9Z_A=X%`1J6R;+J7@&3ur6UlA!>rFpjy|44`RavsnN{_^MOCO0z`rKX> z;lz4qrNat;>jNeJNgEDErwD&}w!+pptAE8ZaprwT*gebMUE1^MR**x*``R*QW<>)I zA4SDoeV3lFoXH8F?%yS%6Qz-+*0oA2x-^|bTKZOrV$0#m$YhBXv4*E4(vG?;O7B>g z5dH4cv^O1_wzNFC(eq|%tE%Pe6iq4Zn^#3e*JWSdWxTsbC+T)Df8w{D)jcWSmO97_ zuCm(_`uExG;`^2L?@k79E1D&_P zX6b$MSS_u0Ix*8TH8oXsjgqU9@ot?!c6+a~s-I6S*5u@UeD+Ri?b@g`!)MDfL?*Px zGxs}qpSYIw+)vu(6Z`)e^`EB9_Gr>MxN_2U9Wk+85z*SUPOOJCcPyTx`k2Rbx9x>( zkCMa>+`O@(QI=um9S@)Mn7Rs{M;ni;&i-)gy%;}_SF?;v%+%IcuZnDgHqAm%3H$Wg zi>f8Db8B}A_#Knzn|f;N){lWN7c2PmMaNDFwqin zp1OTjbLw6a@$DbudHa8rAE)0xv*&r-?RW1O`i`!6((7^2PIK~Cu9o0UElL~Lvzt#& zuoHb&BJfgo$*~hj*va@ZvGd=H z4g1wP<@V}H-X)56wtqh{Ym?T7?Pb2aF_%rBUfo(6+_quezRXasdlAVqrtd6EN{$Ge zb@}evr(#0N+&U&Pch0<(JeXLxamxB$WuJ;U@AAGskH5m+(r=%+sc^CU=hPKXjz;~+ zoKgu2y04sxAG^9@7N+0%C|oE0TyDXX4V*7tI?njOe_ZmH&Zjk%dAHZqy}rBi{T}o0 zFAOu4t2LC47fB>KuV!d__~2m7l{$9$VX2b(_Gudv43;x9D>5@L^xU}As3rUKtdib`%Y2zrr$@UMMy_0$>C5*d_mLy!AWxDQ;T4;IL=9MR_eOqU9Bo|CQEa4KBVxl)sfB&`@-Rslum0fF@ zY_276M#rSK*74Mf6-*DO+zHH*5SA~z&+7N3FqCn6ut9^H+>zt<3(K6Nugcfi{Qhdb zZh>mbr+5Y)-=(T7ElD=cTyeKII0gq5TvRjIWtjc@yX;(xf|5x=F+0lExX+pz=5*tN zeT&GNICgnc^JLz8nmb>bUJd=HdbIAS>#be09=s}boD{+;_HpvXUoEFen;3Z&mX!7JUJ|{Q@rN4W5n!H>*ZTfEG zHId-WlR|CE(0`KBKCP_!x_`^6tXij#V<%Sl zgcaR+HKpavlOI=St~`2jVm0&$f#^aar{9Lao5hi+Ou_ z1lJ&*hF#YwBm%FcSSgIg}s(QoRzmWK}xoV%3&cA^v4r)wtW+f7Zknws%G z&p!No%aS=8xj*agKkO3|=T&mBjrWp=<{V#3UQ7AsZ{CK**EJuHzjN&wQ}+5taanWc z{wrWOHh)n-eKp70eX1?XE;j_Mb@);1yu*jjd~(?z;l33;GtbPE*}ts%mhJah!iV1F znLlc8-nFgi(B8XC=j`mg=USO*wOWJg`#Z};)`=EbvF|ndx2*Fkj|}E6E-ju^5aMxm z#hIlOZrxfIuz$uz0kt(J_N+0~(d}8e`ui2$Q;#2fIJ;c;!w>!ayGkyrW$ue(oxg8| zM^}@)dCuA6?vLNTH7*5B1!n{_ec!IhxIT00gXZYhHYZHxF^T_tv26PbQ?q~9_#b`N zl~1X%Z~dci`QPkc6~BAD@)P&XA1o$0OGH*Jck;B^p+;SLmd1`{C_ zl5av$q3zF<3p~aLCLabBO6T;O#OB$ga`F47t2^tOhdkWmT%z{-xAPND293f~8{DJj zOjFTaZc%u4rEN9ec9XKJ*K<6&&h~KnvlhMB!~6XX)1&F^FW#iePh7P-_j1S7>^VJ# zYc$qN&NdH}INWo(C?ZVc`bEXu30jX@oQ`~xzI8iq`y$mh@*k$Cy>?e9ar^xE&6?#a zrZYWMQQWfaT7Kq50~c?WzN&)9j($!KSDz>Z<#p&<&%9vsLVk-t?BalG|@D)3#WG7-dKVDl}^!M#qvh}K@S^QC(2{UJYtMFiF2d`6YvW|+;;XP1b zCHJSKtm=Nr=Cj@UuVwAt9J9ToaQE)NU6Xkm3KA}S{wXegSY*zwgFU-%KTg?^b-`hs z+>?7oNvRV|n$O2AikSBBltzJohHr;CTgy*XA2}z9bI zaX(k@T$`2`N@C(`=HC0@6C4~JSN5_XFsMDasNvyaHx~6J$DXb8((v%tIpd=#7eC3H zt9bH`$%@j`H!Ig3+Gm%UKQoadk@KVR&6}FDxbpI*wb6r<`uZ#RBv(A&@WdnmD!eftU_kV*T+KY4?C((TFalj>n(FKLefmN z-^56zP$yO?XRTxSll+IXf?mCzot-6>d?@(wV&h3kn>FU#^!GkB`C9Z7pB?Wsm)H2V zZkA9hjodBfJJs^mf_VG=D>hyXoVDo0i4EsZ7i(!vstL}1?b=nPDc~pMv^A=~Gbn{= z=9-7!te5Up{r6*jcueuyl@af)bsD;69AvM4xK#C!tm$(jr)LdJ?Vp0wX2#u3V7S3q z$zHkW#-&H%R-FAMI|VooE!ffa_3Z2G+pk?SbAFXI+na0k>({ro<=os?{(j=&_Vuz8 zvyVl2Sge!O{(QV`o2pCtlUThYTM|l3YjcB&H|yV8u*pa>jIp18{+_+DUYD(GthfR} zePp4QY11ZIpVDzN(hAU=SXOmWeg64h4;J5iE*E+0!UKh(%-x34i{8C>u~Pc%%Ysv% zdj%}FwMn1oIPz&zwX;FTytG8Kb z|CR+wueT+9sZ-p3f8n&{8Xr!GJHB|Z;mYaLz84Kx51n+#$ll#EnLX+2+Wj({kA<%7 zx6S)CCK8Q_BM;f9Jp4d+1@4=DLRx5*!ah z_wK#4ZAq?ljknVpJ&z4fZ%I5q6(Js*cu6X9(&JC%Z*5GtoHB3L#eR<9OZpqc+YJDyypA|1FFETl`FW{Y!_4fCn*w58KL)-i$ndudZ|EO(SmZX2Hm`ygJ7x zkHf+QoI9d&S5z~tTlzxoh^3g=uV>Gy+}ylBpn;O60bj2p*nwlU(EL8`qt9E+G|X8dl+VS+tlT@pRKpH@9wu zPpSg8d$mhh)E`e;JxzCa0Mj{hGdZ!sl!qxtPGl^s5%rqT|Jsh@oTT<6?LGP~vOYdy z!AI7%dms4NovP@n$Ebc%1#zP7r$Sy*z)XLy_O_lCw;4#FLZKmi>akOU;6cjOi8N&r;_-F_3`fy=ji-7 z!?bHtkZHe^!0JmwoK2T z(@oo2Ewgvrzr9lWYzF7{FWz(GM1$8qtnBKJbx5w;XKa0Hj#;X<>%@AIJa*5<--er# zZaM3GEP1G4WSqq*8F%WS2wRL>@8w;)n0D<}y}7~hv~`i>rYWCeJQ5dn>&%gQ)bo6q zZ{w6{V)whRcgE}xOu4L9eyXwg+jBX?9pCG^cfZ@VY|g%;O+}Z_KD++^(3GN2Q)br0 zOp87j5mUVOz)7ajARJNQ(u`OMSdjz>TGbJ#tI)L5RsQAY1=n0HO9 zodoOifC3qNrc*5kEM2y0etP?1$tTAX`hK&53PkrETFkg)wZDYy?kJ&}hQ+1d$~@2A z(faGM{Z7`O<@;kkeyuT#a*7>`{{QHhA z`Q%{#lyP=fg>@{4xAWDhh3j?+tm`ek9IJZfjp_0JczdoxvAg-MU0EZ4`r!@%wWDdi zbNHM+N@IO_q6GfvUQn<3_*C_R|BF>zb__hfR!miX?6#@@k4)XB#|PQ^uRkiE63cP- z14rZm{zSHW3H`isbvJ)i$xG%>JTddpDF%(Z5*k}}C;4UmaPnh6oqX-ZJ9+DOKQ0_z zcA=;Gow5D@Cc86#<^OGYvDp9FgY*22S_jw#jFKbv?Tq+m8MRNw@<%+Ymcx&<_N+IS z(}iNRPw!wqZkuQ%9`~(px~}gDAK9H}PF`NUxkkp`PNAjdv%aW?tjrgsmhJb_PA)LZ zTX$%K=^xXJOD-Kb=(J^v$L*4$=B~4|n=RfdM%oxYJZ6%r(W3d{s9x&4so8h*pHH+} z?{!9=^bWs|ete$sAp0Md9W0kF3!j*?RLSp9^m2jtnLcTn%M5s$W+!}5fA%im(+=Y( z>q=j#%L|K{%`Xa0FPrJqtbW|^;SQcx+j3vsJ~wO6ms5+r+s|pCVsp_wRhqxBAtoU(2+WI$H0!GQRv8q#rv=L5qt+ql49v)s=PX zqNIbsE|J(NdckA@KyCc5e z;kNp`x4!25=jsZ*=ku!1*`=?)AD6v;@3mWc;p?<2-v83D(`bCm^Ynzi+r6%hwe?fJ zZgrpY;=xvFX8S)6t|!-hzP+*Kd%f+gKYHQotdcDrJU-T}XTdmqSJhe89d(yQp9|cp zN>_P!cKh7CeebpEUici~&);V+^;n}pxFDEGujubH4TiIe^Eqn->VNJmkkM8DVCnWC z{xJVXZKgaI2k*MCvp2HLaemAGW0^&Jy{kT#+e?4@+bbR~xN3ZUr*6DmVDF5Lmj4g2 zykNNXl>gGDixV?qj&(fxyT!9hLyMtyZ%HQ4YDbQ#f$37y9%x8c6c&HkbH?H1;h&L@ zO~qcmd88@TUGnYBvcJFiGb(muUM~AA^6=WVse9}euH-EhSILRoqQLFO#aiGjoOEI1 zqV!*KC6}5X2S6K<&UT3v3CDgAMXFZfz9skp@+|YC$GCJ!R;V7c%W30x?s0@(b-uAO!7xKzu%es z<3aPu1ABKX1}SQXX*jH2pv_^scf+PboI8G8`*&mQtHL>LpI@q1e^;~r(7?Fi3rEG7 zsjHpB*KsjlkeI<~(Xl_Hpt@RPLz3%?Usu{bUtin3;MqgB5~J9ZtFH{4(x0oysNX5h zSGrqrf8UdL^E9%|8m=D_KjK@sb#1h>UYykLyZmKK*b=9H`Ody&tM8sa>x`Ft_$jWo z;Bxu9BRmGaZ-V`^d>N+}ExxIsDzN&su;D9)wJW$zh@PFDk*;xyGt4Y)wph|4p0AB( zmx*P1Cw8>81b07wbK_q_TMNJKmmNp1{yEjPQ|yj0tMSxZ0h^;U&Td$kmRVc+`i>TB zvCjoI?YU(f?)ncp*JN0=AAgXk_g2x1;dNH_;fzUa+7m;>?s51n4&YpM`|zv2Rr?q( zOb%h2^F`hF)ru?T+R-xUW{-G-4k$MKeiYACcfxG>E}xVR&Si5y=G7Xo#r{5=yPMy> ztoG~I1&7@iUCH9^DruS@Qxe*1V0MSYJoVON&&*J+G=pFMPnNuTa_h>cT^ow+l-J*m zl-J;T@c7Nj#ZwC8swxx~7q&NqJ2J7Xc&fo`_J5l0OOY+CkxQ;HHti}&vuM}v_!yTn zd)|U$-I|7%cUVLV#KxX9lI(xH>Z*9&i{Mo!T>9!Z`JPC4xYPFDBneO6)XbAQPlUE_ zG1Rc)uHBo~%NP9RUL0%Ifpi(sW9+5>AD1id`+e})`uN+mzxUof>Mh4_FVq#Ec;RRN z{odcl?Q{L+aV;w4c9>i8;!N?YOk?M7!5?lf*iu_1_Kv%Bxo@fSolwq{4l{|32IWc> z9vPZ_5kWG6k!ICZH)}d8ziOA|?5^K^pzrPX^-(vsW<0!f>s95}&C-%rjbESUT6KzR zb@ykjQ{7opYU_JvL`JP&uqLtSSp{67D>wHumnd{?hlt;-2z;yKQw#Z*25+ zdd40qvv38s$;%55AFSWMb^qVZXU~4Oy^>oyMM?I}IkkyPPd(8NKjyuDl1Q-ErjYIO z7bnhK`%Z23Wd0qgQ6G*P9==z&>3*c-p|J0ZTrbL8K4I7x;@5p}PN4g`il(TG8nYUX zIdmAFJvL)gqBBIg>VrSjXjf-EGnlQl+CQ>lnPkUbi-SJcWmADule_HHnmsFe`z*!itRtPqEE7X z#$xd}?j!yR9e3DxnK`reN;)r7+I7|9%kiQTi+iD$AH6tsYQwQt8;-5oaE&!kdv@|H zuEW!&9@U?}Oj$>(>m;}Abn#^hrUxvu<~Z-!UE9{*%vmG5e45D=(X$gZbXRPgam9LT z!ne6jZm+Y_wN-Dd=yx#8P)qe)YX5Be|EEm9=gc`=QSG(WRO`!?`|}wuTw8TTwTL-S zZ%x0tcY`9|^A+LII3yi1l^J+0fc;qg<(J%vpotUvxGd`3rpvHBL5U+kWiubmMAR-!rqF>jKZ( zb1e%)Og(2UIPLZLshocH>!Rd4?MExEjFN0+jsLj6@_i68W5x=@;N`xVGv=6{ozwDj zX7GE7?Y4WD>?*9QsI^tIn-a9b=FsDQ|6gyokFVb!c*^!ta75rMao+hG`Z8SQ6?TUN zZ+75fj1FeunyPT(U<6aoR*fT1$_>Sn!e&c31k`;H@(?aj`U+$pDn(d$VZp=Hf z*DTNH@jkZ8KWbiz9{<3lTmJUgjQo9@|3A2{%y0M7ckNTz?h|JYI@Y+_RYk2`_IB&e zzZ2Lmwt2{HNcd9p|B-HHtw6#Kg~Zxb`R->A^m)%UwS4O7IH|>9)%wYrobG9CJ7!GW zuy0F3S=p+}Q%M(PrzTb=#uf)>MMvxCu5b$ZVD@V}Yu!(CYXMm*_kT6 z7VlgyqEN*uBYIS2dSA>Q?tiZued0Bb1T?(o+st~vtu93qk#7H{g1*CD^ZV$CD+Zqw>mr|~lqU9lNTQ@IT|JvxH>T&;yzmMxRFI7KTp>BGw>)wt#4>{-W)XzLP zg;&}z%=M(6%$naf-yJeIbI#vklM~b4)WD{TwoXmK@l{8qvpyVKdvQX@wG}Y|9X{51 zLcR)>--_IY?oEGJTiJ4VCWE-z!-p3xzK@P%Jb!H0Mzw<;Jiqone8=G-_erff<=ICc z9v7i5t6;y|KLj&er%YY4>-=iQpob51KNhai_mFe7;XA9jqo>I-#9HZ82czP#^qY>( zIwG^17{npo`E;wG7-wIZ+~co%d**M(QqBXd5uYEQ+{)hjW7eb@lL_DcVB~@N!U4akq>HfJ%#J+`id12x=!a#^?Z=wyzBp~S2``7U7R7ooM)4Q1BwMDnK?AjIZYWF_hy7_;PKHM#zQ~r*N zsqo6IJDy=r44!;C5aK4kpy^2p?<&zfynGG~VNx6dre{nfLe9@QpvPFcd9{X_QD$#r zL*K)L()Qb5+%%Tw>uk~A|48@mYN1QNo7}uUZe7u&aC{AW*?Mm~S<7$B)|!5ivrb!Q zb&GNLDkru(J1;k#ukLB+tujc`xyPTqQ}IanXN5l{FF3m&bszM8mmU&r-Kkpf^%cv` ze+QMtQzj;PY0M5QZ8&xs14{M8&%jAEvW{wAcU4G$% z?03rRtZvTjl;N&?`^syXMFi9Nl`|f?-A|r!^KR((s>zSePkAiP=%2WSLuAENOWuDE z4_=x0%;Jh^`68)h@<(O$eank{Gry>>T^w~~W|4EHNs!-5T{oQ|B^!T%7w;b2n{QY8 z=XCgCzxf|G|Il%|Ep4@NR}>?g@=LC`)w|rTKX{^d_ge0+r&|RlwRHRH1}!kS6n*%x zh`jN4p9dPBXFk00$f{dqPLX(O+Ou=>c7@e0688U{?DXT|aX)Eut*+i>cfxdb$jWkF zIjFK@>QuIabFIx|q|A2lh>ziz96x*`5!PQ#+~s{p-?|@3xr8 zEaz}x@Zxblw_o7H^YiXCU(arEm*<|mPF#$+D6}9zTL024AMV%6V&c9T^Tlq($?aNX zvt_GEO5!`0M$W4*g;xhPOI{ZGQ_M6sxMr?IW}Tm<<2i@C3B`^Zygk3%IJKx@RoACe zU0t(I%`~05c~yGYR8ccO-K;CGy)FxTb4YfoR^1g*u->|7&w_m>^?Zxdp79)d)Ae$L zE2pe%Vf63hggWPv`1-@m$Hh~#O*R=Qvb=FVY~XzHQn^S>-;*QUOqn}3A6>QU`jWUjFB#3Ea6&o(*r0_jAq`(4TxZ|6F?L+4m}+0~j41 z-Bnd!;Ynarz$r2b3I7t`P3C3S(X!sc#5X^Yq?bLYu?^J0yAUQKuAW4B44bj-*l zu-8rI!SiLlFOybyi7lL1IHUQ`EAz(}rsl_ddcM^DtWjqVkD+c)eoSnPgsJ{%m7tK> zwi3_hO1{tu6nkZLRp=Cl;^HgEdzfa;Hq7mQ{mSpnOV1ZCJMZr@eLAn&=-u9M{x9E` zZ`+={#9_J1)@`o2Z!W*RF>_n3yVi!fy?L?WN*AuOcC#JZUo^L`&+~mu;opDixB2UA zPwlWut!NB;qWXN_!S?#ll#AvUrrA7tWX#?B%H`@z_DY7@+Lb<;B@0b-SfzchUCR`9 zeQ-sxwMBpL8`UCfHXf%t6WbYLSiU@1Z?bUhoAxQ?iu0}c>tBL)WpLy9t%>H$itzt)6?vb_pcM|8# zt+tzSr!+`@lcfL0n>=xn%N!FQE?V((*~CTNpPW=UrHh@6M7WC^T3m(QrW!ugS-4M) zN589GPOHP~x6i}%g_UL#mqji4pL&tE*PoB6bM@K?!B6e>e7}G9o3YRTFe$d7J9?t| z{JYn(ufM9uT4z}I;g7^)O&h0sZ05%}&SqC_5#;|nwOO_GF2}^)dnTq8Pw#w~TC84b z?wX&~%j)s^l&VXm@}22@lP$X}6(?W5vUlC&do?eOCWb$*-D7fETBz&Z=FN47k20zp zxqrH^Y`OBWH?!r|+|)cMQ&gsVywrEkM4P^E5j|}aFB&`Kzd!Ivhb7!@;+2Gu{P1AO zPW7%U*S9pUnPU;q>d&dl64EyngjCh9`yC8SYDXrcP#0B zhT?_H=C!JJGuEzY$k*eq)3_^LKc7qX@22M+&uiW1$=JX8dEw%7C-?b%64g%63j?0- zG(RnV!1A`1+MRIeU4@Z6j6JcT>mS^ioVVS6bJf!w?6UXoh*igje|lHSwkFSD4qJ(C z*R=SLOB>GpoLCced`}0jcd|qc-;Zz8x(^=>)+`;rYZGp!+G%A<UmxQ5QFi!J z#^+^BJMM0JCD4{O*C9%8(p96F%nc6QXRW$Q&IG(zbaX+mm-Ax{56Rm{;@{qW|NrUz zH~+q@TDzhsbTosS(~YIs9-qy>9-pBiaBT@|Rz-xAkqGB$r zUTEU#vawFBXp*`lbMG0W{XhS`nE(IwujBPMWUOS)G}gHtiS}HoD5C%;n$vbaq zdrw*Kx$lemrkZ=j8!X>jf6`5__F1v6CqPDeMn>%R&4D#?Wn6i;q8=+OkZLr0Z*gVu_avtLimg+< zI^~I?L*=SB?gu8uerKuubNpfb-&_AW)tgNnS##YK7=sf?6?q1xrYM}qIw|9Jdi{r-*hA5-(Y#WyOwdlcd~ z*<8N&*;(%G7E+me)Ph!?N-*iUpY9x!9~pgj)5c>hujU5wv48&4ms0V59j9%8$OiSp zzxS0e*G+uEm&!5qN6>=POAGs^$H?3(+jM+Q&z#9eLLW?PzPes!?T70HF*T*l{$}=h z=07sGIsfHqW|FEmPv@)p=(ulJ-tYH+UggbuZCgD%-6=-i`};J{M3L|A4`i|#7AZfT zyyTN%sEeRf@x_u)_2F_Xy>3U>>&1Qg@o?Lwto?bhET{QXUgoW1d-&#k__On~tAeG2 z*tdE_cPV{R+m)qr>5`&ngw&f&8HHQU?383O=zMCR!oI2YxAVVGQ*Avsw1V1}unJ9D zX|Ut6t9r7#D(A;YKeG>&7Y>TDEs^@kT3ck6vxVo=A?H)qq!$H+KF&%{^~f)L@N1I8 zgyQm9<}Xg|xMKC{bo-inG4D$1+srNgL^SUIBj)}typg|uR-Nj?7_+O{44L7Q#(WYpb`nbFg9D8>Es zU7Pj?3)7~$mVFVpw?MIi5j2q(de80bRKU{wP$H_?kiVF6muRdyC2wzf%DpKfBLNFFm<|eWmWg?_#<}Kc3&{Si17T?)SY< zH8;-MJ|(e5h&R9Wc7l$K(zNN$=X)k6JJ$zz7Vk58zJFqMfFGNc^x=5<zF%A_Z_y6A>ke%KPz(5!Uj zU65Bs!B&kmvo6dz*b;g+(5Um(w8fWV-L@QjGWq)?=XtZHSR|B0$i&Y-^Rf2q?U%a_ zGw`QA+N37QwEnctr-M&ABiMF4;s058RhE^PPoh|kPt0|Jlvi7e>D9~6zJE36lmDBj zlGbJt{Ahu8si;-+g2<_nn-sWityi>7XtXOxOnWft(TdQ}nQx6Ra}*aH@=o59_Ucb# zm&*UjG_lNc72;=qxp+?aJmsTaa1-y0sZZ`*%}q=UdnLVfoA(}`#nT_3XuW>t|Ihtv z4MhJuU6^pzwW>OJhw>VQtwt*@{i&N}z*qPCO$nREv$^*z+V4rLy}qjW+}6!OI8HK; z`>7hUeu~l7FLn#vd(Fy&%D0Q{E_40=Px*PcUd3bQ^z=hbtb$69@457zZdrLS&AMD= z;meHj^j^ovf=xy2#{?xyR-H7y@?^uQpKTs7m%1#b>O8n9C~;KVaL=Eu=bhA=Vsg;%W1Mo5ZJThCP22LBN3+sdIasXLzxR&q^~{+(Ny$gT zCrv>}MEAtKQcab&Z`&q(`TxV;l{ap`<*g)fXFEgv8~bc8d#&R;srmK7gqbZ_CyEvw zovI-eJmJGlhUd~|*VvVhc_mI|Ggm#=z2SgF=^pljt7gr5b?er%?OSyt_SHOGmzUkFt-bp8t?$~k+_PrC{#br<(@$O9ud{yT75(I!bjmAe^RGqMrb=lP9epYh z+UR#I`(Z%7>H1R)TjndfGTiCzyX=}$%DKwnxYHUzBh7bG`=`g;QxG+Y==TVo{N0V+ z&%G}+EHb7&SC8N9Jl|EHPo|C5MRf}oPB3xFbgbXdcCvNO!HOMezCYgAy=RfTS5v>m zb^e4icc$MI?OxtCqa`~$_0*isH3H_BkEptTj>vUuTYq`dv5t9isfB$^%Q-ik$e7sH zaDMMzuU|%QU$pf-TkqjKY0jLATffh4cW-Wdpm=nacW_768UxX_HFG`H>1jgKbS?%G)iJ!6B@^s;7CO2XkajqlsdubY^Dfvt8^i9+T3da;I_k8woRrKUw;} zU7qvDr~Gdl?!?t6%N+fiU@^J(AnR1$&9{Y5lo@Z?VCtvmr=!O)eb$C3c{W*%${Cgx zoQ-<~!lOcu#T(W3&Tdqfil3DRijq>o50u`;>V5l!QN=Hu2%qnVAl4buqD_p!nO`{o+Kz4vUDlVjTC!pjcdKjZU$k<$M| zPWB4s*IzfXd&yU=P}Dtpx8OLB{@ioT6DK?nlh1dEluSFCxH{Z_aeZ)*%@482$a_D+ z|6JI+xmatSp8k3M`^%PBuj0>eh?=E-E`7<;ou#Fz_p9H3xe{Xj_1!z3KLPVPqZjaY zi@WFCjhZ~ef=^xelCe$k=33*gaaGCHpFY=a-n_TEDyypM(t(>qW{M$9(S`R-|Zp#VZRGRu^!zHaU6+3y}3PkQ+Ny^Kv=O#ShI5<{kl{tc2)o0&X?lZx3_;OdlPYUkDYXW{+T7Q?2U$1!2+pfr_7fXF^v>_Xrb zLEjV$BR1aGFFYPSk*=wDDLVgs-G;wkK0l1Fv3zqWI`4_$vP!9O_2)%fZ|dAY9AW*M2Q)xj=5PEO|HjMTV%dGF@UwVb}6 zU)%lp+rHdyZp|n0cCYT!Wp8fWykKzo{P~+56B8HK-8Or-zw~uletLaG$9#pvgY#^w z6&9%ME}eSy`nr1+-)27dn``s=QMbO%s^~qLX-O;n5(AwM?bw>VS%tGxg2%)7@|tye zJ6CGf+}$O4C(83s50AW@*QCj|zkg|cU|Q}w+alFVfWhkH%pJ@2u!<;q{J4=E%F0@2 zv3bFP_&BlYlhnP1UR|zzKE-AIyor~>=55JJyESRklBvd*XLSpwiTg8&s&Z!f+}WY? zY-hyw*=E=JMSpmoF6J=rRErY$bbO`rl%vP5G#&5|U%f`l>GX-LX`2tqu2&2CAm)8a z$mYFs2fxkis<)3UR>cNm#CY;91b1hf5Jx_ho{mgUs9p|pXkCWJUeE(b@z4!OM6?1ntSukZ9_*?W9XY3Ao z(K)%{Omm4zq@~ej!v+8686&*ii(bY*g9ws+B0y_xP; z`n3CbeC5}x;qxsDYN8^8%F5oXi{0(ulwt3*O7Gv#%i{Mc{+>PD-oGa9-tH>D#@X%4 z*@y1#E^ls8+0p6wPW1Aov~aQW8s~3rO8mS#d|l4_+xybm8-e@~m5qQgx@y0`I&`I9c?grsNpQjK%By3hwUp(-hz; zp5n=28Ro0=J@xbTx{pW2_4oaFH0fC1rb_}HY92e1kMnsR+Vtp?zy04g2NtvY&$0OU z#n?ap<=wZ>^88ii7$$$Zwl;cZO9E@Gz4h^Y=hTebe?-&I&AYkr>%J)>`4cuQSASmL z(z3x=l{0*;ma>qTD65DV+XJhaGxzcQ5t}u+VP;%>{J(p9jf;zGdv2ZgjyZMY#oBdk z0!QB7G*-7hy8A zM~OL63=v1b?58@ZaY;u58hGSpSpTd$@jnh+up~@D{t;y zna82;cg9;hQ~2k?qF6ia6PAbXuXK~QvQ}PF8|LP@=KlVaiA>HW_e`GIJ=||s;udWG zH_77a%L_+T?)bV)G*X|Ef5axtZI;-q{M2ldKvoIPC5)SsT>ngbDV%pJGQNC^b%gcG z?dGkX9Ht#NLy{)lo^p~kzV_?WV1L`v7Y{yuS}C~1)8Wv&ck^!DD!Op~db!Gj=g%*h zq#ylrOH_LI_U4x7=jQ6pwmEz|y`{hZ@|l^Fx98vIYcBhg@_*7Kg#rgdrsBV1Q~K<8 zXNDzyxN&XTI&N`2lQ8|0SAMUFVhzqRo8j-oug9Cl>o-@5ohj#Lkf#5JjyW>-O|wOg z`y?h#IJ$D#9`Cee;pOG$_I~%f{CaPNLV^%ekwSvdvy|Vj4%aSU-tOBcA3sm*UhwRl z8w|=kE4_UEp8Q#4@#pM0Lq)}-Dvd4XIcw*07e&U2t4(k1SX9)uKCq#je^sI0;|c8+ zkzvQLED;y}c1M2Uo0Z?@+NwnF(mE0C80z*sottm*zmwmseW#P&hLW>rd zlrRLV?a-Mme=%!QiqzgjXQ^^viya+H2LLcHYF@ zc)gHITZ3!*O40Nty?D9f2U|q^PiQB*)t9I+n{}Rh`WT`|^row{)4A z|C8Sf`TJyFAO5mziN?w`7TWgq85j5Lx*k{i_|44C?ei?mmTCl^*^yLLef|2CDb>~1 zf(MRWQdu9bcRte2_HSprOm)fs$3JgI?%StaQ#)5nn>(S;Z>Eq33!CWXq8e*0W%;NX zX8M=S)z8-#)t#8!FCTmH&eW+-Hy5c^ZLu=EXvDcRjD_?1y1(Y09mqfxC%wo0Q zfp$w|+#Mt$kCk0r<AcBszI|)|+X&`-QHEY}~hKN+##Q-hR2e975NwpQ-%(XsW1pSj^6vua{;|w~DIv z_I`9@@5*0th6i8Fvfkb#@#3-drjX}fPp3-m4L)@2cW+M*M^`5oBXg+j%aG8}9o64! zRaM!9(w_b-^_lcytYY8X-RiwJ9DPz zR5$0GSyJ0psO-}-uga_Q3CR+pyVA{L!w&P9fpTmnZ8a zi5qJa)NhEK)5Cp`UGj&U==-G!8AW$Yw6AcB%?K&GCb1|tSFKYvr0?VP{j!XX$M5gu z_nT6*r=sx6pJN`G6U}`2CZ94$|D&;zhr9jEqq# z+wBT|J@QWdyncU8YW>$+5q<8>OS{aX?*un2nrm@>_9We#mzg69b8~)HpH0x*uCwf| z*FRpNI4Sc#n>I5a%@yD@{_6Po_4K+=C)LIE_tkya`1oh#!JuWK-lkcH+jzHby?oF? zUw?T6!}I3TpQVLtm5=TIpfmBobMsBhmPx3v{Ppr~?($-?UhZF$nI2ntMIwX$M0we^ zc*lQB{#NtrtjIk)WzA;e;_K_AwlF^G%kS=H?(Slnu=3B5hE=OndM#(od#C&$Hb8*k z8S{=4ZM?=Gn2e2Tu12n7x^w-?1yhY(M_jh6dSAM>R=cZP+CAs^$xE|W-8-?s>7@0p z#KUWrxbSD}&wM#~*=uF*QsLz#JMY7ttI@IgbpOn70byzLw4+^-+~UVhIR0() zncA{&vAJHi;jyPLRj0FQ_i1eROghopE^BRM%C>gR8pp41b>9gtSoyokUC!y<{MvKV zi}^&IcUeY-ZJjY+QpM9k`JlV7npMc5BS!*#uPPS(JR*@Rx$ImuB9I-O-22fBti!roa7O zP20PxHICQ+Z@SSYS^WEVS=bcuCCjQjt9kw(lDWGn_4J*c#x;N4o*l22i=DPnMg79< z9SIy!MmDzYAz@Ht;&y!yZ-4&X&*JGdJsT~itTzYeCm)qQP$(NV? zX_uEPIMc9wi9P2e&aGQdN(p&!3;$ZX;lhIIgNOI+XY1+i^`F#_pa1{r!*YMw^>Omw&zwAP_OD@fb;;*$ADy6` zvg_4m|La@%#kf>1cA0D5lUc7$i{G*P<#IFW<2U=Y|Nkx4ZDW49VaWko$yw$uB@3er zuc!pO+!SEjKatTrE2T`WdD)>N=a{puOT&()CtvALobkltXzEo(^(Oa^Rex6oM|&0R zc{fwKHo-H_v*~)%uVeT6ayvbfm&$U~vKDVyzI^$pi|*RF$$>dh+Bvw{sQCmQ<*y?rdziWc@3DvcL=*ONU7U zhg3W{u4Vd!t>oOjyE{@?$V5#~a-%|GaPX07x>q?l^CB}DpGqd~yvP`8d9l)v@#{}R z?ykq#o0PM;lx|HAEiE&XoUXBGrIy|X{b`ZnYB5w;rU*}jPNkaoYR>+ z`nm=SHdV-5cd1=&$vyEyt8}WrdV*8nt-{zY0nz0bJ8r%-uB-ob=Hu-B+FdV>&tGHz z=fKCM$M4EVzrMcz%HH~wvu7QAqF=k@tn0%{VILt5?zU|n&9P5r-J7=7@bz_fS<7df zrS8F(=htof_bdAM_IqXOxjn|FU9q#|LPXLz9y3zFHqxz_Q} zxpStQvrlc;JF)6|r5pQB1Ll(sq5&Q|YJZpcX!_@`S<$vYy>gabAO8h5l{%lFirV@ox+`x%7u&AR$cv24EqzvzV5 z?FUwi->EMyzVY2YqPeU7Z};1HyYfGek1OlX`C_x>`0tZ<<@)bG=9AfV|MdmA^?##d z%GXFAyRkLz2J_xN=LZkxE}r*i>G#X$e_W1xJ^xSU5&rGD`~Tefcl&+r!Nbk|Rr$B& zG@fr1S($!ENO{t=iY0!F=9aO0Pc(eCQsY^})EYm&xrY2+n>;dnYxN>?Ikg1Cr?;JY z7_t5P+BNrzx7;fXhdl9KakQg`jJiCoWqvUc? z##LYbIJy7L{vSCv!sB^=zub2A?R?QcA0~@FJbwGXQQfY!E36OfxW4P`_4_yM>+ikp zH9!9Co7=|T1yS`E-<&ua{P^OETWd@9e%Ll4W?Ao=!j+0wL#$hs!!{{|*VnVTpABph zs`n1vawe>Lk)%OgM)dl3?^3FoXMOl{_UXat?l)o!w^-X{p1CP0>HaCXU-XEqcE|P( z<)4N7&-Ct9FM71Gsp<0N<#sb9cI#`F`R80|=G^$*t<83Zz~_LXL-$%<{N43~S@PuX z$&WrJ`sY09eDp|h-AM~8%Xb$|{vZDN&_Cs8bLJN)9R3`#vv0rc6!Fvc zECqcZSMPX!N@)I>k5lh6RS0lqDc&krqwu8Sq08rIGv~_x_sKjZ92s|h+OZY;rGCA9 zbS^aIuhDV-vkZMps%@p8e>>C?c)jiBygrHDi7P$-OkVayBUjt#2$$Tyry8!GShA)q zw&`rLUF;a)-X2DygvI#{MhG;k)lo-mSbY z?$eIS$~$MZ^VaWs@Zpi9^s(0BZ9?m9^S}S9Wc~8~DEHxed!IS&C_Mf3+IqM9zZ@8^ zJUDszUVGnm+8^CTQDbc?SWIL82(M?zci6C;_rW+sz3G2|Mj;Y)_D*! z;qB&DSaRBpcU$~{|E!tkg4V<`Yt=C@FsPQeMwFx^mZVxG7o{eaq%s&87@F%E z80#8Zgcw>_85>y{8EG3BS{WGB$GO>{Xvob^$xN%nt$~mEUjqXJ1B0ilpUXO@geCx= ChC^8Z literal 43073 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 diff --git a/mods/HELP/mcl_doc_basics/textures/doc_basics_inventory.png b/mods/HELP/mcl_doc_basics/textures/doc_basics_inventory.png index d23632f9f71c8155885081b7c99fb12b6f433f69..1fca40cb9e0f0956f14c325cbfe0e10436419cc8 100644 GIT binary patch delta 15886 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

      e-zw)&g~~O>rzjK zmF=K565cJg!Ee#iev(dXkP{A(_%WS+kB{fds#%W0=idIm-(9`u{M zOCxr&%dLlb{<}jQvfaOU>F8UVdTQKZNM5^s)0VPjD~*(zRkrRq^+BiZxR0k(rrmsT z%epV7Q~1uz_|U}Db!JlipVjp;d+SR|9vrwZAyVe8)ctCy)Y(%X2zIGXl(qTxYX@hy z)h?G`J?eLPpDV?m*lsh~GwjzEPbc2P8OK+!Z<*@J%W<#TJ$N5sk`ueVgONuawZrPx+Fyfo%h41wjULLMF zEAspFjPD0EUzwDu*ZpR5;z^!(%xMAlj9JdRYg043ckC-MRG+!vdS2zaP4`>0W`94> z)6{fmeQQfXzKK-atQBjg9@06SnGvP;+{Yw;K}Xisb5Gvw5|d{9ATsxol#Qn6iswHw zCtbKEZN4q{;Q5oDPL)f8a(}9@h$PN()2n~(=jFi_daSa0@kIy0UF)2u`d0NmE!ryU z?D$}IN$FHIP&2n_gKX%tUE4BeO`gGF-LL-SmmD%P2JW@J}#=qet&D?52o%eJ+r3PfH;{(0K@H%)?V<;J^* z+z;y{7M$HudB!?8f12`^r?vi7do$O~V*3`iM`hvLGs`XCDlfja>hc*+r|9|rMb1xH zzE<{pYnmV1t{t9Eg|Fpx=Z1#cEo?f}eo8$gARs^`B%mHdfLSzVWXN+yOV`EtNS~|G zajEc5KKl4(^78G9^_vfx9PLdL&M15((vw!v8|l~`n98wT^-0|?zN1s554>GrWOFzB zNOI}5TUxVCx&HB}ESa)n-D!#JO7EqbepSbvcI@0XB{ecwDrA<7`{i4cxG$RYuJm;J z-0Ea~Nn^=M4s~_TQknMcilO>bXJ)HEkD6K;dplrSuD{uWKXX1eo~ zN$lyTpWm)9I&2^|OGU)r%izkXb){Z*Ph7RRm)_L9J%zO>E3)N5&Ar$;?#zdrlVi7N z6^pN4v!(pwBGNe`{}a2d8dbq_ZVszg24kT6sTA#!NFs8dJD_KQFCmJ7Sv_3$t9Sn=VZ^Rd01(rcE< t{oG)4;=+XqAdN=uq9P)kq9PE207FdhzrBUQc8{%sTpA1vlaJZw0095zxR?L{ delta 16329 zcmexfv#Eh`LIOWqlDE4H!+#K5uy^_7iLqMs_KKb^jv*Dd-tMiO@YKEZeWhR8zi-v~ zZ@u+j#jcI*4dBl8P)KnQlG-epontT2lbodXXWrYHoEy|D_~UH;$UPM2Yfn~~C!W(k zol%*QsngdP0XWHkLmX^NNz4}(W^uL{g>&x)% zb(O}S>%ae<8{;>x*}D8)%bYoL&M8{`Wi2W?S6U?a>`BRtm=;S*SvB!QKfm^qt}`ZI zPNceUJ+%$LlC4SN_GIyf|z=?fVeIK1W) z5^(gY-zWNVzplD_cj?X4%-pQ4vkcR&p5BzZeD!LR-+z@_B;@DMsT5wXlu}XgR$tY@b`+&YzI!a%fTV?~=Vf3<6(Hd*6Q^dMtSD*T&^PZrCw%G-{j2 zXx>#)-`My1&!xj`RSn+7``BOUcyCU*Djk`wYh3rrb?s)I*j;O;eXQ3P;YyTn3sh+l zaPrV(tmw4Acx(3kp3F%a*;`#b7A$Gy*lfM!YHC#a>f1eM6j~S_SRPaK4sHt-vtfAA zBRC;_tFcnr%}=r4b~z;fv7Fwa;VZNce2tF7Wc z|K+Z@u5@-s$@IOAo5V77=X^cCN^IK|{i~PiPoFu%eP_Ya-ImLy&TM=h)jd;6v8g_| z;X>Bo-^E`u%w})DU-$dTla%=Q_(>}3UT3X+zxVsSx3{;8cOTU`y-DZwm+~`~whWOWVAET9srPR9bf*2MGE)}qUj3cn#|Ei0b&PvH zUbk1;me#O$@80m((yM*4)^^`_p5Oae_B}__gMIbC-)W0*WnWt(DKCG2WAgDAFJ8>E zt=^<#d~D0ns`HOyZ-*$KS~aym<(tyv^=b24b+nu^8-r7hPu#}by{`Fe9hYFB55Hsj zy3EDPUv1^Nls4_C$YZU@%B3L!ENi!_DXj|8TJOwX!?bqm```QC^Yin^m)%VDxBvU) z#fulq?Y^$uxUqht_WC`aw%yMAeX+l;lzL00|!e?EQqP_Q$m zZ_x_fyG#cd)@5DoVwmy6hr@2Uvd$(0=YSaZ*4~>Bb~UATZ@8v%EZ9s`utk7_sj!Nn zi({K|tAO$5ESEJVQs3=&uC~yaE2om+z0zFC*~-!1|NL3=`!QNm>u2nYTmS#E{ol#& ze|N9_uNUK(c6*z7{yiHbBO^1jYqNgG7M)bxyLWH)^>w_5KYTncAHTnDZ%|f7#tZ&` z5BT5h{eG{rvomV#w@2Oja@J*Uu0`j|N=a2cndpAVphPCUbLXSi&5|Yuk2xlKzu*=+ z7!r4vspy`MP7s8Xr$?=C?3^H zQJ82TXyO(c!?X&|z}e8+U(Wvis7YnKNcY?6fVBdH$$d zf8LxqclK0%{(b-dzxB0mv*rK)IL^+-w(rkV{reSrRSbsiXKbgjCob#c|&>)b6(-5mxID$zy8 z3k{C$3R5$0OV{*1%gH;NyZNo^@`5#TVVho9{(PenGA-goqLPb9P{%Y02^s%+<%tK% ztU~!T8?VcS_OyIBlIxXDL_4go8 z(4qQWdV&@=#9h2T%u~K`;zLE!+=-GIe(VtuEgB0f^%lij`gcvYbvK=DmGi=&Q=l-@ zp0iP-b&lj>rbU~Uep!>0rp}?pT;TsZ@KRKK-Os1Y%*?m9=f8jdUR`PFl%Q3q-=_pI zGc#M4zl+(NcJ}Z0`}3E*^mT}VTBftl)-PPR@ayaAyVw0b$X{o0dXxIR zilp=NY`5R5(l)+d{eJKKA4k;R?S8-Sea&<0LYezTr*-T9f3KgPdh^4Ff?3O^rLKK+ zX2bF0`xt(6TWwf)i6PDA)Vjp?S{5l$`73VZl1{MoB@r%OZ}S2}ZNX6C~$kDk;x zDm~hwF2Kyd%68^)H=nFkN>Am-qvGp#zuRT~Zb$v&L)`j% ze!ttTdpc|FyFDN032-ni+~4rL)Hy-=x>38jOV)!5jU^3tc;+3|*%ztb&}bHW<#B1J z+fqsM4Zoz0=)N>GHWW0xFz0#y%#&w6CAc`auo<-ZU;lev;`2%WI-}D@O1E~EX6NVY zGo10+JL6`d%>D1_b$m?^g6IDVkvSg!r~Z-nbh+tDOoHX*<=?-25$Qgv(e>(Ul>p1` z^7m{F7Jb*(L~hQ$zE1w{3wQb7H;%vC^?Kd;+IPj#+j1)3SKq&#V|Ll3_Q^!|fA8M^ zd$)Q1UmZbJ&!E*;1@5od%xFBtMnthaDvbh@r@ci?clY(8hBKSqT=LfUy*y=R z_t8aBkFW)`mrII^ychc>eRXwb9pe%;r}- z>RcPWJ+Aia)#`6=EGs@NcwTvIhSS0ie?Fg=x2gDWVxscj`oDi?o9Fvo{xbXiA2kLU zn~D$K@xLzJEx#YT{(5_Rdwk8uqiLIOUcLI&P0T~mLD-}5uH3Ykf+?NCS#BZz0hedq z>^bvN<#gp40fUVvdoEfiE328!5^S9!H1XtzZ~Q6i&Z{viU2+rdyk72c>iggRnkUM$ z&2o*78GJr)z`=V$ke6b;i+5vGwxWvwORH02TA+*9%B^xzQbxyWUV6uCO+Q_JzxMmY z!^+*FBF8^oxpL*#*Vo*whh)p|T)cd__#mrzPft(H`|A6vuVzh;EsLC_viADP&*$y! z4GaX17w(Odmy-H*Cf#oGvX{yIwrP>m44>V~UjMcB|H|d_q8`SSG>Wl((5a8P-rwx{ zivQ9{Dc@^9BQo42FTJ#!@O)2bp!UxTTkLP0sb>;kR_M4U#_DWvVA|0(kIm;igjd{D zih0=uEiML(C#&fBE( z`keLqJwG0G>+k#VX#bzn`)w*dJoxqX^_M9{yL|6e)Q z1un?o^{+Qx``E(s@zSo#w`#sDmf!jJ+wI-EcG;ZIj=XzwcK(?+zw1_pWa;+a+P3#W z?TpIz_x3(5vhw$`PX{ZI~zi|p6qk730=JW z`-POOaAQ@2cz)aVh^z}YZoQeE%*M#@BgEaTC4=jA@Uss`K5l&V0a>V7_LY;2t7eV|@6JZ9n6JYW6#|KIEXw~EK@_Qe5WKbK;+>FTn-a*uW4mzZJc?YUC4qJFZ1L~<1K zxoa%>&&{i?1;gUIPS>~@Nll|>}KAF6` z>}^*4+gnq;E~|g%6uahjTF5PM$<}*YGB3xL-z`0Bdi_q}aas318A*Bh`+F)sA35Uk z+HPsk%f0Vw-=8?)u`}l1x$=FNf2o05EBn8$&A(fEJ$C!uvfDRq+_<;5+W&Qpupy7A zVZnye-i$w<9-bp4*S~f`%Zc0vmM4P_2ih6(#S}y=UsAs%=V;3kMusW6ZD#Cu59h7C zU(^)La{bc7OWxudA3i)hyu0kJl&oy-TSE`c=t;urGj=+kj@tIm`1GdQ-{0Qe-Tl2) zJg(y3&*$+K4_igwiMa$`Df<29<;$PP%=ZW5 zWAu&}_H=-n8*)`I7Ot;(sxANPLi?`WyBBL{O+S51Lh04}_y6CO@BjVh^LbF~rS$L9 z>GA(2+y9(w|M#-}-3^I{4}ifu+v>0gcke^D^e&1AOm|OCHDd`)HdZLyr(FMTlaip2 z;Kefmol~bwTROv{*Y|x`{oUT0H<6qSPJ1rat~K$UU-#>!MPK*Pr1<#zqTw-yzu)9! zo81t)_xZfNeA~h)o5EKA{j%KttIhi@XC~&}7LP3nTpCpQ?PhwbK>VLa;`=|e>ffpP zeAfQ=&GYYez1B;Ulao_hH0@;VgGTmKPm509zFm4(qs#8^OaJ`4yS^T1WL8$LS5|*i ztjoMDiCg2&t^USjuXQ)8XKXpR^2({}PUj1!2_>F3W_@P4j5mr|ygGZnk-m?cuQSi5 zC+laV?OtmrD0%735udgb5((Q9JX-|%9@~6AW9+r^_4@sBnpbb_7I*6D>5;K4ViD|@ zwf^>EasRd&m(4oGGS5q{`nx=S{P@@m-RSylGL}V89(C*A+nzt)@Y$->>$)EQxEdZW zDGb=Z&*vo{@ALKZ3)7m~D{UTEeAe{)-SYVG@aY0cH^0WG zz4%tRKttx_-a4yD^U0~Rd~yyK?BY^UN)EF>6Y0kuc}z&i*w;F5j)hf6LuX6dR1<}q zEH9BW^*O8t{_}UGvM{7Zis$YB@HTq8Os>uIj$cou@A+My{(axB^qaEWnokclvv0k2 z-sZEvi^PO#$TlZ(< z@$k=@CthlJ=LashxMcG+sh3~2Ep+(!=wb8Z{T4TTlA2BaZSrt#RF`u~x^~QfGc9I& z-rd{lZ&aq_To0Z8&%fUB;O}?e_g%ld`Q5GT^?#r0*Jnna?%4lydD->Ya$bJ^?KNv! z1^jKlUeT}n*nO?abJnuY%)i&kxa8#KYb;e$SO5O*ZnTC78ylNcFPm|E;Zf1!eX`Xr zmrmcL^Ly|8-+Q-aU-#0iuCDGr`l$N;?|Z-B?SB8^;o)|Ec|Eai?JWm5Ce$z66?9f$ zLEPhw7gjA3iVOEyfB)y)`-L*k53qe; zFx=m+YxA~m8^cytuB*S>_dVxD^>5|f`+oi_uYK}D`{l%mhqdp7Iv@G?@uP{aeC?Nu zDxNI@zrVlNpMF|*^JcBMscS>$FLv)&dQ^YqO33Skhud;*Pg40{btjH$!msHe}l3St~X0zx2`?CE1L-~IXgZKZ| zjN9A%$5J-E^;kW#@bJUDfc01Rl|8rTw-f)@e*fnq?)A3+ zjuhK>#n__;gaeGb1A-qoU%+ zp3mp3i=KF#?oZFk$~r&KcJtm)|HT{)CpvD<7FfR8VeQw{>9J*JO|MtX+x|G$dfVLk zeb+MI-LEa%(8J+BXUgHq>kqH&$SO``xLugH|Eu%%f5%GW|JFYX-~Cwi&Bw>J z@xQOH|GAHS`QcSEGh;1VoepkV1!kFFz3KsJS)& z{ytEXc3Nufugml6Qs3XpeV!kC^njV=TqZ$rQAJ~ejnW$HH7>Jk}U{_p<5-n_ROwi{nhod0*Pq{KVkri8{ze#RdU zcSU&Y(Vkc`YncSr1XwE7$5l?* z9Kz7lcX5*hgO5&J%?*=muk7uWGP%(V8`j1IhaQhlnkzYZ=U?WO+n<@mHg3{syBw<- z!^hId?Xzb}(6rR`OLSZ+UM{tD;#m47)t+a=fdEOy+~am@dCyF}aQE)wDRVxvC@u;L zlV0?0bI`Rv)lt)2_uL9*W>L)OpHt6be0&#PL_TM2EP zWtu)?KhJNgKWoE1PH%sAMgKt5>}@GG9Sol{CZ#23T#bKxM&St4Y=@}XWixo#Hi(@{ zOF#2czdmJcgXOu13)}RP*))$f-P$(ohE~Sb--mWHbpN?{$atBk&*EDf?`)Fzy!4Wt zK;g}^GeUK;>(cgrD^xpe6}@|n>$KFJmka#-jwhs@{|p`+7fL$^8Ywr7I-XPv8bj~7 zb}L`+(40AahO&n?UyfH+e||@GdyA#zTy{Z_e0|A`qr!)_oOQ0>SA1rR^$$tS)wQA4 z(Wj#}Y%%^>v1R>^zUfz;bic8CPTF>OuQx~H?Q1I=XDfJKGHcEGuxDptb({A>Hn#Tt3;kzOY)-K}n2PhH!?ym`KlOV6SmzUQue-mP=`%NvU=tJ!aDGfj7M zbMgFSb-7EYw>~wpd#9wXj#KiAn>kXO_Xx`h9-qmWbUd(V=NnG-MenAi)l0jqxjx%P zyXZ#uB8}5Q_x0Bt$<^}ieQi~&w6!&Hib|n%Tv=50(xAj|i!*sbwL(uvz3usSWZK&= zUv6wZeah%=hRKZZ$d)q-OJBXyJ3DWuLeknO@!W!#(?O4azso7DS9X$U^Hw*l*sCxx zUgJmctc_7?HMgF+Y?5rj(UfEu@!{;&BY|ph-%>m$%`C0G_y5bLmBCg-iW~lD4an=1r3o7e+B|75l^V_G5GW2AxM{M>>=jRVG?b z=wQ4Rc!%li(L1j;h3a+Bd{EN9__Pwsx2b#X?|R$SzbAXK=b;rhe;of`bDP;;=EtpC z{hshcp)w+KJFL0n|MuSh`{()p&AH9F2l?wO?)S@8d@26_()j78CqBmxiEh5rE?6%# zw^d2?VA%HNZ6;sOTylD4T+(xQ;+D0$Be#^SzRcuruvutN_7)4#)x}?R{@#pve_42; z*&EBE-1>*t*X{pu`1)E|8L5uNXZmWOzYIT0atCi~e>YkVX`-3|U|~oq z(AApc$$PBC%zol?1#Qv9Wxc9LRcG&7w?F5{;rF|L?dhF;*dWV9Ei(Oto26^!Z?)Va zi?93l+|e#H+Pvh_v~3<0s`AH5JvzlMZH~>DVJ7=T@mQ(jo^1m4n*~@dgil&4Y!g*H z=MrnJFT=g~Z~Q)U%Y;_UF*iQleL>>W%2t9f1l%Kud>Otm@Q%bgyrtKc!kFT z5t$LbhmzOD7kD2ooF#JSOY-}BC4W_IcYmK-{{MV@?X#nYgSfUb9cM_(Gg%eAEvDr7 z|353s_rGr29$%R#)O>A$sYg9$A&;ALzWEZ#BZe)4H_S?=J}|HUoNRul;P&S8b|2s7 z*MDZe|3Cb`e#ExTlMV=RWHcmsEl_doQoF1vtuwJ>=ZhbQ!aY0YOqzb8t@C6-TZ5IL z*sLoNL7r3gRHa=Mdg2k(#Mz=M$hu^fpksDILXwAx(ZXe$t24^-o7oyL|8M{Q^StJFHkG}-@PL7XMX5tLK&(YEgLfVC z+UJ)(AK11qsyT|6VL=3!-G|26_bdON>#wi>!~gGF{{J`2`RmuOUY-7Om0+<8XGN1V zkEpLuKqrH&CF_YB2EHDx&v$9KY>g_n6`z{OIW1XpX^HLXSvN{^^utb^$p6t}X~=eJ z%}1yEjH!+9xuO%7W_Ikjmf*ecx#JuI$&AxcwSMjsv#+n4TR*j9vWn-WH+!$g{aF70 zc>bQho9c7-`DP{?@vZJTRK#7EdEygOLf@-kof? z>aVxYbj|mz6`MKzn|yH4&UMDW7nmrS%~oW#?)!ZA{ogmMR_A^A)AYR2P~fY<^ z3%{O=XV&y?Tf(F1>G}JwU22;sS9C-ypUKGyA6tb3v(hK2TCCZjao5N3Ot0JJl9Nf# zHmH}ZnH`w2I!q?#KHph9Yhz%3g7l|KY3HTu9<5xOEOOLEo9|(j4}9$dR*^M)D~ zwMkZjRadmWXilEeFTY}W+16_wi&r`6PQNSVAmDU0>ukIHzrg(ayQJ6cxA?G&Wmnt5 zZ3jL()O*g*YMvs{df_&6AMaK+k?se(0+v2`aq-o?>HX1WT$#H2y}BlNa#^-YEGayh zar$fW%EuFd-3uPiiMaoJ>Rt@YL(*}WIHFG~wF zTi0p)=*qSTuM<2{Z0?*68aEbj8Z&!xSv8+|Vti6}ooh zQhs5YhtLV55}ECh^85e)V`pzaCoN~UetUVYz>R6FQU2_O%q?!hmv{seeGi}Py!G*; zm(XhkflRj6hUvUA^+(S{&N^mQx+GMPSMA&;9|4PLYfo-SR8u=En4&dp+ENRXLz_Gs zHmF=R4&1;MC-B;5sndc6^KGV14T{mHHcU@xyD`b(fXj*)5e_E<37?>xWk#1L2qxw6 zp4XceE1R0QlS}m$(+!o(E%o>REnfWY!iNKGU$d`&TYvd%a^|fyeftvXch7tL{krEA z?X$10L`*v36gBNF*UA>r2tUVF&EEY>1rB~*Aj!nwp}Ay3ymd{xmpsjJv0v~lZ;x3v(;r42pY)Scutdncx9e>M7tgImrM05Vtt>ax z|9^4f;=Y5X;<>j??wC)x)*qfV^;Lvr&m)t*B~NeHaRzv4=5F_JGgpi2ekHu&&PmPd z^^Esf(>j737`(ZX7X-~*6SlfK{^su7+ph0-WMwa9^U17y_2P(&jm3)IgC>FrTVwVv z2x2|nR$?h0!_;S(%9*)rX2yxv*#So+Rh^7C%ST6TykwL+%SU0Eg6>Qcp~OxTPsasU zpB8wmd!FVwO?8RRf8Jl57dlzP(iEH=gqW5vXx29{bj;+54TER|1wowdG3`dvJsB^Tc%vt6dS)F z%da;r@aET;+Z(6f-Oa5mz{Jp~v_Y4l!GyW-L_*cBGuqYV@)jQs^_{-IEJfM#K+wF^3gX>FW$0fq&zxVm}{dTp_RGYb0c4bg}N~YR@ zb-q`B@7isArEt;>)#HjwCwDY%Ht?*Sc_k_H^rW}l<{OHSGpsW?oENgCH@$dH(wsyQ z?qr834Hh4t0+wrrvK=wi>6+fN)l4FpH8`uT-LC8J(~1wYsjBJ&h0FA}J@S&5 zW=}J4^Y`sFNM6gg_OSmx{v!)iD&!QLmhM`_DaB}RnZ~`g>1|`P2Ghf7O-#&-RdW`~ zY`8GB`RF`>pwyE=3l)s(1$rblC*SOQUy&lZt42CRne!#@4&U2CI*eWnOcG3IS9oTK z&1zLtU^?9NN%2MGS);>&YHCJHj1|`|FqyG*qTj3o>z;}@Sf*^z)mfUnUqE4zBWsG# zTF>+)v!^{4{e6AHMM=dM6H0fy*?g9lR6{Rn^P3%($nU z($>VkRLErZgv<>(3Q=|L(FRd#vN9((8i$vEpK>bFdEpjaSD#E<<;)Z%=?OEgsBpL$ z9P8m&A>ho#WG`OKjnLo3egY2Al5_4d_Iov`Y{(#<;ESshN6c2;*4loNky=*mtLKI>#P z?QK-6(uQl9&eGRBS*8d++_ZR`3iD|uZ^v1Vi#hkP&*SdnEoAa#K9X?y<=%tu^gJ$y zaS1xKMDg-Cu4GB%_{w%=`pro!hux&#YFR(zVRV|=;o~8c5MgzyEX1e9?36&SOLNZB zdM1^O*_y15n;JVq*&lLuGHt%T^1xQtuqI}8ZzH|yJ7rE`w}MZ6-XO^S>;sl@4Xid$rZ(3w+-Vv#ZFX{X;CW*Qp{G2V5W@4(d6t9E!s8?VvK zx22YG`-|MB)z0Q-(Pv0jINQJ>z$lo-yJ2nS-+D9Wh-~L_@eJN+tWUX?XjbSQ`S_*% zu>=>RPQ8!3AZwJyVwG(i9?E+Z!4xTtqpl&1I6jb=GZlx0^MExst`sT{hp z%cgneHMfdGZI^AfdGoAnT&NV?RNcHr?%)lUsmZI;?nv%cESNgyTEUXye)n@T6EeL| zXyo30y=_VTY&Bn5^GRt(cQif~Y4sF5v1zK`;SDtwn!G>nI%_m+?mB0*fh#lQYT#YX zFFW^2GaOhlbt=nLA&zaVUs+iE^dD`h%V=|8@p&+BhDO-x2bBv<4V*VJWU{p}%zkiV zLD-~|lNFQKs#adgydvG|G-1l=MG8WGvIRODmP|Uk;iX01#n1K5*1?J$dV;>k91otZ zvNTwC{K}IV6N0YsMQDFtrPlU&*NWrKTVn+UZ8o;^oI1H>#-$kZ4L3DU6`xC*CZ;GP zIZ2P9%5i-mQ`%&c(}7=CJT2Eg?Rsei)A8-Q*vyZ5HXUQI@Vs~~I#Jwl_=uRn^6{i!_pz5f^>@_K?_WmXnJravM>a!cdnN=aaL$kX;omjowajk<0Jz+zIoi9OxswevF_u)yj#&b z<#Sp=4mU$A+gcBEBcV;VR+Ni+`Sl0ab4#<{UTrQV!tu~^AxrkV@?D2?`Ywf3#mp$u zIlgM=L{=`ILtT5jbvd)UY$6P7_gNYpY+G>3PUy+&`Ol3`zY)H*?e<-B8PnB~7E3P& z+*&6xZGzT|$n;GrnSNQa+zWIjMt+`ftutJvplh$otP&@yzSYM)kFS&evi9bK9aB@k zaSGPgoX;|G+3V=lRHWc}a9bnC3`I}HE=EC?rc~eAcIR7lW{b^x?!1#JsOegmM5MQT zgFD0IAh(%sZ(d3eOAjgHzNJ39@!+IYGhOR0GBfhs?p1ko#H2cSX~+T*g|@IZHdh`& zwOOHpb5h$E2Q>&ih^&d5zH#ZcR=X%h-y12>Ta=^fz0XCrFMXC7^k8A~+4y}ytjo7A z&+mOJ7V%m|XY$21qfE=zd!O$t;9oL->B_e^Vx4c_eZ*kAB+<0{lv?-Q1tvSnlz%z% z+nDaEK0o8!CDn6FCK&SneKId?u@H+Kmrrm;>#C120!*hw1B4#2%u>`~?c)yQ$z*f# zi$15)=9F;M^F#fOWd8q8j^Dp{ODAxe!^NkfHn)u@O)_|?S;}bW`K-s~jML)oK2P5{ zsRwiz?jE?h(a^!SYj)w0ZC zcQTzXoo40F!SFTh&#f0%{!R4CO4zagGiW=1!MXt^ZU||DYsaWtqt; z6Lo&im6y`C?yl$6`u#B7?f=v2-6te>d|dWDw&Y^#)hu1VBvpUT${SYx90x#iZ`1kc_`1-%r?(Tg?m+PCJb4LHq^vqnG>aE?isHIfGwJ+DW;b}C7Kwy_-m!fs| zrjRUFAxWN1ouw&3r#Htews{(*eyKyhV%~;}Jh9OtvJxB_D-vW}GgtLrJ({vY>WRRf zb;1%nL971QJd}R!TQsjgQ_#p*NvLqIiXNeO0$;+)pIT`;1pC^z%a#0Az?ubv&_pI)5J2Fxnj3D z%O0J2qj--{1sexz*2!3-0*_r8(T}FwNavP+mD}R#pYvkT!bLARgVL&gZkXwHcUC2H zVN#LcI-z_a!F47Vga!S>4&~c_d31ihZO!MYueYyx&F2+s)p@Au=r_a8Lo2FGUc3r# zRh(O&s{hvdQ!o3x+x01%L?3YqO7|YyegE&f?R($m-v4#&uJ?2K{H4Asi{$@2VE=x% z{C~UMpV`*;zVW3o9aCU9&#bBFdr(4yD1*8Kl}>Z^XeJRWAuGogLY_xy}JCUkD69*fzcFX8KD>}%GwoX>FI}uhYMxq*Z=#ue$S@zGLG*zrxlp34S&D? z?`{40f3NDL*cJh(WB9^nfvfcuBwI=8YIO_fT7q7C%HN`VPtxq_( ze}P!HrtqGNcRTI~trN;O^tNbr*fO=|ZN}FN{PS+^%lz@_ZMHez)Gb$k*T1>%J(b|TW$C2#bU3yZVUS!hpn1g|M%Aa8+(2pnj0Rwz4G(7 zcki~YfAjb0WBdOvneBH?m#nUO##Zvl=6&q@s_EBme&7G!`S!MHW_yY!IEftme!z2% z2=B3(?@GJY2n22Od!BuMo$bbs8+n%XQV#VOukBcBneSNe{M_8n>$BEsPt}?j`DliW zakg{cTC=sU^?%&!UN6V__(~8rd+&9t(?+}p`W}D%`t{tkg#wRmY%EOM{AHp|a?iD! z({yiNUwiw*o6Y;zge;Re9{a(+L&H-@$!Uu8xoG>}t-T#ji%fkVtDb%|jl03Djd9A9 z1KJ*VCe+ZLxaT~lUw)RniL#U&-$FF*eLn@ylqMcHRo%Lq=K zxirMq_U`8UsZJdiCmP;t%Xr{9XYTgIyKkx#A6*GiJw2&R#rxBqoj(;HSx>|>b|h)S({mU+VRp`6Tct&`sB~?E8BFHvf4SG zcl&ZA-aePvJ1?wBAgi;U@xh^K0%4PkpMEvkZ@M!#@QB!(oo1nLb9A#0UOM;W@x^_Q z?(wARW^s!Do^5tM9Hm{v_;hxiW1|+*--IbGpyGJ+Xw7!Kvft-{oJsKIzTV>#(R#KXK&F zDeY^0R|DtR+ZZp?Jw25{;d!Z~pm3n|tirnKhMNs@HMs*jT(3bi?{vsSJ;?z1-Py0(W$)h-F&dgkWZ;%nDtpEc;ZHA&^l=RFD*s*jf#re$r? z3AcW%Vtjks<*T7{HgjCbFbVtn_YlvtrCmoKyn9Nt^1Gdvn3d<=leojrPw!&Pcpiax?0+j+ywK40c-!J1KQu!LX1! z0%tDN?|04H-FNv0hwD|to>vVFevJ3ac85y(Z#~KPcG6Qp7na=((d$FY8ZTRTOBH<3 zWMzo4cv`Kn=-RAl(XzF&DUoLNiN>c*Hs`gU-g2$Dm)SVo%6a1{?_8IhXRIF-l#+d< zjlOQW#!!4)aI;SK@mCqsGF|3uwpz7S?b2Hb)pOgQyVS4Q>K2ol&y}3fx$$sNv6IMz z78MY1?z(^b)@t>u&2+Jx)ENcm7ZIxxWJ9 zC(O4)~7tCmdXSGwJE!wR4jdlFH-%&*_vAZ0&73DJ(e8SZ9-gv%s2q!=t)>EQBn=UN3eAHKEN;dG$W9G(fC9Z%gp|5Gm)Wox2Z;o>P!#MmP8E?y`pw%4=p-^jBnZt@8E>?~oK+ zDxfQC)cp7)uXyRisXkMkCqH^|-Zrx{>0yj{+p!sGd;e|p|Cc8qvhLP4&Do}(Qrgl) z>a`UQ>HPj9|M&Nbn<3XScW!vL=WB#Z3)3RbnYQoWPg=jLFUzdthDoB7;-jE>x@VXI zPfcdm6u4N_QV?Re*|^b)Rpj|E4)5%}$nBv)dRTnUPtjOX ziH(8NVDI7+49DsXeA6Q=mcM-W_V0oG+CRs#?-joM8J!kCKQKZ2!VX0Pmf39P8Aj!Q z^8eSpxsc6Y_ucy1CdJ<3drcC_(@wfxy!xKyE|bAjp`}8`Gj(1b`M)fGic%^A#~B;< znLHc~XMCRTkz`@G{(1e5cXOl7*2=$oJ@>P=-NRQGel>Db?cT+haJ=61y2ZBCo^1-^ z4c6|Ai z$~!u*#rPUOW7NYZCm0MRjAh^7kVs&gn|f@`r@*^&%=u4u7d$K8{8pM-;H=O82Fd2c z+~^6Ci#?aCEe>AX`S44c+dql9^-kGsHJf7nZ#Y;i^gow=@i~Lb79~M1)umQD*Jv)? zAbW8|=3EsQIR*x2&uMjgzi&&9xvpt1C1b<0z9X!t^qJ3V4X;ZQf_tZmlwZ3%DeU!y z){B?*w@zbhc{#c9fX&=jCiSIr@7~z9cMV77L4&u;_bi-vxvj%Qe*Lu5y%#e2HcR-| z*G>BTC9c@=;WNA2UkZg$*~Pj-+XN8WvA_6;r=fdC}t?PFidkuJ)!Txxb!8J2^A(Yo{m_U!i9jj3nV8a>oqZv3)8aPsP`i=EE5UgZBheE+Jp=;>3_-Ol?71nPe0 z+?cQ+l_kWBv-N<7R14GTiLbY@U+ui{VvU)W-(F6RjTsHS#a(V|zdf+Me{V;k^Z8p_ zXJ5}@Yxt?e!cd>!z&JI-=;WmK{pIW9HBMZYtg?81_MFl07GncL;q!AAIWz`wCYfnY zHJkA2;mYZ`8FLe(KE%A=nfKqXsiW`t-amgn_g2*=-t^cNChh# zQMUgVxH+=CHoxx8;yIh!rnVhaS5jk`w=F-&Bh^#QOZf6uRc$8U`n@U445y0k>X)c$ zEG@JDdL)_u?~h-z^S=E}SW(?;nB#ZEQ@P2)*Ik`|vdR7Zzt??wl42)d`#RFE#pm)Z z>xFu3a$A1um9&@5oUXQbLWh6b35B#IBa_W*{aswzqWkh(j(NQPn)<|gw}Z>|&+q@e zvagOau-T&6w|Hixx#6|!sqFRdf1mrf@uCJ#xUERZx!Ds^T|ADs)U0Yuo_Q{-FB8VOckG%lNPC@h&2ZJxg~71o{7Yv%K$h z?B9Fek6%3bxuqjubx7UE7ykV+H{S2av)f`J9^uu(k-+o1r^QB6HFQD6#}5ZP)$6}q zf9%0L_4{qBX_x!Clnk?zXRsQtiQWBe)!geLTIb_-{=L5UK;;K@``F!ix%u_q-`(9E zZu{_9wBYGYGk<3Pf9zd+C|Y9e>Zh95ON-?f7q_S$Z8&h`jIm$(c`e6m|F5t0e{TL;&y!c6wfIZ-a{00;UEH@o^uh+C zuHW+?={O1)aW8)?mnOLHQ}N{$T5IP%+mX||Y03w~DZ#%zmmf>X^IyL~$8f!Aq!;IE zJAao6S&g=NOP5^Bz4?3Id{-91=jyJtk2y9vyi!tZ5m+R9`7LWKYl!uta3zhU&(t}m z21#xH72DRqT{d&VCf?XK?=$t*VtzuWc-FpAQfn6GHdc7@C5cf|!T9gy0QKO-GjncD z6=CH#xwdjh$P4!(W8#!~yl;S;_x38q0SukbJdgruv@9W>k zUlGz$Wqfidai3WC-_-R#9;@+#rXNPNB*dFbLn+k@l{K`H92i*$ifHbx1H{YSbMGa;%d9kYK!jO zduQqCbl9M4(GJ;p8uOl4&8yCu6tF5})#`nm2kX!DC5v+%oYS(T*Ue+gsf!siZf;uR zba4LVo~K1yWxX9;?p(ia`#ed)t#Hnk#iyGN6w9RhO}Y@Z_F|vj=i2k1=dj++2^3tG z>9pk(b77i-(Xk!HE;EjB9$v-&%h1>8!8^xoYPJo9|bC1<4%Uwm7W( zm&*|jhSr2{uJvnur>W+82yvY`^5(2yqRi2twZ9kxeID`ru70M%nHxPlaaPpYAE%8a zoIQo2ue~ahl*-lduAH~~L9V#;&E)RTbtZ?Je#!}MlwDaY?k#ldT+J-*Fv+m%R=V?4 zO1^%c|46Cw)~!JOh$Xz!ciiLivoTp6rS#~vztF77lP~9i)@#+%W0NzUJ>@= zW7g*VD2y|h^RrXn;c6*ux#@j#@3oy_;}$WW>zgn&c)5bkrJl7-=Uk@yK3@}aH_NyD z=A2`Xgn4iGJ$e>vb1{AO?No2KgYhmcL0t+QJ%+2Ja~UQCojac=DRL`l+Us+BFM0JX z4v8*OwCb}}51c5lD573#t8#BsP_gke4b|HF%gvU&ni_Pja=$_G#*imwQ=V293l|zU zzpu_*b!(!)vC`*dGdG1SjL31HeskO22)Wg*#$TPRgA305*Gk{C=9_4_+UX`g^T#uF zxo=I`uRw&;Z5nH?*V(%tS8Y8Zo>o+3<)e3KPW>Fd$=wF( z%MU+MI&<=+!A_21h&TaZo$4u?>d$@Ijg^yL-!EQQ@@w_pd0kJG&Q!j>cvFxb?+t`}>RILC>H1^6M>>+X*w?iSe~g1jo{Jj-?Ur5^`5?tiH^6O?hAD z_SjjkpbFkEB4H)V#6`_ZSBavR!Jk%J4OA%?}Ygv*G^!Gn+SDmYi^dd8bKor$F(<{sdk=-SGYU=X>jiZTEiM zRVX8FZ!2@+#jEeT@7BgdZLG5O3e(wi*z|$owU;OO{kK-ljj&xgt9#zI9W1Boi{3ud z>y2=Z_IvW-!-nTOET;FlDX+e2DI5GXaVO)G9T87nyjbx}$%ad4UiZq~F}F6vgya_% zhArs0`l!f$Mf$5YZ*ei>HwC?J_fmhK=MBGK_^~@zFE(P|`yFh&;^%igPLiXn8dHTlqkcPt0)Hp^_XUAe1O z8WOooNV`uxM9s71^#moc;=qyu&#h;tF3$`Q@mVT#x;$dCXHaqA&6uhyj~@N)usMJE z@gj|;hWa%n^LQn*UtN#cHoKZx{LapW)_RLhW&RU=B9dZtzRfW4XUkLL@Dnl2UV>ki zr|+x~JnMNnQ1_av$)shTlMOv_f*-zy9aopo--wv|`ff)0K9 zyQyUH>0?)BX>+W~lAr3eM&)6ER<3qe((QeRHatt3`!__ZSZw}(3$u<%haZLLPo7xP zHEY$PW9QClhs$_9uIN6Ucy!~Jbqz`{a_rPsxrU~ytG66oIAvbCRk0ZFGO_EIEOh7Z zv}iI4+Zqw#=nx^}^?6JEswsIFZ_IqY!|9MwXMy338Ov|?tXakSdQQRmN2>ik-b*hB z6tr|lO?@a@YAbFmeLYoywRP#KT&>WXn~!aLaAaF~p~lnwveS>AdSkhvl^w8AQ zmaX%>UOGkXI8?B8mS1#?ktFBp9sEnAAo3~ui?$-J}5o@GZg~)Bvxh^3q!o z+zfqDu{9-!W}AHeS#`D|%KU#+Ov~0gJ$lEire(J_9`?HY^G;m))y~xG7bZRx(#edS zb~>=|alMkxtI*87%h!C)$=EKVq`b3nsm!#3kFA{LQkxUb&9={UVj- zlM=?I5nq`27adr7;X#XkXQo#K@6=<_yI;DzFfTsuvs~MA<)#Vevb0XV?`BP0Dy=nF zUdq5MYpQDg5&v*)<=x9Wx2{@wE&I?a4d)O4E8hJSUl&(hANcZkpi0)%r>may{+Rku zS}vz##mb_n&pMk{c|H9wJ+AKQ)z|Cq?pXP?+3$>N#L|uB?Kil^ctxN7FkQPsyZpoJ z{5w^jzs=o#ug+a_+GDNW&ISr|EF`zgcjeO-u3Ez^!ImnclE6g&#d3^ zN&UmJ=c2Fee=R#;#Vxi^LGb>qzb;%6km^B4WW%|p)_|`3x5sV?z{C)>2i_V3t){`Q YRtO>-)c=(~S1F=rM$5TxlRY`}00HcO$N&HU delta 1941 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 literal 46409 zcmeAS@N?(olHy`uVBq!ia0y~yVANq?U^v0S#K6FCcds{yVo7)Ob!1@J*w6hZk(Ggg zK_S^A$d`ekN{xY`p@o6r7Xt%B!wUw6QUeBtR|yOZRx=nF#0%!^3bbKhU|>t~c6VX; z4}uH!E}zW6z`$AH5n0T@z;^_M8K-LVNi#4ou$OrHy0SmuVHeY6U1xB?hJm4h!PCVt zq~g||zvVY_y~D)0`U69a*Zz1W>;Eq0d0vLmCEW$$Dja4UOwV)T`7G{6` zW%+s2>oKOQUxg=M;n?5!{?}P~c827hYgT827#JAte_lGJjfX)%kU?S5B(5L&E({JV zE{z;{!cGb~ajQ(29v$Ns)?jeRUVHY}^B>cGCiR`;S6KA^_q;D0EB;;V=ULe*Nu|&e=^p@A;bq1Z~crF3#E{ee=KLuvTHjH)lM62mhwFRxkVsRAZu;6 zs+Is_tBA{z&q=vUB3Es_7WI4I`B74$N8RVttk{SBA zy8d@Ox1!o)PWz+5^FD>Fzuo=VB2qWCkx77sE2eh-iiSx+T&|V8I}e}L77~mth+@gR z<2K=WW#&rV$4jr>k~Hn@IDBw|JFj4`VdXq-P22Ou`?{mjE9XtWwtcxxcm2Prb)OYD z?#inwDYjIzGF&qGXuE&Ql1XHUha~1X_Wu5FTQH!qqeV?1763xzVmX`jI-(8M;G0G`E8digTn!x z^A)0Ojt89EJ1Xa8&;7jZsQgl`RBQU7wZC(<t+THn>- zbjs%RDJHECr(a9Bdd7V$u2^ulyXV>06_SgK-`dUZm}KHP=}2Dqu^Dyi`8hIYF)Z@;{?(EE~#Z?IyE ztd*k6M-v7kHijjW7!;P?srbazRrd0Rwo6L;x~hvA$!1HH7EfGwqS{Q*HSkKO70+xF z-^nJNO$-coaybM)+iaGWSMpNyUYxaX6PtnP>79F~UO4t-Q-t>S6ZHCK)OLyJX z^WWHPrP%7?u62n^@zUgXr?lS2|0!m9vhMb)XRRHP^8_cZ7WuGX=cI;)DFOT5d+(HE zS-aIxjpKClvqcl#BRrp;Vsr7?Y|>>lJHhbByzTo>#yPs=2k&+`qTpkoE7%F{SMMvi!|Sck`}xSj;~!-fgMG=6JyS_`PRk$~?~Z`L9Kv zTyY@Yu-k+A`ZHSteI`jR{GJ#&hTNw-=Y|g(*SaXjzG;vI#N$IaELO_emYZqYV}o#$Lx0N_MMykAjfR87w;Oeylp#=3Qv6g`)68u z%bLJu)~-up=YNHl-e(V&P?)i2PpjdXX&)y|)r_;hn|J+t&05p!4wofU)R(TvOYCtA zmyh|L{xz%PM6`rt^ZUBnv#+i9ZgE;M_0}wvPBW|X#rO5EDJeaR^mAG2Cp^(C$}=?R zg<#-`w_RdlccW$PPcSrGdm1dD^rUj$bIUbT+%%V7tJ)cJ>;6;Lx7Bqk)m>D~j`|7n zJwLtku1lo-cN_h)!Qpe=T+V;?j-TSRW765Y)eoOdn|Z|Zt9z?RDr;!hC2fm3(xzd;g=~`#y`M7S5ZCL%;bHmE>}CUO5j4n$>P|k zb{Ch~3nm0@3Ot^d;&P-bd!>3PBg5)o&yRn$|GCA_rMPRZ-uLR%pE}!=6kCGMIi30Z zX>-Gti$Nac_HHf;3$8|gFQeVRx5bUfHTK->4+cxZze#PL^q{n!u|~(vgPyH*8$dk)V3GYvxn&hie(b z)0f(uZ;kjb;C+2nQby>7-q-&>U;l5}pR@k@>TjXh%nU3GS{xLY2o%cf-aYHD{{Mwr z&uz*vn_oF^`{vE3_deWuB5G?`_S|JJi*~;Gx@*lXPDQoJh0~sUor>Fje7{o5 z44>nb^U8Ps)#!S2ZC`}Wql%mFzyGW`;r_>>Z|k+WD}t>wcFkS0mq~l+Y8$H@UcKDC z$EMgY?(xd`o^yJW&y;QH4VPxJGjN=G&hFCl*y2@*mw>BIT8iyurne?HyFVXYbN%Jc z1)psATQyE59xFRJ?SOKnr~Cmo=OanYH(vN$cANHkPJLhQl8zVEc3n=BOP+2E^75+Y zFb}ch+W0BlRl!~+Jj`Ub^G)CV-xd|P22T2Pke$^_^T?4 z?!P}T{`qLq!#tI0>*~ulQ#Q_s4(<|2%75>WefHJlzj}hc%b&7WohlA*7GPq?4F2Sy z$ha^iiS5|EXYc%6+_J;}p8Gtzlj& zeGZ{B>{RqGZjbNum335K%rvcp#=-r{Sm z_ImR5say_&gV)k2UXxT#2bF)Ra9CrRm>Q{SR=zV^`?Q(O%pkAxpWPl`tl4+3yyiZC z(}EP^C;!4P&VGGoZ?8G4QQF2C4{u#bIke&NZ^xI7?Ck8zmoH!HdoXy_<(Iqc4dc(8 z2v~2f5T$=Mb&tuh4U>=U-T6)7NZzsDZkMR%46pMx|6N>iNL`8H%be7`+wO;imB}3E zKCULywot&xSNL~qvd{M0k5d!E%9QWzD_;Bjv*mAZ-kBObHcvej)h>G$UYy~#{B>pB z^2@TldT%CX8Aue&KY#xG+oN&Ym)k5|Qnc4@Pso~U4f*w_`=^}qyY}U{*J498&!nYS z7T6c)I<@(HW#HmC{j}(@NMA>T_+swe8!EPzE;^TE_&8aa`O^2l2l%~=!Zh`-M`oU$ z5~P&i`PR_w{?6*#S}HCoOQpWBKNnvfrv9Y+@4o~a+5C(cm*#&9wmg`2IyLn06}Rfy z>(X6f^u({uz46&*jYg@9+J|N#k)LV5eH4#m*qqw5CMV2S=v(3RV=-QthUcqt<{Y`3 zSAIh}>ihQ!n^|Yo=lZR`FMmm^Myc3VS$dJ9Z(T&j z^4W{ein09DU%cI7`O7(>D)+xfYHip$*)?PBi)Xebr;Tz=W?$o(nRi8&udVy3(&*W#XfFN1vgOmE;QiOby>zE>hfS%_n0C5y-t*no)o+eJyINON)uX{=|KdCQ zkK6x0$GDkq!cv>1HHt2?qBi;mRn2=|cxO(n+C;-B{$Gdd>JMlc>bLz&l50y8aa(%uW`KFu zd+BXX`Rm*=C!W+jU#uv=c(;}-A(yu#{8Nsd_CsH;nJOoZ;&vs!tKRp#I#pjaK*Y`A z!5YJj5qgIVbU52AJgesBdH&H6>wcLt=ecD5@nbU#dUnly_wr`#_bJ`^Kex)aB;D4N zx-A-cw!oh?Ag7TzZ0^lXhrC;q-`$brUc<@ZxIn<`!@_BQZN5eCd2r|Nyy?liy0$i7 zJ%9L_;@P{bUTwlkv-F?oBz91hoX0zOtO!N>$>7QT}LMI&*E5>78=*L z^lpHr>Jp7yF`1=X1(UjFq^}IR+PqqGWrTBz>%KcTR+@Ec>P*GSDklppVp!Q4FSMp&kHC#uv_!tu;^#w0nRgdhMa;I~RPg>+Nk8_U{ zmT%RIJkb7k;ioCD8C+cY+RNFyxomk=rFiYr8M`_EUzAwwd;h#LZ)(Bn=AE}^ z)*cTs;B{ZU^OeRL7NfkjFtLvxXEQC->6r7P^837_NrLKzf~<}KJ2naAI@rkTg_WPP zEScS5H8-yEkwEd>=auVv@5#O^ThurAg+(Xhfn(|$)f<`@GSM7}L_d)~3=35(kizbglQ^;P9>$4IXi1rJKnE&;+A8p@FJ%A zl=g3qS1m5{p6|RSz5D;EW#N*iKJA;9mO1Zf=CpV3-bf{b!$jw7i$Kk)ZM#(0{5|Bv z6?pXOvyK^87jAa@wNpy!erC_aO*MPWZf!|e|K~6_b&5mYfZKDGxpxy8&qPgbS~{_M5Wne2B!!< zmovU^Czu`1U;JOg;&jUIglmoyOIP&@YzSSlRD1Hy&z_Ssmgd}Ils`7@^wRgg!{i@+ z)Ojd;!}#IP$Z4Baom_kS?a#V|-}$}0i4sg=R+g`;KmWAx6k@n>_wLr+{&SAx9RFma z&!uF>Dk%Ch-Zv}i>H#;0ln(xkun7h0rNVEiUN|9Gc}&8nW&g+3_v5!Rwk1ZK+QZZ^ zY2w`3u2X(T&s)Cgud|55l-w>0MFEagiD#$hIC)&#wh{NfJszg`q{{TJx3sj6eSORJ39BMmwRUqz&t1LElz~Ib za-h*Y<6zhUzE4-^=*cRt4WuBE;~E<{r>Ov zb+4Q4zrMG(x-RswZV@8`NWkx6+bO* zu$moSzxCR+$2nhlozqODZdz{kzW-~}){8kGr#tceVvh6aetJm4c=q`gf$Hk&K#9Wq z>8DlMSAq(^4e`}!8)EgAMtUkv2|8WzvTEiJ-Bnvez6Au%^)@>=z3$zcx9|U6IRAHg ziV+jT!aeuxq7@DVZs+jWWg5wF;C23+%|2Cu3XBTB7RR4(()x4dddAvPnd!gc&u(%) zqT)A6r?56@O{sIL{<%+UZoe#>^CYA%cY@a@`5U!4GRLpR&OR~4Y|Yd)t2>^mT-&)$ zZP~S~{yDe8q;4p1_{_c4+VL+xQjedw1_X=+&aM=xOu@@ugE9pS*F(LFrZ5 z?nZf)%uNwGW)2azJ2WmwYR+EAF-@1%Eu?4BhDt82y^_~5KP*$?`f+qs=Jd#UQ~kL2 z$shT+>4*yZY~y<=U!?vcuOGR$P2`cE|qx?9;Pd9^|f?yQAyjs!r8a+>++U zrW|1CtCwf!yZ>n$|Gz8y@4t1M$*5SMSkubEuv76=aEKlML-+IP3bEkQ>3!2aK3u-X%S(0Xm6KJgA4TMvH*yH3Z;qUEWT}J9xq!sh`+5f- zCY+ep_IPq~bzyn=_WQ3l$H?{{Uz6e**q(b%clYevJfUg(Kb<~Wc*ZQHglVz&G2PYs z)^7i;bZ7dHy9*zk68Bq`a&^`&(7-i ze9~K61@`6%E;gRmcXP(O-*qo4MArP+y1Q=s?X^amrm!v9#hbnMrd#^nEd`xvu6t!` z8l5~kJ5JxPdtYAnyWi6#{!sdz8@p@m?6_DMGL-J~GcMHru;KRHr7ttnI8J^I4z&?)i6=RF#) zdfdd{$+^2U%5x~*xR|c*rD*jb{S6=g$osMC_M3Ec)5Dq5tcvd*{lj(n<(1USj15dJ94mUwQf@Hce!J$fro`o~ z6Bpfj5%g!r#hPu4d_UW+e%!{qeokHb>57wz7Vli$5-geS2E=i$O32p0zhsIkyEwy-eeuq>7&{j2dGs?R>;w0L%g&81 z6LQ-oX{`JtdVWrI&8zRfbv*9`>TQb3NS^;pT)=6^<{8;*dlS=_m2BZY#>T!f($Q-6 z`Aa5WZS1?O_H2HrmB%)hr8sZy*(LiH9lq*Q)?%YOM_7;7Q=)C&r-p`xPd3|cc?huZ zxL$WilCOSWzxVNB`@f%8*zh+k0<9&kU_eMds|2>18j3 zYf`xPF&yw*7TIZVQi#E4p4Wi{gFg>mnw;Ns`O1@90ta5_y{Wyo{lBj0kCYR(8`p?U zd-Aws+sUWOEg$x7dhh5Z$#Ss9@Oc4;wcWhurB-*3CIxz#KWx7qbksrh|Kx^ECfYyk zH`yeAT`w{%;KyFsRU4f&uC{i2EL{~c<;}k4S&y67oq8VgTH_W+B5RAz*_h1}YMC}4 z&Pm`By#H;Q{Ik7XVLP{Z&e{-~oL_$aos5{-o@L&DBLXL^YgIokJpI?fFbi|dX$@0C z8s%p^l5to%`?UQQCE1-R*D@zB?`ZfG6aGGZ+Pt&cmg$^%a~_;+vw9d8uOp^Hmb8YR*l*&hg;f8jC}7(=Ah9DhE0+a1?C4&e{-P`)`VU z?faKgir?BjpJ>Za@zal=qiE6d$0Cf!b}}-kMV)!9`ih4^Hy_Gg>0t3FTr+jc<5qQ{)vP%^C&L5V??j(_yzx@c{U+9CQS}_L zO;)jQC$3^p{IBde>10k2m&Km4r%`i`ZIL_@QJO1yed(#sHs(9Cj|w^&T=(#t9COTj z>6GQCx}{mQA|JnAziDkuTgHwn&NrUKJlS$GC|O4AqA1^-U3c>wqo1^hMf{pGDSZy_ z-*r#LWbF6xDyS@StUq9U+)+Y3zxw?8|3B)L8a5wMiPBcI`~J+1VNb^LWS+Cdf8RYe zc6j0S;6(rN@^Xd*^DZV$o{Q`6SSc^y?-%Pdn|J8^{>lahe?F@4$D`$W z`bibf{m(} zw1IWKSzJ@1z%KWisLVEL_hnOi7oYl8`!h6&{lwHQ*SIE4+wr#}Vxg96KC^=W%hK4z zD;2w9o*%oyarr z->v-rlZPSBEP!P~vf;MKSqHc#Y!I5{^5yjQ^8ydc&p+R(#`43tUyk8G@Zmn8AKK;m zZl2%1{QUF&@9X@pVG3JR`1oy41U#&5w9+_awboL5srdIQTg}vyst2MCF0$Q@QjGe1 z=9h6d--gZh=O?Rd)cNFMBEd5w>UPtT4+UYO>keJ&cS+IQu$G5~L3L{Bv%*h_(^7*x zzGv!H=Ikv@+}fP)a)v|k*yE4??$u>3HcAn2y(&C6b!GfUTZ!bJYgZ=-hQ0Q_)0o4) zo?maJi?Pv3udTKdJf1u`*_#m4FvWaImw6}atz*#wu7M%itLJjY)Gu9ipXoq}neU_) zW!JU2hxhz%e*d>~zG#E>;kt0n`wupsZrNM!o!r47Xjf#Wy6AUzh_I$&+?MOi4S)R_ zI%a9a>oFX7veJx&q5u86493G6e=gkp&G2F3%s9@7;u|0Pe_h=DE^bfGihXZ>|8L}~ z*?wEMP-VKzldLK!i>Z9qnlpP?gI)?q{BZnwCHQvBlr#ThV?`gIys_1&V&3)F-vl;H zk=vLwdBLS+FDvVIT{62{xZ`u^}V)3M7E%w<-6-?k;gA@NL;

      }P4 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

      iHJ#Z!q;c$Go;`^ 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ðyuP1b_>%1_u5N_U@ooT_KF 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 KKbLh*2~7Z@SgX_k diff --git a/mods/HELP/mcl_doc_basics/textures/doc_basics_light_torch.png b/mods/HELP/mcl_doc_basics/textures/doc_basics_light_torch.png index d64fdedd27c1ab2d2296aadc8682ea8382b9ef29..a35ee4d309a5a150217a1bbfc6d9203740fc4812 100644 GIT binary patch literal 61558 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 literal 62900 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 YtrE8eKIVT73=9kmp00i_>zopr0HO=d)&Kwi diff --git a/mods/HELP/mcl_doc_basics/textures/doc_basics_liquids_nonrenewable.png b/mods/HELP/mcl_doc_basics/textures/doc_basics_liquids_nonrenewable.png index a0d238acb1759398af0a068ac2278ccbd28de84f..5501ce7948bddef3e3af20ac51f8df5f014b0d53 100644 GIT binary patch literal 70124 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

      t?XXL_ps|l;Xx`pa|ELh!=%s@HMWH!OpKeJ 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

    _jrEbEBGcL!Jr*v(% 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 HWy}KrZ;io2 delta 103609 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 diff --git a/mods/HELP/mcl_doc_basics/textures/doc_basics_gameplay_moontest.png b/mods/HELP/mcl_doc_basics/textures/doc_basics_gameplay_moontest.png index 47ea2192dd8a5b0c95e59f0fa8bbd603f34a768b..6c4728d36722662618e4f8ae682356a9f3fa718e 100644 GIT binary patch literal 58372 zcmeAS@N?(olHy`uVBq!ia0y~yVANq?U^v0S#K6FCcds{yVo7)Ob!1@J*w6hZk(Ggg zK_S^A$d`ekN{xY`p@o6r7Xt%B!wUw6QUeBtR|yOZRx=nF#0%!^3bbKhVBjq9h%9Dc z;5!1sj8nDwq!}0(*h@TpUD+RS%Q179=Pxll$iTqBmgMd3!tfsi7wla=nStTaXHOT$ zkcwMt_J&W^@hnplld}p+@6@Tyzj}4i?)+>+TiY43YZ_t_a?5kCpAi4l_=NjE@7W(N z#&#bY(_$VsWgjT&Y)#z2e1^exQ)#@ecY5fl3x_K2*d98pY_w@r)rnWxS3@Ib3d+5! z`?KPGjk_a3-_c5>3m$ z(H})41kI95TArx3?qNCYBF}Jg+QOwuO6iZE@lVn7{O0f>(n!JgsD);3*p8-EtEOeP zC2FL8KJ?EkEH*-T=0B$GErkc~&DilTN3U#cTUj|XuR*%)rr6OLy%C3Qewp@-NqF;3-iB6pmoKy4yyc4i z9@F|%+1o7gYWAkKDvvQvmKjpzSTnA$hz>yJ*_OEUtgZSZCx3lR~}VfcJ1c; z9seHwZj@)48pXG;rfZSKBjx1q)fFaMSN|;ZiEYhXxV++F&*T+bbjqWjX9-PRF)=5{ zcy@nY;U2jFCof!STe|p7$gTycEk;}OCAFkiIh{Ypot+)Cld4T?*2lu>LJ<WB45r?B*Jdp{S{QUsc;-fxxaU0V zJUohOe>OBHCzg6oSLIr3Velh_XS=?a!fyLLXL5AEZMkA|+Eh2%pdw4phRd>t>r`au z*2r$duF0FX8|`^`^x}n&&L)ppH@FLI)hPX2)I8y@0^img@c?JB?&nhLX6S8lC|INM zq|?E7gYhKEM((v%6}}1vo7vJ&x;F^_?AfYOn<_M8FYj|R$$sAjHQMSq^X~81c2nMO z)-=9XyO#L7bg%z(&PU`*4(m?7kPh+b`!ZfgeSCf*F7(Htj|MH1EbnbzD133J!<)Y) z(r0gdDX0zg+gm>6e4N%UuI-_PX&1d%y~U@_oArPG&&fGlg^`D!o}Lnr%CSqM@9`=L zPD!JyW))#hUj36&+POb-ZAb{~{x1HO@ngx9RXn|o-ubFrzk zh-GwRa-v+(^11(-Rv(L8IdMj>dG-HC3md$R`&lMS_o;n~ImF3Y9BN#$s#59V6~V{O zA%9FbpLYk{Dz?}>`Zqdx<2jJ;m+V$TYQQa8L#0{Ilc1Op&a|uL50qG<+BO|4kU*hf7lZJ>^PVC@uS8S zWdh#ZcV{i!xzGObPYs{qB3Jq26Bq2}{J#>tZ>$$A|9SbSIS`SMRbZ&Ysg z72Jz#E8C`}H?!EL?sz-s4mjvd%wxnUhkarnOBbvH9f9+v#Ip-qIuqt z>Y_~TFEb2;z8K%>`zdbxo6GpK*R_LTD$iE7q&*V1xc({Q*aH?v?}WX%<{HPm1^3Qe zG4aEi*cj95mA;eSs)wX9EIDse);wvN!=;#Jv9sG(rtN=ZQq!)Lv{0jV%N2zs=Snqy z8A&^=ve}=mTluVFa<V@=NDbh5E;R*RtDb{pe?K$p-`u++Vw#=|TcTd_CYj|Yji<(vb@2U zHgU=QN8R!AqMMmMD4d;TSol|^`}AhTgTlv(xA5B7_8j3qv@7-2I(4^`GaWBwZa=6w z-)GtLrOz^0R1b!B$*P7Hom)1yqpRZAu?jV~L$o#8!A!-s3q4(B;f%XV-qh*bCW_^*_y=5~Cm;m+B7N{+#XD+=aJ zH7!~kcip5nO<7x3JMDmn(Jbp)54X)+j$$=lCG#e?v7Ddw%a~PH>e2&VevWjr8pQikv(n*s*y*WZ*W|RP7mS z&Il8`j*Dm(SN&h^X^^ZVm8gHQCUb>{`H=dM}HQx#h*PqNK)&8x6!o7L(S zspY^K{PeK#gB21|ndYx+c7I^0OsNJGNev%HKQf%hNnHu(20C_OOZ(3yQll#VTU zz@n(B_FK4HI5i_Hi+$muX<97ytnnMIBF~#Xl$l+9k8{b&PdoedW+@d3x`c_G2$^^+ z@C>t@fuGdcuA9LdHoNE^dm6-AQRbC>?2gdfy_NoJQ$G4%l$@>qHS>(X#qQ79S+ltO z6_x6knrsgwJt??n@I$+VEr^4gHEZtHr9X~({*qJwQ=)&Ad18X>M-}$tZ#N|Tb^Y`} z=aIdBjJg`*%n)OhQw0@T7f%GAG3+b}PW!j&(5Gppk5tuiF5ZmPi3q%u-?(;i@g1R? zy@4@R4t1B5V=qUq&6An@cDm{=!?Vc`ZwfGb{}uOrQ#19!*I6r{C-Cq4oX*2$3 zCKh#eTJG(s^Ax{se!faouxn}?*UMQ4m0#{UCM23NJt4-}v~8x4{iCY7Hlyb2sm|*D zhm2Yt`EC#2)wb-$OnZfSQnMyW_8v+tK0U2&tCWlB!bfimJQR(e>Q@{~J6LFjyWA6p);)8z7c-|c0zPvr(ibt^@D++_V4qNW@{gXH^d<(T#9N_{#FyJ|b~vrG#%pz# zeRNygrv-so1xZ{#RkVdRYihmP@McDz?R{3ol*ns5%Nn(tL`>$hJ9RHLKDUOa%WUxz z@0G{06nkEXH*-IIu5n7JpaccQW_1d3q7qA&)Ei996hXYZX55j zm4b!GX5OF8TJh<~8u??w$Iln1CVWT{OK4KP$j7#G(LwW;PY0?TO+RW_p4*aYxM!Z- z++|_{OmDdRa>bYu`B!IhWfaErd`gYW6@0H3lTx@bJ<9ZY>5=Ho9ZE5bGAD{y{@m%9 zKf&4g=Q(fQ$!DIqY(5}38!Q?dRP`0pAD=!c4EV17tS+EIhzEW)?An{Yt_Y-g2G-i7QZ>c zU)ZE^Z_b>=jtAeP_NgsrgA?QTOzDQwLi$0jJMQ5}PewME;-fWPPWb_c@OB1~J@vstkdg9|OAX zi7k42=E0K0D%LNPc3Iq={jpGg!0YP7tXw>XD3yy&bwpM>CTm(-PS&1uM<)KyxDzaqGr0~B%uty zEwYi0VRQb7U7U6%GSsx{S+Zf0eSKZP(a4iYZ54GDLiNvA=_Q?CU35s6y(MdzV1uFC zceiK4i%gW7IvkhId&@Vqq2u%Ciyl`jON!2~JngKaobDOK$18kz+nxC{<-N7{_%P1d zIH6>c_IB&S+eIA{&U78k@QQTY#O1~l6!MGt|MY!&r?qTU=UTKePxj8daP#T>&=~Hw zZW69a0nuWImd&(nJ0DQ8=To!$o`Ak%Q-Z}G?D=YS`-HFI1x~ZlyGFeC`Ca6Lf~T~G z@y_{ti6=c$er29yP}pI`Y5D@zVb>R#xE;7;d?{bQe&^?=qgPC{7h7xlD(zvKZSR?D z{7^STO{-ULmI;ISve5N{%#HG`lUQco+2nKkv*jB{U5S4zX$uc#n{1gd)nn@UyWL*< zE$(V?E1o&K^YZgghd=m4x?0xQpI7tVtS5XfRCS#L+XI~%_ib958xnSyuX^YqBsKYq zrm#V)$1)Xfk1cOs8a`;#_YiTw@<`2J}z1uw_TQ9 zM(g`Au0O+xKeq-LQI#r7th@{BV3LUsaP(#--9EcdkeINnoYg`d|r% z(rFsUUoVnbW9!jVcAPi#-1#cc^GtIs%xr6 zPeWyu>q@tyTX-6m4r^_^~rkO?>W^b+P2#wq-a&}5+@HL(v zlh(iMr8o9-H!g{ZJba2tRLD!=*b+VAi%g!YwcVVJqi0>cl&!n? zp3!UG)%P+?q{Ge{@c3Tl_;p6*zF>#2te)+4$3u%$`W{rjVW0TEb=zy}ZLclYW#67> z{PAt!gC6H{nctHy%vW1D`-ohhbI)R*+@zLsCF|4A{hnm8@d$tXY02H@-w!X=(9&Ju z^E%#X7T4p4c`Zwd=e8Ev%v{%+DsXpp;!Tl-JhS>)#7|{uIdHvPx`X@dBYE*Vjcv>7 zimD&m*Z=$T=#{3pvzEV3B3t~fc}m+q@1TzGSh^xC#-22bLme4jjS)Yi7-Qwr=To?~&z0dAS;)turSryR|Xo zOiD^>QpG&yXf7$$;@-ndY^`rES{(PE`knvt(<86vR4a*m>v6iY`Lnl#*4gewfpzZgt|;TfD*7@9iv)WiISVZcX{TQcb0msY{0KUCFCo5AS`P zAoIlYQQO4VZ4b)&_nzR~ICsI`#1Eft*x5<-{#HNtp~C70|J=(b=BrF(4qw!;!e!D2 z$=`h;;h~Jy2M@2mzUJ~njlQEvH*MH0Wu#adMvlj3B#Lmr8^7F_$lanAA4`EE-Uhw#vRww1F*eI72+ipiO^ z?0MxR4sQ*MSARMZGkA5{rUZUuWS!I7leR;)qD859$;(~m@@n?!E&p74jHz2uGV7;` zcwzT*&cvsmE=Va!opQ?jr0c1D&-2Tqj`>mSH!n-suHJj`RqU&E`D^m^?(f_7<>1<_ zTiZ(hd^);$`T0N*6KS;>UxTeJq<$REY!b<3@jClG_^$Um!K=JK{p)@_yXvjY{&%C= zY45pKHvQTsmGy1p{QUg<9BpjvC3xB``gkhZ6Sqb4${r1R;Crl0qP1(CYunFDZvFg! z?%sWP^4`NIKc-sW;(k*n<5Td)oAX3|Phruso8jNy@x(T-{Ft_<AXia(DCI3iJ&CO++%8xx0l?!%wESSBjq)g`g?3!s70@H$6e9nsO-#nS$hU5Ns zF3qkp`r(?(RvO)IGdjYvM}3LHr0$MuZ;T9jN@LEsD3;xvvb?9|dP--<{Bz?9C;$9#XD-~Cyw5FnvprVQoHnr7U)`huqAt z0@+keHs;g48}%EtSF$&Xv)3^sy{#0?sg!J8Rrl!h@8t(Se&lE~vb$C4&faL;ad>5q zW5U4)K571c9_1--X4yS|>AWV5T_;SY)woAUoxbw0y!{c&Q337GvY#@R=$OC$`myBH z0rPYby(NC^PIqdRVys!ZXHIESj9i&Gr#UKUjb(D2;E|rT^$GQ#Cv0D3^ua{Tc>bGf zyr&y(avVxIwrzMC|+!qe5b8)#pz2-pX3tCUVGTX(3tPGb6@?3Aq`TSIP5Z%tfkVX57A(q;Nu)!PNL7P*<6 zjaS{(vt2O8E}+)*Y>YwF>$Ufup1bw!+*R-VJNNc%ySPaueP!f&$!Wqz%2c*W_qHv} z6e|0}v9f5hqgGqiEScZ`N=z(X_Q%Wg$?cWc*vcZi<3>oSE7#!!i_&G=oNM@1su{x^ zUll(1WyVvwF*ZAD*6W|^-XH2?=DoZ^a#h}zDBjzj`TX5|KUkE;b}{?}fR{r3=h2|L%YE!%R zNY#d^NyLR;*}`L~V-zP+Bi6R#QIDQ$YfO*bl4w7tRO6}r3ZH*X;4s-;v1Qv9#iRU2 z+`{6)JUJ~*zb6FshpFFp{4cTVVO8AftCIcgsvhd@PU^;z1!9}q)^DhAGTydd#Zyn{ zhv4HkQ$1ayzVm($RJ~#2=6%gNEq(LOqP68eUu~6+mcM(urgrnym6^fvJvKLcpYBRr zq4G6po6g?MRlEF}b}g7$Fvo(A^MFQBlAsu$K#a!erx}>{d`}X>^!+S4KEtI zm>4&$WKgKe@#Ynlv#9xe?AIx$z4j7^7xeqNZ+pB=`qCwd!%ZSKzwWm@!nLgDsK z!H`IgyK|TNc(n<6KRR!BPO{2V`RMA8Jt0q~*zWnF@2VdVbi?AbsNtL{uL?!wKeE|N zD%NnP3PkI8PCdEsR55pHl+Q@L4}{*y@j4!JP?h7Yz5Ox7 z@Q^{{kv{de82YVo0s-7R)YneHWyZ`E3YuJVa+$_ znb-LA)sF&?W}j7UiC16Ee(gQ|nmFfU50NH*PAjud%%O+APAgTqK7UUUU;LYS?`%IF zW8Y}+mo%wp%DHBJgH0O(0!o_Z9(Zu>hmAW!>Yk#bS}ilrw1mWp%~8Ih6{wjJr?Kuu zZrmSj@8l%~#unL4HYGi$cD7#9FjCN7_CsRI%p>v;_S?2zyi3pySJZIN1TY9ac^l4pYBJ?A_2p;x85ZkpbX zetT6q`+DBJeVdEFpE~qy(#>qC?7c^o!~fp=dw7=C`mJlW`u$yRU;Xdp-{!STj|Cn6 z@$BbDoriJG`*+^?^W*E*HZ58Cxx4ZTY-ZTqwzier9VY8yA?Y_~qwt)*KNpX*ZRXe_ zex^ZQE&SSa9o>zw>FH}f-+Oy@mZyZaTHo)lmz&SazZDkiv0zFL4!^WD=h~UOj}<*0 z-}tJbH(|q4{qJI7Rk7aT4w6mVIX-E7cgnbLn6N36C;4xIgv=f*3AueA+}anKGX);; zjB)j7x8Rt3J5OsNe|LJKx%f@4&n$0Z4j5GE&X_79a3%535&qCj1G)3sci%mFyykkR=P5oS0y02r&EyJJ*Su3k$h#$IKO7=`}U}G$93DcKImV6#W8Mi#J}I}?CgJ6KK~VOGp9lE*RiQj<@eQAE{-o;nny*u4}@?mj)kqm3F&!%pn?gfjq+;XQ) z+{|OkF_-&Y0;66$hgb2DFcbAx#}>~^sRu9*vrfNqIbsc^jr3aS*Ux? zW2MPwcdA#28dvT7;`Zc<;OEai$%=-Hl||0QyV#!>(l~ZxZKszzv-OOkKYax+J}{nG zapRlPO!*K|UWQ}y1<#)6GkzoOo@V$s;_?)Qj&pV)GY)h8XTN{4^v%rF@X)gpuIvhX zeN}wDZtnhl#owRpwcb11_U^|*dz0O3pS7D;XXkpC?mhYMV}`-n@>^!p{=d0ieOy_3 z%h`h`pWI!&xBuRbFDGwLH=X+;X#=Y;llI|_&+UJ|x_R&4N%Q{l{r6nmw3WtzyN%^cZtI>mulnZfll|o( z2aCAg#uC|iygfk^Om|4!b>PgYzk4CuG`o^hC&^}})fyuSyQL3yv_0ySepPC`W!Cxc zdk?3dpEFr}Uv-!AA|Yd+87davi*_B@QX-rF+h;+Vul?oR8Os@_2~H_un}T({F=_uh&8$~u{Y|z-`YKY z&)G{O*&Vw=Z^gFPripzIONTlJ)CP|2URa zyK&*cYy68+wyw-CDe-m=wr7lIP)j!YY9szn*|tE&oWZ|8WJQCg*S-fgI{z4Kv%UYV z;%~ClY6TO6z(+qHX4tT94D_56`RSx(>tU6`LoSnrua~K&@49$7+uM8NoepPB#T(mM z#QVKfGK2&z)b=?BUU_$D((_$OL4tMi zWLXzy+=_j||Ib{C^_jVN<|J{$COz#ax8&0~o^B~o9J_^t#GF=$X3jeF@Vcx1R;Etf z$tClnCKe^1pMC99xWTvS=O%jX4mvech}(6xOHb&f)NYrSdh7o`V!C&pQK(@2BjsHl zq%ZO|=Zl#2UHy5yBH24H?%r7R_1@R(dHV`?Z@)Ih^y-z_v8T5b@Jv%NOUZyr}v6;m7s+?`$hdlU{zB?$7r~W8dze`sBdi#MP6f?%XJ}nSDWW(j3tf z=l|WnpE)Zlb7V_~>?r=&eJK4@8QE{p1t>vg6r8+Z`+cZ~T-teKpuN zb%jLunFV`<^xm{I&0V=f#AuI)F7F*<-6g>pzxUiR+HG{-yP!sZqjcdB_R}8EcGqu9 z_sf!bjIV+wT=N?5!y_T<^tb6o4Ryv|;EJ?-Vsg%j3WpDq`FA0_nn zW|RHS6B#V-M$2+9?a=6&+HS;q)b3d7@A*twrB(cli@N=Z2X+&J`%}+Lu4ewYQfARq z+fY?Mn~MttEhZ?;=h(6;SFFC=%{K1t3cA$N|YW$c(bl{Z4S z`<3k+MMu`S@`aa*?3NciwG%Jhv}#46S7u;=qop_V>#86gU+%zLNvZ<%GD(344zVOo znX)oLTO;&Dr#DAR%DvQeA&Dn09;mVOp6;>9Xw@mcbf?BSK3pANW+mxGdS9QuzP{vj zbN{~o55N7M&ZB-w-tWxb%P%gjE?mCsZ@B%QqWtB%Zy4~zK6~@`&BpnAU;MwSKaWRk zTjvLB?Q3(V6>V14%~(+3#5C7!)tVK(yG%Jg#@kt0Zft%!i)+%g`E9z)t%)4}q+gg{ z@a1*pO>S~#YV0kvnNwwGG1)WarN{J}QOSCNUrLrwTP5AFjir`jS=&-=Zc|ki&Q62Q z7z1C;NfVx}n!s`KxEv#M!_lQKQ?^ZbSJA}B`1e_Z23ubK#el4{3Ly`Y3MQRqd6Ci3 zKV=U44p*k~$8Xvmui2++Eg@H7skgu-Dlw zHi^qE+hZR_nvLi!*<4PhI=TMNnhrrbYM9ozpak@Nquw zddo=l?ysBeSJxES`K{s-mtYco94Yp8%Rj5to`Qkjma5;0d)t>=zwN#HWO=6?9zNEH z$|~p8>$io)-`?|kuep8I@5$!V*OfhaF8ubSi*%2Z!Oed+XTSdcjotdg$?*1V>$ImS zZabu0`0#D-yK3|6QyylBo?Cz6s_=BP)~n)HU$@4E=bQ04rIgJ&y|?x2)3n8jW>Ka& zFO<*68w4JoaM$48t7{HtSGi;w?pg65;4siu8X`Tz3}wmZt9%tRaO09Mi7J1*UreD1~n}y zqOsePRnzYFYzVu4b?G$4ldB$Eq`y(WmLn1V@!Ey9m`{>%cD>FW_Y~~)Cv@1SRY&<% zrwMH6Uiext`;|(`+u7ac{U+^P71S`JJN46!6YtN?31*wH#3OIvCyz&K-8XYC6qz*j zY`u$lm+f??-z(-FoHEl;`P?Li&2b$)M#|5Xd($rM>^foLV3_1(ll*epI==2xhIUJL z2Tfhu5pyo1&E+Kjq75Bv&t8hO$xS)1%s49ScTn}`wWq(^)xAHw`~Lo`t4>}rzFlP* zb}acu`@?TVkH6o)Ddqo1efQ$6OK%k&PkP*Q_=K#r`})2;E7`eHElU1g?{X;mg07>;D!$e?9QhN=@J3 zK+n~dL8ktjJVJyVYFK0ciMO3O&pDcJXMSEqbx zOrB?4C%=5iR1^QH8zkzSCM(u)yblyuES>zm{r~YNV(XSC-`^ynKh5vhy^<{BK4+8U zZ7DNr3;2W8Z}-Q3#Z4 ze$Vc$*GzNu@5HRUt}D96^*UeQ{P+8->Ym(;J3B#qyLt7puU{Yk{deP@t=vIh_I;`A$hq62YwC^OIejdAk@_C5b}{`5o;q=%*Mk(lzY>~VD;H^Yh;21G z`1pvcvg^3Cul==QaiK}+Hk8;HWqWCneR-UVlE!tSsi! zU7*F-=*%d7|Ans4{P)*&Ym=&tMft2emvAo)Qgsdzx}!JcYQ(9KjvLO8S-Q7ub}8-Z z{9VjF=cY;!bCA%&M@|)=om87{u4HXrwNN5=b7^Mb^S#;c>ponpo_;UVv3lLlgatgu z9HU+D@4mD%Cu@4%m$2#C9-i)YbJ^zCZ@pjtz4ojjMMX@=A|Ov*)AXLtDetVxX6Eh<<1+M4zMx2UH*7Qdrkk7$sa!dy{yl-oZo*& z9%JOB_c~GCY)YQ(7AabMbN05fSvF7gahs{{_cFDEqc^Ai0n38>Qfwcmw@r~3UE&}9 zw9J<^)vS<7ohS08;f)oWrX0w0vfd!HyG3iA%IX}Yyk)Bn=&3j=Zc=cmQx;mRerQ_8 zteoGS$-e_1G;WkSdXe=J@6{!XZSKbF*sUHRqJLNsi-`yoE4-rzs<5qV_!wc{N-;VS8QXMpSN8+=DM1DlF14wvbE~lQ^up(N zcgxp&_*-rsA3y0^%;U|;N4GVn2LBDu|GI5=)#7M#E8cG#6*}zd3%;1ox7(=J9IE`O zDPq0p`#sggk3SV9R3GmA9&Z2poBf}+;qv!x=Dd92TF*3X@>1a$9hocYKmFbP_wvK| zKW}F5|NrM?l`o_Cxd}_BTJ7lncv$%P&lAZmUlca3*S)^0O(Y-`DS-U+N*+=(6g~mFLXg&)0qW+WfrzcC>eq)1=br;a29`!gZV( zf96KqioSmB-tL{>UOjkH|NC_O|4;w)GMT%V2%Fo?s7Tl*W%O#st4`)!6IslBV@nTn z)NMO>;)+Pi%w3aBgr>J!Cz4#%c+Ft8<&`qr7N_siexi1Se&CLBX9Jtdht~WI5Wc;^f`fW0h)_VkG{lG3_IRQ}wNo z4-ubvKJu>l@1z-|@sWq+)a}SqJF_M(RZ_gmvm({6+comsp_wFqT-j|@4fnZZCBM<7cVKdS#tgIf1iB}kKg;^)WyB?(gK-T$|9D>)>j(*`0OuV z`+Lv+ORMJcEocAxacSJ|2Pr?U@2`4Ob?|j~*t%Su8-3q@KHj^2zO0{&(?OP7FH>I4 z++_?hDajeX6()c9JjwItycIGV6MCFiEi~9sGplC~Lyi4~V}dm- zX8al&-oYWCj3pKw*~gwOjeZBJNv7DOst508K zZ;P(^Ts>z_v|jMV0|AeY#6-5r9!olDlX}su^7Vu-#YRC|RdowC=bxR=J-_qsBm2Y7 zu`M3oteG!JzKvJaD=RaRI~b8>IOCCY(}DUgAGq5>ymoItXCkd_%Bdva^NfGO*2|)c zIqM!A`ewcTUhV(>x`L;Bk1o*s{r1I|=a08W-`-pQ=iRJjrye!@nfUkU`F%ET`M2@> z|Fr3qyUHu>-Pf*gF26nbFQY|;{N6IjJ%j~)H zNyIRC$(?w;CCrgCExA{(*r083qt)$S=6pesrDhdz$2sz|Uuf|(Pmnvp!Y_Gt%e-f* zp*GhJTri9AHw@=UHJyB))6WRJZqMoT^j-A&yF0fzMfZD7d~dzD@WGCUSL!~^&QJc4Sz|NP zPso$8+dK5?y?gWkN)3OY<2lof~tuf!q_VTljOG66Jqa*zf zS3O|Aw1vgn~Ye;gGn=b0hP&JxXpHZ*nWu_Jz1-V{<;YQt#5@Z}$A$Q+K@xefIfTruWBE(}O=2O-(l0(6u_@ znd`%I6RNkAWls~aR2ElV@>{}Y&$X)R&-bQoxBKy7?%DUTm)7acx^<;=QdI5ZRrhi> zF06X|@m_QL;$~s5HeKuF+Zz(x9+mB`e7p7b*ED9myOHlL{cglq{C(^%mKPgU_2msi z&c%mE7!U3!PA#q6$hw>LkG%bt`EMuhvtK*w-{S3M2NYWt|9$%KW&NKo{|cO1GE>|w zxZbTZ$&xB;D0#GM;$FWw4pQG2Y+Dgxymi~fh^VITDhnyIf>7Gz>*_E>|||p7~{EFwslU_jhYAFl+AF}OrCT{^r=9ns`aFX zDK@L`C7%mhUnKQe+`CX}qroKhkmiFy6hI&^etJ(aM6TA9Z~D=?XG>f^}GF#gy)lUzivI-_wHu$ z?dwt5U#FTbS$6ocPWInpUw2)dU>bXE3;X{Mr!~SD>fENSJk1IhN{;eBnYD1siA4FnWeJvU+HY@N-Fj{N z`S10%g(^&9hn3CQW*YMRyutU~t#4(JUH6rIrL!{~cHg@dc{3*ZO@GdYe9s#yJr1{W zuQ$u?+4<((S9OKKSkpCHJeJJ>hZ4BHd^H&FPVIx2t^o6hBYGVUl!a6NrO6XrR{v?^ z?pw3zSkqHc$-N;a%8TAS|9IsgyXU+T71zYJC1%;&;n(x`{eEU0zHfi$y~sWt8NR-L zrIi=&#)M0My^|Fly7Z>W`)xO#<{y7}{@<(g;N!*3KVGkwGt=3;@5)xGHsg5**2LV4 z*i)MM@Yy-87wcN5Ej_y7CG%9%#sxegr{A)1Jip?(ZcS-Z)1u_}Z(RHOR9?MF*`9v_Tjq10TAr81+4=AI-f3I! zW>+Tu_*CH|^g5B_wpNGog*K6j)rX2A*@|kI_FWX=Y%?iy+VECmsliP3RuQEnv402G z>~~$pzi|P_-W|^ek}X;FYE1~sK_*9|YJBw`{Pvy2oIX`{b03tcz;jKdWMQ@dJfuhtlu3AP zA~rZL>d6jPN#>)Ro3`)W$#HK%GQ03?TUnoZZ|7OW6+HeFw5ahf=P3iWtuqvC3KL=k z*Kp0b|KVV8RaCRkx<)g;#Vfrx{VZ+1QF?{NcaFlDoYO6547(3K>JgVvxA#EmSi5`W3+2|V$lyG8if^&Ttg|u3pXygK%?~~EySRSyoOYkNAzFgcJv+1)5d8aQNEVs3heX4n6$AM`@4zpK=eB3%Of4bMsWmgl!3q0k5 zugqgGvs%7k+TvX^+h*;m>(rd%v}{9FnV0)A{)Xr6dD@{F$D)PLUrRio8tQx8>u|=p z^6l?pt3Q9`&)aJM#xgc`6FbZ2nCQ6dcQNi=r}V6E){5TX>vAg2+tIawd{A7T70OrI5BM(?~HGc|2?QMs4F#j)jxOkZ0}V) z_5aRxKc4va;M=vw*Z1wKs7lz)c>CV2b!D%1$xnzlwMZ{MZp*v4$msaI+jSp){++(M z+t)zEH@5VTM9TSqr*psR)oj>)V~VKcnZPocT}!rzA3n)AP2J;x;f-Y~EG^6VvLdq1 zD!iQ8DJ}G8@gXJ2BNb{f5w0M{OTA_4!v%~Wc;bj?)XI4!X(&V<8 zx01==Y}Ny#m6h`nwZ8@?EXbV0now}7Z{3~h)hY}tSe~7_HDSqIBSU?`V==nQY|5T@ zkA%2AbbHjsx40;Nu1!FFqsV=mz%z3iL{j^n8?**j_;N7_tvt@X^URiR%Xt@lJZzo& zGAAdtw(fK}=3N(f+T=jWywv8@X?Jfq{Z24=mZnvDYO70-kmuzydC5<&J-vRv?tAam z@8OF>jro*puVvj`>wWCeCZ7)#5A0nR@7%!-a?yID3b&Ip>fA8mK|CY4-+A8Uu z;J=Tr>u)dJnYW_;@6#z(Yu7mW7wx@JekXeGE_s$*=C^B_;zAsEzLn>9s5tPL$=+q* z&VAmiWv_EPh}>0R+WkKzr};Lg_tWDNIm#QH+JnWH^m`;YESfhZ$G^x%Dd+91Wv2>` zxS2LR@NCrYWHZx>Tp?2Gs=O#Dtt?4VYVwjmn-~$dIqF{uvJ@7cv7Vvc=z7fY)7=YG z4D{yg&AG_y$|o$Q@B91o^0dIn6GdkaTOW8*wn(AT(7kK9mBI9jXPA7F_aE&_TovMM zF>&juwWn`Cm=o(ZHOWQt?R%M*kDffblkT^wYHcD{?3ye7PEU2Y^+QdH!p{3yw)A8+ zB|q!_8)2hA(btP z(pY@DFRS~P@87q7%RV~`yQ`*`rF+hlb$_s~u*)N&5`tVmA$RV7Js(X$2G__ z^l4K+D+S+~)xcTtN`@xxu3msu39i3Yuuc3E>@dRk_UYf|Hk zDRP<%Th&x1IX`0bRGfD1HQS~&)$gWGFFUMbpFYVj;(4c@%Kck6e|>w|J?ZGvV5y{w zn-ij(cM|WK>eZ7`-YV!gro&11WV5>qbx zC`p)=_W#F+gZcY*e!S%?)4sg<<-v<82TycgyuexR{?FsmzmsA9OFxJiMA|wjc{I#x zR~NpJHpTLGZKX*@#Id)hPZzB5kuA8qC_MQ4XZOpytyhV;`f z%GPr((>!r3>N=BSSCWL>$_LHizaGEHaH*L8L}ZgwpKj}-Ws!_|Q43l)L^>kHR|@y- zELEHLWl>}lpXjF>Ou9cj1P^)MTXe0inVaQPjj z=b`)0Ts>TDV*A#x!E$j$Teo_dsp9JE*1h+7y|=&r_hRna_qzPk#iLg2ZS8$l^50^H z&-DDelS*w%?z+#f<2rS2``zBvwT=|Nr-Le!gQH zbpL($UA{i{U8CZw-sZ`ZA3i+!qa^9@71{ZHj#BdbY|_{}yrZ2;WJXr9eDu$XB`MyA_i>o9pI7O=l&5<{VDGNF z-;3}6bkG0yGJ5W5ZPUt+%a)km5l-K9JAPNCYyQ@P2k-yC65s6~cW{FF`uN%NzJ%^w zC-L?Fr=S1s+gj}`{C(<`TYhTt)4==xH_x||+0FQ);{RFs{q;{jb-k%vJo(}L|6f*% zyC3%3{O{k|wO3o!G}g5)+j(WBt-VF<>swY8<^TWfulaacf4*+%EBU)SSyrvzUmsy^ zYVCNu>_T~SrpnrKogeJG3keS$zGjk| zC+DFJN3O~*Ha=scdeBL8jh0@t`qVk8b2K5{A}9d4QwA6udJNu?ks(t zQDBasyHcXvoU)fEeDAHYmA1;|l3GP!R&l3FEM{Fee`HOpNay+=OPrWPWTbrNtbF}D z(8ue)M#PjGx+$W`T}KluavRT0$aWH&wY>4X#kn7pZl1Hx^bOmKM`p){jErB zAX8)6tn2cIP311%Q&(#1-cK)Dc#EUk)s*98rAu4jS?=Rihh8;2deRf8Z0Q-#xOe6T zwfdIu=}gB@{+#Oe-}`7!NAV`ZSe4V2Ydof;JS;uf?jvZ>+N|W)oh(?+l3`)8_gPW? z)zUXFOU}%1U}{cMeCV}0BIzCDf~d7-TbJkD4GBDYRMAe#@`uk0pQtpaV4FEhm9mwl zZd&sx>p_lY#?=RorQh3_k`HrnXE?R)e0{29}x`N%BM z3cI^!*R~H=H#e_+8g@3o;rBtas>%Ybi;EN`7OvFHzkB1yr;qpI|NJ#SF6E}(yS&S$ zD~_kBVqxmdb>&ut=Ghq*oQ??&$0Xjc>zsVNk-JZ|gGFN61Ia^461#%7^Hc;mD=*Wu z`F4f#cyPK&q0_6dL-S`%YtzX2lJclGmw$=|N4)Rkg9W9v&x|JOGo$<)d~o6?rg2m)eSS+`l~4W@2}q7xA*_Q z78T2{y4Y5>D&F31<@GD&`sM`!8K%LD-b(n#y_q+!Px7l#?}Q5d)4Ihw*IDpc^goa| z%EkQk^4;zAHUXR~>?h`K*?5JiSuAeejR&qmDvj$-PGPvO;Cbldlr0WQ6GQ#4dmg-W z<)d5Q{R^EZyEG4G`egHYhOf}j?Of0h{mOg7N!=!=;IHk)r@Nl64+y=Jr{}XXC-G3P zwCU$hw>~|d&R&qM-*dStuWi0tQkf%1UfS1NYfemP66g#UetJy$alk2wcor3N&NE6+ zCQC21^xRn1{;%gV3-^BBw39rMF5(8ag3g?1e<>@X>N_XkfR)$d(=$Had%WkAjAzqT zhv?YLA6u1Hmw($5xve=>W2T*tx^1qk+x;JBukW8&&{Py>{%uL?tFmdDD^AVyN>HA} z{PIqi1kY~9uGSy}1+RVacMm#geVig->(Mbgi~DwV_`3g>`OC^~X&G4`SO53_k9hyQ zxfcKb+V8!UEtz#UY1!c~FP^+?e!f6PYPHl#uK-qa=EZH3R#@!&y|=n(ZJVg%Z5!w1k6$F(9ce^-wGN(jW@RS>2vQN4){61N@lwaYIopxC9cnXtpRL=El)1yVW zgy-@t-_#^E&FxlfMa!{6yi86@&VGv9WU}z+L6=XDDjunt${yU}8nW_YH3;sh>9xuBTv;9zEv%5ZDlZktOO5aPOAj7I64+i~%q8XmQe$H6VQyk{pIHz;6>CzS{)>)$8>Z9WI3OWQE z=C>4Wi?*C5)V6SO$7Ca07O|Xwviw!L!HT=elb^pl{g?C2A&nr;R+&ETr_z(AEdG;m z(MO`-*nuw>G%xX;5n3!NB=LhO^w&{g5pN-_iH*VS8#bL>*p(7`@l{oJ_S0L{_kSO} z{r~IxdpTFKe=q)V|L@;>kCmSv%XG$H_^P8A#K>_<9qjBj8sqVq1)Pz=bGKopLog2 zX3@0iR=uyMPdoUj zU7l%{RdqN-GUTX2>enMOyqQP!JTIQQBBmtDlhXPi{TJ72$Adb#$CONp*y^6hEN2z_ zT4~Bq@h)i58MDJbJ7+FEsj9LewkS1b%@%R4!ifxTp6p5caMpuCyb=B^PpkdV)z@2Rhp*#lTfC*Upv-vcmkD7J zTlKi7ZP4CqobamZLH~w>5zEeL*|#Y0IX|B`%X8j@6JF*5o98@T!_s}{b$W_Nnj)mpB>m#iF14#7f0o2~s)c@zUVS^f?!&dEN82pF9XdbHZ{0eRdwVwh z_4KtS_mR?MX;WR+w_-+XcS)7PCH;$NyiK z8DaYOU-FxJrS}$|R@~g3{Uq0OYum0E3$@=r;_w3;XEz^SKTr1E{2txVTagSq9inxa#S%ok{Qc&zS04@zV$>+* zX_e|S%)j|mc#hq|d*`&oCoPoTk(lyQ>qV?opyywSUxF6moPT*fA25w=PJUYPq9JZ&R_iYb&o&33!KBzk#$hWq@*`EY&s zg(p25Vj7lDo1nW$>(RrdIy(cF^d|Lgt;juMb7*I=fJ3SZudC(3J<7g@)?1%SPminq z-(Oeq{BZPYKY?JYh?r!kuRIvNA2h?|GeUYnYo-OchAtdU7;A3D0k&cDK2l^9`ubt+%x zy4)f4i4xX0hq{uS*{t zh`C_AciWvdaZcsd6-9lq0hvEE)LK6rJ(L)0zDOfwxgY12sH{+9ZncDG!Z}(^)3@w8 z`}FN<^KJL`-@3ZAVq>0w%J!~*-#+g%-exW)ZLOVKvB*4Mr~Yroj~7ob@IR`)KK=jG z{&h`x6(4G<9tRnFE!zL{)0Yn=T>SfQY%|;aHLkM&iUtEXv1z95Tu`;m-ff zBE0#E(SxHKg?}k(>nLt=&#Fw73hCK6Dac~uqfQsUnNKdCa?|nA?BBIOGK8n!AjW}h zX>p{}&cnw)`0rW9DDM3zP%kQS`&*fSd6UJH{ASGv`|Ig=%0R_%O4Yg@s|@CA?vI`K z)!$lpvy$!PYZ`4W7XuPkUFvRjc&Hls;?0KoS(n|FPIl`&k5iRQ6-f@<|76E!rC&O) z4=JUKez&x5P?|g`!u~mj+m^N6hu&m`8M>_C51P4l(mJ6pnQ{5XZkwkr&wR)cob8sJ zn)vsVwE48{(MEIrmQC2=`||0sX1mc8=%eL3eR&#gWF>GA5G)QuX(Y3u`3ptA0ya)Y6oK(EN5bef~i$crN@&)f&J&ds$TGE z+i)b%>E+gqCfq{j7c)eBadu=o@IhE-ozoJAPDS~1K8hO;r7rwuyZX$6+n&pEy9`8| zXXIB+{pQ+oGVx`#wTE=4x@X+u`6{dlyx(;%-g)4v_(3~({k~P)rdEq(yu7533T|ZA zmwL0jrE{@*O8TVAjC=DqFTSAX>quhcdr zkEI4j&Z+EJ(ih)5@AQsvW0BKWrbNBIwe{@3x_X}HCpK*=GPx1=`is@HMcVOpH~&65 zsaUfuZ<5H}`+t6YM0p36Et?lhSs-|(QdGf>O=lg1J&$Ft#9CSQx$^<=z zCFi;dbzH9~rMTJ&J)81W(=tKAt$8K8e9+bnw@qd*vsw}$+4_O+6kDR6OP)Z}YtBm& z7mnzrPV~Hy*2KG9*j{0(^ES!ku6XaSv2CHJZ*wH9Ji^tet)cYcXo`Wa1?P?pMw+%- zqR+(^a~FwC(^#Rc#hfJX&?6DK!pmfTk4I#!M6qv@EAF%ybU3~Ij>eR+(5%X0%RzKP5$8<^IGkE~83Xowf51wfGyWz&+ggW-*BK~6&Tq80vlkJ_uV}$sY zy){{rmtFb!*VL!dXH%Z2?XR+s*txv^*S}v!)GYL6Ch>7yzZU&^FI&v2#7y(;V&(jE zc8BXqv@YB9bfTHn!FT_T@Ty+_TKDs6Tx?(d+laGaZy$s%(VX@8w|DOAv#+z?9zECX z?w`Q%eck%)*;WyYzt5M?(c7MQ_SLd)m-Xl0Tz5S;;_t;T>+34(U;Xlw*?VvGTC*z= zUOueG66qcjSW~8jSgz%D<4pBhe1&h#S0>G^eI4%Zvp5d9>+rU0%*(htjqz39qaA7w ze_mVsMP}kb-ISHB7ORa_XR5MgJ}S-7TyF4x-sH-MPP%(EQkVYv!F?oUm8qPTN!POY zWr-H+w4;_S4Jy3#z454l;Nuc+X7$Xc*>y)-w!B~R$52J1^^)E@CPk&U`{rHo5f0MMZWZZEo*KNzsZvpQ zwb=QW1qWVmK9J~su}VSeqFPJ*hUSB%m!iKeeH~qX@7G`XJ2iK$-nAdQZ}TbP+5eAw zuLjna6d8R~`g8H_*Q>3!bfwn+`Q-RtJpO(C*Do3GZ@e_=IlAtoSlG4FoU;8^UVUws z58k*}zg2v1RT0asoSgkO^J@NOefd`Q{nfXi2bKQuU-|u(Pl-6$5ZbczZbVk3TBn!^ z&!%nbe|=DVUtrMKx$lnIu4OfESZWW2^p~~o>upw7kp;g4W*rG^Oj6+q#SW~8j)417d^8?9KEn1$R zw@Ex-`l)gfN4G$rVSLB_#UD~zT}^znvS(e(ESJ6RS$OG4NFSGDb*ETLx8>e5Ex{>y z@rKDh3wz=uM6HiaQ|fhEq2Idm!h!xNg^3@e7H!#FBh{%Imwxx1&t8_JA zN_?6tEzRwlt)$$R`Q^}uoBtC2r&!JUHUG|Sg>?R>|J zhadllsIyS=%GtWIOzPL)^>Xqud@=T0N-q7(u3dTa^%Wr}0U;i?#bu{Aw0ADemJSa) z7|YULQN8fn68l=qBGbrSmp5DZ=qO70yxaDw;QeF^w#6MvGKQyi*gA$b)~t&-mbCoa zrwof(6^0%QTyObIFrS>$b|~pxv*y9eJ43p)TH2;e*?VzU%$cNlnUi>zFUvn7IVb2y z*{Qy%%2!nk9WBla?%APZ)GVmIDk|T^zr9v-aa4+!gwTOJjin2wch!1c+O}}b#!agP zq6{N>HlAVOZ}m!Q{2j8Pg7aYFqy=X3NP1I}hagAf1rMz$ zUlrP(O}u>X*rNjxjtRfwe6Jp8J!!#q;m#CR+l4`9PageQTvBIrZBEh5QmxJ+%ZutV zQ6guj{it)`cGH?Am%m=`Z~y;S?p=!-uQmR4R}EMsdyQlLwyZ6)xmR09d#_Gwk|A+5c(zRke$`!{74H4QF5S=lj>!d+mR`colSd&!%fx*RIsvSI(6Z zns%Et*_?s-$|hFXMd~s_2lB|f8GJD?k1ZBX1872z*EuZ zcleF2$@{p-{||p}umA9j??;Pi@aoq`j!EoT68&wfEB88KwUrtd?j@hRQRaUvSRmn6 zh3cahhHRniuI#_Q{Yc@Fb2uHat!nMrIPMglGl3QVZ}1+hV&grzYu)4*@+a9RF(@y( zLl8gySTEDXJ|lDM7cUT~SK?$i~?%WHGx{>*Ukc)Cu8FE7yH~b=CNrW5lP{ zFx%iH3t`o3+`5zXx>}}mhvu&_oBri9%uSOVwLLt1#n-(4KYgcp_Oz$F&K)UA zPd$5hrPXIy1||guGxd&HE0!$@Gpfp%cE~*tKI&ZWf$!uw)*{_uZOMI+H`J;Q?`3$ z-e=``D#p&OXJ?~s%G}jk*BaimnccXlj%8Zz@#rn$-7RIaPrh`V|L)Sw6u*fddS14+ zA1+&;dXzWZ#_z1dT+LIGN|R3(8hzJ4U78k9*wv$UsyaNg?0L=ZODrWp&~63&qU5GbZ^;KYv~@&!}hKZRwr)JE~J8 z>OHpK-oDZ1_0lB1`7RTW?K%I;bZ7a_RhxsiTwxSFvnS2_Y|zg~YxTtvZ?cOlI`wbC z#GG#zw3mA--}*68;ojsM$9~4l3c8S6e>IP-{RF3Ra{XebVt4+FSxT&rwaKMj8Eml6>;WtINa zlD%@G$g@D#f1eMZyhB zX*AQKEoDv9yV(pjSr{O!Y=u1{MYE=W$@mfn5;|E=xO7r&j>@BQ~sf3MfW7tiCZes&){+xB&V z*y|~I{)^vLtl-hxbR)NW%RMVD9-B*ATTLaBj~}`)X;U%x^3`9j=Io7)ek`+Pa&>#` zuF|!;O4(MgHGQ18yv}Ud-m9v*)1(>Sm_47D(RTRj&Vve{5-U~xR$nM77fYU3nlwF_ z-BmBDsrII(p5=wy2(}dw43n0fJF~)HUuVO;45I^@msuRb3pYHQ@=BZet%QX5ukQ&r zmPfdW#3!utHh*?A)U5X{=hcP!eV;r#k3R3uT`m3egj~`E7yx4Lz%R7SML59Qkl244pWA)?e$}R^^;T)0lg@WN z*;l()=IiX~;?qyRHq7mf|8Yj$=-HgRXTs7iPhIMJdWJt(w~wOMQ8x2*tB~u{abc=)Wx#A8{91Z9O3j?Y)qgUIuiJXV^bOiq`Pw~LXDce7 z-P9B@V;Sf4=(!)70(#fvy6Y&*o6goP+qTY!sl+sEwpm56cxW)Aq6hz%S#QlsCpPy9 z)Ru}E@hiA9?7G|Hb$gRG$E8nmyRsr$#N@>xPVbzI2eapT zZ?vCLyf`)eWypMox5o1;MHfG_n)~kI!;jqhd;WYnJ%3;I_n&|NE`C^WKgwfqWl71W z?f<{sU-*9hua)!Fi*vW%Ht?{quiO1`ZmoGpNFx74;oCd!&GqBIp_G5su=wirA2-=1 z_p0rEqrd<6-1l|gZ+GAP@y_#qg~gn^XX-uH-Mq`bBGec8SHV@;{yyuc09XVmPD zxo0o?wlq4$=xx>8w2jN!FP^y`{b|>lWxv1uJe#sDVttr;vzTq)bN}xz=kZs)tvjAq zzePSehedc}zx!Xu?UvCx26eH=Uf9m*q@8DO-HKSx$NV(%yy1_Faq%>-TRq{^*l8;W*DV5mimD(*{{{ z7M#;^`E=%D^wZ@xI5wYL5Hk7orul_$c<28&nx@+vc=e!@$y1?jDYqHB?{NS|eM%;d9L zcZ~IZTzk!Uu5@cuR7%g*W-0!&H!hu@qIc=qj4Nk$zyJ3^`u{)wb;l=fKK*g>>6wo=wG5I^+J*)Y9ip?q$_Zz=3iJqHwWb>&vlW(tku`Vvg|D7!V z%iiz(?dF@0&fR;ByZrm^w`{eSbFJ^apD)7~<$JnV`u>>{VlR*0ExYS?_2wd;!*e?| z9!F-B$!RQ3+F+fa1x&6I%`1DNK&ztVV_)QaGxV-n}_Q_wbO|?B~d+W_5 z(eFhX9Zr_VbQu;u|MoO!=9$m3jlMJQ&Z;+&?hz>p+RoU!Uc2RMN%EbV_p_#lo#DBHM9qYx?2CX;fv?K^ zvd;z{QVOrU6wGj!qac0GyVZ`X4fT(iN%`Nutm|&5F4z;)eK*DK@dT!z=GHAxa9tf>-QT3dw!&0{YY2n!v^%VObH;?_j=J?y<*xc=%-0qt8 z$Nrsm)hoGiH0j{QHMKS+5h5Kw7f2}5W|937vSS|k8{{O+n;%y=lF4xUJKm7OMQJUw^*zJjrHFiCGoA&qX_W5<6?mhh5 zd~d_;m^0H$TJn}}jakq5|M=$}d$uXvF~5BD;tKcgT{)BNs=3W2TzV6ZgL*YnOPeK5|A$q47oMrw#z24+>@V3xmuB4?-$_9V`c<>5r*mP?~jfkiu`~LN*)u}h%)|mGd9bMHm zt7CTO+LpWB0vBg@t(-JzYfQbw%b7w=GP9R`yum0et~2qIN2c)GgjA__+Sg*Zb}`E< zs7soj^x<;dlk{L)uE~D+jLa&}kB(7vy(aJp4(`4KH zV@)%A-JFBXPPNHZd(4}3R_ln(nXIQh2A>|MYFwM^w|uT2yH?fRyyz~=FdHg?ncyswZ>-WcQ=kG7x=r=3HDaAWQ`Wkm(_uq$?SFhju?Xbnl zt-_nH=k6)_KjF-$mruVgxLsFexs73|js5O<5e*)4zIkGkU%vVDOKoe0QP1MCy)3&f zbl+^ViQXPs|MOo*-jS~*p8DBWlQ+Fpzy8@b?er3}6Fs@|ixQ3Fy)w7i@SeK#D)Nm| z6SwKVq(BZ)S?6;3vKPO?w(@8%eBnN05np(d=!D-}(?m*5?=QW3%ME|OnzrFOfJ5t*#w6Iz6gO~ZljqY}deOtmrx#bT%Jid0BsgrBG$=36A-$LVW z=)BUXjPq$cdcGjhE?4)J_LnyrRZo;1Zfb=&uKe-#Mn2EC`&)Ir(`4pK8ChOeV!WVu zR^Y$`^OdqfHyY9)GXt2v{d$l+1&yTz9Tc199S@Zd3xZTHY`>#TK zbGAj8Wmop@Rxtm3)cpUW>ihM-=e~aV#sA-@-qokOuV#HayT9h~qbj%anLC%{lsL1` zKRf;UWJ#7+YL|abn|ZsW_H9}5K9%P(>HF$8+|S=vlkPF|-r{2GL`+>Zv0v&hWUv)0W;e?AIt>8ueAaaw;#C&~8goh-qtSxnwX zInu+7&YnJZH(P$jB&AikUrnO>qQV}WDpqMv5&Orw?O951qiCjdZ`fqfmr@^}>F@u1 z>+I9X^}qV-R8MAyKc9Y9<^NUveLu?geVOSiVqa6WGfr<&e zug9;xDpeBbe?R;G{QGkz7XN;<+}^!?@p8kt=f792Rec;K_4U@(io@r+@-8n+{B-3? z)LXXYEoEYV_WnJ0aD#RHy8DX9k6)W=E!(a;^Ul$v)Z<43lrH8c2?^h{I3Ki~OR2L{ z?RAgjm&!M)mvTz4?0EU1Wd1e3^o2*JopkQ-**AORlzNryGj|mn*~>njwRs~}$++hV z{|%8p%&NxGET;mToy}PF_~rcqQvUvZRtzh_iO(=+5i8qeTM4Uz}4mH^*@%L-+v?H z%DUrahmIueo3VDy16$X7_kX;z&bOHrbZJ&@E?b4IWc|`{IJOVwB^(^}(A%s=N&MZp)aq((!uF|Dsr~61AZA`{zF| z2#jbw(bC)1pV6``N>XQ5uAXi8T)tKElbSwU)yS&PGuXxRahs_zTdT`fjcJ8`JM+S( z6tZp7$>C;qdvSU><81Yec~a}Qoc)+3rX2F@eyV24>zx0x_jp*(Zw<(~`CVt4w|H;$ z%J|zc2ZhcXUtL#x>c^MxsN^qerf%t7xvk#B=cxOeb@g#P#{aG?w^KJvIk)6}%kh)D zYVJH%Z^=EWod3va#hqttrR&aSnBKS%zN>Vv$+W)KiEnN!n4EmtUhGi(`p1{USEp{i znYT4+gMV4O>8HsHN^Usm)vBL7n)9h5M}2P(Tl4FmSy|RC7Zp$cI48C`|L@hq@-~wB z;?HkVX?Zh(Syl<4=%X=YMXTUNZE6H-Gu@UxG=7 ze1OQE6?5bLXKr`t&)Rz{=v4ZN-xF)igfHi+ztEhteb215FVw5_&F30?}@ z(yd|I%=g6~ZeCyW!*yPz$1d$}55D$ReL89V`|-_7zJ*_op4st2OzelnfB%+?R@t*F z-JXWzv6mg%vCw>}R$pIA?)(d>PtF}!B$bq&IxSo2B4sDln%v5Lg)IN<8 zy!xeOmqW}=TVh*gc>Bt=Vd>+_u$u+pp(r-T(hwb9?&qd|RdD z(|-JH<@{A8$A91b_BH40v&El(ep!{r>Z=iYW8a@U-Q8C=-Ct^7mT`2>yYJt>@0vcj zGKbY^ddk1Uj??9e_g~*vZ?mV`B*T1CnXR3){X^UpQ+|}TmI+XT~{CW@&DG{ zq|`Hedq~x4`N=meebruVe4jB~tUk>=-gk)C>W)uZ9(&`nsVjx$yQRNe zouU%psWsKKyXNZOqV<<=E#qokR(IJh`ck zeQ(^8s$YA)O=6iHl4B`z?c0t?nRE6eDPBwNzn^CoB)GZYS>oNcxmPDI+axafYM-Lf zRThPy9H*e2Q~Fv?m`ZK5U~XFywK1HHGs60a z+wHgC3eRTVs(b$_ZSzi>-TSJ(pS&D)w=C>h_Nh~!p7-raE47GCJDIlY=A5gq&py2O zu;72goNRT!`Eh;LZ`t1Ncs$#6^~^c(XJ4GqziSq9xZ*(pCqt-_P>)XvTJ<4@EC{d zPfc3EEwGtMQ|goCy#ypzVM;=+ycAPA8Ru2=&*0ilxUc6SL?KF=&9}J7SDN; zyR~qBYK-Plr3r^L)`^{t&`;ERByss>%mZsd<7UR62@4~pC;s}`a_nxwdx0w|$0kYq zOxnBlsHysrCmXN#R>=xGu{JN5d4W|=TKuf)l`ffW2N`6JFV-)%`;^qSbFGxb7KXWP z`HV$}w=CFlF+)ks<+DIApXH^kyoYbht9^A z`FTGi{w|m-X%-l1aN9riG3k_IDi5 zkyo}~d~AB&-u!X;Xu+Wvu8Cr^XDljUV1D-DtY~s_+{b{{(|aQ}nQiOscUe-wT{Gw7 z++RjJu1=X#scO@BF8|3f#pjiQnT7M({CKWkT@kIh>V&uI52+0=^q;>tl+T*Sww1N; zNXC)H!TGlP&ayb{?D=7C=vF%YVVRm1gS=mi?Wb9j?PN-e%9%_|mwJY@tu|#_JMoU{ z(}_!#^_ZRMdKjIzxM%O8#TUI#WKZDuc8XoeXV0x4a@TL&J6kdPn9mnK%?od~`k42- zxvRH1->lZ(GbyrU_RKpzX0Oji=kGV2e?P!t*2h^3KhMnDv~=pyt*?95Oqs^=B5;D# z#y?d(!lz=@FDQ2PF2B6`pL2}Ex_k0l{%+iPIEGtz)*=;+pBhJBMFicres|Lr*0>_6 zlUaM8y-42ut*4^Of3oJ8(_g1mOX!(=Iyvh#&*9mu{YFzhe*Hf)Le=p1#SQmjVuYks zi!}&)%bpm8$1pQ|k}2q$w8dlNF{SWJ-vhH-s)GbrEuVc!f2@*h zbJ@N)^pTC*bjHV<47JYos~R54c9EFswEXtiwR&!239*I&%I@IQCE*wO`w zFJ?+}F#gZ6=KJEf_+iJtTUlF|ZO&Zm=9sDLZ5~){IREaIXTidEcSO#9;%6?ov`;g; zeOKf4iOMC1WoO)(+?=wmQ=I)0W6grf|H&H;GM$_%{>99`uu+!#wK(UNBb5wQv%dTF z->?1@A{W2#TKb-QW*!ID=sjjLvt0Tsr})$4UFX^h zE6i`z&RjK(%|MZnzap`@$&9mS-t^aH*3OlawrN&cE>>LuyfXpj#F977PRg2 zI9u4kKh-th>P(HBY)4nD4V&#egU5N5hEHz9!)uFSW; zp2ni}@=nbg)zr<4Bqz3u+b7h1U`^*Xy5%d zM6_6ai>SlHJA8}0XDu_?XrO)Z^VE-GUH6Lq>Fxcr&M^I{-0jlhE-tl-_S|d97TK?6 zSF@FR9Ne)aQ^fUY<7%&YCfi;WrnH#vYknUQed){Rii=V@!kLDaGBIU)?;T*@8F6TO z%0zQ3q2~1IDL2`k%Dh#5aVcO@+U*-znuYo^=RHroX)$AI(wS#6cXpL{{5!I*koo?K ztaonjc;b!Jik>PoZSk9LZMC!i&rF%e&FuA`zeVTo`uWhI&RQVi-HiKrH@s7(%&409 zAtTON)$&h;wsF*tBTel^E3Q>{iYGt&oEi5{{n6_;pQ6OvB(F(2n z8`k^ht|FMwRqE{ z-3K%$-|6X|mY1dSdkfD~g-uK=u6I?LTW{={ct6{oJw{;NM2A@0sH-n;23Xz7DrE`o zYwCR^75#eF`R8JSx8E%|_~LM9g@J^h+Vzx&9J(jm4gH(@5;A!=IevJyS@HkLZQ{vE za#m?&4S9R@v>e{B2|v78aJlGoZhXb*GvTv~81H;zKfJqqe*F5dDH@SZf3qy*;sfXC zWG#AeMcMw03?s+qs-xe^7;b!$pDnGkrSpQM+0Ku<-b`A5O(y$_okGv+j4NxUCOy05 zUdMC!(junPMGudcNGlspdSSml|Ji&0@a6Kq?tVL)!#L$q+HOP9UfIWu%PjuSp33UI zLtwsm_2#(Q>$|k{PoG!0k+&xK%#|C#SKabeOgn<7Rjs;XdDi&KPve;n)j0D1`3NXx z%v|YB6QoL)G0!?H+B_y0ao=Ywa_msnNUk{$t(weD={@ z?+(a6Q8LMVylK9JVVbw6-QNul^=Gt5r0>2v^;PgYwO!Wx_J^e2(30V1Ve<)p$jE6r z?epoz+NB)do~0EPTySV{b~IhY5D~Tg_VWAduV;Vo4p0^1W{3`Hy|(em_InGD{$@YE z_^&dHRQJ(0v+w`-l~$}Pk*m5zPBOOh&KoA#_Mv4N(>X_-SvPxij?F)* zvLU*8M)Zp5lFyx4?VnCDRX)G;%bk5?i}RjOnCWDBqatXt#IrM-lmGg>*raasw8%xy z_j=~KHr5NXW~?`3^pIwr>T7t*I6-;majB)M8~CQ}xcVUBt@qo&LaCYOf2VZry07j1 zY}SU2vu53C(Z9BCf8fpnR?$9_Z~M2L3y}J5Annq;@A3S^qs+diJ{sPVp1EPBfcc`| z&$EIfkCldd{1n$q-5Qly%5duDiR`7Ceg}^3lgUiqwdn9^=~eT-XqFb9n72)D#q~4Q zKhA8QIA@#2yVBirjoP!j%d~c0R>{<4oI1mIBU{2;{R5|FEROknPq%8>%|A=y|6T1B zeeZd{=JWcxAI;`Xi9$keT7T`^U35Txy0l4MM$2PE*Gue|0<$+ybZDBFnB}Ln;POiy zG49(A>nDEq5MSLJHTRhJ+M@zzM9niI9t%tlDUr23qI{~mP;W-Eps4YU(_h)*9eJ1a zZ908RFtFk*3rpeBu=FP{__iEcd^Ih3as2xuLK==AeXM>sjP=74 z$JZ?=SAF69WDjF@jPdbfhPOi>t)1I_+AOPSf!xjKOuzZoOc(Ob`+nWxM@(T`rn#=y z!%usTDm1?NRb?gfu2@uS?%A}%3q`jr(p?buzK|umM*irFiE4d2-g+7a761G5y#877 z{NGBu*8l(g|C_!+Yf^4>Zsl2(<7;=XjZzoced2R^hToZO=KbRQb~E^=tdfx6DciSP zvwLNxLdNZ~jI^WIl;`R8b^n|E$n)u%B`2DX#I6oZvfCjg-?Qser}m`E+dV%|TF!Il ztb93lNxAQ~ujlRGzb{q4%vwELX0m$ErA|fniCya!x0`6MlUOE2m-e!TC4xG_`qO=R`++p7&J5P+L|o?bTLe zA;!K(Gdwo_U_Gat$ogS^&`XwIyE2}2?$>nxVY)IixooFWipOr#@2b9!O`iwGoV;UV z@j5?OA$Q`8^~0vW zoci|0mVAo;ceLI?-E6jB{O`~8`(t#a3qOB8Jl{U^?*E8Ax2-qJ*CZ%Usob&c)Wj~P zhFdbl_a832f9Ba|rt++CR)$G}Y0cd~pWYL^m>)Jf*KpG9^)j=2SKGBb2tRsOjD=VI zPomO8ky#r0FI`0b{@SIxfA%USsdJ}{Jh$JDVOSusYT;Lh{FiZTrOMu&TN1OMJz(;B z(x#~}>zc&E!yA3KZ!Bb5{z!E40{11KX5KMB$Th8V%g&+~=|8Pno(M%;kefQKE2DRb zkK9d#wFQr>YbWi=+9~yzv2bGk^vls%cjn%&cx+OX7w4$*`S8)AZ;jD&*1DcAx^{6x zv07Gzp=8i@?~mzo%}>wxqxF}Ef6sRFjP19lOuwXi`@Vdsm9Ej|ZA;5cCI(D6za-i- z(6BtlNb~cls%uu0gX~;&+T%28PtCPHpRe0parfZ2xn?){baJt$qFVo&}66 zyOv6BH!8N=?)8uJkeO$W%_3E&-*PLb+_3lhS=D^KMDwNXi;QWn6N92k>{!J_s|y9^ z+dli{e`(+6x1~?oZ-nYLWp0j~J8#|sW5(&Ga{bnGT zqG7n0V{%_vY3bFs-(Fg*4a?sc;j8xeV8V@@vY^#JcRxF`ZDYh5&4{-pyZ(Gm+c<-9 zdDkZ0b=Lz|^L*=$xKj0z>3(fzWcWqHkT)N8OnI~a*hFK=;^f`AU#s?7FW1j`CjI%Z zo5@!54V$lLl}Vq!@Nss$e%R-;?X}Zi%@ft^G}*0ezxEcZrd-;=)k>fCpWge+lQAoC zU6|C*mB%90Lj9+&>b$y;H^VE!_`an^R9V~tw<)(AE}vmu9;%XDHm_eezZKDUKTXa2vwt;NXWw0pmvi_ky0{Z_%E!dEwK4{L<*9l`rwMniPH$b~c}4TN8voTr{kaP?FTMYM>#dso%ML}O6I!u}vTv&! zmlSIsO|W3(m?4)x;q!Ucg^^#qE8LRy{QdZiG2i`6ftc9uFN;;w8*QZ@d9$WYxfZ|r z3A|fmFXwacUH8KHNU@$QBaMP*ccd*|Y=3KFn>SZ^;U?ps6;rux z98HXG7P;_q>z;x)`-B|1Q|j06zyA8q+1>pn~Jv^`b?NIK4z6*)3MU4 zieKED(Q9EV_At-m^R(}ZR{Z?`lQmtAb>}K-xOC5$%jsnoxjgy&ynk2TZ|CFt_G0>% zQ%{Sw#@zZ@KjmEEyXhPHX3u52oN*#E=j4hvE121jd%7)F%xU)Dy>-9+f|!YRd7BsB zUnDPaHjTS0_ImcGuA4=ftq;S>-b{)u?sW?ecz?suVs%aeyYmIV>`KBFzW z;TG%svZ$bfUxCKg?0F28$l&2US6zU`*HLB-}?W*TAlXNl1{xdOQh?``prj`6lRtF zuKvCF@WYJr;a0W3=jJ=Fw|_GAeNN)uHv5hYSJip((VsF?@9%ibt!wl#U#6SsfT-rd z;N>sXC!Kt;nS1deudjLA<^E0kB{xMnBfHYA>_}IzVM6QCr1hWjE{D}x%{8knJ~nCX zi60qnbIeoLRaeIrC2iZC_1tMv{ub@-rifde4ZI6JRNBoqk%>#`JUrF#=QD*4m7**l=>vzu1zqEgfp3*GW-z{tS{^(q6 zZ{u8=7nJ{O0=L(GXSrnY&3|H35Eyr^>ul?*BaZa(vyN_yclW-QvqnO+Va_X=;6v_vw~Z|FVo&qSNBqdJY^j z=sx6@{WayWM5o;?qh%`BmIz#3q?cDA^(1HOH;#Hu*_+}eQEO+Hw6)y-&bgJ}B(yzV zK+Pm>pFnis(Rn7!#algJdbGD%?mQrUS=ipf=H`9-1*vSp3aej#t$LDk{PFCcHICd< z#SRo%&h{(y7T40g^oz1;Qxkp(9hGo2$BSQu@;o_y}?8z=So*YYmk&EVSRCKMQ`aV>Z1tgG|AOc-Qe zziHd{?q`Wz{H2Rgx`&^h4XKc5@^tX>yji?E_x0qpVzI8?nm?^m6p8}(6xzir&rVl9 zv*hKY*Byp?Y_BIv$DQN&y1eJ=8RP%b_f}nh`6lb%|B0-Zx;A7yTdV)Y@|^ai(kqKz zvYx&gU(GDN{-<$7)w6IaE#UQT*J;;W3qef~NhyYaHb?(53)@A^;N`KEjP?C!#< zpvNDl+}jj0N%TfYciE5Gvn@CD`qXR>WU@`V_4oE$Gu_xv>?JXBmalfref`yKv$=5X zx}HCG7EB86>*{@wcHxw8t_Htwx4`>fZ?*~SJn-w;tbKQl73S#+ShBEn+_5kbJv5KC zZ~i7NzAJjHN3cR#ovUx3FRkeuHW-ize@6M$L7u5C!e^P=U2X0;E(+N zW5=zF7Y}A^d49KaXU+TScNc;W_%z%+^U=vnnky!{>(+ekqbyqeC1FqOtYxc{Eff5% zmsKRL(>lqK@mR<6y3aOsYo0Yv@0Q>H`zn0@s(ND?zWtx3t}oyy@#c>E{3!3|p$S#u zsTGTbrrIu;6fA9Vbz9fpfPJofQL*_Zk{_d0n%k@Ic7GIE9i{(w9^|tu%j|plV*Z?azmKTLS=iXf zeV7v)p<_FD^Jed=$7jzjy1Q*lei5^o@7Ygv`~4eL-#&|Jj8D#e?)vul=4q8T)A^nX zC;nBoTVBx{UUkN$H8<$omrX`F3g2@buBWIAKTX~maO{bSZuo>lA#P0zP90iz*wO!y zMdIa6w{FLMU{cvFvP|`(?yk2!%`4cI*+2ZTVOX$2vs?WL{{fzyHPgP8SuGW*>b%Rb zgzLcNlRGEwl{EgM)9aMzY81CWQ}X4cx%1<<-L_pHxyjAxb+_1uF0<ynK8|c=ypJL$^dH zj(3%D4mTbZ+}N7mdh=gVlD8V8pq&44_I0fb?#1u@D`B5_y6~$Hk6ih?E1XIfj|CfV zl)+*ge`O>R-S+oh}?NzOA}*Iwww=9wKQy~TUpynC{I-y_UUZkWAE zqkFl({!hpJlj}~{EV%Dko?`LlvVP_6n9JviN~d+_>sC=@-A2c?7>S z@Th$8=*6rTd!>JOZLu*pWN~BGgh@B#bc`;)|Ha4~Jej9BljoDi=CzdS}ESTw={3(#-r;Fo%s@y(3{h-g|F%Rv=0;Z#4p(rt9W6l_0`v<35`OE_GdgxG6#_G!_b!DHt%Gwi^yL0FJqQE{w7xtUe7T1WYJBPN_`M>k4x|*WnOE7#86Rm_J9)D8;fEX>1tK5U*fA&mdi5$u%%n?zGylBy zHNN#pGTqkw6{eR?2nByA^lcC~wi7zT+UBV4P#JRQaQ}{ZZ>^#$lse*1yf3x3wU<** z|KZZJ^i0J^-n-F7USGtFEKf=6)XrP35X4qjP;lVbwF?{@y1TP?amHj8XY$=tyxZQ~ zEcmqOON!>o#rY~maliH+yydWyJtwVhT%p8@ff+9H>!{ZHhd!w2JesM1bka`wAOe%vgVPnE#MD z>R-Ya;CPH%#(hor~dP=Ci7YZ0q>%W+=CMDMHOkxH-3#l^!@ zTH4!{B@}-MfBE|2VsMq28Bd}an~+>)&Z19O-d^gZ1G4MWTlnmrmO=qsZayhP-XJO}SznnDoVpU#r}W2`SKg zGoy61>v5@1l}oHX?d#T9cI|CR#@*zrm+tvj3*U|2Re0gVt!1~<7H2*`XIwKqKKS$D zJ$IrGEq?efSVmN6uOV|!P!-D-ErId_lP`A$<+Z(?ntgF&dhAmXw;&0R`llcC-<91i zk-68?r#4x$Hd!@TiT%GPf8RSH`(G`N9h|LxC96snr)_S{n^gSextxaka^5WymtVGw z3MlZ-mR^)+ySe>Z^J6&%_jx-%ZWa^RmM||xDZt1skNa!M4%3TT)8rQH;CREe@3Y+R zAG+U+Zo8dY;S_U8)`P!c(TQ!G^AxYg&Z@D##TA?(J$g%l^FY=~Ot2q6*blc>U zG8Qfd&9*!apLc5fU$VVCV0PSEvpYq1ehKj%yLQc2Im+#J|51*U)g`-QZ>jBgpVhtP zOTzD3p3j}%zVm0yEqpQW{+$@_8CvOnA7c)OvlsABymM(%=*_evpBJTr>{Qwq;0)zkqkF~D6`q(iz|Y+ zZF;JAqQuHI=G0cV<$)%%&+e4n8+JqVu;K<^?Gu*A!%h`)pJ1=n{7|R#?3DMlW4g@0 zj9a$v^ojCV*!i(o{B(x&gl7^08-w&GwpqtDztS*KGm+|B*R@yvuebLS=l`t^G0tL3 zzDSv@R5WP+B8m~2Y%>|QP2_CLkc z=4IkV=112rH*NecC-?64pZ}kV&fJmRbhxcNZ|8yR7pY%l^7EFJXdGEoqOmD@fpY4` zg?&!XkA+!Hy?NlpkBz}ozfSA6TM@y|-Ix03z1!Nu92fYkv{hIaB{3!!*@V}bnJUhH zT$*)m=7k!W6WrSxKRA?gyCgfrHT>?gn6cBobc>9@gpR^juO~9~d~2L#pt$vBRf~| zzH4Q(Bm4VDGNsK5DT}L)8`wv6+~IaisL%GZkm{}bIlbPJ!(yXd-b>pn8HPdU?&V$H zwBSM4qGcUd&t`_^)*5Skvfee($#9$2eVZfSs=}@_fB*6=PBhzMU65Vgd8EB})wb>K8&hxlS#6m3 zY8qchFMlgToumBI?Us9scOIHpn|WkIM8(`V&)bZ)I=^^-Mpzl|@{U`k;TCq@GD`Mo zSk$qKcLhlzCY^pOHF&Cenb_46=4_7DjS)BTkP@uE^wH90XF5Rw#ptbgJC`=MHsyE@d7QU%|8Cy-2`C)k~|EN;@@jxGp}Evm|}` z+UutGeTuv6ilRg2FA@-Nn6drll}y94Z)HBQipRdnDb)?1bTjC}?nMq0?PmpTI(Kj0 zTdsnKRo?shV#F@(T)f!X%5LwB$Hy%Hb{Y!#M*UJ(Z*Q=gps!T#H_fxsT2^@D)q)-E zvm|ZRzAVzPT>AOo3ZMY{{oU*mpE_Bi!MmzJ z-$qC&blT*Vjh7GnUeJ5=rI*Phw~~p>`&XSj$T-n!l}@Ti<2*4LId}FIR_ZQ|**44e zRK0p!SAD`!hHZyfozP67wQMfes<<6~hJV&=T)N=A zl6co|=kq8F47S+dWOKKOJp zuNYHrpzEh&ZHs4$d$Id@?90h+=V6fBbp3VW{7spUs?I&F>)Jaz=5A+$*dkZ|cYW_T z*PfpCH;d^sTdCs%)5tH*qQ0?eEnfj0mq6nMQ*nrSf?JH@Sg=ZHq|C^T|27TG_WW3)(mpj85$6>-+ZA zY+-uo2GQI=8-Y!obNKfb+1+nYX+89-z+wX9%1@ha=BTpj-#YZ7Iw*c=;4eeTg;$ow zY;ogMe8AG9bc@0IU_j=TGp}M&%CEVe7eAn|(In@|jmy0zU@|JwIt-f z_OUn5C(p|2b~&=0KApmPa@P{~r!&`oE2`Ri&0Bx(kIVLde`e(t|GTw+Z{207 zhc~0c@BcKvUoS76{dLyg#d#l2pDo%vqoFE2uJUQC{{LIzvxuUoWD}JCvH94I^RYEzY{yJ?r00=P6;n*jC&iuk!9nSstr>#O%>wH>*`wP+3D(T zT6u5*`-zsdH*&W1%gw#e>>n@3f z2znRqO?S{|SbmW2l-JzTvwX}_KId3&jaz@%ExX*`s3PZV$HD`ahc+ikzjm(dh~BOF z$L5c)vV6{amn7{ee{a9#%c_uz+VgSNN+r!#Ew6It3tv;cH$N%$NyV47v)AtW5xG?$ zR*LhBQ4_0HunbdzVSv*nx8_Z~2cB+WXje18wD;NG%V9SzoSt-V*>s_EHCh^1WfSv7 zKQCYMYmsu?*^p~HEcqJEW-VEN_>I%@6U)~ZI_}!6@^^aNuOq)p#Mgw~+Ae?bdw;W; zp0s#BrkT@>bjHn^zm3)0{Ttx`)2p)pKr(&(_WrO{&mg zFe&|Uf9ehHbBs6Ut}yv$`2Ax1v>rF+TdS8GIrL(-PkYBK)AihnNjyR4FNiIgeV5TP z{$6)^=9VpWOQSYTyjIm5JhivMc{k@>H75#XlO>pE9DdmF+-l~8)zJ*8PHdJECNsBWHkyj)P15|; za!SnmM0ugjOhex*TZJQ?7M=_ceQk4M_oFaon=?Bu@a~=_8szxxuxY^dhpv`wG0b}& zM%D{5#i}UmySzJT{F4UOer3!tEmDeg z&fBu;`uY<|XSKKRPB?M%Wq6Fs(mx+wykPKrFj+m_yRSS|hpU41%Pi~izL(Sav`Yv zOmcf`RvhIQK6!KGv^4(xzrUQ#-{-vl=bQSn{(rTv*KU7ze}8;$bt6}T0H-AX(M8+x zIfW!|-MNucS&+5n*5+$95>I7*zuBwS-EZb;Dx?tZ3kKE@so#^vk87;Pa%PJ=k%ivEhXSZ;gFMW0Qoxn$}Rbg)! zK1LW%W72sgSfV?nq2R!rM_!E6o2QgD9aY>WIOS#O>&Pc6U(~pc8qSmyD>>tQlPPr9 zj?`nQV>v`_8ed@@l!UYK2IR#kgb z^^$1LCxI7!PT3T^^-uJylQM4$g11QS|M%;4czF2Xy%)plp37g#-}i6#{i{Qu|Ht2uv9>DN8d-v3$q%k27}>+9zKQ{}d?wY@vD=9dP8 zv)G&hpVgu1A#)pDWYZnp?4^FSm-*Q?dJDxWs=TT^^VIvAbk#w(BiR>TC>K9^rS|l8 z_O@M?38^s~G8u1XKR?Sjf7dqs#iI6d{wEEh%v!hntqnOXu=W7o@#O8CMQv&J9oY(; ztcPv>Wp~HzHw>0ATc)yM@70|fMI6;xi_V`}H=~kKWzU*}@3uFe{QM$l(>kuVtQVA` zE2jlFH7h4?5pZ&0-L+)pWO>i7C6VF*+kQ@8dT*BB=PmKPH{2XU-T1WEls&W(DYfUm zw0GIw33=IPUmg)n(_wd%_c35|S{o#Kjh*ZhY8`Vtw>&>`OoHd3(!B-l zOsB8RGw9e-s`(@AM!L{Q`OL{kK`xdt)Zpt7IRNu74sf8NK-7 z67k5ZdPlP!$8|3~@KI~wmGYzAms(Y}cG2H54#8-Mv!Z zv|xeCxg@WPbApesS~`enY)~*VX&1P7;gG^{56%>ky9%j{rtONR%vK7Y{I}?_$g|IW zaw?#|hxY}a%l-*7g}#{mdMKjEEY?0}+B+Uy*C!`SQW|V$UXnd*^zy67!^>wMB-~#0 zzIbjKx6hoC6T-VJ_7*R`xU%`Y!ig()TO9&Iwz-|WlX5bv_|gG!#tq?K-AjFX93`%c zm}TsLdwlKHAI;k=q_VfC$cT3?@YIn|ko^93{UHWX_ucxoT66hN*IxKh)GLsn*6ktp zENVXA#LaH^JpQeD7IE}hb7JzWyH(W}vc5^pe%mJZbFGkQ;H_8Y8HZPHpTs}IVUl1F zM^~D-LO?@jQM&4-xhnRNDwkF5b}Gg58;6Q!E-d_A$oVc)Ide@@o#`#ds?7!cUkXL6 zjK21)$tbL=b9G-ZrGH;0^U^DQpPZ*8O6c!8R^$D}bbtFp? zyHsa9+;`~ll;i6&{!N@dv*4@${pt&zYq;H00~G&Ha({JecHN5Lq?N~67Ffnk5h_~V zY<4|smyEnhi%`ZC+qZm&3l{Obdab?xbGhX0+RsD&Q>^ba6&+OaGk2IgvG?uUuhw(* zav3$cit0M}T)O)9=)XU@rFs4w8HJ992<5WeJ>AB++*4eq99bOj>O@iE3IWHH%kU*vexX$p4c6zsP&8?`ILvM$r>ZuCmx#uG8GrRc(hP% zoegu!f?ol?VasB-)mBxh9Q@|jm&7pZ@T9M)&g`{JtK6E;2_DQk5U}9v#?Py>TIBbt z?zqe`_gh-Xch)l!CNX!iqBPF@EJ&)kpt&qQYnkcV*aaWH%$?}VwZ(a!%Y!KK7oJZ0 zTJHw38*HCFJ96*6S?ANgwA%C@|Fq@WYtgwvGp7aI+rZ>_{%h?m-71DBe@?JZ`dh%h z=-&J94=XiN-hQ8cLea8{W$~eleG}v-ZJZd{bn}5|>Y85L+FhS|?Ov~{Xzpmed03xW zq0HH>u2$B27W<>Pv#ZxcAGFBpog}-iQRaI$m$j3SO2tyn$Eh6MA%BAYvz|T{Z!3G6 zg|YKn?~RJ4BKtbAy|od_cLTWWG}ko$S&QbDzq`${mmVvnFb>q}tU2ExAq=$=yx63e-+W{QA31uW<9!b%FlZF79w~j_KWC ztoU;8o!r9~>5Kc`-?@7)Zu-09_u|scUdP1y@3@h{z4r0O({>p%gSH%+Wun^N$Y;Go zqM@^qL#owJTzq5hcSmnxa|-BWCr)P#o%ud`co z!ffIrrmu`@TszbNE*O>)r$ zTj}hVPp8NKdwc(1?yraC_kQO8n|}O%Q{9jA|F8ewv^S?dW7_14UHLbZ&(!Suc+^ z!M~m_uY6W_%r-{mf=#96Mx75DO-mK?yiZS0EK4(lh17r(ilq@I?oa$uz+Z?D+*pFdT1%0?Yo<8dWT_35%F zfzeNXE&FUnebHsH7#!QN^q4RApGBoHNOc!{^_kj_Hak z&Ey$d7z%vkJ(PEMPFz1}b862)rl%!)WGCr;DXpn#U@@9lv@=cdg=%z~;uE3l(67pS z;{Jw}TQIS#ypmA*ex6^S*^--Qer4t}8_nQ#vCf%enZ`*P7*C*A2<$z=j- zE}dU|QEsPW{T5l$5lQU6ky2UjFB#l0OqnChcG7?0CfEaDQ{PkcM$aH`9`t+q_rI zXq0okFQRwRT!R11-i%i(b1p1N(%q(aO=a)LKYzN)Dn&d#Tz^==V9>CKXP0A2n5w!nwiTVdK{W z8ImEhv~SG4xYz53#E*m@{(C0s)up&Um$=)1QP#%NJhnq9pOZ(?MsC-v9h|$OR-X*} zA^F{9`Ei}ZU5gDqU-H)9E5GXZ-155j-|NoHnVqjQ-G28^)VA9k@wH#CX4UD%Z~3_O zcI!EAK{0 z)@q{-0+|yhXg0Mw>L1fsxOua;QMjMc?H+gki7%RD-A*cQ7BHUhF;n_&nfa5AJMFF< z)U>UuX}hE+E8t`y(x{%~F>6Z5(F-q*EW4F8U9DYA`HH#8j^z=pCDwX+>myPa*G(XACt}MAQGlfrcx8t@y5f+WYHPv8(sYUsvycoM0yK_ps=RHVchk zswov!d$-M>J}2qSv4ji9-Yym2@F@9o@vA$VH(PC6SH_f5eMb{DgS)Z(+72t^BZ|`9J43bKH;_h#pWYu#+fE2K22=J&&eAvp5Heo?f0LO zL+a}76BaFMnXq=^qE+222mC(9hE8fZH+@S}#)Z{4ZnkhREZXGoa+=~czJ&X;ytS(60STX_6`j&IHZnu60SS{nEv$ z(`!qbZg(g(v?;98kcM(`)BpNcqhGj`_&)c z`Cd9{*BPuxG-r0|2)$oyl9{sFX{nb)N$QTw4%>Sxm*{b8c7!l1HLgp#urny_=!IPI zWtUDpOX__3UTMlyPu^dbGkNdqE$k%j7fLUH4w(Zh6donblfyqVB$B zmwT%J7GGPtX}+r&n}f#k_2C{y2d$Uh_K;_uA^3Oq{{7}NcidNbp&YuA+vDvP?aO;h zd(|$Ra>fSmO8xyYGq5H&gI!}osjukS6q^~dm-Mbua|=t5XsmKl^GI#gdokU~m)%~Z z^^)$iy+{J^J@n7~it#hL;Ya5yEKP@5fK__SR%panYHZIxz zINfx1X=hl;Bli0o8+XR7SFPugD8BkBZUXCz+JJPo6&-Kh9!&`piI})N$@8@3ioJj9 zc$qh>Vl=qqR5Y)kT!+={J6Fi&w9Q9*zNxv)xUuB*g&yb44ROwi1_w$$Y+SLW*)V4H z)^~R--44!wCp}kCMc3w}a@#BZlF7Pv1FrlJOmTnDD5`$;Dd!sR-HZ2_yjr_NM2lVJ zaP|AW$JcZPJJkKv*y+UL`yrT#gYChA`VvD2FOe%pYg#-Wre{3AwDAGgkA`>MWhWe; zv{^TFf6ZAOF+IAVQ6%JoA7}FwZgKYsdVLEDm=$)kFFaN`?>~$8Vjj^ff3@Nx4lANM z|8eBTZIQ8_d+7Oxg4q#^*uvtnLb|mdF*N3h2RfYEmnsz_TD7#cfzM&pJHvpRmw(&U z%Gkyi^{jbgqW1jTlaoI$FBjkPR!&}i(nOYnbL+mOB%imh@BgS69CmSe%E4pvr|8JZ zs%ivV-kNwfI4QvV1$Ri%l~)JC*bKQ+;;SsDC$4RhetbGwW`4Aw`#RU#8P`rlb1Y}` zc4wau^y*64B0+=qm#ui@{^eHEGTQ93Qxr8GcPwpn&f;?*I)KU z=i`f;1wXdV{~P)H^4HQYTh}wL`n4t~CoI+3d)4Wy8=Jy)1Xt?k2h7NFFPzAmb-TG| zl1j^&lE$X!SmSr9+Sg{!I`)NiPuRzq+g05|dD-{O=-kh|NtJ8&f?F;trF0oosvCb_ z<)1k3>%F-7$3uJsE1jg;-?aap96M#r)7~Eneecs^Vz#Jxonw1bZ5dj0S|=*l`K72y zl$ENLUD`JFM!n{J+{-?N=Bl5ni=V2+`l0n;g?ZhwLY>giznoXs1_oK&O}ezVBJRkf z6)ts~(zO)aYy{UQrM+CpWXxf7dx54_tyApIizQuJD}$CTW80E&QkVI|EDZ(w=9e~B z7C)Nff2sbyd^Pk7d;N!rA)bGAZbxspZmE4X;6UVb^+S&YrBCf>_%n^&Yk$ft*Eh!N z+$0Z8W8I@(fBUY$!c{Ng1VUM}jZUaAzmu-3udq-$oc!R$44oFSzX=zbCxp0)ZaVVh z#rNG`&fY!5$+|tk((~70u8WH6CNo{Xy6SAxecg`M*9zQUTGUX3wVXZ`Rcn+Wze3eNDFx4e{6uTMSpP;ZZ&RgRkjg`s3Ty<$f8D zFDjZiY{?Mv3Ji(gmvSN~o>3%v*&UCqZrmq5e>?h|J3VcAQ>X9_`SV)U(+a-Sl>Ad) zUsrsyXwI^KTmFCl_eB1R`PXy~w?f^<=Yrb|@6N8XKR8o4h>WgL_D>FXbVA}VK7(VzLlwq40X`<$0Uaye)i;*4*D;-`@IV?Kz2~E1uNduX-JukkKIc zJWln)PtHXQY?sfR^j3E)P*qzVn%C^LGR0S_|Jh3eZ#~Jgrqu=y_H@1Hn!y!l=&)xC z_Y01j%?U>OmJ?s|?XX`X$T|1#Ut6zJN4-=_MEaJ=yAD;KMX`;~FKU2>%+!4IIKX)Ct*|cf< zLnpRP5q_q*mFg39_j@rNX_}lW{^3!rrQuiMz-a+8BCmEW6U=%g`)iw){Ov^(3!*)G z)D|)%-T0WYZ~X(8mIchO)jh0Yg}q|gn)ius>@NAMnNj-cR{4PoS7XxmKF(^~#_(6; zHm^@?do-8K^uI3Mi~V-QtvBl}I3&C7z$W9HJFn~$etmoC|5dk6Pn)62*F>T+Wu~Xs2K1vHHiCFCDYRxxIhI?y6jHtEBYQs=nmtw_nPN7D~jPNa`*AVBFWw zuknJpB>J7icdgkP3nvFAylHvjn6Z?p!7Dv!<6^6goGfNr`>(CBf3LNDUidb}c=-!V zF1OAGuj)ND_s#?9ouzflR&FUzzCZJVcT90XmYv>N)|#G`3Q1{Ce!ahAd2O;;$r1U6 z#s`X#XY?m-G0^zd^`S>>`J}AbHhz*GTs8|jf;(+r|13VAV52Us{{IPoz47;Z`scEH zeIG{}IR$@`*k!1&_i}>qq0>z(OK&waUr~GDxw$KI%~46F%^!O%_$Zr~MJ=8-VVeHm z(^-M+no5#Fx>r7b=C+YdSj)s%x<`&R$UshG-X!g$>diVSMV&iXGL{ylUpiIo{GaJ^ zhvdfE!*`a7N(sHV+)&W-{T4&$lys)atAz@taB&pP7L)z;=#f;2V8q-vo2D-G-g%Cp z@wv!J=78Q3ms!*IyPV~*Y#6 zm&})x3sXy1Qs_J7id%v5qb=%)BUn0)A_m~B| zTafDX@pFn1D`V4|zKaE>V%H;#7H_we`F8R0z5DV>X|uyToIX$Z*RAfp!)V5QGvit3JX=Mv?fYDS9#~R13{`)4THBV(^Wf^`fcht?L8XSAK2{l4qomb>fLty7zkdGv96a@e~KlZ`d@EV=&Je-h_qeNE*? z3x*KgkcNgA4T_&ORh97TuCT~FBQ-fseTDc-vqIB-hfa9x{rc$O@3n?s*Ze$T%+uBU za*pq+WjEvv1g4j1UU+h}JL$c`<|ThQ#X5Gc$yC}@%ck0*u!r-Pp;ZB|AJ5mI#{Gw1 zHLZy23D!Dup#^7N&4bK|a&Ntvceoa;`c%CC{@s~wZef{4jZGWwp6z-&N$#NPO(ElV zyKTbLId2HuJJGXTI^q6;EX8OEYcunjE+zkEpSSIbWuB$V@pOub(?yGkYyCoIH+jyL zk}4`o)110%USw;$w$$oCmm4lCpNhw=u40*QmXW*EV~ehUdclv0Rcz%d%yBaoUrqa$ z`trOsy2TZNvVJ{ErL*R+mh)_Y(0P1!Rg{pfu52f8bZ z+3p=>k1-Xfa$BtU;co%INcyJNi;v$<6q5OSrE!jlNM3~IVXysPtL8p_%pA|LLA%&$ z?&O>E=gGa4lenvt!f2Cna@#+7yP6z!1{S-8R^0QZN<5!FJ=ufdN4L4ur$wvOI`;|M z$n9PCe){y}&OKf_Wj8%|AL&}WVU%XR$g#=s%Wl>!2d7V$k(a;J%4#fR`d%=-TT*uW z#=0Zfoz53zYZ$d2v`q9oRZ_h-sbqFH_q9oP^i>P?o?WrYWPeqD(Z?^7^qxMM%)a;U zx!))9-E9`Wd~x(*)xMiL+x+Va0{v%SEPn5vG3lM^HaUlmy=o=TER{Ol=Kp@#q%9&? z(4F%B+R1xgu$>)U?gtcz>M`Fm*NOXIfIH;~x9r za7seI{QRv^!fuzo{4F}mcxYeoa~9#u6!YnR{I1FM$n3ld^qy>QS8?q|N?X+Ck;>UaN? zRV)7QI`b**>(~2#uf6{N?)Ux={&9cT{{JTb|Af=&;&_Xt`M(~n{(snf-@o(wziRLQ zxb*zrH|h8Gy9ypy7AQZhz$Ah*Y7%!~ovF9( z3xd7}GzFd(dD(n9bb|7tgiTkoIwpiLyj$)w>FKIhGcJ0Y-ORaG>9MZYK$GE8in;9_ zu^276dBVm;xzVdlUCJ2jH+*3`9sR=l>Ylhy%coDj-hDJCZR;y;zHf@Ti)vO($=)aQ zNKBVE@$BRH7d2C(*Y%le$ZMURZX0xN3D-jFozeA0MJ`X3n-H3V(!O2|ts1ylClDmZbtOCcb8f-oNkG z-0ST88*+kL?nt&}EZ)1eNGw2GzmGSizW9*qWo1^^J86*Zg%~6D8N~t}ieUVp#5=v~-TP$Hj*G z5~7EDvnL%>P@eQ_cfsy5t;m;!g-XZO-U&MIEV+J9dDmrrjtBGR_{#75_oO-c`k$(g zjZv~&lP-wf5j^sEL(h`fh1Q2Rbt-gRWsOkG^;C2(+087{ePx%x+t->W9If3?B;C6A zB#-?;(3~2B75WMJT`MyhBTvOw=w1EvtIA2Q{f@YOG6zkfRY?>MuDPPX~- z^zpmK=@zqfdn>&*>OGzIWj%Yr^{3lD&p7p5Xl6jG{-^#kr*{ZB8qQP-^ZkF}?}~)J zlACJB{i>u*VlLhY7CkPuRCc4o)V!&`x}J!#PkVTM>bwetB4yP(S^bXelY=&2)NGM< zTySM;X}$buj{?_&wHKO~GIh-1Dfp)lfB*Ml`AgsXoBdBToLAa;Aaz~k9l0|3mCv#x zyAS&e2J&y{IUJhOL}I;Mqd8gB|<_`vHToKpBA!E{3<|KoMG#x-A(e;$gkh%My2 zGN-w+Cu7}#92UQo%O^eHn6+Vft!n@u=Mz6B$@f_~D}Vl|Qe^FrZ#7zfQiv;n@s_z) zgY)Va_x1)yI^Eb&s>qNx;oL;tBg-sbSg{#a-n5Jk($1Q>AhLk(=B2-K>`RZt?%1(G zSa*TeR_=cBaGo)<*-klSO2e);q$5|{I$nb zXSnFbg-sREWZJk_A?xbnH_d-T6SAW;EjZ%8s`W}t&1QJdz9;YN?E3%ve_UGq|K#cO zY02O13coj}wl3XS-gvF^kDT(p4DspGM}vP~dJxgz{6oj;c!6qL+nS@(R^4@ty?m*P z)#>wfiCEdG8M|2-e3cWJ8g}Hlc71DdQ+QQXD!Sh@`^mez!c%HeIJV4-RGNQu)7+U! z%1;*U^s*pI5B_GMP8oRps%$* zHC}Lk)arNLaqs`~!x4@@ChU86$MRe9eC56Ar>8ATeUK77MQD#+GS}}g9-qbM_kK!R zbNm5|#j%9qsY{eJ+$~izb>C{P+8)_&}g{y&-{O1P9N8QXFpr;p3d?A zZ|48)H(K-g$&(q?XJ`6E);^!h{;AHLhfmY?thoHrV<&f{dH?zhk3}8L-nX3> zY-ae?d47tC|LwNC6|bi1YAq|0O4`N9=vA{oK$*#!XT?0m1l^TL|V4<~kWc8J{4HGY)h@!N~RV1mO&p9Zak zyh{Vt-Bv$%O!KJr-jkuN{i=_$8T^nHAZ zRW60GYSQ$C8O`?=ToEl~Ie3#jOIfJiYnMbwyx%NZ1Mf~ zjKYhfXGP5te9k=k%fCHlGVg3Fi`>31zL_&IkCN_eAH>`|>Y{%vsupq#Tb#cB z*T0BmrH*BX9)6t?e{k7K`$UK7!MDUFyB+mh&b5gtWoPzmPK5=HyB6AbL{6{TJ@K2{ z)R0x%3x4iBz>p{Hr8-~R)njAOob;vt{^Uf)FOxhUG2QVytF`$f*11R6a@i7RKH!jI zQaUZgK5?zf_3#bOnQ3hzv8G$@eqVoi!DD^FQ+}+|7z9OkNWFbg66o#}Q!8cVx2*Ka z+ii@Bm$tIKOw8zCWy!zFaqh-Ri{`F8G3$=!`EMq-CW)OCRh@b)P^M*8sNmP=Hti>l z_tv+joNAMb`nv8}i-=|5feqVw%T(tXvc8zaynuZ{qE%3oz`{5k!LyaqWgJ4bw8pEK zi#;}Px+&zy>#1$Q86WpwTEJ^bqo%ZtgLl=}4*wq-VjKlCYdZgn@8CaWz*xn&aAk$@ z%VIB&W%(SB%-`-)5xE{@TcyDu*Ht32#a8*u>P;`VKJ09LyeMD+->#-h0@oe&_g>;p zJ7s#n!Q5#}@ZHHH*Bx|?zc2`&GpsSQYY2T4VySQeSvT6 zC6&rKi>@wb{}Og`cZbbGAEqw1E#89OAM$>9Yune#~=(`7!dLT?0>wmTGavK(2xT-keh z;3+e!>PHs^qj{x|oj1DcvHjCg-bY{doU1=;zuPxKS!kxWqVs#HJ%SG%qbJ69SbIKp zkB(7do`0H2*sZETey{vf-GG`keWzY5_GR$>6mW*AR_oJ}85%co%$B%FW{73=1S!Zb zS$d(QY58`ByBDr|Og}J{lgF3q(XGPJulHJCtJn$WB)^SlV0|3BnQ#7wK&2qtZnu!N zTh^`7$%y}}wT#=#)O*hC1!bxGCpbjqHR&a>|DKrfR$h`JjUX`x}BA?BBJq@^1|i$X19;`pO4sc zr%cn}y{DF&r|AVQhK%>0XSf>s|8}t5?`X^UczLnZ{U-L)Y`5Dc_U-x6vVe{InIbFa z;fD_4!CR&^zWdktnN!W<^;1!U)Cu2CXt$aRTybg@RebSwg;KrD7SEL1ZTGJ^JqvRA z`u9>rddMf8FY)u6Jzwf)T+R9$I(LcZP3QOS92!slW#~HpRJd9ERPY6BZxr7=>qG1% zE)P^*uHWSQA}9FB)}|k>b7oYC>Xs`16Z@E@puW14q0H7)-9vRr1K!)eZdhYz6L3#^yGca>qk-=c%?Db6jAFr8Vj0&iW}bch zYSh++>W#Ddu0)wS@y=J}3uFGGQf*^rXJczy_2mU;n_7w0+O*BBo?CaN&U*8NciKU1 zR=(==P_>Mx42R&G^LjgOoEFI0B46`u>Pxj{t70Mrs#ag!Q~X>-;QX|^QC1g~>sWvI;*(V`FZ=oTe|@IC zb}rMsHQTa+?|OZeF|wWN`N;olDThGZ(?jI}Cr;MpuyL`L9huQSS%lZN{;Aodo#pRY zDnl0VEnEHeixJEG(89XEe^{b;;~O8AHm3D3WV6UiTzFNYqY$<|c(Eg&(zE5=aTOB| zo;zCKHP4sR>;2TIIG58ASrMFmab@P3Ia!yQ-^~l(e*H>)W0r>5vYTc`A2(YSa{9S7 z)z`LFG3~UG(mas$au$R13Xvb)5w0=oD-tw6ut~N5YF{v`!TZA9G##6R_rsnpFNwU$ zY<#D{`;&~`k02q>##QcN>)uZ_xE3le(XvwOH`ne7RojJ=#bhQlcsx;*m6tEs9XmC2 z*V~wNj9=Rl?$i|61xZfcD=(X+TeLJ=g+uy;ld|dR4OR~=GkjjAgr2&&%X?+?rK{`u zbz-V+o;-On!JxuSImcvHqt6NhC#Hg(I{KVyrQFf+O)S%-_*b-M1-=(mS3Aa8`(wcY z;gVM+M>IaqUi^t;!iqIl*sknwU}ET-+`zZbL(4x&E~&TZkd$U?b4RS_pOw$EUPemo z+9r}wsc3ios??qt+qC)udsL=*hH~0yRKH;Rb?)OAFFuu3Vj`FKo?YFAAhYwFQ<8S=D{dTVI9`)HtTe7G43V6I;wDirFpx}>duSUD3edSS$ zz0B{hYSV^Qf5QK6N;tHz{Oe11PWP=Md*p6}T@^mS{eb!5@sh)H|1}jczHxlFc}lv8 zjJ?GCzQ2Jny%n4*sxuZWTejTex?u8)X5R2wTuKbf)#E(xJ1N}#b+mN#bo|7W$Tr5D$0k6Y!i~b+;uVQ-kN#Y`fIWclVcBXfAZh* zZ)vHd$J5tkOZ6f>-zaa@yZf-JO5C)-Kjn6kYuN->X}!Gv}8d-1S04 z={vJr{BF%#c5aIqZNpBTQ^^)T%x(15!Njrr!_m8mwJ+@UC3tOcTkWH|_TFmQ1O~w2Heys&3BmYmU5e0BBLqnqTABij%TyOo8x{6 zycK1=v-ly)8k5UcL{b8CCrh2w-T0UNBxmd$4Xw6K%^uwD*+s8>^gXt%PPE)xxG~~I znor|_Pny93c^+mO8y7wE@toG`we?BMysa~gCtXav+w}Ed)->z>CE|wj&iS&WDJX6U z+c8CdB?GIk(cNtqPle3&a}Q@ZGC5gTuq;C1F#B=o4_cEQ@}}guzV)xQ_EsVIr~pWSel?c+qb zE7sQ+zGLLRcRaxNNv5AyZn#WKvfTdjA!cRrkuKTIc|qdV>Mnnt>i_@zxWE2??(7fi z>;J~z$`*Ul?{c@(#P+c9Ul-kw``fJ^yOq53u=KmMa{Ez%wNkefWw`c8q-^y|XUM8C z+u5+f;y~0YmDQ)$&4}D>zDG%$bJhDe>0_P~F6W%%I9~S6>2Ka%PL|k!MG`fSAK0l$ zt>0(*dgY4~64PtHT6k%4N@<5W@m0LZIS{_a$##zPHi6dt>1H}n6q{QBR&_f7eG?)-B9 z`4TS+L{r`^E&aE){6yM=%u~Gv>GeN0o7c=ZuX`)zx!PQz6>ER6`2-ZMJQX57$1G>{ zuSFZ=9|+`E&+qJBaPZ(07V-GJ90R=w$EmtmBI4`|BW}D?kJeZ)k9B8%``QAzx%X40 zb{$}So4i`h#>nQ|G67!0-zRK-ZI^NQ9JhDZkAJ`W56fEU7xKGRyt)!-7!)6OhIyWw z(D!wTNz*q~FaBf_dUlg`pc-rUiONmt!82V|_UxHpEp?nlyZUYAA5*PF^HVQx-Hx1? zZ1>B28Q1Nr6XIV^n=017@~V7gyZp@P+<+&q%68sk{PNGS&InS9f+@^>=sPsq<4#H&|r(Io<45{#w?a^=n?YXu3)E zI8PJ!AUMfV=J12Z7u8>UILyxoh)C&e%UTDfU)A*v;BMan0Sfok}mb! z5m{x?o!rr5vPb6its4of6=906JmVj2zI5x;PiyNf`{pwr^3-f|P%>U)v-a-V!2aH; zQNJ?gEU($d&i#7%ohdOnE-i&pnY`V<^3u}WeE3!hT~5`IyCG4!ir4dopz-dRGS|}% z+>-5|A z1|c!ER~w%QZ@+Lc;qvu(Ht{R>cOCzn@OEbTvo;s`%(u~b7A5Z=&VBkTK1#SP+;VTl zJ}F(DN21Kaa@DO8TVJE9WOzEvB|USd08O4QE@*JIa*xj#2plEg18?H|JO z^YFCk7q4kYmGS6_?alo6`q!c2RUg{z|2%l{y!Q#K;aXGHN~aTdcN@7eq*aN{vHKoU zv1IXuHH)eRt<_)2x35o%a$RNf=f8%v?z<58mmekU>QCAvN`9=8>UK{!SNK=B@b+WY zZ5zIAZm>?9bLX_+${C7Z^`G#)C~=;nU?kkKxXUcJIn!sJIJ=jr`m6H^`(5g~g4A!n z+x^3cAx(*U?fq7>gtg{RjL+;$tZvUZ;mDm=FI;!`mpV7gf-e7e{QPJe=6lbQ zU-8hEX zBs|+cuekX2`pD%}y;12dLsL}F?uI+sFI!bu&Ypdg$1}@MD5m^EardHa(@b@=POlKUXu@;a zb9bX~_Pf_s*0S#oq@OSe+NyX>iiuKT&=Q$8kCStazW zw7JsK;w!(ECrDv+yRC(z{=2Nb>QQ#@X6;DN_`dqN{_U@Gt9&Jbd(J_OD{O#@$(mh_2xYn*K^;zKXKO;6BlLYtHmo$i&Z!8jneeWpWIUC z&N9a#Cb{ekTf^zoa?8a}?3*`le$ltfy%JKQ;oI8^cPD0FxhyKWJ@RZ&V(m2+XPz#@ z{qufK-v2|e`q)vUh4a$pT$|P4=FJn@d)azS zPv5z`{GnP(c)@AO>V5O>TlF04^HcB%efj#UNbsKQFyGv^_1WDs1d?W-pApW_|2_YH z+|SDIe(QGE``vMl*tMEJx6!BV{h0~Bj@Eil3f^RL_w-pWUdQ!?hcC=<*B7r`{d~>K z&)274X;DirUpMDClP%}n-;4IPdp_>w*u3Y>%2PAS18V);Hy<(=&&~NDy4z@Gi-=4! z!{6p75kFglv*%gpuK1;Jt4+_{`RHPkdR_Ii^3T{y3qNvgTHWrUkaJ~uLwUvPS+`1W z+->Z)HhGjKt!MRH{7KK+r$2UR$kyow9-ck>{k^@_(wBb4dd&WOvQ*8=>F}OHiAyIF zxGx*u$o{;nBkf+GTi0pGJ_d>xr}G+n+zatXCHg_T1^PpXd7Ph+l!FpL>>|IZCUf#Z}p=RS?&y(PJ z;_c$kuM85le3uhpD%;Wh@Nfb9G>d$O0NFe1RhIlqT`01KW5tin*VA_FtNXtDe(jc& z6BA^@by!$-9`4Cn&M7ywC-&gRT+oKtI^+HYFiUAA>0hsD~dMiv$a5+1$S*xkl^!=~Zb6iyeJ z4>O{+oQa;P*s`=e`W@@r4Q8vj)&@j|`^|1&cyF?9$g*O!YpnMkKa$DlT%N!AWY4;D z>ns2MS}CF<-=nDH6t;PTYM9H0zj||wZO!7&%KLS52Fk2%i_W^o!rAj+Ou_iK_{W!s%!x}4l`u*?U zw{LMqD_6EC^dI;#t?-9Y`zr5}~kNnM*{5V%M z_Fu%@u?YniP1XO#wZZ+nesU((?VFwIY#BC5ivCiNw6htV4Ol{xlN zpZ~AadDDIAsO`Sgi@dXi=RH0?N6+}{<#Qdc{usYM@csSz-$hRs9%|9r+7uyUd-YD% z)976?a~G}1(y8C2vod|s!>3PY^NCa*Dv)?IXO`RaREv*K7Ombq=kN-fJ*TRlE9|na zb-!qI?9UFNH**VDWjvK^+VryIjCORLQA@`horX{TXM--)e)yovci?>XVb(qU1_65c zJ?pM#d@5g)k`TI1eaMvBR%>AUwGGMjDInz{3H zgfYvVtn_JJm8}g~i&x()WZZqT$Sow!>qwfhg;emhumz7DEwTz{ow;uIe*2{>6*2!O z>^~Eo{BO(RE4S>=pV!xUemHik&e`Jgl}p5o|9=+W{-D3*((~1uSUfJ=-plkXex-T+ z?{8-hAC8Szl`Dy8E9blT`p$cqmS^eLH@r|^n!eZL?Xwr#D`iQdhRdXD)Z>tV3$@vs@!EEM}oVQw^_UO9I&lFryuHT}}S#xi#=4u1K`)?+AYrPWD zj&R|b@oVjDALma3?J-MdMXbMK&im-ZmI&MLk?a>E&-LwiboB1s-04~^yYJNAYhEN- zyEaasJv>DHtM&gkhQdvc)`xV@m{pSRap%29!Vigek3%+c9M12c?;d9j$=n67#Nk- zdmo&A`gHije}!S9EHZg6*{`mhlDfosslY`;ZJy6IqZw&`9*4g>;8~Yhdt+7l!f4q; zc1!Nd<}TLYUG*hE@cfj%1Sj#ShWC2ab|2M@@Ntyxu@<|;elfP;mfMHKW7kXPE}h@> zHpSnlSY=z6&!m+WDc17EGs=$$zVD1H%RIAE_~rz`4_dEo&T+KcZn)1>YY(&M4)MLR z(?cg;Q9W0FEB@+>`SxFazn2G9iJXbK>K^N2eJ-{=^Ez*hIP@$-Uc|Ea)a#GYnp?Ka@4jm2S*1O%DZR#dn$nB+7gll# zZYdC)Jwv5{@A?_GV}Eb|jI`$5BJ)FK|3gLp!}nVyIUY0Z5IlBMc8kjso}GR=OBrH4 z3}3wW%}#u}%g_7qE++T7zJ0P6KN-xqW9xTE>E@JEt*R4uYz=y?yng-tvsV@Pj|peH zb=fT1=KSo=tas9Wa_&CII&X!nT=?hY`ibVs>tERR$0_alCwVTNFJ310cw%MFjoQL* ze{Zs{?R{3Ao7s9|#eD{Y7EJJkF{8 z+A}rxk6NX~FW%bkze<8~d1fgsSXP{A#=hJMhT_a`I1XfBfKsz_jRP20^cG zU)>wGw4N2X0{2Aqf_WWFv!eH$|8O*+_Jo+!;`f#Xw*Lg;d7Y=;``>ZK zn5%Tj%4)thzjCu)?fpB0&wSkm7QUili@k3;t{G$=Jt)Grq3}ySuj;zb$JAGs?W>Nj z5DnK@?{jR?tuJc~Qg^mH@m;*k?Ywlt1xuq1{;MqwWiHMBZ*BjWUw+-eQwpBek6Kfg zH$JQV=IN0B#^Lm2wzg-t^l!;UFVr!aQC^Z%!DUb8goW+lYgnGruqX*=f4tpmw>1(r5d> z|GvwwUw5y?c{s@AM6UY2PnqPZc@;+x7UN(-)U*o+~ddnIP^f88-FX z@w*ds%kOb``E9-Pe9s&KsVxbP{99KodMv)h+FAck-jWM{+cu~N8Yb^Kz>s#Q?7-iI zieq+jmOQbozdWn@0Z;Gl=QHneH9uTtCKJv0eDi^j7?u9pcS;O`wlwVC$RfXY!{P8M zrekOJMP}b{D7V=8+BE$77S^;g_5VKj&ASO?ljnZ$zE;_gn~GJn7C$a~}7K zm*@E;b00pjxs#(7=g#%Y`S{m{@}lr%U4F}WgMMFp@bN;X?%`zD#W(8qofG2vU|q7U zWPfR119JNgvYTZE zZhokf$=Z5#vHckhD__>Mbfbp{mK*iT3$9^XXL7FmMpxtZ?dIRVmmhAf-;tlZ)i?Y3 zsg4AjubCG=FZJ8J^7IBDsbAIZl6&4aNbY|vE$Z_>V*Rpyo~1`>>n}X)`jRho^4ad0 zd~@w<1b5rH%08UDBrLYujiIw`p6a$cMF*y)N__ik!W}7Fw|?OqkC31sV%|w{ox8pI3U8Sv2Tv`M1pK4?mjZ3u=AK9vsrV z{btqP>hiB2AK$fmbpLN+)kUF&>ksRe{p|i$?!&|4zw|J(ilwyz`@_}WPqiyfIo`bX z`-U){N2=0Si`=5quZaaSEf%WtxW4yYZn#VnXI%H(cW)*}rYo5)F=jb$Rn%9%;PB}W z3qA^DKG3#{RBHJCWZP+dnf=csJ(lS*^n7vCdfvz~W6{KC60K>yQx!uzURp(3RIs}# ztlBm?=)+lFv-$&n|GxeCGqIk%?QE&ek%;vN1-oU|Jb!)IEosi9yGFS?!YUHdD%`4W z+OKxG`*t()`$a1&`{t)O&5V#lrZ#?F+OczU`kqzc5`Z zcy&+ntBpoiXN0Xa|6iXq!AP+1OxzO&1_sp<*NBpo#FA92bP0l+XkK10z3V literal 61057 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 E0M6Q08~^|S diff --git a/mods/HELP/mcl_doc_basics/textures/doc_basics_gameplay_mtg_1.png b/mods/HELP/mcl_doc_basics/textures/doc_basics_gameplay_mtg_1.png index d85d1cce7c7b7c9db20adc3fa25f89c26b94ae4d..7272de5eb541c5671c1a1559d3c7c6056ac9af93 100644 GIT binary patch literal 88532 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 JIJpcl}vy@lzAG_ZCcxj2RfVi2aUv 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 Be1-r3 literal 89116 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�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